// Translations + language context — NY metro focus, professional commercial example

const TRANSLATIONS = {
  en: {
    nav: {
      work: 'Work', how: 'How it works', pricing: 'Pricing',
      benefits: 'Why tint', about: 'About', outside: 'Outside NYC',
      cta: 'Get an estimate', ctaShort: 'Estimate',
      menu: 'Menu', langLabel: 'Language',
    },
    hero: {
      badge: 'NEW',
      badgeText: 'Booking 24/7 — quote tonight, install this week',
      h1a: 'Pro window tinting.',
      h1b: 'Quoted in minutes.',
      h1c: 'Approved by Ivan.',
      sub: 'Commercial, residential, and auto window tinting across the New York metro area. Send photos and dimensions, get a real estimate while you scroll, and lock in the install once Ivan signs off.',
      ctaPrimary: 'Start the chat',
      ctaSecondary: 'See recent work',
      stats: [
        { n: '2,400+', l: 'panes installed' },
        { n: '4.9★',   l: '312 Google reviews' },
        { n: '17 yrs', l: 'NY metro since 2009' },
      ],
      chat: {
        headerName: 'Sunblocker',
        headerSub: 'Online · usually quotes in < 5 min',
        tag: 'EST · 2.4',
        m1: 'Sunblocker here. What\'s the project — office, storefront, residential, or auto?',
        m2: "Office floor, Midtown West. 32 windows, west-facing, glare on monitors all afternoon. Tenant build-out — looking for ceramic IR.",
        m3: 'Got it — sounds like a TI. Can you share a couple photos and rough total sq ft of glass? I\'ll spec Ceramic 70 IR and get you a number.',
        m4: 'Draft estimate',
        film: 'Ceramic 70 IR · 32 panes',
        sqft: '~640 sq ft',
        labor: 'Install · 2 days',
        when: 'After-hours OK',
        total: 'Estimate',
        price: '$7,200 – $8,400',
        sending: 'Sending to Ivan for review →',
        inputPlaceholder: 'Reply…',
      },
      phoneCaption: '↑ Ivan reviews between jobs — approve, edit, or reject in two taps.',
      phoneTag: 'NEW ESTIMATE',
      phoneNew: '11:42 AM',
      phoneTitle: 'Midtown office TI',
      phoneMeta: 'Ardent Capital · 32 panes · Ceramic 70 IR',
      phoneAiNote: 'AI · ',
      phoneAiBody: '32 panes west-facing, glare on monitors. Spec\'d Ceramic 70 IR for clarity. After-hours install OK per client.',
      phoneApprove: 'Approve & send',
      phoneEdit: 'Edit price',
      phoneReject: 'Pass on this one',
      phoneFromTotal: 'TOTAL',
      phoneTimeAgo: '2 min ago',
    },
    how: {
      eyebrow: 'How it works',
      title: 'A real estimate in minutes —',
      titleEm: 'not a "we\'ll call you back."',
      sub: 'Old way: leave a voicemail, wait a week, get a vague price over text. New way: chat now, get a number Ivan stands behind, book the same day.',
      steps: [
        { t: 'Customer starts a chat',     b: 'Trained on 17 years of Ivan\'s jobs, films, and pricing. Photos, dimensions, project type — the chat collects what Ivan needs to quote.' },
        { t: 'A real estimate is drafted', b: 'Glass measured from photos, the right tint picked for the use case, and an estimate drafted that Ivan would actually quote.' },
        { t: 'Ivan reviews between jobs',  b: 'Quotes go to Ivan\'s phone. He approves, tweaks the price, or passes — usually inside an hour, while he\'s on another job. Two taps, no typing.' },
        { t: 'Customer books, deposit lands', b: 'Pick a date, leave a card on file, 20% deposit holds the slot. Calendar invite goes to Ivan and the crew automatically.' },
      ],
    },
    benefits: {
      eyebrow: 'Why tint',
      title: 'Window tinting does more than',
      titleEm: 'cool down a room.',
      sub: 'For an office, it\'s lower cooling bills and glare-free monitors. For a storefront, it\'s safety tint and UV-protected merchandise. For a home, it\'s a couch that doesn\'t fade and an A/C that doesn\'t run all day.',
      cards: [
        { stat: '30%', label: 'cooling-cost cut',    body: 'Spectrally-selective tint blocks up to 78% of solar heat — measurable savings on commercial HVAC loads.' },
        { stat: '99%', label: 'UV blocked',          body: 'Protects merchandise, art, hardwoods, and skin. Same UV that fades a couch ages everything else.' },
        { stat: '78%', label: 'glare reduction',     body: 'Stop squinting at monitors at 2pm. Most offices drop their blinds entirely after a tint job.' },
        { stat: '4×',  label: 'tougher glass',       body: 'Safety tint holds shattered glass in place — required spec for many ground-floor commercial leases.' },
      ],
      calc: {
        title: 'Estimate annual savings on your electric bill',
        sub: 'A rough calculator for offices and homes. The chat will run a real one against your actual bill, glass square footage, and orientation.',
        label1: 'Monthly electric bill',
        label2: 'Building type',
        label3: 'Glass exposed to sun',
        climateOpts: [
          { v: 'office', l: 'Office / commercial' },
          { v: 'home',   l: 'Home / apartment' },
        ],
        areaOpts: [
          { v: 'small',  l: 'Small (< 500 sq ft)' },
          { v: 'medium', l: '500 – 2,000 sq ft' },
          { v: 'large',  l: '2,000+ sq ft' },
        ],
        result: 'Estimated annual savings',
        payback: 'Typical payback',
        years: 'years',
      },
    },
    work: {
      eyebrow: 'Recent work',
      title: 'Glass we\'ve cooled',
      titleEm: 'across the NY metro.',
      sub: 'Drag any photo onto a tile to swap in your own — Ivan refreshes these from the field.',
      designerNote: '(designer note)',
      projects: [
        { id: 'midtown-office',       t: 'Midtown office TI',     m: 'Commercial · Ceramic 70 IR · 32 panes',         tag: 'Office · glare',     s: 'tall' },
        { id: 'soho-storefront',      t: 'SoHo storefront',        m: 'Commercial · Safety tint + ceramic',           tag: 'Storefront',         s: 'wide' },
        { id: 'tesla-model-y',        t: 'Model Y full strip',     m: 'Auto · Ceramic IR · 7 windows',                tag: 'Auto · heat + UV',   s: 'square' },
        { id: 'fidi-tower',           t: 'FiDi tower lobby',       m: 'Commercial · Spectrally-selective + safety',   tag: 'Building · safety',  s: 'wide' },
        { id: 'brooklyn-brownstone',  t: 'Brooklyn brownstone',    m: 'Residential · Ceramic 70 · 14 windows',        tag: 'Residential',        s: 'square' },
        { id: 'tribeca-loft',         t: 'Tribeca loft',           m: 'Residential · Carbon 35 · 9 windows',          tag: 'Glare + privacy',    s: 'tall' },
      ],
    },
    pricing: {
      eyebrow: 'Ballpark pricing',
      title: 'Three tints do 90% of jobs.',
      titleEm: 'The chat will pick yours.',
      sub: 'Final number depends on glass type, size, and access — but you\'ll have a real range before you ever pick up the phone. Volume pricing on commercial jobs > 1,000 sq ft.',
      tiers: [
        { name: 'Carbon 35',           desc: 'Heat + glare for most homes. Black in, neutral out.', from: '$8',  unit: '/sq ft', bullets: ['45% heat rejection','99% UV','Lifetime warranty'], featured: false, flag: '' },
        { name: 'Ceramic 70 IR',       desc: 'Premium clear-look tint. Standard for offices.',       from: '$12', unit: '/sq ft', bullets: ['65% heat rejection','99% UV','Crystal-clear view'], featured: true,  flag: 'Most installed' },
        { name: 'Spectrally-selective',desc: 'Tempered glass, skylights, ground-floor commercial.',   from: '$18', unit: '/sq ft', bullets: ['78% heat rejection','99% UV','Glass-breakage safe'],   featured: false, flag: '' },
      ],
    },
    outside: {
      eyebrow: 'Outside the metro',
      title: 'Hamptons, Hudson Valley,',
      titleEm: 'or further — we travel.',
      sub: 'For projects outside the five boroughs and inner ring, Sunblocker ships pre-cut tint, brings the crew, and stays until the job\'s done. Most out-of-area jobs are commercial; minimum project size makes the trip worth it.',
      cards: [
        { kicker: '01', title: 'Send the spec',      body: 'Same chat. Photos, glass dimensions, building type, ZIP. The estimate includes travel, lodging, and per-diem broken out as a line item.' },
        { kicker: '02', title: 'We pre-cut + ship', body: 'Tint is cut and packaged at the Brooklyn shop, shipped to your site, and stored ready for Ivan and the crew when they arrive.' },
        { kicker: '03', title: 'On-site install',   body: 'Crew of 2–4 deploys to most of the Northeast within 7 days. Same warranty, same materials, same Ivan-approved quote.' },
      ],
      areasLabel: 'Recent travel jobs',
      areas: ['Hamptons · East End', 'Hudson Valley · Westchester', 'Connecticut shoreline', 'Jersey Shore · Cape May', 'Catskills · Poconos', 'Philadelphia · Princeton'],
      ctaLabel: 'Project outside the metro? Tell the chat your ZIP — we\'ll quote the travel.',
    },
    trust: {
      eyebrow: 'Why Sunblocker',
      title: 'Real installer, real warranty,',
      titleEm: 'real reviews.',
      sub: 'Sunblocker is Ivan Vasquez, two trucks out of Brooklyn, and a small crew. Customers chat. Ivan installs.',
      reviews: [
        { name: 'Maria K.',           loc: 'Park Slope, BK',     stars: 5, text: 'Booked through the chat at 9pm on a Sunday — Ivan approved by morning, install was Wednesday. Apartment is genuinely 8° cooler in the afternoon.', tag: 'Residential' },
        { name: 'Ardent Capital',     loc: 'Midtown, NY',        stars: 5, text: '32 windows on a tenant build-out. Ivan came out for site survey, quote landed in our inbox same day, install ran two evenings after-hours. No call tag.', tag: 'Commercial' },
        { name: 'Sam at Pinhole',     loc: 'Lower East Side',    stars: 5, text: 'Storefront safety tint + UV cut. Painless quote, Ivan came out to verify, crew was clean and gone in a day.', tag: 'Storefront' },
      ],
      credentials: [
        { l: '3M Authorized Dealer',   s: 'Since 2014' },
        { l: 'LLumar Pro',             s: 'Certified installer' },
        { l: 'Lifetime warranty',      s: 'Residential + commercial' },
        { l: 'Licensed & insured',     s: 'NY #SB-984221 · $2M GL' },
      ],
    },
    about: {
      eyebrow: 'About Ivan',
      placeholder: 'Drop a photo of Ivan',
      tag: 'IVAN VASQUEZ · OWNER',
      quote: '"I\'d rather be on a job than on the phone. The chat books the jobs. I show up and do the glass."',
      body: 'Ivan founded Sunblocker after a decade in collision shops taught him that good tint work is half craft, half scheduling. Today he runs two trucks across the NY metro and reviews every estimate himself — usually from a job site, between cuts.',
      sig: '— Ivan, founder',
    },
    finalcta: {
      eyebrow: 'Ready when you are',
      title1: 'Stop sweating.',
      title2: 'Start chatting.',
      sub: 'Drop a photo, get a number, book Ivan.',
      cta: 'Open the chat',
      callShort: 'Or call',
      phone: '(212) 555-0199',
    },
    footer: {
      tag: 'Pro window tinting, smart booking. NY metro and beyond.',
      services: 'Services',
      area: 'Service area',
      contact: 'Contact',
      servicesItems: ['Commercial tinting', 'Office tenant fit-out', 'Residential tinting', 'Auto tint · all makes'],
      areaItems: ['Manhattan · Brooklyn · Queens', 'The Bronx · Staten Island', 'Long Island · Westchester', 'Hudson Valley · Travel jobs'],
      contactItems: [
        { label: '(212) 555-0199',        href: 'tel:+12125550199' },
        { label: 'hi@thesunblocker.com', href: 'mailto:hi@thesunblocker.com' },
        { label: 'Mon–Sat · 8a–6p',      href: '#' },
        { label: 'Chat 24/7',             href: '#' },
      ],
      copyright: '© 2026 Sunblocker LLC · NY #SB-984221',
      credit: 'Booking infrastructure by',
      creditLink: 'Present Day',
    },
    chatWidget: {
      headerName: 'Sunblocker',
      headerSub: 'Online · responding now',
      greeting: "Hey, Sunblocker here 👋 What's the project — office, storefront, home, or auto?",
      placeholder: 'Tell us about your windows…',
      error: "Hmm, I'm having trouble connecting. Try again, or text Ivan at (212) 555-0199.",
      quickActionsLabel: 'Quick start',
      quickActions: [
        { id: 'office',   label: 'Office / commercial', prompt: "Office or commercial project. What's the building type and floor, how many panes, west or south-facing, and what's the lease situation (TI, owner, after-hours access)? Photos help if you have them." },
        { id: 'storefront', label: 'Storefront',        prompt: "Storefront. Square footage of glass, ground floor or above, and what's the goal — heat, glare, UV protection on merchandise, security tint, branding, or privacy?" },
        { id: 'home',     label: 'Home / apartment',    prompt: "Home tint. Which rooms, what direction do those windows face, and what's the main issue — heat, glare on a TV/monitor, fading, or privacy?" },
        { id: 'car',      label: 'Auto · any make',     prompt: "Auto tint. Year, make, model, and which windows? Heads-up: in NY, front-side windows require 70% VLT minimum. Common shades are 5%, 20%, 35%, 50%." },
      ],
    },
  },
  es: {
    nav: {
      work: 'Trabajos', how: 'Cómo funciona', pricing: 'Precios',
      benefits: 'Beneficios', about: 'Sobre Ivan', outside: 'Fuera de NYC',
      cta: 'Pedir estimado', ctaShort: 'Estimado',
      menu: 'Menú', langLabel: 'Idioma',
    },
    hero: {
      badge: 'NUEVO',
      badgeText: 'Reservación 24/7 — cotización esta noche, instalación esta semana',
      h1a: 'Polarizado profesional.',
      h1b: 'Cotizada en minutos.',
      h1c: 'Aprobada por Ivan.',
      sub: 'Polarizado comercial, residencial y de auto en toda el área metropolitana de Nueva York. Manda fotos y medidas, recibe un estimado real mientras lees, y reserva la instalación cuando Ivan dé el OK.',
      ctaPrimary: 'Empezar el chat',
      ctaSecondary: 'Ver trabajos recientes',
      stats: [
        { n: '2,400+', l: 'paneles instalados' },
        { n: '4.9★',   l: '312 reseñas Google' },
        { n: '17 años', l: 'NY metro desde 2009' },
      ],
      chat: {
        headerName: 'Sunblocker',
        headerSub: 'En línea · cotiza en < 5 min',
        tag: 'EST · 2.4',
        m1: 'Sunblocker. ¿Qué tipo de proyecto — oficina, local, residencial, o auto?',
        m2: 'Piso de oficina en Midtown. 32 ventanas, dan al oeste, brillo en monitores toda la tarde. Build-out de inquilino — buscamos cerámica IR.',
        m3: 'Entendido — suena a TI. ¿Me mandas un par de fotos y los pies cuadrados totales de cristal? Te especifico Cerámica 70 IR y te doy un número.',
        m4: 'Borrador del estimado',
        film: 'Cerámica 70 IR · 32 paneles',
        sqft: '~640 pies²',
        labor: 'Instalación · 2 días',
        when: 'Después de horas',
        total: 'Estimado',
        price: '$7,200 – $8,400',
        sending: 'Enviando a Ivan para revisar →',
        inputPlaceholder: 'Responder…',
      },
      phoneCaption: '↑ Ivan revisa entre trabajos — aprueba, edita o rechaza en dos toques.',
      phoneTag: 'NUEVO ESTIMADO',
      phoneNew: '11:42 AM',
      phoneTitle: 'Oficina Midtown · TI',
      phoneMeta: 'Ardent Capital · 32 paneles · Cerámica 70 IR',
      phoneAiNote: 'IA · ',
      phoneAiBody: '32 paneles al oeste, brillo en monitores. Especifiqué Cerámica 70 IR. Cliente OK con instalación después de horas.',
      phoneApprove: 'Aprobar y enviar',
      phoneEdit: 'Editar precio',
      phoneReject: 'Pasar de este',
      phoneFromTotal: 'TOTAL',
      phoneTimeAgo: 'hace 2 min',
    },
    how: {
      eyebrow: 'Cómo funciona',
      title: 'Un estimado real en minutos —',
      titleEm: 'no un "te llamamos luego."',
      sub: 'Antes: dejabas un mensaje, esperabas una semana, y te tiraban un número vago. Ahora: el cliente chatea, recibe un número que Ivan respalda, y reserva el mismo día.',
      steps: [
        { t: 'Cliente empieza un chat',           b: 'Entrenado con 17 años de trabajos, polarizados y precios de Ivan. Fotos, medidas, tipo de proyecto — el chat reúne lo que Ivan necesita para cotizar.' },
        { t: 'Se prepara un estimado real',       b: 'Cristal medido desde fotos, polarizado correcto para el uso, y un estimado armado que Ivan cotizaría.' },
        { t: 'Ivan revisa entre trabajos',        b: 'Las cotizaciones le llegan al celular. Aprueba, ajusta el precio, o pasa — usualmente en menos de una hora, mientras está en otro trabajo. Dos toques, sin escribir.' },
        { t: 'Cliente reserva, depósito entra',   b: 'Escoges fecha, dejas tarjeta, 20% de depósito reserva el espacio. La invitación de calendario le llega a Ivan y a la cuadrilla automáticamente.' },
      ],
    },
    benefits: {
      eyebrow: 'Por qué polarizar',
      title: 'El polarizado hace más que',
      titleEm: 'enfriar un cuarto.',
      sub: 'Para una oficina: menos en factura y monitores sin brillo. Para un local: polarizado de seguridad y mercancía protegida del UV. Para una casa: un sofá que no se descolora y un aire que no corre todo el día.',
      cards: [
        { stat: '30%', label: 'menos en enfriado', body: 'El polarizado espectralmente selectivo bloquea hasta 78% del calor solar — ahorros medibles en HVAC comercial.' },
        { stat: '99%', label: 'UV bloqueado',       body: 'Protege mercancía, arte, pisos y piel. El mismo UV que descolora un sofá envejece todo lo demás.' },
        { stat: '78%', label: 'menos brillo',       body: 'Deja de entrecerrar los ojos viendo monitores a las 2pm. La mayoría deja las cortinas abiertas.' },
        { stat: '4×',  label: 'cristal más fuerte', body: 'El polarizado de seguridad mantiene el cristal en su sitio si se rompe — requerido en muchos contratos comerciales.' },
      ],
      calc: {
        title: 'Estima el ahorro anual en tu factura eléctrica',
        sub: 'Una calculadora aproximada para oficinas y casas. El chat hace una real con tu factura, pies cuadrados, y orientación.',
        label1: 'Factura mensual de luz',
        label2: 'Tipo de edificio',
        label3: 'Cristal expuesto al sol',
        climateOpts: [
          { v: 'office', l: 'Oficina / comercial' },
          { v: 'home',   l: 'Casa / apartamento' },
        ],
        areaOpts: [
          { v: 'small',  l: 'Pequeño (< 500 pies²)' },
          { v: 'medium', l: '500 – 2,000 pies²' },
          { v: 'large',  l: '2,000+ pies²' },
        ],
        result: 'Ahorro anual estimado',
        payback: 'Recuperación típica',
        years: 'años',
      },
    },
    work: {
      eyebrow: 'Trabajos recientes',
      title: 'Cristal que hemos enfriado',
      titleEm: 'en el área metropolitana.',
      sub: 'Arrastra cualquier foto a un mosaico para reemplazarla — Ivan los actualiza desde el campo.',
      designerNote: '(nota del diseñador)',
      projects: [
        { id: 'midtown-office',      t: 'Oficina Midtown TI',    m: 'Comercial · Cerámica 70 IR · 32 paneles',     tag: 'Oficina · brillo',  s: 'tall' },
        { id: 'soho-storefront',     t: 'Local en SoHo',          m: 'Comercial · Polarizado de seguridad + cerámica', tag: 'Local',           s: 'wide' },
        { id: 'tesla-model-y',       t: 'Model Y completo',       m: 'Auto · Cerámica IR · 7 ventanas',             tag: 'Auto · calor + UV', s: 'square' },
        { id: 'fidi-tower',          t: 'Lobby torre FiDi',       m: 'Comercial · Selectiva + seguridad',           tag: 'Edificio',         s: 'wide' },
        { id: 'brooklyn-brownstone', t: 'Brownstone Brooklyn',    m: 'Residencial · Cerámica 70 · 14 ventanas',     tag: 'Residencial',      s: 'square' },
        { id: 'tribeca-loft',        t: 'Loft Tribeca',           m: 'Residencial · Carbón 35 · 9 ventanas',        tag: 'Brillo + privacidad', s: 'tall' },
      ],
    },
    pricing: {
      eyebrow: 'Precios aproximados',
      title: 'Tres polarizados cubren el 90%.',
      titleEm: 'El chat escoge el tuyo.',
      sub: 'El número final depende del tipo de cristal, tamaño y acceso — pero tendrás un rango real antes de levantar el teléfono. Precio por volumen en trabajos comerciales > 1,000 pies².',
      tiers: [
        { name: 'Carbón 35',          desc: 'Calor + brillo para casas. Negro por dentro, neutro por fuera.',  from: '$8',  unit: '/pie²', bullets: ['45% rechazo de calor','99% UV','Garantía de por vida'], featured: false, flag: '' },
        { name: 'Cerámica 70 IR',      desc: 'Polarizado premium con look claro. Estándar para oficinas.',         from: '$12', unit: '/pie²', bullets: ['65% rechazo de calor','99% UV','Vista cristalina'],   featured: true,  flag: 'Más instalado' },
        { name: 'Espectralmente selectiva', desc: 'Cristal templado, tragaluces, comercial planta baja.',         from: '$18', unit: '/pie²', bullets: ['78% rechazo de calor','99% UV','Cristal seguro'],   featured: false, flag: '' },
      ],
    },
    outside: {
      eyebrow: 'Fuera del metro',
      title: 'Hamptons, Hudson Valley,',
      titleEm: 'o más lejos — viajamos.',
      sub: 'Para proyectos fuera de los cinco condados, Sunblocker corta el polarizado, lo envía al sitio, lleva la cuadrilla, y se queda hasta terminar. La mayoría son comerciales; el mínimo del proyecto justifica el viaje.',
      cards: [
        { kicker: '01', title: 'Manda la spec',     body: 'El mismo chat. Fotos, medidas, tipo de edificio, ZIP. El estimado incluye viaje, hospedaje y per-diem como una línea aparte.' },
        { kicker: '02', title: 'Cortamos y enviamos', body: 'El polarizado se corta en el taller de Brooklyn, se envía al sitio, y queda listo para Ivan y la cuadrilla cuando lleguen.' },
        { kicker: '03', title: 'Instalación en sitio', body: 'Cuadrilla de 2–4 sale al noreste en 7 días. Misma garantía, mismos materiales, mismo número aprobado por Ivan.' },
      ],
      areasLabel: 'Trabajos de viaje recientes',
      areas: ['Hamptons · East End', 'Hudson Valley · Westchester', 'Costa de Connecticut', 'Jersey Shore · Cape May', 'Catskills · Poconos', 'Filadelfia · Princeton'],
      ctaLabel: '¿Proyecto fuera del metro? Dile al chat tu ZIP — cotizamos el viaje.',
    },
    trust: {
      eyebrow: 'Por qué Sunblocker',
      title: 'Instalador real, garantía real,',
      titleEm: 'reseñas reales.',
      sub: 'Sunblocker es Ivan Vasquez, dos guaguas en Brooklyn, y una cuadrilla pequeña. Los clientes chatean. Ivan instala.',
      reviews: [
        { name: 'Maria K.',         loc: 'Park Slope, BK',  stars: 5, text: 'Reservé por el chat un domingo a las 9pm — Ivan aprobó en la mañana, instalación el miércoles. El apartamento está 8° más fresco en la tarde.', tag: 'Residencial' },
        { name: 'Ardent Capital',   loc: 'Midtown, NY',     stars: 5, text: '32 ventanas en un build-out de inquilino. Ivan vino al levantamiento, la cotización llegó el mismo día, instalación corrió dos noches después de horas. Sin perseguir llamadas.', tag: 'Comercial' },
        { name: 'Sam at Pinhole',   loc: 'Lower East Side', stars: 5, text: 'Polarizado de seguridad + bloqueo UV para el local. Cotización fácil, Ivan vino a verificar, equipo limpio y se fue en un día.', tag: 'Local' },
      ],
      credentials: [
        { l: 'Distribuidor 3M Autorizado', s: 'Desde 2014' },
        { l: 'LLumar Pro',                  s: 'Instalador certificado' },
        { l: 'Garantía de por vida',         s: 'Residencial + comercial' },
        { l: 'Con licencia y asegurado',     s: 'NY #SB-984221 · $2M GL' },
      ],
    },
    about: {
      eyebrow: 'Sobre Ivan',
      placeholder: 'Pon una foto de Ivan',
      tag: 'IVAN VASQUEZ · DUEÑO',
      quote: '"Prefiero estar en un trabajo que en el teléfono. El chat reserva los trabajos. Yo llego e instalo el cristal."',
      body: 'Ivan fundó Sunblocker después de una década en talleres de hojalatería que le enseñaron que un buen polarizado es mitad arte, mitad logística. Hoy corre dos guaguas por el área metropolitana de NY y revisa cada estimado él mismo — usualmente desde un sitio de trabajo, entre cortes.',
      sig: '— Ivan, fundador',
    },
    finalcta: {
      eyebrow: 'Cuando estés listo',
      title1: 'Deja de sudar.',
      title2: 'Empieza el chat.',
      sub: 'Tira una foto, recibe un número, reserva con Ivan.',
      cta: 'Abrir el chat',
      callShort: 'O llama al',
      phone: '(212) 555-0199',
    },
    footer: {
      tag: 'Polarizado profesional, reservación inteligente. NY metro y más allá.',
      services: 'Servicios',
      area: 'Área de servicio',
      contact: 'Contacto',
      servicesItems: ['Comercial', 'TI · oficinas', 'Residencial', 'Auto · todas las marcas'],
      areaItems: ['Manhattan · Brooklyn · Queens', 'The Bronx · Staten Island', 'Long Island · Westchester', 'Hudson Valley · Trabajos de viaje'],
      contactItems: [
        { label: '(212) 555-0199', href: 'tel:+12125550199' },
        { label: 'hi@thesunblocker.com', href: 'mailto:hi@thesunblocker.com' },
        { label: 'Lun–Sáb · 8a–6p', href: '#' },
        { label: 'Chat 24/7', href: '#' },
      ],
      copyright: '© 2026 Sunblocker LLC · NY #SB-984221',
      credit: 'Infraestructura de reservas por',
      creditLink: 'Present Day',
    },
    chatWidget: {
      headerName: 'Sunblocker',
      headerSub: 'En línea · respondiendo ahora',
      greeting: '¡Hola! Sunblocker aquí 👋 ¿Qué tipo de proyecto — oficina, local, casa, o auto?',
      placeholder: 'Cuéntanos sobre tus ventanas…',
      error: 'Hmm, tengo problemas de conexión. Vuelve a intentar, o escribe a Ivan al (212) 555-0199.',
      quickActionsLabel: 'Empezar rápido',
      quickActions: [
        { id: 'office',     label: 'Oficina / comercial', prompt: '¿Tipo de edificio y piso, cuántos paneles, dan al oeste o sur, y la situación del contrato (TI, dueño, acceso después de horas)? Las fotos ayudan si tienes.' },
        { id: 'storefront', label: 'Local comercial',     prompt: 'Local. ¿Pies cuadrados de cristal, planta baja o arriba, y la meta — calor, brillo, UV en mercancía, polarizado de seguridad, branding, o privacidad?' },
        { id: 'home',       label: 'Casa / apartamento',  prompt: 'Polarizado de casa. ¿Qué cuartos, qué dirección dan esas ventanas, y cuál es el problema principal — calor, brillo en TV/monitor, descolorido, o privacidad?' },
        { id: 'car',        label: 'Auto · cualquiera',   prompt: 'Polarizado de auto. ¿Año, marca, modelo, y qué ventanas? En NY las del frente requieren mínimo 70% VLT. Tonos comunes son 5%, 20%, 35%, 50%.' },
      ],
    },
  },
};

const LangContext = React.createContext({ lang: 'en', setLang: () => {}, t: TRANSLATIONS.en });

function LangProvider({ children }) {
  const [lang, _setLang] = React.useState(() => {
    try { return localStorage.getItem('sb-lang') || 'en'; } catch { return 'en'; }
  });
  const setLang = (l) => {
    _setLang(l);
    try { localStorage.setItem('sb-lang', l); } catch {}
    document.documentElement.setAttribute('lang', l);
  };
  React.useEffect(() => {
    document.documentElement.setAttribute('lang', lang);
  }, [lang]);
  const value = React.useMemo(() => ({
    lang, setLang, t: TRANSLATIONS[lang] || TRANSLATIONS.en,
  }), [lang]);
  return <LangContext.Provider value={value}>{children}</LangContext.Provider>;
}

function useLang() { return React.useContext(LangContext); }

Object.assign(window, { TRANSLATIONS, LangContext, LangProvider, useLang });
