const cfg = { page: "caso-retail.html", name: "Retail",
  heroPre: "Cada", heroEm: "tienda", heroPost: ", cada categoría, cada TPV, en", heroHl: "directo",
  lede: "Ventas por tienda, inventario en vivo, márgenes por categoría, omnicanal, forecast de temporada y alertas de stock crítico. Un solo panel para toda tu red.",
  kpis: [{l:"Ventas hoy",v:"€18,420",s:"+14%"},{l:"Tickets",v:"284",s:"+22"},{l:"Margen medio",v:"42%",s:"+1pt"},{l:"Stock crítico",v:"14 SKU",s:"revisar"}],
  dashTitle: "Retail multi-tienda en vivo", dashKpis: [{l:"Tienda top",v:"Madrid",d:"+18% YoY"},{l:"Categoría top",v:"Accesorios",d:"+12%"},{l:"Rotación",v:"42 días",d:"-3d"}],
  capabilities: [
    { tag: "01 · Métricas", title: "Ventas y márgenes por tienda", body: "Ranking en vivo por ventas, margen, ticket medio y conversión. Heatmap geográfico y comparativa YoY.", bullets: ["Ranking por tienda","Ticket medio y unidades","Conversión por hora","Comparativa YoY y vs. budget"] },
    { tag: "02 · P&L", title: "P&L por tienda y categoría", body: "Cuenta de resultados por tienda: ventas, coste de ocupación, personal, márgenes por categoría. Rentabilidad real de cada local.", bullets: ["P&L por tienda","Coste personal y ocupación","Margen por categoría","Contribución de cada local"], hi: true },
    { tag: "03 · Inventario", title: "Stock vivo y rotación", body: "Control por SKU y tienda. Alertas de rotura, detección de slow-movers, valor de inventario a coste.", bullets: ["Stock en vivo por tienda","Rotación por SKU","Slow-movers automáticos","Valor a coste y PMP"] },
    { tag: "04 · Forecast", title: "Forecast por temporada", body: "Proyección de demanda por tienda y categoría. Escenarios rebajas, Navidad, vuelta al cole.", bullets: ["Demanda por tienda/categoría","Escenarios de temporada","Recomendación de reposición","Alertas de cobertura"] },
    { tag: "05 · Omnicanal", title: "Tienda física + online unidos", body: "Une tu TPV con tu ecommerce. Ve venta total por cliente, canibalización entre canales, click & collect.", bullets: ["Clientes cross-canal","Canibalización físico/online","Click & collect tracking","LTV omnicanal"] },
    { tag: "06 · Alertas", title: "Alertas operativas", body: "Stock crítico, tienda con caída de ventas, categoría con margen negativo, cierre de caja con desviación.", bullets: ["Stock < 7 días","Tienda -20% semana","Margen categoría negativo","Desviación de caja"] }
  ],
  flow: [
    { title: "Conectas TPV y ecom", desc: "Shopify, POS, Odoo, Holded, tu banco — integración directa." },
    { title: "Unificamos inventario", desc: "SKUs, variantes, tiendas y almacenes en un único catálogo." },
    { title: "Panel multi-tienda", desc: "Ventas, márgenes e inventario por tienda al minuto." },
    { title: "Decisiones por local", desc: "Sabes qué tienda apoyar, qué producto mover y cuándo reponer." }
  ],
  tools: ["Shopify","Odoo","Holded","Stripe","POS","BBVA"],
  report: [
    { l: "Ventas semanales", v: "€128,400", d: "+14%", pos: true },
    { l: "Tienda top", v: "Madrid", d: "+18% YoY", pos: true },
    { l: "Ticket medio", v: "€64", d: "+€3", pos: true },
    { l: "Rotación media", v: "42 días", d: "-3d", pos: true },
    { l: "Stock crítico", v: "14 SKU", d: "revisar", neg: true },
    { l: "Caja desviación", v: "€48", d: "dentro rango", pos: true }
  ],
  alerts: [
    { k: "neg", t: "Tienda Valencia -22%", s: "Caída de conversión, ticket medio bajo" },
    { k: "warn", t: "Stock crítico · 14 SKU", s: "Cobertura < 7 días en tiendas clave" },
    { k: "pos", t: "Accesorios +12% margen", s: "Categoría subiendo 4 semanas seguidas" },
    { k: "warn", t: "Madrid Gran Vía saturado", s: "85% capacidad en horas punta" }
  ],
  ctaTitle: "Retail que decide por tienda, no por promedio.", seed: 7 };

const cfgEn = { page: "caso-retail.html", name: "Retail",
  heroPre: "Every", heroEm: "store", heroPost: ", every category, every POS, in", heroHl: "real time",
  lede: "Sales per store, live inventory, margins per category, omnichannel, season forecasts and critical-stock alerts. One panel for your whole network.",
  kpis: [{l:"Sales today",v:"€18,420",s:"+14%"},{l:"Tickets",v:"284",s:"+22"},{l:"Avg margin",v:"42%",s:"+1pt"},{l:"Critical stock",v:"14 SKU",s:"review"}],
  dashTitle: "Live multi-store retail", dashKpis: [{l:"Top store",v:"Madrid",d:"+18% YoY"},{l:"Top category",v:"Accessories",d:"+12%"},{l:"Turn rate",v:"42 days",d:"-3d"}],
  capabilities: [
    { tag: "01 · Metrics", title: "Sales and margins per store", body: "Live ranking by sales, margin, average ticket and conversion. Geographic heatmap and YoY comparison.", bullets: ["Ranking per store","Average ticket and units","Conversion by hour","YoY and vs. budget comparison"] },
    { tag: "02 · P&L", title: "P&L per store and category", body: "Income statement per store: sales, occupancy cost, payroll, margins per category. Real profitability for every location.", bullets: ["P&L per store","Payroll and occupancy cost","Margin per category","Contribution per location"], hi: true },
    { tag: "03 · Inventory", title: "Live stock and turn rate", body: "SKU and store control. Stockout alerts, slow-mover detection, inventory value at cost.", bullets: ["Live stock per store","SKU turn rate","Automatic slow-movers","Cost value and weighted avg"] },
    { tag: "04 · Forecast", title: "Season forecast", body: "Demand projection per store and category. Sale, Christmas and back-to-school scenarios.", bullets: ["Demand per store/category","Seasonal scenarios","Restocking recommendations","Coverage alerts"] },
    { tag: "05 · Omnichannel", title: "Physical store + online combined", body: "Pair your POS with your ecommerce. See total spend per customer, cannibalisation between channels, click & collect.", bullets: ["Cross-channel customers","Physical/online cannibalisation","Click & collect tracking","Omnichannel LTV"] },
    { tag: "06 · Alerts", title: "Operational alerts", body: "Critical stock, store with falling sales, negative-margin category, cash drawer with variance.", bullets: ["Stock < 7 days","Store -20% in a week","Negative category margin","Cash variance"] }
  ],
  flow: [
    { title: "Connect POS and ecom", desc: "Shopify, POS, Odoo, Holded, your bank — direct integration." },
    { title: "We unify inventory", desc: "SKUs, variants, stores and warehouses in a single catalogue." },
    { title: "Multi-store panel", desc: "Sales, margins and inventory per store, up to the minute." },
    { title: "Per-location decisions", desc: "Know which store to back, which product to push and when to restock." }
  ],
  tools: ["Shopify","Odoo","Holded","Stripe","POS","BBVA"],
  report: [
    { l: "Weekly sales", v: "€128,400", d: "+14%", pos: true },
    { l: "Top store", v: "Madrid", d: "+18% YoY", pos: true },
    { l: "Avg ticket", v: "€64", d: "+€3", pos: true },
    { l: "Avg turn rate", v: "42 days", d: "-3d", pos: true },
    { l: "Critical stock", v: "14 SKU", d: "review", neg: true },
    { l: "Cash variance", v: "€48", d: "in range", pos: true }
  ],
  alerts: [
    { k: "neg", t: "Valencia store -22%", s: "Conversion drop, low average ticket" },
    { k: "warn", t: "Critical stock · 14 SKU", s: "Coverage < 7 days in key stores" },
    { k: "pos", t: "Accessories +12% margin", s: "Category up 4 weeks in a row" },
    { k: "warn", t: "Madrid Gran Vía saturated", s: "85% capacity at peak hours" }
  ],
  ctaTitle: "Retail that decides per store, not by average.", seed: 7 };

ReactDOM.createRoot(document.getElementById("root")).render(<UseCasePage cfg={cfg} cfgEn={cfgEn} />);
