const { useMemo, useEffect, useState, useRef } = React;

// Каталог целевых аккаунтов: куда заносим продукт клиента и где организуем встречи.
// Формат: [industry, name, domain]. Логотипы тянем через Google Favicons (надёжный источник).
const COMPANIES_RAW = [
  // ───── IT и Телеком ─────
  ['IT и Телеком', 'Казахтелеком', 'kazakhtelecom.kz'],
  ['IT и Телеком', 'Kcell', 'kcell.kz'],
  ['IT и Телеком', 'Beeline Казахстан', 'beeline.kz'],
  ['IT и Телеком', 'Tele2 / Altel', 'tele2.kz'],
  ['IT и Телеком', 'Altel', 'altel.kz'],
  ['IT и Телеком', 'Транстелеком', 'ttk.kz'],
  ['IT и Телеком', 'Jusan Mobile', 'jusanmobile.kz'],
  ['IT и Телеком', 'Freedom Telecom', 'freedomtelecom.kz'],
  ['IT и Телеком', 'Almaty TV', 'almaty.tv'],
  ['IT и Телеком', 'Yandex Kazakhstan', 'yandex.kz'],
  ['IT и Телеком', 'Kolesa Group', 'kolesa.kz'],
  ['IT и Телеком', 'Krisha.kz', 'krisha.kz'],
  ['IT и Телеком', 'inDrive', 'indrive.com'],
  ['IT и Телеком', 'Wildberries Kazakhstan', 'wildberries.kz'],
  ['IT и Телеком', 'Ozon Kazakhstan', 'ozon.kz'],
  ['IT и Телеком', 'HeadHunter (hh.kz)', 'hh.kz'],
  ['IT и Телеком', 'OLX Kazakhstan', 'olx.kz'],
  ['IT и Телеком', 'Glovo', 'glovoapp.com'],
  ['IT и Телеком', 'Wolt', 'wolt.com'],
  ['IT и Телеком', 'BTS Digital (Aitu)', 'btsdigital.kz'],
  ['IT и Телеком', 'Choco (Chocofamily)', 'chocofamily.kz'],
  ['IT и Телеком', 'Sergek Group', 'sergek.group'],
  ['IT и Телеком', 'Binance Kazakhstan', 'binance.com'],
  ['IT и Телеком', '2GIS Kazakhstan', '2gis.kz'],
  ['IT и Телеком', 'Kaspersky Kazakhstan', 'kaspersky.kz'],
  ['IT и Телеком', 'CITIX', 'citix.kz'],
  ['IT и Телеком', 'QazTech', 'qaztech.kz'],
  ['IT и Телеком', 'QazCode', 'qazcode.kz'],
  ['IT и Телеком', 'Aviata', 'aviata.kz'],
  ['IT и Телеком', 'Ticketon', 'ticketon.kz'],
  ['IT и Телеком', 'KazDream Technologies', 'kazdream.kz'],
  ['IT и Телеком', 'Rocket Tech', 'rocket-tech.kz'],
  ['IT и Телеком', 'Documentolog', 'documentolog.com'],
  ['IT и Телеком', 'Plata Card', 'plata.kz'],
  ['IT и Телеком', 'Astana Hub', 'astanahub.com'],
  ['IT и Телеком', 'Tech Garden Park', 'techgarden.kz'],
  ['IT и Телеком', 'EPAM Kazakhstan', 'epam.com'],
  ['IT и Телеком', 'Andersen Lab', 'andersenlab.com'],
  ['IT и Телеком', 'Microsoft Kazakhstan', 'microsoft.com'],
  ['IT и Телеком', 'Oracle Kazakhstan', 'oracle.com'],
  ['IT и Телеком', 'SAP CIS', 'sap.com'],
  ['IT и Телеком', 'IBM Kazakhstan', 'ibm.com'],
  ['IT и Телеком', 'Cisco Kazakhstan', 'cisco.com'],
  ['IT и Телеком', 'Samsung Electronics', 'samsung.com'],
  ['IT и Телеком', 'Huawei Kazakhstan', 'huawei.com'],
  ['IT и Телеком', 'ZTE Kazakhstan', 'zte.com.cn'],
  ['IT и Телеком', 'Nazarbayev University', 'nu.edu.kz'],
  ['IT и Телеком', 'Garage8', 'garage8.kz'],
  ['IT и Телеком', 'Sulpak Online', 'sulpak.kz'],
  ['IT и Телеком', 'Pioneer Capital Invest', 'pioneer.kz'],

  // ───── Финансы ─────
  ['Финансы', 'Halyk Bank', 'halykbank.kz'],
  ['Финансы', 'Kaspi.kz', 'kaspi.kz'],
  ['Финансы', 'Jusan Bank', 'jusan.kz'],
  ['Финансы', 'Банк ЦентрКредит (BCC)', 'bcc.kz'],
  ['Финансы', 'ForteBank', 'fortebank.com'],
  ['Финансы', 'Отбасы банк', 'otbasybank.kz'],
  ['Финансы', 'Евразийский банк', 'eubank.kz'],
  ['Финансы', 'Bank RBK', 'bankrbk.kz'],
  ['Финансы', 'Ситибанк Казахстан', 'citibank.com'],
  ['Финансы', 'Bereke Bank', 'berekebank.kz'],
  ['Финансы', 'Altyn Bank', 'altynbank.kz'],
  ['Финансы', 'Freedom Bank', 'freedom.bank'],
  ['Финансы', 'Freedom Broker', 'ffin.kz'],
  ['Финансы', 'Home Credit Bank', 'homecredit.kz'],
  ['Финансы', 'Нурбанк', 'nurbank.kz'],
  ['Финансы', 'КЗИ Банк', 'kzibank.kz'],
  ['Финансы', 'Bank of China Kazakhstan', 'bankofchina.com'],
  ['Финансы', 'Шинхан Банк Казахстан', 'shinhan.kz'],
  ['Финансы', 'ICBC Kazakhstan', 'icbc.com.cn'],
  ['Финансы', 'Банк ВТБ (Казахстан)', 'vtb-bank.kz'],
  ['Финансы', 'Al Hilal Bank', 'alhilalbank.kz'],
  ['Финансы', 'Zaman-Bank', 'zamanbank.kz'],
  ['Финансы', 'Tansar Capital', 'tansar.kz'],
  ['Финансы', 'Freedom Pay', 'freedompay.kz'],
  ['Финансы', 'MOST', 'most.com.kz'],
  ['Финансы', 'KASE (Биржа)', 'kase.kz'],
  ['Финансы', 'AIX (AIFC Exchange)', 'aix.kz'],
  ['Финансы', 'Halyk Finance', 'halykfinance.kz'],
  ['Финансы', 'Halyk Insurance', 'halyk-insurance.kz'],
  ['Финансы', 'NOMAD Insurance', 'nomad.kz'],
  ['Финансы', 'Eurasia Insurance', 'eurasia.kz'],
  ['Финансы', 'Centras Insurance', 'centras.kz'],
  ['Финансы', 'Sentras Securities', 'sentras.kz'],
  ['Финансы', 'Kompetenz', 'kompetenz.kz'],
  ['Финансы', 'Jusan Invest', 'jusaninvest.kz'],
  ['Финансы', 'BCC Invest', 'bccinvest.kz'],
  ['Финансы', 'Standard Chartered Kazakhstan', 'sc.com'],
  ['Финансы', 'Европейская страховая компания', 'euroins.kz'],
  ['Финансы', 'Visa CISSEE', 'visa.com'],
  ['Финансы', 'Mastercard', 'mastercard.com'],

  // ───── Ритейл и E-commerce ─────
  ['Ритейл и E-commerce', 'Magnum Cash & Carry', 'magnum.kz'],
  ['Ритейл и E-commerce', 'Small (Скиф Трейд)', 'small.kz'],
  ['Ритейл и E-commerce', 'Anvar / Dina', 'anvar.kz'],
  ['Ритейл и E-commerce', 'Galmart', 'galmart.kz'],
  ['Ритейл и E-commerce', 'Metro Cash & Carry', 'metro-cc.kz'],
  ['Ритейл и E-commerce', 'Ramstore', 'ramstore.kz'],
  ['Ритейл и E-commerce', 'Spar Kazakhstan', 'spar.kz'],
  ['Ритейл и E-commerce', 'Fix Price', 'fix-price.kz'],
  ['Ритейл и E-commerce', 'Kaspi Магазин', 'kaspi.kz'],
  ['Ритейл и E-commerce', 'Wildberries', 'wildberries.kz'],
  ['Ритейл и E-commerce', 'Ozon', 'ozon.kz'],
  ['Ритейл и E-commerce', 'Halyk Market', 'halykmarket.kz'],
  ['Ритейл и E-commerce', 'ForteMarket', 'fortemarket.kz'],
  ['Ритейл и E-commerce', 'Arbuz.kz', 'arbuz.kz'],
  ['Ритейл и E-commerce', 'Lamoda Kazakhstan', 'lamoda.kz'],
  ['Ритейл и E-commerce', 'JMart', 'jmart.kz'],
  ['Ритейл и E-commerce', 'Airba Fresh', 'airba.kz'],
  ['Ритейл и E-commerce', 'Kaspi Travel', 'kaspi.kz'],
  ['Ритейл и E-commerce', 'Sulpak', 'sulpak.kz'],
  ['Ритейл и E-commerce', 'Mechta.kz', 'mechta.kz'],
  ['Ритейл и E-commerce', 'Technodom', 'technodom.kz'],
  ['Ритейл и E-commerce', 'EuroPharma / Arzan', 'europharma.kz'],
  ['Ритейл и E-commerce', 'Mon Amie', 'monamie.kz'],
  ['Ритейл и E-commerce', 'Marwin', 'marwin.kz'],
  ['Ритейл и E-commerce', 'Спортмастер', 'sportmaster.kz'],
  ['Ритейл и E-commerce', 'Decathlon Kazakhstan', 'decathlon.kz'],
  ['Ритейл и E-commerce', 'Adidas', 'adidas.com'],
  ['Ритейл и E-commerce', 'Nike', 'nike.com'],
  ['Ритейл и E-commerce', 'Puma', 'puma.com'],
  ['Ритейл и E-commerce', 'H&M', 'hm.com'],
  ['Ритейл и E-commerce', 'ZARA (Inditex)', 'zara.com'],
  ['Ритейл и E-commerce', 'LC Waikiki', 'lcwaikiki.com'],
  ['Ритейл и E-commerce', 'Mango', 'mango.com'],
  ['Ритейл и E-commerce', 'Levi’s', 'levi.com'],
  ['Ритейл и E-commerce', 'LVMH', 'lvmh.com'],
  ['Ритейл и E-commerce', 'Chanel', 'chanel.com'],
  ['Ритейл и E-commerce', 'Apple Premium Reseller iPoint', 'ipoint.kz'],
  ['Ритейл и E-commerce', 'Prima Distribution', 'prima.kz'],
  ['Ритейл и E-commerce', 'Philip Morris International', 'pmi.com'],
  ['Ритейл и E-commerce', 'Volvo Central Asia', 'volvo.com'],

  // ───── FMCG и Пищевая промышленность ─────
  ['FMCG и Пищевая промышленность', 'RG Brands', 'rgbrands.com'],
  ['FMCG и Пищевая промышленность', 'Raimbek Group', 'raimbek.kz'],
  ['FMCG и Пищевая промышленность', 'Raimbek-Grain', 'raimbek-grain.kz'],
  ['FMCG и Пищевая промышленность', 'Coca-Cola Kazakhstan', 'coca-cola.kz'],
  ['FMCG и Пищевая промышленность', 'PepsiCo Kazakhstan', 'pepsico.com'],
  ['FMCG и Пищевая промышленность', 'Mars Kazakhstan', 'mars.com'],
  ['FMCG и Пищевая промышленность', 'Nestlé Kazakhstan', 'nestle.com'],
  ['FMCG и Пищевая промышленность', 'Danone Kazakhstan', 'danone.com'],
  ['FMCG и Пищевая промышленность', 'Unilever Kazakhstan', 'unilever.com'],
  ['FMCG и Пищевая промышленность', 'Procter & Gamble', 'pg.com'],
  ['FMCG и Пищевая промышленность', 'Henkel Kazakhstan', 'henkel.com'],
  ['FMCG и Пищевая промышленность', 'Reckitt', 'reckitt.com'],
  ['FMCG и Пищевая промышленность', 'L’Oréal Kazakhstan', 'loreal.com'],
  ['FMCG и Пищевая промышленность', 'Shin Line', 'shin-line.kz'],
  ['FMCG и Пищевая промышленность', 'Рахат', 'rakhat.kz'],
  ['FMCG и Пищевая промышленность', 'Баян Сулу', 'bayansulu.kz'],
  ['FMCG и Пищевая промышленность', 'Konfety Karaganda', 'konfety.kz'],
  ['FMCG и Пищевая промышленность', 'Kazakhmys Foods', 'kazakhmys.kz'],
  ['FMCG и Пищевая промышленность', 'Adal', 'adal.kz'],
  ['FMCG и Пищевая промышленность', 'FoodMaster', 'foodmaster.kz'],
  ['FMCG и Пищевая промышленность', 'Хлебозавод №1', 'hleb.kz'],
  ['FMCG и Пищевая промышленность', 'Asem-Ai', 'asemai.kz'],
  ['FMCG и Пищевая промышленность', 'GORILLA ASIA', 'gorillaasia.kz'],
  ['FMCG и Пищевая промышленность', 'Efes Kazakhstan', 'efes.com'],
  ['FMCG и Пищевая промышленность', 'Carlsberg Kazakhstan', 'carlsberg.com'],
  ['FMCG и Пищевая промышленность', 'Heineken Kazakhstan', 'heineken.com'],
  ['FMCG и Пищевая промышленность', 'JTI Kazakhstan', 'jti.com'],
  ['FMCG и Пищевая промышленность', 'BAT Kazakhstan', 'bat.com'],
  ['FMCG и Пищевая промышленность', 'Bayadera', 'bayadera.com'],
  ['FMCG и Пищевая промышленность', 'Geom Group', 'geom.kz'],
  ['FMCG и Пищевая промышленность', 'Айнабулак', 'ainabulak.kz'],
  ['FMCG и Пищевая промышленность', 'Tassay', 'tassay.kz'],

  // ───── Энергетика и Недра ─────
  ['Энергетика и Недра', 'KAZ Minerals', 'kazminerals.com'],
  ['Энергетика и Недра', 'Казахмыс', 'kazakhmys.kz'],
  ['Энергетика и Недра', 'ERG (Eurasian Resources Group)', 'erg.kz'],
  ['Энергетика и Недра', 'Казцинк', 'kazzinc.com'],
  ['Энергетика и Недра', 'Полиметалл', 'polymetal.kz'],
  ['Энергетика и Недра', 'Алтыналмас', 'altynalmas.kz'],
  ['Энергетика и Недра', 'Казахалтын', 'kazakhaltyn.kz'],
  ['Энергетика и Недра', 'KazAtomProm', 'kazatomprom.kz'],
  ['Энергетика и Недра', 'KazMunayGas', 'kmg.kz'],
  ['Энергетика и Недра', 'Tengizchevroil', 'tengizchevroil.com'],
  ['Энергетика и Недра', 'Karachaganak Petroleum', 'kpo.kz'],
  ['Энергетика и Недра', 'NCOC (Кашаган)', 'ncoc.kz'],
  ['Энергетика и Недра', 'CNPC-AktobeMunaiGaz', 'cnpc-amg.kz'],
  ['Энергетика и Недра', 'Мангистаумунайгаз', 'mmg.kz'],
  ['Энергетика и Недра', 'Embamunaigas', 'emg.kz'],
  ['Энергетика и Недра', 'PetroKazakhstan', 'petrokazakhstan.kz'],
  ['Энергетика и Недра', 'Самрук-Энерго', 'samruk-energy.kz'],
  ['Энергетика и Недра', 'KEGOC', 'kegoc.kz'],
  ['Энергетика и Недра', 'AES Kazakhstan', 'aes.com'],
  ['Энергетика и Недра', 'Самрук-Қазына', 'sk.kz'],
  ['Энергетика и Недра', 'QazaqGaz', 'qazaqgaz.kz'],
  ['Энергетика и Недра', 'Казфосфат', 'kazphosphate.kz'],
  ['Энергетика и Недра', 'Новоджамбулский фосфорный', 'nkphos.kz'],
  ['Энергетика и Недра', 'Казахстан Темир Жолы', 'railways.kz'],
  ['Энергетика и Недра', 'Schlumberger Kazakhstan', 'slb.com'],
  ['Энергетика и Недра', 'Halliburton', 'halliburton.com'],
  ['Энергетика и Недра', 'Baker Hughes', 'bakerhughes.com'],
  ['Энергетика и Недра', 'Shell Kazakhstan', 'shell.kz'],
  ['Энергетика и Недра', 'TotalEnergies', 'totalenergies.com'],
  ['Энергетика и Недра', 'Eni Kazakhstan', 'eni.com'],

  // ───── Производство и Промышленность ─────
  ['Производство и Промышленность', 'Honeywell Kazakhstan', 'honeywell.com'],
  ['Производство и Промышленность', 'Siemens Kazakhstan', 'siemens.com'],
  ['Производство и Промышленность', 'ABB Kazakhstan', 'abb.com'],
  ['Производство и Промышленность', 'Schneider Electric', 'se.com'],
  ['Производство и Промышленность', 'GE Kazakhstan', 'ge.com'],
  ['Производство и Промышленность', 'Caterpillar', 'caterpillar.com'],
  ['Производство и Промышленность', 'Komatsu', 'komatsu.com'],
  ['Производство и Промышленность', 'John Deere', 'deere.com'],
  ['Производство и Промышленность', 'KSM', 'ksm.kz'],
  ['Производство и Промышленность', 'ЕвроКристалл', 'eurocrystal.kz'],
  ['Производство и Промышленность', 'APRIORI', 'apriori.kz'],
  ['Производство и Промышленность', 'AsiaSteel', 'asiasteel.kz'],
  ['Производство и Промышленность', 'AlmatyKuat', 'almatykuat.kz'],
  ['Производство и Промышленность', 'Семей Цемент', 'semeycement.kz'],
  ['Производство и Промышленность', 'Бухтарминская цементная', 'bccg.kz'],
  ['Производство и Промышленность', 'Hilti Kazakhstan', 'hilti.com'],
  ['Производство и Промышленность', 'Knauf Kazakhstan', 'knauf.com'],
  ['Производство и Промышленность', 'Henkel Adhesives', 'henkel.com'],
  ['Производство и Промышленность', 'ArcelorMittal Temirtau', 'arcelormittal.kz'],
  ['Производство и Промышленность', 'TenizService', 'tenizservice.kz'],
  ['Производство и Промышленность', 'AlGeo', 'algeo.kz'],
  ['Производство и Промышленность', 'KamAZ-Engineering', 'kamaz.kz'],
  ['Производство и Промышленность', 'Hyundai Trans Auto', 'hyundai-truck.kz'],
  ['Производство и Промышленность', 'SaryarkaAvtoProm', 'saryarka-avtoprom.kz'],
  ['Производство и Промышленность', 'AsiaAuto', 'asiaauto.kz'],
  ['Производство и Промышленность', 'Astana Solar', 'astanasolar.kz'],

  // ───── Строительство и Девелопмент ─────
  ['Строительство и Девелопмент', 'BI Group', 'bi.group'],
  ['Строительство и Девелопмент', 'Bazis-A', 'bazis.kz'],
  ['Строительство и Девелопмент', 'RAMS Qazaqstan', 'ramsqazaqstan.kz'],
  ['Строительство и Девелопмент', 'Svoy Dom', 'svoydom.kz'],
  ['Строительство и Девелопмент', 'Sensata Group', 'sensata.kz'],
  ['Строительство и Девелопмент', 'Qazaq Stroy', 'qazaqstroy.kz'],
  ['Строительство и Девелопмент', 'ULYTAU Group', 'ulytau.group'],
  ['Строительство и Девелопмент', 'NAK (Nur Astana Kurylys)', 'nak.kz'],
  ['Строительство и Девелопмент', 'K7 Group', 'k7group.kz'],
  ['Строительство и Девелопмент', 'Tumar Group', 'tumargroup.kz'],
  ['Строительство и Девелопмент', 'Galamat', 'galamat.kz'],
  ['Строительство и Девелопмент', 'Kusto Home', 'kustohome.kz'],
  ['Строительство и Девелопмент', 'Highvill Kazakhstan', 'highvill.kz'],
  ['Строительство и Девелопмент', 'Verny Capital', 'vernycapital.kz'],
  ['Строительство и Девелопмент', 'Capital Partners', 'capitalpartners.kz'],
  ['Строительство и Девелопмент', 'Mega Center Management', 'mega.kz'],
  ['Строительство и Девелопмент', 'Forte Property', 'forte.kz'],
  ['Строительство и Девелопмент', 'Astana Group', 'astanagroup.kz'],
  ['Строительство и Девелопмент', 'Базис Девелопмент', 'bazis.kz'],
  ['Строительство и Девелопмент', 'Esentai Group', 'esentaitower.kz'],
  ['Строительство и Девелопмент', 'Almaty Towers', 'almatytowers.kz'],
  ['Строительство и Девелопмент', 'JFD Group', 'jfd.kz'],
  ['Строительство и Девелопмент', 'Kazakh Invest', 'invest.gov.kz'],

  // ───── Логистика и Транспорт ─────
  ['Логистика и Транспорт', 'Kusto Logistics', 'kustologistics.com'],
  ['Логистика и Транспорт', 'Mercury Solutions', 'mercury-solutions.kz'],
  ['Логистика и Транспорт', 'DHL', 'dhl.com'],
  ['Логистика и Транспорт', 'CEVA Logistics', 'cevalogistics.com'],
  ['Логистика и Транспорт', 'FedEx', 'fedex.com'],
  ['Логистика и Транспорт', 'DSV', 'dsv.com'],
  ['Логистика и Транспорт', 'Maersk', 'maersk.com'],
  ['Логистика и Транспорт', 'Kuehne+Nagel', 'kuehne-nagel.com'],
  ['Логистика и Транспорт', 'Yandex Delivery', 'yandex.kz'],
  ['Логистика и Транспорт', 'ПЭК Казахстан', 'pec.kz'],
  ['Логистика и Транспорт', 'СДЭК Казахстан', 'cdek.kz'],
  ['Логистика и Транспорт', 'Казпочта', 'kazpost.kz'],
  ['Логистика и Транспорт', 'Air Astana', 'airastana.com'],
  ['Логистика и Транспорт', 'FlyArystan', 'flyarystan.com'],
  ['Логистика и Транспорт', 'SCAT Airlines', 'scat.kz'],
  ['Логистика и Транспорт', 'Qazaq Air', 'qazaqair.com'],
  ['Логистика и Транспорт', 'Lufthansa Kazakhstan', 'lufthansa.com'],
  ['Логистика и Транспорт', 'Turkish Airlines', 'turkishairlines.com'],
  ['Логистика и Транспорт', 'Emirates Kazakhstan', 'emirates.com'],
  ['Логистика и Транспорт', 'KTZ Express', 'ktze.kz'],
  ['Логистика и Транспорт', 'Eastcomtrans', 'eastcomtrans.com'],
  ['Логистика и Транспорт', 'Globalink Logistics', 'globalink.biz'],
  ['Логистика и Транспорт', 'PTC Holding', 'ptc.kz'],
  ['Логистика и Транспорт', 'Global Air Logistics', 'gallog.kz'],

  // ───── Медицина и Фарма ─────
  ['Медицина и Фарма', 'Gedeon Richter', 'gedeonrichter.com'],
  ['Медицина и Фарма', 'AstraZeneca', 'astrazeneca.com'],
  ['Медицина и Фарма', 'Teva', 'tevapharm.com'],
  ['Медицина и Фарма', 'Glenmark', 'glenmarkpharma.com'],
  ['Медицина и Фарма', 'Sandoz', 'sandoz.com'],
  ['Медицина и Фарма', 'Santo', 'santo.kz'],
  ['Медицина и Фарма', 'Pfizer Kazakhstan', 'pfizer.com'],
  ['Медицина и Фарма', 'Bayer Kazakhstan', 'bayer.com'],
  ['Медицина и Фарма', 'Roche Kazakhstan', 'roche.com'],
  ['Медицина и Фарма', 'Novartis', 'novartis.com'],
  ['Медицина и Фарма', 'GSK', 'gsk.com'],
  ['Медицина и Фарма', 'Sanofi', 'sanofi.com'],
  ['Медицина и Фарма', 'Johnson & Johnson', 'jnj.com'],
  ['Медицина и Фарма', 'Abbott Kazakhstan', 'abbott.com'],
  ['Медицина и Фарма', 'MSD Kazakhstan', 'msd.com'],
  ['Медицина и Фарма', 'Sun Pharma', 'sunpharma.com'],
  ['Медицина и Фарма', 'Servier Kazakhstan', 'servier.com'],
  ['Медицина и Фарма', 'Berlin-Chemie', 'berlin-chemie.com'],
  ['Медицина и Фарма', 'Stada Kazakhstan', 'stada.com'],
  ['Медицина и Фарма', 'Сеть клиник Рахат', 'rahatclinic.kz'],
  ['Медицина и Фарма', 'Сеть клиник Expert Neuro', 'expertneuro.kz'],
  ['Медицина и Фарма', 'Interteach', 'interteach.kz'],
  ['Медицина и Фарма', 'Sunkar Clinic', 'sunkar.kz'],
  ['Медицина и Фарма', 'On Clinic', 'onclinic.kz'],
  ['Медицина и Фарма', 'EuroPharma (сеть аптек)', 'europharma.kz'],
  ['Медицина и Фарма', 'Sadykhan', 'sadykhan.kz'],
  ['Медицина и Фарма', 'Botagoz Medical Centre', 'botagoz.kz'],

  // ───── HoReCa ─────
  ['HoReCa', 'Costa Coffee Kazakhstan', 'costa.co.uk'],
  ['HoReCa', 'Drinkit', 'drinkit.coffee'],
  ['HoReCa', 'Movenpick', 'movenpick.com'],
  ['HoReCa', 'Rixos Hotels', 'rixos.com'],
  ['HoReCa', 'Hilton Kazakhstan', 'hilton.com'],
  ['HoReCa', 'Marriott Kazakhstan', 'marriott.com'],
  ['HoReCa', 'Hyatt Almaty', 'hyatt.com'],
  ['HoReCa', 'InterContinental Almaty', 'ihg.com'],
  ['HoReCa', 'Ritz-Carlton Almaty', 'ritzcarlton.com'],
  ['HoReCa', 'Radisson Astana', 'radissonhotels.com'],
  ['HoReCa', 'Holiday Inn Almaty', 'ihg.com'],
  ['HoReCa', 'ABR (рестораны)', 'abr.kz'],
  ['HoReCa', 'AB Restaurants', 'abrestaurants.kz'],
  ['HoReCa', 'Del Papa Group', 'delpapa.kz'],
  ['HoReCa', 'Kaganat', 'kaganat.kz'],
  ['HoReCa', 'KFC Kazakhstan', 'kfc.kz'],
  ['HoReCa', 'Burger King Kazakhstan', 'burgerking.kz'],
  ['HoReCa', 'Hardee’s Kazakhstan', 'hardees.kz'],
  ['HoReCa', 'Starbucks Kazakhstan', 'starbucks.com'],
  ['HoReCa', 'McDonald’s (восстановл. бренд)', 'mcdonalds.com'],
  ['HoReCa', 'Papa John’s Kazakhstan', 'papajohns.kz'],
  ['HoReCa', 'Kulikov', 'kulikov.com'],
  ['HoReCa', 'OI-Qaragai (курорт)', 'oi-qaragai.kz'],
  ['HoReCa', 'Шымбулак', 'shymbulak.com'],
  ['HoReCa', 'Borovoe Resort', 'borovoe.kz'],

  // ───── Авто и Мобильность ─────
  ['Авто и Мобильность', 'MyCar', 'mycar.kz'],
  ['Авто и Мобильность', 'Astana Motors', 'astanamotors.kz'],
  ['Авто и Мобильность', 'Bipek Auto', 'bipekauto.kz'],
  ['Авто и Мобильность', 'Allur Auto', 'allurauto.kz'],
  ['Авто и Мобильность', 'Toyota Tsusho Kazakhstan', 'toyota.kz'],
  ['Авто и Мобильность', 'Hyundai Trans Kazakhstan', 'hyundai.kz'],
  ['Авто и Мобильность', 'KIA Kazakhstan', 'kia.kz'],
  ['Авто и Мобильность', 'BMW Kazakhstan', 'bmw.kz'],
  ['Авто и Мобильность', 'Mercedes-Benz Kazakhstan', 'mercedes-benz.kz'],
  ['Авто и Мобильность', 'Audi Kazakhstan', 'audi.kz'],
  ['Авто и Мобильность', 'Porsche Kazakhstan', 'porsche.kz'],
  ['Авто и Мобильность', 'Volkswagen Kazakhstan', 'vw.kz'],
  ['Авто и Мобильность', 'Renault Kazakhstan', 'renault.kz'],
  ['Авто и Мобильность', 'Nissan Kazakhstan', 'nissan.kz'],
  ['Авто и Мобильность', 'Lexus Kazakhstan', 'lexus.kz'],
  ['Авто и Мобильность', 'Kinto (лизинг Toyota/Lexus)', 'kinto-mobility.kz'],
  ['Авто и Мобильность', 'Volvo Central Asia', 'volvo.com'],
  ['Авто и Мобильность', 'Mercury (Mercedes-Benz Trucks)', 'mercury.kz'],
  ['Авто и Мобильность', 'Eurasia Motor', 'eurasia-motor.kz'],
  ['Авто и Мобильность', 'Virage', 'virage.kz'],

  // ───── Профессиональные услуги ─────
  ['Профессиональные услуги', 'EY Kazakhstan', 'ey.com'],
  ['Профессиональные услуги', 'Deloitte Kazakhstan', 'deloitte.com'],
  ['Профессиональные услуги', 'KPMG Kazakhstan', 'kpmg.com'],
  ['Профессиональные услуги', 'PwC Kazakhstan', 'pwc.com'],
  ['Профессиональные услуги', 'McKinsey & Company', 'mckinsey.com'],
  ['Профессиональные услуги', 'BCG', 'bcg.com'],
  ['Профессиональные услуги', 'Bain & Company', 'bain.com'],
  ['Профессиональные услуги', 'Grant Thornton', 'grantthornton.kz'],
  ['Профессиональные услуги', 'BDO Kazakhstan', 'bdo.kz'],
  ['Профессиональные услуги', 'Mazars Kazakhstan', 'mazars.kz'],
  ['Профессиональные услуги', 'Baker McKenzie', 'bakermckenzie.com'],
  ['Профессиональные услуги', 'Dentons Kazakhstan', 'dentons.com'],
  ['Профессиональные услуги', 'GRATA International', 'gratanet.com'],
  ['Профессиональные услуги', 'Kinstellar', 'kinstellar.com'],
  ['Профессиональные услуги', 'GTR (аутстаффинг)', 'gtr.kz'],
  ['Профессиональные услуги', 'AKASHI Data Center', 'akashi.kz'],
  ['Профессиональные услуги', 'Учёт.kz', 'uchet.kz'],
  ['Профессиональные услуги', 'Bayev Group', 'bayevgroup.kz'],
  ['Профессиональные услуги', 'Alpha-Safety', 'alpha-safety.kz'],
  ['Профессиональные услуги', 'AV Group', 'avgroup.kz'],
  ['Профессиональные услуги', 'СПК Актобе', 'spk-aktobe.kz'],
  ['Профессиональные услуги', 'NL International', 'nlstar.com'],

  // ───── Образование ─────
  ['Образование', 'Nazarbayev University', 'nu.edu.kz'],
  ['Образование', 'AlmaU', 'almau.edu.kz'],
  ['Образование', 'KIMEP University', 'kimep.kz'],
  ['Образование', 'Назарбаев Интеллектуальные Школы', 'nis.edu.kz'],
  ['Образование', 'КазНУ им. аль-Фараби', 'kaznu.kz'],
  ['Образование', 'КазНТУ им. Сатпаева', 'satbayev.university'],
  ['Образование', 'НАО «Astana IT University»', 'astanait.edu.kz'],
  ['Образование', 'Высшая школа бизнеса NU', 'gsb.nu.edu.kz'],
  ['Образование', 'Suleyman Demirel University', 'sdu.edu.kz'],
  ['Образование', 'Maqsut Narikbayev University', 'kazguu.kz'],
  ['Образование', 'Haileybury Almaty', 'haileybury.kz'],
  ['Образование', 'Miras International School', 'miras.kz'],
  ['Образование', 'QSI International School', 'qsi.org'],
  ['Образование', 'BTS Education', 'bts-education.com'],
];

const COMPANIES = COMPANIES_RAW.map(([industry, name, domain], index) => ({
  id: `${index}-${name}`,
  industry,
  name,
  domain,
}));

const INDUSTRY_ORDER = [];
const SEEN = new Set();
COMPANIES.forEach((c) => {
  if (!SEEN.has(c.industry)) {
    SEEN.add(c.industry);
    INDUSTRY_ORDER.push(c.industry);
  }
});

function slugify(value) {
  return value
    .toLowerCase()
    .replace(/[^a-z0-9а-яё]+/gi, '-')
    .replace(/^-+|-+$/g, '');
}

// Only override domains where the KZ local domain has no logo
// but a parent/international domain does. Keep this list minimal.
const LOGO_OVERRIDE = {
  'ttk.kz': 'ttk.ru',
  'altel.kz': 'kcell.kz',
  'jusanmobile.kz': 'jusan.kz',
  'btsdigital.kz': 'aitu.io',
  'chocofamily.kz': 'choco.kz',
  'arcelormittal.kz': 'arcelormittal.com',
  'ffin.kz': 'freedom.bank',
  'freedomholdingcorp.com': 'freedom.bank',
  'halykmarket.kz': 'halykbank.kz',
  'fortemarket.kz': 'fortebank.com',
  'jmart.kz': 'jusan.kz',
  'fix-price.kz': 'fix-price.com',
  'ipoint.kz': 'apple.com',
  'gorillaasia.kz': 'gorilla.energy',
  'nkphos.kz': 'kazphosphate.kz',
  'saryarka-avtoprom.kz': 'hyundai.com',
  'asiaauto.kz': 'kia.com',
  'hyundai-truck.kz': 'hyundaitruck.com',
  'kamaz.kz': 'kamaz.ru',
  'ramsqazaqstan.kz': 'rams.com.tr',
  'ktze.kz': 'railways.kz',
  'eurasia-motor.kz': 'mercedes-benz.com',
  'mercury.kz': 'mercedes-benz.com',
  'haileybury.kz': 'haileybury.com',
  'astanait.edu.kz': 'nu.edu.kz',
  'gsb.nu.edu.kz': 'nu.edu.kz',
};

function resolvedDomain(domain) {
  return LOGO_OVERRIDE[domain] || domain;
}

function abbr(name) {
  return name
    .replace(/[«»"()]/g, ' ')
    .split(/\s+/)
    .filter(Boolean)
    .slice(0, 2)
    .map((p) => p[0])
    .join('')
    .toUpperCase();
}

function CompanyLogo({ name, domain }) {
  const [step, setStep] = React.useState(0);
  const d = resolvedDomain(domain);
  // Cascade: Clearbit (high-quality SVG) → Google Favicons (broad coverage) → initials
  // Note: Google Favicons returns HTTP 200 with a globe for unknown domains,
  // but it has excellent coverage so most companies will resolve at step 0 or 1.
  const sources = [
    `https://logo.clearbit.com/${d}`,
    `https://www.google.com/s2/favicons?domain=${d}&sz=128`,
  ];
  if (step >= sources.length) {
    return (
      <div className="company-row__logo" aria-hidden="true">
        <span className="company-row__abbr">{abbr(name)}</span>
      </div>
    );
  }
  return (
    <div className="company-row__logo" aria-hidden="true">
      <img
        key={step}
        src={sources[step]}
        alt=""
        loading="lazy"
        onError={() => setStep((s) => s + 1)}
      />
    </div>
  );
}

function CompaniesPage() {
  const grouped = useMemo(() => {
    const map = new Map();
    INDUSTRY_ORDER.forEach((ind) => map.set(ind, []));
    COMPANIES.forEach((c) => map.get(c.industry).push(c));
    return Array.from(map.entries()).map(([industry, items]) => ({
      industry,
      slug: slugify(industry),
      items: items.slice().sort((a, b) => a.name.localeCompare(b.name, 'ru')),
    }));
  }, []);

  const [activeSlug, setActiveSlug] = useState(grouped[0]?.slug ?? '');
  const sectionRefs = useRef({});

  useEffect(() => {
    const sections = grouped.map((g) => sectionRefs.current[g.slug]).filter(Boolean);
    if (!sections.length) return;
    const observer = new IntersectionObserver(
      (entries) => {
        const visible = entries
          .filter((e) => e.isIntersecting)
          .sort((a, b) => b.intersectionRatio - a.intersectionRatio)[0];
        if (visible) {
          setActiveSlug(visible.target.dataset.slug);
        }
      },
      { rootMargin: '-30% 0px -55% 0px', threshold: [0, 0.25, 0.5, 0.75, 1] }
    );
    sections.forEach((s) => observer.observe(s));
    return () => observer.disconnect();
  }, [grouped]);

  const totalCount = COMPANIES.length;

  const handleNavClick = (event, slug) => {
    event.preventDefault();
    const el = sectionRefs.current[slug];
    if (!el) return;
    const top = el.getBoundingClientRect().top + window.scrollY - 90;
    window.scrollTo({ top, behavior: 'smooth' });
    setActiveSlug(slug);
  };
  const rememberLang = (lang) => {
    try { window.localStorage.setItem('bridge_lang', lang); } catch (e) {}
  };

  return (
    <>
      <header className="nav">
        <div className="wrap nav-inner">
          <a href="index.html" className="brand">
            <span className="glyph">B</span>
            <span>Bridge</span>
            <span style={{color:'var(--ink-3)', fontWeight:400, fontSize:'12px', marginLeft:'8px', fontFamily:'var(--mono)', letterSpacing:'0.1em', textTransform:'uppercase'}}>Central&nbsp;Asia</span>
          </a>
          <nav className="nav-links nav-links--static">
            <a href="index.html#team">Команда</a>
            <a href="index.html#exit-challenges">Вызовы</a>
            <a href="index.html#approach">Подход</a>
            <a href="index.html#scenarios">Экономика</a>
            <a href="index.html#fee">Модель</a>
            <a href="index.html#market">Рынок</a>
            <a href="companies.html" aria-current="page">Компании</a>
            <a href="index.html#cases">Кейсы</a>
            <a href="index.html#contact">Контакты</a>
          </nav>
          <a href="index.html#contact" className="btn btn--ghost" style={{padding:'10px 16px', fontSize:'13px'}}>
            Стратсессия <span className="arrow">↗</span>
          </a>
          <a href="en/companies.html" className="lang-link" aria-label="Switch to English" onClick={() => rememberLang('en')}>EN</a>
        </div>
      </header>

      <main>
        <section className="companies-hero" data-section-name="КОМПАНИИ">
          <div className="wrap">
            <div className="companies-hero-grid">
              <div>
                <div className="h-eyebrow reveal">Карта целевых аккаунтов</div>
                <h1 className="display reveal" style={{'--rd':'80ms'}}>
                  Компании<br/>
                  <em>по отраслям.</em>
                </h1>
              </div>
              <div className="companies-hero-copy reveal" style={{'--rd':'160ms'}}>
                <p>
                  {totalCount}+ компаний, в которые мы можем занести продукт клиента
                  и организовать встречу с лицом, принимающим решение.
                  Сгруппировано по {grouped.length} отраслям.
                </p>
              </div>
            </div>
          </div>
        </section>

        <section className="companies-board" data-section-name="КАТАЛОГ">
          <div className="wrap">
            <div className="companies-layout">
              <aside className="industry-nav" aria-label="Навигация по отраслям">
                <div className="industry-nav__inner">
                  <div className="industry-nav__title">Отрасли</div>
                  <ul>
                    {grouped.map((g) => (
                      <li key={g.slug}>
                        <a
                          href={`#${g.slug}`}
                          className={g.slug === activeSlug ? 'is-active' : ''}
                          onClick={(e) => handleNavClick(e, g.slug)}
                        >
                          <span>{g.industry}</span>
                          <span className="industry-nav__count">{g.items.length}</span>
                        </a>
                      </li>
                    ))}
                  </ul>
                </div>
              </aside>

              <div className="companies-directory">
                {grouped.map((g) => (
                  <section
                    key={g.slug}
                    id={g.slug}
                    className="industry-section"
                    data-slug={g.slug}
                    ref={(el) => { sectionRefs.current[g.slug] = el; }}
                  >
                    <header className="industry-section__head">
                      <h2>{g.industry}</h2>
                      <span className="industry-section__count">{g.items.length}</span>
                    </header>
                    <ul className="company-list">
                      {g.items.map((company) => (
                        <li className="company-row" key={company.id}>
                          <CompanyLogo name={company.name} domain={company.domain} />
                          <div className="company-row__main">
                            <span className="company-row__name">{company.name}</span>
                            <span className="company-row__domain">{company.domain}</span>
                          </div>
                          <span className="company-row__industry">{company.industry}</span>
                        </li>
                      ))}
                    </ul>
                  </section>
                ))}
              </div>
            </div>
          </div>
        </section>
      </main>

      <footer className="footer">
        <div className="wrap">
          <div className="footer-bot" style={{marginTop:0, paddingTop:0, borderTop:0}}>
            <span>© 2026 Bridge · Companies map</span>
            <span>Иконки: Google Favicons</span>
          </div>
        </div>
      </footer>
    </>
  );
}

const root = ReactDOM.createRoot(document.getElementById('root'));
root.render(<CompaniesPage />);

requestAnimationFrame(() => {
  if (window.__rescanReveals) window.__rescanReveals();
  setTimeout(() => window.__rescanReveals && window.__rescanReveals(), 100);
  setTimeout(() => window.__rescanReveals && window.__rescanReveals(), 500);
});
