/* PRODUCTOS SAAS — datos compartidos */ window.MartzProducts = { list: [ { id: 'martz-pos', slug: 'martz-pos', name: 'Martz POS', tag: 'Sistema POS moderno para pequeñas empresas', status: 'Disponible', statusType: 'live', desc: 'Punto de venta e inventario en la nube para negocios locales que necesitan vender rápido, controlar stock y cerrar caja sin Excel.', audience: 'Tiendas, minisúper, cafeterías, restaurantes, pupuserías, ferreterías, papelerías', price: 'Desde $24.99/mes', priceDetail: 'Starter desde $24.99/mes', href: 'productos/martz-pos.html', icon: <>, modules: ['Ventas', 'Inventario', 'Productos', 'Caja', 'Clientes', 'Proveedores', 'Reportes', 'Usuarios', 'Configuración'], featured: true, }, { id: 'martz-hospitality', slug: 'martz-hospitality', name: 'Martz Hospitality', tag: 'Gestión hotelera y reservas integradas', status: 'Próximamente', statusType: 'soon', desc: 'Software para hoteles, hostales y alojamientos que unifica reservas, habitaciones, recepción y restaurante en un solo panel.', audience: 'Hoteles, hostales, alojamientos, apartamentos turísticos, restaurantes con reservas', price: 'Próximamente', priceDetail: 'Próximamente', href: 'productos/martz-hospitality.html', icon: <>, modules: ['Reservas', 'Habitaciones', 'Recepción', 'Housekeeping', 'Restaurante', 'POS', 'Facturación', 'Reportes'], featured: false, }, { id: 'martz-health', slug: 'martz-health', name: 'Martz Health', tag: 'Gestión clínica y expedientes digitales', status: 'Próximamente', statusType: 'soon', desc: 'Plataforma para clínicas, consultorios y laboratorios: pacientes, citas, expedientes y farmacia en un flujo continuo.', audience: 'Clínicas, consultorios, laboratorios, farmacias', price: 'Próximamente', priceDetail: 'Próximamente', href: 'productos/martz-health.html', icon: <>, modules: ['Pacientes', 'Expedientes', 'Citas', 'Médicos', 'Laboratorio', 'Farmacia', 'Caja', 'Reportes'], featured: false, }, ], details: { 'martz-pos': { slug: 'martz-pos', name: 'Martz POS', tag: 'Sistema POS moderno para pequeñas empresas', status: 'Disponible', heroDesc: 'Vende, controla inventario y cierra caja desde cualquier dispositivo. Diseñado para negocios locales que necesitan velocidad en mostrador sin la complejidad de un ERP.', intro: 'Martz POS es el producto SaaS de Martz Forge para retail y food service. Funciona en navegador y tablet, sincroniza inventario en tiempo real y genera reportes que tu contador puede usar sin reinterpretar.', audiences: ['Tiendas', 'Minisúper', 'Cafeterías', 'Restaurantes', 'Pupuserías', 'Ferreterías', 'Papelerías', 'Negocios locales'], features: [ { t: 'Ventas rápidas', d: 'Interfaz optimizada para mostrador: busca productos, aplica descuentos y cobra en segundos.' }, { t: 'Inventario en vivo', d: 'Cada venta actualiza stock automáticamente. Alertas cuando un producto está por agotarse.' }, { t: 'Multi-usuario', d: 'Roles para cajero, supervisor y dueño. Cada quien ve lo que necesita.' }, { t: 'Reportes claros', d: 'Ventas por día, producto y cajero. Exporta a Excel sin fórmulas manuales.' }, { t: 'Funciona offline', d: 'Sigue vendiendo si el internet falla. Sincroniza cuando vuelve la conexión.' }, { t: 'Soporte incluido', d: 'Chat directo con el equipo Martz Forge. Sin tickets eternos.' }, ], modules: ['Ventas', 'Inventario', 'Productos', 'Caja', 'Clientes', 'Proveedores', 'Reportes', 'Usuarios', 'Configuración'], benefits: [ { t: 'Menos mermas', d: 'Control de stock que evita pérdidas por inventario desactualizado.' }, { t: 'Cierre en minutos', d: 'Arqueo de caja automático al final del turno.' }, { t: 'Escala con tu negocio', d: 'De un local a varias sucursales sin cambiar de sistema.' }, { t: 'Sin sorpresas', d: 'Precio mensual fijo. Sin cobro por usuario oculto.' }, ], plans: [ { name: 'Starter', value: 'Para negocios pequeños que quieren empezar a vender con orden.', price: '$24.99', unit: '/mes', capacity: '1 sucursal · 1 caja · 2 usuarios', includes: ['Ventas y tickets', 'Productos e inventario básico', 'Caja diaria', 'Clientes y proveedores', 'Compras básicas', 'Reportes básicos', 'Historial de ventas', 'Respaldo automático'], idealFor: 'Tiendas, cafeterías, pupuserías, papelerías y pequeños negocios.', cta: 'Solicitar demo', featured: false, }, { name: 'Pro', value: 'Para negocios en crecimiento que necesitan más control.', price: '$49.99', unit: '/mes', capacity: '2 sucursales · 5 cajas · 8 usuarios', includes: ['Todo lo del Starter', 'Inventario avanzado', 'Alertas de stock', 'Costos y utilidad por producto', 'Reportes avanzados', 'Productos más y menos vendidos', 'Exportación a Excel/PDF', 'Permisos por usuario', 'Soporte prioritario'], idealFor: 'Minisúper, ferreterías, restaurantes pequeños y negocios con más operación.', cta: 'Solicitar demo', featured: true, }, { name: 'Business', value: 'Para empresas con varias sucursales y mayor volumen.', price: '$89.99', unit: '/mes', capacity: '5 sucursales · 20 cajas · 25 usuarios', includes: ['Todo lo del Pro', 'Dashboard consolidado', 'Reportes por sucursal', 'Comparación entre sucursales', 'Auditoría de acciones', 'Permisos avanzados', 'Bitácora de cambios', 'Respaldos prioritarios', 'Implementación asistida', 'Atención prioritaria'], idealFor: 'Negocios con varias sucursales, más empleados o mayor control operativo.', cta: 'Solicitar demo', featured: false, }, ], plansNote: { title: '¿Necesitas más capacidad?', text: 'Podemos ampliar sucursales, cajas, usuarios o módulos adicionales según tu operación. Si tu negocio requiere procesos únicos, Martz Forge también puede evaluar una solución personalizada.', }, addOns: { title: 'Complementos disponibles', text: 'Los complementos se cotizan según país, alcance e implementación.', items: ['Facturación electrónica', 'Programa de fidelización', 'Pedidos en línea', 'WhatsApp Business', 'App móvil para gerentes', 'Integración con e-commerce'], }, faq: [ { q: '¿Necesito hardware especial?', a: 'No. Funciona en cualquier PC, tablet o laptop con navegador moderno. Compatible con impresoras térmicas estándar.' }, { q: '¿Puedo migrar mi inventario actual?', a: 'Sí. Importamos desde Excel o CSV en la configuración inicial sin costo adicional en planes Pro y Business.' }, { q: '¿Qué pasa si se va el internet?', a: 'El modo offline permite seguir registrando ventas. Al reconectar, todo se sincroniza automáticamente.' }, { q: '¿Hay contrato de permanencia?', a: 'No. Pagas mes a mes y puedes cancelar cuando quieras. Tus datos se exportan en cualquier momento.' }, ], caseLink: { text: 'Ver escenario para restaurantes', href: '../casos.html#restaurantes' }, }, 'martz-hospitality': { slug: 'martz-hospitality', name: 'Martz Hospitality', tag: 'Gestión hotelera y reservas integradas', status: 'Próximamente', heroDesc: 'Un solo sistema para reservas, habitaciones, recepción, housekeeping y restaurante. Pensado para operaciones pequeñas y medianas que hoy coordinan todo en WhatsApp y Excel.', intro: 'Martz Hospitality centraliza la operación de alojamiento y food service. Desde la reserva en línea hasta el check-out, cada movimiento queda registrado y visible para tu equipo.', audiences: ['Hoteles', 'Hostales', 'Alojamientos', 'Apartamentos turísticos', 'Restaurantes con reservas'], features: [ { t: 'Motor de reservas', d: 'Disponibilidad en tiempo real con confirmación automática por email y WhatsApp.' }, { t: 'Mapa de habitaciones', d: 'Estado visual: libre, ocupada, limpieza pendiente, mantenimiento.' }, { t: 'Recepción unificada', d: 'Check-in y check-out con historial del huésped y cargos pendientes.' }, { t: 'Housekeeping', d: 'Lista de tareas por piso con seguimiento en móvil para el equipo de limpieza.' }, { t: 'Restaurante + POS', d: 'Cargos a habitación o cobro directo desde el mismo sistema.' }, { t: 'Facturación', d: 'Comprobantes fiscales integrados según tu país.' }, ], modules: ['Reservas', 'Habitaciones', 'Recepción', 'Housekeeping', 'Restaurante', 'POS', 'Facturación', 'Reportes'], benefits: [ { t: 'Menos overbooking', d: 'Inventario de habitaciones sincronizado en todos los canales.' }, { t: 'Equipo alineado', d: 'Recepción, limpieza y restaurante ven la misma información.' }, { t: 'Ocupación optimizada', d: 'Reportes de temporada para ajustar precios y promociones.' }, { t: 'Experiencia del huésped', d: 'Check-in más rápido y comunicación proactiva.' }, ], plans: [ { name: 'Starter', value: 'Para propietarios y pequeños alojamientos que quieren organizar sus reservas.', price: 'Desde $39.99', unit: '/mes', priceNote: 'Precio estimado de lanzamiento', capacity: '1 propiedad · hasta 10 unidades de alojamiento · hasta 3 usuarios', includes: ['Calendario de disponibilidad', 'Registro y gestión de reservas', 'Datos e historial de huéspedes', 'Check-in y check-out', 'Control de pagos y depósitos', 'Tarifas por temporada', 'Bloqueo de fechas', 'Limpieza básica', 'Reportes básicos', 'Acceso desde navegador', 'Respaldo automático'], idealFor: 'Casas vacacionales, apartamentos turísticos, cabañas, posadas y hostales pequeños.', cta: 'Unirme a la lista', featured: false, }, { name: 'Pro', value: 'Para hoteles y administradores que necesitan más control y automatización.', price: 'Desde $79', unit: '/mes', priceNote: 'Precio estimado de lanzamiento', capacity: 'Hasta 3 propiedades · hasta 40 unidades de alojamiento · hasta 10 usuarios', includes: ['Todo lo del plan Starter', 'Calendario avanzado de reservas', 'Reservas individuales y grupales', 'Asignación y cambio de unidades', 'Housekeeping con tareas y responsables', 'Estados de limpieza en tiempo real', 'Mantenimiento e incidencias', 'Cargos adicionales a la estadía', 'Caja y cierres diarios', 'Reportes avanzados', 'Indicadores de ocupación e ingresos', 'Exportación de reportes', 'Permisos para empleados', 'Soporte prioritario'], idealFor: 'Hoteles pequeños, hostales medianos, ecohoteles y administradores de varias casas o apartamentos.', cta: 'Unirme a la lista', featured: true, featuredLabel: 'Más recomendado', }, { name: 'Business', value: 'Para empresas que administran varias propiedades y una operación más amplia.', price: 'Desde $149', unit: '/mes', priceNote: 'Precio estimado de lanzamiento', capacity: 'Hasta 10 propiedades · hasta 100 unidades de alojamiento · hasta 30 usuarios', includes: ['Todo lo del plan Pro', 'Panel consolidado de propiedades', 'Reportes por propiedad', 'Comparación de ocupación e ingresos', 'Tarifas y temporadas por propiedad', 'Auditoría de acciones', 'Bitácora de cambios', 'Permisos avanzados', 'Indicadores consolidados', 'Implementación asistida', 'Capacitación inicial', 'Atención prioritaria'], idealFor: 'Empresas administradoras, pequeños grupos hoteleros y operadores de varias propiedades vacacionales.', cta: 'Hablar con Martz Forge', featured: false, }, ], plansEyebrow: 'Próximamente', plansTitle: 'Planes pensados para cada tipo de alojamiento.', plansSubtitle: 'Administra reservas, huéspedes, pagos, disponibilidad y limpieza desde un solo lugar. Empieza con las unidades que necesitas y amplía tu operación cuando crezcas.', plansNote: { title: '¿Necesitas más capacidad?', text: 'Podremos ampliar propiedades, unidades de alojamiento y usuarios según tu operación. Si tu negocio necesita procesos únicos o integraciones especiales, Martz Forge también puede evaluar una solución personalizada.', }, addOns: { title: 'Complementos previstos', text: 'Estos complementos se lanzarán gradualmente y podrán tener un costo adicional según país, proveedor e implementación.', items: ['Motor de reservas para tu página web', 'Pagos en línea', 'Facturación electrónica', 'WhatsApp para huéspedes', 'Check-in digital', 'App para limpieza', 'Restaurante y cargos a habitación', 'Integración con canales de reserva'], }, launchNote: 'Los precios y características mostrados son estimaciones iniciales y pueden cambiar antes del lanzamiento oficial. Unirse a la lista de espera no genera ningún cobro ni compromiso.', waitlistNote: 'Los primeros usuarios podrán recibir acceso anticipado, acompañamiento de implementación y precio preferencial de lanzamiento.', faq: [ { q: '¿Cuándo estará disponible?', a: 'Estamos en fase de desarrollo con pilotos en LATAM. Únete a la lista de espera para acceso anticipado.' }, { q: '¿Se integra con Booking o Airbnb?', a: 'Sí, está en el roadmap. Los canales principales de reserva se sincronizarán en el lanzamiento.' }, { q: '¿Funciona para un solo alojamiento?', a: 'Sí. Desde hostales de 6 habitaciones hasta hoteles de 80+ habitaciones.' }, { q: '¿Incluye POS de restaurante?', a: 'Sí. El módulo de restaurante y POS viene integrado, no es un add-on separado.' }, ], caseLink: null, }, 'martz-health': { slug: 'martz-health', name: 'Martz Health', tag: 'Gestión clínica y expedientes digitales', status: 'Próximamente', heroDesc: 'Pacientes, citas, expedientes y farmacia en un flujo continuo. Para clínicas que quieren dejar el papel sin contratar un ERP hospitalario de seis cifras.', intro: 'Martz Health reúne en un solo flujo expediente compartido, agenda inteligente y reportes administrativos para clínicas y consultorios.', audiences: ['Clínicas', 'Consultorios', 'Laboratorios', 'Farmacias'], features: [ { t: 'Expediente digital', d: 'Historial completo del paciente accesible entre sucursales y médicos.' }, { t: 'Agenda inteligente', d: 'Citas con recordatorios automáticos por WhatsApp y SMS.' }, { t: 'Módulo de laboratorio', d: 'Órdenes, resultados y entrega digital al expediente del paciente.' }, { t: 'Farmacia integrada', d: 'Dispensación vinculada a la receta y control de inventario.' }, { t: 'Caja y facturación', d: 'Cobros, seguros y comprobantes en el mismo flujo de la consulta.' }, { t: 'Cumplimiento', d: 'Auditoría de accesos y respaldo automático de expedientes.' }, ], modules: ['Pacientes', 'Expedientes', 'Citas', 'Médicos', 'Laboratorio', 'Farmacia', 'Caja', 'Reportes'], benefits: [ { t: 'Menos no-show', d: 'Recordatorios automáticos que recuperan citas perdidas.' }, { t: 'Médicos informados', d: 'Historial completo antes de cada consulta, sin buscar en carpetas.' }, { t: 'Operación unificada', d: 'Recepción, consultorio y farmacia en un solo sistema.' }, { t: 'Decisiones con datos', d: 'KPIs de ocupación, ingresos y productividad en tiempo real.' }, ], plans: [ { name: 'Lanzamiento', price: 'Próximamente', unit: '', note: 'Lista de espera con demo personalizada para tu clínica', cta: 'Unirme a la lista', featured: true }, ], faq: [ { q: '¿Es compatible con normativas de salud?', a: 'Diseñado con auditoría de accesos, respaldo cifrado y permisos por rol según LFPDPPP y estándares de la industria.' }, { q: '¿Funciona para clínicas multi-sucursal?', a: 'Sí. Expediente compartido entre sucursales con permisos configurables por médico y ubicación.' }, { q: '¿Se integra con laboratorios externos?', a: 'En el roadmap. Los resultados se podrán importar automáticamente al expediente.' }, { q: '¿Cuándo puedo probarlo?', a: 'Únete a la lista de espera. Estamos seleccionando clínicas piloto en LATAM para la beta.' }, ], caseLink: { text: 'Ver escenario para clínicas', href: '../casos.html#clinicas' }, }, }, compareRows: [ ['Implementación', 'Días, sin proyecto custom', 'Semanas a meses'], ['Costo inicial', 'Desde $24.99/mes', 'Inversión según alcance'], ['Ideal para', 'Operaciones estándar del sector', 'Procesos únicos o integraciones complejas'], ['Personalización', 'Configuración y módulos', 'Lógica de negocio a medida'], ['Soporte', 'Incluido en suscripción', 'SLA dedicado'], ['Propiedad del código', 'Licencia de uso', 'Código y datos tuyos'], ], benefitsGeneral: [ { t: 'Listo para operar', d: 'Sin proyecto de implementación de meses. Configuras y vendes el mismo día.', i: <> }, { t: 'Actualizaciones incluidas', d: 'Nuevas funciones y parches de seguridad sin costo adicional.', i: <> }, { t: 'Hecho en LATAM', d: 'Precios en dólares accesibles, soporte en español, horario regional.', i: <> }, { t: 'Escala cuando creces', d: 'Sube de plan o combina con software a medida sin migrar de proveedor.', i: <> }, ], faqGeneral: [ { q: '¿Cuál es la diferencia entre Productos SaaS y Servicios a medida?', a: 'Los productos SaaS son software propio de Martz Forge listo para usar con suscripción mensual. Los servicios a medida son proyectos personalizados construidos para tu operación específica.' }, { q: '¿Puedo usar un producto SaaS y también contratar desarrollo custom?', a: 'Sí. Muchos clientes empiezan con un producto SaaS y luego agregan integraciones o módulos custom según crecen.' }, { q: '¿Los productos están disponibles en mi país?', a: 'Sí. Operamos en toda LATAM con precios en USD y soporte en español.' }, { q: '¿Qué pasa con mis datos si cancelo?', a: 'Exportas todo en formatos estándar (CSV, JSON). Sin bloqueos ni penalizaciones.' }, { q: '¿Ofrecen demo antes de contratar?', a: 'Sí. Martz POS tiene demo en vivo. Hospitality y Health tienen lista de espera con demo personalizada.' }, ], /* Demos interactivos por módulo — datos de demostración (hardcodeados) */ moduleDemos: { 'martz-pos': { 'Ventas': { ic: 'cart', kpis: [{ l: 'Ventas hoy', v: '$2,840', d: '+12% vs ayer' }, { l: 'Tickets', v: '84', d: '+6' }, { l: 'Ticket prom.', v: '$33.80', d: '+2.1%' }, { l: 'Devoluciones', v: '2', d: '−1', down: true }], blocks: [ { type: 'chart', t: 'Ventas · últimos 14 días', legend: [{ c: '#22c55e', l: 'Ventas' }, { c: '#06b6d4', l: 'Meta' }] }, { type: 'rows', items: [ { a: '#84', n: 'Coca 600ml ×2 · Pan francés ×3', t: '14:32', s: '$58.00', st: 'ok' }, { a: '#83', n: 'Café americano · Muffin', t: '14:26', s: '$41.50', st: 'ok' }, { a: '#82', n: 'Recarga saldo · Cargador USB', t: '14:19', s: '$120.00', st: 'ok' }, { a: '#81', n: 'Detergente 1L ×2', t: '14:05', s: '$36.00', st: 'ok' }, ] }, ] }, 'Inventario': { ic: 'box', kpis: [{ l: 'Productos', v: '512', d: '+12' }, { l: 'Stock bajo', v: '9', d: '−3', down: true }, { l: 'Valor inventario', v: '$18,400', d: '+5.2%' }, { l: 'Rotación', v: '2.1x', d: '+0.3x' }], blocks: [{ type: 'table', status: true, cols: ['Producto', 'Categoría', 'Stock', 'Estado'], rows: [ ['Coca-Cola 600ml', 'Bebidas', '145', 'OK'], ['Pan francés', 'Panadería', '32', 'OK'], ['Detergente 1L', 'Limpieza', '7', 'Bajo'], ['Café molido 500g', 'Abarrotes', '3', 'Crítico'], ['Azúcar 1kg', 'Abarrotes', '88', 'OK'], ] }] }, 'Productos': { ic: 'tag', kpis: [{ l: 'SKUs', v: '512', d: '+12' }, { l: 'Categorías', v: '24', d: '+2' }, { l: 'Margen prom.', v: '38%', d: '+1.5pts' }, { l: 'Sin movimiento', v: '12', d: '−4', down: true }], blocks: [{ type: 'table', cols: ['Producto', 'Precio', 'Categoría', 'Vendidos'], rows: [ ['Coca-Cola 600ml', '$1.00', 'Bebidas', '1,204'], ['Pan francés', '$0.15', 'Panadería', '980'], ['Café americano', '$1.25', 'Cafetería', '642'], ['Cargador USB-C', '$8.00', 'Accesorios', '58'], ] }] }, 'Caja': { ic: 'cash', kpis: [{ l: 'En caja', v: '$1,240', d: 'turno actual' }, { l: 'Ingresos', v: '$2,840', d: '+12%' }, { l: 'Egresos', v: '$320', d: '−2' }, { l: 'Arqueo', v: 'OK', d: 'cuadrado' }], blocks: [{ type: 'rows', items: [ { a: 'V', n: 'Venta ticket #84', t: '14:32', s: '+$58.00', st: 'ok' }, { a: 'R', n: 'Retiro de efectivo', t: '13:10', s: '−$100.00', st: 'warn' }, { a: 'V', n: 'Venta ticket #83', t: '14:26', s: '+$41.50', st: 'ok' }, { a: 'G', n: 'Gasto · bolsas', t: '11:40', s: '−$12.00', st: 'warn' }, ] }] }, 'Clientes': { ic: 'users', kpis: [{ l: 'Clientes', v: '1,204', d: '+18' }, { l: 'Nuevos (mes)', v: '34', d: '+12%' }, { l: 'Con crédito', v: '42', d: '+3' }, { l: 'Puntos canjeados', v: '320', d: '+40' }], blocks: [{ type: 'table', status: true, cols: ['Cliente', 'Última compra', 'Compras', 'Estado'], rows: [ ['María Rodríguez', 'Hoy', '128', 'Activo'], ['Javier López', 'Ayer', '96', 'Activo'], ['Ana Carrillo', 'Hace 2 sem', '54', 'Crédito'], ['Carlos Méndez', 'Hace 3 meses', '12', 'Inactivo'], ] }] }, 'Proveedores': { ic: 'truck', kpis: [{ l: 'Proveedores', v: '38', d: '+2' }, { l: 'Órdenes activas', v: '6', d: '+1' }, { l: 'Por pagar', v: '$4,200', d: '−$300', down: true }, { l: 'Entregas hoy', v: '3', d: 'en ruta' }], blocks: [{ type: 'table', status: true, cols: ['Proveedor', 'Categoría', 'Órdenes', 'Estado'], rows: [ ['Distribuidora Sur', 'Bebidas', '3', 'OK'], ['Panificadora León', 'Panadería', '2', 'OK'], ['Abarrotes Mayoreo', 'Abarrotes', '1', 'Pendiente'], ['Limpieza Total', 'Limpieza', '0', 'OK'], ] }] }, 'Reportes': { ic: 'chart', kpis: [{ l: 'Ventas (mes)', v: '$58,400', d: '+8.4%' }, { l: 'Margen', v: '37%', d: '+1.5pts' }, { l: 'Mejor día', v: 'Sábado', d: '$4,120' }, { l: 'Unidades vendidas', v: '3,120', d: '+6%' }], blocks: [ { type: 'chart', t: 'Ingresos · 6 meses', legend: [{ c: '#22c55e', l: 'Ingresos' }, { c: '#06b6d4', l: 'Año anterior' }] }, { type: 'table', status: true, cols: ['Producto', 'Vendidos', 'Ingresos', 'Tendencia'], rows: [ ['Coca-Cola 600ml', '1,204', '$1,204', '↑ +12%'], ['Pan francés', '980', '$147', '↑ +8%'], ['Café americano', '642', '$802', '↑ +15%'], ['Cigarros', '512', '$1,536', '↓ -3%'], ] }, ] }, 'Usuarios': { ic: 'user', kpis: [{ l: 'Usuarios', v: '8', d: '+1' }, { l: 'Activos', v: '6', d: 'ahora' }, { l: 'Roles', v: '3', d: 'configurados' }, { l: 'Sesiones hoy', v: '14', d: '+2' }], blocks: [{ type: 'table', status: true, cols: ['Usuario', 'Rol', 'Sucursal', 'Estado'], rows: [ ['Ana Torres', 'Administrador', 'Central', 'Activo'], ['Luis Gómez', 'Cajero', 'Central', 'Activo'], ['Sofía Ruiz', 'Cajero', 'Sucursal 2', 'Activo'], ['Pedro Díaz', 'Supervisor', 'Sucursal 2', 'Inactivo'], ] }] }, 'Configuración': { ic: 'gear', kpis: [{ l: 'Sucursales', v: '2', d: 'activas' }, { l: 'Impresoras', v: '3', d: 'conectadas' }, { l: 'Moneda', v: 'USD', d: '+ IVA 13%' }, { l: 'Respaldo', v: 'Auto', d: 'diario' }], blocks: [{ type: 'rows', items: [ { a: 'IMP', n: 'Impresora térmica · Epson TM-T20', t: 'Mostrador', s: 'Conectado', st: 'ok' }, { a: 'WA', n: 'WhatsApp Business · notificaciones', t: 'Ventas', s: 'Conectado', st: 'ok' }, { a: 'SC', n: 'Lector de código de barras', t: 'Mostrador', s: 'Conectado', st: 'ok' }, { a: 'FE', n: 'Facturación electrónica', t: 'Fiscal', s: 'Pendiente', st: 'warn' }, ] }] }, }, 'martz-hospitality': { 'Reservas': { ic: 'calendar', kpis: [{ l: 'Reservas hoy', v: '12', d: '+3' }, { l: 'Check-in', v: '5', d: 'pendientes' }, { l: 'Check-out', v: '4', d: 'hoy' }, { l: 'Ocupación', v: '78%', d: '+6pts' }], blocks: [{ type: 'rows', items: [ { a: 'FL', n: 'Familia López · Hab 204', t: '2 noches', s: 'Confirmada', st: 'ok' }, { a: 'JM', n: 'Juan Martínez · Hab 110', t: '1 noche', s: 'Check-in hoy', st: 'info' }, { a: 'CG', n: 'Carla Gómez · Suite 301', t: '3 noches', s: 'Confirmada', st: 'ok' }, { a: 'RB', n: 'Roberto Blanco · Hab 208', t: '2 noches', s: 'Por confirmar', st: 'warn' }, ] }] }, 'Habitaciones': { ic: 'bed', kpis: [{ l: 'Habitaciones', v: '42', d: 'total' }, { l: 'Ocupadas', v: '33', d: '78%' }, { l: 'Libres', v: '6', d: 'listas' }, { l: 'Limpieza', v: '3', d: 'en proceso' }], blocks: [{ type: 'grid', items: [ { t: '201', s: 'busy' }, { t: '202', s: 'busy' }, { t: '203', s: 'free' }, { t: '204', s: 'busy' }, { t: '205', s: 'clean' }, { t: '206', s: 'busy' }, { t: '301', s: 'busy' }, { t: '302', s: 'free' }, { t: '303', s: 'busy' }, { t: '304', s: 'maint' }, { t: '305', s: 'busy' }, { t: '306', s: 'clean' }, ] }] }, 'Recepción': { ic: 'bell', kpis: [{ l: 'Check-in hoy', v: '5', d: '2 pendientes' }, { l: 'Check-out hoy', v: '4', d: '1 tarde' }, { l: 'En casa', v: '33', d: 'huéspedes' }, { l: 'Mensajes', v: '6', d: '+2' }], blocks: [{ type: 'rows', items: [ { a: 'FL', n: 'Familia López · Hab 204', t: 'Check-in', s: '11:40', st: 'ok' }, { a: 'AM', n: 'Ana Molina · Hab 118', t: 'Check-out', s: 'Recordatorio enviado', st: 'info' }, { a: 'JP', n: 'Jorge Peña · Hab 210', t: 'Late check-out', s: 'Pendiente', st: 'warn' }, ] }] }, 'Housekeeping': { ic: 'broom', kpis: [{ l: 'Tareas', v: '14', d: 'hoy' }, { l: 'Completadas', v: '9', d: '64%' }, { l: 'Pendientes', v: '5', d: '−2' }, { l: 'Prioridad', v: 'Piso 2', d: '3 hab' }], blocks: [{ type: 'rows', items: [ { a: '204', n: 'Limpieza salida · Hab 204', t: 'Piso 2', s: 'En proceso', st: 'info' }, { a: '305', n: 'Limpieza estancia · Hab 305', t: 'Piso 3', s: 'Completada', st: 'ok' }, { a: '302', n: 'Mantenimiento AC · Hab 302', t: 'Piso 3', s: 'Pendiente', st: 'warn' }, { a: '118', n: 'Limpieza salida · Hab 118', t: 'Piso 1', s: 'Completada', st: 'ok' }, ] }] }, 'Restaurante': { ic: 'food', kpis: [{ l: 'Mesas', v: '18', d: '11 ocupadas' }, { l: 'Órdenes activas', v: '7', d: '+2' }, { l: 'Ticket prom.', v: '$24', d: '+3%' }, { l: 'Ventas hoy', v: '$980', d: '+8%' }], blocks: [{ type: 'rows', items: [ { a: 'M5', n: 'Mesa 5 · 2 platos fuertes', t: '12:40', s: 'En proceso', st: 'info' }, { a: 'M2', n: 'Mesa 2 · Desayuno ×3', t: '09:15', s: 'Servido', st: 'ok' }, { a: 'H1', n: 'Room service · Hab 204', t: '13:05', s: 'Cargo a hab.', st: 'ok' }, { a: 'M9', n: 'Mesa 9 · Bebidas', t: '13:10', s: 'Pendiente', st: 'warn' }, ] }] }, 'POS': { ic: 'cart', kpis: [{ l: 'Ventas hoy', v: '$1,180', d: '+6%' }, { l: 'Cargos a hab.', v: '8', d: '+3' }, { l: 'Tickets', v: '42', d: '+5' }, { l: 'Propinas', v: '$140', d: '+12%' }], blocks: [{ type: 'rows', items: [ { a: '#42', n: 'Bar · 2 cócteles', t: '20:15', s: '$18.00', st: 'ok' }, { a: '#41', n: 'Restaurante · Cena ×2', t: '20:02', s: '$52.00', st: 'ok' }, { a: 'H2', n: 'Cargo a Hab 301 · Spa', t: '18:40', s: '$65.00', st: 'info' }, ] }] }, 'Facturación': { ic: 'receipt', kpis: [{ l: 'Facturas (mes)', v: '214', d: '+9%' }, { l: 'Emitidas hoy', v: '9', d: '+2' }, { l: 'Por cobrar', v: '$3,400', d: '−$500', down: true }, { l: 'Anuladas', v: '1', d: '0.4%' }], blocks: [{ type: 'table', status: true, cols: ['Folio', 'Huésped', 'Monto', 'Estado'], rows: [ ['F-2041', 'Familia López', '$248.00', 'Pagada'], ['F-2040', 'Carla Gómez', '$540.00', 'Pagada'], ['F-2039', 'Roberto Blanco', '$196.00', 'Pendiente'], ['F-2038', 'Empresa Andina', '$1,120.00', 'Pendiente'], ] }] }, 'Reportes': { ic: 'chart', kpis: [{ l: 'Ingresos (mes)', v: '$84K', d: '+7.2%' }, { l: 'Ocupación', v: '74%', d: '+5pts' }, { l: 'ADR', v: '$92', d: '+3%' }, { l: 'RevPAR', v: '$68', d: '+6%' }], blocks: [ { type: 'chart', t: 'Ocupación · 6 meses', legend: [{ c: '#22c55e', l: 'Ocupación' }, { c: '#06b6d4', l: 'Meta' }] }, { type: 'table', status: true, cols: ['Canal', 'Reservas', 'Ingresos', 'Tendencia'], rows: [ ['Directo', '420', '$38,200', '↑ +12%'], ['Booking', '310', '$26,400', '↑ +5%'], ['Airbnb', '180', '$14,100', '↑ +9%'], ['Walk-in', '90', '$5,300', '↓ -2%'], ] }, ] }, }, 'martz-health': { 'Pacientes': { ic: 'users', kpis: [{ l: 'Total pacientes', v: '2,140', d: '+34' }, { l: 'Activos', v: '1,320', d: '+5.2%' }, { l: 'Nuevos (mes)', v: '34', d: '+12%' }, { l: 'Retención', v: '94%', d: '+2pts' }], blocks: [{ type: 'table', status: true, cols: ['Paciente', 'Última visita', 'Médico', 'Estado'], rows: [ ['María Rodríguez', '15 jun 2026', 'Dra. Salas', 'Activo'], ['Javier López', '22 jun 2026', 'Dr. Ponce', 'Activo'], ['Ana Carrillo', '29 jun 2026', 'Dra. Salas', 'Pendiente'], ['Carlos Méndez', '10 mar 2026', 'Dr. Ruiz', 'Inactivo'], ] }] }, 'Expedientes': { ic: 'folder', kpis: [{ l: 'Expedientes', v: '2,140', d: 'digitales' }, { l: 'Actualizados hoy', v: '28', d: '+6' }, { l: 'Compartidos', v: '12', d: 'entre sedes' }, { l: 'Pendientes', v: '4', d: 'firma' }], blocks: [{ type: 'rows', items: [ { a: 'MR', n: 'María Rodríguez · Nota de evolución', t: 'Dra. Salas', s: 'Actualizado', st: 'ok' }, { a: 'JL', n: 'Javier López · Receta agregada', t: 'Dr. Ponce', s: 'Actualizado', st: 'ok' }, { a: 'AC', n: 'Ana Carrillo · Resultado de lab', t: 'Laboratorio', s: 'Nuevo', st: 'info' }, { a: 'RS', n: 'Roberto Sánchez · Consentimiento', t: 'Recepción', s: 'Falta firma', st: 'warn' }, ] }] }, 'Citas': { ic: 'calendar', kpis: [{ l: 'Citas hoy', v: '42', d: '+12%' }, { l: 'Confirmadas', v: '38', d: '90%' }, { l: 'Pendientes', v: '4', d: '−2' }, { l: 'No-show', v: '6%', d: '−2.1pts', down: true }], blocks: [{ type: 'rows', items: [ { a: 'MR', n: 'María Rodríguez · Consulta general', t: '15:00', s: 'Confirmada', st: 'ok' }, { a: 'JL', n: 'Javier López · Seguimiento', t: '15:30', s: 'Recordatorio enviado', st: 'info' }, { a: 'AC', n: 'Ana Carrillo · Primera vez', t: '16:00', s: 'Falta confirmar', st: 'warn' }, { a: 'CM', n: 'Carlos Méndez · Cardiología', t: '16:30', s: 'Confirmada', st: 'ok' }, ] }] }, 'Médicos': { ic: 'cross', kpis: [{ l: 'Médicos', v: '18', d: '+1' }, { l: 'En consulta', v: '7', d: 'ahora' }, { l: 'Disponibles', v: '5', d: 'hoy' }, { l: 'Especialidades', v: '9', d: 'activas' }], blocks: [{ type: 'table', status: true, cols: ['Médico', 'Especialidad', 'Citas hoy', 'Estado'], rows: [ ['Dra. Salas', 'Medicina general', '12', 'En consulta'], ['Dr. Ponce', 'Cardiología', '8', 'Disponible'], ['Dr. Ruiz', 'Dermatología', '6', 'En consulta'], ['Dra. León', 'Pediatría', '0', 'Ausente'], ] }] }, 'Laboratorio': { ic: 'flask', kpis: [{ l: 'Órdenes hoy', v: '24', d: '+4' }, { l: 'Resultados listos', v: '18', d: '75%' }, { l: 'En proceso', v: '6', d: '−1' }, { l: 'Críticos', v: '1', d: 'atención', down: true }], blocks: [{ type: 'table', status: true, cols: ['Orden', 'Paciente', 'Examen', 'Estado'], rows: [ ['L-3120', 'María Rodríguez', 'Hemograma', 'Listo'], ['L-3119', 'Javier López', 'Glucosa', 'Listo'], ['L-3118', 'Ana Carrillo', 'Perfil lipídico', 'En proceso'], ['L-3117', 'Roberto Sánchez', 'Cultivo', 'Crítico'], ] }] }, 'Farmacia': { ic: 'pill', kpis: [{ l: 'Recetas hoy', v: '31', d: '+5' }, { l: 'Dispensadas', v: '27', d: '87%' }, { l: 'Stock bajo', v: '5', d: 'revisar', down: true }, { l: 'Valor inv.', v: '$42K', d: '+3%' }], blocks: [{ type: 'table', status: true, cols: ['Medicamento', 'Categoría', 'Stock', 'Estado'], rows: [ ['Paracetamol 500mg', 'Analgésico', '145', 'OK'], ['Amoxicilina 500mg', 'Antibiótico', '62', 'OK'], ['Insulina NPH', 'Crónico', '9', 'Bajo'], ['Salbutamol inhalador', 'Respiratorio', '3', 'Crítico'], ] }] }, 'Caja': { ic: 'cash', kpis: [{ l: 'En caja', v: '$980', d: 'turno' }, { l: 'Ingresos', v: '$4,120', d: '+8%' }, { l: 'Seguros', v: '$1,340', d: '+5%' }, { l: 'Arqueo', v: 'OK', d: 'cuadrado' }], blocks: [{ type: 'rows', items: [ { a: 'C', n: 'Consulta general · María R.', t: '15:10', s: '+$40.00', st: 'ok' }, { a: 'S', n: 'Copago seguro · Javier L.', t: '14:50', s: '+$15.00', st: 'info' }, { a: 'L', n: 'Laboratorio · Ana C.', t: '14:30', s: '+$65.00', st: 'ok' }, { a: 'R', n: 'Reembolso · error de cobro', t: '13:20', s: '−$20.00', st: 'warn' }, ] }] }, 'Reportes': { ic: 'chart', kpis: [{ l: 'Ingresos (mes)', v: '$128K', d: '+8%' }, { l: 'Ocupación', v: '87%', d: '+5pts' }, { l: 'Pacientes nuevos', v: '234', d: '+12%' }, { l: 'Satisfacción', v: '4.7', d: '+0.2' }], blocks: [ { type: 'chart', t: 'Ingresos por servicio · 6 meses', legend: [{ c: '#22c55e', l: 'Ingresos' }, { c: '#06b6d4', l: 'Meta' }] }, { type: 'table', status: true, cols: ['Servicio', 'Citas', 'Ingresos', 'Tendencia'], rows: [ ['Consulta general', '234', '$45,200', '↑ +12%'], ['Cardiología', '156', '$38,100', '↑ +8%'], ['Dermatología', '189', '$29,800', '↑ +15%'], ['Laboratorio', '312', '$22,400', '↓ -3%'], ] }, ] }, }, }, };