// i18n.jsx — Languages, flag rendering, and travel-advisor copy for Hola.
// Tone: charming, persuasive, mediterranean hospitality — Leo, a friendly male advisor.

const LANGUAGES = [
  { code: 'es', cc: 'es', name: 'Español',   native: 'Español',    flag: '🇪🇸' },
  { code: 'en', cc: 'gb', name: 'English',   native: 'English',    flag: '🇬🇧' },
  { code: 'fr', cc: 'fr', name: 'Français',  native: 'Français',   flag: '🇫🇷' },
  { code: 'de', cc: 'de', name: 'Deutsch',   native: 'Deutsch',    flag: '🇩🇪' },
  { code: 'it', cc: 'it', name: 'Italiano',  native: 'Italiano',   flag: '🇮🇹' },
  { code: 'pt', cc: 'pt', name: 'Português', native: 'Português',  flag: '🇵🇹' },
  { code: 'zh', cc: 'cn', name: 'Chinese',   native: '中文',        flag: '🇨🇳' },
  { code: 'ru', cc: 'ru', name: 'Русский',   native: 'Русский',     flag: '🇷🇺' },
];

const AVATAR_NAME = 'Leo';
const AVATAR_GENDER = 'male';

// Reusable Flag component — renders the real country flag from flagcdn.com
// inside a circular mask (so it works even on Windows where emoji flags break).
function Flag({ code, className = 'flag', size }) {
  const lang = LANGUAGES.find(l => l.code === code);
  const style = size ? { width: size, height: size, fontSize: size * 0.45 } : undefined;
  if (!lang) return <span className={className} style={style}></span>;
  return (
    <span className={className} style={style} aria-label={lang.name}>
      <img src={`https://flagcdn.com/${lang.cc}.svg`} alt="" loading="lazy" />
    </span>
  );
}

const I18N = {
  // ─── Welcome scene ───────────────────────────────────────────────────────
  welcomeEyebrow: {
    es: 'BIENVENIDO A BORDO', en: 'WELCOME ABOARD',
    fr: 'BIENVENUE À BORD', de: 'WILLKOMMEN AN BORD',
    it: 'BENVENUTO A BORDO', pt: 'BEM-VINDO A BORDO',
    zh: '欢迎登车', ru: 'ДОБРО ПОЖАЛОВАТЬ',
  },
  welcomeTitle: {
    es: 'Hola, soy Leo,', en: "Hi, I'm Leo,",
    fr: 'Bonjour, je suis Leo,', de: 'Hallo, ich bin Leo,',
    it: 'Ciao, sono Leo,', pt: 'Olá, sou o Leo,',
    zh: '你好，我是 Leo，', ru: 'Привет, я Leo,',
  },
  welcomeTitle2: {
    es: 'tu asesor a bordo.',
    en: 'your onboard travel advisor.',
    fr: 'votre conseiller à bord.',
    de: 'dein Reiseberater an Bord.',
    it: 'il tuo consigliere di viaggio.',
    pt: 'o seu conselheiro de viagem.',
    zh: '您的车上旅行顾问。',
    ru: 'ваш бортовой консультант.',
  },
  welcomeSub: {
    es: 'Toca tu bandera para empezar — te enseñaré lo mejor de Málaga.',
    en: 'Tap your flag to begin — let me show you the best of Málaga.',
    fr: 'Touchez votre drapeau pour commencer — je vais vous montrer le meilleur de Málaga.',
    de: 'Tippe auf deine Flagge — ich zeige dir das Beste von Málaga.',
    it: 'Tocca la tua bandiera — ti mostro il meglio di Málaga.',
    pt: 'Toque na sua bandeira — vou mostrar-lhe o melhor de Málaga.',
    zh: '点击您的国旗开始 — 让我带您领略马拉加的精华。',
    ru: 'Нажмите на флаг — я покажу лучшее в Малаге.',
  },
  welcomeSpeech: {
    es: 'Hola, soy Leo, tu asesor a bordo. Toca tu bandera para empezar.',
  },

  greeting: {
    es: '¡Encantado! Vamos a hacer este viaje inolvidable.',
    en: "Pleasure to meet you! Let's make this ride memorable.",
    fr: 'Enchanté ! Rendons ce trajet inoubliable.',
    de: 'Schön, dich kennenzulernen! Lass uns diese Fahrt unvergesslich machen.',
    it: 'Piacere! Rendiamo indimenticabile questo viaggio.',
    pt: 'Muito prazer! Vamos tornar esta viagem inesquecível.',
    zh: '很高兴认识您！让我们让这段旅程难忘。',
    ru: 'Очень рад знакомству! Сделаем эту поездку особенной.',
  },

  driverHearsLang: { es: (lang) => `Cliente en ${lang.toLowerCase()}.` },

  // ─── Translation: "Where to?" ────────────────────────────────────────────
  whereTo: {
    es: '¿A dónde vamos?', en: 'Where are we headed?',
    fr: 'Où allons-nous ?', de: 'Wohin geht die Fahrt?',
    it: 'Dove andiamo?', pt: 'Para onde vamos?',
    zh: '我们去哪里？', ru: 'Куда едем?',
  },

  destination: {
    es: 'Hotel Larios, en el centro, por favor.',
    en: 'Hotel Larios, in the city centre, please.',
    fr: "Hôtel Larios, au centre-ville, s'il vous plaît.",
    de: 'Hotel Larios, im Stadtzentrum, bitte.',
    it: 'Hotel Larios, in centro, per favore.',
    pt: 'Hotel Larios, no centro, por favor.',
    zh: '请去市中心的拉里奥斯酒店。',
    ru: 'Отель Лариос в центре, пожалуйста.',
  },

  // ─── Seatbelt / ride start ───────────────────────────────────────────────
  seatbelt: {
    es: 'Bienvenido a bordo. Abróchate el cinturón y déjate llevar — el camino más bonito de Málaga empieza ahora.',
    en: 'Welcome aboard. Fasten your seatbelt and relax — the prettiest ride through Málaga starts now.',
    fr: 'Bienvenue à bord. Attachez votre ceinture et détendez-vous — le plus beau trajet de Málaga commence maintenant.',
    de: 'Willkommen an Bord. Schnall dich an und lehn dich zurück — die schönste Fahrt durch Málaga beginnt jetzt.',
    it: 'Benvenuto a bordo. Allaccia la cintura e rilassati — il più bel viaggio per Málaga inizia ora.',
    pt: 'Bem-vindo a bordo. Aperte o cinto e relaxe — a viagem mais bonita de Málaga começa agora.',
    zh: '欢迎登车。请系好安全带，放松一下 — 马拉加最美的旅程开始啦。',
    ru: 'Добро пожаловать. Пристегни ремень и расслабься — самая красивая поездка по Малаге начинается.',
  },

  rideIdle: {
    es: 'Vamos por el paseo del puerto. Mira a la derecha cuando crucemos el parque.',
    en: 'We\'re cruising the port promenade. Glance to the right when we cross the park.',
    fr: 'Nous longeons le port. Regardez à droite quand nous passons le parc.',
    de: 'Wir fahren am Hafen entlang. Schau nach rechts, wenn wir am Park vorbeikommen.',
    it: 'Stiamo passando lungo il porto. Guarda a destra quando attraversiamo il parco.',
    pt: 'Estamos a passar pela marginal. Olhe à direita quando cruzarmos o parque.',
    zh: '我们正沿着港口大道行驶。经过公园时请向右看。',
    ru: 'Мы едем вдоль порта. Посмотрите направо, когда проедем парк.',
  },

  // ─── Curiosity ───────────────────────────────────────────────────────────
  poiKind: {
    es: 'UN SECRETO DE MÁLAGA', en: 'A MÁLAGA SECRET',
    fr: 'UN SECRET DE MÁLAGA', de: 'EIN GEHEIMNIS MÁLAGAS',
    it: 'UN SEGRETO DI MÁLAGA', pt: 'UM SEGREDO DE MÁLAGA',
    zh: '马拉加的秘密', ru: 'СЕКРЕТ МАЛАГИ',
  },
  poiTitle: {
    es: 'Calle Larios', en: 'Calle Larios', fr: 'Calle Larios',
    de: 'Calle Larios', it: 'Calle Larios', pt: 'Calle Larios',
    zh: '拉里奥斯大街', ru: 'Улица Лариос',
  },
  poiBlurb: {
    es: 'Estamos pasando la calle más elegante de Málaga, hecha de mármol que brilla con la lluvia. Vuelve esta noche — al atardecer es pura magia.',
    en: 'We\'re passing Málaga\'s most elegant street — paved in marble that sparkles after rain. Come back at dusk; it\'s pure magic.',
    fr: 'Nous longeons la rue la plus élégante de Málaga, en marbre qui brille sous la pluie. Revenez au crépuscule, c\'est magique.',
    de: 'Wir fahren an Málagas elegantester Straße entlang — Marmor, der nach Regen funkelt. Komm bei Sonnenuntergang wieder, es ist magisch.',
    it: 'Stiamo passando la via più elegante di Málaga, in marmo che brilla dopo la pioggia. Torna al tramonto, è pura magia.',
    pt: 'Passamos pela rua mais elegante de Málaga, em mármore que brilha à chuva. Volte ao pôr do sol — é mágico.',
    zh: '我们正经过马拉加最优雅的大街，铺有大理石，雨后闪闪发光。傍晚再来一次，您会爱上它。',
    ru: 'Мы проезжаем самую элегантную улицу Малаги — мраморную, она блестит после дождя. Вернитесь сюда вечером, это волшебство.',
  },

  // ─── Promo / QR ──────────────────────────────────────────────────────────
  promoKind: {
    es: 'SÓLO PARA TI, AHORA', en: 'JUST FOR YOU, RIGHT NOW',
    fr: 'RIEN QUE POUR VOUS', de: 'NUR FÜR DICH, JETZT',
    it: 'SOLO PER TE, ORA', pt: 'SÓ PARA TI, AGORA',
    zh: '专属优惠，仅限本程', ru: 'ТОЛЬКО ДЛЯ ВАС',
  },
  promoTitle: {
    es: '−20% en Tapeo El Pimpi', en: '−20% at Tapeo El Pimpi',
    fr: '−20% chez Tapeo El Pimpi', de: '−20% bei Tapeo El Pimpi',
    it: '−20% al Tapeo El Pimpi', pt: '−20% no Tapeo El Pimpi',
    zh: '埃尔皮姆皮餐厅 8 折', ru: '−20% в Tapeo El Pimpi',
  },
  promoBlurb: {
    es: 'Te lo recomiendo de corazón: tapas y vino de la tierra, a 4 minutos de tu hotel. Escanea el QR y te guardo la mesa.',
    en: 'I genuinely recommend it: local tapas and wine, 4 min from your hotel. Scan the QR and I\'ll hold your table.',
    fr: 'Je vous le recommande de tout cœur : tapas et vin local, à 4 min de votre hôtel. Scannez le QR, je garde la table.',
    de: 'Ich empfehle es von Herzen: Tapas und Wein der Region, 4 Min vom Hotel. Scanne den QR — ich halte den Tisch.',
    it: 'Te lo consiglio davvero: tapas e vino della terra, a 4 min dal tuo hotel. Scansiona il QR, ti tengo il tavolo.',
    pt: 'Recomendo de coração: tapas e vinho local, a 4 min do hotel. Escaneie o QR — guardo a mesa.',
    zh: '我真心推荐：当地塔帕斯与葡萄酒，距您的酒店步行 4 分钟。扫码我帮您留位。',
    ru: 'Искренне советую: местные тапас и вино, 4 мин от отеля. Сканируйте QR — придержу столик.',
  },
  scanCta: {
    es: 'ESCANEA PARA CANJEAR', en: 'SCAN TO REDEEM',
    fr: 'SCANNEZ POUR ACTIVER', de: 'ZUM EINLÖSEN SCANNEN',
    it: 'SCANSIONA PER ATTIVARE', pt: 'ESCANEIE PARA RESGATAR',
    zh: '扫码使用', ru: 'СКАНИРУЙТЕ',
  },

  // ─── UI bits ─────────────────────────────────────────────────────────────
  rideStatus: {
    es: 'En ruta', en: 'On the way', fr: 'En route',
    de: 'Unterwegs', it: 'In viaggio', pt: 'A caminho',
    zh: '行程中', ru: 'В пути',
  },
  micHint: {
    es: 'Mantén pulsado para hablar', en: 'Hold to speak',
    fr: 'Maintenez pour parler', de: 'Halten zum Sprechen',
    it: 'Tieni premuto per parlare', pt: 'Pressione para falar',
    zh: '按住说话', ru: 'Нажмите, чтобы говорить',
  },
  playGreeting: {
    es: 'Reproducir saludo', en: 'Play greeting',
    fr: 'Lancer le message', de: 'Begrüßung abspielen',
    it: 'Ascolta il saluto', pt: 'Ouvir saudação',
    zh: '播放问候语', ru: 'Прослушать приветствие',
  },
  advisorRole: {
    es: 'tu asesor de viaje', en: 'your travel advisor',
    fr: 'votre conseiller de voyage', de: 'dein Reiseberater',
    it: 'il tuo consigliere di viaggio', pt: 'seu conselheiro de viagem',
    zh: '您的旅行顾问', ru: 'ваш гид',
  },
  changeLang: {
    es: 'Cambiar idioma', en: 'Change language',
    fr: 'Changer de langue', de: 'Sprache wechseln',
    it: 'Cambia lingua', pt: 'Mudar idioma',
    zh: '更换语言', ru: 'Сменить язык',
  },
  talkToDriver: {
    es: 'Habla con el conductor', en: 'Talk to the driver',
    fr: 'Parler au chauffeur', de: 'Mit dem Fahrer sprechen',
    it: 'Parla con il conducente', pt: 'Falar com o motorista',
    zh: '与司机交谈', ru: 'Поговорить с водителем',
  },
};

// ─── Tourist trivia entries shown during the ride (rotates) ───────────────
// Each entry has a kind label, title, and a charming description per language.
const TRIVIA = [
  {
    id: 'larios',
    kind: { es: 'CURIOSIDAD', en: 'DID YOU KNOW', fr: 'LE SAVIEZ-VOUS', de: 'WUSSTEST DU', it: 'LO SAPEVI', pt: 'VOCÊ SABIA', zh: '小知识', ru: 'А ВЫ ЗНАЛИ' },
    title: { es: 'Calle Larios', en: 'Calle Larios', fr: 'Calle Larios', de: 'Calle Larios', it: 'Calle Larios', pt: 'Calle Larios', zh: '拉里奥斯大街', ru: 'Улица Лариос' },
    blurb: {
      es: 'Estamos pasando la calle más elegante de Málaga. Inaugurada en 1891 y empedrada con mármol que brilla con la lluvia. De noche, al atardecer, es pura magia.',
      en: "We're passing Málaga's most elegant street, opened in 1891 and paved in marble that sparkles after rain. At dusk it's pure magic.",
      fr: 'Nous longeons la rue la plus élégante de Málaga, ouverte en 1891 et pavée de marbre brillant sous la pluie. Au crépuscule, c\'est magique.',
      de: 'Wir fahren an Málagas elegantester Straße entlang, 1891 eröffnet und mit Marmor gepflastert, der nach Regen funkelt. In der Abenddämmerung ist sie magisch.',
      it: 'Stiamo passando la via più elegante di Málaga, aperta nel 1891 e pavimentata in marmo che brilla dopo la pioggia.',
      pt: 'Passamos pela rua mais elegante de Málaga, aberta em 1891 e pavimentada com mármore que brilha à chuva.',
      zh: '我们正经过马拉加最优雅的大街，开通于1891年，大理石铺面雨后闪闪发光。',
      ru: 'Мы проезжаем самую элегантную улицу Малаги, открытую в 1891 году, с мраморной мостовой.',
    },
  },
  {
    id: 'catedral',
    kind: { es: 'MONUMENTO', en: 'LANDMARK', fr: 'MONUMENT', de: 'WAHRZEICHEN', it: 'MONUMENTO', pt: 'MONUMENTO', zh: '地标', ru: 'ДОСТОПРИМЕЧАТЕЛЬНОСТЬ' },
    title: { es: 'La Manquita', en: 'La Manquita', fr: 'La Manquita', de: 'La Manquita', it: 'La Manquita', pt: 'La Manquita', zh: '“独臂少女”', ru: 'Ла-Манкита' },
    blurb: {
      es: 'La catedral de Málaga tiene un apodo cariñoso: «La Manquita», la mancuerna. Le falta una torre porque el dinero se mandó a ayudar a la independencia de EE. UU. en 1776.',
      en: 'Málaga\'s cathedral has a nickname: "La Manquita" — the one‑armed lady. One of its towers was never built because the money was sent to support American independence in 1776.',
      fr: 'La cathédrale de Málaga a un surnom : « La Manquita » — la manchote. Une tour ne fut jamais bâtie : l\'argent partit soutenir l\'indépendance américaine en 1776.',
      de: 'Málagas Kathedrale hat einen Spitznamen: „La Manquita" – die Einarmige. Ein Turm wurde nie gebaut, weil das Geld 1776 zur Unterstützung der amerikanischen Unabhängigkeit ging.',
      it: 'La cattedrale di Málaga ha un soprannome: «La Manquita», la monca. Una torre non fu mai completata: i fondi finirono a sostenere l\'indipendenza americana nel 1776.',
      pt: 'A catedral de Málaga tem um apelido: «La Manquita», a maneta. Uma das torres nunca foi construída — o dinheiro foi para apoiar a independência americana em 1776.',
      zh: '马拉加大教堂有个昵称："La Manquita"——独臂少女。它的一座钟楼始终未建成，因为资金在1776年被送去支持美国独立。',
      ru: 'У собора Малаги есть прозвище — «Ла-Манкита», «однорукая». Одну башню так и не построили: деньги отправили на поддержку независимости США в 1776 году.',
    },
  },
  {
    id: 'atarazanas',
    kind: { es: 'SABORES LOCALES', en: 'LOCAL FLAVOURS', fr: 'SAVEURS LOCALES', de: 'LOKALE AROMEN', it: 'SAPORI LOCALI', pt: 'SABORES LOCAIS', zh: '当地风味', ru: 'МЕСТНЫЙ ВКУС' },
    title: { es: 'Mercado de Atarazanas', en: 'Atarazanas Market', fr: 'Marché Atarazanas', de: 'Atarazanas-Markt', it: 'Mercato Atarazanas', pt: 'Mercado de Atarazanas', zh: '阿塔拉萨纳斯市场', ru: 'Рынок Атарасанас' },
    blurb: {
      es: 'Estamos cerca del mercado más bonito de la ciudad: una antigua puerta árabe convertida en mercado de pescado fresco, jamón y vino. Ve por la mañana — pide boquerones.',
      en: 'We\'re near the prettiest market in town — an old Moorish gate turned fish, ham and wine market. Go in the morning — order the anchovies.',
      fr: 'Nous sommes près du plus beau marché de la ville — une ancienne porte mauresque devenue marché aux poissons, jambons et vins. Allez-y le matin — commandez les anchois.',
      de: 'Wir sind in der Nähe des schönsten Marktes der Stadt — ein altes maurisches Tor, jetzt Fisch-, Schinken- und Weinmarkt. Geh morgens hin — bestell die Sardellen.',
      it: 'Siamo vicino al mercato più bello della città — un\'antica porta moresca trasformata in mercato di pesce, prosciutto e vino. Vai di mattina e ordina le acciughe.',
      pt: 'Estamos perto do mercado mais bonito da cidade — uma antiga porta mourisca transformada em mercado de peixe, presunto e vinho. Vá de manhã — peça as anchovas.',
      zh: '我们靠近城里最美的市场——一座古老的摩尔式拱门改建的鱼市、火腿和酒水市场。早晨去最好。',
      ru: 'Мы рядом с самым красивым рынком города — старые мавританские ворота, превращённые в рыбно-винный рынок. Идите утром.',
    },
  },
  {
    id: 'malagueta',
    kind: { es: 'PLAYA', en: 'BEACH', fr: 'PLAGE', de: 'STRAND', it: 'SPIAGGIA', pt: 'PRAIA', zh: '海滩', ru: 'ПЛЯЖ' },
    title: { es: 'La Malagueta', en: 'La Malagueta', fr: 'La Malagueta', de: 'La Malagueta', it: 'La Malagueta', pt: 'La Malagueta', zh: '马拉格塔海滩', ru: 'Ла-Малагета' },
    blurb: {
      es: 'A tu izquierda, La Malagueta — la playa urbana. Pide en cualquier chiringuito unos «espetos», sardinas asadas en una caña de bambú sobre brasas. Esto es Málaga.',
      en: 'On your left, La Malagueta — the city beach. Order "espetos" at any beach‑bar: sardines skewered on bamboo and grilled over coals. This is Málaga.',
      fr: 'À votre gauche, La Malagueta — la plage urbaine. Commandez des « espetos » : sardines en brochette de bambou grillées sur braise. Voilà Málaga.',
      de: 'Links siehst du La Malagueta — den Stadtstrand. Bestell „Espetos" an einer Strandbar: Sardinen am Bambusspieß über Glut. Das ist Málaga.',
      it: 'A sinistra, La Malagueta — la spiaggia urbana. Ordina gli «espetos»: sardine su canna di bambù arrostite sulla brace. Questa è Málaga.',
      pt: 'À tua esquerda, La Malagueta — a praia urbana. Pede «espetos» — sardinhas espetadas em bambu e grelhadas no carvão. Isto é Málaga.',
      zh: '左边是马拉格塔海滩。在任何海滩酒吧点一份"espetos"——竹签炭烤沙丁鱼。这就是马拉加。',
      ru: 'Слева — пляж Ла-Малагета. В любом пляжном баре закажите «эспетос»: сардины на бамбуковом шампуре над углями. Это Малага.',
    },
  },
];

// ─── Conversation turns (free chat between driver and passenger) ──────────
// Each turn: who said it (driver|passenger), language, text, and the
// translation Hola produces for the OTHER party.
const CONVERSATION = [
  {
    side: 'driver', lang: 'es', text: '¿Es su primera vez en Málaga?',
    translation: { en: 'Is this your first time in Málaga?', fr: 'C\'est votre première fois à Málaga ?', de: 'Sind Sie zum ersten Mal in Málaga?', it: 'È la sua prima volta a Málaga?', pt: 'É a sua primeira vez em Málaga?', zh: '您是第一次来马拉加吗？', ru: 'Вы впервые в Малаге?' },
  },
  {
    side: 'passenger',
    text: {
      en: 'Yes, just landed from London. Where would you go for dinner tonight?',
      fr: 'Oui, je viens d\'arriver de Londres. Où iriez-vous dîner ce soir ?',
      de: 'Ja, gerade aus London angekommen. Wo würden Sie heute Abend essen gehen?',
      it: 'Sì, appena arrivato da Londra. Dove andrebbe a cena stasera?',
      pt: 'Sim, acabei de chegar de Londres. Onde iria jantar esta noite?',
      zh: '是的，刚从伦敦飞来。今晚您会去哪里吃晚餐？',
      ru: 'Да, только что прилетел из Лондона. Куда бы вы пошли ужинать?',
      es: 'Sí, acabo de aterrizar desde Londres. ¿A dónde iría usted a cenar esta noche?',
    },
    translation: 'Sí, acaba de aterrizar desde Londres. Pregunta a dónde iría usted a cenar esta noche.',
  },
  {
    side: 'driver', lang: 'es', text: 'A Bodega El Pimpi, sin duda. Tapas y vino dulce de Málaga. Te lo recomiendo.',
    translation: { en: 'Bodega El Pimpi, no doubt. Tapas and sweet Málaga wine. I recommend it.', fr: 'Bodega El Pimpi, sans hésiter. Tapas et vin doux de Málaga. Je vous le recommande.', de: 'Bodega El Pimpi, ohne Zweifel. Tapas und süßer Málaga-Wein. Sehr empfehlenswert.', it: 'Bodega El Pimpi, senza dubbio. Tapas e vino dolce di Málaga. Te lo consiglio.', pt: 'Bodega El Pimpi, sem dúvida. Tapas e vinho doce de Málaga. Recomendo.', zh: '一定要去 Bodega El Pimpi。塔帕斯和马拉加甜葡萄酒，我强烈推荐。', ru: 'Бодега Эль-Пимпи, без сомнений. Тапас и сладкое малагское вино. Рекомендую.' },
  },
];

function t(key, lang, ...args) {
  const node = I18N[key];
  if (!node) return key;
  const val = node[lang] ?? node.en ?? node.es;
  return typeof val === 'function' ? val(...args) : val;
}

Object.assign(window, { LANGUAGES, I18N, TRIVIA, CONVERSATION, t, AVATAR_NAME, AVATAR_GENDER, Flag });
