{"id":1323,"date":"2026-03-03T17:48:43","date_gmt":"2026-03-03T17:48:43","guid":{"rendered":"https:\/\/mednologyapps.com\/?page_id=1323"},"modified":"2026-03-03T18:08:49","modified_gmt":"2026-03-03T18:08:49","slug":"test","status":"publish","type":"page","link":"https:\/\/mednologyapps.com\/index.php\/test\/","title":{"rendered":"Test"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"1323\" class=\"elementor elementor-1323\">\n\t\t\t\t<div class=\"elementor-element elementor-element-992960c e-con-full e-flex wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no e-con e-parent\" data-id=\"992960c\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-91d1336 elementor-widget elementor-widget-html\" data-id=\"91d1336\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<!-- =========================\r\nMVP CONFIGURADOR 3D (WordPress + Elementor) - FIX OrbitControls\r\n- Carga GLB (tu URL)\r\n- OrbitControls robusto (THREE.OrbitControls o window.OrbitControls)\r\n- GLTFLoader robusto\r\n- Decal (impresi\u00f3n) + upload imagen\r\n- Controles: frente\/espalda + mover\/rotar\/escalar + preview PNG\r\n========================= -->\r\n\r\n<div id=\"md-configurator\" class=\"md-wrap\">\r\n  <div class=\"md-ui\">\r\n    <div class=\"md-row\">\r\n      <label>Prenda (MVP)<\/label>\r\n      <select id=\"mdGarment\">\r\n        <option value=\"polo\" selected>Polo<\/option>\r\n        <option value=\"polera\">Polera<\/option>\r\n        <option value=\"manga0\">Polo manga 0<\/option>\r\n      <\/select>\r\n      <small class=\"md-note\">* En el MVP puedes usar el mismo GLB en las 3 opciones si a\u00fan no tienes 3 modelos.<\/small>\r\n    <\/div>\r\n\r\n    <div class=\"md-row\">\r\n      <label>Color<\/label>\r\n      <input id=\"mdColor\" type=\"color\" value=\"#111111\" \/>\r\n    <\/div>\r\n\r\n    <div class=\"md-row\">\r\n      <label>Talla (MVP)<\/label>\r\n      <select id=\"mdSize\">\r\n        <option>S<\/option><option selected>M<\/option><option>L<\/option><option>XL<\/option>\r\n      <\/select>\r\n      <small class=\"md-note\">* En el MVP la talla es solo UI.<\/small>\r\n    <\/div>\r\n\r\n    <div class=\"md-row\">\r\n      <label>Tu dise\u00f1o<\/label>\r\n      <input id=\"mdFile\" type=\"file\" accept=\"image\/png,image\/jpeg,image\/webp\" \/>\r\n      <small class=\"md-note\">Recomendado: PNG con fondo transparente.<\/small>\r\n    <\/div>\r\n\r\n    <div class=\"md-row md-split\">\r\n      <button id=\"mdFront\" class=\"md-btn md-btn-active\" type=\"button\">Frente<\/button>\r\n      <button id=\"mdBack\" class=\"md-btn\" type=\"button\">Espalda<\/button>\r\n    <\/div>\r\n\r\n    <div class=\"md-row\">\r\n      <label>Posici\u00f3n X<\/label>\r\n      <input id=\"mdPosX\" type=\"range\" min=\"-0.35\" max=\"0.35\" step=\"0.001\" value=\"0\" \/>\r\n    <\/div>\r\n\r\n    <div class=\"md-row\">\r\n      <label>Posici\u00f3n Y<\/label>\r\n      <input id=\"mdPosY\" type=\"range\" min=\"-0.35\" max=\"0.35\" step=\"0.001\" value=\"0.05\" \/>\r\n    <\/div>\r\n\r\n    <div class=\"md-row\">\r\n      <label>Escala<\/label>\r\n      <input id=\"mdScale\" type=\"range\" min=\"0.03\" max=\"0.25\" step=\"0.001\" value=\"0.10\" \/>\r\n    <\/div>\r\n\r\n    <div class=\"md-row\">\r\n      <label>Rotaci\u00f3n<\/label>\r\n      <input id=\"mdRot\" type=\"range\" min=\"-180\" max=\"180\" step=\"1\" value=\"0\" \/>\r\n    <\/div>\r\n\r\n    <div class=\"md-row md-split\">\r\n      <button id=\"mdReset\" class=\"md-btn\" type=\"button\">Reset<\/button>\r\n      <button id=\"mdSnapshot\" class=\"md-btn md-btn-primary\" type=\"button\">Generar preview<\/button>\r\n    <\/div>\r\n\r\n    <div class=\"md-row\">\r\n      <img id=\"mdPreview\" alt=\"preview\" style=\"display:none; width:100%; border-radius:12px; border:1px solid rgba(0,0,0,.12);\" \/>\r\n      <small class=\"md-note\">El preview sirve para carrito despu\u00e9s.<\/small>\r\n    <\/div>\r\n  <\/div>\r\n\r\n  <div class=\"md-stage\">\r\n    <div id=\"mdCanvasWrap\" class=\"md-canvas\"><\/div>\r\n    <div class=\"md-hint\">Arrastra para rotar \u2022 Scroll para zoom<\/div>\r\n  <\/div>\r\n<\/div>\r\n\r\n<style>\r\n  .md-wrap{display:grid;grid-template-columns:360px 1fr;gap:18px;align-items:start;font-family:system-ui,-apple-system,Segoe UI,Roboto,Arial,sans-serif}\r\n  @media (max-width:980px){.md-wrap{grid-template-columns:1fr}}\r\n  .md-ui{background:#fff;border:1px solid rgba(0,0,0,.10);border-radius:16px;padding:14px;box-shadow:0 10px 24px rgba(0,0,0,.06)}\r\n  .md-row{margin:10px 0}\r\n  .md-row label{display:block;font-size:13px;font-weight:700;margin-bottom:6px}\r\n  .md-row input[type=\"range\"]{width:100%}\r\n  .md-row select,.md-row input[type=\"color\"],.md-row input[type=\"file\"]{width:100%;padding:10px;border-radius:12px;border:1px solid rgba(0,0,0,.14);background:#fff;outline:none;font-size:14px}\r\n  .md-note{display:block;margin-top:6px;font-size:12px;opacity:.75}\r\n  .md-split{display:flex;gap:10px}\r\n  .md-btn{flex:1;padding:10px 12px;border-radius:12px;border:1px solid rgba(0,0,0,.14);background:#fff;cursor:pointer;font-weight:700}\r\n  .md-btn:hover{transform:translateY(-1px)}\r\n  .md-btn-primary{background:#111;color:#fff;border-color:#111}\r\n  .md-btn-active{background:rgba(17,17,17,.08);border-color:rgba(17,17,17,.35)}\r\n  .md-stage{position:relative;background:linear-gradient(180deg,#fafafa,#f1f1f1);border:1px solid rgba(0,0,0,.10);border-radius:16px;min-height:520px;overflow:hidden;box-shadow:0 10px 24px rgba(0,0,0,.06)}\r\n  .md-canvas{width:100%;height:520px}\r\n  .md-hint{position:absolute;left:14px;bottom:14px;font-size:12px;opacity:.75;background:rgba(255,255,255,.7);padding:8px 10px;border-radius:999px;border:1px solid rgba(0,0,0,.10)}\r\n<\/style>\r\n\r\n<!-- \u2705 Usa una versi\u00f3n compatible con scripts \"globales\" -->\r\n<script src=\"https:\/\/cdn.jsdelivr.net\/npm\/three@0.152.2\/build\/three.min.js\"><\/script>\r\n<script src=\"https:\/\/cdn.jsdelivr.net\/npm\/three@0.152.2\/examples\/js\/controls\/OrbitControls.js\"><\/script>\r\n<script src=\"https:\/\/cdn.jsdelivr.net\/npm\/three@0.152.2\/examples\/js\/loaders\/GLTFLoader.js\"><\/script>\r\n<script src=\"https:\/\/cdn.jsdelivr.net\/npm\/three@0.152.2\/examples\/js\/geometries\/DecalGeometry.js\"><\/script>\r\n\r\n<script>\r\n(function(){\r\n  \/\/ Evitar doble init si Elementor re-renderiza\r\n  if (window.__MD_CONFIGURATOR_INIT_V2__) return;\r\n  window.__MD_CONFIGURATOR_INIT_V2__ = true;\r\n\r\n  function el(id){ return document.getElementById(id); }\r\n\r\n  \/\/ \u2705 Tus modelos (puedes repetir el mismo para MVP)\r\n  const MODELS = {\r\n    polo:   \"https:\/\/mednologyapps.com\/wp-content\/uploads\/2026\/03\/cc6f48a2-196a-4487-8ed9-d0970dc01360.glb\",\r\n    polera: \"https:\/\/mednologyapps.com\/wp-content\/uploads\/2026\/03\/cc6f48a2-196a-4487-8ed9-d0970dc01360.glb\",\r\n    manga0: \"https:\/\/mednologyapps.com\/wp-content\/uploads\/2026\/03\/cc6f48a2-196a-4487-8ed9-d0970dc01360.glb\"\r\n  };\r\n\r\n  \/\/ Espera a que los scripts externos est\u00e9n realmente disponibles\r\n  function resolveClass(name){\r\n    \/\/ casos posibles: THREE.OrbitControls \/ window.OrbitControls \/ THREE.OrbitControls.OrbitControls\r\n    const a = window.THREE && window.THREE[name];\r\n    const b = window[name];\r\n    if (typeof a === \"function\") return a;\r\n    if (a && typeof a[name] === \"function\") return a[name];\r\n    if (typeof b === \"function\") return b;\r\n    if (b && typeof b[name] === \"function\") return b[name];\r\n    return null;\r\n  }\r\n\r\n  function waitForThree(cb){\r\n    let tries = 0;\r\n    const t = setInterval(function(){\r\n      tries++;\r\n\r\n      const OrbitControls = resolveClass(\"OrbitControls\");\r\n      const GLTFLoader = resolveClass(\"GLTFLoader\");\r\n      const DecalGeometry = resolveClass(\"DecalGeometry\");\r\n\r\n      if (window.THREE && OrbitControls && GLTFLoader && DecalGeometry){\r\n        clearInterval(t);\r\n        cb({ OrbitControls, GLTFLoader, DecalGeometry });\r\n      }\r\n\r\n      if (tries > 80){ \/\/ ~8s\r\n        clearInterval(t);\r\n        console.error(\"No se cargaron las dependencias de Three.js\", {\r\n          THREE: window.THREE,\r\n          OrbitControls: window.THREE && window.THREE.OrbitControls,\r\n          winOrbit: window.OrbitControls,\r\n          GLTFLoader: window.THREE && window.THREE.GLTFLoader,\r\n          winGLTF: window.GLTFLoader\r\n        });\r\n        alert(\"Three.js no carg\u00f3 completo (OrbitControls\/GLTFLoader). Revisa consola F12.\");\r\n      }\r\n    }, 100);\r\n  }\r\n\r\n  function ready(fn){\r\n    if (document.readyState === \"complete\" || document.readyState === \"interactive\") setTimeout(fn, 1);\r\n    else document.addEventListener(\"DOMContentLoaded\", fn);\r\n  }\r\n\r\n  ready(function(){\r\n    waitForThree(function(classes){\r\n      const OrbitControls = classes.OrbitControls;\r\n      const GLTFLoader = classes.GLTFLoader;\r\n      const DecalGeometry = classes.DecalGeometry;\r\n\r\n      const wrap = el(\"mdCanvasWrap\");\r\n      if (!wrap){ console.error(\"No existe #mdCanvasWrap\"); return; }\r\n\r\n      const renderer = new THREE.WebGLRenderer({ antialias:true, alpha:true, preserveDrawingBuffer:true });\r\n      renderer.setPixelRatio(Math.min(window.devicePixelRatio || 1, 2));\r\n      wrap.appendChild(renderer.domElement);\r\n\r\n      const scene = new THREE.Scene();\r\n\r\n      const camera = new THREE.PerspectiveCamera(35, 1, 0.1, 100);\r\n      camera.position.set(0, 1.35, 3.2);\r\n\r\n      const controls = new OrbitControls(camera, renderer.domElement);\r\n      controls.enableDamping = true;\r\n      controls.target.set(0, 1.1, 0);\r\n\r\n      scene.add(new THREE.HemisphereLight(0xffffff, 0x333333, 0.95));\r\n\r\n      const key = new THREE.DirectionalLight(0xffffff, 1.15);\r\n      key.position.set(2, 4, 3);\r\n      scene.add(key);\r\n\r\n      const fill = new THREE.DirectionalLight(0xffffff, 0.55);\r\n      fill.position.set(-2, 2.5, 2);\r\n      scene.add(fill);\r\n\r\n      const floor = new THREE.Mesh(\r\n        new THREE.CircleGeometry(1.3, 64),\r\n        new THREE.MeshStandardMaterial({ color: 0xffffff, roughness: 1, metalness: 0, transparent:true, opacity:0.55 })\r\n      );\r\n      floor.rotation.x = -Math.PI\/2;\r\n      floor.position.y = 0;\r\n      scene.add(floor);\r\n\r\n      let currentModel = null;\r\n      let fabricMeshes = [];\r\n      let decalMesh = null;\r\n      let decalTexture = null;\r\n      let isBack = false;\r\n\r\n      const designCanvas = document.createElement(\"canvas\");\r\n      designCanvas.width = 1024;\r\n      designCanvas.height = 1024;\r\n      const dctx = designCanvas.getContext(\"2d\");\r\n\r\n      function resize(){\r\n        const w = Math.max(wrap.clientWidth || wrap.parentElement?.clientWidth || 800, 320);\r\n        const h = 520;\r\n        renderer.setSize(w, h, false);\r\n        camera.aspect = w \/ h;\r\n        camera.updateProjectionMatrix();\r\n      }\r\n      window.addEventListener(\"resize\", resize);\r\n\r\n      const loader = new GLTFLoader();\r\n\r\n      function disposeModel(obj){\r\n        if (!obj) return;\r\n        obj.traverse(function(o){\r\n          if (o.isMesh){\r\n            if (o.geometry) o.geometry.dispose();\r\n            if (o.material){\r\n              if (Array.isArray(o.material)) o.material.forEach(m => m.dispose && m.dispose());\r\n              else o.material.dispose && o.material.dispose();\r\n            }\r\n          }\r\n        });\r\n      }\r\n\r\n      function applyFabricColor(hex){\r\n        const c = new THREE.Color(hex);\r\n        fabricMeshes.forEach(m => {\r\n          if (!m.userData.__clonedMat && m.material){\r\n            m.material = m.material.clone();\r\n            m.userData.__clonedMat = true;\r\n          }\r\n          if (m.material && m.material.color) m.material.color.copy(c);\r\n          if (m.material){\r\n            m.material.roughness = 0.95;\r\n            m.material.metalness = 0.0;\r\n            m.material.needsUpdate = true;\r\n          }\r\n        });\r\n      }\r\n\r\n      function getMainMesh(){\r\n        let best = null, bestVol = 0;\r\n        fabricMeshes.forEach(m => {\r\n          const b = new THREE.Box3().setFromObject(m);\r\n          const s = new THREE.Vector3();\r\n          b.getSize(s);\r\n          const v = s.x*s.y*s.z;\r\n          if (v > bestVol){ bestVol = v; best = m; }\r\n        });\r\n        return best;\r\n      }\r\n\r\n      function rebuildDecal(){\r\n        if (!currentModel || !decalTexture) return;\r\n\r\n        if (decalMesh){\r\n          scene.remove(decalMesh);\r\n          decalMesh.geometry && decalMesh.geometry.dispose();\r\n          decalMesh.material && decalMesh.material.dispose();\r\n          decalMesh = null;\r\n        }\r\n\r\n        const mesh = getMainMesh();\r\n        if (!mesh) return;\r\n\r\n        const posX = parseFloat(el(\"mdPosX\").value);\r\n        const posY = parseFloat(el(\"mdPosY\").value);\r\n        const scale = parseFloat(el(\"mdScale\").value);\r\n        const rotDeg = parseFloat(el(\"mdRot\").value);\r\n        const rotRad = (rotDeg * Math.PI) \/ 180;\r\n\r\n        \/\/ Ajusta seg\u00fan tu modelo si quieres\r\n        const BASE_Y = 1.10;\r\n        const BASE_Z = 0.38;\r\n\r\n        const position = new THREE.Vector3(posX, BASE_Y + posY, BASE_Z);\r\n        const orientation = new THREE.Euler(0, isBack ? Math.PI : 0, rotRad);\r\n        const size = new THREE.Vector3(scale, scale, scale);\r\n\r\n        const geom = new DecalGeometry(mesh, position, orientation, size);\r\n\r\n        const mat = new THREE.MeshStandardMaterial({\r\n          map: decalTexture,\r\n          transparent: true,\r\n          depthTest: true,\r\n          depthWrite: false,\r\n          polygonOffset: true,\r\n          polygonOffsetFactor: -4,\r\n          roughness: 0.9,\r\n          metalness: 0.0\r\n        });\r\n\r\n        decalMesh = new THREE.Mesh(geom, mat);\r\n        scene.add(decalMesh);\r\n      }\r\n\r\n      function drawImageToCanvas(img){\r\n        dctx.clearRect(0,0,designCanvas.width, designCanvas.height);\r\n\r\n        const maxW = designCanvas.width * 0.82;\r\n        const maxH = designCanvas.height * 0.82;\r\n\r\n        let w = img.width, h = img.height;\r\n        const s = Math.min(maxW \/ w, maxH \/ h, 1);\r\n        w = w * s; h = h * s;\r\n\r\n        const x = (designCanvas.width - w)\/2;\r\n        const y = (designCanvas.height - h)\/2;\r\n\r\n        dctx.drawImage(img, x, y, w, h);\r\n\r\n        decalTexture = new THREE.CanvasTexture(designCanvas);\r\n        decalTexture.encoding = THREE.sRGBEncoding;\r\n        decalTexture.needsUpdate = true;\r\n\r\n        rebuildDecal();\r\n      }\r\n\r\n      function loadGarment(kind){\r\n        const url = MODELS[kind];\r\n\r\n        if (currentModel){\r\n          scene.remove(currentModel);\r\n          disposeModel(currentModel);\r\n          currentModel = null;\r\n        }\r\n        fabricMeshes = [];\r\n\r\n        if (decalMesh){\r\n          scene.remove(decalMesh);\r\n          decalMesh.geometry && decalMesh.geometry.dispose();\r\n          decalMesh.material && decalMesh.material.dispose();\r\n          decalMesh = null;\r\n        }\r\n\r\n        loader.load(\r\n          url,\r\n          function(gltf){\r\n            currentModel = gltf.scene;\r\n\r\n            \/\/ Centra y escala\r\n            const box = new THREE.Box3().setFromObject(currentModel);\r\n            const size = new THREE.Vector3();\r\n            box.getSize(size);\r\n            const sc = 1.8 \/ Math.max(size.x, size.y, size.z);\r\n            currentModel.scale.setScalar(sc);\r\n\r\n            const box2 = new THREE.Box3().setFromObject(currentModel);\r\n            const center = new THREE.Vector3();\r\n            box2.getCenter(center);\r\n\r\n            currentModel.position.sub(center);\r\n            currentModel.position.y += 0.95;\r\n            currentModel.rotation.y = isBack ? Math.PI : 0;\r\n\r\n            currentModel.traverse(function(o){\r\n              if (o.isMesh) fabricMeshes.push(o);\r\n            });\r\n\r\n            applyFabricColor(el(\"mdColor\").value);\r\n            scene.add(currentModel);\r\n\r\n            if (decalTexture) rebuildDecal();\r\n          },\r\n          undefined,\r\n          function(err){\r\n            console.error(\"GLB ERROR:\", err);\r\n            alert(\"No carg\u00f3 el modelo 3D. Abre consola (F12).\");\r\n          }\r\n        );\r\n      }\r\n\r\n      \/\/ UI\r\n      el(\"mdColor\").addEventListener(\"input\", e => applyFabricColor(e.target.value));\r\n      el(\"mdGarment\").addEventListener(\"change\", e => loadGarment(e.target.value));\r\n      [\"mdPosX\",\"mdPosY\",\"mdScale\",\"mdRot\"].forEach(id => el(id).addEventListener(\"input\", rebuildDecal));\r\n\r\n      el(\"mdFront\").addEventListener(\"click\", function(){\r\n        isBack = false;\r\n        el(\"mdFront\").classList.add(\"md-btn-active\");\r\n        el(\"mdBack\").classList.remove(\"md-btn-active\");\r\n        if (currentModel) currentModel.rotation.y = 0;\r\n        rebuildDecal();\r\n      });\r\n\r\n      el(\"mdBack\").addEventListener(\"click\", function(){\r\n        isBack = true;\r\n        el(\"mdBack\").classList.add(\"md-btn-active\");\r\n        el(\"mdFront\").classList.remove(\"md-btn-active\");\r\n        if (currentModel) currentModel.rotation.y = Math.PI;\r\n        rebuildDecal();\r\n      });\r\n\r\n      el(\"mdReset\").addEventListener(\"click\", function(){\r\n        el(\"mdPosX\").value = 0;\r\n        el(\"mdPosY\").value = 0.05;\r\n        el(\"mdScale\").value = 0.10;\r\n        el(\"mdRot\").value = 0;\r\n        rebuildDecal();\r\n      });\r\n\r\n      el(\"mdFile\").addEventListener(\"change\", function(e){\r\n        const file = e.target.files && e.target.files[0];\r\n        if (!file) return;\r\n\r\n        const url = URL.createObjectURL(file);\r\n        const img = new Image();\r\n        img.onload = function(){\r\n          drawImageToCanvas(img);\r\n          URL.revokeObjectURL(url);\r\n        };\r\n        img.src = url;\r\n      });\r\n\r\n      el(\"mdSnapshot\").addEventListener(\"click\", function(){\r\n        renderer.render(scene, camera);\r\n        const dataUrl = renderer.domElement.toDataURL(\"image\/png\");\r\n        const preview = el(\"mdPreview\");\r\n        preview.src = dataUrl;\r\n        preview.style.display = \"block\";\r\n      });\r\n\r\n      function tick(){\r\n        controls.update();\r\n        renderer.render(scene, camera);\r\n        requestAnimationFrame(tick);\r\n      }\r\n\r\n      \/\/ Init\r\n      resize();\r\n      loadGarment(\"polo\");\r\n      tick();\r\n    });\r\n  });\r\n})();\r\n<\/script>\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>Prenda (MVP) PoloPoleraPolo manga 0 * En el MVP puedes usar el mismo GLB en las 3 opciones si a\u00fan no tienes 3 modelos. Color Talla (MVP) SMLXL * En el MVP la talla es solo UI. Tu dise\u00f1o Recomendado: PNG con fondo transparente. Frente Espalda Posici\u00f3n X Posici\u00f3n Y Escala Rotaci\u00f3n Reset Generar preview El preview sirve para carrito despu\u00e9s. Arrastra para rotar \u2022 Scroll para zoom<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"site-sidebar-layout":"no-sidebar","site-content-layout":"","ast-site-content-layout":"full-width-container","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"disabled","ast-breadcrumbs-content":"","ast-featured-img":"disabled","footer-sml-layout":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"class_list":["post-1323","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/mednologyapps.com\/index.php\/wp-json\/wp\/v2\/pages\/1323","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mednologyapps.com\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/mednologyapps.com\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/mednologyapps.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/mednologyapps.com\/index.php\/wp-json\/wp\/v2\/comments?post=1323"}],"version-history":[{"count":13,"href":"https:\/\/mednologyapps.com\/index.php\/wp-json\/wp\/v2\/pages\/1323\/revisions"}],"predecessor-version":[{"id":1336,"href":"https:\/\/mednologyapps.com\/index.php\/wp-json\/wp\/v2\/pages\/1323\/revisions\/1336"}],"wp:attachment":[{"href":"https:\/\/mednologyapps.com\/index.php\/wp-json\/wp\/v2\/media?parent=1323"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}