// Lightweight i18n: a dictionary + a hook + a language toggle.

const I18N = {
  es: {
    // nav
    "nav.work": "Logros",
    "nav.stack": "Stack",
    "nav.edu": "Educación",
    "nav.contact": "Contacto",
    "nav.hire": "Contáctame",
    "nav.badge": "portfolio · 2026",
    "nav.cv": "CV",

    // cv section
    "cv.label": "Currículum · versión 2026",
    "cv.title.a": "Descarga el CV",
    "cv.title.em": "en un solo archivo.",
    "cv.kicker":
      "Toda la experiencia, el stack y los logros verificados en un PDF limpio, listo para compartir con tu equipo.",
    "cv.filename": "Ana-Garcia-CV.pdf",
    "cv.meta.pages": "páginas",
    "cv.meta.lang": "idioma",
    "cv.meta.langValue": "Español",
    "cv.meta.updated": "actualizado",
    "cv.meta.updatedValue": "abr 2026",
    "cv.meta.size": "tamaño",
    "cv.download": "Descargar PDF",
    "cv.preview": "Vista previa",
    "cv.previewNote": "Abre en una pestaña nueva",

    // hero
    "hero.availability": "Disponible — proyectos Q2/Q3 2026",
    "hero.soy": "soy ",
    "hero.summary":
      "Transformo datos en decisiones estratégicas. Más de 3 años diseñando dashboards, automatizando reportes y construyendo procesos ETL que le ahorran tiempo —y errores— a equipos que operan a escala.",
    "hero.cta.work": "Ver logros",
    "hero.cta.mail": "Escribirme",
    "hero.meta.location": "Ubicación",
    "hero.meta.experience": "Experiencia",
    "hero.meta.focus": "Enfoque",
    "hero.meta.focus.v": "BI · ETL · Automatización",
    "hero.meta.years": "3+ años",
    "hero.scroll": "scroll · logros",

    // hero roles
    "role.analyst": "Data Analyst",
    "role.bi": "Especialista en BI",
    "role.auto": "Experta en Automatización",

    // hero visual
    "visual.file": "dashboards / overview.pbix",
    "visual.sla": "Reacción SLA",
    "visual.slaNote": "vs. baseline Q1",
    "visual.claims": "Reclamos",
    "visual.claimsNote": "dataset mensual",
    "visual.savings": "Ahorro",
    "visual.savingsUnit": "/ sem",
    "visual.savingsNote": "automatización",
    "visual.errors": "Tiempo de reacción (h) · mensual",
    "visual.errorsDelta": "−35% post rollout",
    "visual.live": "v2025.04 · live",

    // bento / work
    "work.label": "Logros · experiencia en retail",
    "work.title.a": "Datos operando a escala,",
    "work.title.b": "con impacto medible.",
    "work.kicker":
      "Selección de resultados de alto volumen durante +3 años como analista en retail: reclamos, SLA, automatización y gobernanza.",
    "work.footnote": "Contexto · analista en grandes volúmenes de datos de retail",
    "work.verified": "métricas verificadas internamente",
    "work.period": "periodo 2022 – 2025",

    // tiles
    "tile.chip.case": "Caso destacado · retail",
    "tile.chip.auto": "Automatización",
    "tile.chip.etl": "ETL",
    "tile.chip.reporting": "Reporting",
    "tile.etl.pipeline": "pipeline · daily",

    // highlights (per id)
    "hl.reclamos.title": "Dashboard operativo · +25.000 reclamos",
    "hl.reclamos.body":
      "Diseño y construcción de un dashboard consolidado que unifica +25.000 reclamos mensuales desde múltiples fuentes. Redujo el tiempo de reacción operativa en un 35% al exponer SLA, backlog y causas-raíz en una sola vista.",
    "hl.reclamos.kpiLabel": "tiempo de reacción",

    "hl.automatizacion.title": "Automatización SQL + Excel",
    "hl.automatizacion.body":
      "Scripts de consolidación y macros que reemplazaron tareas manuales recurrentes. 12 horas semanales liberadas para análisis en lugar de data-wrangling.",
    "hl.automatizacion.kpiLabel": "ahorradas / semana",

    "hl.etl.title": "Procesos ETL · SQL Server · Backstore · Jarvis",
    "hl.etl.body":
      "Pipelines de extracción y normalización entre SQL Server, Backstore y Jarvis. Datos conciliados a diario, trazables y listos para consumo analítico.",

    "hl.standardization.title": "Estandarización de reporting",
    "hl.standardization.body":
      "Plantillas, métricas y naming unificados entre áreas. −20% errores en reportes publicados.",
    "hl.standardization.kpiLabel": "errores de reporting",

    // stack
    "stack.label": "Tech stack · herramientas en producción",
    "stack.title.a": "Herramientas con las que",
    "stack.title.em": "entrego resultados",
    "stack.title.b": "a diario.",
    "stack.kicker":
      "Agrupadas por lenguaje, visualización y metodología. Los niveles reflejan proyectos reales en los últimos 36 meses.",
    "stack.skillsSuffix": "skills",
    "stack.group.lang": "Lenguajes",
    "stack.group.viz": "Visualización",
    "stack.group.tools": "Herramientas & Métodos",

    // timeline / edu
    "edu.label": "Formación académica · continua",
    "edu.title.a": "Una base técnica",
    "edu.title.em": "actualizada cada año.",
    "edu.kicker":
      "De técnico a ingeniera, con especialización en Business Intelligence y Power BI. Aprendizaje constante.",
    "edu.kind.course": "course",
    "edu.kind.diploma": "diploma",
    "edu.kind.degree": "degree",
    "edu.kind.technician": "technician",

    "edu.powerbi.title": "Power BI 2025",
    "edu.powerbi.org": "Curso especializado",
    "edu.powerbi.detail": "DAX avanzado, modelado tabular, rendimiento.",

    "edu.diplomado.title": "Diplomado en Inteligencia de Negocios",
    "edu.diplomado.org": "Universidad / Postgrado",
    "edu.diplomado.detail": "Gobierno de datos, arquitectura BI, visualización.",

    "edu.ingenieria.title": "Ingeniería en Informática",
    "edu.ingenieria.org": "Universidad",
    "edu.ingenieria.detail": "Titulada con mención en sistemas de información.",

    "edu.tecnico.title": "Técnico en Informática",
    "edu.tecnico.org": "Instituto",
    "edu.tecnico.detail": "Base técnica en desarrollo y bases de datos.",

    // footer
    "contact.label": "Contacto · disponible para proyectos",
    "contact.title.a": "Hablemos de",
    "contact.title.em": "tus datos.",
    "contact.kicker":
      "Consultoría BI, dashboards, automatización y pipelines ETL. Remoto desde Santiago o presencial en Las Condes.",
    "contact.email": "Email",
    "contact.phone": "Teléfono",
    "contact.location": "Ubicación",
    "contact.locationValue": "Las Condes, Santiago",
    "footer.signA": "Data",
    "footer.signB": "Decisión",
    "footer.copy": "Santiago, CL",
    "footer.snapshot": "v2026.04 · snapshot",
    "footer.available": "disponible",
  },

  en: {
    // nav
    "nav.work": "Work",
    "nav.stack": "Stack",
    "nav.edu": "Education",
    "nav.contact": "Contact",
    "nav.hire": "Contact me",
    "nav.badge": "portfolio · 2026",
    "nav.cv": "CV",

    // cv section
    "cv.label": "Resume · 2026 edition",
    "cv.title.a": "Download the CV",
    "cv.title.em": "in a single file.",
    "cv.kicker":
      "All the experience, stack, and verified achievements in a clean PDF — ready to share with your team.",
    "cv.filename": "Ana-Garcia-CV.pdf",
    "cv.meta.pages": "pages",
    "cv.meta.lang": "language",
    "cv.meta.langValue": "Spanish",
    "cv.meta.updated": "updated",
    "cv.meta.updatedValue": "Apr 2026",
    "cv.meta.size": "size",
    "cv.download": "Download PDF",
    "cv.preview": "Preview",
    "cv.previewNote": "Opens in a new tab",

    // hero
    "hero.availability": "Available — Q2/Q3 2026 projects",
    "hero.soy": "I’m a ",
    "hero.summary":
      "I turn data into strategic decisions. 3+ years designing dashboards, automating reports, and building ETL processes that save time — and prevent mistakes — for teams operating at scale.",
    "hero.cta.work": "See work",
    "hero.cta.mail": "Get in touch",
    "hero.meta.location": "Location",
    "hero.meta.experience": "Experience",
    "hero.meta.focus": "Focus",
    "hero.meta.focus.v": "BI · ETL · Automation",
    "hero.meta.years": "3+ years",
    "hero.scroll": "scroll · work",

    "role.analyst": "Data Analyst",
    "role.bi": "BI Specialist",
    "role.auto": "Automation Expert",

    "visual.file": "dashboards / overview.pbix",
    "visual.sla": "SLA reaction",
    "visual.slaNote": "vs. Q1 baseline",
    "visual.claims": "Claims",
    "visual.claimsNote": "monthly dataset",
    "visual.savings": "Savings",
    "visual.savingsUnit": "/ wk",
    "visual.savingsNote": "automation",
    "visual.errors": "Reaction time (h) · monthly",
    "visual.errorsDelta": "−35% post-rollout",
    "visual.live": "v2025.04 · live",

    "work.label": "Work · retail experience",
    "work.title.a": "Data operating at scale,",
    "work.title.b": "with measurable impact.",
    "work.kicker":
      "A selection of high-volume outcomes during 3+ years as a retail analyst: claims, SLA, automation, and governance.",
    "work.footnote": "Context · analyst on large retail datasets",
    "work.verified": "metrics internally verified",
    "work.period": "period 2022 – 2025",

    "tile.chip.case": "Featured case · retail",
    "tile.chip.auto": "Automation",
    "tile.chip.etl": "ETL",
    "tile.chip.reporting": "Reporting",
    "tile.etl.pipeline": "pipeline · daily",

    "hl.reclamos.title": "Operations dashboard · 25,000+ claims",
    "hl.reclamos.body":
      "Design and build of a consolidated dashboard that unifies 25,000+ monthly claims across multiple sources. Cut operational reaction time by 35% by exposing SLA, backlog, and root causes in a single view.",
    "hl.reclamos.kpiLabel": "reaction time",

    "hl.automatizacion.title": "SQL + Excel automation",
    "hl.automatizacion.body":
      "Consolidation scripts and macros that replaced recurring manual tasks. 12 weekly hours freed up for analysis instead of data-wrangling.",
    "hl.automatizacion.kpiLabel": "saved / week",

    "hl.etl.title": "ETL processes · SQL Server · Backstore · Jarvis",
    "hl.etl.body":
      "Extraction and normalization pipelines across SQL Server, Backstore, and Jarvis. Data reconciled daily, traceable, and ready for analytical consumption.",

    "hl.standardization.title": "Reporting standardization",
    "hl.standardization.body":
      "Unified templates, metrics, and naming across teams. −20% errors in published reports.",
    "hl.standardization.kpiLabel": "reporting errors",

    "stack.label": "Tech stack · tools in production",
    "stack.title.a": "Tools I use to",
    "stack.title.em": "deliver results",
    "stack.title.b": "every day.",
    "stack.kicker":
      "Grouped by language, visualization, and methodology. Levels reflect real projects over the last 36 months.",
    "stack.skillsSuffix": "skills",
    "stack.group.lang": "Languages",
    "stack.group.viz": "Visualization",
    "stack.group.tools": "Tools & Methods",

    "edu.label": "Education · always learning",
    "edu.title.a": "A technical foundation",
    "edu.title.em": "refreshed every year.",
    "edu.kicker":
      "From technician to engineer, specialized in Business Intelligence and Power BI. Continuous learning.",
    "edu.kind.course": "course",
    "edu.kind.diploma": "diploma",
    "edu.kind.degree": "degree",
    "edu.kind.technician": "technician",

    "edu.powerbi.title": "Power BI 2025",
    "edu.powerbi.org": "Specialized course",
    "edu.powerbi.detail": "Advanced DAX, tabular modeling, performance.",

    "edu.diplomado.title": "Business Intelligence Diploma",
    "edu.diplomado.org": "University / Postgraduate",
    "edu.diplomado.detail": "Data governance, BI architecture, visualization.",

    "edu.ingenieria.title": "Computer Engineering",
    "edu.ingenieria.org": "University",
    "edu.ingenieria.detail": "Graduate with a major in information systems.",

    "edu.tecnico.title": "Computer Technician",
    "edu.tecnico.org": "Institute",
    "edu.tecnico.detail": "Technical foundation in development and databases.",

    "contact.label": "Contact · available for projects",
    "contact.title.a": "Let’s talk about",
    "contact.title.em": "your data.",
    "contact.kicker":
      "BI consulting, dashboards, automation, and ETL pipelines. Remote from Santiago or on-site in Las Condes.",
    "contact.email": "Email",
    "contact.phone": "Phone",
    "contact.location": "Location",
    "contact.locationValue": "Las Condes, Santiago",
    "footer.signA": "Data",
    "footer.signB": "Decision",
    "footer.copy": "Santiago, CL",
    "footer.snapshot": "v2026.04 · snapshot",
    "footer.available": "available",
  },
};

const LangContext = React.createContext({ lang: "es", setLang: () => {} });

function LangProvider({ children }) {
  const [lang, setLangState] = React.useState(() => {
    try { return localStorage.getItem("ag.lang") || "es"; } catch { return "es"; }
  });
  const setLang = React.useCallback((l) => {
    setLangState(l);
    try { localStorage.setItem("ag.lang", l); } catch {}
    document.documentElement.lang = l;
  }, []);
  React.useEffect(() => { document.documentElement.lang = lang; }, [lang]);
  const value = React.useMemo(() => ({ lang, setLang }), [lang, setLang]);
  return <LangContext.Provider value={value}>{children}</LangContext.Provider>;
}

function useT() {
  const { lang } = React.useContext(LangContext);
  const dict = I18N[lang] || I18N.es;
  const t = React.useCallback((key) => (dict[key] !== undefined ? dict[key] : key), [dict]);
  return { t, lang };
}

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

function LangToggle() {
  const { lang, setLang } = useLang();
  const next = lang === "es" ? "en" : "es";
  return (
    <button
      type="button"
      onClick={() => setLang(next)}
      className="lang-toggle"
      aria-label={`Switch language to ${next.toUpperCase()}`}
      title={`Switch to ${next === "es" ? "Español" : "English"}`}
    >
      <span className={lang === "es" ? "active" : ""}>ES</span>
      <span className="sep" aria-hidden="true">/</span>
      <span className={lang === "en" ? "active" : ""}>EN</span>
    </button>
  );
}

Object.assign(window, { I18N, LangContext, LangProvider, useT, useLang, LangToggle });
