/* global React */
/* ===================================================================
   ASPACE — Translations (EN + NL)

   Single source of truth for all user-visible strings.
   Components consume via the useT() hook exported on `window`.

   Pattern:
     const t = window.useT();
     <h1>{t('hero.headline')}</h1>

   Dot-notation keys map into nested objects. Missing keys fall back to
   the EN value, then to the key string, so a missed translation never
   breaks the render.
   ================================================================ */

window.ASPACE_TRANSLATIONS = (function () {
  const en = {
    lang: { ariaGroup: 'Language', en: 'EN', nl: 'NL' },

    // ─────────────── Header / Menu ───────────────
    header: {
      logoAria: 'ASPACE home',
      logoBadge: 'AMS',
      letsTalk: "Let's talk",
      menuOpen: 'Open menu',
      menuClose: 'Close menu',
      menuLabel: 'Menu',
      searchOpen: 'Open search',
      searchLabel: 'Search',
    },
    menu: {
      navEyebrow: 'Navigation',
      close: 'Close',
      items: [
        { n: '01', label: 'Home' },
        { n: '02', label: 'Private studios' },
        { n: '03', label: 'About' },
        { n: '04', label: 'Journal' },
        { n: '05', label: 'Contact' },
      ],
      newsletter: {
        eyebrow: 'Newsletter',
        headline: "Studios, openings, and what's next at ASPACE.",
        placeholder: 'your@email.com',
        submit: 'Join',
      },
      visit: {
        eyebrow: 'Visit',
        addressLine1: 'Joop Geesinkweg 306',
        addressCity: 'Amsterdam-Duivendrecht',
        cta: 'Book a viewing',
        instagram: 'Instagram',
        email: 'hello@aspace.amsterdam',
      },
    },

    // ─────────────── Hero / Live atmosphere ───────────────
    atmosphere: {
      label: 'Live atmosphere',
      states: [
        { primary: 'Soft north light',     env: '18°C · Overcast',       mood: 'Perfect for editorials' },
        { primary: 'Rain mode',            env: '14°C · Steady drizzle', mood: 'Perfect audio conditions' },
        { primary: 'Morning shadows',      env: '17°C · Bright',         mood: 'Long graphic lines' },
        { primary: 'Diffused light',       env: '19°C · Overcast',       mood: 'Even all day' },
        { primary: 'Quiet creative hours', env: '20°C · Calm',           mood: 'Low footfall · deep work' },
      ],
    },
    hero: {
      photoStudio: { corner: 'studio · 01', label: 'Private creative room — North wing' },
      photoWarm:   { corner: 'photo set',   label: '2-light scene · 36mm' },
      locationTag: '500 m² · Duivendrecht',
      eyebrow: 'ASPACE Amsterdam — Est. since now',
      headlines: [
        'YOUR IDEAS NEED SPACE',
        'CREATIVE FREEDOM WITHOUT GATEKEEPING',
      ],
      copyMain: "Private studios, production space and creative tools for Amsterdam's next generation of makers.",
      copySignature: 'No gatekeeping. Just space to make.',
      ctaPrimary: 'Book a viewing',
      ctaSecondary: 'Explore the space',
      scrollCue: 'Scroll to explore',
    },
    divider: { label: 'Scroll to explore — section 02 / 11' },

    // ─────────────── Section 03 — Manifesto ───────────────
    statement: {
      eyebrow: '03 — Manifesto',
      statements: [
        'NOT A COWORKING SPACE.\nA CREATIVE BASE.',
        'BUILT FOR CREATORS\nWHO NEED ROOM TO MOVE.',
      ],
      copyLead: 'ASPACE gives independent creatives access to private studios, production space and professional tools — without the gatekeeping.',
      copyTrail: '500m² in Amsterdam-Duivendrecht. Built for the people building what comes next.',
      ctaPrimary: 'See private studios',
      ctaSecondary: 'Our story',
    },

    // ─────────────── Section 04 — Reel ───────────────
    reel: {
      eyebrow: '04 — Reel · 02:14',
      tagline: 'Shoot · Build · Record · Design · Gather',
      title: 'PLAY REEL',
      metaLocation: 'Inside ASPACE',
      metaVolume: 'Vol. 01',
      metaDuration: '02:14',
    },

    // ─────────────── Section 05 — Private studios ───────────────
    studios: {
      eyebrow: '05 — Private studios',
      headlinePre: 'Your own creative studio in ',
      headlineHi:  'Amsterdam',
      headlinePost: '.',
      copy: 'Lockable private rooms for designers, photographers, artists, makers and small creative brands. Flexible monthly terms, real space, real freedom.',
      cards: [
        { badge: 'Available now', eyebrow: 'Studio 03 — North wing', name: 'The Atelier — 18m²',  meta: 'Daylight, north-facing · €795 / month' },
        { badge: 'Available now', eyebrow: 'Studio 07',              name: 'The Workshop — 14m²', meta: 'Heavy floor · €595 / month' },
        {                         eyebrow: 'Studio 11',              name: 'The Loft — 20m²',    meta: 'From €895 · waitlist' },
        {                         eyebrow: 'Studio 04',              name: 'The Annex — 12m²',   meta: 'Quiet wing · €495 / month' },
        {                         eyebrow: 'Studio 09',              name: 'The Salon — 16m²',   meta: 'Showcase-ready · €725 / month' },
      ],
      features: [
        { t: 'Lockable private rooms',    d: 'Your own door, your own setup. Keys, not desk chairs.' },
        { t: 'Month-to-month rental',     d: "Flexible terms. Stay one month or one year — it's your call." },
        { t: '12 — 20m²+ available',      d: 'From compact ateliers to full production rooms.' },
        { t: 'Lounge, kitchen & shower',  d: 'Shared amenities that feel like a creative house, not an office.' },
        { t: 'Creative community',        d: 'Photographers, designers, filmmakers, brands. Collaborate or stay quiet.' },
        { t: 'Built for real work',       d: 'Fashion, photo, product, art, content — bring whatever you make.' },
      ],
      ctaPrimary: 'Book a viewing',
      ctaSecondary: 'See studio options',
      ctaStatus: '5 rooms available · 3 on waitlist · updated this week',
    },

    // ─────────────── Section 06 — Offer grid ───────────────
    offer: {
      eyebrow: '06 — What you can do here',
      headline: 'Shoot, build, record, design, gather.',
      copy: 'One building. Nine ways to use it. Whatever you make, ASPACE has the room and the tools.',
      cards: [
        { t: 'Private studios',    d: 'Lockable rooms for monthly creatives.' },
        { t: 'Photo studio',       d: 'Cyc, daylight & blackout setups.' },
        { t: 'Video production',   d: 'Multi-cam, audio, grip — turnkey.' },
        { t: 'LED wall shoots',    d: 'Virtual production for in-camera VFX.' },
        { t: 'Podcast setup',      d: 'Treated room, broadcast mics, multitrack.' },
        { t: 'Workshops',          d: 'Teach your craft. We handle the room.' },
        { t: 'Events',             d: 'Launches, screenings, brand activations.' },
        { t: 'Creative equipment', d: 'Cameras, lighting, grip — ready to grab.' },
      ],
    },

    // ─────────────── Creative Hub (sections-5-6.jsx) ───────────────
    hub: {
      eyebrow:    '07 — The Hub',
      headlineA:  'A creative hub.',
      headlineB1: 'Built for ',
      headlineB2: 'makers.',
      copy:       'Photography rooms, private studios and the space to actually make things — all under one roof in Amsterdam.',
    },

    // ─────────────── Final invitation (homepage.html inline) ───────────────
    finalInvitation: {
      eyebrow: 'Final invitation',
      headlineLine1: 'Ready to claim',
      headlineLine2: 'your space?',
      copy: 'Book a viewing, ask about available rooms, or tell us what you want to create.',
      cta: 'Open contact',
    },

    // ─────────────── Contact panel ───────────────
    contact: {
      topEyebrow: 'Contact · Index 11',
      closeAria: 'Close contact',
      closeLabel: 'Close',
      visit: {
        eyebrow: 'Visit',
        name: 'ASPACE Amsterdam',
        addressLine1: 'Joop Geesinkweg 306',
        postcode: '1114 AB',
        city: 'Amsterdam-Duivendrecht',
        note: 'Viewings by appointment',
      },
      hours: {
        eyebrow: 'Hours',
        monFri:   { label: 'Mon–Fri',  value: '08:00 – 22:00' },
        saturday: { label: 'Saturday', value: '09:00 – 20:00' },
        sunday:   { label: 'Sunday',   value: 'By appointment' },
      },
      channels: {
        eyebrow: 'Channels',
        items: ['Instagram', 'TikTok', 'LinkedIn', 'hello@aspace.amsterdam'],
      },
      inquiry: {
        eyebrow: 'Inquiry',
        topics: ['Private studio', 'Shoot booking', 'Workshop / event', 'General inquiry'],
      },
      journey: {
        eyebrow: 'Start your booking journey',
        headlinePre:  'Your next shoot\nstarts ',
        headlineHi:   'here',
        headlinePost: '.',
      },
      featured: {
        eyebrow: 'Featured studios',
        allLink: 'See all studios',
        priceFrom: 'From',
        priceUnit: '/h',
        cta: 'Book now',
      },
      studios: {
        items: [
          { id: '01', name: 'North Light',  size: '22 m²', bestFor: 'Portrait · Editorial',  light: 'North daylight' },
          { id: '02', name: 'Motion Lab',   size: '28 m²', bestFor: 'Video · LED wall',      light: 'Treated black box' },
          { id: '03', name: 'Atelier 03',   size: '18 m²', bestFor: 'Tabletop · Still life', light: 'Soft top-light' },
          { id: '04', name: 'Signal Booth', size: '9 m²',  bestFor: 'Podcast · Voice',       light: 'Acoustic booth' },
        ],
      },
      quickActions: {
        eyebrow: 'Quick actions',
        items: ['Book a viewing', 'Explore studios', 'Ask availability', 'Production support', 'Workshop inquiry'],
      },
      form: {
        divider: 'Or tell us about it',
        nameLabel: 'Name',
        namePlaceholder: 'Your name',
        emailLabel: 'Email',
        emailPlaceholder: 'you@studio.com',
        messageLabel: 'What are you planning?',
        messagePlaceholder: 'A two-day fashion shoot in late May, north light preferred…',
        note: 'We reply within one working day. No pipelines — real conversations with the people who run the space.',
        submit: 'Continue to booking',
      },
      success: {
        eyebrow: 'Inquiry received',
        thanksPre: 'Thanks, ',
        thanksFallback: 'creative',
        thanksPost: '.\n',
        thanksHi:  "We'll be in touch.",
        copy: 'A real human at ASPACE will reply within one working day. In the meantime — keep making.',
        cta: 'Send another',
      },
    },

    // ─────────────── AI Concierge ───────────────
    ai: {
      triggerAria: 'Open ASPACE creative concierge',
      triggerTitle: 'Creative Concierge',
      triggerTagline: 'Powered by ASPACE',
      panelAria: 'ASPACE AI creative concierge',
      panelEyebrow: 'ASPACE AI',
      panelHeading: 'Creative Concierge',
      closeAria: 'Close concierge',
      suggestions: [
        { id: 'find',    label: 'Find a private studio', hint: 'Match a room to your work.' },
        { id: 'viewing', label: 'Book a viewing',        hint: '30-min in-person tour.' },
        { id: 'shoot',   label: 'Plan a shoot',          hint: 'Photo, video, LED wall.' },
        { id: 'explore', label: 'Explore ASPACE',        hint: 'Take the long way through.' },
      ],
      replies: {
        find:    { text: "Tell me what you're making — light-driven photography, video with an LED wall, fashion, or workshop work — and I'll match a room to your workflow.", recTitle: 'Atelier 03',       recLabel: 'PRIVATE · 18M²' },
        viewing: { text: 'I can hold a 30-minute viewing for you. Wednesday the 13th at 10:00 is open. Want me to pencil it in?',                                            recTitle: 'North Light',      recLabel: 'PRIVATE · 16M²' },
        shoot:   { text: "For a shoot we have natural light, an LED wall room and a treated voice room. Tell me the format and I'll suggest the right one.",                  recTitle: 'Motion Lab',       recLabel: 'CREATIVE · 22M²' },
        explore: { text: 'ASPACE is six private studios, a production room and a long communal table — five minutes from Centraal, in the middle of where things actually get made.', recTitle: 'The Living Room',  recLabel: 'LOUNGE · COMMUNAL' },
      },
      exchange: { you: 'You asked', concierge: 'Concierge', recPrefix: 'Suggested · ', askAgain: 'Ask something else' },
      input: { aria: 'Ask the concierge', placeholderIdle: 'Tell me what you want to make…', placeholderContinue: 'Continue the conversation…', sendAria: 'Send' },
    },

    // ─────────────── Cookie banner ───────────────
    cookie: {
      bannerAria: 'Cookie consent',
      eyebrowLeft: 'Quiet notice',
      eyebrowRight: 'EU / NL',
      headline: 'We use a few cookies — carefully chosen.',
      copy: 'ASPACE uses a small set of technologies to improve performance, understand how people explore the studios and remember your preferences. You decide.',
      acceptAll: 'Accept all',
      customize: 'Customize',
      necessary: 'Only necessary',
      linkPolicy: 'Cookie policy',
      linkPrivacy: 'Privacy',
      prefs: {
        eyebrow: 'Preferences',
        heading: 'Choose what we measure.',
        closeAria: 'Close',
        alwaysOn: 'Always on',
        save: 'Save preferences',
        acceptAll: 'Accept all',
      },
      cats: {
        necessary:  { label: 'Necessary',  d: "Authentication, security and core site functionality. Always on — the site can't run without these." },
        analytics:  { label: 'Analytics',  d: 'Anonymous patterns of how people explore ASPACE. Helps us understand which work resonates.' },
        functional: { label: 'Functional', d: 'Remembers your preferences — accent colour, motion intensity, language. Quietly personalises the experience.' },
        marketing:  { label: 'Marketing',  d: 'Lets us measure outreach campaigns and showcases. Never sells your data — used only to know what landed.' },
      },
    },

    // ─────────────── Search ───────────────
    search: {
      triggerAria: 'Open search',
      triggerLabel: 'SEARCH',
      eyebrow: 'ASPACE / Search',
      subline: { matches: 'matches', idle: 'Quiet index · curated', live: 'Live' },
      bottomHint: { prefix: 'Press', suffix: 'to close · or ask', aiLink: 'ASPACE AI', esc: 'ESC' },
      prompts: [
        'a private studio with daylight…',
        'a cyclorama for a video shoot…',
        'something I can rent monthly…',
        'space for a workshop of 8…',
        'find a creative base in Amsterdam…',
      ],
      categories: [
        { id: 'studios',     label: 'Studios' },
        { id: 'productions', label: 'Productions' },
        { id: 'workshops',   label: 'Workshops' },
        { id: 'journal',     label: 'Journal' },
        { id: 'ai',          label: 'AI Concierge' },
      ],
      kinds: { studio: 'Studio', production: 'Production', journal: 'Journal', workshop: 'Workshop', ai: 'AI' },
      index: [
        { title: 'North Light Studio',                 meta: 'Daylight · 84 m² · Private' },
        { title: 'Black Box',                          meta: 'Cyclorama · 62 m² · Production' },
        { title: 'Atelier 04',                         meta: 'Studio space · 48 m² · Maker' },
        { title: 'The Loft',                           meta: 'Mezzanine · 110 m² · Flex' },
        { title: 'Greenroom',                          meta: 'Stage room · 70 m² · Hybrid' },
        { title: 'Concrete Hall',                      meta: 'Industrial · 240 m² · Event' },
        { title: 'Photography day rate',               meta: 'Half / full day · Crew + lights' },
        { title: 'Video shoot package',                meta: 'Up to 6 hr · Cyc + grip' },
        { title: 'Cyclorama booking',                  meta: 'Black or white · Lighting' },
        { title: 'Inside ASPACE — May notes',          meta: 'Long read · 8 min' },
        { title: 'A studio you can actually live in',  meta: 'Field essay · 12 min' },
        { title: 'Light & shadow — open class',        meta: 'Thu evenings · Limited 8' },
        { title: 'Print club',                         meta: 'Monthly · Riso + screen' },
        { title: 'Ask ASPACE AI — find a fit',         meta: 'Concierge · Live' },
        { title: 'Let AI plan your shoot day',         meta: 'Concierge · Live' },
      ],
    },
  };

  const nl = {
    lang: { ariaGroup: 'Taal', en: 'EN', nl: 'NL' },

    header: {
      logoAria: 'ASPACE home',
      logoBadge: 'AMS',
      letsTalk: 'Praat met ons',
      menuOpen: 'Menu openen',
      menuClose: 'Menu sluiten',
      menuLabel: 'Menu',
      searchOpen: 'Zoeken openen',
      searchLabel: 'Zoeken',
    },
    menu: {
      navEyebrow: 'Navigatie',
      close: 'Sluiten',
      items: [
        { n: '01', label: 'Home' },
        { n: '02', label: 'Private studio’s' },
        { n: '03', label: 'Over ons' },
        { n: '04', label: 'Journal' },
        { n: '05', label: 'Contact' },
      ],
      newsletter: {
        eyebrow: 'Nieuwsbrief',
        headline: "Studio's, openingen en wat eraan komt bij ASPACE.",
        placeholder: 'jouw@email.nl',
        submit: 'Meld aan',
      },
      visit: {
        eyebrow: 'Bezoek',
        addressLine1: 'Joop Geesinkweg 306',
        addressCity: 'Amsterdam-Duivendrecht',
        cta: 'Plan een bezichtiging',
        instagram: 'Instagram',
        email: 'hello@aspace.amsterdam',
      },
    },

    atmosphere: {
      label: 'Live sfeer',
      states: [
        { primary: 'Zacht noorderlicht',  env: '18°C · Bewolkt',           mood: 'Perfect voor editorials' },
        { primary: 'Regenmodus',          env: '14°C · Lichte motregen',   mood: 'Perfecte audio-condities' },
        { primary: 'Ochtendschaduwen',    env: '17°C · Helder',            mood: 'Lange grafische lijnen' },
        { primary: 'Diffuus licht',       env: '19°C · Bewolkt',           mood: 'De hele dag gelijkmatig' },
        { primary: 'Stille creatieve uren', env: '20°C · Rustig',          mood: 'Weinig loop · diep werk' },
      ],
    },
    hero: {
      photoStudio: { corner: 'studio · 01', label: 'Private creatieve ruimte — Noordvleugel' },
      photoWarm:   { corner: 'photo set',   label: '2-lichts scène · 36mm' },
      locationTag: '500 m² · Duivendrecht',
      eyebrow: 'ASPACE Amsterdam — Sinds nu',
      headlines: [
        'JOUW IDEEËN HEBBEN RUIMTE NODIG',
        'CREATIEVE VRIJHEID ZONDER DREMPELS',
      ],
      copyMain: "Private studio's, productieruimte en creatieve tools voor de volgende generatie makers van Amsterdam.",
      copySignature: 'Geen drempels. Gewoon ruimte om te maken.',
      ctaPrimary: 'Plan een bezichtiging',
      ctaSecondary: 'Ontdek de ruimte',
      scrollCue: 'Scroll om te ontdekken',
    },
    divider: { label: 'Scroll om te ontdekken — sectie 02 / 11' },

    statement: {
      eyebrow: '03 — Manifest',
      statements: [
        'GEEN COWORKING SPACE.\nEEN CREATIEVE THUISBASIS.',
        'GEBOUWD VOOR MAKERS\nDIE RUIMTE NODIG HEBBEN.',
      ],
      copyLead: "ASPACE geeft onafhankelijke creatieven toegang tot private studio's, productieruimte en professionele tools — zonder drempels.",
      copyTrail: '500m² in Amsterdam-Duivendrecht. Gebouwd voor de mensen die bouwen aan wat komt.',
      ctaPrimary: "Bekijk private studio's",
      ctaSecondary: 'Ons verhaal',
    },

    reel: {
      eyebrow: '04 — Reel · 02:14',
      tagline: 'Shoot · Bouw · Record · Design · Verzamel',
      title: 'PLAY REEL',
      metaLocation: 'Binnen bij ASPACE',
      metaVolume: 'Vol. 01',
      metaDuration: '02:14',
    },

    studios: {
      eyebrow: "05 — Private studio's",
      headlinePre: 'Jouw eigen creatieve studio in ',
      headlineHi:  'Amsterdam',
      headlinePost: '.',
      copy: "Afsluitbare private ruimtes voor designers, fotografen, kunstenaars, makers en kleine creatieve merken. Flexibele maandtermijnen, echte ruimte, echte vrijheid.",
      cards: [
        { badge: 'Nu beschikbaar', eyebrow: 'Studio 03 — Noordvleugel', name: 'The Atelier — 18m²',  meta: 'Daglicht, noordgericht · €795 / maand' },
        { badge: 'Nu beschikbaar', eyebrow: 'Studio 07',                name: 'The Workshop — 14m²', meta: 'Zware vloer · €595 / maand' },
        {                          eyebrow: 'Studio 11',                name: 'The Loft — 20m²',    meta: 'Vanaf €895 · wachtlijst' },
        {                          eyebrow: 'Studio 04',                name: 'The Annex — 12m²',   meta: 'Stille vleugel · €495 / maand' },
        {                          eyebrow: 'Studio 09',                name: 'The Salon — 16m²',   meta: 'Showcase-klaar · €725 / maand' },
      ],
      features: [
        { t: 'Afsluitbare private ruimtes', d: 'Je eigen deur, je eigen setup. Sleutels, geen bureaustoelen.' },
        { t: 'Maand-tot-maand huur',         d: 'Flexibele termijnen. Blijf één maand of één jaar — jij bepaalt.' },
        { t: '12 — 20m²+ beschikbaar',       d: 'Van compacte ateliers tot volledige productieruimtes.' },
        { t: 'Lounge, keuken & douche',      d: 'Gedeelde voorzieningen die voelen als een creatief huis, geen kantoor.' },
        { t: 'Creatieve community',          d: 'Fotografen, designers, filmmakers, merken. Werk samen of blijf stil.' },
        { t: 'Gebouwd voor echt werk',       d: 'Mode, foto, product, kunst, content — breng mee wat jij maakt.' },
      ],
      ctaPrimary: 'Plan een bezichtiging',
      ctaSecondary: 'Bekijk studio-opties',
      ctaStatus: '5 ruimtes beschikbaar · 3 op wachtlijst · deze week bijgewerkt',
    },

    offer: {
      eyebrow: '06 — Wat je hier kunt doen',
      headline: 'Shoot, bouw, record, design, verzamel.',
      copy: 'Eén gebouw. Negen manieren om het te gebruiken. Wat je ook maakt, ASPACE heeft de ruimte en de tools.',
      cards: [
        { t: "Private studio's",     d: 'Afsluitbare ruimtes voor maandcreatieven.' },
        { t: 'Fotostudio',           d: 'Cyc, daglicht & blackout setups.' },
        { t: 'Videoproductie',       d: 'Multi-cam, audio, grip — turnkey.' },
        { t: 'LED wall shoots',      d: 'Virtual production voor in-camera VFX.' },
        { t: 'Podcast-setup',        d: 'Behandelde ruimte, broadcast mics, multitrack.' },
        { t: 'Workshops',            d: 'Geef je vak door. Wij verzorgen de ruimte.' },
        { t: 'Events',               d: 'Launches, screenings, brand activations.' },
        { t: 'Creatieve apparatuur', d: 'Camera’s, licht, grip — pak en gebruik.' },
      ],
    },

    hub: {
      eyebrow:    '07 — De Hub',
      headlineA:  'Een creatieve hub.',
      headlineB1: 'Gebouwd voor ',
      headlineB2: 'makers.',
      copy:       'Fotostudio’s, private studio’s en de ruimte om écht dingen te maken — alles onder één dak in Amsterdam.',
    },

    finalInvitation: {
      eyebrow: 'Laatste uitnodiging',
      headlineLine1: 'Klaar om jouw',
      headlineLine2: 'ruimte te claimen?',
      copy: 'Plan een bezichtiging, vraag naar beschikbare ruimtes, of vertel ons wat je wilt maken.',
      cta: 'Open contact',
    },

    contact: {
      topEyebrow: 'Contact · Index 11',
      closeAria: 'Contact sluiten',
      closeLabel: 'Sluiten',
      visit: {
        eyebrow: 'Bezoek',
        name: 'ASPACE Amsterdam',
        addressLine1: 'Joop Geesinkweg 306',
        postcode: '1114 AB',
        city: 'Amsterdam-Duivendrecht',
        note: 'Bezichtigingen op afspraak',
      },
      hours: {
        eyebrow: 'Openingstijden',
        monFri:   { label: 'Ma–Vr',     value: '08:00 – 22:00' },
        saturday: { label: 'Zaterdag',  value: '09:00 – 20:00' },
        sunday:   { label: 'Zondag',    value: 'Op afspraak' },
      },
      channels: {
        eyebrow: 'Kanalen',
        items: ['Instagram', 'TikTok', 'LinkedIn', 'hello@aspace.amsterdam'],
      },
      inquiry: {
        eyebrow: 'Aanvraag',
        topics: ['Private studio', 'Shoot-boeking', 'Workshop / event', 'Algemene vraag'],
      },
      journey: {
        eyebrow: 'Start je boekingsreis',
        headlinePre:  'Jouw volgende shoot\nbegint ',
        headlineHi:   'hier',
        headlinePost: '.',
      },
      featured: {
        eyebrow: "Uitgelichte studio's",
        allLink: "Bekijk alle studio's",
        priceFrom: 'Vanaf',
        priceUnit: '/u',
        cta: 'Boek nu',
      },
      studios: {
        items: [
          { id: '01', name: 'North Light',  size: '22 m²', bestFor: 'Portret · Editorial',     light: 'Noorderdaglicht' },
          { id: '02', name: 'Motion Lab',   size: '28 m²', bestFor: 'Video · LED wall',        light: 'Behandelde black box' },
          { id: '03', name: 'Atelier 03',   size: '18 m²', bestFor: 'Tabletop · Stilleven',    light: 'Zacht toplicht' },
          { id: '04', name: 'Signal Booth', size: '9 m²',  bestFor: 'Podcast · Stem',          light: 'Akoestische booth' },
        ],
      },
      quickActions: {
        eyebrow: 'Snelle acties',
        items: ['Plan een bezichtiging', "Verken studio's", 'Vraag beschikbaarheid', 'Productie-ondersteuning', 'Workshop-aanvraag'],
      },
      form: {
        divider: 'Of vertel ons erover',
        nameLabel: 'Naam',
        namePlaceholder: 'Jouw naam',
        emailLabel: 'E-mail',
        emailPlaceholder: 'jij@studio.com',
        messageLabel: 'Wat heb je in gedachten?',
        messagePlaceholder: 'Een tweedaagse modeshoot eind mei, noorderlicht heeft de voorkeur…',
        note: 'We reageren binnen één werkdag. Geen pipelines — echte gesprekken met de mensen die de ruimte runnen.',
        submit: 'Door naar boeking',
      },
      success: {
        eyebrow: 'Aanvraag ontvangen',
        thanksPre: 'Bedankt, ',
        thanksFallback: 'creatieveling',
        thanksPost: '.\n',
        thanksHi:  'We nemen contact op.',
        copy: 'Een echt mens bij ASPACE reageert binnen één werkdag. Ondertussen — blijf maken.',
        cta: 'Stuur er nog een',
      },
    },

    ai: {
      triggerAria: 'Open ASPACE creative concierge',
      triggerTitle: 'Creative Concierge',
      triggerTagline: 'Powered by ASPACE',
      panelAria: 'ASPACE AI creative concierge',
      panelEyebrow: 'ASPACE AI',
      panelHeading: 'Creative Concierge',
      closeAria: 'Concierge sluiten',
      suggestions: [
        { id: 'find',    label: 'Vind een private studio', hint: 'Match een ruimte aan jouw werk.' },
        { id: 'viewing', label: 'Plan een bezichtiging',   hint: 'Tour van 30 min ter plekke.' },
        { id: 'shoot',   label: 'Plan een shoot',          hint: 'Foto, video, LED wall.' },
        { id: 'explore', label: 'Verken ASPACE',           hint: 'Neem de lange route.' },
      ],
      replies: {
        find:    { text: 'Vertel me wat je maakt — lichtgedreven fotografie, video met een LED wall, mode of workshop-werk — en ik match een ruimte aan jouw workflow.', recTitle: 'Atelier 03',       recLabel: 'PRIVATE · 18M²' },
        viewing: { text: 'Ik kan een bezichtiging van 30 minuten voor je vasthouden. Woensdag de 13e om 10:00 is vrij. Zal ik die voor je inplannen?',                    recTitle: 'North Light',      recLabel: 'PRIVATE · 16M²' },
        shoot:   { text: 'Voor een shoot hebben we natuurlijk licht, een LED wall-ruimte en een behandelde stemroom. Vertel me het format en ik suggereer de juiste.',     recTitle: 'Motion Lab',       recLabel: 'CREATIVE · 22M²' },
        explore: { text: "ASPACE is zes private studio's, een productieruimte en een lange gemeenschappelijke tafel — vijf minuten van Centraal, midden in waar dingen echt gemaakt worden.", recTitle: 'The Living Room',  recLabel: 'LOUNGE · COMMUNAL' },
      },
      exchange: { you: 'Jij vroeg', concierge: 'Concierge', recPrefix: 'Voorgesteld · ', askAgain: 'Vraag iets anders' },
      input: { aria: 'Vraag de concierge', placeholderIdle: 'Vertel wat je wilt maken…', placeholderContinue: 'Ga verder met het gesprek…', sendAria: 'Verstuur' },
    },

    cookie: {
      bannerAria: 'Cookie-toestemming',
      eyebrowLeft: 'Stille mededeling',
      eyebrowRight: 'EU / NL',
      headline: 'We gebruiken een paar cookies — zorgvuldig gekozen.',
      copy: "ASPACE gebruikt een kleine set technologieën om prestaties te verbeteren, te begrijpen hoe mensen de studio's verkennen en je voorkeuren te onthouden. Jij beslist.",
      acceptAll: 'Alles accepteren',
      customize: 'Aanpassen',
      necessary: 'Alleen noodzakelijk',
      linkPolicy: 'Cookiebeleid',
      linkPrivacy: 'Privacy',
      prefs: {
        eyebrow: 'Voorkeuren',
        heading: 'Kies wat we meten.',
        closeAria: 'Sluiten',
        alwaysOn: 'Altijd aan',
        save: 'Voorkeuren opslaan',
        acceptAll: 'Alles accepteren',
      },
      cats: {
        necessary:  { label: 'Noodzakelijk', d: 'Authenticatie, beveiliging en kernfunctionaliteit. Altijd aan — zonder deze werkt de site niet.' },
        analytics:  { label: 'Analyse',      d: 'Anonieme patronen van hoe mensen ASPACE verkennen. Helpt ons begrijpen welk werk resoneert.' },
        functional: { label: 'Functioneel',  d: 'Onthoudt je voorkeuren — accentkleur, motion-intensiteit, taal. Personaliseert de ervaring stilletjes.' },
        marketing:  { label: 'Marketing',    d: 'Laat ons campagnes en showcases meten. Verkoopt je data nooit — alleen om te weten wat aanslaat.' },
      },
    },

    search: {
      triggerAria: 'Zoeken openen',
      triggerLabel: 'ZOEK',
      eyebrow: 'ASPACE / Zoeken',
      subline: { matches: 'resultaten', idle: 'Stille index · gecureerd', live: 'Live' },
      bottomHint: { prefix: 'Druk op', suffix: 'om te sluiten · of vraag', aiLink: 'ASPACE AI', esc: 'ESC' },
      prompts: [
        'een private studio met daglicht…',
        'een cyclorama voor een videoshoot…',
        'iets dat ik maandelijks kan huren…',
        'ruimte voor een workshop van 8…',
        'vind een creatieve thuisbasis in Amsterdam…',
      ],
      categories: [
        { id: 'studios',     label: "Studio's" },
        { id: 'productions', label: 'Producties' },
        { id: 'workshops',   label: 'Workshops' },
        { id: 'journal',     label: 'Journal' },
        { id: 'ai',          label: 'AI Concierge' },
      ],
      kinds: { studio: 'Studio', production: 'Productie', journal: 'Journal', workshop: 'Workshop', ai: 'AI' },
      index: [
        { title: 'North Light Studio',                meta: 'Daglicht · 84 m² · Private' },
        { title: 'Black Box',                         meta: 'Cyclorama · 62 m² · Productie' },
        { title: 'Atelier 04',                        meta: 'Studio-ruimte · 48 m² · Maker' },
        { title: 'The Loft',                          meta: 'Mezzanine · 110 m² · Flex' },
        { title: 'Greenroom',                         meta: 'Stageruimte · 70 m² · Hybride' },
        { title: 'Concrete Hall',                     meta: 'Industrieel · 240 m² · Event' },
        { title: 'Fotografie dagtarief',              meta: 'Halve / hele dag · Crew + licht' },
        { title: 'Videoshoot-pakket',                 meta: 'Tot 6 uur · Cyc + grip' },
        { title: 'Cyclorama-boeking',                 meta: 'Zwart of wit · Belichting' },
        { title: 'Binnen bij ASPACE — meinotities',   meta: 'Long read · 8 min' },
        { title: 'Een studio waar je echt in kunt leven', meta: 'Veldessay · 12 min' },
        { title: 'Licht & schaduw — open les',        meta: 'Donderdagavonden · Beperkt 8' },
        { title: 'Print club',                        meta: 'Maandelijks · Riso + zeefdruk' },
        { title: 'Vraag ASPACE AI — vind een match',  meta: 'Concierge · Live' },
        { title: 'Laat AI je shoot-dag plannen',      meta: 'Concierge · Live' },
      ],
    },
  };

  return { en, nl };
})();

/* ----------------------------------------------------------------- */
/*  useT() — translation hook.                                        */
/*  Reads current lang from useLang(), walks dot-notation keys,       */
/*  falls back to EN, then to the raw key on miss.                    */
/* ----------------------------------------------------------------- */
window.useT = function useT() {
  const { lang } = window.useLang ? window.useLang() : { lang: 'en' };
  const dicts = window.ASPACE_TRANSLATIONS;
  return function t(key) {
    const parts = key.split('.');
    const tryDict = (root) => {
      let node = root;
      for (const p of parts) {
        if (node == null || typeof node !== 'object') return undefined;
        node = node[p];
      }
      return node;
    };
    const hit = tryDict(dicts[lang]);
    if (hit !== undefined) return hit;
    const fallback = tryDict(dicts.en);
    if (fallback !== undefined) return fallback;
    // Miss in both langs — log once per key in dev, return undefined so
    // callers using `|| []` or `|| ''` don't crash on `.map()`/string ops.
    if (typeof console !== 'undefined' && !window.__missedT__) window.__missedT__ = new Set();
    if (window.__missedT__ && !window.__missedT__.has(key)) {
      window.__missedT__.add(key);
      try { console.warn('[i18n] missing key:', key); } catch (_) {}
    }
    return undefined;
  };
};
