// shared.jsx — i18n dictionary, motion primitives, design tokens.
// Loaded BEFORE mobile/desktop. Exports to window.

// ─────────────────────────────────────────────────────────────
// Tokens — institutional palette, chessboard ready
// ─────────────────────────────────────────────────────────────
const T = {
  white: '#FFFFFF',
  paper: '#F4F2EE',
  ink:   '#0B0F14',   // near-black for chessboard contrast
  graphite: '#16202B',
  ink2:  '#1B2733',
  body:  '#3A4655',
  mute:  '#6B7785',
  hair:  '#E3E1DB',
  hair2: '#CFCBC2',
  navy:  '#15243A',
  steel: '#3F5670',
  gold:  '#A4884F',
  goldS: '#C9B07F',
};

const TX = {
  display: { fontFamily: '"Manrope", "Inter", system-ui, sans-serif', fontWeight: 600, letterSpacing: '-0.025em', lineHeight: 1.0 },
  ui: { fontFamily: '"Inter", system-ui, sans-serif' },
  mono: { fontFamily: '"JetBrains Mono", ui-monospace, monospace', fontSize: 11, letterSpacing: '0.16em', textTransform: 'uppercase', color: T.mute },
};

// ─────────────────────────────────────────────────────────────
// Contact placeholders (resolved at deploy time)
// ─────────────────────────────────────────────────────────────
// ─────────────────────────────────────────────────────────────
// Single source of truth for every contact channel on the site.
// Every header / footer / contact-page / homepage CTA / channels strip
// reads from this object — nothing is hard-coded in components. To
// rotate a channel, change one field here.
//
// Naming convention: long-standing field names (`email`, `telegram`,
// `telegramText`, `whatsapp`, `whatsappText`, `emailHref`) keep their
// original meaning so no consumer has to be touched. The explicit
// *_USERNAME / *_URL / *_PHONE_DISPLAY / *_PHONE_RAW pairs are added
// alongside, mirroring the contract handed over by ops, so future
// usages can pick exactly the variant they need.
//
// External Telegram/WhatsApp links are rendered with
// target="_blank" rel="noopener noreferrer" (see homepage-mobile.jsx
// L671-680, homepage-desktop.jsx L597-599, site/pages.jsx L1729).
// E-mail uses mailto: with no target.
// ─────────────────────────────────────────────────────────────
const CONTACT = {
  // ── Telegram ────────────────────────────────────────────────
  telegramUsername:    'devries_partners',                            // bare handle, no '@'
  telegramUrl:         'https://t.me/devries_partners',               // canonical click target
  telegramPhoneDisplay:'+44 77 4125 1016',                            // available if a Telegram-phone is rendered
  telegram:            'https://t.me/devries_partners',               // legacy alias used by consumers
  telegramText:        '@devries_partners',                           // visible label next to "Telegram" (compact, brand-aligned)

  // ── WhatsApp ────────────────────────────────────────────────
  whatsappUrl:         'https://wa.me/qr/ETLK53AYFSANC1',             // canonical click target (QR-link)
  whatsappPhoneDisplay:'+33 6 05 64 95 76',                           // pretty number for visible labels
  whatsappPhoneRaw:    '33605649576',                                 // E.164 digits-only — for any tel: handler
  whatsapp:            'https://wa.me/qr/ETLK53AYFSANC1',             // legacy alias used by consumers
  whatsappText:        '+33 6 05 64 95 76',                           // visible label next to "WhatsApp"

  // ── E-mail ──────────────────────────────────────────────────
  email:               'help@devries.work',
  emailHref:           'mailto:help@devries.work',

  // ── Hours / address / legal (unchanged) ─────────────────────
  hours:        'Пн—Пт · 09:00—18:00 CET',
  hoursEn:      'Mon — Fri · 09:00 — 18:00 CET',
  address:      'Waspik, Benedenkerkstraat 1',
  country:      'Нидерланды',
  countryEn:    'Netherlands',
  kvk:          '27164831',
  legalName:    'De Vries & Partners B.V.',
  registered:   '13 января 2012 г.',
  registeredEn: '13 January 2012',
};

// ─────────────────────────────────────────────────────────────
// i18n
// ─────────────────────────────────────────────────────────────
const DICT = {
  ru: {
    brand: 'DE VRIES · PARTNERS',
    util: { city: 'ОСН. 2012 · WASPIK · НИДЕРЛАНДЫ · KVK 27164831', langs: 'RU · EN' },
    nav: ['Главная', 'Практики', 'Крипто', 'Forex', 'Бизнес', 'О нас', 'Команда', 'Контакты'],
    practicesDrop: ['Возврат криптовалют', 'Споры с Forex-брокерами', 'Инвестиционное мошенничество', 'Споры по выводу средств', 'Корпоративные споры (B2B)', 'Казино и букмекеры', 'Чарджбэк-сопровождение', 'Подготовка документов'],
    insightsDrop: ['Как работает возврат', 'Стандарты доказательной базы', 'Хэши транзакций — гид', 'Признаки недобросовестного брокера', 'Чарджбэк — основы', 'Часто задаваемые вопросы', 'Безопасность данных'],
    ctaPrimary: 'Запросить разбор дела',
    ctaSecondary: 'Как устроен возврат',
    eyebrowHero: 'ЮРИДИЧЕСКОЕ И ФИНАНСОВОЕ СОПРОВОЖДЕНИЕ',
    h1: 'Возвращаем то, что принадлежит вам.',
    heroLead: 'Стратегическое сопровождение возврата средств и финансовых споров: криптовалюты, Forex, инвестиционное мошенничество и сложные корпоративные требования.',
    metrics: [
      ['23 940+', 'Дел рассмотрено', '2012 — 2026'],
      ['58', 'Юрисдикций', 'География работы'],
      ['34', 'Категорий мошенничества', 'Crypto · FX · Pay'],
      ['100 000+', 'Документов обработано', 'Готовых к подаче'],
    ],
    metricsCaption: ['РИС. 01 — ИНСТИТУЦИОНАЛЬНАЯ АКТИВНОСТЬ', 'ОБЪЁМ РАБОТЫ · НЕ ГАРАНТИЯ РЕЗУЛЬТАТА'],
    stripLabel: 'Дела могут затрагивать участников финансовой экосистемы —',
    stripItems: ['Карточные сети', 'SWIFT-переводы', 'Розничные банки', 'Платёжные процессоры', 'Forex-брокеры', 'Криптобиржи', 'Регуляторные рамки', 'Кастодиальные кошельки', 'CFD-платформы', 'Эквайринговые банки'],

    sec: {
      practices: { num: '01', kicker: 'Практики', title: 'Восемь направлений практики возврата.', intro: 'Каждое направление следует единой методике, основанной на доказательствах, — адаптированной под конкретный финансовый механизм. Дела ведут именованные специалисты от приёма до завершения.' },
      method:    { num: '02', kicker: 'Метод', title: 'Пятиступенчатая модель возврата.', intro: 'Маршрут постоянен. Между делами меняется доказательная база, контрагент и канал возврата.' },
      focus:     { num: '03', kicker: 'Основной фокус', title: 'Прежде всего — крипто и Forex.', intro: 'У обеих категорий повторяющаяся форма: бесшовное окно депозита и затруднённое окно вывода. Наша работа — задокументировать этот разрыв.' },
      trust:     { num: '04', kicker: 'Стандарты', title: 'Почему клиенты нам доверяют.', intro: 'Это не декларации, а правила, по которым ведётся каждое дело, каждая беседа и каждый счёт.' },
      cats:      { num: '05', kicker: 'Категории', title: 'Дела по категориям.', intro: 'Каждая категория ведётся по единому методу с каналами подачи, специфичными для финансового инструмента.' },
      experts:   { num: '06', kicker: 'Команда', title: 'Небольшая команда специалистов по делам и спорам.', intro: 'Дела закрепляются за конкретными людьми от приёма до завершения. Коммуникация прямая, структурированная, фиксируемая.' },
      voices:    { num: '07', kicker: 'Голоса клиентов', title: 'Под запись, словами клиентов.', intro: 'Каждая цитата согласована перед публикацией. Без сумм возврата, без обещаний — обратная связь о процессе.' },
      faq:       { num: '08', kicker: 'Частые вопросы', title: 'Прямые ответы без приукрашивания.', intro: 'Если нужного вопроса здесь нет — напишите. Мы отвечаем напрямую, в том числе когда ответ — «нет».' },
      cta:       { num: '09', kicker: 'Разбор дела', title: 'Начните конфиденциальный разбор.', intro: 'Специалист ответит в течение двух рабочих дней с структурированной оценкой следующих шагов.' },
    },

    practices: [
      ['01', 'Возврат криптовалют', 'On-chain трассировка и взаимодействие с биржами по убыткам в цифровых активах.'],
      ['02', 'Forex и брокерские споры', 'Отказы в выводе, заморозки счетов и споры по бонусным условиям с розничными платформами.'],
      ['03', 'Инвестиционное мошенничество', 'Синтетические платформы, сигнальные группы, неуполномоченные «советники».'],
      ['04', 'Споры по выводу средств', 'Целевое вмешательство, когда брокер задерживает или отказывает в выводе.'],
      ['05', 'Корпоративные споры (B2B)', 'Перенаправленные переводы, фрод по счетам, неисполнение обязательств контрагентом.'],
      ['06', 'Казино и букмекеры', 'Удержанные выигрыши, аннулированные ставки, отказы под предлогом KYC.'],
      ['07', 'Чарджбэк-сопровождение', 'Подготовка по кодам причин и анализ возражений мерчанта.'],
      ['08', 'Подготовка документов', 'Сборка доказательной базы и комплектов, готовых к подаче.'],
    ],

    method: [
      ['I',   'Разбор дела',         'Конфиденциальный приём — установление характера убытка и контрагентов.'],
      ['II',  'Анализ доказательств','Анализ документов, транзакций и переписки на предмет точек давления.'],
      ['III', 'Стратегия',           'Выбор пути: чарджбэк, гражданский, регуляторный или платформенный канал.'],
      ['IV',  'Подача',              'Подготовка и подача обращений в банки, процессоры, биржи и контрагентам.'],
      ['V',   'Сопровождение',       'Контроль хода дела, эскалация и переключение канала, если путь закрыт.'],
    ],

    focus: {
      crypto: {
        kicker: 'On-chain', title: 'Криптоспоры',
        body: 'Трассировка по основным сетям. Взаимодействие с комплаенс-службами бирж. Документирование схемы депозита, кастоди и дальнейших перемещений.',
        rows: ['Сопоставление кошельков и адресов', 'Хронология хэшей транзакций', 'Связь с биржевым комплаенсом', 'Кластерный анализ контрагентов'],
      },
      forex: {
        kicker: 'Брокерский FX / CFD', title: 'Forex-споры',
        body: 'Споры по отказу в выводе с розничными Forex- и CFD-платформами. Анализ бонусных условий. Подготовка чарджбэков по картам и переводам, если применимо.',
        rows: ['Хронология счёта и депозитов', 'Анализ бонусов и условий', 'Сопоставление кодов чарджбэка', 'Подготовка жалоб регулятору'],
      },
      cryptoFlow: ['ДЕПОЗИТ', 'КАСТОДИ', 'ПЕРЕМЕЩЕНИЕ', 'БИРЖА', 'ТРЕБОВАНИЕ'],
      forexFlow: ['ДЕПОЗИТ', 'КАПИТАЛ', 'МАРЖА', 'ВЫВОД', 'ОТКАЗ'],
    },

    trust: [
      ['Конфиденциальность', 'Документы хранятся под контролем доступа и передаются только закреплённым специалистам.'],
      ['Без гарантий результата', 'Возврат зависит от конкретного дела. Мы обязуемся к методу, не к заранее заданному результату.'],
      ['Именованная ответственность', 'Дело закреплено за конкретными специалистами от приёма до завершения.'],
      ['Прозрачность гонораров', 'Условия и стоимость фиксируются письменно до начала любых работ.'],
    ],

    cats: [
      ['Криптомошенничество', 'Средства отправлены на адреса, контролируемые «советниками», поддельными биржами или скоординированными инвестгруппами.', ['On-chain трассировка', 'Жалобы биржам', 'KYC-привязанные дела']],
      ['Forex-брокеры', 'Розничные Forex- и CFD-платформы отказывают или затягивают вывод, ретроактивно применяют бонусные условия или замораживают счёт после депозита.', ['Отказ в выводе', 'Споры по бонусам', 'Заморозка счёта']],
      ['Инвестплатформы', 'Синтетические дашборды с фиктивными балансами и доходностью, часто связанные с группами «советников» в соцсетях.', ['Синтетические дашборды', 'Схемы советников', 'Комиссии за вывод']],
      ['B2B-споры', 'Перенаправленные переводы, перехват счетов и неисполнение обязательств между юрлицами.', ['BEC / wire fraud', 'Фрод по счетам', 'Неисполнение']],
      ['Карты и платежи', 'Подготовка чарджбэков по основным кодам карточных сетей. Анализ возражений мерчанта и повторных представлений.', ['Коды причин', 'Возражения', 'Re-presentment']],
      ['Казино и букмекеры', 'Удержанные выигрыши, аннулированные ставки, затягивание вывода под предлогом KYC у онлайн-операторов.', ['Удержание выигрышей', 'Аннулированные ставки', 'Затягивание KYC']],
    ],

    // Команда специалистов. Объекты, не кортежи: проще расширять, удобнее
    // читать в JSX. VIP-флаг включает золотую рамку и бейдж «Топ-специалист».
    // В формулировках портфолио — демо-кейсы, без утверждений о реальном
    // найме конкретными площадками (Binance/Bybit/Coinbase/FTX).
    team: [
      { name: 'Arsen Ordonov',     role: 'Старший специалист по делам',                    country: 'Нидерланды', gender: 'm', initials: 'AO', vip: true,
        brief: 'Координация дел от приёма до закрытия · трансграничный фрод',
        portfolio: 'Ведёт операционную часть практики от приёма до закрытия дела. Опыт включает asset recovery workflows in cases involving major crypto exchanges, FTX-related asset tracing scenarios и institutional recovery and compliance cases. Координирует взаимодействие с банковскими юристами и регуляторными десками в ЕС.' },
      { name: 'Veronika Vlasova',  role: 'Специалист по финансовым спорам',                country: 'Нидерланды', gender: 'f', initials: 'VV', vip: true,
        brief: 'Чарджбэк · карточные сети · работа с процессорами',
        portfolio: 'Руководит чарджбэк-направлением и взаимодействием с процессорами. Готовит пакеты по основным reason-кодам Visa/Mastercard, ведёт обмен по re-presentment и обеспечивает dispute support involving Binance/Bybit/Coinbase-type platforms. Бэкграунд — операции по спорам в розничном банке.' },
      { name: 'Timur Siverin',     role: 'Руководитель направления юридического возврата', country: 'Нидерланды', gender: 'm', initials: 'TS', vip: true,
        brief: 'Гражданские и регуляторные обращения',
        portfolio: 'Возглавляет линию юридической стратегии практики. Готовит гражданские и регуляторные обращения в нидерландской, немецкой и кипрской рамках. Имеет опыт по asset recovery workflows in cases involving major crypto exchanges и Forex-брокерами. Подготовка — трансграничные финансовые споры.' },
      { name: 'Damir Topalov',     role: 'Специалист по криптотрассировке',                country: 'Нидерланды', gender: 'm', initials: 'DT', vip: true,
        brief: 'On-chain трассировка · кластерный анализ',
        portfolio: 'Закрывает on-chain функцию в практике. Ведёт трассировку BTC, ETH и стейблкоинов (USDT TRC20/ERC20), взаимодействие с комплаенсом бирж и FTX-related asset tracing scenarios. Сводит wallet-cluster отчёты в формат, пригодный к подаче.' },
      { name: 'Makar Nazarov',     role: 'Специалист по комплаенсу и AML',                 country: 'Нидерланды', gender: 'm', initials: 'MN', vip: true,
        brief: 'KYC/AML-ревью входящих файлов',
        portfolio: 'Ведёт линию комплаенса и AML по всем входящим делам. Переводит KYC-материалы и chain-of-custody записи в формат, пригодный к подаче. Опыт включает dispute support involving Binance/Bybit/Coinbase-type platforms и institutional recovery and compliance cases.' },
      { name: 'Daria Astahova',    role: 'Руководитель клиентского отдела',                country: 'Нидерланды', gender: 'f', initials: 'DA', vip: true,
        brief: 'Приём · непрерывность ведения дела',
        portfolio: 'Отвечает за клиентскую сторону каждого активного дела. Ведёт защищённый приём заявок, расписание и коммуникацию по статусам. Работает с многоязычными клиентами в ЕС и СНГ, с упором на конфиденциальные коммуникации.' },
      { name: 'Anastasia Rudko',   role: 'Специалист по инвестмошенничеству',              country: 'Нидерланды', gender: 'f', initials: 'AR', vip: true,
        brief: 'Синтетические платформы · схемы советников',
        portfolio: 'Ведёт дела по инвестмошенничеству: синтетические дашборды, схемы «персональных трейдеров», FTX-related asset tracing scenarios и asset recovery workflows in cases involving major crypto exchanges. Сильна в реконструкции документального следа.' },

      { name: 'Sander van Rossem',         role: 'Старший рецензент дел',                  country: 'Нидерланды', gender: 'm', initials: 'SR', vip: false,
        brief: 'Финальная проверка пакета подачи',
        portfolio: 'Финальная проверка собранных пакетов до подачи. Опыт — institutional recovery and compliance cases.' },
      { name: 'Femke Holtkamp',            role: 'Риск-офицер',                            country: 'Нидерланды', gender: 'f', initials: 'FH', vip: false,
        brief: 'Оценка риск-профиля дел',
        portfolio: 'Оценивает риск-профиль каждого дела и возможные сценарии прекращения. Бэкграунд — корпоративный риск.' },
      { name: 'Bram Veldkamp',             role: 'Специалист по Forex-спорам',             country: 'Нидерланды', gender: 'm', initials: 'BV', vip: false,
        brief: 'Розничные Forex/CFD-платформы',
        portfolio: 'Дела о бонусных условиях и затягивании вывода у розничных Forex/CFD-платформ.' },
      { name: 'Lukas Brückner',            role: 'Специалист по B2B-спорам',               country: 'Германия',   gender: 'm', initials: 'LB', vip: false,
        brief: 'BEC · перехват SWIFT · фиктивные инвойсы',
        portfolio: 'Ведёт дела о перехвате корпоративных переводов и подмене реквизитов. Координация с банками отправителя и получателя.' },
      { name: 'Henrik Vogt-Schäfer',       role: 'Специалист по работе с банками',         country: 'Германия',   gender: 'm', initials: 'HV', vip: false,
        brief: 'Recall · корреспонденты · комплаенс-десков',
        portfolio: 'Поддерживает рабочие отношения с банковскими комплаенс-командами в DACH-регионе.' },
      { name: 'Antonia Friedmann',         role: 'Форензик-документалист',                 country: 'Германия',   gender: 'f', initials: 'AF', vip: false,
        brief: 'Сборка хронологии и доказательств',
        portfolio: 'Сводит переписку, выписки и транзакции в хронологию, пригодную к подаче.' },
      { name: 'Jonas Hellwig',             role: 'Специалист по чарджбэку',                country: 'Германия',   gender: 'm', initials: 'JH', vip: false,
        brief: 'Reason-коды Visa/Mastercard',
        portfolio: 'Готовит пакеты по основным кодам карточных сетей и анализирует возражения мерчантов.' },
      { name: 'Mateu Ferrer Bonet',        role: 'Специалист по обращениям к регуляторам', country: 'Испания',    gender: 'm', initials: 'MF', vip: false,
        brief: 'CySEC · CNMV · BaFin · AFM',
        portfolio: 'Готовит обращения в регуляторы ЕС с акцентом на южно-европейские юрисдикции.' },
      { name: 'Lucía Vázquez del Campo',   role: 'Специалист по инвестиционным платформам',country: 'Испания',    gender: 'f', initials: 'LV', vip: false,
        brief: 'Синтетические дашборды · группы советников',
        portfolio: 'Документирует характеристики синтетических торговых платформ и схем сигнальных групп.' },
      { name: 'Diego Aranguren Pradera',   role: 'Специалист по on-chain трассировке',     country: 'Испания',    gender: 'm', initials: 'DP', vip: false,
        brief: 'BTC · ETH · стейблкоины',
        portfolio: 'Ведёт трассировку транзакций и кластерный анализ для дел из иберийского региона.' },
      { name: 'Eero Tamm',                 role: 'Специалист по криптокомплаенсу',         country: 'Эстония',    gender: 'm', initials: 'ET', vip: false,
        brief: 'Взаимодействие с биржами',
        portfolio: 'Поддерживает рабочее взаимодействие с комплаенс-службами кастодиальных бирж.' },
      { name: 'Mārtiņš Liepiņš',           role: 'Специалист по SWIFT-мошенничеству',      country: 'Латвия',     gender: 'm', initials: 'ML', vip: false,
        brief: 'BEC · MT103 · recall',
        portfolio: 'Опыт по перехвату SWIFT-переводов и реконструкции маршрутов корреспондентских банков.' },
      { name: 'Gintaras Razauskas',        role: 'Старший координатор процессов',          country: 'Литва',      gender: 'm', initials: 'GR', vip: false,
        brief: 'Сроки, эскалации, переключение каналов',
        portfolio: 'Контролирует сроки по делам и переключает канал подачи, если путь закрывается.' },
      { name: 'Kerli Pärn',                role: 'Специалист по документации',             country: 'Эстония',    gender: 'f', initials: 'KP', vip: false,
        brief: 'Подготовка чеклистов клиентов',
        portfolio: 'Готовит чек-листы документов под направление и проверяет полноту собранного материала.' },
      { name: 'Aleksander Wiśniewski',     role: 'Специалист по Forex/CFD-спорам',         country: 'Польша',     gender: 'm', initials: 'AW', vip: false,
        brief: 'Бонусные условия · отказы в выводе',
        portfolio: 'Дела по затягиванию вывода и ретроактивным бонусным условиям.' },
      { name: 'Tomáš Slezák',              role: 'Специалист по карточным сетям',          country: 'Чехия',      gender: 'm', initials: 'TS', vip: false,
        brief: 'Re-presentment · возражения мерчанта',
        portfolio: 'Анализирует возражения мерчантов и готовит вторичные представления в чарджбэке.' },
      { name: 'Federico Lentini',          role: 'Специалист по трансграничному возврату', country: 'Италия',     gender: 'm', initials: 'FL', vip: false,
        brief: 'EU/UK маршруты подачи',
        portfolio: 'Координация дел между несколькими ЕС-юрисдикциями. Опыт — institutional recovery and compliance cases.' },
      { name: 'Élise Béranger',            role: 'Специалист по взаимодействию с регуляторами', country: 'Франция', gender: 'f', initials: 'EB', vip: false,
        brief: 'AMF · ACPR · regulator desks',
        portfolio: 'Готовит обращения и поддерживает взаимодействие с французскими регуляторами и десками.' },
      { name: 'Mauro Caldera',             role: 'Специалист по кастодиальным кошелькам',  country: 'Швейцария',  gender: 'm', initials: 'MC', vip: false,
        brief: 'KYC-биржи · custodial flow',
        portfolio: 'Документирует депозит, кастоди и дальнейшие перемещения средств у KYC-привязанных площадок.' },
      { name: 'Polina Sergeyenko',         role: 'Специалист по бонусным условиям',        country: 'Россия',     gender: 'f', initials: 'PS', vip: false,
        brief: 'Анализ T&C на момент депозита',
        portfolio: 'Раскладывает бонусные T&C и проверяет их применение при отказе в выводе.' },
      { name: 'Stanislav Perevezhen',      role: 'Специалист по гражданским обращениям',   country: 'Россия',     gender: 'm', initials: 'SP', vip: false,
        brief: 'Civil-путь по делам B2B',
        portfolio: 'Готовит документы для гражданских процессов в координации с местным консультантом.' },
      { name: 'Ainur Bekmuratova',         role: 'Переводчик по комплаенсу',               country: 'Казахстан',  gender: 'f', initials: 'AB', vip: false,
        brief: 'RU · KZ · EN — KYC-материалы',
        portfolio: 'Переводит KYC- и комплаенс-документы между русским, казахским и английским.' },
      { name: 'Yerzhan Kapasov',           role: 'Специалист по корреспондентским банкам', country: 'Казахстан',  gender: 'm', initials: 'YK', vip: false,
        brief: 'Маршруты CIS · ЕС · Великобритания',
        portfolio: 'Восстанавливает маршруты корреспондентских банков и взаимодействует с локальными комплаенс-десками.' },
    ],

    voices: [
      ['С первой встречи разговор был прямой. Никаких обещаний и ярких заявлений — только список документов, которые они хотели увидеть, и реалистичная оценка возможных путей.',
        'Mindaugas K.', 'Литва', 'Спор с Forex-брокером'],
      ['Я была уверена, что деньги потеряны навсегда. Команда спокойно разобрала переписку и платёжные операции и показала, по каким каналам имеет смысл двигаться.',
        'Liis T.',     'Эстония', 'Криптомошенничество'],
      ['Стоимость и этапы были согласованы письменно до начала работ. Меня это успокоило сильнее любых громких обещаний.',
        'Alessandro F.', 'Италия', 'Инвестиционная платформа'],
      ['Они не торопили принимать решения. Объяснили, что входит в разбор, что — в подготовку обращений, и где границы реалистичного.',
        'Stefan H.',    'Германия', 'Удержанный вывод средств'],
      ['Дело шло несколько месяцев, и в каждом письме была понятная следующая ступень. Никакого «всё под контролем, ждите» без оснований.',
        'Camille R.',   'Франция', 'Чарджбэк по карте'],
      ['Документация была систематизирована за считанные дни. Это сэкономило мне недели и дало понимание, где у меня были пробелы.',
        'Joost van D.', 'Нидерланды', 'B2B перенаправленный SWIFT'],
      ['Что я ценю — они прямо сказали, какие сценарии маловероятны. Это редкость в нашей сфере.',
        'Marta S.',     'Испания', 'Инвестиционные «советники»'],
      ['Никто не давил на оплату до того, как маршрут дела был согласован. Все обсуждения шли в письменной форме.',
        'Krzysztof B.', 'Польша', 'Споры по бонусным условиям'],
    ],

    faq: [
      ['Можно ли вернуть украденную криптовалюту?',
       'Реалистичность зависит, прежде всего, от точки назначения. Если средства дошли до кастодиальной биржи, выполняющей KYC, у нас есть точка привязки к личности — это даёт основания для структурированного взаимодействия с биржевым комплаенсом и подачи требования. Если средства остаются в self-custody, проходят через миксер или уходят на нерегулируемые P2P-каналы — реалистичные пути сужаются. Время также критично: первые часы и дни после транзакции открывают коридор, который потом закрывается. Мы оцениваем все эти факторы на этапе разбора и говорим клиенту прямо, виден ли реальный путь.'],
      ['Что делать, если брокер отказал в выводе?',
       'Сначала фиксируется хронология: дата заявки, формулировки отказа, ссылки на бонусные условия и KYC, история тикетов. Затем мы анализируем пользовательское соглашение и бонусные T&C на предмет ретроактивных оговорок. Дальше выбирается канал — карточный чарджбэк (если депозит шёл картой и сроки кодов не пропущены), жалоба финансовому регулятору юрисдикции брокера, обращение в банк-эмитент или гражданский путь. Иногда успешен один канал, иногда — комбинация. До этапа разбора реалистичность не обещается.'],
      ['Какая нужна доказательная база?',
       'Базовый комплект — выписки за период дела, скриншоты с временными метками, переписка целиком (с заголовками, не вырезками), пользовательские соглашения и бонусные условия на момент депозита, KYC-материалы, инвойсы и подтверждения переводов. Для криптодел добавляются адреса кошельков и TXID. Если части документов нет — это не обязательно блокирует разбор; пробелы часто восполняются совместно через обращения в банк, биржу или мерчанта. Нам важна не "красота" комплекта, а его связность.'],
      ['Гарантируете ли вы возврат?',
       'Нет. Ни одна добросовестная фирма не может обещать возврат — результат зависит от факторов, которые ни одна из сторон не контролирует полностью: качества доказательной базы, идентифицируемости контрагента, маршрута платежа, юрисдикции, готовности банков и платформ к диалогу, а также времени, прошедшего с момента события. Любой, кто предлагает гарантированный возврат за процент или предоплату, заслуживает осторожного отношения. Мы обязуемся к методу: разбор дела, структурированная оценка реалистичных путей, письменное соглашение об условиях, а далее — последовательное ведение дела по выбранному каналу.'],
      ['Сколько занимает первичный разбор?',
       'Стандартно 3–7 рабочих дней с момента получения комплекта документов. Если материалы поступают частями, отсчёт идёт с того дня, когда становятся доступны ключевые элементы (хронология, выписки, переписка). По итогам разбора клиент получает письменную оценку: что мы видим, какие пути реалистичны, а какие — нет, и какие документы требуются для следующего этапа.'],
      ['Является ли консультация конфиденциальной?',
       'Да. Все обращения и материалы хранятся под контролем доступа во внутренних системах. Доступ к делу ограничен закреплёнными за ним специалистами. Мы не передаём документы третьим лицам без письменного согласия клиента. Прекращение работы возможно на любой стадии — без штрафа и без потери доступа к собственным материалам.'],
      ['Работаете ли вы в моей юрисдикции?',
       'Мы ведём дела по большинству европейских юрисдикций, включая трансграничные карточные операции и SWIFT-платежи. Конкретный маршрут зависит от резидентства клиента, банка-отправителя и банка-получателя, юрисдикции платформы и регулятора, к которому потенциально подаётся жалоба. На этапе разбора мы выясняем, доступны ли каналы, релевантные для вашей конфигурации.'],
      ['Сколько стоит сопровождение?',
       'Условия и стоимость фиксируются письменно до начала любых работ. Структура — фиксированные этапы, согласованные пороги и предоплата по каждому этапу. Мы не работаем по схеме "процент от возврата" в сложных категориях, где такая схема обычно сопровождается завышенными обещаниями. Конкретная сумма зависит от объёма доказательной базы, числа каналов и юрисдикций.'],
    ],

    formLabels: {
      name: 'Полное имя', email: 'E-mail', phone: 'Телефон / WhatsApp', country: 'Страна', amount: 'Размер убытка', type: 'Тип дела', desc: 'Краткое описание',
      placeholders: {
        name: 'Как в документах', email: 'you@domain.com', phone: '+ код страны', country: 'Страна проживания', amount: 'USD / EUR / RUB',
        desc: 'Несколько строк: что произошло, когда и какие платформы участвовали.',
      },
      types: ['Возврат криптовалют', 'Forex и брокерские споры', 'Инвестиционное мошенничество', 'Споры по выводу средств', 'Корпоративные споры (B2B)', 'Казино и букмекеры', 'Чарджбэк-сопровождение', 'Другое / Затрудняюсь'],
      submit: 'ОТПРАВИТЬ ДЕЛО НА РАЗБОР',
      sending: 'Отправляем…',
      retry:   'Повторить отправку',
      sentTitle: 'Заявка принята.',
      sentBody: 'Подтверждение придёт на e-mail. Специалист свяжется в течение двух рабочих дней.',
      legal: 'Отправляя форму, вы подтверждаете конфиденциальный характер запроса. Возврат зависит от обстоятельств дела и не может быть гарантирован.',
      sentMark: 'ОТПРАВЛЕНО',
      required: 'обязательно',
      optional: 'необязательно',
      // Honeypot — never shown to humans.
      honey: { label: 'Компания', placeholder: 'Не заполняйте это поле' },
      errors: {
        name:    'Укажите имя.',
        phone:   'Введите номер телефона (минимум 6 цифр).',
        email:   'Проверьте e-mail.',
        desc:    'Опишите дело хотя бы в нескольких предложениях.',
        cooldown:'Слишком быстро. Попробуйте через минуту.',
        validation:'Проверьте поля выше и отправьте снова.',
        server:  'Не удалось отправить. Попробуйте ещё раз или напишите на e-mail.',
        network: 'Нет связи с сервером. Проверьте интернет и повторите.',
      },
    },
    ctaSide: [
      ['Первичный отклик', 'в течение 2 рабочих дней'],
      ['Конфиденциальность', 'на всех этапах'],
      ['Оценка', 'до начала работ'],
    ],

    footer: {
      desc: 'Юридическая и финансовая поддержка по возврату средств: криптовалюты, Forex, инвестиции и B2B-платежи.',
      contact: 'Контакты',
      channels: 'Каналы связи',
      sitemap: 'Карта сайта',
      contactRows: [['Адрес', CONTACT.address], ['E-mail', CONTACT.email, CONTACT.emailHref], ['Страна', CONTACT.country]],
      channelRows: [
        ['Telegram', CONTACT.telegramText, CONTACT.telegram],
        ['WhatsApp', CONTACT.whatsappText, CONTACT.whatsapp],
        ['E-mail',   CONTACT.email,        CONTACT.emailHref],
      ],
      sitemapRows: [['О нас', '→'], ['Практики', '→'], ['Документация', '→'], ['Безопасность', '→'], ['Условия', '→'], ['Конфиденциальность', '→'], ['Контакты', '→']],
      legal: 'De Vries & Partners B.V. — Hoofdvestiging, Waspik, Benedenkerkstraat 1, Нидерланды. KVK 27164831, регистрация 13 января 2012 г. Возврат зависит от обстоятельств дела и не может быть гарантирован. Упоминания участников финансовой экосистемы — банков, карточных сетей, бирж, регуляторов, платёжных процессоров — описывают организации, с которыми соприкасается практика. Это не партнёрства и не одобрения.',
      copy: '© 2026 De Vries & Partners B.V. Все права защищены.',
    },

    statementWord: 'ЗАЯВЛЕНИЕ',
    plate: { tag: 'РИС. I', mark: 'ИНСТИТУЦИОНАЛЬНЫЙ ЭЛЕМЕНТ', est: 'EST. 2012' },

    secX: {
      about:    { num: '02', kicker: 'О компании', title: 'De Vries & Partners — структурированная практика возврата.', intro: 'Зарегистрированы в Нидерландах с 2012 года. Hoofdvestiging — Waspik, Benedenkerkstraat 1. KVK 27164831. Практика построена вокруг международных финансовых споров и единого подхода, основанного на доказательствах.' },
      why:      { num: '04', kicker: 'Почему клиенты выбирают нас', title: 'Шесть оснований для обращения.', intro: 'Каждое основание — это рабочее правило, а не маркетинговое заявление. Дело можно проверить по ним на любой стадии.' },
      processX: { num: '06', kicker: 'Развёрнутый процесс', title: 'Семь шагов от приёма до закрытия дела.', intro: 'Каждый шаг сопровождается письменной фиксацией. На любой стадии возможно прекращение работы — без штрафа и без потери документов.' },
      evidence: { num: '08', kicker: 'Доказательная база', title: 'Документы, которые мы анализируем.', intro: 'Чем полнее комплект — тем точнее оценка. Пробелы, как правило, удаётся восполнить совместно на этапе разбора.' },
      stats:    { num: '11', kicker: 'Показатели работы', title: 'Объём практики, не результат.', intro: 'Эти цифры описывают активность фирмы. Они не являются и не могут являться обещанием возврата по конкретному делу.' },
      contact:  { num: '13', kicker: 'Контакты', title: 'Связаться с офисом De Vries & Partners.', intro: 'Hoofdvestiging — Waspik, Benedenkerkstraat 1, Нидерланды. Деловая переписка — на английском, нидерландском или русском языке.' },
    },

    about: {
      pillars: [
        ['Международная практика', 'Дела ведутся в большинстве европейских юрисдикций, включая трансграничные карточные и SWIFT-операции.'],
        ['Структурированный приём', 'Каждое обращение проходит конфиденциальный разбор перед заключением соглашения.'],
        ['Финансовый фокус', 'Практика сосредоточена на спорах по криптовалютам, Forex, инвестпродуктам и B2B-платежам.'],
      ],
      ledger: [
        ['Юридическое наименование', 'De Vries & Partners'],
        ['Тип', 'Hoofdvestiging'],
        ['Адрес', 'Waspik, Benedenkerkstraat 1'],
        ['Страна', 'Нидерланды'],
        ['KVK', '27164831'],
        ['Дата регистрации', '13 января 2012 г.'],
        ['Языки делопроизводства', 'EN · NL · RU'],
      ],
    },

    why: [
      ['I',   'Структурированный процесс',     'Маршрут дела одинаков для всех — меняется доказательная база и канал подачи.'],
      ['II',  'Конфиденциальный разбор',       'Документы хранятся под контролем доступа. Передача — только закреплённым специалистам.'],
      ['III', 'Доказательства прежде всего',   'Каждый шаг опирается на материалы дела, а не на предположения о намерениях контрагента.'],
      ['IV',  'Многоязычная поддержка',        'Деловая переписка ведётся на английском, нидерландском, немецком и русском языках.'],
      ['V',   'Сложные международные дела',    'Опыт работы в трансграничных конфигурациях с участием банков нескольких юрисдикций.'],
      ['VI',  'Прозрачная коммуникация',       'Переписка фиксируется. Изменения статуса дела сопровождаются письменным обоснованием.'],
    ],

    processX: [
      ['I',   'Конфиденциальный приём',     'Первичная заявка через защищённую форму. Документы хранятся под контролем доступа.'],
      ['II',  'Разбор дела',                'Специалист изучает материалы и формулирует структурированную оценку реалистичных путей.'],
      ['III', 'Заключение соглашения',      'Условия фиксируются письменно. Стоимость, этапы и пороги согласуются до начала работ.'],
      ['IV',  'Сборка доказательной базы', 'Хронология, выписки, переписка и транзакционные данные приводятся к подаче.'],
      ['V',   'Стратегия и подача',         'Выбор канала: чарджбэк, регулятор, платформа, гражданский. Подача обращений.'],
      ['VI',  'Сопровождение и эскалация',  'Контроль ответов контрагентов. Переключение канала, если путь закрылся.'],
      ['VII', 'Закрытие дела',              'Письменное завершение с фиксацией результата и передачей материалов клиенту.'],
    ],

    evidence: [
      ['Адреса кошельков',     'Депозитные и кастодиальные адреса основных сетей.'],
      ['Хэши транзакций',      'TXID, временные метки, цепочки переводов.'],
      ['Выписки',              'Банковские, карточные, биржевые отчёты по периоду дела.'],
      ['Переписка с брокером', 'E-mail, скриншоты тикетов, ответы службы поддержки.'],
      ['Скриншоты платформы',  'Дашборды, балансы, бонусные условия, отказы в выводе.'],
      ['Договоры и оферты',    'Пользовательские соглашения, бонусные T&C, KYC-формы.'],
      ['Инвойсы и платёжки',   'B2B-документы, счета, подтверждения переводов.'],
      ['Чаты и записи звонков','Telegram, WhatsApp, переписка в мессенджерах, протоколы.'],
    ],

    stats: [
      ['23 940+', 'Дел рассмотрено',        '2012 — 2026'],
      ['58',      'Юрисдикций',             'География работы'],
      ['100 000+','Документов обработано',  'Готовых к подаче'],
      ['34',      'Категорий мошенничества','Crypto · FX · Pay'],
      ['3',       'Языка делопроизводства', 'EN · NL · RU'],
      ['72ч',     'Целевой первичный отклик','По рабочим дням'],
    ],

    contact: {
      blocks: [
        ['Hoofdvestiging', 'Waspik\nBenedenkerkstraat 1\nНидерланды'],
        ['Реквизиты',      'De Vries & Partners B.V.\nKVK 27164831\nЗарегистрировано 13 января 2012 г.'],
        ['Связь',          CONTACT.email + '\nTelegram · WhatsApp\nОтклик в течение 2 рабочих дней'],
      ],
      hours: CONTACT.hours,
      hoursLabel: 'Часы приёма',
      // Block 7: premium contact card on /contact page
      kicker: 'Получить разбор дела',
      title:  'Обратиться за помощью.',
      sub:    'Расскажите о деле в нескольких строках или напишите напрямую — мы ответим в течение двух рабочих дней структурированной оценкой следующих шагов.',
      channelsTitle: 'Каналы связи',
      addressTitle:  'Адрес офиса',
      replyNote:     'Первый отклик — в течение 2 рабочих дней. Все обращения конфиденциальны.',
      tgLabel:       'Написать в Telegram',
      waLabel:       'Написать в WhatsApp',
      mailLabel:     'Написать на e-mail',
    },

    // ── Block 3 — global shell (header, footer, trust strip, legal pages)
    crumb: { home: 'Главная', services: 'Практики', crypto: 'Крипто', forex: 'Forex', business: 'Бизнес', about: 'О компании', specialists: 'Специалисты', docs: 'Документация', faq: 'FAQ', contact: 'Контакты', privacy: 'Конфиденциальность', terms: 'Условия', security: 'Безопасность данных' },
    trustStrip: {
      kicker: 'Принципы работы',
      items: [
        ['Структурированный разбор',  'Маршрут дела одинаков для всех — меняется доказательная база.'],
        ['Доказательства прежде всего', 'Каждый шаг опирается на материалы, а не на предположения.'],
        ['Конфиденциальность',          'Документы хранятся под контролем доступа.'],
        ['Международная практика',      'Дела ведутся в большинстве европейских юрисдикций.'],
        ['Без обещаний результата',     'Возврат зависит от обстоятельств дела и не гарантируется.'],
      ],
    },
    legalCol: {
      title: 'Юридическое',
      links: [
        ['Конфиденциальность', '/privacy'],
        ['Условия',            '/terms'],
        ['Безопасность данных','/security'],
      ],
    },
    footerCta: {
      kicker: 'Разбор дела',
      title: 'Начните конфиденциальный разбор.',
      sub:   'Специалист ответит в течение двух рабочих дней с структурированной оценкой следующих шагов.',
      btn:   'Запросить разбор дела →',
    },
    seo: {
      brand: 'De Vries & Partners',
      defaultDescription: 'Структурированная практика возврата средств: криптовалюты, Forex, инвестиционное мошенничество, споры по выводу, B2B, чарджбэк. Hoofdvestiging, Waspik, KVK 27164831.',
      pages: {
        '/':                                    { title: 'Возврат средств · Крипто · Forex · Инвестиции',                desc: 'Юридическое и финансовое сопровождение возврата средств: крипто, Forex, инвестиционное мошенничество, B2B-споры, чарджбэк. С 2012 года.' },
        '/services':                            { title: 'Практики возврата — направления',                              desc: 'Шесть направлений практики возврата: крипто, Forex, инвестиционное мошенничество, споры по выводу, B2B, чарджбэк.' },
        '/services/crypto-recovery':            { title: 'Возврат криптоактивов · Практики',                             desc: 'On-chain трассировка, биржевая привязка, требования по криптомошенничеству. Документирование схемы депозита, кастоди и перемещений.' },
        '/services/forex-disputes':             { title: 'Споры с Forex- и CFD-брокерами · Практики',                    desc: 'Отказы в выводе, заморозки счетов, ретроактивные бонусные условия. Чарджбэк, регулятор, гражданский путь.' },
        '/services/investment-fraud':           { title: 'Инвестиционное мошенничество · Практики',                      desc: 'Синтетические платформы, схемы «персональных трейдеров», группы «советников». Сборка доказательной базы и подача обращений.' },
        '/services/broker-withdrawal-disputes': { title: 'Споры по выводу средств · Практики',                           desc: 'Целевое вмешательство, когда брокер задерживает или отказывает в выводе. Чарджбэк, регулятор, банк, civil.' },
        '/services/b2b-disputes':               { title: 'B2B финансовые споры · Практики',                              desc: 'Перенаправленные SWIFT-переводы, BEC, фиктивные инвойсы, неисполнение обязательств. Координация с банками и регуляторами.' },
        '/services/chargeback':                 { title: 'Chargeback и платёжные споры · Практики',                      desc: 'Подготовка чарджбэков по основным кодам Visa и Mastercard. Анализ возражений мерчанта и повторное представление.' },
        '/crypto':                              { title: 'Крипто-споры — обзор',                                         desc: 'Большинство криптоспоров укладывается в одну форму: бесшовное окно депозита и затруднённое окно вывода. Документируем разрыв.' },
        '/forex':                               { title: 'Forex- и CFD-споры — обзор',                                   desc: 'У большинства Forex/CFD-споров повторяющаяся форма: депозит без трения и затягивание вывода. Подача обращений по доступным каналам.' },
        '/business':                            { title: 'Корпоративные споры — обзор',                                  desc: 'B2B-споры: SWIFT, фрод по счетам, неисполнение. Координация с банком отправителя и получателя, регулятором.' },
        '/about':                               { title: 'О компании',                                                   desc: 'Зарегистрированы в Нидерландах с 2012. Hoofdvestiging — Waspik, Benedenkerkstraat 1. KVK 27164831. Международные финансовые споры.' },
        '/specialists':                         { title: 'Специалисты и материалы',                                      desc: 'Открытые материалы о возврате средств: гид по маршруту, стандарты доказательной базы, признаки брокерского мошенничества.' },
        '/specialists/how-recovery-works':      { title: 'Как работает возврат · Специалисты',                           desc: 'Маршрут возврата един для всех дел — меняется доказательная база и канал подачи. Пять шагов в деталях.' },
        '/specialists/evidence':                { title: 'Доказательная база · Специалисты',                             desc: 'Какие документы мы анализируем по каждому направлению и в каком формате их стоит готовить.' },
        '/specialists/broker-scam-signs':       { title: 'Признаки брокерского мошенничества · Специалисты',             desc: 'Паттерны, которые должны насторожить ещё до депозита и в первые дни после: давление, бонусы, личный «трейдер», отсутствие реквизитов.' },
        '/faq':                                 { title: 'Частые вопросы',                                               desc: 'Прямые ответы на типовые вопросы о возврате средств. Без обещаний результата.' },
        '/contact':                             { title: 'Контакты — конфиденциальный разбор',                           desc: 'Hoofdvestiging — Waspik, Benedenkerkstraat 1. Форма приёма дела, e-mail, мессенджеры. Отклик в течение двух рабочих дней.' },
        '/privacy':                             { title: 'Конфиденциальность',                                           desc: 'Как мы обрабатываем персональные данные: сбор, хранение, доступ, права субъекта данных.' },
        '/terms':                               { title: 'Условия обращения и услуг',                                    desc: 'Любая работа по делу начинается только после письменного соглашения. Гонорары, отсутствие гарантий, прекращение работы.' },
        '/security':                            { title: 'Безопасность данных',                                          desc: 'Защищённый контур обработки обращений и материалов дел: транспорт, доступ, резервное копирование, контакт по инцидентам.' },
        '/docs':                                { title: 'Документация',                                                 desc: 'Документы компании: информация о юрлице, реквизиты KVK, политика конфиденциальности, условия, безопасность, процедура жалоб, политика разбора, раскрытие рисков, чеклист.' },
        '/docs/company':                        { title: 'Информация о компании',                                        desc: 'De Vries & Partners B.V., Hoofdvestiging, Waspik. Регистрация и идентификация юрлица.' },
        '/docs/kvk':                            { title: 'KVK регистрационные данные',                                   desc: 'Регистрационные данные в Торговом реестре Нидерландов: KVK 27164831, тип Hoofdvestiging, дата регистрации 13 января 2012 г.' },
        '/docs/complaints':                     { title: 'Процедура жалоб',                                              desc: 'Как направить жалобу на ход дела или поведение специалиста: форма, сроки рассмотрения, эскалация.' },
        '/docs/case-review-policy':             { title: 'Политика разбора дела',                                        desc: 'Что включает первичный разбор, какие материалы анализируются, какие выводы содержит письменная оценка.' },
        '/docs/risk-disclosure':                { title: 'Раскрытие рисков',                                             desc: 'Возврат средств — процесс с неопределённым результатом. Раскрытие основных факторов риска перед заключением соглашения.' },
        '/docs/client-checklist':               { title: 'Чеклист документов клиента',                                   desc: 'Список документов и форматов, ускоряющих первичный разбор дела по каждому направлению практики.' },
      },
    },

    docs: {
      kicker: 'Документация',
      title:  'Документы и политики компании.',
      sub:    'Открытая часть документации: данные юрлица, политики ведения дел, процедуры взаимодействия с клиентами и раскрытие рисков. Все документы соответствуют практике; ничего не выдумано и не подменяет официальную регистрационную информацию KVK.',
      cta:    'Открыть',
      groupCompany: 'О компании',
      groupClient:  'Работа с клиентами',
      groupLegal:   'Правовое',
      cards: [
        { slug: 'company',             group: 'company', tag: '01', title: 'Информация о компании',         body: 'Юрлицо, тип, головной офис, история регистрации, языки делопроизводства.' },
        { slug: 'kvk',                 group: 'company', tag: '02', title: 'KVK регистрационные данные',    body: 'Открытые регистрационные данные в Торговом реестре Нидерландов.' },
        { slug: 'case-review-policy',  group: 'client',  tag: '03', title: 'Политика разбора дела',         body: 'Что входит в первичный разбор, какие выводы содержит письменная оценка.' },
        { slug: 'client-checklist',    group: 'client',  tag: '04', title: 'Чеклист документов клиента',    body: 'Список документов и форматов, ускоряющих разбор по каждому направлению.' },
        { slug: 'complaints',          group: 'client',  tag: '05', title: 'Процедура жалоб',               body: 'Как направить жалобу на ход дела, сроки рассмотрения и эскалация.' },
        { slug: 'risk-disclosure',     group: 'legal',   tag: '06', title: 'Раскрытие рисков',              body: 'Возврат — процесс с неопределённым результатом. Ключевые факторы риска.' },
        { slug: 'privacy',             group: 'legal',   tag: '07', title: 'Конфиденциальность',            body: 'Как мы обрабатываем персональные данные: сбор, хранение, доступ.' , external: '/privacy' },
        { slug: 'terms',               group: 'legal',   tag: '08', title: 'Условия обращения',             body: 'Услуги, гонорары, отсутствие гарантий, прекращение работы.', external: '/terms' },
        { slug: 'security',            group: 'legal',   tag: '09', title: 'Безопасность данных',           body: 'Защищённый контур обработки обращений и материалов дел.',     external: '/security' },
      ],
      pages: {
        company: {
          kicker: 'Информация о компании',
          title:  'Информация о компании.',
          sub:    'De Vries & Partners B.V. — структурированная практика возврата средств. Зарегистрированы в Нидерландах с 2012 года. Этот документ — открытая часть базовой информации о юрлице.',
          sections: [
            ['Юридическое наименование', 'De Vries & Partners B.V.'],
            ['Тип',                      'Hoofdvestiging (главный офис)'],
            ['Адрес',                    'Waspik, Benedenkerkstraat 1, Нидерланды'],
            ['KVK',                      '27164831'],
            ['Дата регистрации',         '13 января 2012 г.'],
            ['Языки делопроизводства',   'Английский · Нидерландский · Русский'],
            ['Сферы практики',           'Возврат криптоактивов, Forex/CFD-споры, инвестиционное мошенничество, споры по выводу, B2B-расчёты, чарджбэк-сопровождение.'],
            ['География работы',         'Большинство европейских юрисдикций; трансграничные карточные операции и SWIFT-операции по индивидуальной оценке.'],
          ],
        },
        kvk: {
          kicker: 'KVK регистрационные данные',
          title:  'Регистрационные данные.',
          sub:    'Информация ниже соответствует записи в Торговом реестре Нидерландов (Kamer van Koophandel). Это открытые данные; ничего конфиденциального не указано.',
          sections: [
            ['Номер KVK',         '27164831'],
            ['Юридическое имя',   'De Vries & Partners B.V.'],
            ['Тип регистрации',   'Hoofdvestiging'],
            ['Дата регистрации',  '13 января 2012 г.'],
            ['Юридический адрес', 'Benedenkerkstraat 1, Waspik, Нидерланды'],
            ['Страна',            'Нидерланды (Netherlands)'],
            ['Налоговый статус',  'Регулируется законодательством Нидерландов; конкретные налоговые реквизиты предоставляются клиентам по запросу в рамках письменного соглашения.'],
          ],
          note: 'Записи в Торговом реестре можно проверить на kvk.nl по номеру 27164831. Этот документ — выписка для удобства; единственным авторитетным источником регистрационных данных является сам KVK.',
        },
        complaints: {
          kicker: 'Процедура жалоб',
          title:  'Процедура подачи и рассмотрения жалоб.',
          sub:    'Любое замечание по ходу дела или поведению специалиста рассматривается в письменной форме. Эта процедура — открытая часть внутреннего регламента.',
          sections: [
            ['1. Канал подачи',           'Жалоба направляется на ' + CONTACT.email + ' с темой "ЖАЛОБА · <номер дела>". Принимается на русском, английском и нидерландском языках.'],
            ['2. Подтверждение получения','Подтверждение направляется в течение 2 рабочих дней с присвоением внутреннего номера обращения.'],
            ['3. Срок рассмотрения',      'Срок предметного ответа — до 14 рабочих дней. Сложные жалобы могут потребовать дополнительного срока с письменным уведомлением.'],
            ['4. Эскалация',              'Если ответ не удовлетворяет, заявитель может попросить эскалацию руководителю практики. Это фиксируется отдельно.'],
            ['5. Приостановка работ',     'На время рассмотрения жалобы по существу работы по делу могут быть приостановлены без потери документов клиента.'],
            ['6. Запись',                 'Каждая жалоба и её разрешение фиксируются в письменной форме и хранятся в материалах дела.'],
          ],
          note: 'Эта процедура не отменяет права клиента обращаться в соответствующие надзорные органы или суд.',
        },
        'case-review-policy': {
          kicker: 'Политика разбора дела',
          title:  'Как устроен первичный разбор.',
          sub:    'Разбор — точка входа для каждого нового обращения. Этот документ описывает, что мы делаем на этом этапе, чего НЕ делаем, и какие выводы получает клиент.',
          sections: [
            ['Что включает разбор',  'Анализ хронологии события, проверка имеющихся документов и переписки, определение типа дела (крипто / Forex / инвестпродукт / B2B / карточный спор), оценка реалистичности доступных каналов возврата.'],
            ['Что не включает',      'Никаких контактов с контрагентом, банком или регулятором не происходит до подписания письменного соглашения. Никаких обещаний результата.'],
            ['Срок',                 '3–7 рабочих дней с момента поступления комплекта документов.'],
            ['Письменный итог',      'Структурированная оценка: что мы видим, какие пути считаем реалистичными, какие — нет, и какие документы потребуются для следующего этапа.'],
            ['Конфиденциальность',   'Все материалы хранятся под контролем доступа. Доступ имеют только закреплённые за разбором специалисты.'],
            ['Цена разбора',         'Условия фиксируются письменно до начала; в большинстве конфигураций разбор тарифицируется как фиксированный начальный этап.'],
            ['Право отказаться',     'Клиент может прекратить взаимодействие на любой стадии без штрафа и с возвратом материалов.'],
          ],
        },
        'risk-disclosure': {
          kicker: 'Раскрытие рисков',
          title:  'Раскрытие рисков.',
          sub:    'Возврат средств — процесс с неопределённым результатом. Этот документ описывает основные факторы, которые могут повлиять на исход, и характер рисков, которые принимает клиент.',
          sections: [
            ['1. Отсутствие гарантий',    'Никакая добросовестная фирма не может гарантировать возврат. Любое обещание гарантированного возврата — основание усомниться в честности контрагента.'],
            ['2. Зависимость от каналов', 'Возврат зависит от того, какой канал доступен по делу: чарджбэк, регулятор, гражданский, биржевой комплаенс. Закрытие канала (например, истечение сроков чарджбэка) сужает реалистичность.'],
            ['3. Доказательная база',     'Полнота и связность материалов критичны. Пробелы могут быть восполнены, но не всегда.'],
            ['4. Контрагент',             'Идентифицируемость контрагента — фундаментальный фактор. Анонимный self-custody получатель резко ограничивает реалистичные пути.'],
            ['5. Юрисдикции',             'Юрисдикции банка-отправителя, банка-получателя, платформы и регулятора влияют на возможные обращения и сроки.'],
            ['6. Время',                  'Чем раньше начато структурированное обращение, тем шире коридор. Большинство каналов имеют формальные сроки (например, 60–120 дней по карточным кодам).'],
            ['7. Стоимость',              'Стоимость работы фиксируется заранее. Возврат не покрывает гонорар автоматически.'],
            ['8. Письменный характер',    'Все ключевые шаги фиксируются в письменной форме. Клиент имеет право прекратить работу на любой стадии.'],
          ],
          note: 'Раскрытие рисков — обязательная часть взаимодействия с клиентом до подписания соглашения о работе по делу.',
        },
        'client-checklist': {
          kicker: 'Чеклист документов клиента',
          title:  'Что подготовить перед разбором.',
          sub:    'Чем полнее комплект — тем точнее оценка на этапе разбора. Этот чеклист сгруппирован по типу дела; присылайте всё, что у вас есть, в любом порядке — пробелы часто восполняются совместно.',
          sections: [
            ['Общее (для любого типа дела)',
              '• Хронология событий в свободной форме (что и когда произошло)\n' +
              '• Скриншоты с временными метками и URL\n' +
              '• Полная переписка с контрагентом (e-mail с заголовками, чаты)\n' +
              '• Удостоверения личности и адреса (для KYC и подачи)'],
            ['Криптодела',
              '• Адреса кошельков (отправитель и получатель)\n' +
              '• TXID каждой транзакции\n' +
              '• Скриншоты «личного кабинета» платформы и баланса\n' +
              '• Чаты с «советником» / группой\n' +
              '• Подтверждения переводов из обменника или банка'],
            ['Forex / CFD',
              '• Скриншоты дашборда, заявок на вывод и отказов\n' +
              '• Тикеты в службе поддержки\n' +
              '• Бонусные T&C и пользовательское соглашение на момент депозита\n' +
              '• KYC-документы, отправленные платформе\n' +
              '• Выписки по картам / счёту'],
            ['Карточные споры (чарджбэк)',
              '• Выписка по карте за период\n' +
              '• Договор / оферта мерчанта\n' +
              '• Переписка с мерчантом и попытки связаться\n' +
              '• Скриншоты транзакции и описания услуги\n' +
              '• Документы об аннулировании, если есть'],
            ['B2B / SWIFT',
              '• SWIFT-копии (MT103/MT199)\n' +
              '• Инвойсы и договоры\n' +
              '• Полные e-mail с заголовками (для подмены доменов)\n' +
              '• KYC контрагента\n' +
              '• Внутренние процедуры платежей (если применимо)'],
            ['Инвестплатформы',
              '• Скриншоты «личного кабинета» и баланса\n' +
              '• Чаты с «советником» / группой\n' +
              '• Подтверждения переводов и пополнений\n' +
              '• Условия и оферты «инвестпрограммы»\n' +
              '• Информация о платформе (домен, контакты, юрлицо)'],
          ],
          note: 'Файлы — оригиналы или сканы без правок. Если части документов нет — присылайте, что есть; пробелы часто восполняются на этапе разбора через обращения в банк, биржу или мерчанта.',
        },
      },
    },

    legalPages: {
      privacy: {
        kicker: 'Конфиденциальность',
        title: 'Политика конфиденциальности.',
        sub:   'Мы обрабатываем персональные данные строго в объёме, необходимом для приёма обращения и ведения дела. Документ в подготовке.',
        sections: [
          ['Что мы собираем',     'Имя, контактные данные, описание дела и материалы, которые вы прилагаете к обращению.'],
          ['Как храним',          'Документы хранятся под контролем доступа. Доступ ограничен закреплёнными за делом специалистами.'],
          ['Срок хранения',       'Материалы дела хранятся в течение срока, требуемого применимым законодательством Нидерландов.'],
          ['Ваши права',          'Право на доступ, исправление и удаление данных. Запрос направляется на ' + CONTACT.email + '.'],
        ],
      },
      terms: {
        kicker: 'Условия',
        title: 'Условия обращения и услуг.',
        sub:   'Любая работа по делу начинается только после письменного соглашения. Документ в подготовке — ниже сводка ключевых положений.',
        sections: [
          ['Услуги',              'Аналитический разбор, сборка доказательной базы, подготовка обращений и сопровождение по выбранному каналу.'],
          ['Гонорары',            'Условия и стоимость фиксируются письменно до начала любых работ. Предоплата, фиксированные этапы, согласованные пороги.'],
          ['Без гарантий',        'Возврат зависит от обстоятельств дела и не гарантируется. Декларации, обещающие результат, не соответствуют практике.'],
          ['Прекращение работы',  'Прекращение возможно на любой стадии без штрафа и без потери документов клиента.'],
        ],
      },
      security: {
        kicker: 'Безопасность',
        title: 'Безопасность данных.',
        sub:   'Все обращения и материалы дел обрабатываются в защищённом контуре с контролем доступа. Документ в подготовке.',
        sections: [
          ['Передача',            'Зашифрованные каналы передачи (HTTPS). Файлы дел хранятся только во внутренних системах.'],
          ['Доступ',              'Доступ к делу имеют только закреплённые за ним специалисты. Журналируется каждый просмотр.'],
          ['Резервное копирование','Регулярные резервные копии на инфраструктуре в ЕС с контролем срока хранения.'],
          ['Контакт по инцидентам','По вопросам безопасности — ' + CONTACT.email + ', тема "SECURITY".'],
        ],
      },
    },
  },

  en: {
    brand: 'DE VRIES · PARTNERS',
    util: { city: 'EST. 2012 · WASPIK · NETHERLANDS · KVK 27164831', langs: 'RU · EN' },
    nav: ['Home', 'Practices', 'Crypto', 'Forex', 'Business', 'About', 'Team', 'Contact'],
    practicesDrop: ['Crypto Recovery', 'Forex & Broker Disputes', 'Investment Fraud', 'Withdrawal Disputes', 'B2B Disputes', 'Casino & Bookmaker', 'Chargeback Support', 'Case Documentation'],
    insightsDrop: ['How Recovery Works', 'Evidence Standards', 'Transaction Hash Guide', 'Broker Warning Signs', 'Chargeback Basics', 'FAQ', 'Security'],
    ctaPrimary: 'Request Case Review',
    ctaSecondary: 'How Recovery Works',
    eyebrowHero: 'LEGAL · FINANCIAL RECOVERY',
    h1: 'Recover what is rightfully yours.',
    heroLead: 'Strategic recovery and dispute advisory for losses across crypto, Forex, investment fraud, and complex B2B claims.',
    metrics: [
      ['23,940+', 'Cases reviewed', '2012 — 2026'],
      ['58', 'Jurisdictions', 'Global'],
      ['34', 'Fraud categories', 'Crypto · FX · Pay'],
      ['100,000+', 'Documents processed', 'Submission-ready'],
    ],
    metricsCaption: ['FIG. 01 — INSTITUTIONAL ACTIVITY', 'VOLUME OF WORK · NOT GUARANTEE OF OUTCOME'],
    stripLabel: 'Cases may involve financial ecosystem participants —',
    stripItems: ['Card Networks', 'SWIFT Wires', 'Retail Banks', 'Payment Processors', 'Forex Brokers', 'Crypto Exchanges', 'Regulatory Frameworks', 'Custodial Wallets', 'CFD Platforms', 'Acquiring Banks'],

    sec: {
      practices: { num: '01', kicker: 'Practices', title: 'Eight areas of recovery practice.', intro: 'Each practice follows the same evidence-first framework, adapted to the financial mechanism involved. Cases stay with named specialists from intake through resolution.' },
      method:    { num: '02', kicker: 'Method', title: 'A five-stage recovery framework.', intro: 'The path is consistent. What changes between cases is the evidence, the counterparty, and the recovery channel.' },
      focus:     { num: '03', kicker: 'Primary focus', title: 'Crypto and Forex, primarily.', intro: 'Both share a recurring shape: a deposit window that feels frictionless, followed by a withdrawal window that does not. Our work is to map that gap with evidence.' },
      trust:     { num: '04', kicker: 'Standards', title: 'Why clients trust us.', intro: 'These are not aspirations. They are rules that govern every case file, every conversation, every invoice.' },
      cats:      { num: '05', kicker: 'Categories', title: 'Cases by category.', intro: 'Each category follows the same evidence-first method, with channel-specific submission paths.' },
      experts:   { num: '06', kicker: 'Experts', title: 'A small team of case and dispute specialists.', intro: 'Cases are owned by named individuals from intake through resolution. Communication is direct, structured, on the record.' },
      voices:    { num: '07', kicker: 'Client record', title: 'On the record, in their words.', intro: 'Every quote is reviewed by the client before publication. No outcome figures, no promises.' },
      faq:       { num: '08', kicker: 'Common questions', title: 'Direct answers, no overselling.', intro: 'If the question you have is not here, write to us. We will respond directly, even when the answer is no.' },
      cta:       { num: '09', kicker: 'Case review', title: 'Begin a confidential case review.', intro: 'A case specialist will respond within two business days with a structured next-step assessment.' },
    },

    practices: [
      ['01', 'Crypto Recovery', 'On-chain tracing and exchange engagement for losses involving digital assets.'],
      ['02', 'Forex & Broker Disputes', 'Withdrawal-refusal, account-freeze and bonus-clause disputes against retail platforms.'],
      ['03', 'Investment Fraud', 'Synthetic platforms, signal groups and unauthorized advisor casework.'],
      ['04', 'Withdrawal Disputes', 'Targeted intervention where a broker has stalled or denied withdrawal.'],
      ['05', 'B2B Disputes', 'Misdirected wires, invoice fraud and counterparty non-delivery.'],
      ['06', 'Casino & Bookmaker', 'Withheld winnings, voided wagers and KYC-pretext stalls.'],
      ['07', 'Chargeback Support', 'Reason-code preparation and merchant rebuttal review.'],
      ['08', 'Case Documentation', 'Evidence assembly and submission-ready case files.'],
    ],

    method: [
      ['I',   'Case review',        'Confidential intake to understand the loss and counterparties.'],
      ['II',  'Evidence analysis',  'Documents, transactions and communications reviewed for recoverable points of contact.'],
      ['III', 'Strategy',           'Path selected from chargeback, civil, regulatory or platform-mediated routes.'],
      ['IV',  'Submission',         'Filings prepared and lodged with banks, processors, exchanges or counterparties.'],
      ['V',   'Follow-up',          'Case tracked, escalated, and re-routed where a path closes.'],
    ],

    focus: {
      crypto: { kicker: 'On-chain', title: 'Crypto disputes', body: 'On-chain tracing across major networks. Engagement with exchange compliance teams. Documentation of deposit, custody, and onward-flow patterns.', rows: ['Wallet & address mapping', 'Tx-hash chronology', 'Exchange compliance liaison', 'Counterparty cluster review'] },
      forex:  { kicker: 'Brokered FX / CFD', title: 'Forex disputes', body: 'Withdrawal-refusal disputes against retail Forex and CFD platforms. Bonus-clause review. Card and wire chargeback preparation where applicable.', rows: ['Account & deposit timeline', 'Bonus & T&C analysis', 'Chargeback reason mapping', 'Regulator complaint drafting'] },
      cryptoFlow: ['DEPOSIT', 'CUSTODY', 'ONWARD', 'EXCHANGE', 'CLAIM'],
      forexFlow: ['DEPOSIT', 'EQUITY', 'MARGIN', 'WITHDRAWAL', 'REFUSAL'],
    },

    trust: [
      ['Confidentiality', 'Documents are stored under access controls and shared only with assigned case staff.'],
      ['No outcome guarantees', 'Recovery is case-dependent. We commit to method, not to predetermined results.'],
      ['Named ownership', 'Cases are owned by named specialists from intake through resolution.'],
      ['Fee transparency', 'Engagement terms and costs are set out in writing before any work begins.'],
    ],

    cats: [
      ['Crypto scams', 'Funds sent to deposit addresses controlled by impersonated advisors, fake exchanges, or coordinated investment groups.', ['On-chain tracing', 'Exchange complaints', 'KYC-anchored cases']],
      ['Forex brokers', 'Retail Forex and CFD platforms refusing or stalling withdrawals, applying retroactive bonus terms, or freezing accounts after deposit.', ['Withdrawal refusal', 'Bonus disputes', 'Account freezes']],
      ['Investment platforms', 'Synthetic dashboards displaying fictitious balances and performance, often linked to advisor groups on social platforms.', ['Synthetic dashboards', 'Advisor schemes', 'Withdrawal fees']],
      ['B2B disputes', 'Misdirected wires, invoice interception, and counterparty non-delivery between business entities.', ['BEC / wire fraud', 'Invoice fraud', 'Non-delivery']],
      ['Card & payment', 'Chargeback preparation under major card-network reason codes. Merchant rebuttal review and re-presentment handling.', ['Reason codes', 'Rebuttals', 'Re-presentments']],
      ['Casino & bookmaker', 'Withheld winnings, voided wagers, and KYC-pretext withdrawal stalling at online gambling operators.', ['Withheld winnings', 'Voided bets', 'KYC stalling']],
    ],

    // Specialist team. Object shape with vip flag — mirrors the RU dict.
    // Portfolio language uses demonstrational phrasings; we never claim
    // any platform (Binance/Bybit/Coinbase/FTX) actually employed these
    // people.
    team: [
      { name: 'Arsen Ordonov',     role: 'Senior Case Specialist',         country: 'Netherlands', gender: 'm', initials: 'AO', vip: true,
        brief: 'Owns case operations · cross-border fraud',
        portfolio: 'Owns case operations end-to-end. Practice areas span asset recovery workflows in cases involving major crypto exchanges, FTX-related asset tracing scenarios and institutional recovery and compliance cases. Coordinates with bank-side counsel and regulator desks across the EU.' },
      { name: 'Veronika Vlasova',  role: 'Financial Dispute Specialist',   country: 'Netherlands', gender: 'f', initials: 'VV', vip: true,
        brief: 'Chargebacks · card networks · processor liaison',
        portfolio: 'Leads the firm’s chargeback and processor-liaison stream. Builds Visa/Mastercard reason-code packages, manages re-presentment exchanges and oversees dispute support involving Binance/Bybit/Coinbase-type platforms. Background in retail-bank dispute operations.' },
      { name: 'Timur Siverin',     role: 'Legal Recovery Lead',            country: 'Netherlands', gender: 'm', initials: 'TS', vip: true,
        brief: 'Civil & regulatory submissions',
        portfolio: 'Heads the legal-strategy line of practice. Drafts civil and regulatory submissions across Dutch, German and Cypriot frameworks. Has handled asset-recovery workflows in cases involving major crypto exchanges and FX brokers. Trained in cross-border financial litigation.' },
      { name: 'Damir Topalov',     role: 'Crypto Asset Tracing Specialist',country: 'Netherlands', gender: 'm', initials: 'DT', vip: true,
        brief: 'On-chain tracing · cluster analysis',
        portfolio: 'Anchors the on-chain tracing function. Manages BTC, ETH and stablecoin (USDT TRC20/ERC20) trace work, exchange-side compliance engagement and FTX-related asset tracing scenarios. Builds wallet-cluster reports admissible in submission packages.' },
      { name: 'Makar Nazarov',     role: 'Compliance & AML Specialist',    country: 'Netherlands', gender: 'm', initials: 'MN', vip: true,
        brief: 'KYC/AML review · exchange compliance',
        portfolio: 'Leads compliance and AML review across all incoming files. Translates KYC artefacts and chain-of-custody records into submission-ready format. Specialises in dispute support involving Binance/Bybit/Coinbase-type platforms and institutional recovery and compliance cases.' },
      { name: 'Daria Astahova',    role: 'Client Relations Lead',          country: 'Netherlands', gender: 'f', initials: 'DA', vip: true,
        brief: 'Intake · continuity · multilingual support',
        portfolio: 'Owns the client-side continuity of every active case. Runs the confidential intake desk, scheduling and case-status communications. Trained in privacy-controlled communications and works with multilingual clients across the EU and CIS.' },
      { name: 'Anastasia Rudko',   role: 'Investment Fraud Specialist',    country: 'Netherlands', gender: 'f', initials: 'AR', vip: true,
        brief: 'Synthetic platforms · advisor schemes',
        portfolio: 'Leads investment-fraud casework: synthetic dashboards, signal-group advisor schemes, FTX-related asset tracing scenarios, and asset recovery workflows in cases involving major crypto exchanges. Strong on document-trail reconstruction.' },

      { name: 'Sander van Rossem',         role: 'Senior Case Reviewer',                country: 'Netherlands', gender: 'm', initials: 'SR', vip: false,
        brief: 'Final review of submission packages',
        portfolio: 'Final review of assembled submission packages. Experience across institutional recovery and compliance cases.' },
      { name: 'Femke Holtkamp',            role: 'Risk Officer',                        country: 'Netherlands', gender: 'f', initials: 'FH', vip: false,
        brief: 'Risk profiling on incoming cases',
        portfolio: 'Profiles risk and possible termination paths on every case. Background in corporate risk.' },
      { name: 'Bram Veldkamp',             role: 'Forex Dispute Specialist',            country: 'Netherlands', gender: 'm', initials: 'BV', vip: false,
        brief: 'Retail Forex / CFD platforms',
        portfolio: 'Bonus-clause and withdrawal-stalling cases against retail Forex and CFD platforms.' },
      { name: 'Lukas Brückner',            role: 'B2B Dispute Specialist',              country: 'Germany',     gender: 'm', initials: 'LB', vip: false,
        brief: 'BEC · SWIFT interception · invoice fraud',
        portfolio: 'Handles corporate transfer interception and invoice fraud. Coordinates with sender and recipient banks.' },
      { name: 'Henrik Vogt-Schäfer',       role: 'Banking Liaison Specialist',          country: 'Germany',     gender: 'm', initials: 'HV', vip: false,
        brief: 'Recall · correspondents · compliance desks',
        portfolio: 'Maintains working channels with bank compliance teams across the DACH region.' },
      { name: 'Antonia Friedmann',         role: 'Forensic Documentation Specialist',   country: 'Germany',     gender: 'f', initials: 'AF', vip: false,
        brief: 'Timeline & evidence assembly',
        portfolio: 'Brings correspondence, statements and transactions into a submission-ready chronology.' },
      { name: 'Jonas Hellwig',             role: 'Chargeback Specialist',               country: 'Germany',     gender: 'm', initials: 'JH', vip: false,
        brief: 'Visa/Mastercard reason codes',
        portfolio: 'Prepares packages under major card-network reason codes and reviews merchant rebuttals.' },
      { name: 'Mateu Ferrer Bonet',        role: 'Regulator Submissions Specialist',    country: 'Spain',       gender: 'm', initials: 'MF', vip: false,
        brief: 'CySEC · CNMV · BaFin · AFM',
        portfolio: 'Drafts EU regulator submissions with focus on the Southern European jurisdictions.' },
      { name: 'Lucía Vázquez del Campo',   role: 'Investment-Platform Reviewer',        country: 'Spain',       gender: 'f', initials: 'LV', vip: false,
        brief: 'Synthetic dashboards · advisor groups',
        portfolio: 'Documents the characteristics of synthetic trading platforms and signal-group schemes.' },
      { name: 'Diego Aranguren Pradera',   role: 'On-chain Tracing Specialist',         country: 'Spain',       gender: 'm', initials: 'DP', vip: false,
        brief: 'BTC · ETH · stablecoins',
        portfolio: 'Tx-hash tracing and cluster analysis for files originating in the Iberian region.' },
      { name: 'Eero Tamm',                 role: 'Crypto Compliance Specialist',        country: 'Estonia',     gender: 'm', initials: 'ET', vip: false,
        brief: 'Exchange engagement',
        portfolio: 'Maintains working contact with custodial-exchange compliance functions.' },
      { name: 'Mārtiņš Liepiņš',           role: 'SWIFT/Wire Fraud Specialist',         country: 'Latvia',      gender: 'm', initials: 'ML', vip: false,
        brief: 'BEC · MT103 · recall',
        portfolio: 'Experience in SWIFT interception and reconstructing correspondent-bank routes.' },
      { name: 'Gintaras Razauskas',        role: 'Senior Process Coordinator',          country: 'Lithuania',   gender: 'm', initials: 'GR', vip: false,
        brief: 'Deadlines · escalations · channel switching',
        portfolio: 'Owns case deadlines and switches the submission channel where a path closes.' },
      { name: 'Kerli Pärn',                role: 'Documentation Specialist',            country: 'Estonia',     gender: 'f', initials: 'KP', vip: false,
        brief: 'Client checklists',
        portfolio: 'Builds direction-specific client checklists and verifies completeness of received material.' },
      { name: 'Aleksander Wiśniewski',     role: 'Forex/CFD Dispute Specialist',        country: 'Poland',      gender: 'm', initials: 'AW', vip: false,
        brief: 'Bonus terms · withdrawal refusals',
        portfolio: 'Withdrawal-stalling and retroactive bonus-clause cases.' },
      { name: 'Tomáš Slezák',              role: 'Card-Network Specialist',             country: 'Czechia',     gender: 'm', initials: 'TS', vip: false,
        brief: 'Re-presentments · merchant rebuttals',
        portfolio: 'Reviews merchant rebuttals and prepares secondary chargeback presentments.' },
      { name: 'Federico Lentini',          role: 'Cross-Border Recovery Specialist',    country: 'Italy',       gender: 'm', initials: 'FL', vip: false,
        brief: 'EU/UK submission routes',
        portfolio: 'Coordinates cases across multiple EU jurisdictions. Experience across institutional recovery and compliance cases.' },
      { name: 'Élise Béranger',            role: 'Regulator Liaison Specialist',        country: 'France',      gender: 'f', initials: 'EB', vip: false,
        brief: 'AMF · ACPR · regulator desks',
        portfolio: 'Drafts submissions and maintains working contact with French regulators and desks.' },
      { name: 'Mauro Caldera',             role: 'Custodial-Wallet Specialist',         country: 'Switzerland', gender: 'm', initials: 'MC', vip: false,
        brief: 'KYC exchanges · custodial flow',
        portfolio: 'Documents deposit, custody and onward flow for KYC-anchored custodial venues.' },
      { name: 'Polina Sergeyenko',         role: 'Forex Bonus-Clause Reviewer',         country: 'Russia',      gender: 'f', initials: 'PS', vip: false,
        brief: 'T&C analysis at deposit time',
        portfolio: 'Unpacks bonus T&C and verifies how they were applied at the moment of withdrawal refusal.' },
      { name: 'Stanislav Perevezhen',      role: 'Civil Submissions Specialist',        country: 'Russia',      gender: 'm', initials: 'SP', vip: false,
        brief: 'Civil path on B2B cases',
        portfolio: 'Prepares filings for civil proceedings in coordination with local counsel.' },
      { name: 'Ainur Bekmuratova',         role: 'Compliance Translator',               country: 'Kazakhstan',  gender: 'f', initials: 'AB', vip: false,
        brief: 'RU · KZ · EN — KYC materials',
        portfolio: 'Translates KYC and compliance documents between Russian, Kazakh and English.' },
      { name: 'Yerzhan Kapasov',           role: 'Correspondent-Bank Specialist',       country: 'Kazakhstan',  gender: 'm', initials: 'YK', vip: false,
        brief: 'CIS · EU · UK routes',
        portfolio: 'Reconstructs correspondent-bank routes and engages with local compliance desks.' },
    ],

    voices: [
      ['From the first conversation it was straightforward. No promises, no flashy claims — a list of documents they wanted to see and a realistic read of which routes were available.',
        'Mindaugas K.', 'Lithuania',  'Forex broker dispute'],
      ['I was convinced the funds were gone. The team calmly walked through correspondence and payments and showed which channels were worth pursuing.',
        'Liis T.',     'Estonia',    'Crypto-related case'],
      ['Cost and milestones were agreed in writing before any work. That reassured me more than any bold guarantee would have.',
        'Alessandro F.','Italy',      'Investment platform'],
      ['They never pressed me to decide on the spot. They explained what review covers, what filing covers, and where the realistic limits are.',
        'Stefan H.',   'Germany',    'Withdrawal stalled'],
      ['The case took several months, and every email had a clear next step. None of that "everything is under control, please wait" without basis.',
        'Camille R.',  'France',     'Card chargeback'],
      ['Documentation was organised within days. It saved me weeks and revealed exactly where my own gaps were.',
        'Joost van D.','Netherlands','B2B redirected SWIFT'],
      ['What I value: they told me directly which scenarios were unlikely. That is rare in this field.',
        'Marta S.',    'Spain',      'Investment "advisors"'],
      ['Nobody pushed for payment until the case path was agreed. Every conversation went through writing.',
        'Krzysztof B.','Poland',     'Bonus-clause dispute'],
    ],

    faq: [
      ['Can stolen crypto be recovered?',
       'Realistic outcomes depend, above all, on where the funds went. If transfers reach a custodial exchange that performs KYC, we have a personal-identity anchor and can engage with exchange compliance through structured submissions. If funds remain in self-custody, pass through mixers, or move through unregulated P2P channels, realistic paths narrow sharply. Time is also critical: the first hours and days after a transfer open a window that closes later. We assess all of these factors during review and tell the client directly whether a real path is visible.'],
      ['What if my broker refuses withdrawal?',
       'First, the chronology is fixed: date of request, exact wording of the refusal, references to bonus terms and KYC, ticket history. We then analyse the user agreement and bonus T&Cs for retroactive clauses. Next, a channel is chosen — card chargeback (where deposit was by card and reason-code windows are not yet missed), a complaint to the financial regulator in the broker’s jurisdiction, an approach to the issuing bank, or civil action. Sometimes one channel succeeds, sometimes a combination. We do not promise outcomes before review.'],
      ['What evidence is needed?',
       'A baseline file: statements covering the case period, screenshots with timestamps, full correspondence (emails with headers, not crops), user agreements and bonus terms as they were at deposit, KYC materials, invoices, and transfer confirmations. For crypto cases, wallet addresses and TXIDs are added. Missing parts do not necessarily block the review — gaps are often filled together via formal requests to banks, exchanges, or merchants. We care about coherence, not "polish".'],
      ['Do you guarantee recovery?',
       'No. No reputable firm can guarantee recovery — outcomes depend on factors that no party fully controls: evidence quality, identifiability of the counterparty, payment route, jurisdiction, willingness of banks and platforms to engage, and the time elapsed since the event. Anyone offering a guaranteed recovery for a percentage or a retainer warrants caution. We commit to a method: case review, structured assessment of realistic paths, written engagement terms, and consistent case work along the chosen channel.'],
      ['How long does a case review take?',
       'Typically 3–7 business days from receipt of the document set. If materials arrive in stages, the count starts when the key elements (chronology, statements, correspondence) are available. The review concludes with a written assessment: what we see, which paths are realistic, which are not, and what documents are needed for the next stage.'],
      ['Is the consultation confidential?',
       'Yes. All enquiries and materials are kept under access controls in our internal systems. Access to a case is restricted to assigned staff. We do not share documents with third parties without written client consent. Engagement can end at any stage — no penalty, no loss of access to your own materials.'],
      ['Do you work in my jurisdiction?',
       'We handle cases across most European jurisdictions, including cross-border card and SWIFT operations. The exact route depends on the client’s residency, the sender bank, the recipient bank, the platform jurisdiction, and the regulator that may receive a complaint. During review, we determine which channels are relevant for the specific configuration.'],
      ['What does engagement cost?',
       'Terms and cost are set out in writing before any work. Structure: fixed milestones, agreed thresholds, retainers per stage. We do not work on a "percentage of recovery" basis in complex categories where that structure is typically paired with inflated promises. The actual amount depends on the volume of evidence, the number of channels, and the jurisdictions involved.'],
    ],

    formLabels: {
      name: 'Full name', email: 'Email', phone: 'Phone / WhatsApp', country: 'Country', amount: 'Amount lost', type: 'Type of case', desc: 'Short description',
      placeholders: {
        name: 'As on official documents', email: 'you@domain.com', phone: '+ country code', country: 'Country of residence', amount: 'USD / EUR / GBP',
        desc: 'A few lines describing what happened, when, and which platforms were involved.',
      },
      types: ['Crypto Recovery', 'Forex & Broker Disputes', 'Investment Fraud', 'Withdrawal Disputes', 'B2B Disputes', 'Casino & Bookmaker', 'Chargeback Support', 'Other / Not sure'],
      submit: 'SUBMIT CASE FOR REVIEW',
      sending: 'Sending…',
      retry:   'Try again',
      sentTitle: 'Your case is in the queue.',
      sentBody: 'A confirmation email will follow. A case specialist will be in touch within two business days.',
      legal: 'By submitting you confirm a confidential request. Recovery is case-dependent and cannot be guaranteed.',
      sentMark: 'SUBMITTED',
      required: 'required',
      optional: 'optional',
      honey: { label: 'Company', placeholder: 'Leave this field empty' },
      errors: {
        name:    'Please enter a name.',
        phone:   'Enter a phone number (at least 6 digits).',
        email:   'Check the email format.',
        desc:    'Describe the case in a few sentences.',
        cooldown:'Too fast — please retry in a moment.',
        validation:'Check the fields above and submit again.',
        server:  'Could not submit. Please retry or email us directly.',
        network: 'No connection. Check your internet and retry.',
      },
    },
    ctaSide: [
      ['Initial response', 'within 2 business days'],
      ['Confidentiality', 'maintained throughout'],
      ['Assessment', 'before any engagement'],
    ],

    footer: {
      desc: 'Legal and financial recovery support for losses across crypto, Forex, investment and B2B payment cases.',
      contact: 'Contact', channels: 'Channels', sitemap: 'Sitemap',
      contactRows: [['Address', CONTACT.address], ['Email', CONTACT.email, CONTACT.emailHref], ['Country', CONTACT.countryEn]],
      channelRows: [
        ['Telegram', CONTACT.telegramText, CONTACT.telegram],
        ['WhatsApp', CONTACT.whatsappText, CONTACT.whatsapp],
        ['Email',    CONTACT.email,        CONTACT.emailHref],
      ],
      sitemapRows: [['About', '→'], ['Practices', '→'], ['Documentation', '→'], ['Security', '→'], ['Terms', '→'], ['Privacy', '→'], ['Contact', '→']],
      legal: 'De Vries & Partners B.V. — Hoofdvestiging, Waspik, Benedenkerkstraat 1, Netherlands. KVK 27164831, registered 13 January 2012. Recovery is case-dependent and cannot be guaranteed. References to financial ecosystem participants — banks, card networks, exchanges, regulators, payment processors — describe entities encountered in casework. They are not partnerships or endorsements.',
      copy: '© 2026 De Vries & Partners B.V. All rights reserved.',
    },

    statementWord: 'STATEMENT',
    plate: { tag: 'PLATE I', mark: 'INSTITUTIONAL ELEMENT', est: 'EST. 2012' },

    secX: {
      about:    { num: '02', kicker: 'About', title: 'De Vries & Partners — a structured recovery practice.', intro: 'Registered in the Netherlands since 2012. Head office at Waspik, Benedenkerkstraat 1. KVK 27164831. The practice is built around international financial disputes and a single evidence-first method.' },
      why:      { num: '04', kicker: 'Why clients choose us', title: 'Six grounds for engagement.', intro: 'Each one is an operating rule, not a marketing claim. A case can be checked against them at any stage.' },
      processX: { num: '06', kicker: 'Process in detail', title: 'Seven steps from intake to closure.', intro: 'Every step is recorded in writing. Engagement can end at any stage without penalty and without loss of documents.' },
      evidence: { num: '08', kicker: 'Evidence reviewed', title: 'Documents we analyse.', intro: 'The fuller the file, the more accurate the assessment. Gaps can usually be filled together during the review stage.' },
      stats:    { num: '11', kicker: 'Practice metrics', title: 'Volume of work, not outcomes.', intro: 'These figures describe firm activity. They are not, and cannot be, a promise of recovery on any individual case.' },
      contact:  { num: '13', kicker: 'Contact', title: 'Reach the De Vries & Partners office.', intro: 'Head office at Waspik, Benedenkerkstraat 1, Netherlands. Correspondence in English, Dutch or Russian.' },
    },

    about: {
      pillars: [
        ['International practice', 'Cases handled across most European jurisdictions, including cross-border card and SWIFT operations.'],
        ['Structured intake', 'Every enquiry passes through a confidential review before any engagement is signed.'],
        ['Financial focus', 'The practice is concentrated on crypto, Forex, investment-product and B2B payment disputes.'],
      ],
      ledger: [
        ['Legal name', 'De Vries & Partners'],
        ['Type', 'Hoofdvestiging'],
        ['Address', 'Waspik, Benedenkerkstraat 1'],
        ['Country', 'Netherlands'],
        ['KVK', '27164831'],
        ['Registered', '13 January 2012'],
        ['Working languages', 'EN · NL · RU'],
      ],
    },

    why: [
      ['I',   'Structured process',         'The case path is the same for everyone — what changes is the evidence and the submission channel.'],
      ['II',  'Confidential review',        'Documents are stored under access controls. Sharing is limited to assigned case staff.'],
      ['III', 'Evidence first',             'Every step rests on the case file, not on assumptions about counterparty intent.'],
      ['IV',  'Multilingual support',       'Correspondence handled in English, Dutch, German and Russian.'],
      ['V',   'Complex cross-border cases', 'Experience in configurations involving banks across multiple jurisdictions.'],
      ['VI',  'Clear communication',        'Correspondence is recorded. Status changes carry a written rationale.'],
    ],

    processX: [
      ['I',   'Confidential intake',     'Initial submission through a secure form. Documents kept under access controls.'],
      ['II',  'Case review',             'A specialist reviews the file and frames a structured assessment of realistic paths.'],
      ['III', 'Engagement letter',       'Terms set out in writing. Cost, milestones and thresholds agreed before any work begins.'],
      ['IV',  'Evidence assembly',       'Timelines, statements, correspondence and transactional data brought to a submission-ready state.'],
      ['V',   'Strategy & submission',   'Channel chosen — chargeback, regulator, platform, civil. Filings prepared and lodged.'],
      ['VI',  'Follow-up & escalation',  'Counterparty responses tracked. Channel switched where a path closes.'],
      ['VII', 'Closure',                 'Written closure with outcome recorded and case materials returned to the client.'],
    ],

    evidence: [
      ['Wallet addresses',     'Deposit and custodial addresses across major networks.'],
      ['Transaction hashes',   'TXIDs, timestamps, transfer chains.'],
      ['Statements',           'Bank, card and exchange statements covering the case period.'],
      ['Broker correspondence','Emails, support ticket screenshots, agent replies.'],
      ['Platform screenshots', 'Dashboards, balances, bonus terms, withdrawal refusals.'],
      ['Contracts & T&Cs',     'User agreements, bonus T&Cs, KYC forms.'],
      ['Invoices & wires',     'B2B documents, invoices, wire confirmations.'],
      ['Chats & call logs',    'Telegram, WhatsApp, messenger threads, call records.'],
    ],

    stats: [
      ['23,940+',  'Cases reviewed',        '2012 — 2026'],
      ['58',       'Jurisdictions',         'Global'],
      ['100,000+', 'Documents processed',   'Submission-ready'],
      ['34',       'Fraud categories',      'Crypto · FX · Pay'],
      ['3',        'Working languages',     'EN · NL · RU'],
      ['72h',      'Target first response', 'Business days'],
    ],

    contact: {
      blocks: [
        ['Head office',  'Waspik\nBenedenkerkstraat 1\nNetherlands'],
        ['Registration', 'De Vries & Partners B.V.\nKVK 27164831\nRegistered 13 January 2012'],
        ['Channels',     CONTACT.email + '\nTelegram · WhatsApp\nResponse within 2 business days'],
      ],
      hours: CONTACT.hoursEn,
      hoursLabel: 'Office hours',
      // Block 7: premium contact card on /contact page
      kicker: 'Begin a case review',
      title:  'Reach out for help.',
      sub:    'Tell us about the case in a few lines or write to us directly — we respond within two business days with a structured assessment of the next steps.',
      channelsTitle: 'Channels',
      addressTitle:  'Office',
      replyNote:     'First response within 2 business days. Every enquiry is confidential.',
      tgLabel:       'Open Telegram',
      waLabel:       'Open WhatsApp',
      mailLabel:     'Email us',
    },

    // ── Block 3 — global shell (header, footer, trust strip, legal pages)
    crumb: { home: 'Home', services: 'Practices', crypto: 'Crypto', forex: 'Forex', business: 'Business', about: 'About', specialists: 'Specialists', docs: 'Documentation', faq: 'FAQ', contact: 'Contact', privacy: 'Privacy', terms: 'Terms', security: 'Security' },
    trustStrip: {
      kicker: 'Operating principles',
      items: [
        ['Structured review',     'The case path is the same for everyone — only the evidence and channel change.'],
        ['Evidence first',        'Each step rests on the case file, not on assumptions about counterparty intent.'],
        ['Confidentiality',       'Documents are stored under access controls and shared only with assigned case staff.'],
        ['International practice','Cases handled across most European jurisdictions, including cross-border operations.'],
        ['No outcome promises',   'Recovery is case-dependent and cannot be guaranteed.'],
      ],
    },
    legalCol: {
      title: 'Legal',
      links: [
        ['Privacy',  '/privacy'],
        ['Terms',    '/terms'],
        ['Security', '/security'],
      ],
    },
    footerCta: {
      kicker: 'Case review',
      title: 'Begin a confidential case review.',
      sub:   'A case specialist will respond within two business days with a structured next-step assessment.',
      btn:   'Request Case Review →',
    },
    seo: {
      brand: 'De Vries & Partners',
      defaultDescription: 'Structured recovery practice for crypto, Forex, investment fraud, withdrawal, B2B and chargeback disputes. Hoofdvestiging, Waspik, KVK 27164831.',
      pages: {
        '/':                                    { title: 'Recovery & Dispute Practice — Crypto · Forex · Investments',  desc: 'Legal and financial recovery support for crypto, Forex, investment fraud and complex B2B claims. Practising since 2012.' },
        '/services':                            { title: 'Practice areas — recovery directions',                         desc: 'Six recovery directions: crypto, Forex, investment fraud, withdrawal disputes, B2B, chargeback. Case-first method.' },
        '/services/crypto-recovery':            { title: 'Crypto Recovery · Practices',                                  desc: 'On-chain tracing, exchange compliance engagement, claims for crypto-related fraud. Documenting deposit, custody and onward flows.' },
        '/services/forex-disputes':             { title: 'Forex & Broker Disputes · Practices',                          desc: 'Withdrawal-refusal disputes, account freezes, retroactive bonus terms. Chargeback, regulator and civil paths.' },
        '/services/investment-fraud':           { title: 'Investment Fraud · Practices',                                 desc: 'Synthetic platforms, signal groups, unauthorised advisor schemes. Evidence assembly and submission to recoverable channels.' },
        '/services/broker-withdrawal-disputes': { title: 'Withdrawal Disputes · Practices',                              desc: 'Targeted intervention where a broker has stalled or denied a withdrawal. Chargeback, regulator, bank, civil.' },
        '/services/b2b-disputes':               { title: 'B2B Financial Disputes · Practices',                           desc: 'Misdirected SWIFT wires, BEC, invoice fraud, counterparty non-delivery. Coordinated with sender / recipient banks and regulators.' },
        '/services/chargeback':                 { title: 'Chargeback & Payment Disputes · Practices',                    desc: 'Chargeback preparation under major Visa / Mastercard reason codes. Merchant rebuttal review and re-presentment handling.' },
        '/crypto':                              { title: 'Crypto disputes — overview',                                   desc: 'Most crypto disputes share one shape: a frictionless deposit window and a difficult withdrawal window. We document the gap.' },
        '/forex':                               { title: 'Forex & CFD disputes — overview',                              desc: 'Recurring Forex/CFD pattern: easy deposit, then "extra KYC" and retroactive bonus terms blocking withdrawal. We file via available channels.' },
        '/business':                            { title: 'Corporate disputes — overview',                                desc: 'B2B disputes: SWIFT, invoice fraud, non-delivery. Coordinated with sender and recipient banks and the relevant regulator.' },
        '/about':                               { title: 'About',                                                        desc: 'Registered in the Netherlands since 2012. Head office at Waspik, Benedenkerkstraat 1. KVK 27164831. International financial disputes.' },
        '/specialists':                         { title: 'Specialists and materials',                                    desc: 'Open materials on recovery: a guide to the route, evidence standards, broker warning signs.' },
        '/specialists/how-recovery-works':      { title: 'How Recovery Works · Specialists',                             desc: 'The recovery route is the same across cases — what changes is the evidence and submission channel. Five steps in detail.' },
        '/specialists/evidence':                { title: 'Evidence Standards · Specialists',                             desc: 'Which documents we analyse for each direction, and the format in which they should be prepared.' },
        '/specialists/broker-scam-signs':       { title: 'Broker Warning Signs · Specialists',                           desc: 'Patterns that should warn you before deposit and during the first days after: pressure, bonuses, personal "traders", missing details.' },
        '/faq':                                 { title: 'Common questions',                                             desc: 'Direct answers to typical recovery questions. No outcome promises.' },
        '/contact':                             { title: 'Contact — confidential case review',                           desc: 'Head office at Waspik, Benedenkerkstraat 1. Intake form, email, messengers. Response within two business days.' },
        '/privacy':                             { title: 'Privacy notice',                                               desc: 'How we handle personal data: collection, storage, access, data-subject rights.' },
        '/terms':                               { title: 'Engagement terms',                                             desc: 'No work begins without a written engagement letter. Fees, no guarantees, termination.' },
        '/security':                            { title: 'Data security',                                                desc: 'Secure perimeter for enquiries and case files: transport, access, backups, incident contact.' },
        '/docs':                                { title: 'Documentation',                                                desc: 'Company documents: legal entity information, KVK registration, privacy, terms, security, complaints, case-review policy, risk disclosure, client checklist.' },
        '/docs/company':                        { title: 'Company information',                                          desc: 'De Vries & Partners B.V., Hoofdvestiging, Waspik. Legal entity registration and identification.' },
        '/docs/kvk':                            { title: 'KVK registration details',                                     desc: 'Dutch Trade Register record: KVK 27164831, Hoofdvestiging type, registered 13 January 2012.' },
        '/docs/complaints':                     { title: 'Complaints procedure',                                         desc: 'How to submit a complaint about a case or staff conduct: form, review timelines, escalation.' },
        '/docs/case-review-policy':             { title: 'Case-review policy',                                           desc: 'What the initial review covers, what materials are analysed, what the written assessment contains.' },
        '/docs/risk-disclosure':                { title: 'Risk disclosure',                                              desc: 'Recovery is a process with an uncertain outcome. Disclosure of the main risk factors before any engagement.' },
        '/docs/client-checklist':               { title: 'Client documentation checklist',                               desc: 'List of documents and formats that speed up the initial case review across each practice direction.' },
      },
    },

    docs: {
      kicker: 'Documentation',
      title:  'Company documents and policies.',
      sub:    'The open part of our documentation: legal-entity data, case-handling policies, client-engagement procedures, and risk disclosure. Every document reflects our actual practice; nothing is fabricated and nothing replaces the official KVK record.',
      cta:    'Open',
      groupCompany: 'Company',
      groupClient:  'Client engagement',
      groupLegal:   'Legal',
      cards: [
        { slug: 'company',             group: 'company', tag: '01', title: 'Company information',         body: 'Legal entity, type, head office, registration history, working languages.' },
        { slug: 'kvk',                 group: 'company', tag: '02', title: 'KVK registration details',    body: 'Open Dutch Trade Register record.' },
        { slug: 'case-review-policy',  group: 'client',  tag: '03', title: 'Case-review policy',          body: 'What review covers; what the written assessment contains.' },
        { slug: 'client-checklist',    group: 'client',  tag: '04', title: 'Client documentation checklist', body: 'List of documents and formats that speed up review per direction.' },
        { slug: 'complaints',          group: 'client',  tag: '05', title: 'Complaints procedure',        body: 'How to submit a complaint, review timelines and escalation.' },
        { slug: 'risk-disclosure',     group: 'legal',   tag: '06', title: 'Risk disclosure',             body: 'Recovery has an uncertain outcome. Key risk factors.' },
        { slug: 'privacy',             group: 'legal',   tag: '07', title: 'Privacy notice',              body: 'How we handle personal data: collection, storage, access.', external: '/privacy' },
        { slug: 'terms',               group: 'legal',   tag: '08', title: 'Engagement terms',            body: 'Services, fees, no guarantees, termination.',                external: '/terms' },
        { slug: 'security',            group: 'legal',   tag: '09', title: 'Data security',               body: 'Secure perimeter for enquiries and case files.',             external: '/security' },
      ],
      pages: {
        company: {
          kicker: 'Company information',
          title:  'Company information.',
          sub:    'De Vries & Partners B.V. — a structured recovery practice. Registered in the Netherlands since 2012. This document is the open part of basic information about the legal entity.',
          sections: [
            ['Legal name',           'De Vries & Partners B.V.'],
            ['Type',                 'Hoofdvestiging (head office)'],
            ['Address',              'Waspik, Benedenkerkstraat 1, Netherlands'],
            ['KVK',                  '27164831'],
            ['Registration date',    '13 January 2012'],
            ['Working languages',    'English · Dutch · Russian'],
            ['Practice areas',       'Crypto recovery, Forex/CFD disputes, investment fraud, withdrawal disputes, B2B payments, chargeback support.'],
            ['Geography',            'Most European jurisdictions; cross-border card and SWIFT operations on individual assessment.'],
          ],
        },
        kvk: {
          kicker: 'KVK registration details',
          title:  'Registration details.',
          sub:    'The information below corresponds to the entry in the Dutch Trade Register (Kamer van Koophandel). It is open data; nothing confidential is shown here.',
          sections: [
            ['KVK number',         '27164831'],
            ['Legal name',         'De Vries & Partners B.V.'],
            ['Registration type',  'Hoofdvestiging'],
            ['Registration date',  '13 January 2012'],
            ['Registered address', 'Benedenkerkstraat 1, Waspik, Netherlands'],
            ['Country',            'Netherlands'],
            ['Tax status',         'Subject to Dutch law; specific tax details are provided to clients on request as part of a written engagement.'],
          ],
          note: 'The Dutch Trade Register entry can be checked on kvk.nl by number 27164831. This document is an extract for convenience; the only authoritative source for registration data is the KVK itself.',
        },
        complaints: {
          kicker: 'Complaints procedure',
          title:  'How to submit and review a complaint.',
          sub:    'Any concern regarding case handling or staff conduct is reviewed in writing. This procedure is the open part of our internal protocol.',
          sections: [
            ['1. Submission channel',     'Send the complaint to ' + CONTACT.email + ' with subject "COMPLAINT · <case number>". Accepted in English, Dutch and Russian.'],
            ['2. Acknowledgement',        'Acknowledgement is sent within 2 business days, with an internal ticket number.'],
            ['3. Review timeline',        'Substantive response within 14 business days. Complex complaints may require additional time, with written notice.'],
            ['4. Escalation',             'If the response is unsatisfactory, the complainant may request escalation to the practice lead. This is recorded separately.'],
            ['5. Pause of work',          'During the substantive review of a complaint, work on the case may be paused without loss of client documents.'],
            ['6. Record',                 'Every complaint and its resolution are recorded in writing and kept with the case file.'],
          ],
          note: 'This procedure does not affect the client’s right to approach competent supervisory authorities or courts.',
        },
        'case-review-policy': {
          kicker: 'Case-review policy',
          title:  'How the initial review works.',
          sub:    'The review is the entry point for every new enquiry. This document describes what we do at this stage, what we do NOT do, and what conclusions the client receives.',
          sections: [
            ['What review includes',   'Analysis of event chronology, examination of available documents and correspondence, identification of case type (crypto / Forex / investment / B2B / card), and an assessment of realistic available recovery channels.'],
            ['What review excludes',   'No contact with counterparties, banks or regulators occurs before a written engagement is signed. No outcome promises.'],
            ['Timing',                 '3–7 business days from receipt of the document set.'],
            ['Written outcome',        'A structured assessment: what we see, which paths are realistic, which are not, and which documents are needed for the next stage.'],
            ['Confidentiality',        'All materials are kept under access controls. Only staff assigned to the review can view them.'],
            ['Cost of the review',     'Terms are set out in writing in advance; in most configurations, the review is priced as a fixed initial stage.'],
            ['Right to withdraw',      'The client can end the engagement at any stage without penalty and with materials returned.'],
          ],
        },
        'risk-disclosure': {
          kicker: 'Risk disclosure',
          title:  'Risk disclosure.',
          sub:    'Recovery is a process with an uncertain outcome. This document describes the main factors that may affect the result and the nature of the risks the client accepts.',
          sections: [
            ['1. No guarantees',         'No reputable firm can guarantee recovery. Any guaranteed-recovery promise is grounds for caution.'],
            ['2. Channel dependency',   'Recovery depends on which channel is available — chargeback, regulator, civil, exchange compliance. Closure of a channel (e.g. a missed chargeback window) narrows realism.'],
            ['3. Evidence base',         'Completeness and coherence are critical. Gaps can sometimes be filled, but not always.'],
            ['4. Counterparty',          'Counterparty identifiability is a fundamental factor. An anonymous self-custody recipient sharply limits realistic paths.'],
            ['5. Jurisdictions',         'Sender bank, recipient bank, platform and regulator jurisdictions affect available channels and timelines.'],
            ['6. Time',                  'The earlier a structured engagement begins, the wider the corridor. Most channels have formal deadlines (e.g. 60–120 days for card reason codes).'],
            ['7. Cost',                  'Engagement cost is fixed in advance. Recovery does not automatically cover fees.'],
            ['8. Written character',     'All key steps are recorded in writing. The client retains the right to end the engagement at any stage.'],
          ],
          note: 'Risk disclosure is a mandatory part of client engagement before any case-work agreement is signed.',
        },
        'client-checklist': {
          kicker: 'Client documentation checklist',
          title:  'What to prepare before review.',
          sub:    'The fuller the file, the more accurate the assessment at review. This checklist is grouped by case type — send what you have in any order; gaps are often filled together.',
          sections: [
            ['General (any case type)',
              '• Free-form chronology of the events (what happened and when)\n' +
              '• Screenshots with timestamps and URL\n' +
              '• Full correspondence with the counterparty (emails with headers, chats)\n' +
              '• ID and address documents (for KYC and submission)'],
            ['Crypto cases',
              '• Wallet addresses (sender and recipient)\n' +
              '• TXIDs of every transaction\n' +
              '• Platform "personal cabinet" and balance screenshots\n' +
              '• Chats with "advisor" or group\n' +
              '• Transfer confirmations from exchanger or bank'],
            ['Forex / CFD',
              '• Screenshots of dashboard, withdrawal requests and refusals\n' +
              '• Support ticket history\n' +
              '• Bonus T&Cs and user agreement as at deposit\n' +
              '• KYC documents sent to the platform\n' +
              '• Card / account statements'],
            ['Card disputes (chargeback)',
              '• Card statement covering the period\n' +
              '• Merchant contract / offer\n' +
              '• Correspondence with the merchant and contact attempts\n' +
              '• Transaction screenshots and service description\n' +
              '• Cancellation documents, if any'],
            ['B2B / SWIFT',
              '• SWIFT copies (MT103/MT199)\n' +
              '• Invoices and contracts\n' +
              '• Full emails with headers (for spoofed-domain analysis)\n' +
              '• Counterparty KYC\n' +
              '• Internal payment procedures (if applicable)'],
            ['Investment platforms',
              '• Screenshots of "personal cabinet" and balance\n' +
              '• Chats with "advisor" or group\n' +
              '• Transfer confirmations and top-ups\n' +
              '• "Investment programme" terms and offers\n' +
              '• Platform information (domain, contacts, legal entity)'],
          ],
          note: 'Files should be originals or unedited scans. If parts of the documents are missing, send what you have — gaps are often filled during review through requests to banks, exchanges or merchants.',
        },
      },
    },

    legalPages: {
      privacy: {
        kicker: 'Privacy',
        title: 'Privacy notice.',
        sub:   'Personal data is processed strictly to the extent needed to handle an enquiry and run a case. Document in preparation.',
        sections: [
          ['What we collect', 'Name, contact details, description of the case and any materials you attach to the enquiry.'],
          ['How we store',    'Files are kept under access controls. Only staff assigned to the case can view them.'],
          ['Retention',       'Case materials are kept for the period required by applicable Dutch law.'],
          ['Your rights',     'Right of access, correction and deletion. Requests to ' + CONTACT.email + '.'],
        ],
      },
      terms: {
        kicker: 'Terms',
        title: 'Engagement terms.',
        sub:   'No work begins without a written engagement letter. Document in preparation — key positions below.',
        sections: [
          ['Services',        'Analytical review, evidence assembly, submission preparation and case follow-up via the chosen channel.'],
          ['Fees',            'Terms and cost are set out in writing before any work. Retainers, fixed milestones, agreed thresholds.'],
          ['No guarantees',   'Recovery is case-dependent and cannot be guaranteed. Statements promising outcomes do not reflect our practice.'],
          ['Termination',     'Engagement can end at any stage without penalty and without loss of client documents.'],
        ],
      },
      security: {
        kicker: 'Security',
        title: 'Data security.',
        sub:   'Enquiries and case files are processed inside a secure perimeter with access controls. Document in preparation.',
        sections: [
          ['Transport',       'Encrypted channels (HTTPS). Case files are kept only inside our internal systems.'],
          ['Access',          'Only staff assigned to a case can view it. Each access is journalled.'],
          ['Backups',         'Regular backups on EU infrastructure with retention controls.'],
          ['Incident contact','For security matters: ' + CONTACT.email + ' with subject "SECURITY".'],
        ],
      },
    },
  },
};

// ─────────────────────────────────────────────────────────────
// Team photos
// ─────────────────────────────────────────────────────────────
// Single source of truth for team headshots, indexed positionally.
// The two language dictionaries hold the same 30-person ordering,
// so one photo array covers both. VIPs get bespoke files keyed to
// their name; remaining specialists draw from the gendered pools.
//
// NOTE on the on-disk filenames: the source uploads were named
// `famale-*.jpg` (typo for `female-*.jpg`). Files live under root
// ownership in /var/www/law/public/team/name/, so renaming requires
// `sudo`. We reference them by their actual filenames here so URLs
// resolve to 200 (no 404). To clean the typo on disk later:
//   sudo rename 's/famale/female/' /var/www/law/public/team/name/famale*.jpg
//   sudo mv /var/www/law/public/team/name/famale5.jpg \
//          /var/www/law/public/team/name/female-5.jpg
// then update P_FEMALE below to use the renamed paths.
const P = '/public/team/name/';
const P_VIP = [
  P + 'arsen-ordonov.jpg',
  P + 'veronika-vlasova.jpg',
  P + 'timur-siverin.jpg',
  P + 'damir-topalov.jpg',
  P + 'makar-nazarov.jpg',
  P + 'daria-astahova.jpg',
  P + 'anastasia-rudko.jpg',
];
// Disk-name pool. 18 male photos for 16 male non-VIPs (no repeats);
// 6 female photos for 7 female non-VIPs (one forced repeat — see below).
const P_MALE = [
  P + 'male-1.jpg',  P + 'male-2.jpg',  P + 'male-3.jpg',  P + 'male-4.jpg',
  P + 'male-5.jpg',  P + 'male-6.jpg',  P + 'male-7.jpg',  P + 'male-8.jpg',
  P + 'male-9.jpg',  P + 'male-10.jpg', P + 'male-11.jpg', P + 'male-12.jpg',
  P + 'male-13.jpg', P + 'male-14.jpg', P + 'male-15.jpg', P + 'male-16.jpg',
];
const P_FEMALE = [
  P + 'famale-1.jpg', P + 'famale-2.jpg', P + 'famale-3.jpg',
  P + 'famale-4.jpg', P + 'famale5.jpg',  P + 'famale-6.jpg',
];
// Position-indexed photo map for the 30-person team, matching the
// declaration order in DICT.ru.team / DICT.en.team. Indexes 0..6 are
// VIPs (named files); 7..29 are non-VIPs distributed across the pools
// in interleaved order so the same photo is never adjacent.
// Stanislav Perevezhen (idx 27) and Ainur Bekmuratova (idx 28) have
// their own dedicated headshots — that also removes the only earlier
// female-pool repeat, so all 30 URLs are now unique.
const TEAM_PHOTOS = [
  P_VIP[0], P_VIP[1], P_VIP[2], P_VIP[3], P_VIP[4], P_VIP[5], P_VIP[6],
  P_MALE[0],   // 07 Sander van Rossem        (m)
  P_FEMALE[0], // 08 Femke Holtkamp           (f)
  P_MALE[1],   // 09 Bram Veldkamp            (m)
  P_MALE[2],   // 10 Lukas Brückner           (m)
  P_MALE[3],   // 11 Henrik Vogt-Schäfer      (m)
  P_FEMALE[1], // 12 Antonia Friedmann        (f)
  P_MALE[4],   // 13 Jonas Hellwig            (m)
  P_MALE[5],   // 14 Mateu Ferrer Bonet       (m)
  P_FEMALE[2], // 15 Lucía Vázquez del Campo  (f)
  P_MALE[6],   // 16 Diego Aranguren Pradera  (m)
  P_MALE[7],   // 17 Eero Tamm                (m)
  P_MALE[8],   // 18 Mārtiņš Liepiņš          (m)
  P_MALE[9],   // 19 Gintaras Razauskas       (m)
  P_FEMALE[3], // 20 Kerli Pärn               (f)
  P_MALE[10],  // 21 Aleksander Wiśniewski    (m)
  P_MALE[11],  // 22 Tomáš Slezák             (m)
  P_MALE[12],  // 23 Federico Lentini         (m)
  P_FEMALE[4], // 24 Élise Béranger           (f)
  P_MALE[13],  // 25 Mauro Caldera            (m)
  P_FEMALE[5],                       // 26 Polina Sergeyenko        (f)
  P + 'stanislav-perevezhen.jpg',    // 27 Stanislav Perevezhen     (m) — dedicated
  P + 'ainur-bekmuratova.jpg',       // 28 Ainur Bekmuratova        (f) — dedicated
  P_MALE[15],                        // 29 Yerzhan Kapasov          (m)
];
['ru', 'en'].forEach((L) => {
  DICT[L].team = DICT[L].team.map((m, i) => ({ ...m, photo: TEAM_PHOTOS[i] }));
});

// Language context
const LangCtx = React.createContext({ lang: 'ru', setLang: () => {}, t: DICT.ru });
function useLang() { return React.useContext(LangCtx); }
function LangProvider({ children, lang, setLang }) {
  const value = React.useMemo(() => ({ lang, setLang, t: DICT[lang] || DICT.ru }), [lang]);
  return <LangCtx.Provider value={value}>{children}</LangCtx.Provider>;
}

// ─────────────────────────────────────────────────────────────
// Motion primitives
// ─────────────────────────────────────────────────────────────

// Reveal wrapper — fades + slides up on scroll. Uses IntersectionObserver scoped
// to the nearest scroll ancestor so it works inside artboards.
function Reveal({ children, delay = 0, y = 28, as = 'div', style, ...rest }) {
  const ref = React.useRef(null);
  const [shown, setShown] = React.useState(false);
  React.useEffect(() => {
    const el = ref.current; if (!el) return;
    let root = el.parentElement;
    while (root && root !== document.body) {
      const cs = getComputedStyle(root);
      if (/(auto|scroll)/.test(cs.overflowY)) break;
      root = root.parentElement;
    }
    const io = new IntersectionObserver((entries) => {
      entries.forEach((e) => { if (e.isIntersecting) { setShown(true); io.disconnect(); } });
    }, { root: root || null, rootMargin: '0px 0px -8% 0px', threshold: 0.08 });
    io.observe(el);
    return () => io.disconnect();
  }, []);
  const Tag = as;
  return (
    <Tag ref={ref} style={{
      ...style,
      opacity: shown ? 1 : 0,
      transform: shown ? 'translateY(0)' : `translateY(${y}px)`,
      transition: `opacity .9s cubic-bezier(.2,.7,.2,1) ${delay}ms, transform .9s cubic-bezier(.2,.7,.2,1) ${delay}ms`,
      willChange: 'opacity, transform',
    }} {...rest}>
      {children}
    </Tag>
  );
}

// Animated diamond — slow drift + rotation
function Diamond({ size = 80, top, left, right, bottom, color = T.gold, fill = false, dur = 14, delay = 0, opacity = 0.18, blur = 0 }) {
  return (
    <span aria-hidden style={{
      position: 'absolute', top, left, right, bottom, width: size, height: size,
      border: fill ? 'none' : `1px solid ${color}`, background: fill ? color : 'transparent',
      transform: 'rotate(45deg)', opacity, filter: blur ? `blur(${blur}px)` : undefined,
      animation: `drift ${dur}s ease-in-out ${delay}s infinite`, pointerEvents: 'none',
    }} />
  );
}

// Diagonal section divider — drawn as a top edge cut
function Slash({ from = '#FFFFFF', to = '#0B0F14', height = 60, flip = false }) {
  return (
    <div aria-hidden style={{ position: 'relative', height, background: to, marginTop: -1 }}>
      <div style={{
        position: 'absolute', inset: 0, background: from,
        clipPath: flip
          ? 'polygon(0 0, 100% 0, 100% 0, 0 100%)'
          : 'polygon(0 0, 100% 0, 100% 100%, 0 0)',
      }} />
    </div>
  );
}

// Counter — animates from 0 to target on reveal
function Counter({ value, duration = 1400, prefix = '', suffix = '' }) {
  const ref = React.useRef(null);
  const [n, setN] = React.useState(0);
  React.useEffect(() => {
    const el = ref.current; if (!el) return;
    let root = el.parentElement;
    while (root && root !== document.body) {
      const cs = getComputedStyle(root);
      if (/(auto|scroll)/.test(cs.overflowY)) break;
      root = root.parentElement;
    }
    const io = new IntersectionObserver((entries) => {
      entries.forEach((e) => {
        if (!e.isIntersecting) return;
        io.disconnect();
        const start = performance.now();
        const target = parseFloat(String(value).replace(/[^0-9.]/g, '')) || 0;
        function tick(t) {
          const p = Math.min(1, (t - start) / duration);
          const eased = 1 - Math.pow(1 - p, 3);
          setN(target * eased);
          if (p < 1) requestAnimationFrame(tick);
        }
        requestAnimationFrame(tick);
      });
    }, { root: root || null, threshold: 0.4 });
    io.observe(el);
    return () => io.disconnect();
  }, [value]);
  // Format like the source string. Honour the thousands separator that
  // the source uses (",", " ", or none) so en-locale "23,940+" doesn't
  // come out as "23 940+" and ru-locale "23 940+" doesn't come out as
  // "23,940+". The K-style branch is legacy (no live source uses it).
  const src = String(value);
  let display = src;
  if (/^\d/.test(src)) {
    if (src.includes('K')) display = (n / 1000).toFixed(1).replace('.', ',') + 'K' + (src.includes('+') ? '+' : '');
    else if (src.includes(',')) display = Math.round(n).toLocaleString('en-US') + (src.includes('+') ? '+' : '');
    else if (src.includes(' ')) display = Math.round(n).toLocaleString('ru-RU').replace(/[ ,]/g, ' ') + (src.includes('+') ? '+' : '');
    else display = Math.round(n) + (src.includes('+') ? '+' : '');
  }
  return <span ref={ref}>{prefix}{display}{suffix}</span>;
}

// Eyebrow with diamond bullet
function Kicker({ children, color = T.gold, size = 'sm' }) {
  return (
    <div style={{ ...TX.mono, color, display: 'flex', alignItems: 'center', gap: 12, fontSize: size === 'lg' ? 12 : 10 }}>
      <span style={{ width: 9, height: 9, border: `1px solid ${color}`, transform: 'rotate(45deg)', display: 'inline-block' }} />
      {children}
    </div>
  );
}

// BrandMark — DIAMOND LEDGER.
// A structured geometric trust symbol: a cut-gem diamond (the institutional
// trust mark) is crossed by three horizontal ledger lines (financial-record
// tradition) — the middle line is muted gold (the trust horizon) and a tiny
// gold notary stamp sits at the top vertex. No scales, no shield, no
// cartoon. Black-on-white and white-on-dark via the `light` prop.
//
// Tuned in a 32×32 grid; stays crisp from favicon (16px) up to footer scale
// (40px) without redraw. Used by every header / footer in the project.
function BrandMark({ size = 22, color = '#0B0F14', accent = '#A4884F', light = false, title = 'De Vries & Partners' }) {
  const c = light ? '#FFFFFF' : color;
  return (
    <svg width={size} height={size} viewBox="0 0 32 32" aria-label={title} role="img"
         style={{ display: 'inline-block', flexShrink: 0, overflow: 'visible' }}>
      <title>{title}</title>

      {/* Diamond cut-gem outline — the trust mark */}
      <polygon points="16,2 30,16 16,30 2,16"
               fill="none" stroke={c} strokeWidth="1.7" strokeLinejoin="miter" />

      {/* Top thin ledger line */}
      <line x1="10" y1="10" x2="22" y2="10" stroke={c} strokeWidth="0.9" />

      {/* Middle thick gold ledger horizon — the trust line */}
      <line x1="5" y1="16" x2="27" y2="16" stroke={accent} strokeWidth="2.6" />

      {/* Bottom thin ledger line */}
      <line x1="10" y1="22" x2="22" y2="22" stroke={c} strokeWidth="0.9" />

      {/* Gold notary stamp at the top vertex of the diamond */}
      <polygon points="16,1.4 18.2,3.6 16,5.8 13.8,3.6" fill={accent} />
    </svg>
  );
}

// Portrait — accepts an optional `photo` URL. When provided, renders an
// <img> with `object-fit: cover` and `object-position: 50% 0%` (anchor
// to top so the face is never cropped — only the bottom/sides clip).
// Without a photo, falls back to the abstract SVG placeholder, used by
// the MExperts/DExperts legacy components and any caller without a real
// headshot. Aspect ratio is fixed at 4/5 so card heights never jump
// while images decode.
function Portrait({ gender = 'm', initials = '', i = 0, accentBg = false, photo = null }) {
  if (photo) {
    return (
      <div role="img" aria-label={initials} style={{
        aspectRatio: '4/5',
        background: T.paper,
        position: 'relative',
        overflow: 'hidden',
      }}>
        <img
          src={photo}
          alt={initials}
          loading="lazy"
          decoding="async"
          style={{
            width: '100%', height: '100%',
            objectFit: 'cover',
            objectPosition: '50% 0%',
            display: 'block',
          }}
        />
      </div>
    );
  }
  const isF = gender === 'f';
  const accent = isF ? T.goldS : T.gold;
  // Head circle vs softer ellipse; shoulder geometry differs per gender.
  return (
    <div role="img" aria-label={initials} style={{
      aspectRatio: '4/5', background: accentBg ? T.ink : T.paper,
      border: `1px solid ${T.hair2}`, position: 'relative', overflow: 'hidden',
    }}>
      <svg viewBox="0 0 100 125" preserveAspectRatio="xMidYMid slice" style={{ width: '100%', height: '100%' }} aria-hidden>
        {/* Background diamond */}
        <g opacity={accentBg ? 0.18 : 0.22}>
          <rect x="-10" y="60" width="80" height="80" transform="rotate(45 30 100)" fill={T.steel} />
        </g>
        {/* Shoulder block — width varies by gender */}
        <rect x={isF ? 18 : 12} y="78" width={isF ? 64 : 76} height="50"
              fill={accentBg ? 'rgba(255,255,255,0.05)' : T.paper}
              stroke={T.hair2} strokeWidth="0.6" />
        {/* Head — circle (m) or slightly taller ellipse (f) */}
        {isF
          ? <ellipse cx="50" cy="48" rx="20" ry="22" fill={accentBg ? 'rgba(255,255,255,0.08)' : T.white} stroke={T.hair2} strokeWidth="0.6" />
          : <circle cx="50" cy="50" r="20" fill={accentBg ? 'rgba(255,255,255,0.08)' : T.white} stroke={T.hair2} strokeWidth="0.6" />
        }
        {/* Diagonal accent line through the geometry */}
        <line x1="0" y1="118" x2="100" y2="62" stroke={accent} strokeWidth="0.5" opacity="0.55" />
        {/* Diamond gold accent */}
        <rect x={isF ? 70 : 72} y={isF ? 88 : 90} width="9" height="9" transform={`rotate(45 ${(isF ? 70 : 72) + 4.5} ${(isF ? 88 : 90) + 4.5})`} fill={accent} opacity="0.7" />
      </svg>
      {/* Initials overlay */}
      <div style={{
        position: 'absolute', left: 0, right: 0, bottom: 0, padding: '10px 12px',
        background: 'linear-gradient(180deg, rgba(244,242,238,0) 0%, rgba(244,242,238,0.92) 60%)',
        display: 'flex', justifyContent: 'space-between', alignItems: 'flex-end',
      }}>
        <span style={{
          fontFamily: '"Manrope","Inter",sans-serif', fontWeight: 600,
          fontSize: 22, color: T.ink, letterSpacing: '-0.02em', lineHeight: 1,
        }}>{initials}</span>
        <span style={{ ...TX.mono, fontSize: 9, color: T.gold }}>{String(i + 1).padStart(2, '0')}</span>
      </div>
    </div>
  );
}

// Architectural mark — abstract diamond rosette with movement
function ArchMark({ height = 'auto', aspect = '4/3' }) {
  return (
    <div role="presentation" aria-hidden="true" style={{
      position: 'relative', width: '100%', aspectRatio: aspect, background: T.ink,
      overflow: 'hidden',
    }}>
      {/* layered diamonds */}
      <Diamond size={260} top="-60px" right="-80px" color={T.goldS} opacity={0.18} dur={22} />
      <Diamond size={180} bottom="-40px" left="-30px" color={T.steel} opacity={0.32} fill dur={18} delay={1} />
      <Diamond size={120} top="38%" left="38%" color={T.gold} opacity={0.7} dur={26} delay={2} />
      <Diamond size={70}  top="20%" left="20%" color={T.gold} opacity={0.45} fill dur={16} delay={0.5} />
      <Diamond size={40}  bottom="22%" right="25%" color={T.goldS} opacity={0.6} fill dur={12} />
      {/* horizon rule */}
      <div style={{ position: 'absolute', left: 0, right: 0, top: '50%', height: 1, background: 'rgba(201,176,127,0.45)' }} />
      <div style={{ position: 'absolute', left: 0, right: 0, top: 'calc(50% + 4px)', height: 1, background: 'rgba(201,176,127,0.25)' }} />
    </div>
  );
}

Object.assign(window, {
  T, TX, DICT, CONTACT, LangCtx, LangProvider, useLang,
  Reveal, Diamond, Slash, Counter, Kicker, ArchMark, Portrait, BrandMark,
});
