{"id":221570,"date":"2026-08-29T21:56:41","date_gmt":"2026-08-29T21:56:41","guid":{"rendered":"https:\/\/parcroyalhotel.com\/suites-in-cuencas-historic-center-parc-royal-hotel\/"},"modified":"2026-10-14T22:15:21","modified_gmt":"2026-10-14T22:15:21","slug":"suites","status":"publish","type":"page","link":"https:\/\/parcroyalhotel.com\/en\/suites\/","title":{"rendered":"Suites in Cuenca&#8217;s Historic Center | Parc Royal Hotel"},"content":{"rendered":"<div class=\"et_pb_section_0 et_pb_section et_section_regular et_flex_section hero-zoom\">\n<div class=\"et_pb_row_0 et_pb_row et_grid_row hero-zoom-sticky\">\n<div class=\"et_pb_column_0 et_pb_column et_flex_column et_pb_css_mix_blend_mode_passthrough\">\n<div class=\"et_pb_text_0 et_pb_text et_pb_bg_layout_light et_pb_module et_flex_module hero-zoom-title\"><div class=\"et_pb_text_inner\"><h1>Suites in Cuenca\u2019s historic center<\/h1>\n<p>Six ways to stay at Parc Royal<\/p>\n<\/div><\/div>\n<\/div>\n\n<div class=\"et_pb_column_1 et_pb_column et_flex_column et_pb_css_mix_blend_mode_passthrough\">\n<div class=\"et_pb_image_0 et_pb_image et_pb_module et_flex_module hero-zoom-frame\"><span class=\"et_pb_image_wrap\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/parcroyalhotel.com\/wp-content\/uploads\/2026\/08\/marco-blanco-4-vertical.webp\" title=\"marco blanco 4 vertical\" width=\"716\" height=\"1000\" srcset=\"https:\/\/parcroyalhotel.com\/wp-content\/uploads\/2026\/08\/marco-blanco-4-vertical.webp 716w, https:\/\/parcroyalhotel.com\/wp-content\/uploads\/2026\/08\/marco-blanco-4-vertical-480x670.webp 480w\" sizes=\"(min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) 716px, 100vw\" class=\"wp-image-2081\" \/><\/span><\/div>\n\n<div class=\"et_pb_image_1 et_pb_image et_pb_image_sticky et_pb_module et_flex_module hero-zoom-image focal-52-58\"><span class=\"et_pb_image_wrap\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/parcroyalhotel.com\/wp-content\/uploads\/2026\/08\/SUITE-HERO-v1.webp\" title=\"SUITE HERO v1\" width=\"2500\" height=\"1667\" srcset=\"https:\/\/parcroyalhotel.com\/wp-content\/uploads\/2026\/08\/SUITE-HERO-v1.webp 2500w, https:\/\/parcroyalhotel.com\/wp-content\/uploads\/2026\/08\/SUITE-HERO-v1-1280x854.webp 1280w, https:\/\/parcroyalhotel.com\/wp-content\/uploads\/2026\/08\/SUITE-HERO-v1-980x653.webp 980w, https:\/\/parcroyalhotel.com\/wp-content\/uploads\/2026\/08\/SUITE-HERO-v1-480x320.webp 480w\" sizes=\"(min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) and (max-width: 980px) 980px, (min-width: 981px) and (max-width: 1280px) 1280px, (min-width: 1281px) 2500px, 100vw\" class=\"wp-image-1913\" \/><\/span><\/div>\n<\/div>\n\n<div class=\"et_pb_column_2 et_pb_column et-last-child et_flex_column et_pb_css_mix_blend_mode_passthrough\">\n<div class=\"et_pb_text_1 et_pb_text et_pb_bg_layout_light et_pb_module et_flex_module hero-zoom-text\"><div class=\"et_pb_text_inner\"><h4>The space and comfort of an apartment, with the services of a hotel.<\/h4>\n<\/div>\n<div class=\"et_pb_row_1 et_pb_row et_pb_row_nested et_flex_row\">\n<div class=\"et_pb_column_3 et_pb_column et_flex_column et_pb_css_mix_blend_mode_passthrough et_flex_column_12_24 et_flex_column_12_24_tablet et_flex_column_24_24_phone et_flex_column_12_24_widescreen et_flex_column_12_24_ultraWide\">\n<div class=\"et_pb_text_2 et_pb_text et_pb_bg_layout_light et_pb_module et_flex_module\"><div class=\"et_pb_text_inner\"><p>Sizes<br \/><span style=\"font-weight: 400;\">35 \u2013 87 m\u00b2<\/span><\/p>\n<\/div><\/div>\n<\/div>\n\n<div class=\"et_pb_column_4 et_pb_column et-last-child et_flex_column et_pb_css_mix_blend_mode_passthrough et_flex_column_12_24 et_flex_column_12_24_tablet et_flex_column_24_24_phone et_flex_column_12_24_widescreen et_flex_column_12_24_ultraWide\">\n<div class=\"et_pb_text_3 et_pb_text et_pb_bg_layout_light et_pb_module et_flex_module\"><div class=\"et_pb_text_inner\"><p>Capacity<br \/>2 \u2013 4 guests<\/p>\n<\/div><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n\n<div class=\"et_pb_row_2 et_pb_row et_flex_row\">\n<div class=\"et_pb_column_5 et_pb_column et-last-child et_flex_column et_pb_css_mix_blend_mode_passthrough et_flex_column_24_24 et_flex_column_24_24_tablet et_flex_column_24_24_phone et_flex_column_24_24_widescreen et_flex_column_24_24_ultraWide\">\n<div class=\"et_pb_code_0 et_pb_code et_pb_module\"><div class=\"et_pb_code_inner\"><!-- ============================================================\n     HERO ZOOM \u2014 la ventana se abre y revela la foto completa\n     M\u00f3dulo Code de Divi 5, dentro de la secci\u00f3n del hero.\n\n     La foto NO escala: est\u00e1 desde el principio a tama\u00f1o completo,\n     tapada. Lo que crece es la ventana por la que se la ve.\n     Ver 16-GUIA-hero-zoom.md para el montaje.\n     ============================================================ -->\n\n<style>\n  .hero-zoom{ position: relative; }\n\n  \/* C\u00d3MO SE QUEDA QUIETA LA SECCI\u00d3N \u2014 y por qu\u00e9 NO con transform.\n     Antes se la clavaba compens\u00e1ndola con un transform recalculado en cada\n     cuadro. Eso late. Con el scroll suave \u2014Lenis mueve el scroll dentro de\n     su propio bucle de animaci\u00f3n\u2014 el navegador pinta la p\u00e1gina desplazada\n     y la compensaci\u00f3n llega un cuadro m\u00e1s tarde, siempre.\n     Medido con capturas cuadro a cuadro durante un scroll suave: una marca\n     fija de la secci\u00f3n, que ten\u00eda que quedarse en y=152, iba\n       251 204 180 167 161 156 154 154 153 152 152 152 \u2026\n     o sea 99px de recorrido y hasta 47px de diferencia entre dos cuadros\n     seguidos, antes de asentarse. Eso es el titileo del texto, del marco y\n     del fondo. La foto no titilaba porque es lo \u00fanico que estaba de verdad\n     en position:fixed: el visor.\n     Ahora la secci\u00f3n tambi\u00e9n va con position:fixed mientras dura el efecto.\n     Un elemento fijo lo mantiene quieto el compositor del navegador: no hay\n     JS de por medio, as\u00ed que no puede llegar tarde.\n     El hueco que deja al salirse del flujo lo tapan dos separadores. *\/\n  .hz-sep{ width: 100%; pointer-events: none; }\n\n  \/* EL VISOR: cuelga del <body> y cubre la pantalla entera. Colgarlo del\n     body es lo que garantiza que \"toda la pantalla\" sea de verdad toda la\n     pantalla, sin depender de la caja de ninguna fila de Divi.\n     Se recorta con clip-path, que el navegador resuelve sin recalcular\n     la p\u00e1gina. *\/\n  .hz-visor{\n    position: fixed;\n    left: 0;\n    top: 0;\n    width: 100%;\n    height: 100%;\n    overflow: hidden;\n    pointer-events: none;       \/* no le roba los clics a la p\u00e1gina *\/\n    will-change: clip-path, transform;\n    \/* ARRIBA DEL CONTENIDO, DEBAJO DEL MEN\u00da.\n       Si al abrirse la foto te tapa el men\u00fa, baj\u00e1 este n\u00famero (el men\u00fa de\n       Divi suele estar en 10000 o 99999, as\u00ed que 90 alcanza de sobra; pero\n       si tu header qued\u00f3 dentro de un contenedor con z-index propio, su\n       10000 no cuenta contra el de ac\u00e1 y hay que bajarlo). *\/\n    z-index: 90;\n  }\n  \/* LA CAPA DEL MARCO. Va al lado del visor, colgando del <body>, porque es\n     la \u00fanica forma de que su z-index compita con el de la foto: adentro de\n     la secci\u00f3n el marco queda encerrado en el contexto de apilado de la\n     secci\u00f3n y su z-index no se puede comparar con el del visor.\n     Se dibuja una copia de la imagen del marco, calzada en cada cuadro sobre\n     donde est\u00e1 el m\u00f3dulo original, que se deja en su sitio invisible. *\/\n  .hz-marco{\n    position: fixed;\n    pointer-events: none;\n    will-change: opacity, transform;\n  }\n  .hz-marco img{ width: 100%; height: 100%; display: block; }\n\n  .hz-visor img{\n    position: absolute;\n    inset: 0;\n    width: 100%;\n    height: 100%;\n    object-fit: cover;         \/* siempre cubre: no puede quedar corta *\/\n    object-position: 50% 50%;  \/* el encuadre lo maneja el motor, no esto *\/\n    transform-origin: 0 0;     \/* se ampl\u00eda desde la esquina: as\u00ed el motor\n                                  puede poner el punto focal donde quiera *\/\n    display: block;\n    will-change: transform;\n  }\n\n  \/* El m\u00f3dulo original de la foto deja de verse: su contenido ya est\u00e1 en el\n     visor. Se conserva en el DOM \u2014visible:hidden, no display:none\u2014 porque\n     el motor le lee la posici\u00f3n en cada cuadro para saber d\u00f3nde arranca la\n     ventana. *\/\n  .hz-original{ visibility: hidden !important; }\n\n  \/* El marco solo cambia de opacidad: el motor no le toca el transform, as\u00ed\n     que no escala nunca.\n     OJO: ac\u00e1 hab\u00eda un `transform: none !important` como defensa, y era un\n     error. Si posicion\u00e1s el marco con un transform \u2014translate(-50%,-50%)\n     para centrarlo, por ejemplo\u2014 esa regla lo borra y el marco salta de\n     lugar. Medido: se desplazaba 225,175px, justo media caja. *\/\n  .hero-zoom-frame{\n    will-change: opacity;\n    z-index: 3;\n  }\n  .hero-zoom-title,\n  .hero-zoom-text{\n    will-change: opacity, transform;\n    z-index: 3;\n  }\n<\/style>\n\n<script>\n(function () {\n  'use strict';\n\n  \/* ======================================================================\n     AJUSTES\n     ====================================================================== *\/\n  var ALTO_SCROLL     = 200;   \/* vh del recorrido (data-scroll-height) *\/\n  var ALTO_SCROLL_MOV = 140;   \/* \u00eddem en celular *\/\n  \/* ======================================================================\n     EL CELULAR VA APAGADO \u2014 esa versi\u00f3n se arma en Divi, sin animaci\u00f3n\n     En true, por debajo de CORTE_MOVIL el motor NO HACE NADA: no crea el\n     visor, no clava la secci\u00f3n, no esconde la foto original ni el marco, no\n     agrega separadores y no le toca un solo estilo a nada. La secci\u00f3n se ve\n     EXACTAMENTE como la armes en el editor.\n     Ponelo en false el d\u00eda que quieras la animaci\u00f3n tambi\u00e9n en celular.\n\n     CORTE_MOVIL es el ancho, en p\u00edxeles, por debajo del cual se apaga:\n        768  apagado en tel\u00e9fonos verticales      (Divi corta en 767)\n        981  apagado tambi\u00e9n en tablets y en el tel\u00e9fono acostado\n     Ojo con esto \u00faltimo: un tel\u00e9fono acostado mide unos 840px de ancho, o\n     sea que con 768 la animaci\u00f3n se le enciende al girarlo. Si no quer\u00e9s\n     eso, pon\u00e9 981.\n     ====================================================================== *\/\n  var APAGAR_EN_MOVIL = true;\n  var CORTE_MOVIL     = 768;\n\n  \/* ======================================================================\n     QU\u00c9 VA ENCIMA DE QU\u00c9 \u2014 LOS DOS z-index, AC\u00c1 Y EN NING\u00daN OTRO LADO\n     N\u00famero m\u00e1s alto = se dibuja m\u00e1s arriba.\n         Z_MARCO > Z_FOTO   \u2192 el marco tapa a la foto   (as\u00ed viene)\n         Z_MARCO < Z_FOTO   \u2192 la foto tapa al marco\n     Ojo con subirlos mucho: el men\u00fa de Divi suele estar en 10000, as\u00ed que\n     por encima de eso la foto te tapar\u00eda el men\u00fa.\n     ====================================================================== *\/\n  var Z_FOTO          = 90;\n  var Z_MARCO         = 91;\n\n  var MARCO_FADE      = 20;    \/* % del recorrido en que el marco termin\u00f3 de irse *\/\n  var TEXTO_FADE      = 28;    \/* \u00eddem t\u00edtulo y texto *\/\n  var MARCO_EN_MOVIL  = true;  \/* data-frame-mobile=\"ocultar\" lo apaga *\/\n\n  \/* NADA SE MUEVE DE SU SITIO. Las dos variables que hac\u00edan moverse algo\n     quedan en cero: la apertura arranca exactamente donde est\u00e1 el dise\u00f1o.\n       TEXTO_SUBE   px que sube el texto mientras se va. En 40 se ve\u00eda\n                    primero subir los textos y reci\u00e9n despu\u00e9s abrirse la\n                    ventana, porque la curva de apertura arranca muy lenta\n                    (a un 5% del recorrido la ventana abri\u00f3 0,05%) mientras\n                    que el texto ya iba por el 18% de su desvanecido.\n     Si alguna vez quer\u00e9s el movimiento de vuelta, subila de a poco. *\/\n  var TEXTO_SUBE      = 0;\n\n  \/* ======================================================================\n     CU\u00c1NTO SE AMPL\u00cdA LA FOTO AL PRINCIPIO \u2014 \u00abla imagen macro\u00bb\n     1   = nada: se ve un pedazo de la foto a tama\u00f1o de pantalla, quieta.\n     2.5 = al principio se ve la foto dos veces y media m\u00e1s grande, y se va\n           achicando hasta quedar completa al final.\n     EL PUNTO desde el que se ampl\u00eda LO ELEG\u00cdS VOS, y no se toca ac\u00e1: se\n     escribe en el campo CSS Class del m\u00f3dulo de la foto, junto a\n     hero-zoom-image, con la forma  focal-X-Y  (porcentajes):\n         hero-zoom-image focal-68-40     \u2190 68% desde la izquierda, 40% desde arriba\n         hero-zoom-image focal-20-85     \u2190 abajo a la izquierda\n         hero-zoom-image focal-50-50     \u2190 el centro\n     ====================================================================== *\/\n  var ZOOM_MACRO      = 1.4;\n\n  \/* ======================================================================\n     LA FORMA DE LA VENTANA AL EMPEZAR \u2014 vertical, cuadrada o apaisada\n     null = la ventana es EXACTAMENTE la caja del m\u00f3dulo de la foto en Divi.\n            O sea que la forma ya la eleg\u00eds vos desde el editor: si hac\u00e9s el\n            m\u00f3dulo vertical, la ventana sale vertical. As\u00ed viene.\n     Un n\u00famero = la proporci\u00f3n ancho\/alto, forzada desde ac\u00e1 sin tocar el\n            dise\u00f1o. Se centra en el m\u00f3dulo y conserva la misma superficie,\n            as\u00ed que no cambia de tama\u00f1o, solo de forma:\n                0.6  vertical        1  cuadrada        1.6  apaisada\n     ====================================================================== *\/\n  var FORMA_VENTANA   = 0.7;\n  \/* ====================================================================== *\/\n\n  var estado = { version: 'hero-zoom-9b-celular-apagado', activo: false, motivo: 'todav\u00eda no corri\u00f3' };\n\n  window.prHeroZoom = function () {\n    console.log('VERSION      :', estado.version);\n    console.log('activo       :', estado.activo);\n    console.log('motivo       :', estado.motivo);\n    if (estado.ventana) console.log('ventana ahora:', estado.ventana, '(la foto en pantalla, en vivo)');\n    if (estado.focal)   console.log('punto focal  :', estado.focal.x + '% \/ ' + estado.focal.y + '%',\n                                    '(de: ' + estado.focalDe + ')');\n    if (estado.piezas)  console.log('piezas       :', estado.piezas);\n    if (estado.marco)   console.log('marco        :', estado.marco);\n    if (estado.seccion) console.log('secci\u00f3n      :', estado.seccion);\n    if (estado.recorrido) console.log('recorrido    :', estado.recorrido + 'px de scroll');\n    if (estado.arranque !== undefined) console.log('empieza en   :', estado.arranque);\n    var v = document.querySelector('.hz-visor');\n    var m = null;\n    ['.smart-header', '#main-header', '.et_pb_menu', 'header'].forEach(function (q) {\n      var c = document.querySelector(q);\n      if (c && !m && getComputedStyle(c).position === 'fixed') m = c;\n    });\n    if (v && m) {\n      var zv = getComputedStyle(v).zIndex, zm = getComputedStyle(m).zIndex;\n      console.log('z-index      : visor ' + zv + '  vs  men\u00fa ' + zm +\n                  (parseInt(zm, 10) > parseInt(zv, 10)\n                    ? '  \u2192 el men\u00fa queda arriba, bien'\n                    : '  \u2192 OJO: la foto podr\u00eda tapar el men\u00fa. Baj\u00e1 z-index en .hz-visor'));\n    }\n    if (estado.arreglos) console.log('ancestros corregidos:', estado.arreglos);\n    console.log('progreso     :', estado.p !== undefined ? estado.p.toFixed(3) : '-');\n    return estado;\n  };\n\n  function enEditor() {\n    var q = location.search + location.hash;\n    if (\/[?&#](et_fb|et_bfb|app_window|et_pb_preview)=\/.test(q)) return true;\n    var c = (document.documentElement.className || '') + ' ' +\n            ((document.body && document.body.className) || '');\n    if (\/\\bet-fb\\b|\\bet-bfb\\b|\\bet-fb-root-ancestor\\b|\\bet-fb-preview\\b\/.test(c)) return true;\n    if (document.getElementById('et-fb-app')) return true;\n    try { if (window.self !== window.top) return true; } catch (e) { return true; }\n    return false;\n  }\n\n  function dato(el, nombre) {\n    if (!el) return null;\n    var n = el.closest('[data-' + nombre + ']');\n    return n ? n.getAttribute('data-' + nombre) : null;\n  }\n  function numero(v, d) { var n = parseFloat(v); return isNaN(n) ? d : n; }\n\n  \/* Punto focal: data-focal-x\/y, o la clase focal-X-Y (la \u00fanica que se puede\n     escribir desde Divi, porque el campo CSS Class no acepta atributos). *\/\n  function leerFocal(el) {\n    var x = dato(el, 'focal-x'), y = dato(el, 'focal-y'), de = 'data-focal-x\/y';\n    if (x === null || y === null) {\n      var m = null, n = el;\n      while (n && !m) {\n        m = (n.className || '').toString().match(\/(?:^|\\s)focal-(\\d+)-(\\d+)(?:\\s|$)\/);\n        n = n.parentElement;\n      }\n      if (m) { x = m[1]; y = m[2]; de = 'clase focal-' + m[1] + '-' + m[2]; }\n      else de = 'ninguno: se usa el centro';\n    }\n    return { x: Math.min(100, Math.max(0, numero(x, 50))),\n             y: Math.min(100, Math.max(0, numero(y, 50))), de: de };\n  }\n\n  function suave(t) { return t < 0.5 ? 4*t*t*t : 1 - Math.pow(-2*t + 2, 3)\/2; }\n  function tramo(p, hasta) { return hasta <= 0 ? 1 : Math.min(1, Math.max(0, p \/ (hasta\/100))); }\n\n  \/* Si se cruza el corte \u2014al girar el tel\u00e9fono, o achicando la ventana\u2014 el\n     motor se apaga o se enciende solo. Se registra una sola vez. *\/\n  var vigilando = false;\n  function vigilarAncho() {\n    if (vigilando) return;\n    vigilando = true;\n    window.addEventListener('resize', function () {\n      if (APAGAR_EN_MOVIL && window.innerWidth < CORTE_MOVIL) {\n        if (estado.activo && typeof estado.desconectar === 'function') estado.desconectar();\n      } else if (!estado.activo) {\n        arrancar();\n      }\n    });\n  }\n\n  function arrancar() {\n    if (estado.activo) return;\n    if (enEditor()) { estado.motivo = 'estamos en el editor de Divi: no se anima a prop\u00f3sito'; return; }\n\n    \/* Si el visitante pidi\u00f3 menos movimiento, la p\u00e1gina se queda como la\n       dise\u00f1aste: no se toca nada. Antes ac\u00e1 se escond\u00eda la foto original y\n       despu\u00e9s se apagaba el visor, as\u00ed que no quedaba ninguna foto a la vista. *\/\n    if (window.matchMedia && window.matchMedia('(prefers-reduced-motion: reduce)').matches) {\n      estado.motivo = 'el visitante pidi\u00f3 menos movimiento: la secci\u00f3n se deja quieta';\n      return;\n    }\n\n    if (APAGAR_EN_MOVIL && window.innerWidth < CORTE_MOVIL) {\n      estado.motivo = 'apagado en celular (' + window.innerWidth + 'px < ' + CORTE_MOVIL +\n                      '): la secci\u00f3n queda tal cual la armaste en Divi';\n      vigilarAncho();\n      return;\n    }\n\n    var caja = document.querySelector('.hero-zoom');\n    if (!caja) { estado.motivo = 'no encontr\u00e9 ning\u00fan elemento con la clase hero-zoom'; return; }\n\n    var original = caja.querySelector('.hero-zoom-image');\n    if (!original) { estado.motivo = 'no encontr\u00e9 .hero-zoom-image dentro de .hero-zoom'; return; }\n\n    var img = original.tagName === 'IMG' ? original : original.querySelector('img');\n    if (!img) { estado.motivo = '.hero-zoom-image no contiene ninguna imagen'; return; }\n\n    var marco  = caja.querySelector('.hero-zoom-frame');\n    var titulo = caja.querySelector('.hero-zoom-title');\n    var texto  = caja.querySelector('.hero-zoom-text');\n\n    \/* La clase hero-zoom-sticky ya no hace falta: se clava la secci\u00f3n entera.\n       Se sigue buscando por si ven\u00edas de la versi\u00f3n anterior, pero no se usa\n       para nada y no falla si no est\u00e1. *\/\n    var pegado = caja.querySelector('.hero-zoom-sticky') || caja.querySelector('.et_pb_row');\n\n    \/* ------------------------------------------------------------------\n       El visor es position:fixed y cuelga del <body>. Un fixed deja de\n       posicionarse contra la pantalla si un ancestro tiene transform,\n       filter, perspective, will-change o contain. Sus \u00fanicos ancestros son\n       <html> y <body>, as\u00ed que alcanza con revisar esos dos.\n       (Antes se recorr\u00eda toda la cadena hasta arriba y se le forzaba\n       overflow:visible a media p\u00e1gina. Ya no hace falta: la fila se clava\n       con transform y no sobresale de su secci\u00f3n.)\n       ------------------------------------------------------------------ *\/\n    var corregidos = [];\n    \/* Ahora la SECCI\u00d3N va a ser position:fixed, as\u00ed que hay que limpiar toda\n       su cadena de ancestros, no solo html y body: un transform, filter,\n       perspective, will-change o contain en cualquier ancestro hace que el\n       fixed se posicione contra ESE ancestro en vez de contra la pantalla.\n       Divi pone transform:translateZ(0) en #et-boc, por ejemplo. *\/\n    var cadena = [document.documentElement, document.body];\n    (function () {\n      var n = caja.parentElement;\n      while (n && n !== document.body && n !== document.documentElement) {\n        cadena.push(n); n = n.parentElement;\n      }\n    })();\n    cadena.forEach(function (n) {\n      var o = getComputedStyle(n);\n      if ((o.transform !== 'none') || (o.filter !== 'none') ||\n          (o.perspective !== 'none') || (o.willChange !== 'auto') ||\n          \/paint|strict|layout\/.test(o.contain)) {\n        n.style.setProperty('transform', 'none', 'important');\n        n.style.setProperty('filter', 'none', 'important');\n        n.style.setProperty('perspective', 'none', 'important');\n        n.style.setProperty('will-change', 'auto', 'important');\n        n.style.setProperty('contain', 'none', 'important');\n        corregidos.push(n.tagName.toLowerCase());\n      }\n    });\n    estado.arreglos = corregidos.length ? corregidos.join(', ') : 'ninguno';\n\n    var focal = leerFocal(original);\n    estado.focal = { x: focal.x, y: focal.y };\n    estado.focalDe = focal.de;\n\n    estado.piezas = ['foto', marco && 'marco', titulo && 't\u00edtulo', texto && 'texto']\n                      .filter(Boolean).join(', ');\n\n    var movil = window.innerWidth < CORTE_MOVIL;\n    if (movil && marco && (dato(marco, 'frame-mobile') || '') === 'ocultar') marco.style.display = 'none';\n\n    \/* ------------------------------------------------------------------\n       EL VISOR: la foto a tama\u00f1o final desde el primer cuadro, tapada.\n       Lo que crece es el recorte, no la imagen. As\u00ed la foto se queda quieta\n       en su punto y siempre termina cubriendo la pantalla entera.\n       ------------------------------------------------------------------ *\/\n    \/* ------------------------------------------------------------------\n       EL SEPARADOR: el recorrido del scroll se agrega DESPU\u00c9S de la\n       secci\u00f3n, en un bloque vac\u00edo propio.\n       Antes se le forzaba min-height:200vh a la secci\u00f3n, y eso le\n       reacomodaba el contenido: si la fila est\u00e1 centrada verticalmente\n       \u2014el ajuste Align Items de la fila\u2014, al pasar de una pantalla a dos\n       se iba al medio de la nueva altura. Ese era el \"sube unos p\u00edxeles\"\n       justo antes de que se abriera la ventana.\n       Tocando un separador de afuera, la secci\u00f3n queda EXACTAMENTE como la\n       dise\u00f1aste y no hay nada que se pueda recolocar.\n       ------------------------------------------------------------------ *\/\n    function hacerSep(clase) {\n      var d = document.createElement('div');\n      d.className = 'hz-sep ' + clase;\n      d.setAttribute('aria-hidden', 'true');\n      d.style.height = '0px';\n      return d;\n    }\n    var sepAntes   = hacerSep('hz-sep-antes');\n    var separador  = hacerSep('hz-sep-despues');\n    \/* La fila clavada termina apoyada sobre el separador, as\u00ed que le copiamos\n       el fondo a la secci\u00f3n para que no se note la juntura. *\/\n    var fondo = getComputedStyle(caja).backgroundColor;\n    if (fondo && !\/^rgba\\(0, 0, 0, 0\\)$|^transparent$\/.test(fondo)) separador.style.background = fondo;\n    caja.parentNode.insertBefore(sepAntes, caja);\n    caja.parentNode.insertBefore(separador, caja.nextSibling);\n    \/* Lo \u00fanico que se le toca a la secci\u00f3n: que no recorte a la fila cuando\n       esta se desplaza hacia el separador. *\/\n    caja.style.setProperty('overflow', 'visible', 'important');\n\n    var visor = document.createElement('div');\n    visor.className = 'hz-visor';\n    var clon = img.cloneNode(true);\n    clon.removeAttribute('id');\n    clon.removeAttribute('loading');\n    visor.appendChild(clon);\n    document.body.appendChild(visor);\n\n    visor.style.zIndex = Z_FOTO;\n\n    \/* ------------------------------------------------------------------\n       EL MARCO, EN SU PROPIA CAPA, PARA QUE PUEDA IR ENCIMA DE LA FOTO.\n       Solo se puede si es un m\u00f3dulo de imagen: se copia su <img> y se la\n       calza encima. Si el marco no tuviera imagen \u2014un borde hecho con CSS,\n       por ejemplo\u2014 se lo deja como est\u00e1 y prHeroZoom() lo avisa.\n       ------------------------------------------------------------------ *\/\n    var capaMarco = null, marcoImg = null;\n    if (marco && marco.style.display !== 'none') {\n      var mi = marco.tagName === 'IMG' ? marco : marco.querySelector('img');\n      if (mi) {\n        capaMarco = document.createElement('div');\n        capaMarco.className = 'hz-marco';\n        capaMarco.style.zIndex = Z_MARCO;\n        marcoImg = mi.cloneNode(true);\n        marcoImg.removeAttribute('id');\n        marcoImg.removeAttribute('loading');\n        capaMarco.appendChild(marcoImg);\n        document.body.appendChild(capaMarco);\n        mi.style.setProperty('visibility', 'hidden', 'important');\n        estado.marco = 'en su propia capa, z-index ' + Z_MARCO +\n                       (Z_MARCO > Z_FOTO ? ' (encima de la foto)' : ' (debajo de la foto)');\n      } else {\n        estado.marco = 'el m\u00f3dulo del marco no tiene ninguna imagen adentro: se lo deja donde estaba, ' +\n                       'debajo de la foto. Para poder subirlo tiene que ser un m\u00f3dulo Image.';\n      }\n    }\n\n    \/* El m\u00f3dulo original se deja en su sitio, invisible: sirve para saber en\n       cada cuadro d\u00f3nde arranca la ventana, y para que el marco siga\n       calzando encima. *\/\n    var caparazon = (original.tagName === 'IMG' ? (original.closest('.et_pb_module') || original) : original);\n    caparazon.classList.add('hz-original');\n\n    \/* Los transform que la fila, el t\u00edtulo y el texto ya tra\u00edan, para no\n       pisarlos al moverlos. Se leen una sola vez, antes de tocar nada. *\/\n    function base(el) {\n      if (!el) return '';\n      var t = getComputedStyle(el).transform;\n      return (t && t !== 'none') ? t + ' ' : '';\n    }\n    var baseSeccion = base(caja);\n    var baseTexto   = [base(titulo), base(texto)];\n\n    var alto = 1, p = 0, pendiente = false, arranque = 0, apagado = false;\n\n    var H = 0, W0 = 0, L0 = 0, T0 = 0, S = 0, enElDoc = 0;\n\n    function soltar() {\n      ['position', 'top', 'left', 'width', 'margin', 'z-index', 'transform',\n       'will-change', 'backface-visibility']\n        .forEach(function (k) { caja.style.removeProperty(k); });\n      if (baseSeccion) caja.style.setProperty('transform', baseSeccion, 'important');\n    }\n\n    function medir() {\n      movil = window.innerWidth < CORTE_MOVIL;\n\n      var pantallas = numero(dato(caja, movil ? 'scroll-height-mobile' : 'scroll-height'),\n                             movil ? ALTO_SCROLL_MOV : ALTO_SCROLL);\n      var pantalla = window.innerHeight;\n\n      \/* Cu\u00e1nto dura el recorrido, en p\u00edxeles. *\/\n      alto = Math.max(1, Math.round(pantalla * (pantallas - 100) \/ 100));\n\n      \/* Se mide con la secci\u00f3n suelta y los separadores en cero: si no, se\n         estar\u00eda midiendo a s\u00ed misma ya clavada. *\/\n      fase = '';\n      soltar();\n      sepAntes.style.height = '0px';\n      separador.style.height = '0px';\n\n      var caj = caja.getBoundingClientRect();\n      H  = caj.height;\n      W0 = caj.width;\n      L0 = caj.left;\n      enElDoc = caj.top + (window.pageYOffset || document.documentElement.scrollTop || 0);\n\n      \/* ------------------------------------------------------------------\n         DESDE QU\u00c9 SCROLL EMPIEZA.\n         Lo natural ser\u00eda \u00abcuando el borde de arriba de la secci\u00f3n toca el\n         borde de arriba de la pantalla\u00bb. Pero si el hero es la PRIMERA\n         secci\u00f3n, ese borde casi nunca est\u00e1 en cero: la barra de\n         administraci\u00f3n de WordPress empuja la p\u00e1gina 32px. Esos p\u00edxeles hay\n         que scrollearlos antes de que la cosa se clave, y se ven como la\n         imagen y los textos subiendo.\n         ------------------------------------------------------------------ *\/\n      arranque = (enElDoc < pantalla * 0.5) ? 0 : enElDoc;\n      T0 = enElDoc - arranque;      \/* d\u00f3nde queda la secci\u00f3n en pantalla al clavarse *\/\n\n      \/* El separador se calcula para que la secci\u00f3n siguiente llegue al borde\n         de abajo JUSTO cuando la ventana termina de abrirse:\n             separadores + alto de secci\u00f3n = recorrido + una pantalla - T0   *\/\n      S = Math.max(0, Math.round(alto + pantalla - H - T0));\n\n      estado.recorrido = alto;\n      estado.seccion = Math.round(H) + 'px de alto (no se le toca)';\n      estado.arranque = Math.round(arranque) + 'px de scroll' +\n                        (arranque === 0 && enElDoc > 1\n                          ? '  (la secci\u00f3n empieza en ' + Math.round(enElDoc) +\n                            'px: se ignora ese desfase para que no suba nada)' : '');\n      pintar();\n    }\n\n    \/* ------------------------------------------------------------------\n       LAS TRES FASES.\n       Se cambia de fase solo cuando hace falta, no en cada cuadro: escribir\n       estilos en cada cuadro es justamente lo que lat\u00eda.\n         antes    la secci\u00f3n va en el flujo, normal\n         clavado  la secci\u00f3n es position:fixed y la sostiene el compositor\n         despu\u00e9s  vuelve al flujo, pero corrida hacia abajo por el separador\n                  de arriba, as\u00ed que sigue exactamente donde estaba\n       ------------------------------------------------------------------ *\/\n    var fase = '';\n    function irA(n) {\n      if (fase === n) return;\n      fase = n;\n      if (n === 'clavado') {\n        sepAntes.style.height = '0px';\n        separador.style.height = Math.round(S + H) + 'px';\n        \/* ------------------------------------------------------------------\n           LA CAPA PROPIA. Esto es lo que saca el titileo, y sin esto\n           position:fixed NO alcanza.\n           Un elemento fijo que no tiene capa propia lo tiene que repintar el\n           hilo principal en cada cuadro, y mientras el scroll va r\u00e1pido el\n           navegador lo pinta atrasado aunque su caja est\u00e9 quieta.\n           Medido cotejando, en el mismo instante, lo que dec\u00eda el DOM y el\n           p\u00edxel realmente pintado:\n               scrollY 159 \u2192 el DOM dec\u00eda 152, el p\u00edxel estaba en 311\n               scrollY 361 \u2192 el DOM dec\u00eda 152, el p\u00edxel estaba en 217\n               scrollY 490 \u2192 el DOM dec\u00eda 152, el p\u00edxel estaba en 156\n           La caja nunca se movi\u00f3: lo que se mov\u00eda era el dibujo.\n           Con will-change + translateZ(0) el elemento pasa a su propia capa\n           y lo sostiene el compositor, sin pasar por el hilo principal. Es\n           exactamente por lo que el visor de la foto nunca titil\u00f3: ya ten\u00eda\n           will-change. ------------------------------------------------------ *\/\n        caja.style.setProperty('will-change', 'transform', 'important');\n        caja.style.setProperty('backface-visibility', 'hidden', 'important');\n        caja.style.setProperty('transform', (baseSeccion || '') + 'translateZ(0)', 'important');\n        caja.style.setProperty('position', 'fixed', 'important');\n        caja.style.setProperty('top',    Math.round(T0) + 'px', 'important');\n        caja.style.setProperty('left',   Math.round(L0) + 'px', 'important');\n        caja.style.setProperty('width',  Math.round(W0) + 'px', 'important');\n        caja.style.setProperty('margin', '0', 'important');\n      } else {\n        soltar();\n        sepAntes.style.height  = (n === 'despues' ? Math.round(alto) : 0) + 'px';\n        separador.style.height = (n === 'despues' ? Math.max(0, Math.round(S - alto)) : Math.round(S)) + 'px';\n      }\n      estado.fase = n;\n    }\n\n    \/* La caja desde la que arranca la ventana. Por defecto es la del m\u00f3dulo\n       de la foto; con FORMA_VENTANA se le fuerza otra proporci\u00f3n, centrada en\n       el mismo punto y con la misma superficie. *\/\n    function ventanaInicial() {\n      var o = original.getBoundingClientRect();\n      var r = parseFloat(FORMA_VENTANA);\n      if (!r || !isFinite(r) || r <= 0 || !o.width || !o.height) return o;\n      var area = o.width * o.height;\n      var w = Math.sqrt(area * r), h = Math.sqrt(area \/ r);\n      var cx = o.left + o.width \/ 2, cy = o.top + o.height \/ 2;\n      return { left: cx - w \/ 2, top: cy - h \/ 2, width: w, height: h,\n               right: cx + w \/ 2, bottom: cy + h \/ 2 };\n    }\n\n    function pintar() {\n      pendiente = false;\n      \/* Al desconectar puede quedar un pintar() ya encolado en el\n         requestAnimationFrame, que volver\u00eda a escribirlo todo justo despu\u00e9s\n         de haber limpiado. *\/\n      if (apagado) return;\n\n      var vw = window.innerWidth, vh = window.innerHeight;\n      \/* Se mide contra el scroll y no contra la caja de la secci\u00f3n: la caja\n         se mueve con la p\u00e1gina y arrastraba consigo el desfase de arriba. *\/\n      var y = (window.pageYOffset || document.documentElement.scrollTop || 0) - arranque;\n      p = Math.min(1, Math.max(0, y \/ alto));\n      estado.p = p;\n\n      irA(y < 0 ? 'antes' : (y > alto ? 'despues' : 'clavado'));\n\n      \/* El visor est\u00e1 clavado a la pantalla. Pasado el recorrido se lo deja\n         subir igual que si estuviera en el flujo, y as\u00ed entra la secci\u00f3n\n         siguiente. *\/\n      \/* El visor acompa\u00f1a: fijo mientras dura el efecto, y al terminar pasa\n         a absoluto, apoyado en la p\u00e1gina, para que se vaya con el scroll\n         sin que ning\u00fan JS lo tenga que mover cuadro a cuadro. *\/\n      if (y > alto) {\n        if (visor.style.position !== 'absolute') {\n          var cuerpo = document.body.getBoundingClientRect().top +\n                       (window.pageYOffset || document.documentElement.scrollTop || 0);\n          visor.style.position = 'absolute';\n          visor.style.top = Math.round(arranque + alto - cuerpo) + 'px';\n          visor.style.height = vh + 'px';\n        }\n      } else if (visor.style.position === 'absolute') {\n        visor.style.position = '';\n        visor.style.top = '';\n        visor.style.height = '';\n      }\n      visor.style.visibility = (y <= -vh || y - alto >= vh) ? 'hidden' : '';\n\n      \/* LA VENTANA se abre: de la foto que dibujaste, a la pantalla entera.\n         El recorte se calcula EN VIVO contra la posici\u00f3n real de la foto en\n         pantalla. Medirlo una sola vez al arrancar era justamente el origen\n         del salto: se med\u00eda con la fila en su sitio y se aplicaba con la\n         fila ya clavada, que era otra caja. Ley\u00e9ndolo en cada cuadro el\n         recorte arranca clavado encima de la foto y los cuatro lados se\n         abren juntos. *\/\n      var o = ventanaInicial();\n      var e = suave(p), q = 1 - e;\n      estado.ventana = Math.round(o.width) + 'x' + Math.round(o.height) +\n                       ' en ' + Math.round(o.left) + ',' + Math.round(o.top);\n      visor.style.clipPath = 'inset(' +\n        (Math.max(0, o.top)          * q).toFixed(1) + 'px ' +\n        (Math.max(0, vw - o.right)   * q).toFixed(1) + 'px ' +\n        (Math.max(0, vh - o.bottom)  * q).toFixed(1) + 'px ' +\n        (Math.max(0, o.left)         * q).toFixed(1) + 'px)';\n\n      \/* ------------------------------------------------------------------\n         LA IMAGEN MACRO, DESDE EL PUNTO QUE ELEGISTE.\n         En p=0 el punto focal de la foto queda justo en el centro de la\n         ventana, ampliado ZOOM_MACRO veces. En p=1 la foto queda en su\n         encuadre normal, cubriendo la pantalla, sin ninguna deformaci\u00f3n.\n\n         Antes el punto focal se aplicaba con object-position, y casi no\n         hac\u00eda nada: object-position solo corre la imagen por el eje en el\n         que SOBRA. Medido con una foto de 1600x1000 en una pantalla de\n         1344x900: sobran 96px a lo ancho y 0 a lo alto, o sea que el punto\n         focal pod\u00eda mover la foto 96px como mucho. Por eso la ampliaci\u00f3n\n         parec\u00eda salir siempre del centro.\n         ------------------------------------------------------------------ *\/\n      var iw = clon.naturalWidth || 1, ih = clon.naturalHeight || 1;\n      var cubre = Math.max(vw \/ iw, vh \/ ih);   \/* lo mismo que hace object-fit: cover *\/\n      var aw = iw * cubre, ah = ih * cubre;\n      var ax = (vw - aw) \/ 2, ay = (vh - ah) \/ 2;\n      var fx = ax + (focal.x \/ 100) * aw;       \/* d\u00f3nde cae tu punto focal *\/\n      var fy = ay + (focal.y \/ 100) * ah;\n      var cx = o.left + o.width \/ 2;            \/* el centro de la ventana *\/\n      var cy = o.top + o.height \/ 2;\n      var z  = ZOOM_MACRO + (1 - ZOOM_MACRO) * e;\n      var dx = (cx + (fx - cx) * e) - fx * z;\n      var dy = (cy + (fy - cy) * e) - fy * z;\n      clon.style.transform = 'translate3d(' + dx.toFixed(1) + 'px,' + dy.toFixed(1) +\n                             'px,0) scale(' + z.toFixed(4) + ')';\n\n      \/* El marco se va temprano y nunca escala. *\/\n      if (marco) {\n        var fm = numero(dato(marco, 'frame-fade-percent'), MARCO_FADE);\n        var opa = (1 - tramo(p, fm)).toFixed(3);\n        marco.style.opacity = opa;\n        if (capaMarco) {\n          \/* Se lee en vivo d\u00f3nde qued\u00f3 el marco original y la copia se calza\n             ah\u00ed. As\u00ed vale en las tres fases sin cuentas aparte. *\/\n          var mr = (marco.tagName === 'IMG' ? marco : marco.querySelector('img')).getBoundingClientRect();\n          capaMarco.style.left   = mr.left.toFixed(1) + 'px';\n          capaMarco.style.top    = mr.top.toFixed(1) + 'px';\n          capaMarco.style.width  = mr.width.toFixed(1) + 'px';\n          capaMarco.style.height = mr.height.toFixed(1) + 'px';\n          capaMarco.style.opacity = opa;\n          capaMarco.style.visibility = visor.style.visibility;\n        }\n      }\n\n      \/* T\u00edtulo y texto, un poco despu\u00e9s, con un empuj\u00f3n hacia arriba. *\/\n      var t = tramo(p, numero(dato(caja, 'text-fade-percent'), TEXTO_FADE));\n      [titulo, texto].forEach(function (el, i) {\n        if (!el) return;\n        el.style.opacity = (1 - t).toFixed(3);\n        \/* Se SUMA al transform que ya ten\u00edan: si los centraste con un\n           translate, pisarlo los mover\u00eda de lugar. *\/\n        el.style.transform = baseTexto[i] + 'translateY(' + (-TEXTO_SUBE * t).toFixed(1) + 'px)';\n      });\n    }\n\n    function alScrollear() {\n      if (pendiente) return;\n      pendiente = true;\n      requestAnimationFrame(pintar);\n    }\n\n    \/* ------------------------------------------------------------------\n       SONDA: prHeroProbar()\n       Recorre el efecto solo y dice, con n\u00fameros, cu\u00e1nto se movi\u00f3 cada\n       pieza. Cero es lo que tiene que dar en todas menos la ventana.\n       ------------------------------------------------------------------ *\/\n    \/* ------------------------------------------------------------------\n       SONDA: prHeroProbar()\n       Mide DURANTE EL MOVIMIENTO, cuadro a cuadro, no en reposo.\n       La versi\u00f3n anterior hac\u00eda scrollTo, esperaba a que todo se asentara y\n       reci\u00e9n ah\u00ed med\u00eda. As\u00ed no se puede ver un titileo: el titileo solo\n       existe mientras el scroll est\u00e1 andando. Daba 0.00px en todo y el\n       problema estaba igual.\n       ------------------------------------------------------------------ *\/\n    window.prHeroProbar = function () {\n      var piezas = { 'secci\u00f3n': caja, 'foto': original, 'marco': marco,\n                     't\u00edtulo': titulo, 'texto': texto };\n      var reg = {};\n      Object.keys(piezas).forEach(function (n) { if (piezas[n]) reg[n] = []; });\n\n      var desde = window.pageYOffset, hasta = arranque + alto;\n      var actual = desde, n = 0;\n      console.log('probando en movimiento\u2026 no toques el scroll');\n\n      (function cuadro() {\n        \/* Se avanza con la misma suavidad que un scroll real, y se mide en\n           el mismo cuadro en que se mueve. *\/\n        actual += (hasta - actual) * 0.12;\n        window.scrollTo(0, actual);\n        Object.keys(reg).forEach(function (nn) {\n          reg[nn].push(piezas[nn].getBoundingClientRect().top);\n        });\n        if (++n < 60) return requestAnimationFrame(cuadro);\n\n        window.scrollTo(0, desde);\n        console.log('\\nmovimiento durante el scroll (60 cuadros seguidos):');\n        var mal = 0;\n        Object.keys(reg).forEach(function (nn) {\n          var v = reg[nn], d = Math.max.apply(null, v) - Math.min.apply(null, v);\n          if (d > 1) mal++;\n          console.log('   ' + nn.padEnd(9) + (d.toFixed(2) + 'px').padStart(10) +\n                      (d > 1 ? '   <<< TITILA' : '   quieto'));\n        });\n        console.log(mal ? '\\n\u2717 ' + mal + ' pieza(s) titilan. Copiame esto.'\n                        : '\\n\u2713 nada titila.');\n      })();\n    };\n\n    function alRedimensionar() {\n      if (APAGAR_EN_MOVIL && window.innerWidth < CORTE_MOVIL) { desconectar(); return; }\n      medir(); pintar();\n    }\n\n    \/* Deja la p\u00e1gina como si el m\u00f3dulo nunca hubiera corrido. *\/\n    function desconectar() {\n      apagado = true;\n      window.removeEventListener('scroll', alScrollear);\n      window.removeEventListener('resize', alRedimensionar);\n      try {\n        if (window.PR && window.PR.lenis && typeof window.PR.lenis.off === 'function')\n          window.PR.lenis.off('scroll', alScrollear);\n      } catch (e) {}\n      [visor, capaMarco, sepAntes, separador].forEach(function (n) {\n        if (n && n.parentNode) n.parentNode.removeChild(n);\n      });\n      caparazon.classList.remove('hz-original');\n      if (marco) {\n        marco.style.removeProperty('opacity');\n        marco.style.removeProperty('display');\n        var mv = marco.tagName === 'IMG' ? marco : marco.querySelector('img');\n        if (mv) mv.style.removeProperty('visibility');\n      }\n      [titulo, texto].forEach(function (el) {\n        if (!el) return;\n        el.style.removeProperty('opacity');\n        el.style.removeProperty('transform');\n      });\n      fase = '';\n      soltar();\n      \/* Ni el transform de origen se deja en l\u00ednea: vuelve a mandar el CSS. *\/\n      caja.style.removeProperty('transform');\n      caja.style.removeProperty('overflow');\n      estado.activo = false;\n      delete estado.fase;\n      estado.motivo = 'apagado en celular (' + window.innerWidth + 'px < ' + CORTE_MOVIL +\n                      '): la secci\u00f3n queda tal cual la armaste en Divi';\n    }\n    estado.desconectar = desconectar;\n    vigilarAncho();\n\n    medir(); pintar();\n    window.addEventListener('scroll', alScrollear, { passive: true });\n    window.addEventListener('resize', alRedimensionar);\n    if (window.PR && window.PR.lenis && typeof window.PR.lenis.on === 'function') {\n      try { window.PR.lenis.on('scroll', alScrollear); } catch (e) {}\n    }\n    if (!clon.complete) clon.addEventListener('load', function () { medir(); pintar(); });\n\n    estado.activo = true;\n    estado.motivo = 'ok';\n  }\n\n  if (document.readyState === 'loading') document.addEventListener('DOMContentLoaded', arrancar);\n  else arrancar();\n  window.addEventListener('load', arrancar);\n})();\n<\/script>\n<\/div><\/div>\n<\/div>\n<\/div>\n<\/div>\n\n<div class=\"et_pb_section_1 et_pb_section et_section_regular et_flex_section\">\n<div class=\"et_pb_row_3 et_pb_row et_flex_row\">\n<div class=\"et_pb_column_6 et_pb_column et-last-child et_flex_column et_pb_css_mix_blend_mode_passthrough et_flex_column_24_24 et_flex_column_24_24_tablet et_flex_column_24_24_phone et_flex_column_24_24_widescreen et_flex_column_24_24_ultraWide\">\n<div class=\"et_pb_text_4 et_pb_text et_pb_bg_layout_light et_pb_module et_flex_module\"><div class=\"et_pb_text_inner\" data-et-mv-hidden-phone=\"true\"><h5>Suites in Cuenca\u2019s historic center<\/h5>\n<h1>Six ways to stay at Parc Royal<\/h1>\n<p>\u00a0<\/p>\n<\/div><\/div>\n<\/div>\n<\/div>\n\n<div class=\"et_pb_row_4 et_pb_row et_flex_row\">\n<div class=\"et_pb_column_7 et_pb_column et-last-child et_flex_column et_pb_css_mix_blend_mode_passthrough et_flex_column_24_24 et_flex_column_24_24_tablet et_flex_column_24_24_phone et_flex_column_24_24_widescreen et_flex_column_24_24_ultraWide\">\n<div class=\"et_pb_text_5 et_pb_text et_pb_bg_layout_light et_pb_module et_flex_module\"><div class=\"et_pb_text_inner\"><h4>The space and comfort of an apartment, with the services of a hotel.<\/h4>\n<\/div>\n<div class=\"et_pb_row_5 et_pb_row et_pb_row_nested et_flex_row\">\n<div class=\"et_pb_column_8 et_pb_column et_flex_column et_pb_css_mix_blend_mode_passthrough et_flex_column_12_24 et_flex_column_12_24_tablet et_flex_column_24_24_phone et_flex_column_12_24_widescreen et_flex_column_12_24_ultraWide\">\n<div class=\"et_pb_text_6 et_pb_text et_pb_bg_layout_light et_pb_module et_flex_module\"><div class=\"et_pb_text_inner\"><p>Sizes<br \/><span style=\"font-weight: 400;\">35 \u2013 87 m\u00b2<\/span><\/p>\n<\/div><\/div>\n<\/div>\n\n<div class=\"et_pb_column_9 et_pb_column et-last-child et_flex_column et_pb_css_mix_blend_mode_passthrough et_flex_column_12_24 et_flex_column_12_24_tablet et_flex_column_24_24_phone et_flex_column_12_24_widescreen et_flex_column_12_24_ultraWide\">\n<div class=\"et_pb_text_7 et_pb_text et_pb_bg_layout_light et_pb_module et_flex_module\"><div class=\"et_pb_text_inner\"><p>Capacity<br \/>2 \u2013 4 guests<\/p>\n<\/div><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n\n<div class=\"et_pb_section_2 et_pb_section et_section_regular et_flex_section\">\n<div class=\"et_pb_row_6 et_pb_row et_flex_row\">\n<div class=\"et_pb_column_10 et_pb_column et-last-child et_flex_column et_pb_css_mix_blend_mode_passthrough et_flex_column_24_24 et_flex_column_24_24_tablet et_flex_column_24_24_phone et_flex_column_24_24_widescreen et_flex_column_24_24_ultraWide\">\n<div class=\"et_pb_text_8 et_pb_text et_pb_bg_layout_light et_pb_module et_flex_module\"><div class=\"et_pb_text_inner\"><h2><span style=\"font-weight: 400;\">The suites<\/span><\/h2>\n<\/div><\/div>\n<\/div>\n<\/div>\n\n<div class=\"et_pb_row_7 et_pb_row et_flex_row\">\n<div class=\"et_pb_column_11 et_pb_column et_flex_column et_pb_css_mix_blend_mode_passthrough et_flex_column_8_24 et_flex_column_8_24_tablet et_flex_column_24_24_phone et_flex_column_8_24_widescreen et_flex_column_8_24_ultraWide\">\n<div class=\"et_pb_group_carousel_0 et_pb_group_carousel et_pb_group et_pb_module et_pb_group_carousel_center_mode et_pb_group_carousel_dots_disabled\"><div class=\"et_pb_group_carousel_container\"><div class=\"et_pb_group_carousel_track\">\n<div class=\"et_pb_group_carousel_slide\"><div class=\"et_pb_group_0 et_pb_group et-last-child et_pb_module et_flex_group et_pb_css_mix_blend_mode_passthrough\">\n<div class=\"et_pb_image_2 et_pb_image et_pb_module et_flex_module\"><span class=\"et_pb_image_wrap\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/parcroyalhotel.com\/wp-content\/uploads\/2026\/08\/SUITE-SUPERIOR.jpg\" title=\"SUITE SUPERIOR\" width=\"700\" height=\"560\" srcset=\"https:\/\/parcroyalhotel.com\/wp-content\/uploads\/2026\/08\/SUITE-SUPERIOR.jpg 700w, https:\/\/parcroyalhotel.com\/wp-content\/uploads\/2026\/08\/SUITE-SUPERIOR-480x384.jpg 480w\" sizes=\"(min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) 700px, 100vw\" class=\"wp-image-2042\" \/><\/span><\/div>\n<\/div><\/div>\n<\/div><\/div><div class=\"et_pb_group_carousel_dots\" style=\"display: none;\"><\/div><\/div>\n\n<div class=\"et_pb_text_9 et_pb_text et_pb_bg_layout_light et_pb_module et_flex_module\"><div class=\"et_pb_text_inner\"><h3>Superior Suite<\/h3>\n<p>Six suites on the first and second floors, facing either Luis Cordero Street or the quiet interior<\/p>\n<\/div>\n<div class=\"et_pb_text_10 et_pb_text et_pb_bg_layout_light et_pb_module et_flex_module\"><div class=\"et_pb_text_inner\"><p><a href=\"https:\/\/parcroyalhotel.com\/en\/suites\/superior-suite\/\">VIEW SUITE<\/a><\/p>\n<\/div><\/div>\n\n<div class=\"et_pb_group_1 et_pb_group et-last-child et_pb_module et_flex_group et_pb_css_mix_blend_mode_passthrough\">\n<div class=\"et_pb_text_11 et_pb_text et_pb_bg_layout_light et_pb_module et_flex_module\"><div class=\"et_pb_text_inner\"><p><span style=\"font-weight: 400;\">2 GUESTS \u00b7 QUEEN OR KING \u00b7 35 \u2013 53 m\u00b2<\/span><br \/><strong>From USD 210 per night + taxes<\/strong><\/p>\n<\/div><\/div>\n\n<div class=\"et_pb_module et_pb_button_module_wrapper et_pb_button_0_wrapper preset--module--divi-button--default_wrapper\"><a class=\"et_pb_button_0 et_pb_button et_pb_bg_layout_dark et_pb_module et_flex_module preset--module--divi-button--default\" href=\"https:\/\/parcroyalhotel.com\/en\/reservations\/\">Check availability<\/a><\/div>\n<\/div>\n<\/div>\n<\/div>\n\n<div class=\"et_pb_column_12 et_pb_column et_flex_column et_pb_css_mix_blend_mode_passthrough et_flex_column_8_24 et_flex_column_8_24_tablet et_flex_column_24_24_phone et_flex_column_8_24_widescreen et_flex_column_8_24_ultraWide\">\n<div class=\"et_pb_group_carousel_1 et_pb_group_carousel et_pb_group et_pb_module et_pb_group_carousel_center_mode et_pb_group_carousel_dots_disabled\"><div class=\"et_pb_group_carousel_container\"><div class=\"et_pb_group_carousel_track\">\n<div class=\"et_pb_group_carousel_slide\"><div class=\"et_pb_group_2 et_pb_group et-last-child et_pb_module et_flex_group et_pb_css_mix_blend_mode_passthrough\">\n<div class=\"et_pb_image_3 et_pb_image et_pb_module et_flex_module\"><span class=\"et_pb_image_wrap\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/parcroyalhotel.com\/wp-content\/uploads\/2026\/08\/SUITE-DELUXE-SUPERIOR.jpg\" title=\"SUITE DELUXE SUPERIOR\" width=\"700\" height=\"560\" srcset=\"https:\/\/parcroyalhotel.com\/wp-content\/uploads\/2026\/08\/SUITE-DELUXE-SUPERIOR.jpg 700w, https:\/\/parcroyalhotel.com\/wp-content\/uploads\/2026\/08\/SUITE-DELUXE-SUPERIOR-480x384.jpg 480w\" sizes=\"(min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) 700px, 100vw\" class=\"wp-image-2043\" \/><\/span><\/div>\n<\/div><\/div>\n<\/div><\/div><div class=\"et_pb_group_carousel_dots\" style=\"display: none;\"><\/div><\/div>\n\n<div class=\"et_pb_text_12 et_pb_text et_pb_bg_layout_light et_pb_module et_flex_module\"><div class=\"et_pb_text_inner\"><h3>Deluxe Superior<\/h3>\n<p>Large windows overlook Gran Colombia Street and the passing tram. Admire the city from your suite without the noise.<\/p>\n<\/div>\n<div class=\"et_pb_text_13 et_pb_text et_pb_bg_layout_light et_pb_module et_flex_module\"><div class=\"et_pb_text_inner\"><p><a href=\" https:\/\/parcroyalhotel.com\/en\/suites\/deluxe-superior\">VIEW SUITE<\/a><\/p>\n<\/div><\/div>\n\n<div class=\"et_pb_group_3 et_pb_group et-last-child et_pb_module et_flex_group et_pb_css_mix_blend_mode_passthrough\">\n<div class=\"et_pb_text_14 et_pb_text et_pb_bg_layout_light et_pb_module et_flex_module\"><div class=\"et_pb_text_inner\"><p><span style=\"font-weight: 400;\">2 GUESTS \u00b7 KING OR TWIN \u00b7 40 \u2013 49 m\u00b2<\/span><br \/><strong>From USD 244 per night + taxes<\/strong><\/p>\n<\/div><\/div>\n\n<div class=\"et_pb_module et_pb_button_module_wrapper et_pb_button_1_wrapper preset--module--divi-button--default_wrapper\"><a class=\"et_pb_button_1 et_pb_button et_pb_bg_layout_dark et_pb_module et_flex_module preset--module--divi-button--default\" href=\"https:\/\/parcroyalhotel.com\/en\/reservations\/\">Check availability<\/a><\/div>\n<\/div>\n<\/div>\n<\/div>\n\n<div class=\"et_pb_column_13 et_pb_column et-last-child et_flex_column et_pb_css_mix_blend_mode_passthrough et_flex_column_8_24 et_flex_column_8_24_tablet et_flex_column_24_24_phone et_flex_column_8_24_widescreen et_flex_column_8_24_ultraWide\">\n<div class=\"et_pb_group_carousel_2 et_pb_group_carousel et_pb_group et_pb_module et_pb_group_carousel_center_mode et_pb_group_carousel_dots_disabled\"><div class=\"et_pb_group_carousel_container\"><div class=\"et_pb_group_carousel_track\">\n<div class=\"et_pb_group_carousel_slide\"><div class=\"et_pb_group_4 et_pb_group et-last-child et_pb_module et_flex_group et_pb_css_mix_blend_mode_passthrough\">\n<div class=\"et_pb_image_4 et_pb_image et_pb_module et_flex_module\"><span class=\"et_pb_image_wrap\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/parcroyalhotel.com\/wp-content\/uploads\/2026\/08\/SUITE-GRAND-LUXE.jpg\" title=\"SUITE GRAND LUXE\" width=\"700\" height=\"560\" srcset=\"https:\/\/parcroyalhotel.com\/wp-content\/uploads\/2026\/08\/SUITE-GRAND-LUXE.jpg 700w, https:\/\/parcroyalhotel.com\/wp-content\/uploads\/2026\/08\/SUITE-GRAND-LUXE-480x384.jpg 480w\" sizes=\"(min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) 700px, 100vw\" class=\"wp-image-2038\" \/><\/span><\/div>\n<\/div><\/div>\n<\/div><\/div><div class=\"et_pb_group_carousel_dots\" style=\"display: none;\"><\/div><\/div>\n\n<div class=\"et_pb_text_15 et_pb_text et_pb_bg_layout_light et_pb_module et_flex_module\"><div class=\"et_pb_text_inner\"><h3>Grand Luxe<\/h3>\n<p>Corner suite with high ceilings and large windows facing Luis<br \/>Cordero and Gran Colombia: natural light from two sides.<\/p>\n<\/div>\n<div class=\"et_pb_text_16 et_pb_text et_pb_bg_layout_light et_pb_module et_flex_module\"><div class=\"et_pb_text_inner\"><p><a href=\"https:\/\/parcroyalhotel.com\/en\/suites\/grand-luxe\/\">VIEW SUITE<\/a><\/p>\n<\/div><\/div>\n\n<div class=\"et_pb_group_5 et_pb_group et-last-child et_pb_module et_flex_group et_pb_css_mix_blend_mode_passthrough\">\n<div class=\"et_pb_text_17 et_pb_text et_pb_bg_layout_light et_pb_module et_flex_module\"><div class=\"et_pb_text_inner\"><p><span style=\"font-weight: 400;\">2 GUESTS \u00b7 KING \u00b7 65 \u2013 68 m\u00b2<\/span><br \/><strong>From USD 289 per night + taxes<\/strong><\/p>\n<\/div><\/div>\n\n<div class=\"et_pb_module et_pb_button_module_wrapper et_pb_button_2_wrapper preset--module--divi-button--default_wrapper\"><a class=\"et_pb_button_2 et_pb_button et_pb_bg_layout_dark et_pb_module et_flex_module preset--module--divi-button--default\" href=\"https:\/\/parcroyalhotel.com\/en\/reservations\/\">Check availability<\/a><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n\n<div class=\"et_pb_row_8 et_pb_row et_flex_row\">\n<div class=\"et_pb_column_14 et_pb_column et_flex_column et_pb_css_mix_blend_mode_passthrough et_flex_column_8_24 et_flex_column_8_24_tablet et_flex_column_24_24_phone et_flex_column_8_24_widescreen et_flex_column_8_24_ultraWide\">\n<div class=\"et_pb_group_carousel_3 et_pb_group_carousel et_pb_group et_pb_module et_pb_group_carousel_center_mode et_pb_group_carousel_dots_disabled\"><div class=\"et_pb_group_carousel_container\"><div class=\"et_pb_group_carousel_track\">\n<div class=\"et_pb_group_carousel_slide\"><div class=\"et_pb_group_6 et_pb_group et-last-child et_pb_module et_flex_group et_pb_css_mix_blend_mode_passthrough\">\n<div class=\"et_pb_image_5 et_pb_image et_pb_module et_flex_module\"><span class=\"et_pb_image_wrap\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/parcroyalhotel.com\/wp-content\/uploads\/2026\/08\/ROAYL-SUITE.jpg\" title=\"ROAYL SUITE\" width=\"700\" height=\"560\" srcset=\"https:\/\/parcroyalhotel.com\/wp-content\/uploads\/2026\/08\/ROAYL-SUITE.jpg 700w, https:\/\/parcroyalhotel.com\/wp-content\/uploads\/2026\/08\/ROAYL-SUITE-480x384.jpg 480w\" sizes=\"(min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) 700px, 100vw\" class=\"wp-image-2045\" \/><\/span><\/div>\n<\/div><\/div>\n<\/div><\/div><div class=\"et_pb_group_carousel_dots\" style=\"display: none;\"><\/div><\/div>\n\n<div class=\"et_pb_text_18 et_pb_text et_pb_bg_layout_light et_pb_module et_flex_module\"><div class=\"et_pb_text_inner\"><h3>Royal Suite<\/h3>\n<p>Shares the floor only with the Presidential Suite\u2014the two<br \/>suites on the third floor\u2014and is accessible directly<br \/>via the elevator.<\/p>\n<\/div>\n<div class=\"et_pb_text_19 et_pb_text et_pb_bg_layout_light et_pb_module et_flex_module\"><div class=\"et_pb_text_inner\"><p><a href=\"https:\/\/parcroyalhotel.com\/en\/suites\/royal-suite\/\">VIEW SUITE<\/a><\/p>\n<\/div><\/div>\n\n<div class=\"et_pb_group_7 et_pb_group et-last-child et_pb_module et_flex_group et_pb_css_mix_blend_mode_passthrough\">\n<div class=\"et_pb_text_20 et_pb_text et_pb_bg_layout_light et_pb_module et_flex_module\"><div class=\"et_pb_text_inner\"><p><span style=\"font-weight: 400;\">2 GUESTS \u00b7 KING \u00b7 67 m\u00b2<\/span><br \/><strong>From USD 300 per night + taxes<\/strong><\/p>\n<\/div><\/div>\n\n<div class=\"et_pb_module et_pb_button_module_wrapper et_pb_button_3_wrapper preset--module--divi-button--default_wrapper\"><a class=\"et_pb_button_3 et_pb_button et_pb_bg_layout_dark et_pb_module et_flex_module preset--module--divi-button--default\" href=\"https:\/\/parcroyalhotel.com\/en\/reservations\/\">Check availability<\/a><\/div>\n<\/div>\n<\/div>\n<\/div>\n\n<div class=\"et_pb_column_15 et_pb_column et_flex_column et_pb_css_mix_blend_mode_passthrough et_flex_column_8_24 et_flex_column_8_24_tablet et_flex_column_24_24_phone et_flex_column_8_24_widescreen et_flex_column_8_24_ultraWide\">\n<div class=\"et_pb_group_carousel_4 et_pb_group_carousel et_pb_group et_pb_module et_pb_group_carousel_center_mode et_pb_group_carousel_dots_disabled\"><div class=\"et_pb_group_carousel_container\"><div class=\"et_pb_group_carousel_track\">\n<div class=\"et_pb_group_carousel_slide\"><div class=\"et_pb_group_8 et_pb_group et-last-child et_pb_module et_flex_group et_pb_css_mix_blend_mode_passthrough\">\n<div class=\"et_pb_image_6 et_pb_image et_pb_module et_flex_module\"><span class=\"et_pb_image_wrap\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/parcroyalhotel.com\/wp-content\/uploads\/2026\/08\/PENTHOUSE.jpg\" title=\"PENTHOUSE\" width=\"700\" height=\"560\" srcset=\"https:\/\/parcroyalhotel.com\/wp-content\/uploads\/2026\/08\/PENTHOUSE.jpg 700w, https:\/\/parcroyalhotel.com\/wp-content\/uploads\/2026\/08\/PENTHOUSE-480x384.jpg 480w\" sizes=\"(min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) 700px, 100vw\" class=\"wp-image-2047\" \/><\/span><\/div>\n<\/div><\/div>\n<\/div><\/div><div class=\"et_pb_group_carousel_dots\" style=\"display: none;\"><\/div><\/div>\n\n<div class=\"et_pb_text_21 et_pb_text et_pb_bg_layout_light et_pb_module et_flex_module\"><div class=\"et_pb_text_inner\"><h3>Penthouse<\/h3>\n<p>The only suite on the top floor: a private 20 m\u00b2 terrace<br \/>overlooking the rooftops of the historic center, with views<br \/>of the Cathedral domes. Accessible only by stairs\u2014about<br \/>twenty steps up from the third floor.<\/p>\n<\/div>\n<div class=\"et_pb_text_22 et_pb_text et_pb_bg_layout_light et_pb_module et_flex_module\"><div class=\"et_pb_text_inner\"><p><a href=\"https:\/\/parcroyalhotel.com\/en\/suites\/penthouse\/\">VIEW SUITE<\/a><\/p>\n<\/div><\/div>\n\n<div class=\"et_pb_group_9 et_pb_group et-last-child et_pb_module et_flex_group et_pb_css_mix_blend_mode_passthrough\">\n<div class=\"et_pb_text_23 et_pb_text et_pb_bg_layout_light et_pb_module et_flex_module\"><div class=\"et_pb_text_inner\"><p>2 GUESTS \u00b7 QUEEN \u00b7 57 <span style=\"font-weight: 400;\">m\u00b2<br \/><\/span><strong>From USD 313 per night + taxes<\/strong><\/p>\n<\/div><\/div>\n\n<div class=\"et_pb_module et_pb_button_module_wrapper et_pb_button_4_wrapper preset--module--divi-button--default_wrapper\"><a class=\"et_pb_button_4 et_pb_button et_pb_bg_layout_dark et_pb_module et_flex_module preset--module--divi-button--default\" href=\"https:\/\/parcroyalhotel.com\/en\/reservations\/\">Check availability<\/a><\/div>\n<\/div>\n<\/div>\n<\/div>\n\n<div class=\"et_pb_column_16 et_pb_column et-last-child et_flex_column et_pb_css_mix_blend_mode_passthrough et_flex_column_8_24 et_flex_column_8_24_tablet et_flex_column_24_24_phone et_flex_column_8_24_widescreen et_flex_column_8_24_ultraWide\">\n<div class=\"et_pb_group_carousel_5 et_pb_group_carousel et_pb_group et_pb_module et_pb_group_carousel_center_mode et_pb_group_carousel_dots_disabled\"><div class=\"et_pb_group_carousel_container\"><div class=\"et_pb_group_carousel_track\">\n<div class=\"et_pb_group_carousel_slide\"><div class=\"et_pb_group_10 et_pb_group et-last-child et_pb_module et_flex_group et_pb_css_mix_blend_mode_passthrough\">\n<div class=\"et_pb_image_7 et_pb_image et_pb_module et_flex_module\"><span class=\"et_pb_image_wrap\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/parcroyalhotel.com\/wp-content\/uploads\/2026\/08\/PRESIDENCIAL.jpg\" title=\"PRESIDENCIAL\" width=\"700\" height=\"560\" srcset=\"https:\/\/parcroyalhotel.com\/wp-content\/uploads\/2026\/08\/PRESIDENCIAL.jpg 700w, https:\/\/parcroyalhotel.com\/wp-content\/uploads\/2026\/08\/PRESIDENCIAL-480x384.jpg 480w\" sizes=\"(min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) 700px, 100vw\" class=\"wp-image-2048\" \/><\/span><\/div>\n<\/div><\/div>\n<\/div><\/div><div class=\"et_pb_group_carousel_dots\" style=\"display: none;\"><\/div><\/div>\n\n<div class=\"et_pb_text_24 et_pb_text et_pb_bg_layout_light et_pb_module et_flex_module\"><div class=\"et_pb_text_inner\"><h3>Presidential Suite<\/h3>\n<p>The hotel\u2019s most spacious and exclusive suite. Two bedrooms<br \/>with private bathrooms\u2014a Junior with a Queen bed and a Master with a King bed\u2014plus a living room, kitchenette, and dining area for four. Views of the Cathedral domes, with direct elevator access, bypassing the hallways.<\/p>\n<\/div>\n<div class=\"et_pb_text_25 et_pb_text et_pb_bg_layout_light et_pb_module et_flex_module\"><div class=\"et_pb_text_inner\"><p><a href=\"https:\/\/parcroyalhotel.com\/en\/suites\/presidential-suite\/\">VIEW SUITE<\/a><\/p>\n<\/div><\/div>\n\n<div class=\"et_pb_group_11 et_pb_group et-last-child et_pb_module et_flex_group et_pb_css_mix_blend_mode_passthrough\">\n<div class=\"et_pb_text_26 et_pb_text et_pb_bg_layout_light et_pb_module et_flex_module\"><div class=\"et_pb_text_inner\"><p><span style=\"font-weight: 400;\">4 GUESTS \u00b7 KING + QUEEN \u00b7 87 m\u00b2<br \/><\/span><strong>From USD 465 per night + taxes<\/strong><\/p>\n<\/div><\/div>\n\n<div class=\"et_pb_module et_pb_button_module_wrapper et_pb_button_5_wrapper preset--module--divi-button--default_wrapper\"><a class=\"et_pb_button_5 et_pb_button et_pb_bg_layout_dark et_pb_module et_flex_module preset--module--divi-button--default\" href=\"https:\/\/parcroyalhotel.com\/en\/reservations\/\">Check availability<\/a><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n\n<div class=\"et_pb_section_3 et_pb_section et_section_regular et_flex_section\">\n<div class=\"et_pb_row_9 et_pb_row et_flex_row\">\n<div class=\"et_pb_column_17 et_pb_column et-last-child et_flex_column et_pb_css_mix_blend_mode_passthrough et_flex_column_24_24 et_flex_column_24_24_tablet et_flex_column_24_24_phone et_flex_column_24_24_widescreen et_flex_column_24_24_ultraWide\">\n<div class=\"et_pb_image_8 et_pb_image et_pb_image_sticky et_pb_module et_flex_module\"><span class=\"et_pb_image_wrap\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/parcroyalhotel.com\/wp-content\/uploads\/2026\/08\/fondo-separador-v1.png\" title=\"fondo separador v1\" width=\"600\" height=\"145\" srcset=\"https:\/\/parcroyalhotel.com\/wp-content\/uploads\/2026\/08\/fondo-separador-v1.png 600w, https:\/\/parcroyalhotel.com\/wp-content\/uploads\/2026\/08\/fondo-separador-v1-480x116.png 480w\" sizes=\"(min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) 600px, 100vw\" class=\"wp-image-1158\" \/><\/span><\/div>\n\n<div class=\"et_pb_text_27 et_pb_text et_pb_bg_layout_light et_pb_module et_flex_module mask-reveal\"><div class=\"et_pb_text_inner\"><h2>AMENITIES<\/h2>\n<p>IN ALL SUITES<\/p>\n<\/div><\/div>\n<\/div>\n<\/div>\n\n<div class=\"et_pb_row_10 et_pb_row et_flex_row\">\n<div class=\"et_pb_column_18 et_pb_column et_flex_column et_pb_css_mix_blend_mode_passthrough et_flex_column_8_24 et_flex_column_8_24_tablet et_flex_column_24_24_phone et_flex_column_8_24_widescreen et_flex_column_8_24_ultraWide\">\n<div class=\"et_pb_text_28 et_pb_text et_pb_bg_layout_light et_pb_module et_flex_module\"><div class=\"et_pb_text_inner\"><p><span>Rest &amp; comfort<\/span><\/p>\n<\/div><\/div>\n\n<div class=\"et_pb_text_29 et_pb_text et_pb_bg_layout_light et_pb_module et_flex_module\"><div class=\"et_pb_text_inner\"><p>Parc Royal Breakfast<br \/>Floor-level rain shower<br \/>Bathrobes and slippers<br \/>Soundproof floor-to-ceiling windows<br \/>Small double sofa bed for an additional guest<br \/><span style=\"font-weight: 400;\"><\/span><\/p>\n<\/div><\/div>\n<\/div>\n\n<div class=\"et_pb_column_19 et_pb_column et_flex_column et_pb_css_mix_blend_mode_passthrough et_flex_column_8_24 et_flex_column_8_24_tablet et_flex_column_24_24_phone et_flex_column_8_24_widescreen et_flex_column_8_24_ultraWide\">\n<div class=\"et_pb_text_30 et_pb_text et_pb_bg_layout_light et_pb_module et_flex_module\"><div class=\"et_pb_text_inner\"><p>Technology &amp; space<\/p>\n<\/div><\/div>\n\n<div class=\"et_pb_text_31 et_pb_text et_pb_bg_layout_light et_pb_module et_flex_module\"><div class=\"et_pb_text_inner\"><p>Living area and desk<br \/>Coffee station: coffee maker, kettle, microwave, and mini-fridge<br \/>High-speed Wi-Fi<br \/>Smart TV with DirecTV <br \/>In-room safe<\/p>\n<\/div><\/div>\n<\/div>\n\n<div class=\"et_pb_column_20 et_pb_column et-last-child et_flex_column et_pb_css_mix_blend_mode_passthrough et_flex_column_8_24 et_flex_column_8_24_tablet et_flex_column_24_24_phone et_flex_column_8_24_widescreen et_flex_column_8_24_ultraWide\">\n<div class=\"et_pb_text_32 et_pb_text et_pb_bg_layout_light et_pb_module et_flex_module\"><div class=\"et_pb_text_inner\"><p>Stay services<\/p>\n<\/div><\/div>\n\n<div class=\"et_pb_text_33 et_pb_text et_pb_bg_layout_light et_pb_module et_flex_module\"><div class=\"et_pb_text_inner\"><p>24-hour reception<br \/>Room service<br \/>Private parking<br \/>Airport transfer\u00a0<span style=\"font-size: small;\"><em>(included depending on rate)<\/em><\/span><\/p>\n<\/div><\/div>\n<\/div>\n<\/div>\n\n<div class=\"et_pb_row_11 et_pb_row et_flex_row\">\n<div class=\"et_pb_column_21 et_pb_column et-last-child et_flex_column et_pb_css_mix_blend_mode_passthrough et_flex_column_8_24 et_flex_column_8_24_tablet et_flex_column_24_24_phone et_flex_column_8_24_widescreen et_flex_column_8_24_ultraWide\">\n<div class=\"et_pb_module et_pb_button_module_wrapper et_pb_button_6_wrapper preset--module--divi-button--default_wrapper\"><a class=\"et_pb_button_6 et_pb_button et_pb_bg_layout_dark et_pb_module et_flex_module preset--module--divi-button--default\" href=\"https:\/\/parcroyalhotel.com\/en\/reservations\/\">Check availability<\/a><\/div>\n<\/div>\n<\/div>\n<\/div>\n\n<div class=\"et_pb_section_4 et_pb_section et_section_regular et_flex_section\">\n<div class=\"et_pb_row_12 et_pb_row et_flex_row\">\n<div class=\"et_pb_column_22 et_pb_column et-last-child et_flex_column et_pb_css_mix_blend_mode_passthrough et_flex_column_24_24 et_flex_column_24_24_tablet et_flex_column_24_24_phone et_flex_column_24_24_widescreen et_flex_column_24_24_ultraWide\">\n<div class=\"et_pb_image_9 et_pb_image et_pb_module et_flex_module\"><span class=\"et_pb_image_wrap\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/parcroyalhotel.com\/wp-content\/uploads\/2026\/08\/desayuno-v1.webp\" title=\"desayuno movil v1\" width=\"2400\" height=\"1113\" srcset=\"https:\/\/parcroyalhotel.com\/wp-content\/uploads\/2026\/08\/desayuno-v1.webp 2400w, https:\/\/parcroyalhotel.com\/wp-content\/uploads\/2026\/08\/desayuno-v1-1280x594.webp 1280w, https:\/\/parcroyalhotel.com\/wp-content\/uploads\/2026\/08\/desayuno-v1-980x454.webp 980w, https:\/\/parcroyalhotel.com\/wp-content\/uploads\/2026\/08\/desayuno-v1-480x223.webp 480w\" sizes=\"(min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) and (max-width: 980px) 980px, (min-width: 981px) and (max-width: 1280px) 1280px, (min-width: 1281px) 2400px, 100vw\" class=\"wp-image-2094 wp-image-2097\" \/><\/span><\/div>\n<\/div>\n<\/div>\n<\/div>\n\n<div class=\"et_pb_section_5 et_pb_section et_section_regular et_flex_section\">\n<div class=\"et_pb_row_13 et_pb_row et_flex_row\">\n<div class=\"et_pb_column_23 et_pb_column et-last-child et_flex_column et_pb_css_mix_blend_mode_passthrough et_flex_column_24_24 et_flex_column_24_24_tablet et_flex_column_24_24_phone et_flex_column_24_24_widescreen et_flex_column_24_24_ultraWide\">\n<div class=\"et_pb_text_34 et_pb_text et_pb_bg_layout_light et_pb_module et_flex_module mask-reveal\"><div class=\"et_pb_text_inner\"><h2>Frequently asked questions<\/h2>\n<\/div><\/div>\n<\/div>\n<\/div>\n\n<div class=\"et_pb_row_14 et_pb_row et_flex_row\">\n<div class=\"et_pb_column_24 et_pb_column et-last-child et_flex_column et_pb_css_mix_blend_mode_passthrough et_flex_column_24_24 et_flex_column_24_24_tablet et_flex_column_24_24_phone et_flex_column_24_24_widescreen et_flex_column_24_24_ultraWide\">\n<div class=\"et_pb_text_35 et_pb_text et_pb_bg_layout_light et_pb_module et_flex_module\"><div class=\"et_pb_text_inner\"><h3>Before you travel<\/h3>\n<\/div><\/div>\n\n<div class=\"et_pb_accordion_0 et_pb_accordion et_pb_module et_flex_module\">\n<div class=\"et_pb_accordion_item_0 et_pb_accordion_item et_pb_toggle et_pb_module et_pb_toggle_open et_flex_module\"><h5 class=\"et_pb_toggle_title\">Where is the hotel located, and what is nearby?<\/h5><div class=\"et_pb_toggle_content et_flex_module\"><p>Parc Royal is in the heart of Cuenca's historic center, declared a UNESCO World Cultural Heritage Site in 1999. Its streets preserve, almost intact, the layout on which the city was founded in 1557. Just 200 meters from the hotel is Calder\u00f3n Park, the main square, flanked by the Old Cathedral and the New Cathedral, whose blue domes are the city's most recognizable image. A few minutes' walk away, you will find the flower market, museums, colonial churches, and a wide variety of caf\u00e9s and restaurants. Most of our guests explore Cuenca on foot.<\/p>\n<\/div><\/div>\n\n<div class=\"et_pb_accordion_item_1 et_pb_accordion_item et_pb_toggle et_pb_module et_pb_toggle_close et_flex_module\"><h5 class=\"et_pb_toggle_title\">How do I get to the hotel from the airport?<\/h5><div class=\"et_pb_toggle_content et_flex_module\"><p>Mariscal Lamar Airport is located within the city, just two kilometers from the hotel. We will gladly meet you upon arrival: please send your airline, flight number, arrival time, and a contact phone number at least five days in advance to info@parcroyalhotel.com or via WhatsApp at +593 98 274 9546. The transfer is included in some rates. For other rates, the cost is USD 15 plus tax per trip for one to three passengers, and USD 5 plus tax for a fourth passenger.<\/p>\n<\/div><\/div>\n\n<div class=\"et_pb_accordion_item_2 et_pb_accordion_item et_pb_toggle et_pb_module et_pb_toggle_close et_flex_module\"><h5 class=\"et_pb_toggle_title\">Can I arrive by car?<\/h5><div class=\"et_pb_toggle_content et_flex_module\"><p>Yes. The hotel offers complimentary private parking, with one space per suite, about 200 meters away. When you arrive, you can stop in front of the hotel entrance: our team will help you with your luggage while you park your vehicle at your leisure.<\/p>\n<\/div><\/div>\n\n<div class=\"et_pb_accordion_item_3 et_pb_accordion_item et_pb_toggle et_pb_module et_pb_toggle_close et_flex_module\"><h5 class=\"et_pb_toggle_title\">What is the weather like in Cuenca?<\/h5><div class=\"et_pb_toggle_content et_flex_module\"><p>Cuenca sits at about 2,500 meters above sea level, among the mountains of the Andes. The climate is mild year-round, with cool mornings, pleasant middays, and cold nights. We recommend bringing layers and a light jacket for the evening. During your first few days, you may feel the altitude when walking: take it easy and drink water frequently. In your suite, hot water is available instantly, and you may request a portable heater at reception whenever you wish.<\/p>\n<\/div><\/div>\n\n<div class=\"et_pb_accordion_item_4 et_pb_accordion_item et_pb_toggle et_pb_module et_pb_toggle_close et_flex_module\"><h5 class=\"et_pb_toggle_title\">What should I not miss during my stay? <\/h5><div class=\"et_pb_toggle_content et_flex_module\"><p>We suggest starting with the French Trail, a twelve-stop walking tour that begins at the hotel's door and reveals the historic affinity between Cuenca and France. The route reaches Calle Larga, at the top of El Barranco, the slope that descends to the Tomebamba River, the largest of the four rivers that run through the city. Outside Cuenca, about 30 kilometers away, Cajas National Park offers high-altitude lakes and p\u00e1ramo landscapes. Our reception team can recommend restaurants, book a table for you, or help you plan your outings.<\/p>\n<\/div><\/div>\n<\/div>\n\n<div class=\"et_pb_text_36 et_pb_text et_pb_bg_layout_light et_pb_module et_flex_module\"><div class=\"et_pb_text_inner\"><h3>ABOUT THE SUITES<\/h3>\n<\/div><\/div>\n\n<div class=\"et_pb_accordion_1 et_pb_accordion et_pb_module et_flex_module\">\n<div class=\"et_pb_accordion_item_5 et_pb_accordion_item et_pb_toggle et_pb_module et_pb_toggle_open et_flex_module\"><h5 class=\"et_pb_toggle_title\">Which suite is best for my trip?<\/h5><div class=\"et_pb_toggle_content et_flex_module\"><p>Each category offers a different experience. The Superior suites, mostly interior-facing, are the quietest in the hotel. The Deluxe Superior overlooks Gran Colombia Street and the passing tram. The Grand Luxe occupies the corner of the building, with high ceilings and natural light from two streets. The Royal Suite, on the third floor, offers the greatest privacy, with direct access from the elevator. The Penthouse, the only suite on the top floor, has a private terrace overlooking the rooftops of the historic center. The Presidential Suite, with two bedrooms, is the most spacious in the hotel. If you wish, write to us and we will help you choose.<\/p>\n<\/div><\/div>\n\n<div class=\"et_pb_accordion_item_6 et_pb_accordion_item et_pb_toggle et_pb_module et_pb_toggle_close et_flex_module\"><h5 class=\"et_pb_toggle_title\">Can you hear the city from the suite?<\/h5><div class=\"et_pb_toggle_content et_flex_module\"><p>Very little. Street-facing suites have soundproof windows: from them you can take in the life of the historic center while barely hearing it. Interior suites receive natural light from within the building and also have soundproof windows, which makes them the quietest in the hotel.<\/p>\n<\/div><\/div>\n\n<div class=\"et_pb_accordion_item_7 et_pb_accordion_item et_pb_toggle et_pb_module et_pb_toggle_close et_flex_module\"><h5 class=\"et_pb_toggle_title\">Can I work from my suite?<\/h5><div class=\"et_pb_toggle_content et_flex_module\"><p>Yes. All suites feature a living area, a desk, and high-speed Wi-Fi (over 300 Mbps). For business meetings, the hotel offers a room equipped with a screen. If you are looking for maximum tranquility, we recommend the Royal Suite, which shares the third floor only with the Presidential Suite.<\/p>\n<\/div><\/div>\n\n<div class=\"et_pb_accordion_item_8 et_pb_accordion_item et_pb_toggle et_pb_module et_pb_toggle_close et_flex_module\"><h5 class=\"et_pb_toggle_title\">Which suite do you recommend for families?<\/h5><div class=\"et_pb_toggle_content et_flex_module\"><p>The Presidential Suite: two bedrooms, each with its own bathroom\u2014one with a King bed and the other with a Queen bed\u2014plus a living room and dining area for four. The master bedroom offers a view of the domes of the New Cathedral. Like all suites, it also includes a small double (1.5-size) sofa bed for an additional guest.<\/p>\n<\/div><\/div>\n\n<div class=\"et_pb_accordion_item_9 et_pb_accordion_item et_pb_toggle et_pb_module et_pb_toggle_close et_flex_module\"><h5 class=\"et_pb_toggle_title\">Is the hotel comfortable for guests with reduced mobility?<\/h5><div class=\"et_pb_toggle_content et_flex_module\"><p>All suites feature a walk-in shower and, with the exception of the Penthouse, are accessible by elevator. Due to its spaciousness, the Presidential Suite is the most comfortable for getting around in a wheelchair. Since some suites have more limited space, we recommend contacting us before booking so we can assign the most suitable one.<\/p>\n<\/div><\/div>\n<\/div>\n\n<div class=\"et_pb_text_37 et_pb_text et_pb_bg_layout_light et_pb_module et_flex_module\"><div class=\"et_pb_text_inner\"><h3>PRACTICAL DETAILS<\/h3>\n<\/div><\/div>\n\n<div class=\"et_pb_accordion_2 et_pb_accordion et_pb_module et_flex_module\">\n<div class=\"et_pb_accordion_item_10 et_pb_accordion_item et_pb_toggle et_pb_module et_pb_toggle_open et_flex_module\"><h5 class=\"et_pb_toggle_title\">What are the check-in and check-out times?<\/h5><div class=\"et_pb_toggle_content et_flex_module\"><p>\u00a0Check-in begins at 2:00 PM, and check-out is by 12:00 PM. If you wish to arrive earlier or depart later, you may request this when booking; we confirm based on availability 24 hours in advance. The first additional hour is free of charge; starting with the second hour, the cost is USD 20 plus tax per hour.<\/p>\n<\/div><\/div>\n\n<div class=\"et_pb_accordion_item_11 et_pb_accordion_item et_pb_toggle et_pb_module et_pb_toggle_close et_flex_module\"><h5 class=\"et_pb_toggle_title\">How many people can stay in each suite?<\/h5><div class=\"et_pb_toggle_content et_flex_module\"><p>Each suite accommodates two adults, while the Presidential Suite accommodates four. All suites feature a small double sofa bed for one extra adult or up to two children. There is a charge of USD 60 plus tax per night for an extra guest, including breakfast. For children under 5, the children's policy detailed below applies.<\/p>\n<\/div><\/div>\n\n<div class=\"et_pb_accordion_item_12 et_pb_accordion_item et_pb_toggle et_pb_module et_pb_toggle_close et_flex_module\"><h5 class=\"et_pb_toggle_title\">What is the policy for children?<\/h5><div class=\"et_pb_toggle_content et_flex_module\"><p>Children under 2 stay free of charge if sharing their parents' bed; a crib is also available for USD 30 plus tax per night. Children aged 2 to 4 stay free of charge; only the children's breakfast is charged, at USD 15 plus tax per night. From age 5, children are considered an extra guest.<\/p>\n<\/div><\/div>\n\n<div class=\"et_pb_accordion_item_13 et_pb_accordion_item et_pb_toggle et_pb_module et_pb_toggle_close et_flex_module\"><h5 class=\"et_pb_toggle_title\">What does the rate include?<\/h5><div class=\"et_pb_toggle_content et_flex_module\"><p>Published rates are per night and include the Parc Royal breakfast. A 15% VAT and a 10% service charge, which is distributed among the hotel staff, are added before the booking is confirmed. Foreign tourists may qualify for a 0% VAT rate on accommodation if they entered the country as tourists within the 90 days prior to their stay and do not hold residency in Ecuador. The benefit is applied when the bill is issued at check-out, upon presentation of the passport showing the record of entry into the country.<\/p>\n<\/div><\/div>\n\n<div class=\"et_pb_accordion_item_14 et_pb_accordion_item et_pb_toggle et_pb_module et_pb_toggle_close et_flex_module\"><h5 class=\"et_pb_toggle_title\">What languages does the staff speak?<\/h5><div class=\"et_pb_toggle_content et_flex_module\"><p>Spanish and English, 24 hours a day.<\/p>\n<\/div><\/div>\n\n<div class=\"et_pb_accordion_item_15 et_pb_accordion_item et_pb_toggle et_pb_module et_pb_toggle_close et_flex_module\"><h5 class=\"et_pb_toggle_title\">Do you accept pets? <\/h5><div class=\"et_pb_toggle_content et_flex_module\"><p>Due to the building's characteristics, we only accept certified service animals weighing up to 7 kg, one per reservation and only in the Penthouse, which features a private terrace. A service animal certificate, current vaccination records and health certificate, and a USD 200 credit card deposit are required. The service costs 15% of the suite rate plus tax and includes a bed, food and water bowls, and waste bags.<\/p>\n<\/div><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n\n<div class=\"et_pb_section_6 et_pb_section et_section_regular et_flex_section\"><div class=\"et_pb_row_15 et_pb_row et_flex_row\"><div class=\"et_pb_column_25 et_pb_column et-last-child et_flex_column et_pb_css_mix_blend_mode_passthrough et_flex_column_24_24 et_flex_column_24_24_tablet et_flex_column_24_24_phone et_flex_column_24_24_widescreen et_flex_column_24_24_ultraWide\"><div class=\"et_pb_image_10 et_pb_image et_pb_module et_flex_module\"><span class=\"et_pb_image_wrap\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/parcroyalhotel.com\/wp-content\/uploads\/2026\/08\/Aves-y-texturas-web.webp\" title=\"Aves y texturas web\" width=\"784\" height=\"930\" srcset=\"https:\/\/parcroyalhotel.com\/wp-content\/uploads\/2026\/08\/Aves-y-texturas-web.webp 784w, https:\/\/parcroyalhotel.com\/wp-content\/uploads\/2026\/08\/Aves-y-texturas-web-480x569.webp 480w\" sizes=\"(min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) 784px, 100vw\" class=\"wp-image-1501\" \/><\/span><\/div><div class=\"et_pb_text_38 et_pb_text et_pb_bg_layout_light et_pb_module et_flex_module\"><div class=\"et_pb_text_inner\"><h4>\"El arte de la hospitalidad le espera.\"<\/h4>\n<p>Reserve directo. La mejor tarifa disponible.<\/p>\n<\/div><\/div><\/div><\/div><div class=\"et_pb_row_16 et_pb_row et_flex_row\"><div class=\"et_pb_column_26 et_pb_column et-last-child et_flex_column et_pb_css_mix_blend_mode_passthrough et_flex_column_24_24 et_flex_column_12_24_tablet et_flex_column_24_24_phone et_flex_column_24_24_widescreen et_flex_column_24_24_ultraWide\"><div class=\"et_pb_module et_pb_button_module_wrapper et_pb_button_7_wrapper preset--module--divi-button--default_wrapper\"><a class=\"et_pb_button_7 et_pb_button et_pb_bg_layout_dark et_pb_module et_flex_module preset--module--divi-button--default\" href=\"https:\/\/parcroyalhotel.com\/reservas\/\">RESERVAR<\/a><\/div><div class=\"et_pb_module et_pb_button_module_wrapper et_pb_button_8_wrapper preset--module--divi-button--default_wrapper\"><a class=\"et_pb_button_8 et_pb_button et_pb_bg_layout_dark et_pb_module et_flex_module preset--module--divi-button--default\" href=\"https:\/\/wa.me\/593986560973\" target=\"_blank\" rel=\"noopener\">CONSULTAR POR WHATSAPP<\/a><\/div><\/div><\/div><\/div>\n\n<div class=\"et_pb_section_7 et_pb_section et_section_regular et_flex_section pr-capsula-seccion\"><div class=\"et_pb_row_17 et_pb_row et_flex_row pr-capsula\"><div class=\"et_pb_column_27 et_pb_column et-last-child et_flex_column et_pb_css_mix_blend_mode_passthrough et_flex_column_24_24 et_flex_column_24_24_tablet et_flex_column_24_24_phone et_flex_column_24_24_widescreen et_flex_column_24_24_ultraWide\"><div class=\"et_pb_code_1 et_pb_code et_pb_module pr-capsula-codigo\"><div class=\"et_pb_code_inner\"><style>\n\/* =====================================================================\n   AJUSTES DE LA C\u00c1PSULA DE FECHAS \u2014 Parc Royal\n   Cambia solo los valores despu\u00e9s de los dos puntos y guarda.\n\n   LO QUE SE EDITA EN DIVI (pesta\u00f1a Dise\u00f1o), no aqu\u00ed:\n   - La c\u00e1psula: fila \"C\u00e1psula\" \u2192 Fondo (crema), Borde (filete dorado y esquinas), Sombra y Espaciado.\n   - El bot\u00f3n: m\u00f3dulo \"Ver disponibilidad\" \u2192 texto, color, color al pasar el mouse, letra, esquinas y relleno.\n     Su enlace (\/reservas\/) es la p\u00e1gina a la que lleva con las fechas elegidas.\n   ===================================================================== *\/\n:root {\n\n  \/* ---------- CU\u00c1NDO APARECE ---------- *\/\n  --capsula-desde: 200;              \/* px bajados para que aparezca (sin \"px\"); se esconde sola al llegar al pie de p\u00e1gina *\/\n  --capsula-abajo: 22px;             \/* distancia al borde de abajo *\/\n  --capsula-abajo-movil: 10px;\n  --capsula-desenfoque: 20px;        \/* desenfoque de lo que pasa detr\u00e1s (Divi no lo tiene) \u00b7 0px = sin desenfoque *\/\n  --capsula-subir-whatsapp: 74px;    \/* en celular, cu\u00e1nto sube el bot\u00f3n de WhatsApp mientras se ve la c\u00e1psula *\/\n\n  \/* ---------- CAMPOS (Llegada \u00b7 Salida \u00b7 Hu\u00e9spedes) ---------- *\/\n  --capsula-etiqueta: #B89058;       \/* LLEGADA, SALIDA, HU\u00c9SPEDES *\/\n  --capsula-texto: #00245C;          \/* fechas elegidas *\/\n  --capsula-texto-vacio: rgba(0, 36, 92, .5);   \/* \"Elegir fecha\" *\/\n  --capsula-divisor: rgba(184, 144, 88, .35);   \/* l\u00ednea fina entre campos *\/\n  --capsula-valor-fuente: 'EB Garamond', Georgia, serif;\n  --capsula-valor-tamano: 19px;\n  --capsula-etiqueta-fuente: 'DM Sans', Helvetica, Arial, sans-serif;\n\n  \/* ---------- HU\u00c9SPEDES ---------- *\/\n  --capsula-adultos: 2;              \/* valor inicial *\/\n  --capsula-max-adultos: 6;\n\n  \/* ---------- PRECIOS POR NOCHE (de Cloudbeds) ---------- *\/\n  --capsula-hotel: \"4vIjld\";         \/* c\u00f3digo del hotel en Cloudbeds (el final del enlace \u2026\/reservation\/4vIjld) *\/\n  --capsula-hotel-numero: \"\";        \/* solo si los precios no cargan: el n\u00famero del hotel en Cloudbeds (Settings \u2192 Property ID) *\/\n  --cal-precios: 1;                  \/* 1 = mostrar bajo cada d\u00eda la tarifa m\u00e1s baja por noche \u00b7 0 = sin precios *\/\n  --cal-moneda: \"USD\";\n  --cal-precio: #597085;             \/* color del precio *\/\n  --cal-nota: \"Tarifa por noche, desde\";   \/* texto bajo el calendario cuando hay precios *\/\n\n  \/* ---------- CALENDARIO ---------- *\/\n  --cal-meses-adelante: 18;          \/* hasta cu\u00e1ntos meses adelante se puede reservar *\/\n  --cal-fondo: #FCFAF6;\n  --cal-seleccion: #00245C;          \/* c\u00edrculo de llegada y salida *\/\n  --cal-rango: rgba(184, 144, 88, .16);   \/* franja de las noches elegidas *\/\n  --cal-acento: #B89058;             \/* hoy, bordes y bot\u00f3n \"Listo\" *\/\n  --cal-texto: #00245C;\n}\n<\/style>\n<style>.pr-capsula-js .pr-capsula-seccion{position:fixed !important;left:0;right:0;bottom:var(--capsula-abajo,22px);z-index:1040;margin:0 !important;padding:0 16px !important;background:transparent !important;pointer-events:none;transform:translateY(calc(100% + var(--capsula-abajo,22px) + 30px));transition:transform .7s cubic-bezier(.23,1,.32,1)}.pr-capsula-js.pr-capsula-visible .pr-capsula-seccion{transform:none}.pr-capsula-seccion .pr-capsula{pointer-events:auto;display:flex !important;align-items:center !important;flex-wrap:nowrap !important;width:auto !important;max-width:calc(100vw - 32px) !important;margin:0 auto !important;-webkit-backdrop-filter:blur(var(--capsula-desenfoque,20px)) saturate(1.3);backdrop-filter:blur(var(--capsula-desenfoque,20px)) saturate(1.3);overflow:visible !important}.pr-capsula>.et_pb_column{display:flex !important;flex-direction:row !important;align-items:center !important;flex-wrap:nowrap !important;gap:6px;width:auto !important;max-width:none !important;flex:1 1 auto !important;margin:0 !important;padding:0 !important}.pr-capsula .et_pb_module{margin:0 !important}.pr-capsula .et_pb_code{flex:1 1 auto;min-width:0}.pr-capsula .et_pb_button_module_wrapper{flex:0 0 auto;align-self:stretch;display:flex}.pr-capsula .et_pb_button_module_wrapper .et_pb_button{display:flex !important;align-items:center;justify-content:center}.pr-capsula .et_pb_button{white-space:nowrap}.pr-capsula-campos{display:flex;align-items:center;min-width:0}.pr-capsula-aviso{display:block;padding:10px 22px;font:400 var(--capsula-valor-tamano,19px)\/1.25 var(--capsula-valor-fuente,serif);color:var(--capsula-texto-vacio,rgba(0,36,92,.5))}.pr-cap-campo{appearance:none;-webkit-appearance:none;display:flex;flex-direction:column;align-items:flex-start;justify-content:center;gap:3px;min-width:150px;margin:0;padding:9px 24px;border:0;border-radius:100px;background:transparent;text-align:left;cursor:pointer;transition:background-color .25s ease,box-shadow .25s ease}.pr-cap-campo:focus-visible{outline:2px solid var(--cal-acento,#B89058);outline-offset:2px}.pr-cap-campo.activo{background:#fff;box-shadow:0 4px 16px rgba(0,36,92,.09)}.pr-cap-etiqueta{font:500 10.5px\/1.3 var(--capsula-etiqueta-fuente,sans-serif);letter-spacing:2px;text-transform:uppercase;color:var(--capsula-etiqueta,#B89058);white-space:nowrap}.pr-cap-valor{font:400 var(--capsula-valor-tamano,19px)\/1.25 var(--capsula-valor-fuente,serif);color:var(--capsula-texto,#00245C);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}.pr-cap-valor.vacio{color:var(--capsula-texto-vacio,rgba(0,36,92,.5))}.pr-cap-sep{flex:none;width:1px;height:30px;background:var(--capsula-divisor,rgba(184,144,88,.35))}.pr-cap-fechas{display:none !important}@media (hover:hover) and (pointer:fine){.pr-cap-campo:hover{background:rgba(184,144,88,.09)}.pr-cap-campo.activo:hover{background:#fff}}@keyframes prLatido{0%{box-shadow:0 0 0 0 rgba(184,144,88,.55)}100%{box-shadow:0 0 0 14px rgba(184,144,88,0)}}.pr-capsula-latido .et_pb_button{animation:prLatido 1.1s cubic-bezier(.23,1,.32,1) 2}.pr-cal{position:fixed;z-index:1060;left:16px;bottom:120px;box-sizing:border-box;width:680px;max-width:calc(100vw - 32px);padding:22px 26px 18px;background:var(--cal-fondo,#FCFAF6);border:1px solid rgba(184,144,88,.3);border-radius:24px;box-shadow:0 24px 60px -12px rgba(0,36,92,.28);color:var(--cal-texto,#00245C);opacity:0;visibility:hidden;transform:translateY(10px) scale(.98);transform-origin:50% 100%;transition:opacity .2s ease,transform .3s cubic-bezier(.23,1,.32,1),visibility 0s .3s}.pr-cal.abierto{opacity:1;visibility:visible;transform:none;transition:opacity .2s ease,transform .35s cubic-bezier(.23,1,.32,1),visibility 0s}.pr-cal{overflow-x:hidden;overflow-y:auto;overscroll-behavior:contain}.pr-cal.modo-huespedes{width:330px}.pr-cal *{box-sizing:border-box}.pr-cal button{font-family:inherit}.pr-cal-cab{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin:0 0 12px}.pr-cal-titulo{margin:0;padding:0;font:400 25px\/1.2 var(--capsula-valor-fuente,serif);color:var(--cal-texto,#00245C)}.pr-cal-sub{margin:4px 0 0;padding:0;min-height:1.4em;font:500 11px\/1.4 var(--capsula-etiqueta-fuente,sans-serif);letter-spacing:2px;text-transform:uppercase;color:var(--cal-acento,#B89058)}.pr-cal-cerrar{position:relative;flex:none;width:36px;height:36px;margin:-4px -6px 0 0;padding:0;border:0;border-radius:50%;background:transparent;cursor:pointer;display:none}.pr-cal-cerrar span{position:absolute;left:30%;right:30%;top:50%;height:1.5px;background:var(--cal-texto,#00245C)}.pr-cal-cerrar span:first-child{transform:rotate(45deg)}.pr-cal-cerrar span:last-child{transform:rotate(-45deg)}.pr-cal-calendario{position:relative}.pr-cal-meses{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:34px}.pr-cal-nav{position:absolute;z-index:2;top:0;width:36px;height:36px;margin:0;padding:0;border:1px solid rgba(184,144,88,.4);border-radius:50%;background:transparent;cursor:pointer;transition:background-color .2s,opacity .2s}.pr-cal-nav::before{content:\"\";position:absolute;left:50%;top:50%;width:7px;height:7px;border-left:1.5px solid var(--cal-texto,#00245C);border-bottom:1.5px solid var(--cal-texto,#00245C)}.pr-cal-ant{left:0}.pr-cal-ant::before{transform:translate(-30%,-50%) rotate(45deg)}.pr-cal-sig{right:0}.pr-cal-sig::before{transform:translate(-70%,-50%) rotate(-135deg)}.pr-cal-nav:disabled{opacity:.25;cursor:default}.pr-cal-nav:focus-visible,.pr-hues-paso:focus-visible,.pr-cal-borrar:focus-visible,.pr-cal-listo:focus-visible{outline:2px solid var(--cal-acento,#B89058);outline-offset:2px}.pr-mes-titulo{margin:0 0 6px;padding:0;height:36px;font:500 12px\/36px var(--capsula-etiqueta-fuente,sans-serif);letter-spacing:2.5px;text-transform:uppercase;text-align:center;color:var(--cal-texto,#00245C)}.pr-mes-grilla{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));row-gap:2px}.pr-mes-dsem{padding:4px 0 8px;font:500 10px\/1 var(--capsula-etiqueta-fuente,sans-serif);letter-spacing:1px;text-align:center;color:#597085}.pr-dia{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;min-width:0;width:100%;height:42px;margin:0;padding:0;border:0;background:transparent;cursor:pointer;font:400 17px\/1 var(--capsula-valor-fuente,serif);color:var(--cal-texto,#00245C);-webkit-tap-highlight-color:transparent}.pr-dia span{position:relative;z-index:1;display:flex;align-items:center;justify-content:center;width:40px;height:40px;border-radius:50%;transition:background-color .2s ease,color .2s ease,box-shadow .2s ease}.pr-dia::before{content:\"\";position:absolute;top:1px;bottom:1px;left:0;right:0;z-index:0;background:var(--cal-rango,rgba(184,144,88,.16));opacity:0;transition:opacity .2s ease}.pr-dia.en-rango::before{opacity:1}.pr-dia.es-inicio.con-fin::before{left:50%;opacity:1}.pr-dia.es-fin::before,.pr-dia.es-previa::before{right:50%;opacity:1}.pr-cal.con-previa .pr-dia.en-rango::before,.pr-cal.con-previa .pr-dia.es-previa::before,.pr-cal.con-previa .pr-dia.es-inicio.con-fin::before{opacity:.55}.pr-dia.es-hoy span::after{content:\"\";position:absolute;left:50%;bottom:5px;width:4px;height:4px;margin-left:-2px;border-radius:50%;background:var(--cal-acento,#B89058)}.pr-dia.es-inicio span,.pr-dia.es-fin span{background:var(--cal-seleccion,#00245C);color:#fff}.pr-dia.es-previa span{box-shadow:inset 0 0 0 1px var(--cal-seleccion,#00245C)}.pr-dia:disabled{cursor:default;color:rgba(0,36,92,.25)}.pr-dia-vacio{display:block}.pr-dia:focus-visible{outline:none}.pr-dia:focus-visible span{box-shadow:0 0 0 2px var(--cal-acento,#B89058)}.pr-cal.con-precios .pr-dia{height:58px;flex-direction:column;justify-content:flex-start;padding-top:2px}.pr-dia-precio{position:relative;z-index:1;display:block;margin-top:1px;font:500 10px\/1.2 var(--capsula-etiqueta-fuente,sans-serif);letter-spacing:.2px;color:var(--cal-precio,#597085);white-space:nowrap}.pr-dia.es-inicio .pr-dia-precio,.pr-dia.es-fin .pr-dia-precio{color:var(--cal-seleccion,#00245C);font-weight:700}.pr-dia.agotado span{color:rgba(0,36,92,.32);text-decoration:line-through;text-decoration-color:rgba(0,36,92,.25)}.pr-cal-nota{display:none;margin:8px 0 0;font:400 11px\/1.4 var(--capsula-etiqueta-fuente,sans-serif);color:#597085;text-align:right}.pr-cal.con-precios .pr-cal-nota{display:block}@media (hover:hover) and (pointer:fine){.pr-dia:not(:disabled):hover span{box-shadow:inset 0 0 0 1px var(--cal-acento,#B89058)}.pr-dia.es-inicio:hover span,.pr-dia.es-fin:hover span{box-shadow:none}.pr-cal-nav:not(:disabled):hover{background:rgba(184,144,88,.12)}}.pr-cal-hues{display:none;align-items:center;justify-content:space-between;gap:20px;padding:6px 0 4px}.pr-cal.modo-huespedes .pr-cal-hues,.pr-cal.modo-todo .pr-cal-hues{display:flex}.pr-cal.modo-huespedes .pr-cal-calendario{display:none}.pr-cal.modo-todo .pr-cal-hues{margin-top:14px;padding-top:16px;border-top:1px solid rgba(184,144,88,.25)}.pr-hues-titulo{font:400 21px\/1.2 var(--capsula-valor-fuente,serif);color:var(--cal-texto,#00245C)}.pr-hues-control{display:flex;align-items:center;gap:14px}.pr-hues-paso{position:relative;width:38px;height:38px;margin:0;padding:0;border:1px solid rgba(184,144,88,.55);border-radius:50%;background:transparent;cursor:pointer;transition:background-color .2s,opacity .2s}.pr-hues-paso::before,.pr-hues-mas::after{content:\"\";position:absolute;left:50%;top:50%;width:12px;height:1.5px;margin:-.75px 0 0 -6px;background:var(--cal-texto,#00245C)}.pr-hues-mas::after{transform:rotate(90deg)}.pr-hues-paso:disabled{opacity:.3;cursor:default}.pr-hues-cuenta{min-width:22px;text-align:center;font:400 24px\/1 var(--capsula-valor-fuente,serif);color:var(--cal-texto,#00245C)}@media (hover:hover) and (pointer:fine){.pr-hues-paso:not(:disabled):hover{background:rgba(184,144,88,.12)}}.pr-cal-pie{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-top:14px;padding-top:14px;border-top:1px solid rgba(184,144,88,.25)}.pr-cal.modo-huespedes .pr-cal-pie{border-top:0;padding-top:4px}.pr-cal-borrar{margin:0;padding:6px 0;border:0;background:transparent;cursor:pointer;font:500 11px\/1.4 var(--capsula-etiqueta-fuente,sans-serif);letter-spacing:2px;text-transform:uppercase;color:var(--cal-texto,#00245C);text-decoration:underline;text-underline-offset:4px;text-decoration-color:rgba(184,144,88,.6)}.pr-cal-borrar:disabled{opacity:.3;cursor:default}.pr-cal.modo-huespedes .pr-cal-borrar{visibility:hidden}.pr-cal-listo{margin:0 0 0 auto;padding:12px 26px;border:0;border-radius:100px;background:var(--cal-acento,#B89058);color:#fff;cursor:pointer;font:500 12px\/1.2 var(--capsula-etiqueta-fuente,sans-serif);letter-spacing:2px;text-transform:uppercase;transition:background-color .3s ease}@media (hover:hover) and (pointer:fine){.pr-cal-listo:hover{background:var(--cal-seleccion,#00245C)}}.pr-cal-velo{display:none;position:fixed;inset:0;z-index:1055;background:rgba(0,20,50,.38);opacity:0;visibility:hidden;transition:opacity .3s ease,visibility 0s .3s}.pr-cal-velo.abierto{opacity:1;visibility:visible;transition:opacity .3s ease,visibility 0s}.pr-cal-bloqueo,.pr-cal-bloqueo body{overflow:hidden !important}@media (max-width:767px){.pr-capsula-js .pr-capsula-seccion{bottom:var(--capsula-abajo-movil,10px);padding:0 8px !important;transform:translateY(calc(100% + var(--capsula-abajo-movil,10px) + 30px))}.pr-capsula-seccion .pr-capsula{width:100% !important;max-width:none !important}.pr-cap-llegada,.pr-cap-salida,.pr-cap-huespedes,.pr-cap-sep{display:none !important}.pr-cap-fechas{display:flex !important;flex:1 1 auto;min-width:0;padding:7px 16px}.pr-cap-etiqueta{font-size:9.5px;letter-spacing:1.5px}.pr-cap-valor{font-size:17px}.pr-cal{left:0 !important;right:0;bottom:0 !important;width:auto !important;max-width:none;max-height:90vh;overflow-y:auto;overscroll-behavior:contain;padding:20px 18px calc(16px + env(safe-area-inset-bottom));border-radius:24px 24px 0 0;border-width:1px 0 0;opacity:1;transform:translateY(100%);transition:transform .45s cubic-bezier(.32,.72,0,1),visibility 0s .45s}.pr-cal.abierto{transform:none;transition:transform .45s cubic-bezier(.32,.72,0,1),visibility 0s}.pr-cal-cerrar{display:block}.pr-cal-velo{display:block}.pr-cal-meses{grid-template-columns:minmax(0,1fr)}.pr-dia{height:44px}.pr-cal.con-precios .pr-dia{height:56px}.pr-cal-listo{padding:14px 28px}.pr-capsula-js.pr-capsula-visible .et-l--footer .et_pb_section--fixed{transform:translateY(calc(-1 * var(--capsula-subir-whatsapp,74px)))}.pr-capsula-js .et-l--footer .et_pb_section--fixed{transition:transform .7s cubic-bezier(.23,1,.32,1)}}@media (prefers-reduced-motion:reduce){.pr-capsula-seccion,.pr-cal,.pr-cal-velo,.pr-dia span,.pr-dia::before{transition-duration:.01s !important}.pr-capsula-latido .et_pb_button{animation:none}}<\/style><div class=\"pr-capsula-campos\"><span class=\"pr-capsula-aviso\">Llegada \u00b7 Salida \u00b7 Hu\u00e9spedes<\/span><\/div><script>window.PRCloudbeds = window.PRCloudbeds || (function () { 'use strict'; var notas = Array.of(); var hotel = null, base = null, propiedad = null, preparado = null, tipos = null; var pedidosCalendario = new Map(); function anotar(t) { notas.push(new Date().toTimeString().slice(0, 8) + ' ' + t); if (notas.length > 60) notas.shift(); } function formulario(datos) { var p = new URLSearchParams(); Object.entries(datos).forEach(function (par) { p.set(par.at(0), String(par.at(1))); }); return p; } function leer(paso) { return function (r) { anotar(paso + ': HTTP ' + r.status); if (!r.ok) throw new Error(paso + ' respondi\u00f3 ' + r.status); return r.json(); }; } function fallo(paso) { return function (e) { var m = e && e.message ? e.message : String(e); if (\/failed to fetch|networkerror|load failed\/i.test(m)) m += ' (bloqueado: \u00bfel dominio est\u00e1 autorizado en Cloudbeds?)'; anotar(paso + ': ' + m); throw e; }; } function enviar(ruta, datos) { return fetch(base + ruta, { method: 'POST', body: formulario(datos), credentials: 'omit' }) .then(leer(ruta)).catch(fallo(ruta)); } function preparar(codigo, idManual) { if (preparado && hotel === codigo) return preparado; hotel = codigo; anotar('hotel ' + codigo); preparado = fetch('https:\/\/api.cloudbeds.com\/mapping\/v1.0\/mfd\/property?hash=' + encodeURIComponent(codigo), { credentials: 'omit' }) .then(leer('mapping')).catch(function (e) { anotar('mapping fall\u00f3; se usa hotels.cloudbeds.com'); return null; }) .then(function (m) { base = String((m && m.island_mfd_base_url) || 'https:\/\/hotels.cloudbeds.com\/').replace(\/\\\/+$\/, '') + '\/booking'; anotar('servidor ' + base); if (\/^\\d+$\/.test(String(idManual || ''))) { propiedad = String(idManual); anotar('n\u00famero del hotel (AJUSTES) ' + propiedad); return propiedad; } return enviar('\/property_info', { property_code: codigo, lang: 'es', iframe: 'false' }).then(function (j) { var d = j && j.data; propiedad = d && (d.property_id || d.id); if (!propiedad) { anotar('property_info sin n\u00famero: ' + JSON.stringify(j).slice(0, 160)); throw new Error('Cloudbeds no devolvi\u00f3 el n\u00famero del hotel'); } propiedad = String(propiedad); anotar('n\u00famero del hotel ' + propiedad); return propiedad; }); }); preparado.catch(function () { preparado = null; }); return preparado; } function dos(n) { return n < 10 ? '0' + n : String(n); } function iso(d) { return d.getFullYear() + '-' + dos(d.getMonth() + 1) + '-' + dos(d.getDate()); } function calendario(desde, hasta) { var clave = iso(desde) + '_' + iso(hasta); if (pedidosCalendario.has(clave)) return pedidosCalendario.get(clave); var p = Promise.resolve().then(function () { if (!propiedad) throw new Error('sin preparar'); return enviar('\/availability_calendar', { property_id: propiedad, start_date: iso(desde), end_date: iso(hasta) }); }).then(function (j) { var datos = j && (j.data || j); var dias = new Map(); if (!datos || typeof datos !== 'object') throw new Error('availability_calendar sin datos'); Object.entries(datos).forEach(function (par) { var clave2 = String(par.at(0)), v = par.at(1); var m = \/^(\\d{4})-(\\d{2})-(\\d{2})\/.exec(clave2); var f = m ? new Date(Number(m.at(1)), Number(m.at(2)) - 1, Number(m.at(3))) : new Date(clave2); if (isNaN(f)) return; var lista = (Array.isArray(v) ? v : Object.values(v || {})).filter(function (c) { return c && typeof c === 'object'; }).map(function (c) { return { tipo: String(c.room_type_id), paquete: String(c.package_id || 0), tarifa: parseFloat(c.rate), cupo: Number(c.avail) || 0, cerrado: Number(c.closed) === 1, cta: Number(c.cta) === 1 }; }); dias.set(iso(f), lista); }); anotar('calendario ' + clave + ': ' + dias.size + ' d\u00edas'); if (!dias.size) anotar('respuesta: ' + JSON.stringify(j).slice(0, 160)); return dias; }); pedidosCalendario.set(clave, p); p.catch(function () { pedidosCalendario.delete(clave); }); return p; } function habitaciones() { if (tipos) return tipos; tipos = Promise.resolve().then(function () { if (!propiedad) throw new Error('sin preparar'); return enviar('\/rooms', { checkin: '1970-01-01', checkout: '1970-01-02', widget_property: propiedad }); }).then(function (j) { var lista = (j && (j.accomodation_types || (j.data && j.data.accomodation_types) || j.room_types || (j.data && j.data.room_types))) || Array.of(); var res = lista.map(function (t) { var nombres = Array.of(); try { var l = JSON.parse(t.room_type_title_langs || '{}'); Object.values(l).forEach(function (x) { if (x) nombres.push(String(x)); }); } catch (e) {} Array.of(t.title, t.room_type_title, t.room_type_name, t.name).forEach(function (x) { if (typeof x === 'string' && x.trim()) nombres.push(x.trim()); }); return { tipo: String(t.room_type_id), nombres: nombres }; }).filter(function (t) { return t.tipo !== 'undefined' && t.nombres.length; }); anotar('habitaciones: ' + res.map(function (t) { return t.tipo + '=' + t.nombres.at(0); }).join(' \u00b7 ')); return res; }); tipos.catch(function () { tipos = null; }); return tipos; } return { preparar: preparar, calendario: calendario, habitaciones: habitaciones, iso: iso, registro: function () { return notas.slice(); } }; })(); (function () { 'use strict'; function enEditor() { var q = location.search + location.hash; if (\/(et_fb|et_bfb|app_window|et_pb_preview)=\/.test(q)) return true; var marcas = 'et-fb et-bfb et-fb-root-ancestor et-fb-preview et-fb-iframe-ancestor'.split(' '); var enClase = marcas.some(function (m) { return document.documentElement.classList.contains(m) || (document.body && document.body.classList.contains(m)); }); if (enClase) return true; if (document.getElementById('et-fb-app')) return true; try { if (window.self !== window.top) return true; } catch (e) { return true; } return false; } var raiz = document.documentElement; function ajuste(nombre, defecto) { var v = getComputedStyle(raiz).getPropertyValue(nombre).trim().replace(\/^\"|\"$\/g, ''); return v === '' ? defecto : v; } function numero(nombre, defecto) { var v = parseFloat(ajuste(nombre, '')); return isNaN(v) ? defecto : v; } function el(tag, clase, texto) { var n = document.createElement(tag); if (clase) n.className = clase; if (texto) n.textContent = texto; return n; } if (!enEditor()) raiz.classList.add('pr-capsula-js'); var EN = \/^en\/i.test(raiz.getAttribute('lang') || ''); var T = EN ? { llegada: 'Check-in', salida: 'Check-out', huespedes: 'Guests', fechas: 'Dates', elegir: 'Add date', elegirFechas: 'Add dates', listas: 'Your dates', eligeLlegada: 'Select check-in', eligeSalida: 'Select check-out', noche: 'night', noches: 'nights', adulto: 'adult', adultos: 'adults', adultosTitulo: 'Adults', borrar: 'Clear dates', listo: 'Done', ver: 'See availability', anterior: 'Previous month', siguiente: 'Next month', cerrar: 'Close', menos: 'Fewer adults', mas: 'More adults' } : { llegada: 'Llegada', salida: 'Salida', huespedes: 'Hu\u00e9spedes', fechas: 'Fechas', elegir: 'Elegir fecha', elegirFechas: 'Elegir fechas', listas: 'Sus fechas', eligeLlegada: 'Elija su llegada', eligeSalida: 'Elija su salida', noche: 'noche', noches: 'noches', adulto: 'adulto', adultos: 'adultos', adultosTitulo: 'Adultos', borrar: 'Borrar fechas', listo: 'Listo', ver: 'Ver disponibilidad', anterior: 'Mes anterior', siguiente: 'Mes siguiente', cerrar: 'Cerrar', menos: 'Menos adultos', mas: 'M\u00e1s adultos' }; var IDIOMA = EN ? 'en-US' : 'es-EC'; function cero(d) { var x = new Date(d.getTime()); x.setHours(0, 0, 0, 0); return x; } function mas(d, n) { var x = new Date(d.getTime()); x.setDate(x.getDate() + n); return x; } function mesDe(d, n) { return new Date(d.getFullYear(), d.getMonth() + (n || 0), 1); } function dos(n) { return n < 10 ? '0' + n : String(n); } function iso(d) { return d.getFullYear() + '-' + dos(d.getMonth() + 1) + '-' + dos(d.getDate()); } function deIso(t) { if (!\/^\\d{4}-\\d{2}-\\d{2}$\/.test(t || '')) return null; var p = t.split('-').map(Number); return new Date(p.shift(), p.shift() - 1, p.shift()); } function igual(a, b) { return !!(a && b && a.getTime() === b.getTime()); } var fCorta = new Intl.DateTimeFormat(IDIOMA, { day: 'numeric', month: 'short' }); var fLarga = new Intl.DateTimeFormat(IDIOMA, { weekday: 'long', day: 'numeric', month: 'long', year: 'numeric' }); var fMes = new Intl.DateTimeFormat(IDIOMA, { month: 'long', year: 'numeric' }); var fSemana = new Intl.DateTimeFormat(IDIOMA, { weekday: 'narrow' }); function corta(d) { return fCorta.format(d).replace('.', ''); } function tituloMes(d) { var t = fMes.format(d).replace(' de ', ' '); return t.charAt(0).toUpperCase() + t.slice(1); } function rango(a, b) { if (a.getMonth() === b.getMonth() && a.getFullYear() === b.getFullYear() && !EN) return a.getDate() + ' \u2013 ' + corta(b); return corta(a) + ' \u2013 ' + corta(b); } function noches(a, b) { return Math.round((b - a) \/ 86400000); } function arrancar() { if (enEditor()) return; var cont = document.querySelector('.pr-capsula-campos'); if (!cont) { raiz.classList.remove('pr-capsula-js'); return; } var capsula = cont.closest('.pr-capsula') || cont.closest('.et_pb_row'); var seccion = cont.closest('.pr-capsula-seccion') || cont.closest('.et_pb_section'); if (!capsula || !seccion) return; capsula.classList.add('pr-capsula'); seccion.classList.add('pr-capsula-seccion'); var bmod = capsula.querySelector('.pr-capsula-boton') || capsula.querySelector('.et_pb_button'); var boton = bmod && (bmod.tagName === 'A' ? bmod : bmod.querySelector('a')); var hoy = cero(new Date()); var limite = mas(mesDe(hoy, numero('--cal-meses-adelante', 18) + 1), -1); var maxAdultos = Math.max(1, Math.round(numero('--capsula-max-adultos', 6))); var q = new URLSearchParams(location.search); var entrada = deIso(q.get('checkin')), salida = deIso(q.get('checkout')); if (!entrada || entrada < hoy) { entrada = null; salida = null; } if (salida && salida <= entrada) salida = null; var adultos = parseInt(q.get('adults'), 10); if (!(adultos >= 1 && adultos <= maxAdultos)) adultos = Math.min(maxAdultos, Math.max(1, Math.round(numero('--capsula-adultos', 2)))); var fase = 'entrada', modo = 'fechas', abierto = false, origen = null, columnas = 2; var mes = mesDe(entrada || hoy); var movil = window.matchMedia('(max-width: 767px)'); cont.textContent = ''; function campo(clase, etiqueta) { var b = el('button', 'pr-cap-campo ' + clase); b.type = 'button'; b.setAttribute('aria-haspopup', 'dialog'); b.setAttribute('aria-controls', 'pr-cal'); b.setAttribute('aria-expanded', 'false'); var e = el('span', 'pr-cap-etiqueta', etiqueta), v = el('span', 'pr-cap-valor'); b.appendChild(e); b.appendChild(v); cont.appendChild(b); return { b: b, e: e, v: v }; } function separador() { var s = el('span', 'pr-cap-sep'); s.setAttribute('aria-hidden', 'true'); cont.appendChild(s); } var cLlegada = campo('pr-cap-llegada', T.llegada); separador(); var cSalida = campo('pr-cap-salida', T.salida); separador(); var cHuespedes = campo('pr-cap-huespedes', T.huespedes); var cFechas = campo('pr-cap-fechas', T.fechas); var campos = Array.of(cLlegada, cSalida, cHuespedes, cFechas); var velo = el('div', 'pr-cal-velo'); var panel = el('div', 'pr-cal'); panel.id = 'pr-cal'; panel.setAttribute('role', 'dialog'); panel.setAttribute('data-lenis-prevent', ''); var cab = el('div', 'pr-cal-cab'); var cabTexto = el('div'); var titulo = el('p', 'pr-cal-titulo'), sub = el('p', 'pr-cal-sub'); sub.setAttribute('aria-live', 'polite'); cabTexto.appendChild(titulo); cabTexto.appendChild(sub); var cerrarB = el('button', 'pr-cal-cerrar'); cerrarB.type = 'button'; cerrarB.setAttribute('aria-label', T.cerrar); cerrarB.appendChild(el('span')); cerrarB.appendChild(el('span')); cab.appendChild(cabTexto); cab.appendChild(cerrarB); panel.setAttribute('aria-labelledby', 'pr-cal-titulo'); titulo.id = 'pr-cal-titulo'; var secCal = el('div', 'pr-cal-calendario'); var ant = el('button', 'pr-cal-nav pr-cal-ant'), sig = el('button', 'pr-cal-nav pr-cal-sig'); ant.type = sig.type = 'button'; ant.setAttribute('aria-label', T.anterior); sig.setAttribute('aria-label', T.siguiente); var meses = el('div', 'pr-cal-meses'); secCal.appendChild(ant); secCal.appendChild(sig); secCal.appendChild(meses); secCal.appendChild(el('p', 'pr-cal-nota', EN ? 'Nightly rate, from' : ajuste('--cal-nota', 'Tarifa por noche, desde'))); var secHues = el('div', 'pr-cal-hues'); secHues.appendChild(el('span', 'pr-hues-titulo', T.adultosTitulo)); var control = el('div', 'pr-hues-control'); var menos = el('button', 'pr-hues-paso pr-hues-menos'), masB = el('button', 'pr-hues-paso pr-hues-mas'); menos.type = masB.type = 'button'; menos.setAttribute('aria-label', T.menos); masB.setAttribute('aria-label', T.mas); var cuenta = el('span', 'pr-hues-cuenta'); cuenta.setAttribute('aria-live', 'polite'); control.appendChild(menos); control.appendChild(cuenta); control.appendChild(masB); secHues.appendChild(control); var pie = el('div', 'pr-cal-pie'); var borrar = el('button', 'pr-cal-borrar', T.borrar), listo = el('button', 'pr-cal-listo'); borrar.type = listo.type = 'button'; pie.appendChild(borrar); pie.appendChild(listo); panel.appendChild(cab); panel.appendChild(secCal); panel.appendChild(secHues); panel.appendChild(pie); document.body.appendChild(velo); document.body.appendChild(panel); var hotel = ajuste('--capsula-hotel', '4vIjld'); var conPrecios = ajuste('--cal-precios', '1') !== '0' && \/^\\w+$\/.test(hotel) && !!window.fetch && !!window.PRCloudbeds; var precios = new Map(), pedidos = new Set(); var estado = 'sin pedir'; var fPrecio = null; try { fPrecio = new Intl.NumberFormat(IDIOMA, { style: 'currency', currency: ajuste('--cal-moneda', 'USD'), maximumFractionDigits: 0 }); } catch (e) { fPrecio = null; } function textoPrecio(n) { var t = fPrecio ? fPrecio.format(Math.round(n)) : String(Math.round(n)); return t.replace(\/US\\s?\/, '').replace(\/\\s\/g, ''); } function leerDia(lista) { var minimo = null, libre = false; lista.forEach(function (c) { var abierto = c.cupo > 0 && !c.cerrado; if (abierto && !c.cta) libre = true; if (abierto && c.paquete === '0' && c.tarifa > 0) minimo = minimo === null ? c.tarifa : Math.min(minimo, c.tarifa); }); return { precio: minimo, agotado: lista.length > 0 && !libre }; } function pedirPrecios() { if (!conPrecios || !window.PRCloudbeds) return; var faltan = false; for (var k = 0; k < columnas; k++) if (!pedidos.has(iso(mesDe(mes, k)))) faltan = true; if (!faltan) return; var meses2 = Array.of(); for (k = 0; k < columnas; k++) { pedidos.add(iso(mesDe(mes, k))); meses2.push(mesDe(mes, k)); } estado = 'pidiendo'; window.PRCloudbeds.preparar(hotel, ajuste('--capsula-hotel-numero', '')).then(function () { return Promise.all(meses2.map(function (m) { var ini = m < hoy ? hoy : m; var fin = mas(mesDe(m, 1), -1); if (fin > limite) fin = limite; return window.PRCloudbeds.calendario(ini, fin); })); }).then(function (todos) { todos.forEach(function (dias2) { dias2.forEach(function (lista, clave) { precios.set(clave, leerDia(lista)); }); }); estado = 'listo (' + precios.size + ' d\u00edas)'; if (precios.size) panel.classList.add('con-precios'); ponerPrecios(); }).catch(function (e) { estado = 'sin precios: ' + (e && e.message ? e.message : e); meses2.forEach(function (m) { pedidos.delete(iso(m)); }); }); } function ponerPrecios() { if (!precios.size) return; dias().forEach(function (b) { var info = precios.get(b.dataset.t); var viejo = b.querySelector('.pr-dia-precio'); if (viejo) viejo.remove(); b.classList.toggle('agotado', !!(info && info.agotado && !b.disabled)); if (!info || b.disabled || info.precio === null) return; b.appendChild(el('small', 'pr-dia-precio', textoPrecio(info.precio))); b.setAttribute('aria-label', fLarga.format(deIso(b.dataset.t)) + ', ' + textoPrecio(info.precio)); }); } window.prCapsula = function () { return { hotel: hotel, precios: conPrecios ? estado : 'apagados en AJUSTES', adultos: adultos, llegada: entrada && iso(entrada), salida: salida && iso(salida), cloudbeds: window.PRCloudbeds ? window.PRCloudbeds.registro() : 'falta el cliente de Cloudbeds' }; }; function diaDom(f) { var b = el('button', 'pr-dia'); b.type = 'button'; b.dataset.t = iso(f); b.setAttribute('aria-label', fLarga.format(f)); b.appendChild(el('span', '', String(f.getDate()))); if (f < hoy || f > limite) b.disabled = true; if (igual(f, hoy)) b.classList.add('es-hoy'); return b; } function mesDom(m) { var caja = el('div', 'pr-mes'); caja.appendChild(el('p', 'pr-mes-titulo', tituloMes(m))); var g = el('div', 'pr-mes-grilla'); var primerDia = EN ? 0 : 1; for (var i = 0; i < 7; i++) g.appendChild(el('span', 'pr-mes-dsem', fSemana.format(new Date(2024, 0, 7 + primerDia + i)).toUpperCase())); var hueco = (m.getDay() - primerDia + 7) % 7; for (i = 0; i < hueco; i++) g.appendChild(el('span', 'pr-dia-vacio')); var total = new Date(m.getFullYear(), m.getMonth() + 1, 0).getDate(); for (var n = 1; n <= total; n++) g.appendChild(diaDom(new Date(m.getFullYear(), m.getMonth(), n))); caja.appendChild(g); return caja; } function dias() { return Array.from(meses.querySelectorAll('.pr-dia')); } function pintar() { meses.textContent = ''; for (var k = 0; k < columnas; k++) meses.appendChild(mesDom(mesDe(mes, k))); ant.disabled = mes <= mesDe(hoy); sig.disabled = mesDe(mes, columnas) > limite; marcar(null); ponerPrecios(); pedirPrecios(); } function marcar(previa) { var fin = salida || previa; panel.classList.toggle('con-previa', !!(previa && !salida)); dias().forEach(function (b) { var f = deIso(b.dataset.t); var ini = igual(f, entrada), fi = igual(f, salida); b.classList.toggle('es-inicio', ini); b.classList.toggle('es-fin', fi); b.classList.toggle('es-previa', !salida && igual(f, previa)); b.classList.toggle('con-fin', ini && !!fin); b.classList.toggle('en-rango', !!(entrada && fin && f > entrada && f < fin)); b.setAttribute('aria-pressed', ini || fi ? 'true' : 'false'); }); } function textoAdultos() { return adultos + ' ' + (adultos === 1 ? T.adulto : T.adultos); } function textos() { cLlegada.v.textContent = entrada ? corta(entrada) : T.elegir; cLlegada.v.classList.toggle('vacio', !entrada); cSalida.v.textContent = salida ? corta(salida) : T.elegir; cSalida.v.classList.toggle('vacio', !salida); cHuespedes.v.textContent = textoAdultos(); cFechas.e.textContent = T.fechas + ' \u00b7 ' + textoAdultos(); cFechas.v.textContent = entrada && salida ? rango(entrada, salida) : entrada ? corta(entrada) + ' \u2013 \u2026' : T.elegirFechas; cFechas.v.classList.toggle('vacio', !entrada); cuenta.textContent = String(adultos); menos.disabled = adultos <= 1; masB.disabled = adultos >= maxAdultos; var n = entrada && salida ? noches(entrada, salida) : 0; titulo.textContent = modo === 'huespedes' ? T.huespedes : n ? T.listas : fase === 'entrada' ? T.eligeLlegada : T.eligeSalida; sub.textContent = modo === 'huespedes' ? '' : n ? n + ' ' + (n === 1 ? T.noche : T.noches) + ' \u00b7 ' + rango(entrada, salida) : entrada ? corta(entrada) + ' \u2013 \u2026' : ''; borrar.disabled = !entrada; listo.textContent = entrada && salida && modo !== 'huespedes' ? T.ver : T.listo; cLlegada.b.classList.toggle('activo', abierto && modo === 'fechas' && fase === 'entrada'); cSalida.b.classList.toggle('activo', abierto && modo === 'fechas' && fase === 'salida'); cHuespedes.b.classList.toggle('activo', abierto && modo === 'huespedes'); cFechas.b.classList.toggle('activo', abierto && modo === 'todo'); } function colocar() { if (movil.matches) { panel.style.removeProperty('left'); panel.style.removeProperty('bottom'); panel.style.removeProperty('max-height'); return; } var rc = capsula.getBoundingClientRect(); var ref = modo === 'huespedes' ? cHuespedes.b.getBoundingClientRect() : rc; var w = panel.offsetWidth; var x = Math.max(16, Math.min(window.innerWidth - w - 16, ref.left + ref.width \/ 2 - w \/ 2)); panel.style.left = Math.round(x) + 'px'; panel.style.bottom = Math.round(window.innerHeight - rc.top + 12) + 'px'; panel.style.maxHeight = Math.max(240, Math.round(rc.top - 12 - 16)) + 'px'; } function lenis(parar) { if (window.PR && window.PR.lenis) { try { if (parar) window.PR.lenis.stop(); else window.PR.lenis.start(); } catch (e) {} } } function abrir(m, desde, f) { var nuevoModo = movil.matches ? 'todo' : m; var columnasAhora = movil.matches ? 1 : 2; if (f) fase = f; origen = desde; if (!abierto || nuevoModo !== modo || columnasAhora !== columnas) { modo = nuevoModo; columnas = columnasAhora; mes = mesDe(entrada || hoy); if (mesDe(mes, columnas) > limite) mes = mesDe(limite, 1 - columnas); panel.className = 'pr-cal modo-' + modo + (abierto ? ' abierto' : '') + (precios.size ? ' con-precios' : ''); pintar(); } textos(); colocar(); if (!abierto) { abierto = true; panel.classList.add('abierto'); velo.classList.add('abierto'); if (movil.matches) { raiz.classList.add('pr-cal-bloqueo'); lenis(true); } } campos.forEach(function (c) { c.b.setAttribute('aria-expanded', 'true'); }); textos(); var foco = modo === 'huespedes' ? masB : (meses.querySelector('.pr-dia.es-inicio') || meses.querySelector('.pr-dia:not(:disabled)')); if (foco && !movil.matches) foco.focus({ preventScroll: true }); } function cerrar(devolver) { if (!abierto) return; abierto = false; panel.classList.remove('abierto', 'con-previa'); velo.classList.remove('abierto'); raiz.classList.remove('pr-cal-bloqueo'); lenis(false); campos.forEach(function (c) { c.b.setAttribute('aria-expanded', 'false'); }); textos(); if (devolver && origen) origen.focus({ preventScroll: true }); } function latir() { capsula.classList.remove('pr-capsula-latido'); void capsula.offsetWidth; capsula.classList.add('pr-capsula-latido'); } function ir() { var destino = (boton && boton.getAttribute('href')) || '\/reservas\/'; if (\/cloudbeds\\.com\/i.test(destino) || destino === '#') destino = ajuste('--reservas-url', '\/reservas\/'); destino = destino.split('#').shift().split('?').shift(); var p = new URLSearchParams(); p.set('checkin', iso(entrada)); p.set('checkout', iso(salida)); p.set('adults', String(adultos)); p.set('guests', String(adultos)); location.href = destino + '?' + p.toString(); } function elegir(f) { if (fase === 'salida' && entrada && f > entrada) { salida = f; fase = 'entrada'; marcar(null); textos(); if (!movil.matches) setTimeout(function () { cerrar(false); latir(); if (boton) boton.focus({ preventScroll: true }); }, 380); return; } entrada = f; salida = null; fase = 'salida'; marcar(null); textos(); } meses.addEventListener('click', function (e) { var b = e.target.closest && e.target.closest('.pr-dia'); if (b && !b.disabled) elegir(deIso(b.dataset.t)); }); meses.addEventListener('mouseover', function (e) { if (fase !== 'salida' || !entrada || salida) return; var b = e.target.closest && e.target.closest('.pr-dia'); if (!b || b.disabled) return; var f = deIso(b.dataset.t); marcar(f > entrada ? f : null); }); meses.addEventListener('mouseleave', function () { if (!salida) marcar(null); }); meses.addEventListener('keydown', function (e) { var b = e.target.closest && e.target.closest('.pr-dia'); if (!b) return; var n = 0; switch (e.key) { case 'ArrowLeft': n = -1; break; case 'ArrowRight': n = 1; break; case 'ArrowUp': n = -7; break; case 'ArrowDown': n = 7; break; default: return; } e.preventDefault(); var d = mas(deIso(b.dataset.t), n); if (d < hoy || d > limite) return; var buscar = function () { return dias().find(function (x) { return x.dataset.t === iso(d); }); }; var otro = buscar(); if (!otro) { mes = mesDe(mes, n > 0 ? 1 : -1); pintar(); otro = buscar(); } if (otro) otro.focus(); }); ant.addEventListener('click', function () { mes = mesDe(mes, -1); pintar(); }); sig.addEventListener('click', function () { mes = mesDe(mes, 1); pintar(); }); menos.addEventListener('click', function () { if (adultos > 1) adultos--; textos(); }); masB.addEventListener('click', function () { if (adultos < maxAdultos) adultos++; textos(); }); borrar.addEventListener('click', function () { entrada = salida = null; fase = 'entrada'; marcar(null); textos(); }); listo.addEventListener('click', function () { if (entrada && salida && modo !== 'huespedes') { ir(); return; } cerrar(true); }); cerrarB.addEventListener('click', function () { cerrar(true); }); velo.addEventListener('click', function () { cerrar(false); }); function alternar(m, c, f) { if (abierto && modo === m && (m === 'huespedes' || fase === f)) { cerrar(false); return; } abrir(m, c.b, f); } cLlegada.b.addEventListener('click', function () { alternar('fechas', cLlegada, 'entrada'); }); cSalida.b.addEventListener('click', function () { alternar('fechas', cSalida, entrada ? 'salida' : 'entrada'); }); cHuespedes.b.addEventListener('click', function () { alternar('huespedes', cHuespedes); }); cFechas.b.addEventListener('click', function () { abrir('todo', cFechas.b, entrada && !salida ? 'salida' : 'entrada'); }); if (boton) boton.addEventListener('click', function (e) { e.preventDefault(); if (entrada && salida) ir(); else abrir('fechas', entrada ? cSalida.b : cLlegada.b, entrada ? 'salida' : 'entrada'); }); document.addEventListener('pointerdown', function (e) { if (!abierto || movil.matches) return; if (panel.contains(e.target) || capsula.contains(e.target)) return; cerrar(false); }); document.addEventListener('keydown', function (e) { if (e.key === 'Escape' && abierto) cerrar(true); }); window.addEventListener('resize', function () { if (!abierto) return; if ((movil.matches ? 1 : 2) !== columnas) cerrar(false); else colocar(); }); textos(); var desde = numero('--capsula-desde', 200); var pieVisto = false, pendiente = false, precargado = false; function revisar() { pendiente = false; var ver = window.pageYOffset > desde && !pieVisto; raiz.classList.toggle('pr-capsula-visible', ver); if (ver && !precargado) { precargado = true; columnas = movil.matches ? 1 : 2; mes = mesDe(entrada || hoy); pedirPrecios(); } if (!ver) cerrar(false); else if (abierto) colocar(); } var pies = Array.from(document.querySelectorAll('.et-l--footer .et_pb_section')).filter(function (s) { return !s.classList.contains('et_pb_section--fixed'); }); if ('IntersectionObserver' in window && pies.length) { var vistos = new Set(); var io = new IntersectionObserver(function (entradas) { entradas.forEach(function (en) { if (en.isIntersecting) vistos.add(en.target); else vistos.delete(en.target); }); pieVisto = vistos.size > 0; revisar(); }, { rootMargin: '0px 0px -60px 0px' }); pies.forEach(function (s) { io.observe(s); }); } window.addEventListener('scroll', function () { if (!pendiente) { pendiente = true; requestAnimationFrame(revisar); } }, { passive: true }); revisar(); } if (document.readyState === 'loading') document.addEventListener('DOMContentLoaded', arrancar); else arrancar(); })();<\/script><\/div><\/div><div class=\"et_pb_module et_pb_button_module_wrapper et_pb_button_9_wrapper preset--module--divi-button--default_wrapper\"><a class=\"et_pb_button_9 et_pb_button et_pb_bg_layout_light et_pb_module et_flex_module pr-capsula-boton preset--module--divi-button--default\" href=\"\/reservas\/\">Ver disponibilidad<\/a><\/div><\/div><\/div><\/div>","protected":false},"excerpt":{"rendered":"<p>Six suite categories from 35 to 87 m\u00b2 in Cuenca&#8217;s historic center, 200 m from Calder\u00f3n Park. Breakfast and private parking included.<\/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-221570","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/parcroyalhotel.com\/en\/wp-json\/wp\/v2\/pages\/221570","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/parcroyalhotel.com\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/parcroyalhotel.com\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/parcroyalhotel.com\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/parcroyalhotel.com\/en\/wp-json\/wp\/v2\/comments?post=221570"}],"version-history":[{"count":5,"href":"https:\/\/parcroyalhotel.com\/en\/wp-json\/wp\/v2\/pages\/221570\/revisions"}],"predecessor-version":[{"id":221892,"href":"https:\/\/parcroyalhotel.com\/en\/wp-json\/wp\/v2\/pages\/221570\/revisions\/221892"}],"wp:attachment":[{"href":"https:\/\/parcroyalhotel.com\/en\/wp-json\/wp\/v2\/media?parent=221570"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}