/* Sommité website — sections + i18n. Reads primitives from window. Photo-hero variant. */

const LOGO_FULL = 'assets/logo/sommite-logo-full.png';
const BEELDMERK = 'assets/logo/sommite-beeldmerk.png';
const HERO_PHOTO = 'assets/hero-terras.jpg';
const HERO_VIDEO = 'assets/hero-video.mp4';
const PORTRET = 'assets/dinand-cv.png';

/* ============================================================
   Translations
   ============================================================ */
const T = {
  NL: {
    nav: { diensten: 'Diensten', over: 'Over mij', contact: 'Contact' },
    hero: {
      eyebrow: 'Sommité Information Systems',
      l1a: 'Software die ', l1em: 'werkt.', l2a: 'Advies waar je wat aan ', l2em: 'hebt.',
      sub: 'Maatwerk development, IT-architectuur en onafhankelijk advies voor bedrijven die software willen zonder gedoe.',
      ctaPrimary: 'Bekijk diensten', ctaSecondary: 'Neem contact op',
      stats: [
        ['Eén aanspreekpunt', 'Je werkt rechtstreeks met Dinand'],
        ['Zonder verkooppraatje', 'Eerlijk, onafhankelijk advies'],
        ['Beschikbaar op afroep', 'Backup developer wanneer nodig'],
      ],
    },
    services: {
      eyebrow: 'Wat ik doe', title: 'Drie manieren om te helpen',
      sub: 'Afhankelijk van wat je nodig hebt, werk ik als developer, architect, adviseur of tijdelijke vervanger.',
      cards: [
        { title: 'Development & Architecture', link: 'Meer weten', body: 'Maatwerk software, ERP-systemen en -uitbreidingen, machine-integraties (OPC.UA/PLC), data warehouses en webshops met ERP-koppeling. Voor bedrijven die hun processen willen automatiseren of hun systemen willen laten samenwerken.' },
        { title: 'ONDRNMR', link: 'ondrnmr.nl', body: 'Onafhankelijk IT-advies voor MKB-ondernemers. Je krijgt een helder beeld van je situatie, concrete aanbevelingen en iemand die meekijkt — zonder verkooppraatje. Via ondrnmr.nl.' },
        { title: 'Backup Ontwikkelaar', link: 'Meer weten', body: 'Je vaste developer is ziek, op vakantie of vertrekt. Ik spring in, leer je codebase snel kennen en zorg dat de continuïteit gewaarborgd blijft. Beschikbaar op afroep.' },
      ],
    },
    about: {
      eyebrow: 'Over mij', title: 'Eén aanspreekpunt, geen gedoe',
      p1: 'Ik ben Dinand Veldman. Al jaren bouw ik software die in de praktijk moet werken — van ERP-koppelingen en machine-integraties tot data warehouses. Geen dikke rapporten of verkooppraatjes, maar concrete oplossingen en eerlijk advies waar je echt iets aan hebt.',
      p2: 'Je werkt rechtstreeks met mij. Korte lijnen, snelle reacties en iemand die meedenkt over je proces in plaats van alleen je opdracht.',
      tags: ['Maatwerk development', 'IT-architectuur', 'OPC.UA / PLC', 'Data warehouses', 'Webshop + ERP'],
      badge: 'Beschikbaar op afroep',
    },
    contact: {
      eyebrow: 'Contact', title: 'Even sparren?',
      sub: 'Vertel kort waar je mee zit. Ik denk vrijblijvend mee en reageer meestal binnen één werkdag.',
      location: 'Nederland',
      name: 'Naam', namePh: 'Jouw naam', email: 'E-mail', emailPh: 'jij@bedrijf.nl',
      message: 'Bericht', messagePh: 'Vertel kort over je project…', send: 'Verstuur bericht',
      sentTitle: 'Bericht verzonden', sentBody: 'Dank je — ik neem snel contact met je op.',
    },
    footer: { tagline: 'Software die werkt. Advies waar je wat aan hebt. Maatwerk development en onafhankelijk IT-advies — zonder gedoe.', menu: 'Menu', more: 'Meer' },
  },

  EN: {
    nav: { diensten: 'Services', over: 'About', contact: 'Contact' },
    hero: {
      eyebrow: 'Sommité Information Systems',
      l1a: 'Software that ', l1em: 'works.', l2a: 'Advice you can actually ', l2em: 'use.',
      sub: 'Custom development, IT architecture and independent advice for companies that want software without the hassle.',
      ctaPrimary: 'View services', ctaSecondary: 'Get in touch',
      stats: [
        ['One point of contact', 'You work directly with Dinand'],
        ['No sales pitch', 'Honest, independent advice'],
        ['Available on call', 'Backup developer when needed'],
      ],
    },
    services: {
      eyebrow: 'What I do', title: 'Three ways to help',
      sub: 'Depending on what you need, I work as a developer, architect, advisor or temporary stand-in.',
      cards: [
        { title: 'Development & Architecture', link: 'Learn more', body: 'Custom software, ERP systems and extensions, machine integrations (OPC.UA/PLC), data warehouses and webshops with ERP integration. For companies that want to automate their processes or make their systems work together.' },
        { title: 'ONDRNMR', link: 'ondrnmr.nl', body: 'Independent IT advice for SME entrepreneurs. You get a clear picture of your situation, concrete recommendations and someone who thinks along — without a sales pitch. Via ondrnmr.nl.' },
        { title: 'Backup Developer', link: 'Learn more', body: 'Your regular developer is ill, on holiday or leaving. I step in, get to know your codebase quickly and keep continuity going. Available on call.' },
      ],
    },
    about: {
      eyebrow: 'About me', title: 'One point of contact, no hassle',
      p1: "I'm Dinand Veldman. For years I've built software that has to work in practice — from ERP integrations and machine integrations to data warehouses. No thick reports or sales pitches, but concrete solutions and honest advice you can actually use.",
      p2: 'You work directly with me. Short lines, quick responses and someone who thinks along about your process instead of just your assignment.',
      tags: ['Custom development', 'IT architecture', 'OPC.UA / PLC', 'Data warehouses', 'Webshop + ERP'],
      badge: 'Available on call',
    },
    contact: {
      eyebrow: 'Contact', title: 'Want to spar?',
      sub: "Tell me briefly what you're dealing with. I'll think along, no obligations, and usually respond within one working day.",
      location: 'Netherlands',
      name: 'Name', namePh: 'Your name', email: 'Email', emailPh: 'you@company.com',
      message: 'Message', messagePh: 'Tell me briefly about your project…', send: 'Send message',
      sentTitle: 'Message sent', sentBody: "Thanks — I'll get back to you soon.",
    },
    footer: { tagline: 'Software that works. Advice you can actually use. Custom development and independent IT advice — without the hassle.', menu: 'Menu', more: 'More' },
  },

  DE: {
    nav: { diensten: 'Leistungen', over: 'Über mich', contact: 'Kontakt' },
    hero: {
      eyebrow: 'Sommité Information Systems',
      l1a: 'Software, die ', l1em: 'funktioniert.', l2a: 'Beratung, die dir wirklich ', l2em: 'hilft.',
      sub: 'Maßgeschneiderte Entwicklung, IT-Architektur und unabhängige Beratung für Unternehmen, die Software ohne Aufwand wollen.',
      ctaPrimary: 'Leistungen ansehen', ctaSecondary: 'Kontakt aufnehmen',
      stats: [
        ['Ein Ansprechpartner', 'Du arbeitest direkt mit Dinand'],
        ['Ohne Verkaufsgespräch', 'Ehrliche, unabhängige Beratung'],
        ['Auf Abruf verfügbar', 'Backup-Entwickler bei Bedarf'],
      ],
    },
    services: {
      eyebrow: 'Was ich mache', title: 'Drei Arten zu helfen',
      sub: 'Je nachdem, was du brauchst, arbeite ich als Entwickler, Architekt, Berater oder temporäre Vertretung.',
      cards: [
        { title: 'Development & Architecture', link: 'Mehr erfahren', body: 'Maßgeschneiderte Software, ERP-Systeme und -Erweiterungen, Maschinenintegrationen (OPC.UA/PLC), Data Warehouses und Webshops mit ERP-Anbindung. Für Unternehmen, die ihre Prozesse automatisieren oder ihre Systeme zusammenarbeiten lassen wollen.' },
        { title: 'ONDRNMR', link: 'ondrnmr.nl', body: 'Unabhängige IT-Beratung für KMU-Unternehmer. Du bekommst ein klares Bild deiner Situation, konkrete Empfehlungen und jemanden, der mitdenkt — ohne Verkaufsgespräch. Über ondrnmr.nl.' },
        { title: 'Backup-Entwickler', link: 'Mehr erfahren', body: 'Dein fester Entwickler ist krank, im Urlaub oder geht. Ich springe ein, lerne deine Codebase schnell kennen und sorge dafür, dass die Kontinuität gewahrt bleibt. Auf Abruf verfügbar.' },
      ],
    },
    about: {
      eyebrow: 'Über mich', title: 'Ein Ansprechpartner, kein Aufwand',
      p1: 'Ich bin Dinand Veldman. Seit Jahren baue ich Software, die in der Praxis funktionieren muss — von ERP-Anbindungen und Maschinenintegrationen bis zu Data Warehouses. Keine dicken Berichte oder Verkaufsgespräche, sondern konkrete Lösungen und ehrliche Beratung, die dir wirklich hilft.',
      p2: 'Du arbeitest direkt mit mir. Kurze Wege, schnelle Reaktionen und jemand, der über deinen Prozess mitdenkt, statt nur deinen Auftrag abzuarbeiten.',
      tags: ['Maßgeschneiderte Entwicklung', 'IT-Architektur', 'OPC.UA / PLC', 'Data Warehouses', 'Webshop + ERP'],
      badge: 'Auf Abruf verfügbar',
    },
    contact: {
      eyebrow: 'Kontakt', title: 'Kurz austauschen?',
      sub: 'Erzähl mir kurz, worum es geht. Ich denke unverbindlich mit und antworte meist innerhalb eines Werktags.',
      location: 'Niederlande',
      name: 'Name', namePh: 'Dein Name', email: 'E-Mail', emailPh: 'du@firma.de',
      message: 'Nachricht', messagePh: 'Erzähl kurz von deinem Projekt…', send: 'Nachricht senden',
      sentTitle: 'Nachricht gesendet', sentBody: 'Danke — ich melde mich bald bei dir.',
    },
    footer: { tagline: 'Software, die funktioniert. Beratung, die dir wirklich hilft. Maßgeschneiderte Entwicklung und unabhängige IT-Beratung — ohne Aufwand.', menu: 'Menü', more: 'Mehr' },
  },

  NO: {
    nav: { diensten: 'Tjenester', over: 'Om meg', contact: 'Kontakt' },
    hero: {
      eyebrow: 'Sommité Information Systems',
      l1a: 'Programvare som ', l1em: 'funker.', l2a: 'Råd du faktisk har ', l2em: 'nytte av.',
      sub: 'Skreddersydd utvikling, IT-arkitektur og uavhengig rådgivning for bedrifter som vil ha programvare uten styr.',
      ctaPrimary: 'Se tjenester', ctaSecondary: 'Ta kontakt',
      stats: [
        ['Ett kontaktpunkt', 'Du jobber direkte med Dinand'],
        ['Uten salgsprat', 'Ærlig, uavhengig rådgivning'],
        ['Tilgjengelig ved behov', 'Backup-utvikler når du trenger det'],
      ],
    },
    services: {
      eyebrow: 'Det jeg gjør', title: 'Tre måter å hjelpe på',
      sub: 'Avhengig av hva du trenger, jobber jeg som utvikler, arkitekt, rådgiver eller midlertidig vikar.',
      cards: [
        { title: 'Development & Architecture', link: 'Les mer', body: 'Skreddersydd programvare, ERP-systemer og -utvidelser, maskinintegrasjoner (OPC.UA/PLC), datavarehus og nettbutikker med ERP-kobling. For bedrifter som vil automatisere prosessene sine eller få systemene til å samarbeide.' },
        { title: 'ONDRNMR', link: 'ondrnmr.nl', body: 'Uavhengig IT-rådgivning for SMB-bedrifter. Du får et klart bilde av situasjonen din, konkrete anbefalinger og noen som tenker med — uten salgsprat. Via ondrnmr.nl.' },
        { title: 'Backup-utvikler', link: 'Les mer', body: 'Den faste utvikleren din er syk, på ferie eller slutter. Jeg hopper inn, blir raskt kjent med kodebasen din og sørger for at kontinuiteten opprettholdes. Tilgjengelig ved behov.' },
      ],
    },
    about: {
      eyebrow: 'Om meg', title: 'Ett kontaktpunkt, uten styr',
      p1: 'Jeg er Dinand Veldman. I årevis har jeg bygget programvare som må fungere i praksis — fra ERP-koblinger og maskinintegrasjoner til datavarehus. Ingen tykke rapporter eller salgsprat, men konkrete løsninger og ærlige råd du faktisk har nytte av.',
      p2: 'Du jobber direkte med meg. Korte linjer, raske svar og noen som tenker med på prosessen din i stedet for bare oppdraget.',
      tags: ['Skreddersydd utvikling', 'IT-arkitektur', 'OPC.UA / PLC', 'Datavarehus', 'Nettbutikk + ERP'],
      badge: 'Tilgjengelig ved behov',
    },
    contact: {
      eyebrow: 'Kontakt', title: 'Slå av en prat?',
      sub: 'Fortell kort hva du står overfor. Jeg tenker med uforpliktende og svarer vanligvis innen én virkedag.',
      location: 'Nederland',
      name: 'Navn', namePh: 'Navnet ditt', email: 'E-post', emailPh: 'deg@bedrift.no',
      message: 'Melding', messagePh: 'Fortell kort om prosjektet ditt…', send: 'Send melding',
      sentTitle: 'Melding sendt', sentBody: 'Takk — jeg tar snart kontakt med deg.',
    },
    footer: { tagline: 'Programvare som funker. Råd du faktisk har nytte av. Skreddersydd utvikling og uavhengig IT-rådgivning — uten styr.', menu: 'Meny', more: 'Mer' },
  },
};

/* ---------------- Header ---------------- */
function SiteHeader({ onNav, lang, setLang, t }) {
  const langs = ['NL', 'EN', 'DE', 'NO'];
  const links = [
    { id: 'diensten', label: t.nav.diensten },
    { id: 'over', label: t.nav.over },
    { id: 'contact', label: t.nav.contact },
  ];
  return (
    <header style={{
      position: 'sticky', top: 0, zIndex: 100,
      background: 'rgba(255,255,255,0.85)', backdropFilter: 'blur(10px)',
      borderBottom: '1px solid var(--border-subtle)',
    }}>
      <div style={{
        maxWidth: 'var(--container-xl)', margin: '0 auto', padding: '0 var(--space-6)',
        height: 72, display: 'flex', alignItems: 'center', gap: 'var(--space-6)',
      }}>
        <a href="#top" onClick={(e) => { e.preventDefault(); onNav('top'); }} style={{ display: 'flex', alignItems: 'center' }}>
          <img src={LOGO_FULL} alt="Sommité Information Systems" style={{ height: 34, width: 'auto' }} />
        </a>
        <nav style={{ marginLeft: 'auto', display: 'flex', gap: 'var(--space-5)' }} className="desktop-nav">
          {links.map((l) => (
            <a key={l.id} href={'#' + l.id} onClick={(e) => { e.preventDefault(); onNav(l.id); }}
              style={{ fontFamily: 'var(--font-body)', fontSize: 'var(--text-md)', fontWeight: 600, color: 'var(--text-body)', textDecoration: 'none' }}>
              {l.label}
            </a>
          ))}
        </nav>
        <div className="lang-switch" style={{ marginLeft: 'auto', display: 'flex', alignItems: 'center', gap: 2, padding: 3, background: 'var(--surface-sunken)', borderRadius: 'var(--radius-pill)' }}>
          {langs.map((lg) => (
            <button key={lg} onClick={() => setLang(lg)} style={{
              border: 'none', cursor: 'pointer', borderRadius: 'var(--radius-pill)',
              padding: '4px 10px', fontFamily: 'var(--font-body)', fontSize: 'var(--text-xs)', fontWeight: 700,
              background: lang === lg ? 'var(--brand)' : 'transparent',
              color: lang === lg ? '#fff' : 'var(--text-muted)',
            }}>{lg}</button>
          ))}
        </div>
      </div>
    </header>
  );
}

/* ---------------- Hero (photo) ---------------- */
function Hero({ onNav, t }) {
  const h = t.hero;
  return (
    <section id="top" style={{ position: 'relative', overflow: 'hidden', background: 'var(--ink)' }}>
      {/* Video */}
      <video src={HERO_VIDEO} autoPlay loop muted playsInline poster={HERO_PHOTO}
        style={{ position: 'absolute', inset: 0, width: '100%', height: '100%', objectFit: 'cover', objectPosition: 'center 38%' }} />
      {/* Legibility gradients */}
      <div style={{ position: 'absolute', inset: 0, background: 'linear-gradient(100deg, rgba(20,24,28,0.92) 0%, rgba(20,24,28,0.78) 34%, rgba(20,24,28,0.36) 60%, rgba(20,24,28,0.08) 100%)' }} />
      <div style={{ position: 'absolute', inset: 0, background: 'linear-gradient(180deg, rgba(20,24,28,0.30) 0%, transparent 24%, transparent 70%, rgba(20,24,28,0.55) 100%)' }} />
      {/* Content */}
      <div className="hero-inner" style={{
        position: 'relative', zIndex: 2, maxWidth: 'var(--container-xl)', margin: '0 auto',
        padding: '150px var(--space-6) 110px', minHeight: 'min(82vh, 720px)',
        display: 'flex', flexDirection: 'column', justifyContent: 'center',
      }}>
        <div style={{ maxWidth: 720 }}>
          <div style={{ display: 'inline-flex', alignItems: 'center', gap: 8, marginBottom: 'var(--space-5)' }}>
            <span style={{ width: 8, height: 8, borderRadius: '50%', background: 'var(--blue-400)', boxShadow: '0 0 0 4px rgba(82,151,211,0.25)' }} />
            <span style={{ fontFamily: 'var(--font-body)', fontSize: 'var(--text-sm)', fontWeight: 700, letterSpacing: 'var(--tracking-caps)', textTransform: 'uppercase', color: 'rgba(255,255,255,0.85)' }}>
              {h.eyebrow}
            </span>
          </div>
          <h1 className="hero-h1" style={{
            fontFamily: 'var(--font-display)', fontSize: 'clamp(44px, 5.4vw, 76px)', lineHeight: 1.04,
            letterSpacing: 'var(--tracking-tight)', color: '#fff', margin: '0 0 var(--space-5)', textWrap: 'balance',
          }}>
            {h.l1a}<em style={{ fontStyle: 'italic', color: 'var(--blue-300)' }}>{h.l1em}</em><br />
            {h.l2a}<em style={{ fontStyle: 'italic', color: 'var(--blue-300)' }}>{h.l2em}</em>
          </h1>
          <p style={{
            fontFamily: 'var(--font-body)', fontSize: 'clamp(17px, 1.5vw, 21px)', lineHeight: 1.55,
            color: 'rgba(255,255,255,0.86)', fontWeight: 400, maxWidth: 560, margin: '0 0 var(--space-7)',
          }}>
            {h.sub}
          </p>
          <div style={{ display: 'flex', gap: 'var(--space-3)', flexWrap: 'wrap' }}>
            <Button variant="primary" size="lg" iconRight="arrow-right" onClick={() => onNav('diensten')}>{h.ctaPrimary}</Button>
            <Button variant="inverse" size="lg" onClick={() => onNav('contact')}>{h.ctaSecondary}</Button>
          </div>
          <div className="hero-stats" style={{ display: 'flex', gap: 'var(--space-8)', marginTop: 'var(--space-9)' }}>
            {h.stats.map(([title, s]) => (
              <div key={title} style={{ maxWidth: 200 }}>
                <div style={{ fontFamily: 'var(--font-display)', fontSize: 'var(--text-lg)', fontWeight: 700, color: '#fff', letterSpacing: 'var(--tracking-tight)', marginBottom: 4 }}>{title}</div>
                <div style={{ fontFamily: 'var(--font-body)', fontSize: 'var(--text-sm)', color: 'rgba(255,255,255,0.66)', lineHeight: 1.45 }}>{s}</div>
              </div>
            ))}
          </div>
        </div>
      </div>
    </section>
  );
}

/* ---------------- Services ---------------- */
function Services({ t }) {
  const s = t.services;
  const hrefs = ['#contact', 'https://ondrnmr.nl', '#contact'];
  const emojis = ['⚙️', '🧭', '🆘'];
  return (
    <section id="diensten" style={{ padding: 'var(--space-11) var(--space-6)', background: 'var(--surface-page)' }}>
      <div style={{ maxWidth: 'var(--container-lg)', margin: '0 auto' }}>
        <div style={{ textAlign: 'center', maxWidth: 640, margin: '0 auto var(--space-8)' }}>
          <div className="eyebrow" style={{ marginBottom: 'var(--space-3)' }}>{s.eyebrow}</div>
          <h2 style={{ fontSize: 'var(--text-3xl)', margin: '0 0 var(--space-3)' }}>{s.title}</h2>
          <p style={{ fontSize: 'var(--text-lg)', color: 'var(--text-muted)', margin: 0 }}>{s.sub}</p>
        </div>
        <div style={{ display: 'grid', gridTemplateColumns: 'repeat(3, 1fr)', gap: 'var(--space-5)' }} className="services-grid">
          {s.cards.map((c, i) => (
            <ServiceCard key={i} emoji={emojis[i]} title={c.title} linkLabel={c.link} href={hrefs[i]}>
              {c.body}
            </ServiceCard>
          ))}
        </div>
      </div>
    </section>
  );
}

/* ---------------- About ---------------- */
function About({ t }) {
  const a = t.about;
  const tagIcons = ['code', 'network', 'cpu', 'database', 'shopping-cart'];
  return (
    <section id="over" style={{ padding: 'var(--space-11) var(--space-6)', background: 'var(--surface-card)' }}>
      <div style={{ maxWidth: 'var(--container-lg)', margin: '0 auto', display: 'grid', gridTemplateColumns: '380px 1fr', gap: 'var(--space-9)', alignItems: 'center' }} className="about-grid">
        <div style={{
          aspectRatio: '2 / 3', borderRadius: 'var(--radius-xl)', overflow: 'hidden',
          background: 'var(--surface-sunken)', border: '1px solid var(--border-subtle)',
          boxShadow: 'var(--shadow-md)',
        }}>
          <img src={PORTRET} alt="Dinand Veldman — Mijn CV" style={{ width: '100%', height: '100%', objectFit: 'cover', display: 'block' }} />
        </div>
        <div>
          <div className="eyebrow" style={{ marginBottom: 'var(--space-3)' }}>{a.eyebrow}</div>
          <h2 style={{ fontSize: 'var(--text-3xl)', margin: '0 0 var(--space-4)' }}>{a.title}</h2>
          <p style={{ fontSize: 'var(--text-lg)', color: 'var(--text-body)', lineHeight: 1.6, margin: '0 0 var(--space-4)' }}>{a.p1}</p>
          <p style={{ fontSize: 'var(--text-md)', color: 'var(--text-muted)', lineHeight: 1.6, margin: '0 0 var(--space-5)' }}>{a.p2}</p>
          <div style={{ display: 'flex', gap: 'var(--space-2)', flexWrap: 'wrap', marginBottom: 'var(--space-5)' }}>
            {a.tags.map((tag, i) => (
              <Tag key={i} icon={tagIcons[i]}>{tag}</Tag>
            ))}
          </div>
          <Badge tone="success">{a.badge}</Badge>
        </div>
      </div>
    </section>
  );
}

/* ---------------- Contact ---------------- */
function Contact({ t }) {
  const c = t.contact;
  const [sent, setSent] = React.useState(false);
  return (
    <section id="contact" style={{ padding: 'var(--space-11) var(--space-6)', background: 'var(--surface-page)' }}>
      <div style={{ maxWidth: 'var(--container-md)', margin: '0 auto', display: 'grid', gridTemplateColumns: '1fr 1fr', gap: 'var(--space-8)' }} className="contact-grid">
        <div>
          <div className="eyebrow" style={{ marginBottom: 'var(--space-3)' }}>{c.eyebrow}</div>
          <h2 style={{ fontSize: 'var(--text-3xl)', margin: '0 0 var(--space-4)' }}>{c.title}</h2>
          <p style={{ fontSize: 'var(--text-lg)', color: 'var(--text-muted)', lineHeight: 1.6, margin: '0 0 var(--space-6)' }}>{c.sub}</p>
          <div style={{ display: 'flex', flexDirection: 'column', gap: 'var(--space-3)' }}>
            <div style={{ display: 'flex', alignItems: 'center', gap: 10, color: 'var(--text-body)' }}>
              <i data-lucide="mail" style={{ width: 18, height: 18, color: 'var(--brand)' }}></i>
              <span style={{ fontFamily: 'var(--font-body)' }}>info@sommite.nl</span>
            </div>
            <div style={{ display: 'flex', alignItems: 'center', gap: 10, color: 'var(--text-body)' }}>
              <i data-lucide="globe" style={{ width: 18, height: 18, color: 'var(--brand)' }}></i>
              <span style={{ fontFamily: 'var(--font-body)' }}>www.sommite.nl</span>
            </div>
            <div style={{ display: 'flex', alignItems: 'center', gap: 10, color: 'var(--text-body)' }}>
              <i data-lucide="map-pin" style={{ width: 18, height: 18, color: 'var(--brand)' }}></i>
              <span style={{ fontFamily: 'var(--font-body)' }}>{c.location}</span>
            </div>
          </div>
        </div>
        <Card padding="var(--space-6)">
          {sent ? (
            <Alert tone="success" title={c.sentTitle}>{c.sentBody}</Alert>
          ) : (
            <form onSubmit={(e) => { e.preventDefault(); setSent(true); }} style={{ display: 'flex', flexDirection: 'column', gap: 'var(--space-4)' }}>
              <Input label={c.name} placeholder={c.namePh} required />
              <Input label={c.email} type="email" iconLeft="mail" placeholder={c.emailPh} required />
              <Input label={c.message} multiline rows={4} placeholder={c.messagePh} required />
              <Button variant="primary" type="submit" iconRight="send" fullWidth>{c.send}</Button>
            </form>
          )}
        </Card>
      </div>
    </section>
  );
}

/* ---------------- Footer ---------------- */
function SiteFooter({ onNav, t }) {
  const f = t.footer;
  return (
    <footer style={{ background: 'var(--ink)', padding: 'var(--space-9) var(--space-6) var(--space-7)' }}>
      <div style={{ maxWidth: 'var(--container-lg)', margin: '0 auto' }}>
        <div style={{ display: 'flex', justifyContent: 'space-between', alignItems: 'flex-start', flexWrap: 'wrap', gap: 'var(--space-6)' }}>
          <div style={{ maxWidth: 320 }}>
            <div style={{ display: 'flex', alignItems: 'center', gap: 10, marginBottom: 'var(--space-3)' }}>
              <img src={BEELDMERK} alt="" style={{ height: 34, width: 34, borderRadius: 'var(--radius-sm)' }} />
              <div style={{ lineHeight: 1 }}>
                <div style={{ fontFamily: 'var(--font-display)', fontWeight: 700, fontSize: 20, color: '#fff', letterSpacing: 'var(--tracking-tight)' }}>Sommité</div>
                <div style={{ fontFamily: 'var(--font-body)', fontSize: 11, color: 'var(--neutral-500)', letterSpacing: '0.04em' }}>information systems</div>
              </div>
            </div>
            <p style={{ color: 'var(--neutral-400)', fontSize: 'var(--text-sm)', lineHeight: 1.6, margin: 0 }}>{f.tagline}</p>
          </div>
          <div style={{ display: 'flex', gap: 'var(--space-8)' }}>
            <div style={{ display: 'flex', flexDirection: 'column', gap: 'var(--space-2)' }}>
              <span style={{ color: 'var(--neutral-500)', fontSize: 'var(--text-xs)', fontWeight: 700, letterSpacing: 'var(--tracking-caps)', textTransform: 'uppercase', marginBottom: 4 }}>{f.menu}</span>
              {[['diensten', t.nav.diensten], ['over', t.nav.over], ['contact', t.nav.contact]].map(([id, label]) => (
                <a key={id} href={'#' + id} onClick={(e) => { e.preventDefault(); onNav(id); }} style={{ color: 'var(--neutral-300)', fontSize: 'var(--text-sm)', textDecoration: 'none' }}>{label}</a>
              ))}
            </div>
            <div style={{ display: 'flex', flexDirection: 'column', gap: 'var(--space-2)' }}>
              <span style={{ color: 'var(--neutral-500)', fontSize: 'var(--text-xs)', fontWeight: 700, letterSpacing: 'var(--tracking-caps)', textTransform: 'uppercase', marginBottom: 4 }}>{f.more}</span>
              <a href="https://ondrnmr.nl" style={{ color: 'var(--neutral-300)', fontSize: 'var(--text-sm)', textDecoration: 'none' }}>ondrnmr.nl</a>
              <a href="mailto:info@sommite.nl" style={{ color: 'var(--neutral-300)', fontSize: 'var(--text-sm)', textDecoration: 'none' }}>info@sommite.nl</a>
            </div>
          </div>
        </div>
        <div style={{ borderTop: '1px solid var(--neutral-800)', marginTop: 'var(--space-7)', paddingTop: 'var(--space-4)', color: 'var(--neutral-500)', fontSize: 'var(--text-xs)' }}>
          © {new Date().getFullYear()} Sommité Information Systems · Dinand Veldman
        </div>
      </div>
    </footer>
  );
}

/* ---------------- App ---------------- */
function App() {
  const [lang, setLangState] = React.useState(() => {
    const saved = typeof localStorage !== 'undefined' && localStorage.getItem('sommite-lang');
    return (saved && T[saved]) ? saved : 'NL';
  });
  const setLang = (lg) => {
    setLangState(lg);
    try { localStorage.setItem('sommite-lang', lg); } catch (e) {}
    document.documentElement.lang = lg.toLowerCase();
  };
  const t = T[lang];
  const onNav = (id) => {
    const el = document.getElementById(id);
    if (el) window.scrollTo({ top: id === 'top' ? 0 : el.offsetTop - 80, behavior: 'smooth' });
  };
  React.useEffect(() => { document.documentElement.lang = lang.toLowerCase(); }, []);
  React.useEffect(() => { setTimeout(() => window.lucide && window.lucide.createIcons(), 60); }, [lang]);
  return (
    <div>
      <SiteHeader onNav={onNav} lang={lang} setLang={setLang} t={t} />
      <Hero onNav={onNav} t={t} />
      <Services t={t} />
      <About t={t} />
      <Contact t={t} />
      <SiteFooter onNav={onNav} t={t} />
    </div>
  );
}

window.App = App;
