﻿// SOMUM — Shared tokens, copy, icons, components
// Refonte mai 2026 — basée sur le Business Strategy Report (Laurent Annet, déc. 2025)

// Cal.com booking links per persona
const SOMUM_BOOKING = {
  parents: 'https://cal.com/somumlux/appeldecouverte',
  ecoles: 'https://cal.com/somumlux/appel30min',
  entreprises: 'https://cal.com/somumlux/appel30min',
};
const SOMUM_BOOKING_URL = SOMUM_BOOKING.parents; // legacy alias

// Brand tokens — refreshed palette per brief
// Principal: Teal #095d6f · Accent: Cuivre/Rouge doux #f28c7a
const SOMUM_TOKENS = {
  cream: '#fcf9f5',
  creamSoft: '#f6f3ef',
  creamMed: '#f0ede9',
  creamDeep: '#eae8e4',
  ink: '#1c1c1a',
  inkSoft: '#3d4949',
  outline: '#bcc9c8',

  teal: '#095d6f',          // brief — principal
  tealDeep: '#064450',
  tealLight: '#1a7e91',
  tealPale: '#b8dde2',
  tealMist: '#dceff2',

  copper: '#f28c7a',         // brief — accent
  copperSoft: '#fbc7bc',
  copperMist: '#fde6df',
  copperDeep: '#c66751',

  // legacy aliases (still referenced by some pages)
  terracotta: '#c66751',
  terracottaSoft: '#f28c7a',
  terracottaPale: '#fbc7bc',
  terracottaMist: '#fde6df',
  paleBlue: '#b2c7dc',
  paleBlueDeep: '#4a5e70',
};

function _accentTriple(accent) {
  const T = SOMUM_TOKENS;
  if (accent === 'copper' || accent === 'terracotta') return { color: T.copperDeep, soft: T.copperMist, pale: T.copperSoft };
  if (accent === 'blue') return { color: T.paleBlueDeep, soft: '#dee7f0', pale: T.paleBlue };
  return { color: T.teal, soft: T.tealMist, pale: T.tealPale };
}

// Persona token — color, label
const PERSONAS = {
  parents:     { color: '#095d6f', soft: '#dceff2', label_fr: 'Parents',     label_en: 'Parents',     icon: '🏠' },
  ecoles:      { color: '#1f7a8c', soft: '#dde9ed', label_fr: 'Écoles',      label_en: 'Schools',     icon: '🏫' },
  entreprises: { color: '#c66751', soft: '#fde6df', label_fr: 'Entreprises', label_en: 'Companies',   icon: '🏢' },
};

// Stock photo URLs (kept for non-hero spots)
const STOCK = {
  portrait: 'assets/jennifer.jpg',
  conference: 'https://lh3.googleusercontent.com/aida-public/AB6AXuDmlFIsAuq1nmdMabSyljY7Mb5o3ynTMpI1EIBRYosfRRHS2qSWkUET_hi92m8mzW5buxRfKHKMIGcRC7LuOJVXaLSyLSqWg6sNPdvQnwD5QtKi53jix2WN1O7wuUUEfuHU087HoBcX2ElhC6X_Ar00O_M_YF3s43OZMWgoktVjZWMtnfeFxlA4--M4vwXx6sZypifK2Y3PSv1b41fc7KyuHBBxUN6w-kD0k0Y18Yma7dfVqU9z9jJaBN0ti-13Oy--22IaVb7jxQ',
  hero: 'https://images.unsplash.com/photo-1531983412531-1f49a365ffed?auto=format&fit=crop&w=1400&q=80',
  classroom: 'https://images.unsplash.com/photo-1503676260728-1c00da094a0b?auto=format&fit=crop&w=1400&q=80',
  office: 'https://images.unsplash.com/photo-1573497019940-1c28c88b4f3e?auto=format&fit=crop&w=1400&q=80',
  family: 'https://images.unsplash.com/photo-1609220136736-443140cffec6?auto=format&fit=crop&w=1400&q=80',
  // Blog imagery — neutral, on-brand
  blog1: 'https://images.unsplash.com/photo-1471107340929-a87cd0f5b5f3?auto=format&fit=crop&w=1200&q=80', // home / window light
  blog2: 'https://images.unsplash.com/photo-1577896851231-70ef18881754?auto=format&fit=crop&w=1200&q=80', // classroom / pencils
  blog3: 'https://images.unsplash.com/photo-1542744173-8e7e53415bb0?auto=format&fit=crop&w=1200&q=80', // office / collaboration
  blog4: 'https://images.unsplash.com/photo-1490645935967-10de6ba17061?auto=format&fit=crop&w=1200&q=80', // book / desk
  blog5: 'https://images.unsplash.com/photo-1455390582262-044cdead277a?auto=format&fit=crop&w=1200&q=80', // notebook
  blog6: 'https://images.unsplash.com/photo-1541959833400-049d37f98ccd?auto=format&fit=crop&w=1200&q=80', // family walk
};

const CLIENT_LOGOS = [
  { name: 'PwC', src: 'assets/logo-pwc.png' },
  { name: 'European Investment Bank', src: 'assets/logo-eib.jpg' },
  { name: 'IFEN', src: 'assets/logo-ifen.png' },
  { name: 'Eltereschoul', src: 'assets/logo-es.png' },
  { name: 'CPE', src: 'assets/logo-cpe.jpg' },
  { name: 'Schneider Electric', src: 'assets/logo-se.jpg' },
];

function LogoMark({ label, src, dark = false, height = 56 }) {
  if (src) {
    return (
      <div style={{ height, display: 'flex', alignItems: 'center', justifyContent: 'center', padding: '0 12px', flex: '0 0 auto' }} title={label}>
        <img src={src} alt={label} style={{ maxHeight: '100%', maxWidth: '100%', width: 'auto', objectFit: 'contain', opacity: dark ? 0.85 : 0.78, filter: dark ? 'brightness(1.2) contrast(0.9)' : 'none', mixBlendMode: dark ? 'screen' : 'multiply' }} />
      </div>
    );
  }
  return null;
}

const Icons = {
  arrow: (size = 18) => (<svg width={size} height={size} viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="1.6" strokeLinecap="round" strokeLinejoin="round"><line x1="5" y1="12" x2="19" y2="12" /><polyline points="13 6 19 12 13 18" /></svg>),
  arrowDown: (size = 18) => (<svg width={size} height={size} viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="1.6" strokeLinecap="round" strokeLinejoin="round"><line x1="12" y1="5" x2="12" y2="19" /><polyline points="6 13 12 19 18 13" /></svg>),
  download: (size = 18) => (<svg width={size} height={size} viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="1.6" strokeLinecap="round" strokeLinejoin="round"><path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"/><polyline points="7 10 12 15 17 10"/><line x1="12" y1="15" x2="12" y2="3"/></svg>),
  play: (size = 18) => (<svg width={size} height={size} viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="1.6" strokeLinecap="round" strokeLinejoin="round"><circle cx="12" cy="12" r="10" /><polygon points="10 8 16 12 10 16 10 8" fill="currentColor" stroke="none" /></svg>),
  spark: (size = 18) => (<svg width={size} height={size} viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="1.6" strokeLinecap="round" strokeLinejoin="round"><path d="M12 3 L13.5 9.5 L20 12 L13.5 14.5 L12 21 L10.5 14.5 L4 12 L10.5 9.5 Z" /></svg>),
  family: (size = 18) => (<svg width={size} height={size} viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="1.5" strokeLinecap="round" strokeLinejoin="round"><circle cx="8" cy="7" r="3" /><circle cx="16" cy="7" r="3" /><path d="M3 21v-2a4 4 0 0 1 4-4h2a4 4 0 0 1 4 4v2" /><path d="M13 21v-2a4 4 0 0 1 4-4h0a4 4 0 0 1 4 4v2" /></svg>),
  school: (size = 18) => (<svg width={size} height={size} viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="1.5" strokeLinecap="round" strokeLinejoin="round"><path d="M12 3 L2 9 L12 15 L22 9 Z" /><path d="M6 11v5c0 1.5 3 3 6 3s6-1.5 6-3v-5"/><line x1="22" y1="9" x2="22" y2="15"/></svg>),
  building: (size = 18) => (<svg width={size} height={size} viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="1.5" strokeLinecap="round" strokeLinejoin="round"><rect x="4" y="3" width="16" height="18" rx="1"/><line x1="8" y1="7" x2="8" y2="7"/><line x1="12" y1="7" x2="12" y2="7"/><line x1="16" y1="7" x2="16" y2="7"/><line x1="8" y1="11" x2="8" y2="11"/><line x1="12" y1="11" x2="12" y2="11"/><line x1="16" y1="11" x2="16" y2="11"/><line x1="10" y1="21" x2="10" y2="16"/><line x1="14" y1="21" x2="14" y2="16"/></svg>),
  compass: (size = 18) => (<svg width={size} height={size} viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="1.5" strokeLinecap="round" strokeLinejoin="round"><circle cx="12" cy="12" r="10" /><polygon points="16 8 14 14 8 16 10 10 16 8" /></svg>),
  group: (size = 18) => (<svg width={size} height={size} viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="1.5" strokeLinecap="round" strokeLinejoin="round"><circle cx="9" cy="9" r="3" /><circle cx="17" cy="10" r="2.5" /><path d="M3 19a6 6 0 0 1 12 0" /><path d="M14 17a5 5 0 0 1 7 2" /></svg>),
  mic: (size = 18) => (<svg width={size} height={size} viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="1.5" strokeLinecap="round" strokeLinejoin="round"><rect x="9" y="3" width="6" height="12" rx="3" /><path d="M5 11a7 7 0 0 0 14 0" /><line x1="12" y1="18" x2="12" y2="22" /></svg>),
  quote: (size = 24) => (<svg width={size} height={size} viewBox="0 0 24 24" fill="currentColor"><path d="M7 7h4v4H7c0 2 1 3 3 3v2c-3 0-5-2-5-5V7zm8 0h4v4h-4c0 2 1 3 3 3v2c-3 0-5-2-5-5V7z" /></svg>),
  check: (size = 18) => (<svg width={size} height={size} viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round"><polyline points="20 6 9 17 4 12"/></svg>),
  star: (size = 14) => (<svg width={size} height={size} viewBox="0 0 24 24" fill="currentColor"><polygon points="12,2 15,9 22,9 17,14 19,21 12,17 5,21 7,14 2,9 9,9"/></svg>),
  heart: (size = 18) => (<svg width={size} height={size} viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="1.5" strokeLinecap="round" strokeLinejoin="round"><path d="M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z"/></svg>),
  handshake: (size = 18) => (<svg width={size} height={size} viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="1.5" strokeLinecap="round" strokeLinejoin="round"><path d="M11 17a3 3 0 0 0 4.24 0l3.54-3.54a3 3 0 0 0 0-4.24L15 5.46a3 3 0 0 0-4.24 0L9 7.22 11 9.22m-7 3l5 5"/><path d="M3 12l4-4 5 5-4 4z"/></svg>),
  scale: (size = 18) => (<svg width={size} height={size} viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="1.5" strokeLinecap="round" strokeLinejoin="round"><line x1="12" y1="3" x2="12" y2="21"/><path d="M5 8l-3 6h6z"/><path d="M19 8l-3 6h6z"/><line x1="5" y1="8" x2="19" y2="8"/><line x1="8" y1="21" x2="16" y2="21"/></svg>),
};

// ─────────────────────────────────────────────────────────────────────────────
// COPY — fr / en — every page driven by a single source
// ─────────────────────────────────────────────────────────────────────────────

const NAV_FR = [
  { label: 'Accueil', href: 'index.html' },
  { label: 'Parents', href: 'parents.html' },
  { label: 'Écoles', href: 'ecoles.html' },
  { label: 'Entreprises', href: 'entreprises.html' },
  { label: 'La méthode', href: 'methode.html' },
  { label: 'À propos', href: 'about.html' },
  { label: 'Blog', href: 'blog.html' },
  { label: 'Contact', href: 'contact.html' },
];
const NAV_EN = [
  { label: 'Home', href: 'index.html' },
  { label: 'Parents', href: 'parents.html' },
  { label: 'Schools', href: 'ecoles.html' },
  { label: 'Companies', href: 'entreprises.html' },
  { label: 'The method', href: 'methode.html' },
  { label: 'About', href: 'about.html' },
  { label: 'Journal', href: 'blog.html' },
  { label: 'Contact', href: 'contact.html' },
];

const COPY = {
  fr: {
    nav: NAV_FR,
    cta: 'Appel découverte',
    brand: 'SOMUM',
    tagline: 'Mieux comprendre. Mieux communiquer. Mieux coopérer.',
    signature: 'SOMUM accompagne les adultes à transformer leurs relations — à la maison, à l\'école et au travail — grâce à la Discipline Positive, une approche qui favorise le respect, la coopération et l\'épanouissement de chacun.',
    footerTag: 'Coaching, formations & conférences en Discipline Positive — Luxembourg, Grand-Est, Bruxelles & Wallonie.',
    contact: { email: 'somumlux@gmail.com', phone: '+352 691 621 981', zones: 'Luxembourg · Grand-Est · Bruxelles · Wallonie' },
  },
  en: {
    nav: NAV_EN,
    cta: 'Discovery call',
    brand: 'SOMUM',
    tagline: 'Understand better. Communicate better. Cooperate better.',
    signature: 'SOMUM helps adults transform their relationships — at home, at school and at work — through Positive Discipline, an approach that fosters respect, cooperation and personal growth.',
    footerTag: 'Coaching, training & talks in Positive Discipline — Luxembourg, Grand-Est, Brussels & Wallonia.',
    contact: { email: 'somumlux@gmail.com', phone: '+352 691 621 981', zones: 'Luxembourg · Grand-Est · Brussels · Wallonia' },
  },
};

// Per-persona content blocks
const PERSONA_COPY = {
  fr: {
    parents: {
      kicker: '🏠 Parents',
      promise: 'Retrouver la sérénité au quotidien.',
      pains: ['Conflits, cris, tensions à la maison', 'Culpabilité et épuisement', 'Ne pas savoir quoi faire face aux comportements difficiles', 'Peur de reproduire des schémas non souhaités'],
      benefits: ['Apaiser le quotidien et accompagner ses enfants avec respect', 'Outils concrets, applicables dès le lendemain', 'Méthode douce ET structurée — Discipline Positive©'],
      offers: [
        { t: 'Coaching individuel', d: 'Sessions en ligne ou en présentiel — pour parents seuls ou en couple.', price: 'dès 110€ / séance' },
        { t: 'Ateliers parents', d: 'Petits groupes de 6 à 8 parents · 6 séances thématiques.', price: 'calendrier mensuel' },
      ],
      ctaPrimary: 'Réserver mon appel découverte',
      ctaSecondary: 'Télécharger le Starter Kit',
      leadMagnet: 'Starter Kit Discipline Positive',
      leadMagnetDesc: 'Une checklist + 5 outils concrets pour transformer le climat à la maison dès cette semaine.',
    },
    ecoles: {
      kicker: '🏫 Écoles',
      promise: 'Transformer le climat scolaire.',
      pains: ['Climat scolaire tendu, élèves démotivés', 'Enseignants épuisés, sentiment d\'impuissance', 'Manque d\'outils concrets et efficaces', 'Résistance au changement dans les équipes'],
      benefits: ['Pédagogie coopérative et structurée', 'Méthode éprouvée et scientifique — Discipline Positive', 'Résultats mesurables sur le comportement et l\'engagement'],
      offers: [
        { t: 'Conférences de sensibilisation', d: 'Format 1h30 ou 2h — équipe pédagogique ou parents d\'élèves.', price: 'sur devis' },
        { t: 'Formations d\'équipe', d: 'Cycle 2 ou 3 jours — outils de gestion de classe positive.', price: 'sur devis' },
        { t: 'Accompagnement annuel', d: 'Suivi sur l\'année scolaire avec coaching d\'équipe et supervision.', price: 'sur devis' },
      ],
      ctaPrimary: 'Télécharger le dossier Climat Scolaire',
      ctaSecondary: 'Prendre un RDV découverte',
      leadMagnet: 'Climat Scolaire Apaisé — guide direction',
      leadMagnetDesc: 'Le dossier qui présente le programme complet, les références (IFEN, écoles luxembourgeoises) et les premiers outils de gestion de classe positive.',
    },
    entreprises: {
      kicker: '🏢 Entreprises',
      promise: 'Développer un leadership coopératif.',
      pains: ['Manque d\'engagement, tensions en équipe', 'Managers sous pression, communication difficile', 'Absentéisme et turnover qui montent', 'Formations trop théoriques, sans impact réel'],
      benefits: ['Leadership humain qui renforce l\'engagement', 'Approche pragmatique — outils applicables immédiatement', 'Références : PwC, BEI, Schneider Electric'],
      offers: [
        { t: 'Conférences en entreprise', d: 'Sensibilisation managers ou tout-public — 1h à 2h, en présentiel ou hybride.', price: 'sur devis' },
        { t: 'Programme Leadership Humain', d: 'Cycle de 6 à 10 semaines — managers et équipes RH.', price: 'sur devis' },
        { t: 'Atelier pilote', d: 'Demi-journée d\'expérimentation pour tester l\'approche avec votre équipe.', price: 'sur devis' },
      ],
      ctaPrimary: 'Diagnostic RH gratuit (30 min)',
      ctaSecondary: 'Voir nos programmes entreprise',
      leadMagnet: 'Leadership Coopératif — Toolkit RH',
      leadMagnetDesc: 'Un toolkit RH avec 8 outils concrets pour accompagner vos managers : entretiens difficiles, feedback constructif, gestion de conflits.',
    },
  },
  en: {
    parents: {
      kicker: '🏠 Parents',
      promise: 'Bring calm back to daily life.',
      pains: ['Conflicts, shouting, tension at home', 'Guilt and exhaustion', 'Not knowing how to react to difficult behaviour', 'Fear of repeating unwanted patterns'],
      benefits: ['Calm daily life — guide your children with respect', 'Concrete tools you can use the next day', 'Gentle AND structured method — Positive Discipline©'],
      offers: [
        { t: 'Individual coaching', d: 'Online or in-person — for solo parents or couples.', price: 'from €110 / session' },
        { t: 'Parent workshops', d: 'Small groups of 6–8 parents · 6 themed sessions.', price: 'monthly schedule' },
      ],
      ctaPrimary: 'Book my discovery call',
      ctaSecondary: 'Download the Starter Kit',
      leadMagnet: 'Positive Discipline Starter Kit',
      leadMagnetDesc: 'A checklist + 5 concrete tools to transform your home this week.',
    },
    ecoles: {
      kicker: '🏫 Schools',
      promise: 'Transform the school climate.',
      pains: ['Tense climate, disengaged students', 'Exhausted teachers, sense of helplessness', 'No concrete, effective tools', 'Resistance to change in teams'],
      benefits: ['Cooperative, structured pedagogy', 'Evidence-based method — Positive Discipline', 'Measurable results on behaviour and engagement'],
      offers: [
        { t: 'Awareness talks', d: '1h30 or 2h — for teaching teams or parents.', price: 'on request' },
        { t: 'Team training', d: '2 or 3-day cycle — positive classroom management.', price: 'on request' },
        { t: 'Year-long support', d: 'School-year coaching with team supervision.', price: 'on request' },
      ],
      ctaPrimary: 'Download the School Climate brief',
      ctaSecondary: 'Book a discovery call',
      leadMagnet: 'Calm School Climate — director\'s brief',
      leadMagnetDesc: 'The full programme, references (IFEN, Luxembourg schools) and first positive classroom management tools.',
    },
    entreprises: {
      kicker: '🏢 Companies',
      promise: 'Build cooperative leadership.',
      pains: ['Low engagement, tensions in teams', 'Managers under pressure, hard conversations', 'Rising absenteeism and turnover', 'Training that is too theoretical, no real impact'],
      benefits: ['Human leadership that strengthens engagement', 'Pragmatic approach — tools you can apply now', 'References: PwC, EIB, Schneider Electric'],
      offers: [
        { t: 'Company talks', d: 'Awareness for managers or all-staff — 1h to 2h, in person or hybrid.', price: 'on request' },
        { t: 'Human Leadership programme', d: '6 to 10-week cycle — managers and HR teams.', price: 'on request' },
        { t: 'Pilot workshop', d: 'Half-day experiment to test the approach with your team.', price: 'on request' },
      ],
      ctaPrimary: 'Free HR diagnostic (30 min)',
      ctaSecondary: 'See our corporate programmes',
      leadMagnet: 'Cooperative Leadership — HR Toolkit',
      leadMagnetDesc: 'An HR toolkit with 8 concrete tools to coach your managers: difficult conversations, constructive feedback, conflict management.',
    },
  },
};

// Testimonials — 1 per persona minimum, mix to taste on homepage
const TESTIMONIALS = {
  fr: [
    { p: 'parents',     q: 'Une approche structurée, sans jugement, qui a réellement changé notre quotidien. Mes enfants l\'ont senti avant même que j\'ouvre la bouche.', a: 'Camille L.', r: 'Maman de deux enfants', city: 'Luxembourg' },
    { p: 'parents',     q: 'J\'ai retrouvé l\'autorité tranquille dont je manquais. Trois mois plus tard, c\'est toute la dynamique familiale qui a basculé.', a: 'Olivier B.', r: 'Père de trois enfants', city: 'Bruxelles' },
    { p: 'ecoles',      q: 'Les enseignants en parlent encore six mois plus tard. Les outils sont devenus partie intégrante de la culture de l\'école.', a: 'Patricia M.', r: 'Directrice d\'école primaire', city: 'Luxembourg' },
    { p: 'ecoles',      q: 'Concrète, posée, jamais moralisatrice. Une formation qui a réellement changé notre façon d\'aborder les situations difficiles en classe.', a: 'Thomas D.', r: 'Enseignant cycle 4', city: 'Esch-sur-Alzette' },
    { p: 'entreprises', q: 'Sandrine intervient chez nous deux fois par an. Nos collaborateurs lui font une confiance absolue et les retours sont systématiquement excellents.', a: 'Marie D.', r: 'DRH', city: 'Luxembourg' },
    { p: 'entreprises', q: 'Un programme qui transforme vraiment la posture managériale. Nos managers en parlent encore comme du déclic de l\'année.', a: 'Sophie K.', r: 'Head of People', city: 'Luxembourg' },
  ],
  en: [
    { p: 'parents',     q: 'A structured, non-judgmental approach that genuinely changed our daily life. My children felt it before I even spoke.', a: 'Camille L.', r: 'Mother of two', city: 'Luxembourg' },
    { p: 'parents',     q: 'I found the quiet authority I was missing. Three months later, the entire family dynamic had shifted.', a: 'Olivier B.', r: 'Father of three', city: 'Brussels' },
    { p: 'ecoles',      q: 'Teachers still talk about it six months later. The tools are now part of the school\'s culture.', a: 'Patricia M.', r: 'Primary school director', city: 'Luxembourg' },
    { p: 'ecoles',      q: 'Concrete, grounded, never preachy. A training that genuinely changed how we handle difficult moments in class.', a: 'Thomas D.', r: 'Cycle-4 teacher', city: 'Esch-sur-Alzette' },
    { p: 'entreprises', q: 'Jennifer runs sessions for us twice a year. Our staff trust her completely and feedback is consistently excellent.', a: 'Marie D.', r: 'Head of HR', city: 'Luxembourg' },
    { p: 'entreprises', q: 'A programme that truly shifts the managerial posture. Our managers still talk about it as the breakthrough of the year.', a: 'Sophie K.', r: 'Head of People', city: 'Luxembourg' },
  ],
};

function useIsMobile(bp = 768) {
  const [m, setM] = React.useState(typeof window !== 'undefined' ? window.innerWidth < bp : false);
  React.useEffect(() => {
    const h = () => setM(window.innerWidth < bp);
    window.addEventListener('resize', h);
    return () => window.removeEventListener('resize', h);
  }, [bp]);
  return m;
}

Object.assign(window, {
  SOMUM_TOKENS, SOMUM_BOOKING, SOMUM_BOOKING_URL,
  PERSONAS, STOCK, CLIENT_LOGOS, LogoMark, Icons,
  COPY, PERSONA_COPY, TESTIMONIALS, _accentTriple, useIsMobile,
});
