{"id":350,"date":"2025-11-18T12:06:03","date_gmt":"2025-11-18T12:06:03","guid":{"rendered":"https:\/\/opencity.cl\/?page_id=350"},"modified":"2025-11-24T14:02:22","modified_gmt":"2025-11-24T14:02:22","slug":"mantenimiento-predictivo","status":"publish","type":"page","link":"https:\/\/opencity.cl\/?page_id=350","title":{"rendered":"Mantenimiento predictivo"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"350\" class=\"elementor elementor-350\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-82d7b49 e-flex e-con-boxed e-con e-parent\" data-id=\"82d7b49\" data-element_type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"elementor-element elementor-element-1763c4c e-con-full e-flex e-con e-child\" data-id=\"1763c4c\" data-element_type=\"container\">\n\t\t<div class=\"elementor-element elementor-element-fb8046c e-con-full e-flex e-con e-child\" data-id=\"fb8046c\" data-element_type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-7c26332 elementor-align-justify elementor-widget__width-initial elementor-widget elementor-widget-button\" data-id=\"7c26332\" data-element_type=\"widget\" data-widget_type=\"button.default\">\n\t\t\t\t\t\t\t\t\t\t<a class=\"elementor-button elementor-button-link elementor-size-sm\" href=\"https:\/\/opencity.cl\/?page_id=195\">\n\t\t\t\t\t\t<span class=\"elementor-button-content-wrapper\">\n\t\t\t\t\t\t\t\t\t<span class=\"elementor-button-text\">Solicitar asesor\u00eda <\/span>\n\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-a977245 e-con-full e-flex e-con e-child\" data-id=\"a977245\" data-element_type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-38f773d elementor-align-center elementor-widget__width-initial eael_liquid_glass-effect2 eael_liquid_glass_border_distortion_yes elementor-widget elementor-widget-button\" data-id=\"38f773d\" data-element_type=\"widget\" data-widget_type=\"button.default\">\n\t\t\t\t\t\t\t\t\t\t<a class=\"elementor-button elementor-button-link elementor-size-sm\" href=\"#soluciones\">\n\t\t\t\t\t\t<span class=\"elementor-button-content-wrapper\">\n\t\t\t\t\t\t\t\t\t<span class=\"elementor-button-text\">Conoce como funciona<\/span>\n\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-2129a25 elementor-widget__width-initial elementor-widget elementor-widget-text-editor\" data-id=\"2129a25\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p>Monitorea el estado de tus m\u00e1quinas en tiempo real con nuestra soluci\u00f3n de mantenimiento predictivo. Detecta anomal\u00edas antes de que se conviertan en fallas y toma decisiones basadas en datos precisos.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-4655c55 elementor-widget__width-initial elementor-widget elementor-widget-heading\" data-id=\"4655c55\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h1 class=\"elementor-heading-title elementor-size-default\"><span style=\"font-weight: 600\">ANTIC\u00cdPATE A FALLAS Y OPTIMIZA LA DISPONIBILIDAD<\/span> DE TUS EQUIPOS<\/h1>\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-10b1ae0 e-flex e-con-boxed e-con e-parent\" data-id=\"10b1ae0\" data-element_type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;gradient&quot;}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"elementor-element elementor-element-55a6c8f e-con-full e-flex e-con e-child\" data-id=\"55a6c8f\" data-element_type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-0b0c8c9 elementor-widget__width-initial elementor-widget elementor-widget-heading\" data-id=\"0b0c8c9\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">DE LA REACCI\u00d3N A LA <strong>PREVENCI\u00d3N <\/strong><\/h2>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-d26d271 elementor-widget elementor-widget-text-editor\" data-id=\"d26d271\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p>El mantenimiento predictivo permite monitorear continuamente el estado de los equipos mediante sensores y anal\u00edtica avanzada.<\/p><p>Nuestra soluci\u00f3n recopila datos de vibraci\u00f3n, temperatura, sonido y energ\u00eda para detectar patrones an\u00f3malos.<\/p><p>As\u00ed, puedes anticiparte a las fallas, reducir paradas imprevistas y optimizar la vida \u00fatil de tus activos cr\u00edticos<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-1561bad elementor-align-left elementor-widget__width-initial elementor-hidden-mobile elementor-widget elementor-widget-button\" data-id=\"1561bad\" data-element_type=\"widget\" data-widget_type=\"button.default\">\n\t\t\t\t\t\t\t\t\t\t<a class=\"elementor-button elementor-button-link elementor-size-sm\" href=\"https:\/\/opencity.cl\/?page_id=148\">\n\t\t\t\t\t\t<span class=\"elementor-button-content-wrapper\">\n\t\t\t\t\t\t\t\t\t<span class=\"elementor-button-text\">Solicitar asesor\u00eda<\/span>\n\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-5cb471e e-con-full e-flex e-con e-child\" data-id=\"5cb471e\" data-element_type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-320fd62 elementor-widget elementor-widget-image\" data-id=\"320fd62\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img fetchpriority=\"high\" decoding=\"async\" width=\"650\" height=\"476\" src=\"https:\/\/opencity.cl\/wp-content\/uploads\/2025\/11\/Group-7.png\" class=\"attachment-large size-large wp-image-365\" alt=\"\" srcset=\"https:\/\/opencity.cl\/wp-content\/uploads\/2025\/11\/Group-7.png 650w, https:\/\/opencity.cl\/wp-content\/uploads\/2025\/11\/Group-7-300x220.png 300w\" sizes=\"(max-width: 650px) 100vw, 650px\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-d623370 elementor-align-left elementor-widget__width-initial elementor-mobile-align-justify elementor-hidden-desktop elementor-hidden-tablet elementor-widget elementor-widget-button\" data-id=\"d623370\" data-element_type=\"widget\" data-widget_type=\"button.default\">\n\t\t\t\t\t\t\t\t\t\t<a class=\"elementor-button elementor-button-link elementor-size-sm\" href=\"https:\/\/opencity.cl\/?page_id=148\">\n\t\t\t\t\t\t<span class=\"elementor-button-content-wrapper\">\n\t\t\t\t\t\t\t\t\t<span class=\"elementor-button-text\">Conoce m\u00e1s sobre nosotros<\/span>\n\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-7c8deed e-flex e-con-boxed e-con e-parent\" data-id=\"7c8deed\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"elementor-element elementor-element-8b3ed41 e-con-full e-flex e-con e-child\" data-id=\"8b3ed41\" data-element_type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-74dcad0 elementor-widget elementor-widget-image\" data-id=\"74dcad0\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" width=\"600\" height=\"541\" src=\"https:\/\/opencity.cl\/wp-content\/uploads\/2025\/11\/image-7.png\" class=\"attachment-full size-full wp-image-366\" alt=\"\" srcset=\"https:\/\/opencity.cl\/wp-content\/uploads\/2025\/11\/image-7.png 600w, https:\/\/opencity.cl\/wp-content\/uploads\/2025\/11\/image-7-300x271.png 300w\" sizes=\"(max-width: 600px) 100vw, 600px\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-ca40c06 e-con-full e-flex e-con e-child\" data-id=\"ca40c06\" data-element_type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-c1ad04f elementor-widget__width-initial elementor-widget elementor-widget-heading\" data-id=\"c1ad04f\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\"><strong>TECNOLOG\u00cdA QUE DETECTA<\/strong> ANTES DE QUE OCURRA <strong> EL PROBLEMA<\/STRONG><\/h2>\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-a618855 e-con-full e-flex e-con e-child\" data-id=\"a618855\" data-element_type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-b006c5a elementor-widget__width-initial elementor-widget elementor-widget-text-editor\" data-id=\"b006c5a\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p><em><span style=\"font-size: 20px; font-weight: 600;\">01. Instala sensores inteligentes<\/span><\/em><br \/>Colocamos sensores de vibraci\u00f3n, temperatura y corriente en tus equipos cr\u00edticos. No requiere modificaciones estructurales ni detenciones largas.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-525560f elementor-widget__width-initial arrow-icon elementor-view-default elementor-widget elementor-widget-icon\" data-id=\"525560f\" data-element_type=\"widget\" data-widget_type=\"icon.default\">\n\t\t\t\t\t\t\t<div class=\"elementor-icon-wrapper\">\n\t\t\t<div class=\"elementor-icon\">\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"35\" height=\"35\" viewBox=\"0 0 35 35\" fill=\"none\"><path d=\"M2 2.00016L32.7083 32.7085M32.7083 32.7085V7.5835M32.7083 32.7085H7.58333\" stroke=\"#052B4F\" stroke-width=\"4.00001\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><\/path><\/svg>\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-cd9cd9a e-con-full e-flex e-con e-child\" data-id=\"cd9cd9a\" data-element_type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-51696c6 elementor-widget__width-initial elementor-widget elementor-widget-text-editor\" data-id=\"51696c6\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<em><span style=\"font-size: 20px; font-weight: 600;\">02. Monitorea en tiempo real<\/span><\/em><br>\nLos datos se transmiten a la nube, donde la plataforma analiza comportamientos, tendencias y posibles anomal\u00edas.\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-30a34b4 elementor-widget__width-initial arrow-icon elementor-view-default elementor-widget elementor-widget-icon\" data-id=\"30a34b4\" data-element_type=\"widget\" data-widget_type=\"icon.default\">\n\t\t\t\t\t\t\t<div class=\"elementor-icon-wrapper\">\n\t\t\t<div class=\"elementor-icon\">\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"35\" height=\"35\" viewBox=\"0 0 35 35\" fill=\"none\"><path d=\"M2 2.00016L32.7083 32.7085M32.7083 32.7085V7.5835M32.7083 32.7085H7.58333\" stroke=\"#052B4F\" stroke-width=\"4.00001\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><\/path><\/svg>\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-4d3685e e-con-full e-flex e-con e-child\" data-id=\"4d3685e\" data-element_type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-c874abf elementor-widget__width-initial elementor-widget elementor-widget-text-editor\" data-id=\"c874abf\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<em><span style=\"font-size: 20px; font-weight: 600;\">03. Predice y act\u00faa<\/span><\/em><br>\nRecibe alertas tempranas, reportes autom\u00e1ticos y recomendaciones de mantenimiento para evitar fallas costosas y mejorar tu eficiencia operativa.\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-538cbf0 elementor-widget__width-initial arrow-icon elementor-view-default elementor-widget elementor-widget-icon\" data-id=\"538cbf0\" data-element_type=\"widget\" data-widget_type=\"icon.default\">\n\t\t\t\t\t\t\t<div class=\"elementor-icon-wrapper\">\n\t\t\t<div class=\"elementor-icon\">\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"35\" height=\"35\" viewBox=\"0 0 35 35\" fill=\"none\"><path d=\"M2 2.00016L32.7083 32.7085M32.7083 32.7085V7.5835M32.7083 32.7085H7.58333\" stroke=\"#052B4F\" stroke-width=\"4.00001\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><\/path><\/svg>\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-0d4428f e-flex e-con-boxed e-con e-parent\" data-id=\"0d4428f\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-cb4d0df elementor-widget__width-initial elementor-widget elementor-widget-heading\" data-id=\"cb4d0df\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\"><strong>M\u00c1S QUE PANTALLAS<\/strong> UNA HERRAMIENTA ESTRAT\u00c9GICA DE <strong>COMUNICACI\u00d3N<\/strong><\/h2>\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-15a9d2d e-flex e-con-boxed e-con e-parent\" data-id=\"15a9d2d\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"elementor-element elementor-element-caf652d e-con-full e-flex e-con e-child\" data-id=\"caf652d\" data-element_type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-c7deb23 elementor-widget__width-initial elementor-widget elementor-widget-text-editor\" data-id=\"c7deb23\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p>Visualiza indicadores en tiempo real y accede a reportes personalizados desde cualquier dispositivo.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-84ee951 elementor-widget__width-initial elementor-widget elementor-widget-heading\" data-id=\"84ee951\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Decisiones basadas en datos<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-50279c2 e-con-full e-flex e-con e-child\" data-id=\"50279c2\" data-element_type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-e725a86 elementor-widget__width-initial elementor-widget elementor-widget-text-editor\" data-id=\"e725a86\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p>Detecta anomal\u00edas antes de que provoquen fallas, evitando interrupciones en la operaci\u00f3n.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-2350b52 elementor-widget__width-initial elementor-widget elementor-widget-heading\" data-id=\"2350b52\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Menos paradas no programadas<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-7525464 e-flex e-con-boxed e-con e-parent\" data-id=\"7525464\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"elementor-element elementor-element-4db5229 e-con-full e-flex e-con e-child\" data-id=\"4db5229\" data-element_type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-c3a401f elementor-widget__width-initial elementor-widget elementor-widget-text-editor\" data-id=\"c3a401f\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p>Prioriza mantenimientos seg\u00fan el estado real de los equipos, no por calendario.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-754ac13 elementor-widget__width-initial elementor-widget elementor-widget-heading\" data-id=\"754ac13\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Optimizaci\u00f3n de recursos<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-bc0284e e-con-full e-flex e-con e-child\" data-id=\"bc0284e\" data-element_type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-7c2bdf6 elementor-widget__width-initial elementor-widget elementor-widget-text-editor\" data-id=\"7c2bdf6\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p>Cuida el funcionamiento de tus m\u00e1quinas con informaci\u00f3n precisa y actualizada.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-587f353 elementor-widget__width-initial elementor-widget elementor-widget-heading\" data-id=\"587f353\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Mayor vida \u00fatil de los activos<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-23a08d4 e-con-full e-flex e-con e-parent\" data-id=\"23a08d4\" data-element_type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-7f57cc2 elementor-widget elementor-widget-soluciones-carousel\" data-id=\"7f57cc2\" data-element_type=\"widget\" data-widget_type=\"soluciones-carousel.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\n            <style>\n            :root {\n              --blanco: #ffffff;\n              --negro: #0d0d0d;\n              --gris: #f5f5f5;\n              --celeste-base: #1093db;\n              --celeste-1: #74c0ea;\n              --celeste-2: #e7f4fb;\n              --azul-base: #094781;\n              --azul-1: #052b4f;\n              --azul-2: #7094b6;\n              \n              --desk-h2-font-family: \"Poppins\", sans-serif;\n              --desk-h2-font-size: 24px;\n              --desk-h2-line-height: 30px;\n              --desk-h2-font-weight: 600;\n              \n              --desk-l-font-size: 16px;\n              --desk-l-line-height: 20px;\n              \n              --desk-m-font-size: 14px;\n              --desk-m-line-height: 18px;\n              \n              --desk-s-font-size: 10px;\n              --desk-s-line-height: 14px;\n            }\n\n            * {\n              box-sizing: border-box;\n            }\n\n            .soluciones-section {\n              background-color: #ffffff;\n              padding: 60px 0;\n              width: 100%;\n              margin: 0;\n              overflow: hidden;\n            }\n\n            .soluciones-container {\n              max-width: 100%;\n              width: 100%;\n              margin: 0;\n              padding: 0;\n            }\n\n            .soluciones-header {\n              text-align: center;\n              margin-bottom: 40px;\n              padding: 0 20px;\n            }\n\n            .soluciones-title {\n              font-family: \"Poppins\", sans-serif;\n              font-size: 42px;\n              font-weight: 300;\n              margin: 0 0 15px 0;\n              color: var(--azul-1);\n              user-select: none;\n              line-height: 1.2;\n            }\n\n            .soluciones-title em {\n              font-style: italic;\n              font-weight: 300;\n            }\n\n            .soluciones-title strong {\n              font-weight: 700;\n              color: var(--azul-1);\n            }\n\n            .soluciones-descripcion {\n              font-family: \"Poppins\", sans-serif;\n              font-size: 16px;\n              font-weight: 400;\n              line-height: 1.5;\n              color: var(--azul-1);\n              margin: 0;\n              max-width: 800px;\n              margin-left: auto;\n              margin-right: auto;\n            }\n\n            .filtros-container {\n              display: flex;\n              justify-content: center;\n              gap: 15px;\n              flex-wrap: wrap;\n              margin-bottom: 50px;\n              padding: 0 20px;\n            }\n\n            .filtros-container.hidden {\n              display: none;\n            }\n\n            .filtro-btn {\n              padding: 12px 25px;\n              border: 1px solid var(--celeste-base);\n              background-color: transparent;\n              color: var(--azul-1);\n              border-radius: 25px;\n              cursor: pointer;\n              font-size: 14px;\n              transition: all 0.3s ease;\n              white-space: nowrap;\n              user-select: none;\n            }\n\n            .filtro-btn:hover,\n            .filtro-btn.active {\n              background-color: var(--celeste-base);\n              color: var(--blanco);\n            }\n\n            .carousel-wrapper {\n              position: relative;\n              width: 100%;\n              padding: 80px 0 140px 0;\n              overflow: hidden;\n            }\n\n            .carousel-container {\n              position: relative;\n              width: 100%;\n              height: 550px;\n              display: flex;\n              align-items: center;\n              justify-content: center;\n            }\n\n            .carousel-track {\n              position: relative;\n              width: 100%;\n              height: 100%;\n              display: flex;\n              align-items: center;\n              justify-content: center;\n              cursor: grab;\n              user-select: none;\n            }\n\n            .carousel-track:active {\n              cursor: grabbing;\n            }\n\n            .carousel-slide {\n              position: absolute;\n              width: 932px;\n              max-width: 90vw;\n              transition: transform 0.6s cubic-bezier(0.25, 0.1, 0.25, 1),\n                          opacity 0.6s cubic-bezier(0.25, 0.1, 0.25, 1),\n                          filter 0.6s cubic-bezier(0.25, 0.1, 0.25, 1);\n              will-change: transform, opacity, filter;\n              user-select: none;\n            }\n\n            .carousel-slide * {\n              user-select: none;\n              pointer-events: none;\n            }\n\n            .carousel-slide .solucion-btn,\n            .carousel-slide .solucion-btn-folleto,\n            .carousel-slide .leer-mas-link {\n              pointer-events: auto !important;\n              cursor: pointer !important;\n            }\n\n            .carousel-slide[data-position=\"center\"] {\n              z-index: 100;\n              transform: translateX(0) scale(1);\n              opacity: 1;\n              filter: blur(0);\n            }\n\n            .carousel-slide[data-position=\"right\"] {\n              z-index: 50;\n              transform: translateX(480px) scale(0.75);\n              opacity: 0.4;\n              filter: blur(1.5px);\n            }\n\n            .carousel-slide[data-position=\"left\"] {\n              z-index: 50;\n              transform: translateX(-480px) scale(0.75);\n              opacity: 0.4;\n              filter: blur(1.5px);\n            }\n\n            .carousel-slide[data-position=\"far-right\"] {\n              z-index: 25;\n              transform: translateX(650px) scale(0.65);\n              opacity: 0.25;\n              filter: blur(2.5px);\n            }\n\n            .carousel-slide[data-position=\"far-left\"] {\n              z-index: 25;\n              transform: translateX(-650px) scale(0.65);\n              opacity: 0.25;\n              filter: blur(2.5px);\n            }\n\n            .carousel-slide[data-position=\"hidden\"] {\n              z-index: 1;\n              transform: translateX(0) scale(0.5);\n              opacity: 0;\n            }\n\n            .solucion-card {\n              position: relative;\n              border-radius: 40px;\n              border: 2px solid var(--gris);\n              box-shadow: -5px 9px 9.5px -2px rgba(0, 185, 255, 0.25),\n                5px -5px 8.8px 0px rgba(87, 196, 236, 0.25);\n              overflow: hidden;\n              width: 100%;\n              height: 435px;\n              transition: all 0.6s cubic-bezier(0.25, 0.1, 0.25, 1);\n            }\n\n            .carousel-slide[data-position=\"center\"] .solucion-card {\n              box-shadow: -5px 12px 15px -2px rgba(0, 185, 255, 0.35),\n                5px -8px 12px 0px rgba(87, 196, 236, 0.35);\n            }\n\n            .solucion-image {\n              position: absolute;\n              top: 0;\n              left: 0;\n              width: 100%;\n              height: 100%;\n            }\n\n            .solucion-image img {\n              width: 100%;\n              height: 100%;\n              object-fit: cover;\n              transition: transform 0.6s cubic-bezier(0.25, 0.1, 0.25, 1);\n            }\n\n            .carousel-slide[data-position=\"center\"] .solucion-image img {\n              transform: scale(1.05);\n            }\n\n            .solucion-card::after {\n              content: \"\";\n              position: absolute;\n              left: 0;\n              bottom: 0;\n              width: 100%;\n              height: 100%;\n              background: linear-gradient(\n                10deg,\n                rgba(255, 255, 255, 1) 0%,\n                rgba(255, 255, 255, 0.98) 15%,\n                rgba(255, 255, 255, 0.85) 30%,\n                rgba(255, 255, 255, 0.5) 45%,\n                rgba(255, 255, 255, 0) 60%\n              );\n              pointer-events: none;\n            }\n\n            .solucion-content {\n              position: absolute;\n              bottom: 0;\n              left: 0;\n              right: 0;\n              padding: 35px 40px;\n              display: flex;\n              flex-wrap: wrap;\n              align-items: flex-end;\n              justify-content: space-between;\n              gap: 20px;\n              z-index: 10;\n            }\n\n            .carousel-slide[data-position=\"center\"] .solucion-content {\n              padding: 40px 50px;\n            }\n\n            .solucion-info {\n              flex: 0 0 auto;\n              max-width: 40%;\n              display: flex;\n              flex-direction: column;\n              gap: 8px;\n            }\n\n            .solucion-badge {\n              display: inline-block;\n              background: radial-gradient(\n                  closest-side,\n                  rgba(217, 217, 217, 0) 40%,\n                  rgba(251, 251, 251, 1) 90%\n                ),\n                linear-gradient(to left, #00b9ff, #00b9ff);\n              border: 0.5px solid var(--celeste-base);\n              border-radius: 10000px;\n              padding: 5px 20px;\n              color: var(--blanco);\n              font-family: \"Poppins\", sans-serif;\n              font-size: var(--desk-s-font-size);\n              line-height: var(--desk-s-line-height);\n              font-weight: 700;\n              text-transform: uppercase;\n              width: fit-content;\n            }\n\n            .solucion-title {\n              font-family: \"Poppins\", sans-serif;\n              font-size: 20px;\n              line-height: 26px;\n              font-weight: var(--desk-h2-font-weight);\n              font-style: italic;\n              color: var(--azul-1);\n              margin: 0;\n            }\n\n            .carousel-slide[data-position=\"center\"] .solucion-title {\n              font-size: 22px;\n              line-height: 28px;\n            }\n\n            .solucion-description {\n              font-family: \"Poppins\", sans-serif;\n              font-size: 13px;\n              line-height: 18px;\n              font-weight: 400;\n              color: var(--azul-1);\n              margin: 0;\n            }\n\n            .solucion-description p {\n              margin: 0;\n            }\n\n            .carousel-slide[data-position=\"center\"] .solucion-description {\n              font-size: var(--desk-m-font-size);\n              line-height: 19px;\n            }\n\n            .leer-mas-link {\n              color: var(--celeste-base);\n              font-weight: 600;\n              text-decoration: none;\n              transition: all 0.3s ease;\n              cursor: pointer !important;\n              pointer-events: auto !important;\n            }\n\n            .leer-mas-link:hover {\n              color: var(--azul-base);\n              text-decoration: underline;\n            }\n\n            .solucion-action {\n              display: flex;\n              align-items: flex-end;\n              flex-shrink: 0;\n              gap: 10px;\n            }\n\n            .solucion-btn {\n              background: var(--celeste-base);\n              border: 1px solid rgba(9, 71, 129, 0.5);\n              border-radius: 100px;\n              padding: 12px 24px;\n              color: var(--blanco);\n              font-family: \"Poppins\", sans-serif;\n              font-size: var(--desk-m-font-size);\n              line-height: var(--desk-m-line-height);\n              font-weight: 700;\n              cursor: pointer !important;\n              transition: all 0.3s ease;\n              box-shadow: inset 0px 0px 13.3px 0px rgba(255, 255, 255, 1),\n                0px 0px 4px 0px rgba(9, 71, 129, 1);\n              text-decoration: none;\n              display: inline-block;\n              white-space: nowrap;\n              pointer-events: auto !important;\n            }\n\n            .solucion-btn:hover {\n              background: var(--azul-base);\n              transform: translateY(-2px);\n              box-shadow: inset 0px 0px 13.3px 0px rgba(255, 255, 255, 1),\n                0px 2px 8px 0px rgba(9, 71, 129, 0.5);\n              color: var(--blanco);\n            }\n\n            \/* NUEVO: Estilo para bot\u00f3n de folleto *\/\n            .solucion-btn-folleto {\n              background: #1E88E5;\n              border: 1px solid rgba(9, 71, 129, 0.5);\n              border-radius: 100px;\n              padding: 12px 24px;\n              color: var(--blanco) !important;\n              font-family: \"Poppins\", sans-serif;\n              font-size: var(--desk-m-font-size);\n              line-height: var(--desk-m-line-height);\n              font-weight: 700;\n              cursor: pointer !important;\n              transition: all 0.3s ease;\n              box-shadow: inset 0px 0px 13.3px 0px rgba(255, 255, 255, 1),\n                0px 0px 4px 0px rgba(9, 71, 129, 1);\n              text-decoration: none !important;\n              display: inline-block;\n              white-space: nowrap;\n              pointer-events: auto !important;\n            }\n\n            .solucion-btn-folleto:hover {\n              background: #1565C0 !important;\n              transform: translateY(-2px);\n              box-shadow: inset 0px 0px 13.3px 0px rgba(255, 255, 255, 1),\n                0px 2px 8px 0px rgba(9, 71, 129, 0.5);\n              color: var(--blanco) !important;\n            }\n\n            .carousel-nav {\n              position: absolute;\n              top: 45%;\n              transform: translateY(-50%);\n              width: 55px;\n              height: 55px;\n              background-color: rgba(255, 255, 255, 0.95);\n              border-radius: 50%;\n              box-shadow: 0 8px 20px rgba(0, 0, 0, 0.12);\n              display: flex;\n              align-items: center;\n              justify-content: center;\n              cursor: pointer;\n              transition: all 0.3s ease;\n              z-index: 200;\n              border: none;\n              backdrop-filter: blur(10px);\n              user-select: none;\n            }\n\n            .carousel-nav:hover {\n              box-shadow: 0 10px 25px rgba(0, 0, 0, 0.2);\n              transform: translateY(-50%) scale(1.08);\n              background-color: #ffffff;\n            }\n\n            .carousel-nav:active {\n              transform: translateY(-50%) scale(0.95);\n            }\n\n            .carousel-nav.prev {\n              left: 40px;\n            }\n\n            .carousel-nav.next {\n              right: 40px;\n            }\n\n            .carousel-nav svg {\n              width: 22px;\n              height: 22px;\n              fill: var(--celeste-base);\n            }\n\n            .carousel-pagination {\n              position: absolute;\n              bottom: 50px;\n              left: 50%;\n              transform: translateX(-50%);\n              display: flex;\n              gap: 12px;\n              z-index: 200;\n            }\n\n            .pagination-dot {\n              width: 10px;\n              height: 10px;\n              border-radius: 5px;\n              background-color: #d0d5dd;\n              cursor: pointer;\n              transition: all 0.4s cubic-bezier(0.25, 0.1, 0.25, 1);\n              border: none;\n              padding: 0;\n              user-select: none;\n            }\n\n            .pagination-dot:hover {\n              background-color: #a0a8b8;\n              transform: scale(1.15);\n            }\n\n            .pagination-dot.active {\n              background-color: var(--celeste-base);\n              width: 32px;\n            }\n\n            @media (max-width: 1200px) {\n              .carousel-slide {\n                width: 750px;\n              }\n              \n              .carousel-slide[data-position=\"right\"] {\n                transform: translateX(400px) scale(0.75);\n              }\n              \n              .carousel-slide[data-position=\"left\"] {\n                transform: translateX(-400px) scale(0.75);\n              }\n              \n              .carousel-nav.prev {\n                left: 20px;\n              }\n              \n              .carousel-nav.next {\n                right: 20px;\n              }\n            }\n\n            @media (max-width: 768px) {\n              .soluciones-title {\n                font-size: 28px;\n              }\n\n              .soluciones-descripcion {\n                font-size: 14px;\n              }\n              \n              .filtros-container {\n                gap: 10px;\n                margin-bottom: 40px;\n              }\n              \n              .filtro-btn {\n                padding: 8px 18px;\n                font-size: 12px;\n              }\n              \n              .carousel-container {\n                height: 400px;\n              }\n              \n              .carousel-wrapper {\n                padding: 60px 0 120px 0;\n              }\n              \n              .carousel-slide {\n                width: 90vw;\n                max-width: 90vw;\n              }\n              \n              .carousel-slide[data-position=\"right\"],\n              .carousel-slide[data-position=\"left\"] {\n                transform: translateX(0) scale(0.85);\n                opacity: 0.3;\n              }\n              \n              .solucion-card {\n                height: 350px;\n              }\n              \n              .carousel-slide[data-position=\"center\"] .solucion-card {\n                height: 350px;\n              }\n              \n              .solucion-content {\n                padding: 25px;\n                gap: 15px;\n              }\n              \n              .carousel-slide[data-position=\"center\"] .solucion-content {\n                padding: 30px;\n              }\n              \n              .solucion-info {\n                max-width: 45%;\n                gap: 6px;\n              }\n              \n              .solucion-badge {\n                font-size: 8px;\n                padding: 4px 14px;\n              }\n              \n              .solucion-title {\n                font-size: 16px;\n                line-height: 20px;\n              }\n              \n              .carousel-slide[data-position=\"center\"] .solucion-title {\n                font-size: 17px;\n                line-height: 22px;\n              }\n              \n              .solucion-description {\n                font-size: 11px;\n                line-height: 15px;\n              }\n              \n              .carousel-slide[data-position=\"center\"] .solucion-description {\n                font-size: 12px;\n                line-height: 16px;\n              }\n              \n              .solucion-btn,\n              .solucion-btn-folleto {\n                padding: 10px 18px;\n                font-size: 12px;\n              }\n              \n              .solucion-action {\n                flex-direction: column;\n                gap: 8px;\n              }\n              \n              .carousel-nav {\n                width: 45px;\n                height: 45px;\n              }\n              \n              .carousel-nav.prev {\n                left: 10px;\n              }\n              \n              .carousel-nav.next {\n                right: 10px;\n              }\n              \n              .carousel-nav svg {\n                width: 18px;\n                height: 18px;\n              }\n              \n              .carousel-pagination {\n                bottom: 40px;\n              }\n              \n              .pagination-dot {\n                width: 8px;\n                height: 8px;\n              }\n              \n              .pagination-dot.active {\n                width: 24px;\n              }\n            }\n\n            @media (max-width: 480px) {\n              .soluciones-title {\n                font-size: 22px;\n              }\n\n              .soluciones-descripcion {\n                font-size: 13px;\n              }\n\n              .carousel-container {\n                height: 320px;\n              }\n              \n              .solucion-card,\n              .carousel-slide[data-position=\"center\"] .solucion-card {\n                height: 280px;\n              }\n              \n              .solucion-content {\n                padding: 20px;\n                gap: 10px;\n              }\n              \n              .solucion-info {\n                max-width: 48%;\n                gap: 5px;\n              }\n              \n              .solucion-badge {\n                font-size: 7px;\n                padding: 3px 12px;\n              }\n              \n              .solucion-title {\n                font-size: 13px;\n                line-height: 17px;\n              }\n              \n              .solucion-description {\n                font-size: 9px;\n                line-height: 13px;\n              }\n              \n              .solucion-btn,\n              .solucion-btn-folleto {\n                padding: 8px 14px;\n                font-size: 10px;\n              }\n            }\n            <\/style>\n\n            <div class=\"soluciones-section\">\n                <div class=\"soluciones-container\">\n                    \n                    <!-- ENCABEZADO: T\u00edtulo y Descripci\u00f3n -->\n                    <div class=\"soluciones-header\">\n                        <h2 class=\"soluciones-title\">\n                            <em>Una<\/em> soluci\u00f3n para cada entorno <strong>productivo<\/strong>                        <\/h2>\n                        \n                                                    <p class=\"soluciones-descripcion\">\n                                Nuestra tecnolog\u00eda se adapta a diferentes contextos y necesidades.                            <\/p>\n                                            <\/div>\n                    \n                    <!-- FILTROS -->\n                    <div class=\"filtros-container hidden\">\n                                            <\/div>\n                    \n                    <!-- CARRUSEL -->\n                    <div class=\"carousel-wrapper\">\n                        <div class=\"carousel-container\">\n                            <div class=\"carousel-track\" id=\"carousel-7f57cc2-track\">\n                                \n                                                                    \n                                    <div class=\"carousel-slide\" data-index=\"0\" data-position=\"center\">\n                                        <div class=\"solucion-card\">\n                                            <div class=\"solucion-image\">\n                                                <img decoding=\"async\" src=\"https:\/\/opencity.cl\/wp-content\/uploads\/2025\/11\/003bc2935c64f5f1dd7ad042b1caf50c0dc00b9d.png\" alt=\"Manufactura y producci\u00f3n\">\n                                            <\/div>\n                                            \n                                            <div class=\"solucion-content\">\n                                                <div class=\"solucion-info\">\n                                                    <!-- BADGE: Solo si tiene contenido -->\n                                                                                                        \n                                                    <!-- T\u00cdTULO: Siempre se muestra -->\n                                                    <h3 class=\"solucion-title\">Manufactura y producci\u00f3n<\/h3>\n                                                    \n                                                    <!-- DESCRIPCI\u00d3N: Solo si tiene contenido -->\n                                                                                                            <div class=\"solucion-description\">\n                                                            \nDetecta vibraciones y anomal\u00edas en motores, bombas o cintas transportadoras para evitar paradas.\n                                                        <\/div>\n                                                                                                    <\/div>\n                                                \n                                                <!-- BOTONES -->\n                                                                                            <\/div>\n                                        <\/div>\n                                    <\/div>\n                                    \n                                                                        \n                                    <div class=\"carousel-slide\" data-index=\"1\" data-position=\"right\">\n                                        <div class=\"solucion-card\">\n                                            <div class=\"solucion-image\">\n                                                <img decoding=\"async\" src=\"https:\/\/opencity.cl\/wp-content\/uploads\/2025\/11\/857b1c32f6b065d5e6b0a2383e803921946cc498.png\" alt=\"Energ\u00eda y utilities\">\n                                            <\/div>\n                                            \n                                            <div class=\"solucion-content\">\n                                                <div class=\"solucion-info\">\n                                                    <!-- BADGE: Solo si tiene contenido -->\n                                                                                                        \n                                                    <!-- T\u00cdTULO: Siempre se muestra -->\n                                                    <h3 class=\"solucion-title\">Energ\u00eda y utilities<\/h3>\n                                                    \n                                                    <!-- DESCRIPCI\u00d3N: Solo si tiene contenido -->\n                                                                                                            <div class=\"solucion-description\">\n                                                            \nMonitorea subestaciones, turbinas y generadores con sensores que alertan sobre desviaciones t\u00e9rmicas o el\u00e9ctricas.\n                                                        <\/div>\n                                                                                                    <\/div>\n                                                \n                                                <!-- BOTONES -->\n                                                                                            <\/div>\n                                        <\/div>\n                                    <\/div>\n                                    \n                                                                        \n                                    <div class=\"carousel-slide\" data-index=\"2\" data-position=\"far-right\">\n                                        <div class=\"solucion-card\">\n                                            <div class=\"solucion-image\">\n                                                <img decoding=\"async\" src=\"https:\/\/opencity.cl\/wp-content\/uploads\/2025\/11\/c9cb960538407c2fdc5f22dc8271ac760e18148c.png\" alt=\"Miner\u00eda y transporte\">\n                                            <\/div>\n                                            \n                                            <div class=\"solucion-content\">\n                                                <div class=\"solucion-info\">\n                                                    <!-- BADGE: Solo si tiene contenido -->\n                                                                                                        \n                                                    <!-- T\u00cdTULO: Siempre se muestra -->\n                                                    <h3 class=\"solucion-title\">Miner\u00eda y transporte<\/h3>\n                                                    \n                                                    <!-- DESCRIPCI\u00d3N: Solo si tiene contenido -->\n                                                                                                            <div class=\"solucion-description\">\n                                                            \nSupervisa equipos m\u00f3viles e infraestructura cr\u00edtica, reduciendo tiempos de mantenimiento y accidentes.\n                                                        <\/div>\n                                                                                                    <\/div>\n                                                \n                                                <!-- BOTONES -->\n                                                                                            <\/div>\n                                        <\/div>\n                                    <\/div>\n                                    \n                                                                        \n                                    <div class=\"carousel-slide\" data-index=\"3\" data-position=\"hidden\">\n                                        <div class=\"solucion-card\">\n                                            <div class=\"solucion-image\">\n                                                <img decoding=\"async\" src=\"https:\/\/opencity.cl\/wp-content\/uploads\/2025\/11\/fb3047459c10ebaf91246719c455c50824f612e3.png\" alt=\"Infraestructura y facilities\">\n                                            <\/div>\n                                            \n                                            <div class=\"solucion-content\">\n                                                <div class=\"solucion-info\">\n                                                    <!-- BADGE: Solo si tiene contenido -->\n                                                                                                        \n                                                    <!-- T\u00cdTULO: Siempre se muestra -->\n                                                    <h3 class=\"solucion-title\">Infraestructura y facilities<\/h3>\n                                                    \n                                                    <!-- DESCRIPCI\u00d3N: Solo si tiene contenido -->\n                                                                                                            <div class=\"solucion-description\">\n                                                            \nGestiona ascensores, HVAC, y sistemas el\u00e9ctricos con alertas predictivas centralizadas.\n                                                        <\/div>\n                                                                                                    <\/div>\n                                                \n                                                <!-- BOTONES -->\n                                                                                            <\/div>\n                                        <\/div>\n                                    <\/div>\n                                    \n                                                                    \n                            <\/div>\n                        <\/div>\n                        \n                        <button class=\"carousel-nav prev\" id=\"carousel-7f57cc2-prevBtn\">\n                            <svg viewBox=\"0 0 10 15\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n                                <path d=\"M9.2625 13.2375L3.5375 7.5L9.2625 1.7625L7.5 0L0 7.5L7.5 15L9.2625 13.2375Z\"\/>\n                            <\/svg>\n                        <\/button>\n                        <button class=\"carousel-nav next\" id=\"carousel-7f57cc2-nextBtn\">\n                            <svg viewBox=\"0 0 10 15\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n                                <path d=\"M0.737305 13.2375L6.4623 7.5L0.737305 1.7625L2.4998 0L9.9998 7.5L2.4998 15L0.737305 13.2375Z\"\/>\n                            <\/svg>\n                        <\/button>\n                        \n                        <div class=\"carousel-pagination\" id=\"carousel-7f57cc2-pagination\">\n                            <button class=\"pagination-dot active\" data-slide=\"0\"><\/button><button class=\"pagination-dot \" data-slide=\"1\"><\/button><button class=\"pagination-dot \" data-slide=\"2\"><\/button><button class=\"pagination-dot \" data-slide=\"3\"><\/button>                        <\/div>\n                    <\/div>\n                <\/div>\n            <\/div>\n\n            <script>\n            \/\/ Funci\u00f3n global para abrir el modal del folleto (usa openPdfModal del snippet de folletos)\n            function abrirFolletoModal(folletoId) {\n                if (typeof jQuery !== 'undefined' && typeof folletosConfig !== 'undefined') {\n                    jQuery.ajax({\n                        url: folletosConfig.ajaxUrl,\n                        type: 'POST',\n                        data: {\n                            action: 'cargar_folleto',\n                            folleto_id: folletoId\n                        },\n                        beforeSend: function() {\n                            console.log('Cargando folleto...', folletoId);\n                        },\n                        success: function(response) {\n                            if (response.success) {\n                                var data = response.data;\n                                \n                                \/\/ Detectar tipo de archivo para texto del bot\u00f3n\n                                var textoBoton = 'Descargar archivo';\n                                if (data.pdfUrl) {\n                                    var extension = data.pdfUrl.split('.').pop().toLowerCase();\n                                    if (extension === 'pdf') {\n                                        textoBoton = 'Descargar PDF';\n                                    } else if (extension === 'ppt' || extension === 'pptx') {\n                                        textoBoton = 'Descargar Presentaci\u00f3n';\n                                    }\n                                }\n                                \n                                \/\/ Usar la funci\u00f3n correcta del modal existente\n                                if (typeof openPdfModal === 'function') {\n                                    openPdfModal(data.titulo, data.contenido, data.pdfUrl, data.folletoId, textoBoton);\n                                } else {\n                                    console.error('openPdfModal no est\u00e1 definido. Verifica que el snippet \"CPT Folletos - JavaScript\" est\u00e9 activo.');\n                                    alert('Error: Modal no disponible');\n                                }\n                            } else {\n                                console.error('Error al cargar folleto:', response);\n                                alert('Error al cargar el folleto');\n                            }\n                        },\n                        error: function(xhr, status, error) {\n                            console.error('Error AJAX:', error);\n                            alert('Error de conexi\u00f3n');\n                        }\n                    });\n                } else {\n                    console.error('folletosConfig no est\u00e1 definido. Verifica que el snippet \"CPT Folletos - Ajax\" est\u00e9 activo.');\n                }\n            }\n            \n            (function() {\n                const widgetId = 'carousel-7f57cc2';\n                const autoplayEnabled = true;\n                const autoplayDelay = 5000;\n                const mostrarFiltros = false;\n                \n                class SolucionesCarousel {\n                  constructor(widgetId) {\n                    this.widgetId = widgetId;\n                    this.currentIndex = 0;\n                    this.slides = document.querySelectorAll('#' + widgetId + '-track .carousel-slide');\n                    this.totalSlides = this.slides.length;\n                    this.isTransitioning = false;\n                    this.transitionDuration = 600;\n                    this.autoplayInterval = null;\n                    this.autoplayDelay = autoplayDelay;\n                    this.autoplayEnabled = autoplayEnabled;\n                    \n                    this.startX = 0;\n                    this.currentX = 0;\n                    this.isDragging = false;\n                    this.hasMoved = false;\n                    this.minSwipeDistance = 50;\n                    \n                    this.init();\n                  }\n                  \n                  init() {\n                    const prevBtn = document.getElementById(this.widgetId + '-prevBtn');\n                    const nextBtn = document.getElementById(this.widgetId + '-nextBtn');\n                    \n                    if (prevBtn) prevBtn.addEventListener('click', () => this.navigate('prev'));\n                    if (nextBtn) nextBtn.addEventListener('click', () => this.navigate('next'));\n                    \n                    document.querySelectorAll('#' + this.widgetId + '-pagination .pagination-dot').forEach((dot) => {\n                      dot.addEventListener('click', () => {\n                        const slideIndex = parseInt(dot.getAttribute('data-slide'));\n                        this.goToSlide(slideIndex);\n                      });\n                    });\n                    \n                    if (mostrarFiltros) {\n                      document.querySelectorAll('.filtro-btn').forEach((btn) => {\n                        btn.addEventListener('click', () => {\n                          const filterIndex = parseInt(btn.getAttribute('data-filter'));\n                          document.querySelectorAll('.filtro-btn').forEach(b => b.classList.remove('active'));\n                          btn.classList.add('active');\n                          this.goToSlide(filterIndex);\n                        });\n                      });\n                    }\n                    \n                    this.setupInteractions();\n                    \n                    document.addEventListener('keydown', (e) => {\n                      if (e.key === 'ArrowLeft') this.navigate('prev');\n                      if (e.key === 'ArrowRight') this.navigate('next');\n                    });\n                    \n                    if (this.autoplayEnabled) {\n                      this.startAutoplay();\n                      \n                      const wrapper = document.querySelector('.carousel-wrapper');\n                      if (wrapper) {\n                        wrapper.addEventListener('mouseenter', () => this.pauseAutoplay());\n                        wrapper.addEventListener('mouseleave', () => this.resumeAutoplay());\n                      }\n                    }\n                  }\n                  \n                  setupInteractions() {\n                    const track = document.getElementById(this.widgetId + '-track');\n                    if (!track) return;\n                    \n                    const onDragStart = (e) => {\n                      if (e.target.closest('.solucion-btn') || e.target.closest('.solucion-btn-folleto') || e.target.closest('.leer-mas-link')) return;\n                      if (this.isTransitioning) return;\n                      \n                      this.isDragging = true;\n                      this.hasMoved = false;\n                      this.startX = this.getPositionX(e);\n                      this.currentX = this.startX;\n                      \n                      track.style.cursor = 'grabbing';\n                      this.pauseAutoplay();\n                    };\n                    \n                    const onDragMove = (e) => {\n                      if (!this.isDragging) return;\n                      \n                      this.currentX = this.getPositionX(e);\n                      const diff = Math.abs(this.currentX - this.startX);\n                      \n                      if (diff > 5) {\n                        this.hasMoved = true;\n                      }\n                    };\n                    \n                    const onDragEnd = () => {\n                      if (!this.isDragging) return;\n                      \n                      track.style.cursor = 'grab';\n                      this.isDragging = false;\n                      \n                      if (this.hasMoved) {\n                        const distance = this.startX - this.currentX;\n                        \n                        if (Math.abs(distance) >= this.minSwipeDistance) {\n                          if (distance > 0) {\n                            this.navigate('next');\n                          } else {\n                            this.navigate('prev');\n                          }\n                        } else {\n                          this.resumeAutoplay();\n                        }\n                      } else {\n                        this.resumeAutoplay();\n                      }\n                      \n                      this.startX = 0;\n                      this.currentX = 0;\n                      this.hasMoved = false;\n                    };\n                    \n                    track.addEventListener('mousedown', onDragStart);\n                    document.addEventListener('mousemove', onDragMove);\n                    document.addEventListener('mouseup', onDragEnd);\n                    \n                    track.addEventListener('touchstart', onDragStart, { passive: true });\n                    track.addEventListener('touchmove', onDragMove, { passive: true });\n                    track.addEventListener('touchend', onDragEnd);\n                    \n                    track.addEventListener('dragstart', (e) => {\n                      if (!e.target.closest('.solucion-btn') && !e.target.closest('.solucion-btn-folleto') && !e.target.closest('.leer-mas-link')) {\n                        e.preventDefault();\n                      }\n                    });\n                  }\n                  \n                  getPositionX(e) {\n                    return e.type.includes('mouse') ? e.clientX : e.touches[0].clientX;\n                  }\n                  \n                  navigate(direction) {\n                    if (this.isTransitioning) return;\n                    \n                    if (direction === 'next') {\n                      this.currentIndex = (this.currentIndex + 1) % this.totalSlides;\n                    } else {\n                      this.currentIndex = (this.currentIndex - 1 + this.totalSlides) % this.totalSlides;\n                    }\n                    \n                    this.updateSlides();\n                    this.resetAutoplay();\n                  }\n                  \n                  goToSlide(index) {\n                    if (this.isTransitioning || index === this.currentIndex) return;\n                    \n                    this.currentIndex = index;\n                    this.updateSlides();\n                    this.resetAutoplay();\n                  }\n                  \n                  updateSlides() {\n                    this.isTransitioning = true;\n                    \n                    this.slides.forEach((slide, index) => {\n                      const position = this.getSlidePosition(index);\n                      slide.setAttribute('data-position', position);\n                    });\n                    \n                    this.updateUI();\n                    \n                    setTimeout(() => {\n                      this.isTransitioning = false;\n                    }, this.transitionDuration);\n                  }\n                  \n                  getSlidePosition(slideIndex) {\n                    const diff = slideIndex - this.currentIndex;\n                    const totalSlides = this.totalSlides;\n                    \n                    let normalizedDiff = diff;\n                    if (diff > totalSlides \/ 2) normalizedDiff -= totalSlides;\n                    if (diff < -totalSlides \/ 2) normalizedDiff += totalSlides;\n                    \n                    if (normalizedDiff === 0) return 'center';\n                    if (normalizedDiff === 1) return 'right';\n                    if (normalizedDiff === -1) return 'left';\n                    if (normalizedDiff === 2) return 'far-right';\n                    if (normalizedDiff === -2) return 'far-left';\n                    return 'hidden';\n                  }\n                  \n                  updateUI() {\n                    document.querySelectorAll('#' + this.widgetId + '-pagination .pagination-dot').forEach((dot, index) => {\n                      dot.classList.toggle('active', index === this.currentIndex);\n                    });\n                    \n                    if (mostrarFiltros) {\n                      document.querySelectorAll('.filtro-btn').forEach((btn, index) => {\n                        btn.classList.toggle('active', index === this.currentIndex);\n                      });\n                    }\n                  }\n                  \n                  startAutoplay() {\n                    if (!this.autoplayEnabled) return;\n                    this.autoplayInterval = setInterval(() => {\n                      this.navigate('next');\n                    }, this.autoplayDelay);\n                  }\n                  \n                  pauseAutoplay() {\n                    if (this.autoplayInterval) {\n                      clearInterval(this.autoplayInterval);\n                      this.autoplayInterval = null;\n                    }\n                  }\n                  \n                  resumeAutoplay() {\n                    if (!this.autoplayInterval && this.autoplayEnabled) {\n                      this.startAutoplay();\n                    }\n                  }\n                  \n                  resetAutoplay() {\n                    this.pauseAutoplay();\n                    this.startAutoplay();\n                  }\n                }\n                \n                if (document.readyState === 'loading') {\n                  document.addEventListener('DOMContentLoaded', () => new SolucionesCarousel(widgetId));\n                } else {\n                  new SolucionesCarousel(widgetId);\n                }\n            })();\n            <\/script>\n\n            \t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-bc93fe8 e-con-full e-flex e-con e-parent\" data-id=\"bc93fe8\" data-element_type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-4c3a50d elementor-widget elementor-widget-testimonios-carousel\" data-id=\"4c3a50d\" data-element_type=\"widget\" data-widget_type=\"testimonios-carousel.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\n            <style>\n            :root {\n              --blue-900: #0b2b4b;\n              --blue-500: #0a6fb0;\n              --accent: rgba(9, 111, 176, 0.12);\n              --bg: #f7fbff;\n              --card-bg: #ffffff;\n            }\n\n            .testi-section {\n              background: transparent;\n              padding: 48px 12px 80px;\n              overflow: hidden;\n            }\n\n            .testi-inner {\n              max-width: 1260px;\n              margin: 0 auto;\n            }\n\n            .testi-heading {\n              text-align: center;\n              margin-bottom: 28px;\n              color: var(--blue-900);\n              font-family: \"Poppins\", sans-serif;\n              font-size: 36px;\n              font-weight: 300;\n              line-height: 1.3;\n            }\n\n            .testi-heading em {\n              font-style: italic;\n              font-weight: 300;\n            }\n\n            .testi-heading strong {\n              font-weight: 700;\n            }\n\n            .testi-sub {\n              margin-top: 12px;\n              color: #6b7a8b;\n              font-size: 16px;\n              font-weight: 400;\n              line-height: 1.5;\n              max-width: 800px;\n              margin-left: auto;\n              margin-right: auto;\n            }\n\n            .testi-carousel-wrapper {\n              position: relative;\n              display: flex;\n              align-items: center;\n              justify-content: center;\n              padding: 30px 20px 60px;\n            }\n\n            .testi-nav {\n              position: absolute;\n              top: 50%;\n              transform: translateY(-50%);\n              width: 64px;\n              height: 64px;\n              border-radius: 50%;\n              background: rgba(255, 255, 255, 0.95);\n              border: none;\n              box-shadow: 0 8px 24px rgba(11, 43, 75, 0.08);\n              display: flex;\n              align-items: center;\n              justify-content: center;\n              cursor: pointer;\n              z-index: 60;\n              transition: transform 0.18s, box-shadow 0.18s;\n              backdrop-filter: blur(6px);\n            }\n\n            .testi-nav svg {\n              width: 22px;\n              height: 22px;\n              stroke: var(--blue-500);\n              fill: none;\n              stroke-width: 2;\n              stroke-linecap: round;\n              stroke-linejoin: round;\n            }\n\n            .testi-nav:hover {\n              transform: translateY(-50%) scale(1.06);\n              box-shadow: 0 12px 30px rgba(11, 43, 75, 0.12);\n            }\n\n            .testi-nav.prev {\n              left: 28px;\n            }\n\n            .testi-nav.next {\n              right: 28px;\n            }\n\n            .testi-track {\n              position: relative;\n              width: 100%;\n              height: 420px;\n              display: block;\n              cursor: grab;\n            }\n\n            .testi-track:active {\n              cursor: grabbing;\n            }\n\n            .testi-slide {\n              position: absolute;\n              top: 0;\n              left: 50%;\n              transform: translateX(-50%);\n              width: 760px;\n              max-width: 85vw;\n              transition: transform 0.6s cubic-bezier(0.25, 0.1, 0.25, 1), \n                          opacity 0.6s, \n                          filter 0.6s;\n              will-change: transform, opacity, filter;\n              display: flex;\n              align-items: center;\n              justify-content: center;\n              padding: 0 10px;\n              box-sizing: border-box;\n            }\n\n            .testi-slide * {\n              user-select: none;\n              pointer-events: none;\n            }\n\n            .testi-card {\n              width: 100%;\n              background: var(--card-bg);\n              border-radius: 22px;\n              padding: 36px 36px 28px;\n              box-shadow: 0 8px 24px rgba(11, 43, 75, 0.06);\n              position: relative;\n              overflow: hidden;\n              display: flex;\n              align-items: stretch;\n            }\n\n            .testi-quote-mark {\n              font-size: 96px;\n              color: var(--accent);\n              position: absolute;\n              left: 32px;\n              top: 18px;\n              line-height: 0;\n              font-weight: 700;\n              pointer-events: none;\n              font-family: Georgia, serif;\n            }\n\n            .testi-quote-mark.small {\n              font-size: 48px;\n              left: 18px;\n              top: 12px;\n            }\n\n            .testi-body {\n              margin-left: 36px;\n              flex: 1;\n              display: flex;\n              flex-direction: column;\n            }\n\n            .testi-text {\n              color: var(--blue-900);\n              font-size: 18px;\n              line-height: 1.6;\n              margin: 6px 0 18px;\n              font-family: 'Poppins', sans-serif;\n            }\n\n            .testi-person {\n              display: flex;\n              align-items: center;\n              gap: 14px;\n              margin-top: auto;\n            }\n\n            .testi-avatar {\n              width: 56px;\n              height: 56px;\n              border-radius: 50%;\n              object-fit: cover;\n              border: 3px solid rgba(255, 255, 255, 0.9);\n              box-shadow: 0 6px 18px rgba(11, 43, 75, 0.08);\n            }\n\n            .testi-person-info .name {\n              font-weight: 700;\n              color: var(--blue-900);\n              font-size: 15px;\n              font-family: 'Poppins', sans-serif;\n            }\n\n            .testi-person-info .role {\n              font-size: 13px;\n              color: #8b97a5;\n              font-family: 'Poppins', sans-serif;\n            }\n\n            .testi-quote-icon {\n              margin-left: auto;\n              font-size: 36px;\n              color: var(--accent);\n              font-weight: 700;\n              font-family: Georgia, serif;\n            }\n\n            .testi-quote-icon.small {\n              font-size: 20px;\n            }\n\n            \/* Positions *\/\n            .testi-slide[data-position=\"center\"] {\n              z-index: 50;\n              transform: translateX(-50%) scale(1);\n              opacity: 1;\n              filter: blur(0);\n            }\n\n            .testi-slide[data-position=\"right\"] {\n              z-index: 30;\n              transform: translateX(calc(-50% + 420px)) scale(0.82);\n              opacity: 0.35;\n              filter: blur(1.2px);\n            }\n\n            .testi-slide[data-position=\"left\"] {\n              z-index: 30;\n              transform: translateX(calc(-50% - 420px)) scale(0.82);\n              opacity: 0.35;\n              filter: blur(1.2px);\n            }\n\n            .testi-slide[data-position=\"far-right\"] {\n              z-index: 20;\n              transform: translateX(calc(-50% + 620px)) scale(0.7);\n              opacity: 0.18;\n              filter: blur(2.2px);\n            }\n\n            .testi-slide[data-position=\"far-left\"] {\n              z-index: 20;\n              transform: translateX(calc(-50% - 620px)) scale(0.7);\n              opacity: 0.18;\n              filter: blur(2.2px);\n            }\n\n            .testi-slide[data-position=\"hidden\"] {\n              z-index: 5;\n              transform: translateX(-50%) scale(0.55);\n              opacity: 0;\n              filter: blur(4px);\n            }\n\n            \/* Pagination *\/\n            .testi-dots {\n              position: absolute;\n              bottom: 12px;\n              left: 50%;\n              transform: translateX(-50%);\n              display: flex;\n              gap: 10px;\n              z-index: 70;\n            }\n\n            .dot {\n              width: 10px;\n              height: 10px;\n              border-radius: 10px;\n              background: #d6dbe4;\n              border: none;\n              transition: all 0.35s;\n              cursor: pointer;\n            }\n\n            .dot.active {\n              background: var(--blue-500);\n              width: 34px;\n              border-radius: 20px;\n            }\n\n            \/* Responsive *\/\n            @media (max-width: 1000px) {\n              .testi-card {\n                padding: 28px;\n              }\n\n              .testi-heading {\n                font-size: 28px;\n              }\n\n              .testi-sub {\n                font-size: 15px;\n              }\n\n              .testi-slide[data-position=\"right\"],\n              .testi-slide[data-position=\"left\"] {\n                transform: translateX(0) scale(0.88);\n                opacity: 0.28;\n              }\n\n              .testi-avatar {\n                width: 48px;\n                height: 48px;\n              }\n            }\n\n            @media (max-width: 680px) {\n              .testi-nav {\n                width: 48px;\n                height: 48px;\n              }\n\n              .testi-nav svg {\n                width: 18px;\n                height: 18px;\n              }\n\n              .testi-heading {\n                padding: 0 12px;\n                font-size: 22px;\n              }\n\n              .testi-sub {\n                font-size: 14px;\n              }\n\n              .testi-card {\n                padding: 20px;\n                border-radius: 14px;\n              }\n\n              .testi-quote-mark {\n                display: none;\n              }\n\n              .testi-body {\n                margin-left: 0;\n              }\n\n              .testi-text {\n                font-size: 16px;\n              }\n\n              .testi-slide {\n                width: 88vw;\n              }\n\n              .testi-carousel-wrapper {\n                padding-bottom: 80px;\n              }\n\n              .testi-avatar {\n                width: 44px;\n                height: 44px;\n              }\n\n              .testi-person-info .name {\n                font-size: 14px;\n              }\n\n              .testi-person-info .role {\n                font-size: 12px;\n              }\n\n              .testi-quote-icon {\n                font-size: 24px;\n              }\n\n              .testi-nav.prev {\n                left: 10px;\n              }\n\n              .testi-nav.next {\n                right: 10px;\n              }\n            }\n            <\/style>\n\n            <div class=\"testi-section\">\n              <div class=\"testi-inner\">\n                <div class=\"testi-heading\">\n                  <em>ORGANIZACIONES<\/em> QUE YA CONF\u00cdAN EN <strong>NOSOTROS<\/strong>                  \n                                      <p class=\"testi-sub\">\n                      Empresas privadas, instituciones p\u00fablicas y cl\u00ednicas ya mejoraron su comunicaci\u00f3n con Open City.                    <\/p>\n                                  <\/div>\n\n                <div class=\"testi-carousel-wrapper\">\n                  <button class=\"testi-nav prev\" id=\"testi-4c3a50d-prevBtn\" aria-label=\"Anterior\">\n                    <svg viewBox=\"0 0 24 24\">\n                      <path d=\"M15 6l-6 6 6 6\"\/>\n                    <\/svg>\n                  <\/button>\n\n                  <div class=\"testi-track\" id=\"testi-4c3a50d-track\">\n                                            \n                        <article class=\"testi-slide\" \n                                 data-index=\"0\" \n                                 data-position=\"center\"\n                                 role=\"group\" \n                                 aria-roledescription=\"slide\">\n                          <div class=\"testi-card\">\n                            <div class=\"testi-quote-mark \">\"<\/div>\n                            <div class=\"testi-body\">\n                                                              <p class=\"testi-text\">\nGracias a Open City logramos implementar un sistema de Cartel Digital en el Departamento de Salud de la Municipalidad que ha sido de gran ayuda para mantener informados a los paci\n<\/p>\n                                                            \n                              <div class=\"testi-person\">\n                                                                  <img decoding=\"async\" class=\"testi-avatar\" \n                                       src=\"https:\/\/opencity.cl\/wp-content\/uploads\/2025\/11\/oceansblue-jorge-martinez-2c9795659e4c2e1ea1e7ef8a1ba920fc-150x150.png\" \n                                       alt=\"Jorge Martinez\">\n                                                                \n                                <div class=\"testi-person-info\">\n                                                                      <div class=\"name\">Jorge Martinez<\/div>\n                                                                    \n                                                                      <div class=\"role\">Municipalidad de Talagante<\/div>\n                                                                  <\/div>\n                                \n                                <div class=\"testi-quote-icon \">\"<\/div>\n                              <\/div>\n                            <\/div>\n                          <\/div>\n                        <\/article>\n                        \n                                                \n                        <article class=\"testi-slide\" \n                                 data-index=\"1\" \n                                 data-position=\"right\"\n                                 role=\"group\" \n                                 aria-roledescription=\"slide\">\n                          <div class=\"testi-card\">\n                            <div class=\"testi-quote-mark small\">\"<\/div>\n                            <div class=\"testi-body\">\n                                                              <p class=\"testi-text\">\nCon el sistema de Cartel Digital de Open City hemos logrado mejorar notablemente las comunicaciones internas con los colaboradores de la Empresa\n\n\n\n\n<\/p>\n                                                            \n                              <div class=\"testi-person\">\n                                                                  <img decoding=\"async\" class=\"testi-avatar\" \n                                       src=\"https:\/\/opencity.cl\/wp-content\/uploads\/2025\/11\/oceansblue-valentina-montero-ba07080c294e947a3fe56de53d907f9e-150x150.png\" \n                                       alt=\"Valentina Montero\">\n                                                                \n                                <div class=\"testi-person-info\">\n                                                                      <div class=\"name\">Valentina Montero<\/div>\n                                                                    \n                                                                      <div class=\"role\">Multix<\/div>\n                                                                  <\/div>\n                                \n                                <div class=\"testi-quote-icon small\">\"<\/div>\n                              <\/div>\n                            <\/div>\n                          <\/div>\n                        <\/article>\n                        \n                                                \n                        <article class=\"testi-slide\" \n                                 data-index=\"2\" \n                                 data-position=\"far-right\"\n                                 role=\"group\" \n                                 aria-roledescription=\"slide\">\n                          <div class=\"testi-card\">\n                            <div class=\"testi-quote-mark small\">\"<\/div>\n                            <div class=\"testi-body\">\n                                                              <p class=\"testi-text\">\nGracias a la asesor\u00eda de Andr\u00e9s Gonzalez de OPEN CITY hemos podido tener todos nuestros sistemas licenciados. Gracias Andres por tu gesti\u00f3n.\n\n\n\n\n<\/p>\n                                                            \n                              <div class=\"testi-person\">\n                                                                  <img decoding=\"async\" class=\"testi-avatar\" \n                                       src=\"https:\/\/opencity.cl\/wp-content\/uploads\/2025\/11\/oceansblue-jaime-santana-2bb5f2f1a6b188d0717a4bc4bdee95f4-150x150.png\" \n                                       alt=\"Jaime Santana\">\n                                                                \n                                <div class=\"testi-person-info\">\n                                                                      <div class=\"name\">Jaime Santana<\/div>\n                                                                    \n                                                                      <div class=\"role\">Wdesign<\/div>\n                                                                  <\/div>\n                                \n                                <div class=\"testi-quote-icon small\">\"<\/div>\n                              <\/div>\n                            <\/div>\n                          <\/div>\n                        <\/article>\n                        \n                                                \n                        <article class=\"testi-slide\" \n                                 data-index=\"3\" \n                                 data-position=\"far-left\"\n                                 role=\"group\" \n                                 aria-roledescription=\"slide\">\n                          <div class=\"testi-card\">\n                            <div class=\"testi-quote-mark small\">\"<\/div>\n                            <div class=\"testi-body\">\n                                                              <p class=\"testi-text\">\nOpen City es uno de nuestros proveedores m\u00e1s antiguos. En 2014 comenzamos a ofrecer el servicio de Digital Signage a nuestros clientes en Colombia y otros pa\u00edses de la regi\u00f3n\n<\/p>\n                                                            \n                              <div class=\"testi-person\">\n                                                                  <img decoding=\"async\" class=\"testi-avatar\" \n                                       src=\"https:\/\/opencity.cl\/wp-content\/uploads\/2025\/11\/oceansblue-alejandro-restrepo-da16089c5560ff14541029aceefc54de-150x150.png\" \n                                       alt=\"Alejandro Restrepo\">\n                                                                \n                                <div class=\"testi-person-info\">\n                                                                      <div class=\"name\">Alejandro Restrepo<\/div>\n                                                                    \n                                                                      <div class=\"role\">Xegmenta<\/div>\n                                                                  <\/div>\n                                \n                                <div class=\"testi-quote-icon small\">\"<\/div>\n                              <\/div>\n                            <\/div>\n                          <\/div>\n                        <\/article>\n                        \n                                                \n                        <article class=\"testi-slide\" \n                                 data-index=\"4\" \n                                 data-position=\"left\"\n                                 role=\"group\" \n                                 aria-roledescription=\"slide\">\n                          <div class=\"testi-card\">\n                            <div class=\"testi-quote-mark small\">\"<\/div>\n                            <div class=\"testi-body\">\n                                                              <p class=\"testi-text\">\nEl personal de Open City nos ha ayudado desde que comenzamos nuestro proyecto de publicidad en establecimientos comerciales en Florida. Nos fueron apoyando en cada etapa\n\n\n\n\n<\/p>\n                                                            \n                              <div class=\"testi-person\">\n                                                                  <img decoding=\"async\" class=\"testi-avatar\" \n                                       src=\"https:\/\/opencity.cl\/wp-content\/uploads\/2025\/11\/oceansblue-ramon-reinoso-7b41bfa5085806dfa24b8c9de0ce567f-150x150.png\" \n                                       alt=\"Ram\u00f3n Reinoso\">\n                                                                \n                                <div class=\"testi-person-info\">\n                                                                      <div class=\"name\">Ram\u00f3n Reinoso<\/div>\n                                                                    \n                                                                      <div class=\"role\">Reibarts<\/div>\n                                                                  <\/div>\n                                \n                                <div class=\"testi-quote-icon small\">\"<\/div>\n                              <\/div>\n                            <\/div>\n                          <\/div>\n                        <\/article>\n                        \n                                                \n                        <article class=\"testi-slide\" \n                                 data-index=\"5\" \n                                 data-position=\"hidden\"\n                                 role=\"group\" \n                                 aria-roledescription=\"slide\">\n                          <div class=\"testi-card\">\n                            <div class=\"testi-quote-mark small\">\"<\/div>\n                            <div class=\"testi-body\">\n                                                              <p class=\"testi-text\">\nHemos estado trabajando con Open City desde el a\u00f1o 2016. Siempre nos han apoyado en lo que hemos necesitado. Sabemos que podemos confiar en que siempre estar\u00e1n ah\u00ed para ayudarnos.\n\n\n\n\n<\/p>\n                                                            \n                              <div class=\"testi-person\">\n                                                                  <img decoding=\"async\" class=\"testi-avatar\" \n                                       src=\"https:\/\/opencity.cl\/wp-content\/uploads\/2025\/11\/oceansblue-jorge-roldan-48c29f281099638adbe5cf04e3ecb1be-150x150.png\" \n                                       alt=\"Jorge Roldan\">\n                                                                \n                                <div class=\"testi-person-info\">\n                                                                      <div class=\"name\">Jorge Roldan<\/div>\n                                                                    \n                                                                      <div class=\"role\">Nexans<\/div>\n                                                                  <\/div>\n                                \n                                <div class=\"testi-quote-icon small\">\"<\/div>\n                              <\/div>\n                            <\/div>\n                          <\/div>\n                        <\/article>\n                        \n                                                \n                        <article class=\"testi-slide\" \n                                 data-index=\"6\" \n                                 data-position=\"hidden\"\n                                 role=\"group\" \n                                 aria-roledescription=\"slide\">\n                          <div class=\"testi-card\">\n                            <div class=\"testi-quote-mark small\">\"<\/div>\n                            <div class=\"testi-body\">\n                                                              <p class=\"testi-text\">\nTenemos instalado un sistema de comunicaciones internas en la empresa desde 2016 usando el software de Digital Signage de Open City\n\n\n\n\n<\/p>\n                                                            \n                              <div class=\"testi-person\">\n                                                                  <img decoding=\"async\" class=\"testi-avatar\" \n                                       src=\"https:\/\/opencity.cl\/wp-content\/uploads\/2025\/11\/oceansblue-francisca-ariztia-w-e586564c9a877f887aaa493460b23ebf-150x150.png\" \n                                       alt=\"Francisca Arizt\u00eda\">\n                                                                \n                                <div class=\"testi-person-info\">\n                                                                      <div class=\"name\">Francisca Arizt\u00eda<\/div>\n                                                                    \n                                                                      <div class=\"role\">AquaChile<\/div>\n                                                                  <\/div>\n                                \n                                <div class=\"testi-quote-icon small\">\"<\/div>\n                              <\/div>\n                            <\/div>\n                          <\/div>\n                        <\/article>\n                        \n                                          <\/div>\n\n                  <button class=\"testi-nav next\" id=\"testi-4c3a50d-nextBtn\" aria-label=\"Siguiente\">\n                    <svg viewBox=\"0 0 24 24\">\n                      <path d=\"M9 6l6 6-6 6\"\/>\n                    <\/svg>\n                  <\/button>\n\n                  <div class=\"testi-dots\" id=\"testi-4c3a50d-dots\" role=\"tablist\" aria-label=\"Paginaci\u00f3n\">\n                    <button class=\"dot active\" data-slide=\"0\" aria-label=\"Slide 1\"><\/button><button class=\"dot \" data-slide=\"1\" aria-label=\"Slide 2\"><\/button><button class=\"dot \" data-slide=\"2\" aria-label=\"Slide 3\"><\/button><button class=\"dot \" data-slide=\"3\" aria-label=\"Slide 4\"><\/button><button class=\"dot \" data-slide=\"4\" aria-label=\"Slide 5\"><\/button><button class=\"dot \" data-slide=\"5\" aria-label=\"Slide 6\"><\/button><button class=\"dot \" data-slide=\"6\" aria-label=\"Slide 7\"><\/button>                  <\/div>\n                <\/div>\n              <\/div>\n            <\/div>\n\n            <script>\n            (function() {\n              const widgetId = 'testi-4c3a50d';\n              const autoplayEnabled = true;\n              const autoplayDelay = 5500;\n\n              class TestiCarousel {\n                constructor(widgetId) {\n                  this.widgetId = widgetId;\n                  this.track = document.getElementById(widgetId + '-track');\n                  this.slides = Array.from(this.track.querySelectorAll('.testi-slide'));\n                  this.total = this.slides.length;\n                  this.current = 0;\n                  this.isAnimating = false;\n                  this.transition = 600;\n                  this.minSwipe = 45;\n                  this.startX = 0;\n                  this.currentX = 0;\n                  this.dragging = false;\n                  this.moved = false;\n\n                  this.prevBtn = document.getElementById(widgetId + '-prevBtn');\n                  this.nextBtn = document.getElementById(widgetId + '-nextBtn');\n                  this.dots = Array.from(document.querySelectorAll('#' + widgetId + '-dots .dot'));\n\n                  this.bind();\n                  this.update();\n                  \n                  if (autoplayEnabled) {\n                    this.startAutoplay();\n                  }\n                }\n\n                bind() {\n                  this.prevBtn.addEventListener('click', () => this.goto('prev'));\n                  this.nextBtn.addEventListener('click', () => this.goto('next'));\n                  \n                  this.dots.forEach(d => d.addEventListener('click', () => {\n                    const idx = parseInt(d.getAttribute('data-slide'), 10);\n                    this.goTo(idx);\n                  }));\n\n                  this.track.addEventListener('mousedown', (e) => this.startDrag(e));\n                  document.addEventListener('mousemove', (e) => this.onDrag(e));\n                  document.addEventListener('mouseup', () => this.endDrag());\n\n                  this.track.addEventListener('touchstart', (e) => this.startDrag(e), {passive: true});\n                  this.track.addEventListener('touchmove', (e) => this.onDrag(e), {passive: true});\n                  this.track.addEventListener('touchend', () => this.endDrag());\n\n                  document.addEventListener('keydown', (e) => {\n                    if (e.key === 'ArrowLeft') this.goto('prev');\n                    if (e.key === 'ArrowRight') this.goto('next');\n                  });\n\n                  const wrapper = document.querySelector('.testi-carousel-wrapper');\n                  if (wrapper) {\n                    wrapper.addEventListener('mouseenter', () => this.pauseAuto());\n                    wrapper.addEventListener('mouseleave', () => this.resumeAuto());\n                  }\n                }\n\n                startDrag(e) {\n                  if (e.target.closest('.testi-nav') || e.target.closest('button')) return;\n                  this.dragging = true;\n                  this.moved = false;\n                  this.startX = this.getX(e);\n                  this.currentX = this.startX;\n                  this.pauseAuto();\n                  this.track.style.cursor = 'grabbing';\n                }\n\n                onDrag(e) {\n                  if (!this.dragging) return;\n                  this.currentX = this.getX(e);\n                  if (Math.abs(this.currentX - this.startX) > 6) this.moved = true;\n                }\n\n                endDrag() {\n                  if (!this.dragging) return;\n                  this.dragging = false;\n                  this.track.style.cursor = 'grab';\n                  const dist = this.startX - this.currentX;\n                  if (this.moved && Math.abs(dist) > this.minSwipe) {\n                    if (dist > 0) this.goto('next');\n                    else this.goto('prev');\n                  } else {\n                    this.resumeAuto();\n                  }\n                  this.startX = this.currentX = 0;\n                  this.moved = false;\n                }\n\n                getX(e) {\n                  return e.type.includes('mouse') ? e.clientX : (e.touches && e.touches[0] && e.touches[0].clientX) || 0;\n                }\n\n                goto(dir) {\n                  if (this.isAnimating) return;\n                  if (dir === 'next') this.current = (this.current + 1) % this.total;\n                  else this.current = (this.current - 1 + this.total) % this.total;\n                  this.update();\n                  this.resetAuto();\n                }\n\n                goTo(idx) {\n                  if (this.isAnimating || idx === this.current) return;\n                  this.current = idx;\n                  this.update();\n                  this.resetAuto();\n                }\n\n                update() {\n                  this.isAnimating = true;\n                  this.slides.forEach((s, i) => {\n                    const pos = this.calcPosition(i);\n                    s.setAttribute('data-position', pos);\n                    \n                    \/\/ Update quote sizes\n                    const quoteMark = s.querySelector('.testi-quote-mark');\n                    const quoteIcon = s.querySelector('.testi-quote-icon');\n                    if (pos === 'center') {\n                      if (quoteMark) quoteMark.classList.remove('small');\n                      if (quoteIcon) quoteIcon.classList.remove('small');\n                    } else {\n                      if (quoteMark) quoteMark.classList.add('small');\n                      if (quoteIcon) quoteIcon.classList.add('small');\n                    }\n                  });\n\n                  this.dots.forEach((d, i) => d.classList.toggle('active', i === this.current));\n\n                  setTimeout(() => this.isAnimating = false, this.transition);\n                }\n\n                calcPosition(i) {\n                  const diff = i - this.current;\n                  const half = Math.floor(this.total \/ 2);\n                  let nd = diff;\n                  if (diff > half) nd -= this.total;\n                  if (diff < -half) nd += this.total;\n                  if (nd === 0) return 'center';\n                  if (nd === 1) return 'right';\n                  if (nd === -1) return 'left';\n                  if (nd === 2) return 'far-right';\n                  if (nd === -2) return 'far-left';\n                  return 'hidden';\n                }\n\n                startAutoplay() {\n                  this.autoId = setInterval(() => this.goto('next'), autoplayDelay);\n                }\n\n                pauseAuto() {\n                  if (this.autoId) {\n                    clearInterval(this.autoId);\n                    this.autoId = null;\n                  }\n                }\n\n                resumeAuto() {\n                  if (!this.autoId && autoplayEnabled) this.startAutoplay();\n                }\n\n                resetAuto() {\n                  this.pauseAuto();\n                  if (autoplayEnabled) this.startAutoplay();\n                }\n              }\n\n              if (document.readyState === 'loading') {\n                document.addEventListener('DOMContentLoaded', () => new TestiCarousel(widgetId));\n              } else {\n                new TestiCarousel(widgetId);\n              }\n            })();\n            <\/script>\n\n            \t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-aa41a06 elementor-hidden-mobile e-flex e-con-boxed e-con e-parent\" data-id=\"aa41a06\" data-element_type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"elementor-element elementor-element-ac08b85 e-con-full e-flex e-con e-child\" data-id=\"ac08b85\" data-element_type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-7fea30f elementor-widget__width-initial elementor-widget elementor-widget-heading\" data-id=\"7fea30f\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">\u00bfLISTO PARA ANTICIPARTE A LAS FALLAS?<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-0ef29bb elementor-widget__width-initial elementor-widget elementor-widget-text-editor\" data-id=\"0ef29bb\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p>Conoce c\u00f3mo el mantenimiento predictivo puede optimizar tus operaciones, prolongar la vida de tus equipos y reducir costos operativos desde el primer mes.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-67b9202 elementor-align-left elementor-widget__width-initial elementor-widget elementor-widget-button\" data-id=\"67b9202\" data-element_type=\"widget\" data-widget_type=\"button.default\">\n\t\t\t\t\t\t\t\t\t\t<a class=\"elementor-button elementor-button-link elementor-size-sm\" href=\"https:\/\/opencity.cl\/?page_id=195\">\n\t\t\t\t\t\t<span class=\"elementor-button-content-wrapper\">\n\t\t\t\t\t\t\t\t\t<span class=\"elementor-button-text\">Solicitar evaluaci\u00f3n<\/span>\n\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-0279396 elementor-hidden-desktop elementor-hidden-tablet e-flex e-con-boxed e-con e-parent\" data-id=\"0279396\" data-element_type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-074045a elementor-align-justify elementor-widget__width-initial elementor-widget elementor-widget-button\" data-id=\"074045a\" data-element_type=\"widget\" data-widget_type=\"button.default\">\n\t\t\t\t\t\t\t\t\t\t<a class=\"elementor-button elementor-button-link elementor-size-sm\" href=\"https:\/\/opencity.cl\/?page_id=195\">\n\t\t\t\t\t\t<span class=\"elementor-button-content-wrapper\">\n\t\t\t\t\t\t\t\t\t<span class=\"elementor-button-text\">Solicitar asesor\u00eda <\/span>\n\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-0410f60 elementor-widget__width-initial elementor-widget elementor-widget-text-editor\" data-id=\"0410f60\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p>Conoce c\u00f3mo el mantenimiento predictivo puede optimizar tus operaciones, prolongar la vida de tus equipos y reducir costos operativos desde el primer mes.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-5a7358b elementor-widget__width-initial elementor-widget elementor-widget-heading\" data-id=\"5a7358b\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">\u00bfLISTO PARA ANTICIPARTE A LAS FALLAS?<\/h2>\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Solicitar asesor\u00eda Conoce como funciona Monitorea el estado de tus m\u00e1quinas en tiempo real con nuestra soluci\u00f3n de mantenimiento predictivo. Detecta anomal\u00edas antes de que se conviertan en fallas y toma decisiones basadas en datos precisos. ANTIC\u00cdPATE A FALLAS Y OPTIMIZA LA DISPONIBILIDAD DE TUS EQUIPOS DE LA REACCI\u00d3N A LA PREVENCI\u00d3N El mantenimiento predictivo [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-350","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/opencity.cl\/index.php?rest_route=\/wp\/v2\/pages\/350","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/opencity.cl\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/opencity.cl\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/opencity.cl\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/opencity.cl\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=350"}],"version-history":[{"count":43,"href":"https:\/\/opencity.cl\/index.php?rest_route=\/wp\/v2\/pages\/350\/revisions"}],"predecessor-version":[{"id":1127,"href":"https:\/\/opencity.cl\/index.php?rest_route=\/wp\/v2\/pages\/350\/revisions\/1127"}],"wp:attachment":[{"href":"https:\/\/opencity.cl\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=350"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}