<!doctype html>
<html lang="es">

<head>
	<meta name="viewport" content="width=1300, max-width=1300">
	<meta name="google-site-verification" content="l_kBGVByEFuQBNvWwVoARudBcFDIGjXjDZ9cFhfwagg" />

	


	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv="Cache-Control" content="Public" />
<meta name="robots" content="index, follow" />



    <title>Lodge Colbún – Hotel y cabañas frente al lago en Colbún Chile</title>
    <meta name="description" content="Disfruta naturaleza, confort y piscinas privadas en Colbún. Reserva ahora.">

    <meta property="og:title" content="Lodge Colbún – Hotel y cabañas frente al lago en Colbún Chile" />
    <meta property="og:description" content="Disfruta naturaleza, confort y piscinas privadas en Colbún. Reserva ahora." />
    <meta property="og:type" content="website" />
    <meta property="og:url" content="https://www.lodgecolbun.com/" />
    <link rel="canonical" href="https://www.lodgecolbun.com/" />
    <meta property="og:image" content="https://images-new.pxsol.com/LE28_mf_VckMVFTW3AJG82Qnmi5agBeab6TE3POP-MA/rs:fill:630:430:1/q:80/plain/https%3A%2F%2Ffiles-p.pxsol.com%2F23611%2Fcompany%2Flibrary%2Fuser%2F14050632928b9ab855e98d273286871baeffb54d8ee.jpg@jpg" />
    <meta property="og:image:type" content="image/jpeg" />
    <meta property="og:image:width" content="1200" />
    <meta property="og:image:height" content="630" />
    <meta property="og:image:alt" content="Lodge Colbún – Hotel y cabañas frente al lago en Colbún Chile" />
            <meta name="keywords" content="hotel en colbun, hoteles en colbun chile, alojamiento en colbun, apartamentos en colbun, complejo turistico colbun, ¿donde hospedarse en colbun?, lodge colbun" />            <meta name="robots" content="index" />
                <meta property="" content="Lodge Colbún – Hotel y cabañas frente al lago en Colbún Chile" />
                    <meta property="" content="Disfruta naturaleza, confort y piscinas privadas en Colbún. Reserva ahora." />
                    <meta property="" content="https://www.lodgecolbun.com/" />
                    <meta property="" content="index" />
                    <meta property="" content="hotel en colbun, hoteles en colbun chile, alojamiento en colbun, apartamentos en colbun, complejo turistico colbun, ¿donde hospedarse en colbun?, lodge colbun" />
        
	<link rel="alternate" hreflang="es-AR" href="https://www.lodgecolbun.com/" />
	<link rel="alternate" hreflang="en-US" href="https://www.lodgecolbun.com/en/" />
	<link rel="alternate" hreflang="pt-BR" href="https://www.lodgecolbun.com/pt/" />
	<link rel="alternate" hreflang="x-default" href="https://www.lodgecolbun.com/" />

<link rel="icon" type="image/png" sizes="16x16" href="https://images-new.pxsol.com/XWswQonyuqvSMaBp1-T8ogNJFnlgshgHbUTYT4Q_2Hg/rs:fill:16:16:1/q:80/plain/https%3A%2F%2Ffiles-p.pxsol.com%2F23611%2Fcompany%2Flibrary%2Fuser%2F17771585750cefe4c16e5a5b2928aad7260b09ea2ee.png@png">
<link rel="icon" type="image/png" sizes="32x32" href="https://images-new.pxsol.com/yDpNMVQcWIgwTS5hFgtsXD2vkGF8WP4Jo6dUKPnVA8Y/rs:fill:32:32:1/q:80/plain/https%3A%2F%2Ffiles-p.pxsol.com%2F23611%2Fcompany%2Flibrary%2Fuser%2F17771585750cefe4c16e5a5b2928aad7260b09ea2ee.png@png">
<link rel="icon" type="image/png" sizes="48x48" href="https://images-new.pxsol.com/OJ5ldzr5N1tAxcisKVCwiA05VNaR3UEjSuy5HUZnXMg/rs:fill:48:48:1/q:80/plain/https%3A%2F%2Ffiles-p.pxsol.com%2F23611%2Fcompany%2Flibrary%2Fuser%2F17771585750cefe4c16e5a5b2928aad7260b09ea2ee.png@png">
<link rel="icon" type="image/png" sizes="96x96" href="https://images-new.pxsol.com/brtTKI_Bi0wI_werbBumse9mpcVLpqkYaICm6kgRSO4/rs:fill:96:96:1/q:80/plain/https%3A%2F%2Ffiles-p.pxsol.com%2F23611%2Fcompany%2Flibrary%2Fuser%2F17771585750cefe4c16e5a5b2928aad7260b09ea2ee.png@png">
<link rel="shortcut icon" href="https://files-p.pxsol.com/23611/company/library/user/17771585750cefe4c16e5a5b2928aad7260b09ea2ee.png" />

<link rel="apple-touch-icon" sizes="57x57" href="https://images-new.pxsol.com/OxjAa1-uIjy2NiwoE6cLG_7vN2nLn-TbQUScAkMfihE/rs:fill:57:57:1/q:80/plain/https%3A%2F%2Ffiles-p.pxsol.com%2F23611%2Fcompany%2Flibrary%2Fuser%2F17771585750cefe4c16e5a5b2928aad7260b09ea2ee.png@png">
<link rel="apple-touch-icon" sizes="72x72" href="https://images-new.pxsol.com/hE_nAX9KsTJDEYBN5nU1eFWCKDFnLq05OW5UMs_0fyI/rs:fill:72:72:1/q:80/plain/https%3A%2F%2Ffiles-p.pxsol.com%2F23611%2Fcompany%2Flibrary%2Fuser%2F17771585750cefe4c16e5a5b2928aad7260b09ea2ee.png@png">
<link rel="apple-touch-icon" sizes="76x76" href="https://images-new.pxsol.com/vVtksKdK6tMA2yNt16IbKaOHI_FddqyqveWKPQPxfo4/rs:fill:76:76:1/q:80/plain/https%3A%2F%2Ffiles-p.pxsol.com%2F23611%2Fcompany%2Flibrary%2Fuser%2F17771585750cefe4c16e5a5b2928aad7260b09ea2ee.png@png">
<link rel="apple-touch-icon" sizes="114x114" href="https://images-new.pxsol.com/G2CNLCG00ORoKbDdYlVJJKpw3gCaQU-uKburvo5tWj8/rs:fill:114:114:1/q:80/plain/https%3A%2F%2Ffiles-p.pxsol.com%2F23611%2Fcompany%2Flibrary%2Fuser%2F17771585750cefe4c16e5a5b2928aad7260b09ea2ee.png@png">
<link rel="apple-touch-icon" sizes="120x120" href="https://images-new.pxsol.com/v2dAUBCJpj2aTLNOvUyw59L-OmzJLJ-cMZIyADFtiXw/rs:fill:120:120:1/q:80/plain/https%3A%2F%2Ffiles-p.pxsol.com%2F23611%2Fcompany%2Flibrary%2Fuser%2F17771585750cefe4c16e5a5b2928aad7260b09ea2ee.png@png">
<link rel="apple-touch-icon" sizes="144x144" href="https://images-new.pxsol.com/aspbetEHrJ7-DmKefUqh_69imAxjItpBpQYUUjyTGB0/rs:fill:144:144:1/q:80/plain/https%3A%2F%2Ffiles-p.pxsol.com%2F23611%2Fcompany%2Flibrary%2Fuser%2F17771585750cefe4c16e5a5b2928aad7260b09ea2ee.png@png">
<link rel="apple-touch-icon" sizes="152x152" href="https://images-new.pxsol.com/bQRcqU5qthtOKDikYhBSsI9RhRc8kYEPC8KUnVrqK4Q/rs:fill:152:152:1/q:80/plain/https%3A%2F%2Ffiles-p.pxsol.com%2F23611%2Fcompany%2Flibrary%2Fuser%2F17771585750cefe4c16e5a5b2928aad7260b09ea2ee.png@png">
<link rel="apple-touch-icon" sizes="180x180" href="https://images-new.pxsol.com/bjg3TEBvnspKK-TLqeIGlnYVFeef-18nhEoBUK4X6Tc/rs:fill:180:180:1/q:80/plain/https%3A%2F%2Ffiles-p.pxsol.com%2F23611%2Fcompany%2Flibrary%2Fuser%2F17771585750cefe4c16e5a5b2928aad7260b09ea2ee.png@png">

<link rel="icon" sizes="192x192" href="https://images-new.pxsol.com/UfkzNkGDIh1YHM5sChftELuhwL9jOcttJBj2WVwKk3U/rs:fill:192:192:1/q:80/plain/https%3A%2F%2Ffiles-p.pxsol.com%2F23611%2Fcompany%2Flibrary%2Fuser%2F17771585750cefe4c16e5a5b2928aad7260b09ea2ee.png@png">
<link rel="icon" sizes="512x512" href="https://images-new.pxsol.com/xAh8z5viUjJWP7vbEEcZz_e-3O-8oOIebiYkkXKNyxg/rs:fill:512:512:1/q:80/plain/https%3A%2F%2Ffiles-p.pxsol.com%2F23611%2Fcompany%2Flibrary%2Fuser%2F17771585750cefe4c16e5a5b2928aad7260b09ea2ee.png@png">

   <link rel="manifest" href="/manifest.json?pos=LodgeColbun"> 

<meta name="theme-color" content="#29412b">

<meta property="og:site_name" content="Inicio - Lodge Colbún" />
<meta name="twitter:card" content="summary">
<meta name="twitter:site" content="Inicio - Lodge Colbún">
<meta name="twitter:title" content="Inicio - Lodge Colbún">
<meta name="twitter:description" content="Descubre la verdadera experiencia y déjate sorprender">
<meta name="twitter:creator" content="PXSOL">
<meta name="twitter:image" content="https://images-new.pxsol.com/LE28_mf_VckMVFTW3AJG82Qnmi5agBeab6TE3POP-MA/rs:fill:630:430:1/q:80/plain/https%3A%2F%2Ffiles-p.pxsol.com%2F23611%2Fcompany%2Flibrary%2Fuser%2F14050632928b9ab855e98d273286871baeffb54d8ee.jpg@jpg">



<style>
			.neo_bgcolor_primary, .MuiButton-containedSecondary {
background-color: #29412b !important;
}

.MuiButton-containedSecondary.MuiButton-contained.Mui-disabled {
    box-shadow: none !important;
    background-color: rgba(0, 0, 0, 0.12) !important;
}

.neo_color_primary {
color: #29412b;
}

.cta_webcheckin_px:not(.btn_sesion) {
background-color: #29412b !important;
color: white !important;
border: none !important;
font-weight: bold;
right: 0;
display: flex;
align-items: center;
font-size: 13px !important;
padding: 7px 8px !important;
line-height: 1.2;
text-align: left;
}

.cta_webcheckin_px.btn_sesion {
border: none !important;
font-weight: bold;
right: 0;
display: flex;
align-items: center;
font-size: 13px !important;
padding: 7px 8px !important;
line-height: 1.2;
text-align: left;
}

.cta_webcheckin_px * {
color: inherit !important;
}

.cta_webcheckin_px.btn_sesion > i {
    color: #29412b !important;
}

.cta_webcheckin_px {
background-color: #546756;
}
.cta_webcheckin_px i {
margin-right: 10px;
font-size: 15px;
}

.neo_bgcolor_primary:hover, .MuiButton-containedSecondary:hover {
background-color: #546756;
}
.px-sm-inputcontainer:hover label {
color: #29412b !important;
}
div.ui-datepicker#ui-datepicker-div .ui-state-active, div.ui-datepicker#ui-datepicker-div .ui-widget-content .ui-state-active, div.ui-datepicker#ui-datepicker-div .ui-widget-header .ui-state-active, div.ui-datepicker#ui-datepicker-div td:not(.ui-datepicker-today) .ui-state-highlight, div.ui-datepicker#ui-datepicker-div .ui-widget-content .ui-state-highlight, div.ui-datepicker#ui-datepicker-div .ui-widget-header .ui-state-highlight {
background-color: #29412b !important;
}

.px-mk-iconchangesearch {
color: #29412b !important;
}

.px-mk-locationdropdown>*:hover .px-mk-locationimg {
fill: #29412b !important;
}

.neo_mobile_supratop .neo_supratop_selector i {
color: #29412b !important;
}

.standard_cta {
padding: 10px 15px;
box-sizing: border-box;
border-radius: 5px;
display: flex;
justify-content: center;
text-align: center;
align-items: center;
background: #29412b !important;
color: #FFFFFF;
transition: .2s ease-out;
color: white;
text-decoration: none;
font-size: 18px;
border: none;
transition: .25s ease-out;
cursor: pointer;
}

.standard_cta:hover {
background-color: #6a7a6b;
}
.standard_cta:disabled {
opacity: .5;
cursor: not-allowed;
}

.neo_cta_naked {
font-weight: bold;
text-decoration: none;
color: #29412b;
display: inline-flex;
background-color: transparent;
border: none;
cursor: pointer;
transition: .2s ease-out;
}

.neo_cta_naked.gray {
color: darkgray;
}

.neo_cta_naked:hover {
color: #1d2e1f;
}

.neo_cta_standard {
border: none;
border-radius: 10px;
padding: 12px 20px;
font-size: 18px;
display: flex;
align-items: center;
justify-content: space-between;
font-weight: bold;
cursor: pointer;
transition: .25s ease-out;
box-sizing: border-box;
text-decoration: none;
}

.neo_cta_standard.smaller {
font-size: 16px;
padding: 7px 13px;
}

.neo_cta_standard.shadow {
box-shadow: 0px -1px 15px rgba(0,0,0,.3);
}

.neo_cta_standard.lowpadding {
padding: 12px;
}
.neo_cta_standard.lowpadding > i {
margin: 0;
}

.neo_cta_standard:disabled {
opacity: .5;
cursor: not-allowed;
}

.neo_cta_standard.primary {
background: #29412b;
color: #FFFFFF;
}
.neo_cta_standard.white_cta {
background: white;
color: black;
}
.neo_cta_standard.primary:hover {
background-color: #1d2e1f;
color: #FFFFFF;
}
.neo_cta_standard.primary:active {
background-color: #152116;
color: #FFFFFF;
}

.neo_cta_standard > i {
margin-left: 10px;
}

.neo_cta_standard:disabled, .neo_cta_standard[disabled] {
cursor: not-allowed;
filter: saturate(.3);
opacity: 0.8;
}

.neo_cta_standard.v_disabled {
background-color: #1e1e1e;
}

.neo_cta_standard .loading-text, .neo_cta_standard .success-text {
display:none;
}

.neo_cta_standard.v_loading {
pointer-events: none;
}
.neo_cta_standard.v_loading {
position: relative;
}
.neo_cta_standard .loading-text {
display:none;
}
.neo_cta_standard.v_loading > *:not(i,.loading-text) {
display:none;
}
.neo_cta_standard.v_loading > i {
position: relative;
height: 20px;
width: 20px;
}

.neo_cta_standard.v_loading > i:before {
content: none;
}

.neo_cta_standard.v_loading > i::after {
content: "";
position: absolute;
width: 100%;
height: 100%;
box-sizing: border-box;
top: 0;
left: 0;
right: 0;
bottom: 0;
margin: auto;
border: 0.25rem solid transparent;
border-top-color: #ffffff;
border-right-color: #ffffff;
border-radius: 50%;
animation: spinner .6s linear infinite;
}
.neo_cta_standard.v_loading .loading-text {
display:block;
}

.neo_cta_standard.v_success {
background-color: #00a651;
}
.neo_cta_standard.v_success > *:not(.success-text) {
display:none;
}
.neo_cta_standard.v_success .success-text {
display:block;
}
@keyframes button-loading-spinner {
from {
transform: rotate(0turn);
}

to {
transform: rotate(1turn);
}
}

@keyframes spinner {
to {
transform: rotate(360deg);
}
}

#innerLoader, .innerLoader {
height: 100%;
display: flex;
justify-content: center;
align-items: center;
min-height: 200px;
}
.neo_spin_loader {
height: 60px;
width: 60px;
margin-bottom: 20px;
}
.neo_spin_loader:before {
content: "";
box-sizing: border-box;
position: absolute;
width: 60px;
height: 60px;
border-radius: 50%;
border: 3px solid #ccc;
border-top-color: #29412b;
animation: spinner 1s linear infinite;
}
.neo_bgcolor_primary {
background-color: #29412b;
}

.neo_button_partyselector {
border: 1px solid #29412b;
height: 40px;
width: 40px;
display: flex;
justify-content: center;
align-items: center;
text-align: center;
background: transparent;
color: #29412b;
margin: 10px 0;
transition: .2s ease-out;
border-radius: 10px;
font-size: 18px;
cursor: pointer;

}

.neo_button_partyselector:hover {
background-color: #aab3ab;
}

.neo_button_partyselector:focus {
box-shadow: 0 0 0 3px #d5d9d5;
}

.neo_button_partyselector:active {
color: #FFFFFF;
background: #29412b;
}

.neo_partyselector_quantity {
padding: 15px 10px;
font-size: 18px;
}

.ChildrensAgeSelect {
width: 100%;
box-sizing: border-box;
padding: 10px;
margin-bottom: 10px;
border-radius: 10px;
border-color: #ccc;
}

.PartyTypeSimulator .px-mk-inputicon svg {
height: 1.2em;
width: 1.2em;
fill: #aaa;
}
.neo_bgcolor_primary_text {
color: #FFFFFF;
}

.neo_pxuser_mainbtn {
height: 3.5rem;
max-height: 100%;
overflow: hidden;
transition: .2s ease-out;
border-radius: .5rem;
cursor: pointer;
padding: 0 0.5rem;
background-color: white;
color: black !important;
}

.neo_pxuser_mainbtn * {
color: black !important;
}

.neo_pxuser_mainbtn:hover {
background-color: #f2f2f2;
}

.neo_pxuser_avatar_container {
height: 100%;
width: 3rem;
display: flex;
justify-content: center;
align-items: center;
}

.neo_pxuser_avatar_container img {
height: 80%;
border-radius: 2rem;
}

.neo_pxuser_text_block {
padding: .5rem .5rem .5rem .5rem;
box-sizing: border-box;
height: 100%;
justify-content: center;
line-height: 1.5;
}

.neo_pxuser_icon_dd {
padding: .5rem;
box-sizing: border-box;
}

.neo_pxuser_dropdown {
position: absolute;
right: 0;
top: 100% !important;
background: white;
border-radius: .25rem;
min-width: 110%;
box-shadow: 0 3px 6px rgba(0,0,0,.5);
text-align: left;
display: none !important;
}

.neo_pxuser_dropdown * {
color: black !important;
}

.neo_pxuser_dropdown.open {
display: flex !important;
top: 100% !important;
}

.neo_pxuser_dd_button {
padding: 1rem;
transition: .2s ease-out;
cursor: pointer;
text-decoration: none;
color: black;
}

.neo_pxuser_dd_button > .mdi {
font-size: 1.2rem;
line-height: 1;
vertical-align: middle;
display: inline-flex;
width: 2rem;
justify-content: center;
align-items: center;
height: 2rem;
}

.neo_pxuser_dd_button > span {
padding: .5rem;
display: inline-flex;
flex-grow: 1;
width: calc(100% - 3rem);
}

.neo_pxuser_dd_button:hover {
background-color: #f2f2f2;
border-radius: .25rem;
}

.neo_pxuser_email {
    max-width: 8rem;
    overflow: hidden;
    text-overflow: ellipsis;
}

@media only screen and (max-width: 468px) {

    .neo_pxuser_mainbtn {
        flex-flow: row-reverse;
        flex-grow: 1;
    }
    
    .neo_pxuser_icon_dd {
        display: none;
    }
    
    .neo_pxuser_text_block {
        text-align: right;
        text-transform: none;
        letter-spacing: initial;
        color: black;
        line-height: 1;
        max-width: 50%;
    }
    
    .neo_pxuser_email {
        display: none;
    }
    
    .neo_pxuser_container {
        text-transform: initial;
        letter-spacing: initial;
        font-weight: normal;
        font-size: .8rem;
    }
    
    .neo_pxuser_name {
        font-weight: bold;
        text-align: left;
        white-space: nowrap;
        overflow: hidden;
        text-overflow: ellipsis;
        display: flex;
        align-items: center;
    }
    
    .neo_pxuser_name strong {
        display: inline-block;
        max-width: 150px;
        overflow: hidden;
        white-space: nowrap;
        text-overflow: ellipsis;
        vertical-align: middle;
        line-height: 1.2;
    }
    
    .neo_pxuser_dd_button {
        padding: .5rem;
    }
    

}</style>



<script type="application/ld+json" defer async>
{
   "url" : "https://www.lodgecolbun.com/",
   "telephone": "+56 9 8475 8096",
   "description" : "Descubre la verdadera experiencia y déjate sorprender",
   "name" : "Inicio - Lodge Colbún",
         "logo" : "https://images-new.pxsol.com/xAh8z5viUjJWP7vbEEcZz_e-3O-8oOIebiYkkXKNyxg/rs:fill:512:512:1/q:80/plain/https%3A%2F%2Ffiles-p.pxsol.com%2F23611%2Fcompany%2Flibrary%2Fuser%2F17771585750cefe4c16e5a5b2928aad7260b09ea2ee.png@png",
      "image" : "https://images-new.pxsol.com/LE28_mf_VckMVFTW3AJG82Qnmi5agBeab6TE3POP-MA/rs:fill:630:430:1/q:80/plain/https%3A%2F%2Ffiles-p.pxsol.com%2F23611%2Fcompany%2Flibrary%2Fuser%2F14050632928b9ab855e98d273286871baeffb54d8ee.jpg@jpg",
      "aggregateRating" : {
      "reviewCount" : 52,
      "@type" : "AggregateRating",
      "bestRating" : 10,
      "ratingValue" : 9.3   },
      "@type" : "Hotel",
   "address" : {
      "postalCode" : "1000",
      "streetAddress" : "Camino Colbún Alto Km 10,5. Colbún, Linares, 1000 , Maule, Chile",
      "addressCountry" : "Chile",
      "addressRegion" : "Maule",
      "addressLocality" : "Camino Colbún Alto Km 10,5. Colbún, Linares",
      "@type" : "PostalAddress"
   },
   "geo": {
    "@type": "GeoCoordinates",
    "latitude": -35.75,
    "longitude": -71.216667   },
   "@context" : "http://schema.org"
   }
</script>

<!-- Organization Schema for Brand/Logo SEO -->
<script type="application/ld+json">
{
   "@context": "https://schema.org",
   "@type": "Organization",
   "name": "Inicio - Lodge Colbún",
   "url": "https://www.lodgecolbun.com/",
   "logo": "https://images-new.pxsol.com/xAh8z5viUjJWP7vbEEcZz_e-3O-8oOIebiYkkXKNyxg/rs:fill:512:512:1/q:80/plain/https%3A%2F%2Ffiles-p.pxsol.com%2F23611%2Fcompany%2Flibrary%2Fuser%2F17771585750cefe4c16e5a5b2928aad7260b09ea2ee.png@png",
   "image": "https://images-new.pxsol.com/xAh8z5viUjJWP7vbEEcZz_e-3O-8oOIebiYkkXKNyxg/rs:fill:512:512:1/q:80/plain/https%3A%2F%2Ffiles-p.pxsol.com%2F23611%2Fcompany%2Flibrary%2Fuser%2F17771585750cefe4c16e5a5b2928aad7260b09ea2ee.png@png"
}
</script>



				<link rel="icon" sizes="192x192" href="https://images-new.pxsol.com/UfkzNkGDIh1YHM5sChftELuhwL9jOcttJBj2WVwKk3U/rs:fill:192:192:1/q:80/plain/https%3A%2F%2Ffiles-p.pxsol.com%2F23611%2Fcompany%2Flibrary%2Fuser%2F17771585750cefe4c16e5a5b2928aad7260b09ea2ee.png@png">
			<link rel="icon" type="image/png" href="https://files-p.pxsol.com/23611/company/library/user/17771585750cefe4c16e5a5b2928aad7260b09ea2ee.png" />
		<!-- CustomHTMLHead (SiteJson) --><link href="https://fonts.googleapis.com/css2?family=Lato:ital,wght@0,100;0,300;0,400;0,700;0,900;1,100;1,300;1,400;1,700;1,900&display=swap" rel="stylesheet">	<!-- Pos->Type: hotel.css -->

<!-- Google tag (gtag.js) GA4 PXSOL TODOS LOS HOTELES -->
<script>
  window.dataLayer = window.dataLayer || [];
  function gtag(){dataLayer.push(arguments);}
  gtag('js', new Date());
</script>
<script async src="https://www.googletagmanager.com/gtag/js?id=G-SYSQR6EL6E"></script>
<script>
  let globalSessionGA4Config = {
    'pos': 'LodgeColbun',
    'product_id': '24647',
    'product_name': 'Lodge Colbún',
    'product_country': 'Chile',
    'product_state': 'Maule',
    'product_plaza': '',
    'product_score': '92.97'
  };

      gtag('config', 'G-JYP0RTPRRK', globalSessionGA4Config);
  
      gtag('config', 'G-SYSQR6EL6E', globalSessionGA4Config);
  
  
  // Mirror page_view into dataLayer for GTM debug (guard to avoid duplicates)
  if (!window.__dl_page_view_pushed) {
    window.dataLayer.push({ event: 'page_view' });
    window.__dl_page_view_pushed = true;
  }

  
</script>

<!-- Global site tag (gtag.js)  -->
<script async src="https://www.googletagmanager.com/gtag/js?id=UA-34517567-10"></script>
<script>
  window.dataLayer = window.dataLayer || [];

  function gtag() {
    dataLayer.push(arguments);
    try {
      var args = Array.prototype.slice.call(arguments);
      if (args[0] === 'event') {
        var dlEventName = args[1];
        var dlParams = (args.length > 2 && typeof args[2] === 'object') ? args[2] : {};
        var dlObject = {};
        for (var key in dlParams) {
          if (Object.prototype.hasOwnProperty.call(dlParams, key)) {
            dlObject[key] = dlParams[key];
          }
        }
        dlObject.event = dlEventName;
        window.dataLayer.push(dlObject);
        
        // Intercept add_to_cart and fire form_success after it
        if (dlEventName === 'add_to_cart') {
          setTimeout(function() {
            console.log('%c[pxTrack] 🚀 FIRING form_success for add_to_cart', 'color: #4CAF50; font-weight: bold;');
            window.pxTrack('form_success', {
              form_id: 'add_to_cart',
              lead_id: null,
              transaction_id: null
            });
          }, 100);
        }
      }
    } catch (e) {}
  }
  gtag('js', new Date());

      gtag('config', 'G-JYP0RTPRRK');
  
      gtag('config', 'UA-34517567-10');
  
  
  </script>

<!-- Pxsol Data Layer utilities and event wiring -->
<script>
  (function() {
    // DEBUG: Confirm script is loaded and updated
    console.log('%c[pxTrack] Script loaded - Version: 2025-01-15-no-inventory-v3-rate-limit-fix', 'color: #4CAF50; font-weight: bold; font-size: 12px;');
    
    // Define manual scan function globally FIRST (before any other code that might fail)
    window.__px_manual_no_inventory_scan = function() {
      console.log('[pxTrack] Manual scan triggered');
      if (window.__px_no_inventory_scan_func) {
        return window.__px_no_inventory_scan_func();
      } else {
        console.warn('[pxTrack] Watcher not initialized yet. Performing basic scan...');
        // Perform basic scan even if watcher not initialized
        try {
          var hasNoInventory = false;
          var detectionMethod = '';
          
          // Check DOM elements
          var noInventoryContainer = document.querySelector('#no-inventory-container');
          var noInventoryElement = document.querySelector('#no-inventory');
          if (noInventoryContainer || noInventoryElement) {
            hasNoInventory = true;
            detectionMethod = 'DOM element (ID)';
            console.log('[pxTrack] ✅ Found #no-inventory-container or #no-inventory');
          }
          
          // Check px_jsonQuery
          if (!hasNoInventory && typeof window.px_jsonQuery !== 'undefined' && window.px_jsonQuery) {
            var jsonQuery = window.px_jsonQuery;
            if (jsonQuery.ProductList && Array.isArray(jsonQuery.ProductList) && jsonQuery.ProductList.length > 0) {
              var allZero = true;
              for (var i = 0; i < jsonQuery.ProductList.length; i++) {
                var product = jsonQuery.ProductList[i];
                var productAvail = product.Availability || 0;
                if (product.SkuList && Array.isArray(product.SkuList) && product.SkuList.length > 0) {
                  for (var j = 0; j < product.SkuList.length; j++) {
                    if (product.SkuList[j].Availability && product.SkuList[j].Availability > 0) {
                      allZero = false;
                      break;
                    }
                  }
                } else if (productAvail > 0) {
                  allZero = false;
                }
                if (!allZero) break;
              }
              if (allZero) {
                hasNoInventory = true;
                detectionMethod = 'Json_Query';
                console.log('[pxTrack] ✅ All products have Availability === 0');
              }
            }
          }
          
          if (hasNoInventory && !window.__px_no_inventory_pushed) {
            console.log('[pxTrack] 🚀 FIRING no_inventory event manually - Method:', detectionMethod);
            window.__px_no_inventory_pushed = true;
            var params = {};
            try {
              // Try to get search params
              var startRaw = (document.querySelector('#fechaingreso') || {}).value || '';
              var endRaw = (document.querySelector('#fechaegreso') || {}).value || '';
              params.start_date = startRaw;
              params.end_date = endRaw;
              params.no_inventory = true;
            } catch(e) {}
            window.pxTrack('no_inventory', params);
            
            // Fire form_success for search form after no_inventory
            setTimeout(function() {
              console.log('%c[pxTrack] 🚀 FIRING form_success for search form (after manual no_inventory)', 'color: #4CAF50; font-weight: bold;');
              window.pxTrack('form_success', {
                form_id: 'pxmk_searchform',
                lead_id: null,
                transaction_id: null
              });
            }, 100);
            
            return { fired: true, method: detectionMethod, params: params };
          } else if (hasNoInventory) {
            return { already_fired: true, method: detectionMethod };
          } else {
            return { no_inventory_detected: false, px_jsonQuery_exists: typeof window.px_jsonQuery !== 'undefined' };
          }
        } catch(e) {
          console.error('[pxTrack] Error in manual scan:', e);
          return { error: 'Scan failed', message: e.message };
        }
      }
    };
    
    window.dataLayer = window.dataLayer || [];

    // Helper that tracks to both GA4 and dataLayer
    if (!window.pxTrack) {
      window.pxTrack = function(eventName, params) {
        params = params || {};
        try { gtag('event', eventName, params); } catch(e) {}
        try {
          var dl = {};
          for (var k in params) if (Object.prototype.hasOwnProperty.call(params, k)) dl[k] = params[k];
          dl.event = eventName;
          window.dataLayer.push(dl);
        } catch(e) {}
      };
    }

    // Privacy-safe booleans for PII presence
    function bool(val) { return !!val; }

    // Read URL param
    function getUrlParam(name) {
      try {
        var params = new URLSearchParams(location.search);
        return params.get(name) || '';
      } catch (e) { return ''; }
    }

    // Normalize common date formats to YYYY-MM-DD (best-effort)
    function normalizeDate(value) {
      try {
        if (!value) return '';
        var v = String(value).trim();
        // dd/mm/yyyy -> yyyy-mm-dd
        if (/^\d{2}\/\d{2}\/\d{4}$/.test(v)) {
          var p = v.split('/');
          return [p[2], p[1].padStart(2, '0'), p[0].padStart(2, '0')].join('-');
        }
        // Already ISO
        if (/^\d{4}-\d{2}-\d{2}$/.test(v)) return v;
        return v;
      } catch (e) {
        return String(value || '');
      }
    }

    // Session id generator
    function getPxSessionId() {
      try {
        var key = 'px_session_id';
        var match = document.cookie.match(new RegExp('(^| )' + key + '=([^;]+)'));
        if (match) return match[2];
        var id = (crypto && crypto.randomUUID) ? crypto.randomUUID() : String(Date.now()) + '_' + Math.floor(Math.random()*1e9);
        document.cookie = key + '=' + id + ';path=/;max-age=' + (60*60*24*365).toString();
        return id;
      } catch(e) {
        return 'sid_' + String(Date.now());
      }
    }

    // Expose chat helpers (to be called from chat widget)
    window.pxChatOpen = function(payload) { window.pxTrack('chat_open', payload || {}); };
    window.pxChatMessage = function(payload) { window.pxTrack('chat_message', payload || {}); };
    window.pxChatClose = function(payload) { window.pxTrack('chat_close', payload || {}); };
    window.pxFormSuccess = function(payload) { window.pxTrack('form_success', payload || {}); };
    window.pxNoInventory = function(payload) { window.pxTrack('no_inventory', payload || { no_inventory: true }); };

    // Context payload from PHP (best-effort)
    var pxContext = {
      pos: 'LodgeColbun',
      product_id: '24647',
      product_name: 'Lodge Colbún',
      product_country: 'Chile',
      product_state: 'Maule',
      product_plaza: '',
      search_id: '',
      start_date: '',
      end_date: '',
      transaction_id: '',
      value: null,
      currency: '',
      page_url: location.href,
      session_id: getPxSessionId()
    };

    // --- External engine redirect auto event when engine is disabled ---
    
    
    // Adults/children/rooms best-effort totals from PHP when available
        pxContext.adults = 0;
    pxContext.children = 0;
    pxContext.rooms = 0;

    // Push context for GTM usage
    try { window.dataLayer.push(Object.assign({ event: 'px_context' }, pxContext)); } catch(e) {}

    // Boot event para validar integración en DebugView/GTM
    if (!window.__px_boot_pushed) {
      window.__px_boot_pushed = true;
      window.pxTrack('px_layer_ready', {
        session_id: pxContext.session_id,
        page_url: pxContext.page_url,
        pos: pxContext.pos || '',
        product_id: pxContext.product_id || '',
        search_id: pxContext.search_id || '',
        ts: Date.now()
      });
    }

    // ----- Search events wiring (V3/V8) -----
    function getSearchParamsFromDOM() {
      var startRaw = (document.querySelector('.neo_marketplace_buscador_v3 #fechaingreso') ||
                      document.querySelector('#fechaingreso') ||
                      document.querySelector('[name="Start"]') ||
                      document.querySelector('#Start') || { }).value || pxContext.start_date || '';
      var endRaw   = (document.querySelector('.neo_marketplace_buscador_v3 #fechaegreso') ||
                      document.querySelector('#fechaegreso') ||
                      document.querySelector('[name="End"]') ||
                      document.querySelector('#End') || { }).value || pxContext.end_date || '';
      var sidRaw   = (document.querySelector('#SearchID') || { }).value || getUrlParam('SearchID') || pxContext.search_id || '';
      var params = {
        start_date: normalizeDate(startRaw) || '',
        end_date: normalizeDate(endRaw) || '',
        pos: pxContext.pos || '',
        hotel_id: pxContext.product_id || '',
        page_url: location.href,
        session_id: pxContext.session_id
      };
      if (sidRaw) params.search_id = sidRaw;
      // Adults/children from UI if present
      try {
        var adultsEl = document.querySelector('.neo_partyselector_quantity[party-type="adults"]');
        var childrenEl = document.querySelector('.neo_partyselector_quantity[party-type="children"]');
        if (adultsEl) params.adults = Number(adultsEl.getAttribute('val') || adultsEl.textContent) || pxContext.adults || 0;
        if (childrenEl) params.children = Number(childrenEl.getAttribute('val') || childrenEl.textContent) || pxContext.children || 0;
        // Fallback from hidden GroupsForm if exists
        if ((!params.adults || !params.children) && document.querySelector('#GroupsForm')) {
          var gf = document.querySelector('#GroupsForm').value || '';
          var rooms = 0, adults = 0, children = 0;
          if (gf) {
            gf.split(';').forEach(function(groupStr){
              if (!groupStr) return;
              rooms += 1;
              var parts = groupStr.split(':');
              if (parts.length < 2) return;
              var trio = parts[1].split(',');
              var a = parseInt(trio[0] || '0', 10);
              adults += isNaN(a) ? 0 : a;
              var childrenAges = (trio[1] || '0');
              if (childrenAges && childrenAges !== '0') {
                children += childrenAges.split('.').filter(Boolean).length;
              }
            });
            if (!params.adults) params.adults = adults;
            if (!params.children) params.children = children;
            if (!params.rooms) params.rooms = rooms;
          }
        }
      } catch(e) {}
      return params;
    }

    function wireSearchEvents() {
      var searchForm = document.querySelector('.neo_marketplace_buscador_v3 #pxmk_searchform') || document.querySelector('#search_form');
      var searchContainer = document.querySelector('.neo_marketplace_buscador_v3') || document.querySelector('.px-mk-buscador-container') || document.querySelector('#search_form') || document.querySelector('.PartyTypeSimulatorContainer');
      var lastModifyMs = 0;
      // Snapshot of last known values to compute change flags
      var lastSnapshot = (function(){
        var p = getSearchParamsFromDOM();
        return {
          start_date: p.start_date || '',
          end_date: p.end_date || '',
          rooms: (p.rooms*1) || 0,
          adults: (p.adults*1) || 0,
          children: (p.children*1) || 0
        };
      })();
      // Debug: signal that search watchers are alive
      try {
        window.dataLayer.push({
          event: 'px_search_watchers_ready',
          ts: Date.now()
        });
      } catch(e) {}
      function getModifySnapshot() {
        var p = getSearchParamsFromDOM();
        return {
          start_date: p.start_date || '',
          end_date: p.end_date || '',
          rooms: (p.rooms*1) || 0,
          adults: (p.adults*1) || 0,
          children: (p.children*1) || 0
        };
      }
      function pushModifyFlagsIfChanged(prevSnap, nextSnap) {
        try {
          var changes = {};
          if (nextSnap.start_date !== prevSnap.start_date) changes.start_date = true;
          if (nextSnap.end_date !== prevSnap.end_date) changes.end_date = true;
          if ((nextSnap.rooms*1) !== (prevSnap.rooms*1)) changes.rooms = true;
          if ((nextSnap.adults*1) !== (prevSnap.adults*1)) changes.adults = true;
          if ((nextSnap.children*1) !== (prevSnap.children*1)) changes.children = true;
          if (Object.keys(changes).length) return true;
        } catch (e) {}
        return false;
      }
      function throttledModifyFire() {
        var now = Date.now();
        if (now - lastModifyMs < 1000) return; // throttle to 1s
        lastModifyMs = now;
        var current = getModifySnapshot();
        // Push GA/DataLayer event with current values
        window.pxTrack('search_modify', getSearchParamsFromDOM());
        // Also push a probe event with the current values for GTM debug
        try {
          window.dataLayer.push({
            event: 'px_search_modify_probe',
            search_modify: current,
            ts: Date.now()
          });
        } catch(e) {}
        // Update snapshot only if something changed
        if (pushModifyFlagsIfChanged(lastSnapshot, current)) {
          lastSnapshot = current;
        }
      }
      if (searchContainer) {
        // fire search_open once
        if (!window.__px_search_open_pushed) {
          window.__px_search_open_pushed = true;
          window.pxTrack('search_open', { page_url: location.href });
        }
        // changes => search_modify
        ['change', 'input'].forEach(function(ev){
          searchContainer.addEventListener(ev, function(e) {
            var target = e.target;
            var trackedSelectors = [
              '#fechaingreso',
              '#fechaegreso',
              '.AdultsSelect',
              '.ChildrensSelect',
              '.neo_partyselector_quantity',
              '.ChildrensAgeSelect'
            ];
            if (trackedSelectors.some(function(sel){ return target.matches && target.matches(sel); })) {
              throttledModifyFire();
            }
          }, true);
        });
        // Explicitly catch clicks on plus/minus party controls
        searchContainer.addEventListener('click', function(e){
          var target = e.target;
          if (target && target.classList && target.classList.contains('neo_button_partyselector')) {
            throttledModifyFire();
          }
        }, true);
      }
      // Global listeners as fallback (capture events even if DOM is re-rendered)
      try {
        if (!window.__px_global_search_listeners) {
          window.__px_global_search_listeners = true;
          var selectorList = ['#fechaingreso','#fechaegreso','.AdultsSelect','.ChildrensSelect','.neo_partyselector_quantity','.ChildrensAgeSelect'];
          function matchesTracked(el) {
            try { return selectorList.some(function(sel){ return el && el.matches && el.matches(sel); }); } catch(e) { return false; }
          }
          document.addEventListener('change', function(e){ if (matchesTracked(e.target)) throttledModifyFire(); }, true);
          document.addEventListener('input', function(e){ if (matchesTracked(e.target)) throttledModifyFire(); }, true);
          document.addEventListener('click', function(e){
            var t = e.target;
            if (t && t.classList && t.classList.contains('neo_button_partyselector')) throttledModifyFire();
          }, true);
        }
      } catch(e) {}
      // Robust watchers for datepicker-driven value changes and hidden GroupsForm updates (always-on)
      try {
        if (!window.__px_modify_watchers_started) {
          window.__px_modify_watchers_started = true;
          var lastIn = (document.querySelector('#fechaingreso') || {}).value || '';
          var lastOut = (document.querySelector('#fechaegreso') || {}).value || '';
          var lastGF = (document.querySelector('#GroupsForm') || {}).value || '';
          setInterval(function(){
            try {
              var inEl = document.querySelector('#fechaingreso');
              var outEl = document.querySelector('#fechaegreso');
              var gfEl = document.querySelector('#GroupsForm');
              var curIn = inEl ? inEl.value : '';
              var curOut = outEl ? outEl.value : '';
              var curGF = gfEl ? gfEl.value : '';
              if (curIn !== lastIn || curOut !== lastOut || curGF !== lastGF) {
                lastIn = curIn; lastOut = curOut; lastGF = curGF;
                throttledModifyFire();
              }
            } catch(e) {}
          }, 400);
        }
      } catch(e) {}
      if (searchForm) {
        searchForm.addEventListener('submit', function() {
          window.pxTrack('search_submit', getSearchParamsFromDOM());
        }, true);
        var searchBtn = document.querySelector('.neo_marketplace_buscador_v3 #PxMkAcion_Search') || document.querySelector('#Acion_Search');
        if (searchBtn) {
          searchBtn.addEventListener('click', function() {
            window.pxTrack('search_submit', getSearchParamsFromDOM());
          }, true);
        }
      }
    }

    // ----- Form events wiring (generic) -----
    function wireFormEvents() {
      var forms = Array.prototype.slice.call(document.querySelectorAll('form:not([data-px-ignore="true"])'));
      var observed = new WeakSet();

      // form_view when enters viewport first time
      if ('IntersectionObserver' in window) {
        var io = new IntersectionObserver(function(entries) {
          entries.forEach(function(entry) {
            if (entry.isIntersecting && !observed.has(entry.target)) {
              observed.add(entry.target);
              window.pxTrack('form_view', {
                form_id: entry.target.id || entry.target.getAttribute('name') || 'form',
                page_url: location.href
              });
            }
          });
        }, { threshold: 0.2 });
        forms.forEach(function(f){ io.observe(f); });
      } else {
        forms.forEach(function(f){
          window.pxTrack('form_view', { form_id: f.id || f.getAttribute('name') || 'form', page_url: location.href });
        });
      }

      // form_interaction on field focus
      document.addEventListener('focusin', function(e) {
        var field = e.target;
        var form = field.form;
        if (!form) return;
        var fieldName = field.name || field.id || field.type || 'field';
        try {
          if (field.classList && field.classList.contains('neo_partyselector_quantity')) {
            var pt = field.getAttribute('party-type');
            if (pt) fieldName = 'party_' + pt;
          }
        } catch(e) {}
        window.pxTrack('form_interaction', {
          form_id: form.id || form.getAttribute('name') || 'form',
          field_name: fieldName
        });
      });

      // form_submit with privacy-safe flags
      forms.forEach(function(form) {
        form.addEventListener('submit', function() {
          var email = form.querySelector('input[type="email"]');
          var phone = form.querySelector('input[type="tel"], input[name*="phone"], input[name*="telefono"]');
          var required = Array.prototype.slice.call(form.querySelectorAll('[required]'));
          var incomplete = required.some(function(el){ return !el.value; });
          window.pxTrack('form_submit', {
            form_id: form.id || form.getAttribute('name') || 'form',
            page_url: location.href,
            fields_status: incomplete ? 'incompletos' : 'completos',
            email_provided: bool(email && email.value),
            phone_provided: bool(phone && phone.value),
            session_id: pxContext.session_id
          });
        }, true);
      });
    }
    // Extra: map clicks/changes on party selector controls to meaningful field_name
    (function wirePartySelectorInteractions(){
      try {
        var lastMs = 0;
        function pushPartyInteraction(partyType) {
          var now = Date.now();
          if (now - lastMs < 400) return;
          lastMs = now;
          var form = document.querySelector('#search_form') || document.querySelector('.neo_marketplace_buscador_v3 #pxmk_searchform');
          window.pxTrack('form_interaction', {
            form_id: form ? (form.id || form.getAttribute('name') || 'form') : 'form',
            field_name: partyType ? ('party_' + partyType) : 'party_selector'
          });
        }
        document.addEventListener('click', function(e){
          var t = e.target;
          if (t && t.classList && t.classList.contains('neo_button_partyselector')) {
            pushPartyInteraction(t.getAttribute('party-type') || '');
          }
        }, true);
        document.addEventListener('change', function(e){
          var t = e.target;
          if (t && t.classList && t.classList.contains('neo_partyselector_quantity')) {
            pushPartyInteraction(t.getAttribute('party-type') || '');
          }
        }, true);
        document.addEventListener('input', function(e){
          var t = e.target;
          if (t && t.classList && t.classList.contains('neo_partyselector_quantity')) {
            pushPartyInteraction(t.getAttribute('party-type') || '');
          }
        }, true);
      } catch(e) {}
    })();

    // Fire specific date interactions (optional)
    function wireDatePickers() {
      var inEl = document.querySelector('.neo_marketplace_buscador_v3 #fechaingreso');
      var outEl = document.querySelector('.neo_marketplace_buscador_v3 #fechaegreso');
      if (inEl) inEl.addEventListener('change', function(){ window.pxTrack('start_search', { start_search: inEl.value || '', page_url: location.href }); });
      if (outEl) outEl.addEventListener('change', function(){ window.pxTrack('egreso_search', { egreso_search: outEl.value || '', page_url: location.href }); });
    }

    // Enrich context from hidden inputs present in LP/consultas templates
    function enhanceContextFromHiddenInputs() {
      var startRaw = (document.querySelector('#Start') ||
                      document.querySelector('#fechaingreso') ||
                      document.querySelector('[name="Start"]') || { }).value || '';
      var endRaw   = (document.querySelector('#End') ||
                      document.querySelector('#fechaegreso') ||
                      document.querySelector('[name="End"]') || { }).value || '';
      var start = normalizeDate(startRaw);
      var end = normalizeDate(endRaw);
      var sid = (document.querySelector('#SearchID') || {}).value || '';
      var gf = (document.querySelector('#GroupsForm') || {}).value || '';
      var rooms = 0, adults = 0, children = 0;
      if (gf) {
        gf.split(';').forEach(function(groupStr){
          if (!groupStr) return;
          rooms += 1;
          var parts = groupStr.split(':');
          if (parts.length < 2) return;
          var trio = parts[1].split(',');
          var a = parseInt(trio[0] || '0', 10);
          adults += isNaN(a) ? 0 : a;
          var childrenAges = (trio[1] || '0');
          if (childrenAges && childrenAges !== '0') {
            children += childrenAges.split('.').filter(Boolean).length;
          }
        });
      }
      var updated = {};
      if (start && start !== pxContext.start_date) { pxContext.start_date = start; updated.start_date = start; }
      if (end && end !== pxContext.end_date) { pxContext.end_date = end; updated.end_date = end; }
      if (sid && sid !== pxContext.search_id) { pxContext.search_id = sid; updated.search_id = sid; }
      if (adults && adults !== pxContext.adults) { pxContext.adults = adults; updated.adults = adults; }
      if (children && children !== pxContext.children) { pxContext.children = children; updated.children = children; }
      if (rooms && rooms !== pxContext.rooms) { pxContext.rooms = rooms; updated.rooms = rooms; }
      if (Object.keys(updated).length) {
        try { window.dataLayer.push(Object.assign({ event: 'px_context_update' }, updated)); } catch(e) {}
      }
    }

    // Parse GroupsForm like "1:2,0,0;1:1,5.7,0" into {rooms, adults, children}
    function parseGroupsForm(gf) {
      var out = { rooms: 0, adults: 0, children: 0 };
      try {
        if (!gf) return out;
        String(gf).split(';').forEach(function(groupStr){
          if (!groupStr) return;
          out.rooms += 1;
          var parts = groupStr.split(':');
          if (parts.length < 2) return;
          var trio = parts[1].split(',');
          var a = parseInt(trio[0] || '0', 10);
          out.adults += isNaN(a) ? 0 : a;
          var childrenAges = (trio[1] || '0');
          if (childrenAges && childrenAges !== '0') {
            out.children += childrenAges.split('.').filter(Boolean).length;
          }
          // Babies are not counted in children
        });
      } catch (e) {}
      return out;
    }

    // Enrich context from px_jsonQuery (server-rendered Json_Query) when available
    function enhanceContextFromPxJson() {
      try {
        var q = (typeof window !== 'undefined' && window.px_jsonQuery) ? window.px_jsonQuery : (typeof px_jsonQuery !== 'undefined' ? px_jsonQuery : null);
        if (!q) return;
        var updated = {};
        // SearchID
        if (q.SearchID && String(q.SearchID) !== String(pxContext.search_id || '')) {
          pxContext.search_id = String(q.SearchID);
          updated.search_id = pxContext.search_id;
        }
        // Dates
        var start = normalizeDate(q.Start || '');
        var end = normalizeDate(q.End || '');
        if (start && start !== pxContext.start_date) { pxContext.start_date = start; updated.start_date = start; }
        if (end && end !== pxContext.end_date) { pxContext.end_date = end; updated.end_date = end; }
        // Pax/rooms from GroupsForm or Group array
        var paxParsed = null;
        if (q.GroupsForm) {
          paxParsed = parseGroupsForm(q.GroupsForm);
        } else if (q.Group && Array.isArray(q.Group)) {
          paxParsed = { rooms: 0, adults: 0, children: 0 };
          q.Group.forEach(function(g){
            paxParsed.rooms += 1;
            paxParsed.adults += (g.Adults*1) || 0;
            paxParsed.children += (g.Childs*1) || 0;
          });
        }
        if (paxParsed) {
          if (paxParsed.adults && paxParsed.adults !== pxContext.adults) { pxContext.adults = paxParsed.adults; updated.adults = paxParsed.adults; }
          if (paxParsed.children && paxParsed.children !== pxContext.children) { pxContext.children = paxParsed.children; updated.children = paxParsed.children; }
          if (paxParsed.rooms && paxParsed.rooms !== pxContext.rooms) { pxContext.rooms = paxParsed.rooms; updated.rooms = paxParsed.rooms; }
        }
        if (Object.keys(updated).length) {
          try { window.dataLayer.push(Object.assign({ event: 'px_context_update' }, updated)); } catch(e) {}
        }
      } catch (e) {}
    }

    // Process API payloads to enrich context
    function processApiData(url, data) {
      try {
        if (!data) return;
        // avoid reprocessing same SearchID repeatedly
        window.__px_processed_sids = window.__px_processed_sids || {};
        var updated = {};
        var payload = data && data.Json_Query ? data.Json_Query : data;
        // SearchID present?
        if (typeof payload.SearchID !== 'undefined' && String(payload.SearchID)) {
          var sid = String(payload.SearchID);
          if (window.__px_processed_sids[sid]) return;
          if (sid && sid !== String(pxContext.search_id || '')) { pxContext.search_id = sid; updated.search_id = sid; }
          window.__px_processed_sids[sid] = true;
        }
        // Start / End can exist either top-level or nested
        var start = payload.Start || (data && data.Start) || '';
        var end = payload.End || (data && data.End) || '';
        start = normalizeDate(start);
        end = normalizeDate(end);
        if (start && start !== pxContext.start_date) { pxContext.start_date = start; updated.start_date = start; }
        if (end && end !== pxContext.end_date) { pxContext.end_date = end; updated.end_date = end; }
        // GroupsForm could be present
        var gf = payload.GroupsForm || (data && data.GroupsForm) || '';
        if (gf) {
          var parsed = parseGroupsForm(gf);
          if (parsed.adults && parsed.adults !== pxContext.adults) { pxContext.adults = parsed.adults; updated.adults = parsed.adults; }
          if (parsed.children && parsed.children !== pxContext.children) { pxContext.children = parsed.children; updated.children = parsed.children; }
          if (parsed.rooms && parsed.rooms !== pxContext.rooms) { pxContext.rooms = parsed.rooms; updated.rooms = parsed.rooms; }
        }
        // Some APIs include Group arrays; attempt totals
        if (payload.Group && Array.isArray(payload.Group)) {
          var aT = 0, cT = 0, rT = 0;
          payload.Group.forEach(function(g){
            if (!g) return;
            rT += 1;
            aT += (g.Adults*1) || 0;
            cT += (g.Childs*1) || 0;
          });
          if (aT && aT !== pxContext.adults) { pxContext.adults = aT; updated.adults = aT; }
          if (cT && cT !== pxContext.children) { pxContext.children = cT; updated.children = cT; }
          if (rT && rT !== pxContext.rooms) { pxContext.rooms = rT; updated.rooms = rT; }
        }
        if (Object.keys(updated).length) {
          try { window.dataLayer.push(Object.assign({ event: 'px_context_update' }, updated)); } catch(e) {}
        }
      } catch(e) {}
    }

    // Intercept fetch/XHR to learn from API responses
    (function installNetworkTaps(){
      try {
        var origFetch = window.fetch;
        if (origFetch && !window.__px_fetch_hooked) {
          window.__px_fetch_hooked = true;
          window.fetch = function(input, init) {
            var p = origFetch(input, init);
            try {
              var url = typeof input === 'string' ? input : (input && input.url) || '';
              p.then(function(res){
                try {
                  var ct = (res.headers && res.headers.get && res.headers.get('content-type')) || '';
                  if (ct && ct.indexOf('application/json') !== -1 && (/\/query\/list/i.test(url) || /\/search\/info/i.test(url))) {
                    res.clone().json().then(function(json){ processApiData(url, json); }).catch(function(){});
                  }
                } catch(e) {}
              }).catch(function(){});
            } catch(e) {}
            return p;
          };
        }
      } catch(e) {}
      try {
        if (!window.__px_xhr_hooked && window.XMLHttpRequest) {
          window.__px_xhr_hooked = true;
          var XHR = window.XMLHttpRequest;
          var open = XHR.prototype.open;
          var send = XHR.prototype.send;
          XHR.prototype.open = function(method, url) {
            this.__px_url = url;
            return open.apply(this, arguments);
          };
          XHR.prototype.send = function(body) {
            try {
              this.addEventListener('load', function() {
                try {
                  var url = this.__px_url || '';
                  var ct = this.getResponseHeader && this.getResponseHeader('content-type') || '';
                  if (ct && ct.indexOf('application/json') !== -1 && (/\/query\/list/i.test(url) || /\/search\/info/i.test(url))) {
                    var txt = this.responseText;
                    try { processApiData(url, JSON.parse(txt)); } catch(e) {}
                  }
                } catch(e) {}
              });
            } catch(e) {}
            return send.apply(this, arguments);
          };
        }
      } catch(e) {}
    })();

    // If we have SearchID but missing details, fetch /search/info
    function fetchSearchInfoIfNeeded() {
      try {
        var sid = pxContext.search_id || getUrlParam('SearchID') || (document.querySelector('#SearchID')||{}).value || '';
        var needsDates = !(pxContext.start_date && pxContext.end_date);
        var needsPaxs = !((pxContext.adults*1) > 0 || (pxContext.children*1) > 0);
        if (sid && (needsDates || needsPaxs)) {
          fetchSearchInfoForSid(sid);
        }
      } catch(e) {}
    }

    // Cached fetch per SearchID
    function fetchSearchInfoForSid(sid) {
      try {
        window.__px_sid_promises = window.__px_sid_promises || {};
        if (window.__px_sid_promises[sid]) return window.__px_sid_promises[sid];
        var endpoint = 'https://api-1-eb-web.pxsol.io/search/info?SearchID=' + encodeURIComponent(sid);
        var pr = fetch(endpoint, { credentials: 'omit' }).then(function(res){
          if (!res.ok) return;
          var ct = (res.headers && res.headers.get && res.headers.get('content-type')) || '';
          if (ct.indexOf('application/json') === -1) return;
          return res.json();
        }).then(function(json){
          if (json) processApiData(endpoint, json);
          return true;
        }).catch(function(){ return false; });
        window.__px_sid_promises[sid] = pr;
        return pr;
      } catch(e) { return Promise.resolve(false); }
    }

    // Ensure dates/paxs are ready before firing a callback
    function ensureContextReady(cb) {
      try {
        // Try quick enrichments first
        enhanceContextFromHiddenInputs();
        enhanceContextFromPxJson();
        var sid = pxContext.search_id || getUrlParam('SearchID') || (document.querySelector('#SearchID')||{}).value || '';
        var hasDates = !!(pxContext.start_date && pxContext.end_date);
        var hasPaxs = ((pxContext.adults*1) > 0) || ((pxContext.children*1) > 0);
        if (hasDates && hasPaxs) { cb(); return; }
        if (sid) {
          fetchSearchInfoForSid(sid).finally(function(){ cb(); });
          return;
        }
        // Last resort: try to enrich from DOM then run
        enhanceContextFromHiddenInputs();
        cb();
      } catch(e) { cb(); }
    }

    // Detect "No hay resultados" to push no_inventory automatically
    function wireNoInventoryWatcher() {
      console.log('%c[pxTrack] 🔍 Initializing no_inventory watcher...', 'color: #2196F3; font-weight: bold; font-size: 14px;');
      console.log('[pxTrack] wireNoInventoryWatcher() called at:', new Date().toISOString());
      var scanCount = 0;
      var lastScanResult = null;
      var lastSearchID = null; // Track SearchID to detect new searches
      var lastScanTime = 0; // For throttling scans
      var SCAN_THROTTLE_MS = 1000; // Maximum 1 scan per second
      var EVENT_COOLDOWN_MS = 5000; // Minimum 5 seconds between events of the same type
      var lastEventTime = {}; // Track last time each event type was fired
      var MAX_SCANS_PER_SEARCH = 30; // Maximum scans per search to prevent excessive polling
      var __px_has_inventory_pushed = false; // Flag para has_inventory (opuesto de no_inventory)
      
      // Log immediately to confirm function is executing
      console.log('[pxTrack] ✅ wireNoInventoryWatcher() is executing - scan function will be defined');
      
      // Expose scan function to global manual trigger
      window.__px_no_inventory_scan_func = function() {
        console.log('[pxTrack] Manual scan triggered via global function');
        scan();
        return lastScanResult;
      };
      
      function checkJsonQueryAvailability() {
        try {
          // Check if px_jsonQuery is available
          if (typeof window.px_jsonQuery === 'undefined' || !window.px_jsonQuery) {
            return false;
          }
          
          var jsonQuery = window.px_jsonQuery;
          
          // Log full structure on first check (for debugging)
          if (!window.__px_jsonQuery_logged) {
            window.__px_jsonQuery_logged = true;
            try {
              console.log('[pxTrack] 📦 px_jsonQuery structure detected:', {
                hasProductList: !!(jsonQuery.ProductList),
                productListIsArray: Array.isArray(jsonQuery.ProductList),
                productListLength: jsonQuery.ProductList ? jsonQuery.ProductList.length : 0,
                sampleProduct: jsonQuery.ProductList && jsonQuery.ProductList.length > 0 ? {
                  hasAvailability: typeof jsonQuery.ProductList[0].Availability !== 'undefined',
                  availability: jsonQuery.ProductList[0].Availability,
                  hasSkuList: !!(jsonQuery.ProductList[0].SkuList),
                  skuListLength: jsonQuery.ProductList[0].SkuList ? jsonQuery.ProductList[0].SkuList.length : 0
                } : null
              });
              // Log first product details if available
              if (jsonQuery.ProductList && jsonQuery.ProductList.length > 0) {
                var firstProduct = jsonQuery.ProductList[0];
                console.log('[pxTrack] First product sample:', {
                  Availability: firstProduct.Availability,
                  hasSkuList: !!(firstProduct.SkuList),
                  SkuList: firstProduct.SkuList ? firstProduct.SkuList.map(function(sku) {
                    return { Availability: sku.Availability };
                  }).slice(0, 3) : null
                });
              }
            } catch(e) {
              console.error('[pxTrack] Error logging Json_Query structure:', e);
            }
          }
          
          // Check if ProductList exists and is an array
          if (!jsonQuery.ProductList) {
            // ProductList might not be loaded yet, but object exists
            return false;
          }
          
          if (!Array.isArray(jsonQuery.ProductList)) {
            console.warn('[pxTrack] px_jsonQuery.ProductList exists but is not an array:', typeof jsonQuery.ProductList);
            return false;
          }
          
          if (jsonQuery.ProductList.length === 0) {
            // Empty ProductList might indicate no inventory, but we need at least one product to check
            return false;
          }
          
          // Check if ALL products have Availability === 0
          var allZeroAvailability = true;
          var availabilityDetails = [];
          
          for (var i = 0; i < jsonQuery.ProductList.length; i++) {
            var product = jsonQuery.ProductList[i];
            // Check Availability property (could be at product level or in SkuList)
            var productAvailability = product.Availability || 0;
            var productHasAvailability = typeof product.Availability !== 'undefined';
            
            // If product has SkuList, check all SKUs
            if (product.SkuList && Array.isArray(product.SkuList) && product.SkuList.length > 0) {
              var allSkusZero = true;
              var skuAvailabilities = [];
              for (var j = 0; j < product.SkuList.length; j++) {
                var sku = product.SkuList[j];
                var skuAvail = sku.Availability || 0;
                skuAvailabilities.push(skuAvail);
                if (sku.Availability && sku.Availability > 0) {
                  allSkusZero = false;
                  break;
                }
              }
              availabilityDetails.push({
                productIndex: i,
                hasProductAvailability: productHasAvailability,
                productAvailability: productAvailability,
                hasSkuList: true,
                skuAvailabilities: skuAvailabilities,
                allSkusZero: allSkusZero
              });
              if (!allSkusZero) {
                allZeroAvailability = false;
                break;
              }
            } else {
              // Product-level availability check
              availabilityDetails.push({
                productIndex: i,
                hasProductAvailability: productHasAvailability,
                productAvailability: productAvailability,
                hasSkuList: false
              });
              if (productAvailability > 0) {
                allZeroAvailability = false;
                break;
              }
            }
          }
          
          // Log availability details when checking (first time or when all zero)
          if (allZeroAvailability || !window.__px_availability_details_logged) {
            window.__px_availability_details_logged = true;
            console.log('[pxTrack] Availability check result:', {
              allZeroAvailability: allZeroAvailability,
              totalProducts: jsonQuery.ProductList.length,
              details: availabilityDetails.slice(0, 3) // Show first 3 products
            });
          }
          
          return allZeroAvailability;
        } catch(e) {
          console.error('[pxTrack] Error checking Json_Query availability:', e);
          return false;
        }
      }
      
      function checkJsonQueryHasAvailability() {
        try {
          // Check if px_jsonQuery is available
          if (typeof window.px_jsonQuery === 'undefined' || !window.px_jsonQuery) {
            return { hasAvailability: false, totalAvailability: 0, availabilityDetails: null };
          }
          
          var jsonQuery = window.px_jsonQuery;
          
          // Check if ProductList exists and is an array
          if (!jsonQuery.ProductList || !Array.isArray(jsonQuery.ProductList) || jsonQuery.ProductList.length === 0) {
            return { hasAvailability: false, totalAvailability: 0, availabilityDetails: null };
          }
          
          var totalAvailability = 0;
          var hasAnyAvailability = false;
          var availabilityDetails = [];
          
          for (var i = 0; i < jsonQuery.ProductList.length; i++) {
            var product = jsonQuery.ProductList[i];
            var productAvailability = product.Availability || 0;
            var productTotal = 0;
            
            // If product has SkuList, sum all SKU availabilities
            if (product.SkuList && Array.isArray(product.SkuList) && product.SkuList.length > 0) {
              for (var j = 0; j < product.SkuList.length; j++) {
                var sku = product.SkuList[j];
                var skuAvail = sku.Availability || 0;
                productTotal += skuAvail;
                if (skuAvail > 0) {
                  hasAnyAvailability = true;
                }
              }
            } else {
              // Product-level availability
              productTotal = productAvailability;
              if (productAvailability > 0) {
                hasAnyAvailability = true;
              }
            }
            
            totalAvailability += productTotal;
            availabilityDetails.push({
              productIndex: i,
              productAvailability: productAvailability,
              productTotal: productTotal,
              hasSkuList: !!(product.SkuList && Array.isArray(product.SkuList) && product.SkuList.length > 0)
            });
          }
          
          return {
            hasAvailability: hasAnyAvailability,
            totalAvailability: totalAvailability,
            availabilityDetails: availabilityDetails,
            productCount: jsonQuery.ProductList.length
          };
        } catch(e) {
          console.error('[pxTrack] Error checking Json_Query for availability:', e);
          return { hasAvailability: false, totalAvailability: 0, availabilityDetails: null };
        }
      }
      
      function scan() {
        // THROTTLING: Evitar escaneos muy frecuentes
        var now = Date.now();
        if (now - lastScanTime < SCAN_THROTTLE_MS) {
          console.debug('[pxTrack] scan() throttled (too soon after last scan)');
          return;
        }
        lastScanTime = now;
        
        // Check if SearchID changed (new search) - if so, reset the flag
        try {
          var currentSearchID = null;
          if (typeof window.px_jsonQuery !== 'undefined' && window.px_jsonQuery && window.px_jsonQuery.SearchID) {
            currentSearchID = String(window.px_jsonQuery.SearchID);
          } else {
            var searchIDEl = document.querySelector('#SearchID');
            if (searchIDEl && searchIDEl.value) {
              currentSearchID = String(searchIDEl.value);
            } else {
              try {
                var urlParams = new URLSearchParams(location.search);
                currentSearchID = urlParams.get('SearchID') || null;
              } catch(e) {}
            }
          }
          
          // If SearchID changed, reset the flags for new search
          if (currentSearchID && currentSearchID !== lastSearchID && lastSearchID !== null) {
            console.log('[pxTrack] 🔄 New search detected (SearchID: ' + lastSearchID + ' → ' + currentSearchID + '), resetting flags');
            window.__px_no_inventory_pushed = false;
            __px_has_inventory_pushed = false;
            scanCount = 0; // Reset scan count
            lastScanTime = 0; // Reset throttling for new search
          }
          
          // Update lastSearchID
          if (currentSearchID) {
            lastSearchID = currentSearchID;
          }
        } catch(e) {
          console.error('[pxTrack] Error checking SearchID:', e);
        }
        
        // Don't scan if event already fired (unless we just reset it)
        if (window.__px_no_inventory_pushed) {
          console.debug('[pxTrack] scan() called but event already fired, skipping');
          return;
        }
        
        // Límite máximo de escaneos por búsqueda
        if (scanCount >= MAX_SCANS_PER_SEARCH) {
          console.debug('[pxTrack] scan() skipped - maximum scans per search reached (' + MAX_SCANS_PER_SEARCH + ')');
          return;
        }
        
        scanCount++;
        // Log first few scans to confirm function is working
        if (scanCount <= 5) {
          console.log('[pxTrack] scan() executing - Scan #' + scanCount);
        }
        var shouldFire = false;
        var detectionMethod = '';
        var debugInfo = {
          scanNumber: scanCount,
          px_jsonQuery_exists: typeof window.px_jsonQuery !== 'undefined' && !!window.px_jsonQuery,
          productList_length: 0,
          productList_details: []
        };
        
        // Method 1: Check px_jsonQuery.ProductList for all Availability === 0
        try {
          if (typeof window.px_jsonQuery !== 'undefined' && window.px_jsonQuery) {
            debugInfo.productList_length = (window.px_jsonQuery.ProductList && Array.isArray(window.px_jsonQuery.ProductList)) ? window.px_jsonQuery.ProductList.length : 0;
            
            if (checkJsonQueryAvailability()) {
              shouldFire = true;
              detectionMethod = 'Json_Query';
              try { 
                console.log('%c[pxTrack] ✅ no_inventory DETECTED via Json_Query (all Availability === 0) - Scan #' + scanCount, 'color: #FF5722; font-weight: bold;');
              } catch(_e){}
            } else {
              // Log details about why it didn't fire
              try {
                if (window.px_jsonQuery.ProductList && Array.isArray(window.px_jsonQuery.ProductList)) {
                  var productDetails = [];
                  for (var idx = 0; idx < Math.min(window.px_jsonQuery.ProductList.length, 3); idx++) {
                    var p = window.px_jsonQuery.ProductList[idx];
                    var prodAvail = p.Availability || 0;
                    var skuAvail = 'N/A';
                    if (p.SkuList && Array.isArray(p.SkuList) && p.SkuList.length > 0) {
                      var skuAvails = [];
                      for (var skuIdx = 0; skuIdx < p.SkuList.length; skuIdx++) {
                        skuAvails.push(p.SkuList[skuIdx].Availability || 0);
                      }
                      skuAvail = skuAvails.join(',');
                    }
                    productDetails.push({productAvail: prodAvail, skuAvail: skuAvail});
                  }
                  debugInfo.productList_details = productDetails;
                }
              } catch(e) {}
            }
          }
        } catch(e) {
          console.error('[pxTrack] Error in Json_Query availability check:', e);
        }
        
        // Method 2: Check for specific DOM elements (most reliable)
        if (!shouldFire) {
          try {
            // Check for #no-inventory-container or #no-inventory (from sindispo.php)
            var noInventoryContainer = document.querySelector('#no-inventory-container');
            var noInventoryElement = document.querySelector('#no-inventory');
            if (noInventoryContainer || noInventoryElement) {
              shouldFire = true;
              detectionMethod = 'DOM element (ID)';
              try { 
                console.log('%c[pxTrack] ✅ no_inventory DETECTED via DOM element (#no-inventory-container or #no-inventory) - Scan #' + scanCount, 'color: #FF5722; font-weight: bold;');
                console.log('[pxTrack] DOM elements found:', {
                  hasContainer: !!noInventoryContainer,
                  hasElement: !!noInventoryElement,
                  containerVisible: noInventoryContainer ? (noInventoryContainer.offsetParent !== null) : false,
                  elementText: noInventoryElement ? (noInventoryElement.textContent || noInventoryElement.innerText || '').substring(0, 50) : ''
                });
              } catch(_e){}
            } else if (scanCount <= 3 || scanCount % 10 === 0) {
              // Log when elements are not found (for debugging)
              try {
                console.debug('[pxTrack] DOM check: #no-inventory-container and #no-inventory not found (scan #' + scanCount + ')');
              } catch(_e){}
            }
          } catch(e) {
            console.error('[pxTrack] Error in DOM element check:', e);
          }
        }
        
        // Method 3: Fallback - Check DOM text for "No hay resultados" or "No results"
        if (!shouldFire) {
          try {
            var candidates = Array.prototype.slice.call(document.querySelectorAll('body *'));
            for (var i=0; i<candidates.length; i++) {
              var t = (candidates[i].innerText || '').trim();
              if (!t) continue;
              if (t.indexOf('No hay resultados') !== -1 || t.indexOf('No results') !== -1) { 
                shouldFire = true;
                detectionMethod = 'DOM text';
                try { 
                  console.log('%c[pxTrack] ✅ no_inventory DETECTED via DOM text - Scan #' + scanCount, 'color: #FF5722; font-weight: bold;');
                } catch(_e){}
                break; 
              }
            }
          } catch(e) {
            console.error('[pxTrack] Error in DOM text check:', e);
          }
        }
        
        // Store last scan result for debugging
        lastScanResult = {
          shouldFire: shouldFire,
          method: detectionMethod,
          scanCount: scanCount,
          px_jsonQuery_exists: debugInfo.px_jsonQuery_exists,
          productList_length: debugInfo.productList_length,
          productList_details: debugInfo.productList_details
        };
        
        // Log scan details every 5th scan or when px_jsonQuery becomes available
        if (scanCount % 5 === 0 || (debugInfo.px_jsonQuery_exists && scanCount <= 3)) {
          try {
            console.log('[pxTrack] no_inventory scan #' + scanCount + ':', {
              px_jsonQuery_exists: debugInfo.px_jsonQuery_exists,
              productList_length: debugInfo.productList_length,
              shouldFire: shouldFire,
              method: detectionMethod
            });
            if (debugInfo.productList_details.length > 0) {
              console.log('[pxTrack] Sample product availability:', debugInfo.productList_details);
            }
          } catch(_e){}
        }
        
        if (shouldFire && !window.__px_no_inventory_pushed) {
          // COOLDOWN: Verificar que no se haya disparado recientemente
          var eventType = 'no_inventory';
          var now = Date.now();
          if (lastEventTime[eventType] && (now - lastEventTime[eventType] < EVENT_COOLDOWN_MS)) {
            console.log('[pxTrack] ⏸️ Event cooldown active, skipping no_inventory event (last fired ' + Math.round((now - lastEventTime[eventType]) / 1000) + 's ago)');
            return;
          }
          
          window.__px_no_inventory_pushed = true;
          lastEventTime[eventType] = now; // Registrar tiempo del evento
          
          // Ensure dates/paxs are enriched before sending
          ensureContextReady(function(){
            var params = getSearchParamsFromDOM();
            params.no_inventory = true;
            try { 
              console.log('%c[pxTrack] 🚀 FIRING no_inventory event - Detection method: ' + detectionMethod + ' - Scan #' + scanCount, 'color: #4CAF50; font-weight: bold; font-size: 14px;');
              console.log('[pxTrack] no_inventory payload:', params);
              console.log('[pxTrack] Last scan result:', lastScanResult);
            } catch(_e){}
            window.pxTrack('no_inventory', params);
            
            // Fire form_success for search form after no_inventory
            setTimeout(function() {
              console.log('%c[pxTrack] 🚀 FIRING form_success for search form (after no_inventory)', 'color: #4CAF50; font-weight: bold;');
              window.pxTrack('form_success', {
                form_id: 'pxmk_searchform',
                lead_id: null,
                transaction_id: null
              });
            }, 100);
          });
        }
        
        // OPPOSITE: Check if there IS availability (has_inventory)
        // Only check if no_inventory was NOT detected and has_inventory hasn't been fired yet
        if (!shouldFire && !__px_has_inventory_pushed && !window.__px_no_inventory_pushed) {
          try {
            // Also verify that no "no inventory" DOM elements are present
            var noInventoryContainer = document.querySelector('#no-inventory-container');
            var noInventoryElement = document.querySelector('#no-inventory');
            var hasNoInventoryDOM = !!(noInventoryContainer || noInventoryElement);
            
            if (hasNoInventoryDOM) {
              console.debug('[pxTrack] has_inventory blocked - no inventory DOM elements present');
            } else {
              var availabilityInfo = checkJsonQueryHasAvailability();
              
              if (availabilityInfo.hasAvailability) {
                // COOLDOWN: Verificar que no se haya disparado recientemente
                var eventType = 'has_inventory';
                var now = Date.now();
                if (lastEventTime[eventType] && (now - lastEventTime[eventType] < EVENT_COOLDOWN_MS)) {
                  console.log('[pxTrack] ⏸️ Event cooldown active, skipping has_inventory event (last fired ' + Math.round((now - lastEventTime[eventType]) / 1000) + 's ago)');
                } else {
              
              __px_has_inventory_pushed = true;
              lastEventTime[eventType] = now;
              
              // Ensure dates/paxs are enriched before sending
              ensureContextReady(function(){
                var params = getSearchParamsFromDOM();
                params.has_availability = true;
                params.availability = availabilityInfo.totalAvailability;
                params.product_count = availabilityInfo.productCount || 0;
                
                // Add SearchID if available
                try {
                  if (typeof window.px_jsonQuery !== 'undefined' && window.px_jsonQuery && window.px_jsonQuery.SearchID) {
                    params.search_id = String(window.px_jsonQuery.SearchID);
                  }
                } catch(e) {}
                
                // Add availability details (first 3 products for debugging)
                if (availabilityInfo.availabilityDetails && availabilityInfo.availabilityDetails.length > 0) {
                  params.availability_details = availabilityInfo.availabilityDetails.slice(0, 3).map(function(detail) {
                    return {
                      product_index: detail.productIndex,
                      availability: detail.productTotal,
                      has_skus: detail.hasSkuList
                    };
                  });
                }
                
                try { 
                  console.log('%c[pxTrack] 🚀 FIRING has_inventory event (availability detected) - Scan #' + scanCount, 'color: #4CAF50; font-weight: bold; font-size: 14px;');
                  console.log('[pxTrack] has_inventory payload:', params);
                  console.log('[pxTrack] Availability info:', {
                    totalAvailability: availabilityInfo.totalAvailability,
                    productCount: availabilityInfo.productCount,
                    hasAvailability: availabilityInfo.hasAvailability
                  });
                } catch(_e){}
                window.pxTrack('has_inventory', params);
                
                // Fire form_success for search form after has_inventory
                setTimeout(function() {
                  console.log('%c[pxTrack] 🚀 FIRING form_success for search form (after has_inventory)', 'color: #4CAF50; font-weight: bold;');
                  window.pxTrack('form_success', {
                    form_id: 'pxmk_searchform',
                    lead_id: null,
                    transaction_id: null
                  });
                }, 100);
              });
                }
              }
            }
          } catch(e) {
            console.error('[pxTrack] Error checking for availability (has_inventory):', e);
          }
        }
      }
      
      // Try to intercept px_jsonQuery assignment (works if px_jsonQuery is undefined)
      try {
        if (typeof window.px_jsonQuery === 'undefined') {
          try {
            var _px_jsonQuery_value = undefined;
            var _px_jsonQuery_lastTrigger = 0;
            Object.defineProperty(window, 'px_jsonQuery', {
              get: function() { return _px_jsonQuery_value; },
              set: function(newValue) {
                _px_jsonQuery_value = newValue;
                if (newValue) {
                  try {
                    // Throttle interceptor triggers (máximo 1 cada 1 segundo)
                    var now = Date.now();
                    if (now - _px_jsonQuery_lastTrigger < 1000) {
                      console.debug('[pxTrack] px_jsonQuery interceptor throttled');
                      return;
                    }
                    _px_jsonQuery_lastTrigger = now;
                    console.log('[pxTrack] px_jsonQuery was set via Object.defineProperty, triggering scan');
                    setTimeout(function() { scan(); }, 150);
                  } catch(e) {
                    console.error('[pxTrack] Error in triggerScan:', e);
                  }
                }
              },
              configurable: true,
              enumerable: true
            });
          } catch(e) {
            console.error('[pxTrack] Object.defineProperty failed for px_jsonQuery:', e);
          }
        }
      } catch(e) {
        console.error('[pxTrack] Error setting up px_jsonQuery interception:', e);
      }
      
      // Multiple initial scans with increasing delays (for Chrome compatibility)
      function runInitialScans() {
        console.log('%c[pxTrack] Starting initial scans for no_inventory detection...', 'color: #FF9800; font-weight: bold;');
        console.log('[pxTrack] runInitialScans() called - will execute multiple scans');
        // Immediate scan
        console.log('[pxTrack] Executing immediate scan...');
        scan();
        // Delayed scans to catch px_jsonQuery if it loads later AND DOM elements that load dynamically
        setTimeout(function() { scan(); }, 200);
        setTimeout(function() { scan(); }, 500);
        setTimeout(function() { scan(); }, 1000);
        setTimeout(function() { scan(); }, 2000);
        setTimeout(function() { scan(); }, 3000);
        setTimeout(function() { scan(); }, 5000);
      }
      
      // Run initial scans after DOM is ready
      if (document.readyState === 'loading') {
        console.log('[pxTrack] DOM is loading, will wait for DOMContentLoaded');
        document.addEventListener('DOMContentLoaded', function() {
          console.log('[pxTrack] DOMContentLoaded fired, scheduling runInitialScans() in 100ms');
          setTimeout(function() {
            console.log('[pxTrack] Executing runInitialScans() now...');
            runInitialScans();
          }, 100);
        });
      } else {
        console.log('[pxTrack] DOM already ready, scheduling runInitialScans() in 100ms');
        setTimeout(function() {
          console.log('[pxTrack] Executing runInitialScans() now...');
          runInitialScans();
        }, 100);
      }
      
      // Also use requestAnimationFrame for Chrome (ensures DOM is painted)
      if (window.requestAnimationFrame) {
        requestAnimationFrame(function() {
          setTimeout(function() { scan(); }, 500);
        });
      }
      
      // Watch for px_jsonQuery availability (reduced polling frequency to prevent rate limiting)
      var jsonQueryCheckStart = Date.now();
      var jsonQueryCheckTimeout = 20000; // 20 seconds
      var jsonQueryCheckInterval = setInterval(function() {
        // Stop if timeout reached
        if (Date.now() - jsonQueryCheckStart > jsonQueryCheckTimeout) {
          clearInterval(jsonQueryCheckInterval);
          try { 
            console.log('[pxTrack] no_inventory px_jsonQuery polling timed out after', scanCount, 'scans');
            console.log('[pxTrack] Last scan result:', lastScanResult);
          } catch(_e){}
          return;
        }
        
        // Stop if event already fired
        if (window.__px_no_inventory_pushed) {
          clearInterval(jsonQueryCheckInterval);
          return;
        }
        
        // Check if px_jsonQuery is now available and scan
        if (typeof window.px_jsonQuery !== 'undefined' && window.px_jsonQuery) {
          scan();
        }
      }, 1000); // Reduced to 1 second to prevent rate limiting
      
      // Watch DOM changes and specifically look for #no-inventory-container or #no-inventory
      try {
        var mo = new MutationObserver(function(mutations) { 
          if (window.__px_no_inventory_pushed) return;
          
          // Throttling más agresivo para MutationObserver (2 segundos mínimo)
          var now = Date.now();
          if (mo.__px_lastScan && (now - mo.__px_lastScan < 2000)) {
            return;
          }
          
          // Check if any of the mutations added our target elements
          var foundTarget = false;
          for (var i = 0; i < mutations.length; i++) {
            var mutation = mutations[i];
            if (mutation.addedNodes && mutation.addedNodes.length > 0) {
              for (var j = 0; j < mutation.addedNodes.length; j++) {
                var node = mutation.addedNodes[j];
                if (node.nodeType === 1) { // Element node
                  // Check if the added node is our target or contains it
                  if (node.id === 'no-inventory-container' || node.id === 'no-inventory' ||
                      node.querySelector && (node.querySelector('#no-inventory-container') || node.querySelector('#no-inventory'))) {
                    foundTarget = true;
                    break;
                  }
                }
              }
            }
            if (foundTarget) break;
          }
          
          // If target found or if enough time passed, scan
          if (foundTarget || !mo.__px_lastScan || Date.now() - mo.__px_lastScan > 2000) {
            mo.__px_lastScan = Date.now();
            if (foundTarget) {
              console.log('[pxTrack] MutationObserver detected #no-inventory-container or #no-inventory added to DOM');
            }
            scan(); 
          }
        });
        mo.observe(document.body, { childList: true, subtree: true });
      } catch(e) {
        console.error('[pxTrack] MutationObserver failed for no_inventory:', e);
      }
      
      // Additional polling specifically for DOM elements (reduced frequency to prevent rate limiting)
      var domPollingStart = Date.now();
      var domPollingTimeout = 15000; // 15 seconds
      var domPollingInterval = setInterval(function() {
        if (Date.now() - domPollingStart > domPollingTimeout) {
          clearInterval(domPollingInterval);
          return;
        }
        
        if (window.__px_no_inventory_pushed) {
          clearInterval(domPollingInterval);
          return;
        }
        
        // Quick check for target elements
        var noInventoryContainer = document.querySelector('#no-inventory-container');
        var noInventoryElement = document.querySelector('#no-inventory');
        if (noInventoryContainer || noInventoryElement) {
          console.log('[pxTrack] DOM polling detected #no-inventory-container or #no-inventory');
          scan();
          clearInterval(domPollingInterval);
        }
      }, 1000); // Reduced to 1 second to prevent rate limiting
      
      // Confirm watcher is fully initialized
      console.log('%c[pxTrack] ✅ no_inventory watcher fully initialized and ready', 'color: #4CAF50; font-weight: bold; font-size: 14px;');
      console.log('[pxTrack] wireNoInventoryWatcher() completed at:', new Date().toISOString());
      console.log('[pxTrack] All watchers, observers, and polling intervals are now active');
    }

    // Observe availability containers to re-enrich context after dynamic updates
    function observeAvailabilityContainers() {
      try {
        var targets = [];
        var el1 = document.querySelector('#neo_cart_results_list');
        var el2 = document.querySelector('#neo_cart_pedido_container');
        if (el1) targets.push(el1);
        if (el2) targets.push(el2);
        if (!targets.length || !('MutationObserver' in window)) return;
        var refresh = function() {
          enhanceContextFromHiddenInputs();
          enhanceContextFromPxJson();
        };
        var mo = new MutationObserver(function(muts) {
          // throttle bursts
          if (mo.__px_scheduled) return;
          mo.__px_scheduled = true;
          setTimeout(function(){ mo.__px_scheduled = false; refresh(); }, 100);
        });
        targets.forEach(function(t){ mo.observe(t, { childList: true, subtree: true }); });
        // initial pass
        refresh();
      } catch (e) {}
    }

    // Init after DOM ready - LOG EARLY AND OFTEN
    console.log('%c[pxTrack] STEP 1: Checking DOM readyState...', 'color: #9C27B0; font-weight: bold; font-size: 14px;');
    console.log('[pxTrack] document.readyState:', document.readyState);
    console.log('[pxTrack] wireNoInventoryWatcher function exists:', typeof wireNoInventoryWatcher);
    
    if (document.readyState === 'loading') {
      console.log('%c[pxTrack] STEP 2: DOM is loading, setting up DOMContentLoaded listener', 'color: #9C27B0; font-weight: bold;');
      document.addEventListener('DOMContentLoaded', function() {
        console.log('%c[pxTrack] STEP 3: DOMContentLoaded fired!', 'color: #9C27B0; font-weight: bold; font-size: 16px;');
        console.log('[pxTrack] DOMContentLoaded fired, initializing watchers...');
        try {
          wireSearchEvents();
          wireFormEvents();
          if (typeof wireCheckoutForm === 'function') {
            wireCheckoutForm();
          } else {
            console.log('[pxTrack] wireCheckoutForm() not available (may be conditional)');
          }
          wireDatePickers();
          enhanceContextFromHiddenInputs();
          enhanceContextFromPxJson();
          fetchSearchInfoIfNeeded();
          console.log('%c[pxTrack] STEP 4: About to call wireNoInventoryWatcher()...', 'color: #FF5722; font-weight: bold; font-size: 16px;');
          try {
            wireNoInventoryWatcher();
            console.log('%c[pxTrack] STEP 5: wireNoInventoryWatcher() completed successfully!', 'color: #4CAF50; font-weight: bold; font-size: 16px;');
          } catch(e) {
            console.error('[pxTrack] ERROR calling wireNoInventoryWatcher():', e);
            console.error('[pxTrack] Error stack:', e.stack);
          }
          observeAvailabilityContainers();
          // delayed retries in case modules/scripts load late
          setTimeout(function(){ enhanceContextFromHiddenInputs(); enhanceContextFromPxJson(); }, 500);
          setTimeout(function(){ enhanceContextFromHiddenInputs(); enhanceContextFromPxJson(); }, 1500);
          // checkout success detector (thank-you page) - multiple attempts with delays
          if (typeof maybePushFormSuccess === 'function') {
            maybePushFormSuccess(); // Immediate
            setTimeout(function(){ maybePushFormSuccess(); }, 500); // After 500ms
            setTimeout(function(){ maybePushFormSuccess(); }, 1500); // After 1.5s
            setTimeout(function(){ maybePushFormSuccess(); }, 3000); // After 3s (for slow loading pages)
          }
        } catch(e) {
          console.error('[pxTrack] Error during initialization:', e);
        }
      });
    } else {
      console.log('%c[pxTrack] STEP 2: DOM already ready, initializing immediately', 'color: #9C27B0; font-weight: bold;');
      console.log('[pxTrack] DOM already ready, initializing watchers immediately...');
      try {
        wireSearchEvents();
        wireFormEvents();
        if (typeof wireCheckoutForm === 'function') {
          wireCheckoutForm();
        } else {
          console.log('[pxTrack] wireCheckoutForm() not available (may be conditional)');
        }
        wireDatePickers();
        enhanceContextFromHiddenInputs();
        enhanceContextFromPxJson();
        fetchSearchInfoIfNeeded();
        console.log('%c[pxTrack] STEP 4: About to call wireNoInventoryWatcher()...', 'color: #FF5722; font-weight: bold; font-size: 16px;');
        try {
          wireNoInventoryWatcher();
          console.log('%c[pxTrack] STEP 5: wireNoInventoryWatcher() completed successfully!', 'color: #4CAF50; font-weight: bold; font-size: 16px;');
        } catch(e) {
          console.error('[pxTrack] ERROR calling wireNoInventoryWatcher():', e);
          console.error('[pxTrack] Error stack:', e.stack);
        }
        observeAvailabilityContainers();
        setTimeout(function(){ enhanceContextFromHiddenInputs(); enhanceContextFromPxJson(); }, 500);
        setTimeout(function(){ enhanceContextFromHiddenInputs(); enhanceContextFromPxJson(); }, 1500);
        // checkout success detector (thank-you page) - multiple attempts with delays
        if (typeof maybePushFormSuccess === 'function') {
          maybePushFormSuccess(); // Immediate
          setTimeout(function(){ maybePushFormSuccess(); }, 500); // After 500ms
          setTimeout(function(){ maybePushFormSuccess(); }, 1500); // After 1.5s
          setTimeout(function(){ maybePushFormSuccess(); }, 3000); // After 3s (for slow loading pages)
        }
      } catch(e) {
        console.error('[pxTrack] Error during initialization:', e);
        console.error('[pxTrack] Error stack:', e.stack);
      }
    }
  })();
</script>


<!-- Google Tag Manager -->
<script>
  (function(w, d, s, l, i) {
    w[l] = w[l] || [];
    w[l].push({
      'gtm.start': new Date().getTime(),
      event: 'gtm.js'
    });
    var f = d.getElementsByTagName(s)[0],
      j = d.createElement(s),
      dl = l != 'dataLayer' ? '&l=' + l : '';
    j.async = true;
    j.src =
      'https://www.googletagmanager.com/gtm.js?id=' + i + dl;
    f.parentNode.insertBefore(j, f);
  })(window, document, 'script', 'dataLayer', 'GTM-TPTNCNX');
</script>
<!-- End Google Tag Manager -->

  <!-- Google Tag Manager -->
  <script>
    (function(w, d, s, l, i) {
      w[l] = w[l] || [];
      w[l].push({
        'gtm.start': new Date().getTime(),
        event: 'gtm.js'
      });
      var f = d.getElementsByTagName(s)[0],
        j = d.createElement(s),
        dl = l != 'dataLayer' ? '&l=' + l : '';
      j.async = true;
      j.src =
        'https://www.googletagmanager.com/gtm.js?id=' + i + dl;
      f.parentNode.insertBefore(j, f);
    })(window, document, 'script', 'dataLayer', 'GTM-MSDQV2VD');
  </script>
  <!-- End Google Tag Manager -->



</head>

<body>
	<!-- Google Tag Manager (noscript) -->
	<noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-TPTNCNX" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
	<!-- End Google Tag Manager (noscript) -->

			<!-- Google Tag Manager (noscript) -->
		<noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-MSDQV2VD" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
		<!-- End Google Tag Manager (noscript) -->
	
	

	<div class="neo_loader">
		<style>
			.linear-activity {
				overflow: hidden;
				width: 100%;
				height: 4px;
				background-color: #B3E5FC;
				margin: 0
			}

			.determinate {
				position: relative;
				max-width: 100%;
				height: 100%;
				-webkit-transition: width .5s ease-out 1s;
				-moz-transition: width .5s ease-out 1s;
				-o-transition: width .5s ease-out 1s;
				transition: width .5s ease-out 1s;
				background-color: #03A9F4
			}

			.indeterminate {
				position: relative;
				width: 100%;
				height: 100%
			}

			.indeterminate:after,
			.indeterminate:before {
				content: '';
				position: absolute;
				height: 100%
			}

			.indeterminate:before {
				background-color: #03A9F4;
				animation: indeterminate_first 1.5s infinite ease-out
			}

			.indeterminate:after {
				background-color: #4FC3F7;
				animation: indeterminate_second 1.5s infinite ease-in
			}

			@keyframes indeterminate_first {
				0% {
					left: -100%;
					width: 100%
				}

				100% {
					left: 100%;
					width: 10%
				}
			}

			@keyframes indeterminate_second {
				0% {
					left: -150%;
					width: 100%
				}

				100% {
					left: 100%;
					width: 10%
				}
			}

			.neo_loader {
				position: fixed;
				top: 0;
				left: 0;
				right: 0;
				bottom: 0;
				z-index: 9999999999999999999999;
				background: #fff;
				height: 100vh;
				width: 100vw;
				display: flex;
				flex-direction: column;
				justify-content: center;
				align-items: center;
				padding: 40px;
				box-sizing: border-box;
				text-align: center;
			}

			.neo_loader .loaderline {
				width: 400px;
				margin: 40px;
				max-width: 90vw
			}

			.loadername {
				color: #bbb;
				font-family: Helvetica, Arial, sans-serif;
				margin: 10px auto 15px
			}

			.linear-activity.gray {
				background-color: #eaeaea
			}

			.gray .indeterminate:after,
			.gray .indeterminate:before {
				background-color: #bbb
			}

			.neo_megacontainer {
				display: none
			}
		</style>

						<img loading="lazy" style=" max-height: 200px; max-width: 200px; object-fit: contain; margin-bottom: 20px;" src="https://files-p.pxsol.com/23611/company/library/user/17771585750cefe4c16e5a5b2928aad7260b09ea2ee.png" alt="Lodge Colbún">
				<div class="loadername">
			Lodge Colbún		</div>
		<div class="loaderline">
			<div class="linear-activity gray">
				<div class="indeterminate"></div>
			</div>
		</div>
	</div>

	<div class="neo_megacontainer index">



		

<div class="main_wraper_top" id="main_wraper_top">
    

<div class="neo_template_container neo_template_ computer">


<div id='normalheader'  class="navbar-fullwidth normalheader"  ><div  class="fullwidth flex flex-m-sb flex-s-center padding-xs-5"  ><div  class='xs-50' ><div class='pxModule_include  ModuloWrap_idiomas  '><div id="top_menu">

		<div id="contenedor_top">
		<div id="menu_div_top">
			<div class="nav_top flex flex-s-center">

														<a href="/app/" ignorar-vista="true" target="_blank" class="btn_sesion cta_webcheckin_px">
						<i class="mdi mdi-login" aria-hidden="true"></i>
						<span>
							Check In Online						</span>
					</a>
				
				<div class="selectidiomaymoneda">
					<div class="currency_module_container" >
						<input type="hidden" id='ModuloIdioma_DefaultCurrency' value="CLP">
						<div class="texto_idiomaymoneda">
							Moneda - </div>
						<div id="deploymoneda"  class="pointer deploymoneda" >
															<div class="monedaactual hidden" cur="USD">
									USD $								</div>
															<div class="monedaactual hidden" cur="CLP">
									CLP $								</div>
													</div>
													<div id="monedasshow" class="monedasshow">
								<div class="titlemenujs">
									Elija la moneda de su preferencia								</div>
																	<div class="monedaitem changeCurrency  hidden" cur="USD">
										<strong>USD $</strong>
										<div class="monedasname">
											Dólar americano										</div>
									</div>
																	<div class="monedaitem changeCurrency  hidden" cur="CLP">
										<strong>CLP $</strong>
										<div class="monedasname">
											Peso chileno										</div>
									</div>
															</div>

											</div>
					<div class="texto_idiomaymoneda">
						Idioma - </div>

					
						<div id="deployidioma" class="deployidioma">
															<img alt="Bandera" style="object-fit: contain;" class="bandera" src="/css/images/bnd_es.png" height="24px" width="24px" />
													</div>

					
					<div id="idiomasshow" class="idiomasshow">
						<div class="titlemenujs">
							Elija el idioma de su preferencia						</div>
															<div class="idiomaitem">
																				<a class="idiomalink" lng="en" href="/en/?lng=en" ignorar-vista="true" style="width: 100%;">
																							<img class="bandera" style="object-fit: contain;" src="/css/images/bnd_en.png" height="20" width="20" alt="en" />
																						<span class="nameidioma">
												English											</span>
										</a>
									</div>
															<div class="idiomaitem">
																				<a class="idiomalink" lng="pt" href="/pt/?lng=pt" ignorar-vista="true" style="width: 100%;">
																							<img class="bandera" style="object-fit: contain;" src="/css/images/bnd_pt.png" height="20" width="20" alt="pt" />
																						<span class="nameidioma">
												Português											</span>
										</a>
									</div>
											</div>
				</div>

				
    <a href="https://app.reservadirecto.com/auth_web?return_url=https%3A%2F%2Fwww.lodgecolbun.com%2Fauthorize.php%3Fredirect_url%3Dhttps%253A%252F%252Fwww.lodgecolbun.com%252F&origin_pos=LodgeColbun" ignorar-vista="true" class="btn_sesion cta_webcheckin_px margin-sm-right-10" style="text-decoration: none">
        <i class="mdi mdi-account" aria-hidden="true"></i>
        <span>
            Iniciar Sesión        </span>
    </a>

    <script src="https://accounts.google.com/gsi/intermediate"></script>
    <script src="https://accounts.google.com/gsi/intermediatesupport"></script>

            <div id="g_id_intermediate_iframe" data-src="https://eva.reservadirecto.com/core/includes/google_one_tap_intermediate_iframe.php?origin=https%3A%2F%2Fwww.lodgecolbun.com&redirect_url=https%3A%2F%2Fwww.lodgecolbun.com%2F&pos=LodgeColbun">
    </div>

    <style>
        .neo_login_incentive {
            position: fixed;
            top: 10rem;
            right: calc(1rem + 10px);
            width: 375px;
            text-align: left;
            z-index: 1;
        }

        .neo_login_incentive>div {
            margin: 0;
            border-radius: 10px;
        }

        iframe#onetap_google_intermediate_iframe,
        #credential_picker_container,
        #credential_picker_container iframe,
        iframe[src*="google_one_tap_intermediate_iframe"] {
            top: 18.5rem !important;
            right: 1rem !important;
        }

        @media only screen and (max-width: 468px) {
            .neo_login_incentive {
                display: none !important;
                bottom: 0rem;
                top: initial;
                left: 0;
                right: 0;
                position: fixed;
                width: 100%;
                text-transform: initial;
                letter-spacing: normal;
                font-weight: initial;
            }

            iframe#onetap_google_intermediate_iframe,
            #credential_picker_container,
            #credential_picker_container iframe,
            iframe[src*="google_one_tap_intermediate_iframe"] {
                top: initial !important;
                bottom: 5rem !important;
                right: initial !important;
                z-index: 1;
            }
        }
    </style>
    <script>
        (function() {
            var repositioned = false;
            var attempts = 0;
            var timer = setInterval(function() {
                if (repositioned || ++attempts > 60) { clearInterval(timer); return; }
                var el = document.getElementById('credential_picker_container')
                      || document.querySelector('iframe[src*="google_one_tap_intermediate_iframe"]')
                      || document.getElementById('onetap_google_intermediate_iframe');
                if (el) {
                    var target = (el.tagName === 'IFRAME' && el.parentElement && el.parentElement.style.position === 'fixed') ? el.parentElement : el;
                    var isMobile = window.innerWidth <= 468;
                    if (isMobile) {
                        target.style.setProperty('top', 'initial', 'important');
                        target.style.setProperty('bottom', '5rem', 'important');
                        target.style.setProperty('right', 'initial', 'important');
                    } else {
                        target.style.setProperty('top', '18.5rem', 'important');
                        target.style.setProperty('right', '1rem', 'important');
                    }
                    repositioned = true;
                    clearInterval(timer);
                }
            }, 100);
        })();
    </script>

			</div>
		</div>
	</div>

</div></div></div></div><div  class="navbar-fullwidth navbar-top"  ><ul  class='nav-list' ><li  class='' ><a  class="item-list"   href="/index.html" target="">El Lodge</a></li><li  class='' ><a  class="item-list"   href="/habitaciones.html" target="">Habitaciones/Cabañas</a></li><li  class='' ><a  class="item-list"   href="/servicios.html" target="">Servicios</a></li></ul><a  class="loguito"   href="/index.html" target=""> <img loading="lazy"  class=""   lazy-src="https://files-p.pxsol.com/23611/company/library/user/24884741770f61d7ab9513ebbe02cf4cb064d719a41.png" alt="LodgeColbun" > </image></a><ul  class='nav-list' ><li  class='' ><a  class="item-list"   href="/promos.html" target="">Promociones</a></li><li  class='' ><a  class="item-list"   href="/galeria.html" target="">Galería</a></li><li  class='' ><a  class="item-list"   href="/contacto.html" target="">Ubicación y Contacto</a></li></ul></div></div> 


<div  class="container-search"  ><div id='normalsearch'  class="normalsearch"  ><div  class=''  ListSelector='false' ProductSelector='false' LocationSearch='false' BuscadorVertical='false' OwnLP='false'>
			  <div class="neo_template_block neo_marketplace_buscador_v3 pxModule_include ModuloWrap_marketplace_buscador_v3" id="marketplace_buscador_v3" >
			  
		
		<div class="px-mk-buscador-container  buscar_lp ">

			

			<form px-endpoint="https://api-1-eb-web.pxsol.io" action="https://api-1-eb-web.pxsol.io/search/insert" ajax-action="search/insert" method="post" name="pxmk_searchform" id="pxmk_searchform" class="px-mk-searchform marketplace_searchform_computer" target="_self">
				<label class="error px-mk-generalerror nodisplay">Ha ocurrido un error, por favor intente nuevamente</label>
												

				
				

				<div class="fechas_ancho_entrada px-sm-inputcontainer w-padding px-mk-fixedwidth-inputcontainer">
					<label class="px-mk-inputicon" for="fechaingreso">
						<?xml version="1.0" encoding="iso-8859-1"?>
<svg version="1.1" id="Capa_1" 
    xmlns="http://www.w3.org/2000/svg" 
    xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 426.667 426.667" style="enable-background:new 0 0 426.667 426.667;" xml:space="preserve">
    <g>
        <g>
            <g>
                <rect x="213.333" y="234.667" width="106.667" height="106.667"/>
                <path d="M362.667,42.667h-21.333V0h-42.667v42.667H128V0H85.333v42.667H64c-23.573,0-42.453,19.093-42.453,42.667L21.333,384				c0,23.573,19.093,42.667,42.667,42.667h298.667c23.573,0,42.667-19.093,42.667-42.667V85.333				C405.333,61.76,386.24,42.667,362.667,42.667z M362.667,384H64V149.333h298.667V384z"/>
            </g>
        </g>
    </g>
</svg>					</label>
					<label class="px-mk-labelinput" for="fechaingreso">
						Fecha de Llegada					</label>
					<input name="Start" type="text" style="font-size: 16px !important;" onfocus="return false;" readonly id="fechaingreso" class="" value="10/06/2026" placeholder="Llegada" data-testid="date-start" />
				</div>

				<div class=" fechas_ancho_salida px-sm-inputcontainer w-padding px-mk-fixedwidth-inputcontainer">
					<label class="px-mk-inputicon" for="fechaegreso">
						<?xml version="1.0" encoding="iso-8859-1"?>
<svg version="1.1" id="Capa_1" 
    xmlns="http://www.w3.org/2000/svg" 
    xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 426.667 426.667" style="enable-background:new 0 0 426.667 426.667;" xml:space="preserve">
    <g>
        <g>
            <g>
                <rect x="213.333" y="234.667" width="106.667" height="106.667"/>
                <path d="M362.667,42.667h-21.333V0h-42.667v42.667H128V0H85.333v42.667H64c-23.573,0-42.453,19.093-42.453,42.667L21.333,384				c0,23.573,19.093,42.667,42.667,42.667h298.667c23.573,0,42.667-19.093,42.667-42.667V85.333				C405.333,61.76,386.24,42.667,362.667,42.667z M362.667,384H64V149.333h298.667V384z"/>
            </g>
        </g>
    </g>
</svg>					</label>
					<label class="px-mk-labelinput" for="fechaegreso">
						Fecha de Salida					</label>
					<input name="End" type="text" style="font-size: 16px !important;" onfocus="return false;" readonly id="fechaegreso" size="10" value="11/06/2026" class="relative maxzindex pointer" placeholder="Salida" data-testid="date-end" />
				</div>


				<div id="NochesError" class="error" style="display:none"></div>

				
					<div class="codigopromocional px-sm-inputcontainer w-padding px-mk-fixedwidth-inputcontainer">
						<label class="px-mk-inputicon" for="fechaegreso">
							<?xml version="1.0" encoding="iso-8859-1"?>
<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
	 viewBox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve">
<g>
	<g>
		<path d="M32,271.692v192c0,17.664,14.368,32,32,32h160v-224H32z"/>
	</g>
</g>
<g>
	<g>
		<path d="M480,143.692H378.752c7.264-4.96,13.504-9.888,17.856-14.304c25.824-25.952,25.824-68.192,0-94.144
			c-25.088-25.28-68.8-25.216-93.856,0c-13.888,13.92-50.688,70.592-45.6,108.448h-2.304c5.056-37.856-31.744-94.528-45.6-108.448
			c-25.088-25.216-68.8-25.216-93.856,0C89.6,61.196,89.6,103.436,115.36,129.388c4.384,4.416,10.624,9.344,17.888,14.304H32
			c-17.632,0-32,14.368-32,32v48c0,8.832,7.168,16,16,16h208v-64h64v64h208c8.832,0,16-7.168,16-16v-48
			C512,158.06,497.664,143.692,480,143.692z M222.112,142.636c0,0-1.344,1.056-5.92,1.056c-22.112,0-64.32-22.976-78.112-36.864
			c-13.408-13.504-13.408-35.52,0-49.024c6.496-6.528,15.104-10.112,24.256-10.112c9.12,0,17.728,3.584,24.224,10.112
			C208.128,79.5,229.568,134.924,222.112,142.636z M295.776,143.692c-4.544,0-5.888-1.024-5.888-1.056
			c-7.456-7.712,13.984-63.136,35.552-84.832c12.896-13.024,35.456-13.088,48.48,0c13.44,13.504,13.44,35.52,0,49.024
			C360.128,120.716,317.92,143.692,295.776,143.692z"/>
	</g>
</g>
<g>
	<g>
		<path d="M288,271.692v224h160c17.664,0,32-14.336,32-32v-192H288z"/>
	</g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
</svg>
						</label>
						<label class="px-mk-labelinput" for="PromoCode">
							Código Promocional						</label>
						<input name="Code" type="text" id="PromoCode" size="6" class="relative maxzindex pointer" data-testid="promo-code" />
					</div>

				

									<div class="nodisplay" id="Combinations">[{"Adults":4,"Childs":0,"Babies":0},{"Adults":3,"Childs":1,"Babies":0},{"Adults":2,"Childs":2,"Babies":1},{"Adults":1,"Childs":3,"Babies":1},{"Adults":1,"Childs":2,"Babies":1},{"Adults":2,"Childs":1,"Babies":1},{"Adults":1,"Childs":0,"Babies":0},{"Adults":2,"Childs":0,"Babies":0},{"Adults":3,"Childs":0,"Babies":1},{"Adults":3,"Childs":0,"Babies":0},{"Adults":2,"Childs":2,"Babies":0},{"Adults":2,"Childs":1,"Babies":0},{"Adults":2,"Childs":0,"Babies":1},{"Adults":1,"Childs":3,"Babies":0},{"Adults":1,"Childs":2,"Babies":0},{"Adults":1,"Childs":1,"Babies":1},{"Adults":1,"Childs":1,"Babies":0},{"Adults":1,"Childs":0,"Babies":1},{"Adults":4,"Childs":0,"Babies":1}]</div>
								
<style>
	/* Quitar flechitas de inputs number en Chrome, Safari, Edge, Opera */
	.neo_partyselector_quantity::-webkit-outer-spin-button,
	.neo_partyselector_quantity::-webkit-inner-spin-button {
		-webkit-appearance: none;
		margin: 0;
	}

	/* Desktop - mantener original, todo en una línea */
	.txtPartyGroup .guests-row,
	.txtPartyGroup .rooms-row {
		display: inline;
	}

	/* Nacionalidad label - desktop #000, mobile #333 */
	.nacionalidad-label {
		color: #000 !important;
	}

	@media only screen and (max-width: 650px) {
		.nacionalidad-label {
			color: #333 !important;
		}
	}

	.txtPartyGroup .party-number {
		margin-right: 4px;
	}

	.txtPartyGroup .party-separator {
		color: #999;
		margin: 0 4px;
	}

	/* Mobile - formato de dos líneas mejorado */
	@media only screen and (max-width: 650px) {

		/* Ocultar separador entre huéspedes y habitaciones en mobile */
		.txtPartyGroup .rooms-separator {
			display: none;
		}

		.txtPartyGroup {
			display: flex;
			flex-direction: column;
			align-items: flex-start;
			gap: 2px;
			font-size: 15px;
			line-height: 1.4;
			color: #555;
		}

		.txtPartyGroup .guests-row {
			display: flex;
			align-items: center;
			flex-wrap: wrap;
		}

		.txtPartyGroup .party-item {
			display: inline-flex;
			align-items: baseline;
			white-space: nowrap;
		}

		.txtPartyGroup .party-number {
			font-weight: 700;
			color: #333;
			margin-right: 4px;
		}

		.txtPartyGroup .party-label {
			color: #666;
		}

		.txtPartyGroup .party-separator {
			color: #ccc;
			margin: 0 8px;
		}

		.txtPartyGroup .rooms-row {
			display: block;
			color: #666;
			margin: 0;
			padding: 0;
			text-align: left;
		}

		.SelectorInitial {
			min-height: 65px;
			padding: 12px 45px 12px 14px;
			display: flex;
			align-items: center;
		}

		.PartyTypeSimulatorContainer {
			overflow: visible;
		}

		/* Ajuste para los labels del selector */
		.neo_party_selector>div:first-child {
			display: flex;
			flex-direction: column;
			min-width: 0;
		}

		.neo_party_selector>div:first-child>div {
			white-space: nowrap;
			overflow: visible;
			font-size: 14px;
			font-weight: 500;
		}

		.neo_party_selector>div:first-child>div:last-child {
			font-size: 12px;
			color: #888;
			margin-top: 3px;
			white-space: nowrap;
			font-weight: 400;
		}

		/* Asegurar que en mobile los controles sigan alineados a la derecha */
		.neo_party_selector {
			display: flex;
			justify-content: space-between;
			align-items: center;
			width: 100%;
			margin-bottom: 14px;
			padding-bottom: 14px;
			border-bottom: 1px solid #f0f0f0;
		}

		.neo_party_selector:last-of-type {
			border-bottom: none;
			margin-bottom: 0;
			padding-bottom: 0;
		}

		.neo_party_selector>div:last-child {
			display: flex;
			align-items: center;
			justify-content: flex-end;
			flex-shrink: 0;
			margin-left: 15px;
		}

		.neo_party_selector .flex.flex-s-center {
			display: flex;
			align-items: center;
			gap: 4px;
		}
	}

	/* Estilos para alinear correctamente los controles numéricos */
	.neo_party_selector {
		display: flex !important;
		justify-content: space-between !important;
		align-items: center !important;
		width: 100% !important;
		margin-bottom: 15px !important;
	}

	.neo_party_selector>div:first-child {
		flex: 1 !important;
		min-width: 0 !important;
	}

	.neo_party_selector>div:last-child {
		display: flex !important;
		align-items: center !important;
		justify-content: flex-end !important;
		flex-shrink: 0 !important;
		margin-left: 15px !important;
	}

	/* Asegurar que los botones y input estén alineados correctamente */
	.neo_party_selector .flex.flex-s-center {
		display: flex !important;
		align-items: center !important;
		gap: 3px !important;
	}
</style>

<div class="relative PartyTypeSimulatorContainer">
	<div class="PartyTypeSimulator px-sm-inputcontainer w-padding" style="border-right: none" maxadult="6" maxchild="5" maxrooms="15">
		<div class="SelectorInitial" data-testid="guest-selector-trigger">
									<span class="txtPartyGroup" style="align-items: flex-start !important;">
				<span class="guests-row">
					<span class="party-item txtAdults">
						<span class="party-number numberAdults">2</span>
						<span class="party-label txtAdultsTxt" plural="adultos" singular="adulto">
							adultos						</span>
					</span>
					<span class="party-item txtChildren"  style="display:none;">
						<span class="party-separator">•</span>
						<span class="party-number numberChildren">0</span>
						<span class="party-label txtChildrenTxt" plural="niños" singular="niño">
							niño						</span>
					</span>
					<span class="party-item txtBabies"  style="display:none;">
						<span class="party-separator">•</span>
						<span class="party-number numberBabies">0</span>
						<span class="party-label txtBabiesTxt" plural="bebés" singular="bebé">
							bebé						</span>
					</span>
				</span>
				<span class="rooms-separator party-separator">•</span>
				<span class="rooms-row txtRooms">
					<span class="party-number numberRooms">1</span>
					<span
						class="party-label txtRoomsTxt"
						plural="habitaciones"
						singular="habitación">
						habitación					</span>
				</span>
			</span>
			<label class='ignoreclick px-mk-inputicon'>
				<?xml version="1.0" encoding="iso-8859-1"?>
<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
	 viewBox="0 0 426.667 426.667" style="enable-background:new 0 0 426.667 426.667;" xml:space="preserve">
<g>
	<g>
		<g>
			<path d="M309.333,213.333c29.44,0,53.12-23.893,53.12-53.333s-23.68-53.333-53.12-53.333S256,130.56,256,160
				S279.893,213.333,309.333,213.333z"/>
			<path d="M149.333,192c35.307,0,63.787-28.693,63.787-64c0-35.307-28.48-64-63.787-64s-64,28.693-64,64
				C85.333,163.307,114.027,192,149.333,192z"/>
			<path d="M149.333,234.667C99.52,234.667,0,259.627,0,309.333v53.333h149.333v-48c0-18.133,7.147-49.813,50.56-74.027
				C181.333,236.693,163.307,234.667,149.333,234.667z"/>
			<path d="M309.333,256C270.187,256,192,275.627,192,314.667v48h234.667v-48C426.667,275.627,348.48,256,309.333,256z"/>
		</g>
	</g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
</svg>
			</label>
		</div>
	</div>
	<div class="PartyTypeSimulatorSelect nodisplay padding-xs-20">
		<div class="flex-column full">
			<div class="neo_party_selector neo_adults_selector flex flex-m-sb flex-s-center">
				<div>
					<div>Adultos</div>
					<div style="font-size: 11px; color: #888; margin-top: 2px;">
						4 años o más					</div>
				</div>
				<div class="flex flex-s-center">
										<button onclick="alterPartyGroup(this);" class="neo_button_partyselector neo_minus_button" type='button' party-type="adults" action-type='minus' data-testid="adults-minus">-</button>
					<input type="number" inputmode="numeric" query-default="2" class="neo_partyselector_quantity" party-type="adults" val="2" value="2" onchange="handlePartyInputChange(this);" min="1" max="6" style="background-color: #f8f8f8 !important; border-radius: 10px !important; width: 50px !important; height: 42px !important; margin: 0 3px !important; padding: 0 !important; border: none; text-align: center !important; -moz-appearance: textfield !important;" data-testid="adults-input" />
					<button onclick="alterPartyGroup(this);" class="neo_button_partyselector neo_plus_button" type='button' party-type="adults" action-type='plus' data-testid="adults-plus">+</button>
				</div>
			</div>
							<div class="neo_party_selector neo_adults_selector flex flex-m-sb flex-s-center">
					<div>
						<div>Menores</div>
						<div style="font-size: 11px; color: #888; margin-top: 2px;">
							Hasta 3 años						</div>
					</div>
					<div class="flex flex-s-center">
												<button onclick="alterPartyGroup(this);" class="neo_button_partyselector neo_minus_button" type='button' party-type="children" action-type='minus' data-testid="children-minus">-</button>
						<input type="number" inputmode="numeric" query-default="0" class="neo_partyselector_quantity" party-type="children" val="0" value="0" onchange="handlePartyInputChange(this);" min="0" max="5" style="background-color: #f8f8f8 !important; border-radius: 10px !important; width: 50px !important; height: 42px !important; margin: 0 3px !important; padding: 0 !important; border: none; text-align: center !important; -moz-appearance: textfield !important;" data-testid="children-input" />
						<button onclick="alterPartyGroup(this);" class="neo_button_partyselector neo_plus_button" type='button' party-type="children" action-type='plus' data-testid="children-plus">+</button>
					</div>
				</div>
						<div class="neo_party_selector neo_adults_selector flex flex-m-sb flex-s-center">
				<div>Habitaciones</div>
				<div class="flex flex-s-center">
										<button onclick="alterPartyGroup(this);" class="neo_button_partyselector neo_minus_button" type='button' party-type="rooms" action-type='minus' data-testid="rooms-minus">-</button>
					<input type="number" inputmode="numeric" class="neo_partyselector_quantity" party-type="rooms" val="1" value="1" onchange="handlePartyInputChange(this);" min="1" max="15" style="background-color: #f8f8f8 !important; border-radius: 10px !important; width: 50px !important; height: 42px !important; margin: 0 3px !important; padding: 0 !important; border: none; text-align: center !important; -moz-appearance: textfield !important;" data-testid="rooms-input" />
					<button onclick="alterPartyGroup(this);" class="neo_button_partyselector neo_plus_button" type='button' party-type="rooms" action-type='plus' data-testid="rooms-plus">+</button>
				</div>
			</div>
		</div>
		<div class="ChildrenAgesContainer nodisplay">
			<div class="flex-column">
				<div class="texto padding-xs-bottom-20" style="font-size: 12px !important;">¿Qué edades tienen los menores con los que viajas?</div>
				<div class="ChildrensAges" child-id="0" style="max-height: 200px !important; overflow-y: auto !important; padding-right: 5px !important;">
					<div class="ChildrensAgesSelectContainer" child-id="0" style="margin-bottom: 10px !important;">
						<select class="ChildrensAgeSelect" child-id="0" onchange="alterPartyGroup()" style="color: #444 !important; background-color: transparent !important; padding: 10px 8px !important; border: 1px solid #ddd !important; border-radius: 8px !important; width: 100% !important;" data-testid="child-age-select">
							<option value="" disabled selected>Edad el día del check-out</option>
															<option value="0">0 años</option>
															<option value="1">1 año</option>
															<option value="2">2 años</option>
															<option value="3">3 años</option>
													</select>
					</div>
				</div>
				<div class="NotValidChildrens nodisplay animated shake"><i class="fa fa-exclamation" aria-hidden="true"></i> Seleccione edad de los menores por favor</div>
			</div>
		</div>


		
	</div>

</div>

<script>
	// Global flag to track if ages have been initialized
	var childrenAgesInitialized = false;

	// Function to initialize children ages from GroupsForm
	function initializeChildrenAgesFromGroupsForm(force) {
		// Only initialize once unless forced
		if (childrenAgesInitialized && !force) {
			return;
		}

		try {
					} catch (e) {
			console.error('Error initializing children ages:', e);
		}
	}

	// Call initialization on page load (in case selects already exist)
	$(document).ready(function() {
		// Wait a bit to ensure selects are created
		setTimeout(function() {
			initializeChildrenAgesFromGroupsForm();
		}, 100);
	});
</script>
								<input name="MaxRooms" type="hidden" id="MaxRooms" value="15" />
				<input name="Nights" type="hidden" id="Nights" />
				<input name="Channel" type="hidden" id="Channel" value="2" />
				<input name="RateType" type="hidden" id="RateType" value="auto" />
				<input name="Pos" type="hidden" id="Pos" value='LodgeColbun' />
				<input name="Lng" type="hidden" id="Lng" value='es' />
				<input name="Currency" type="hidden" id="Currency" value="CLP" />
				<input name="MaxAgeChildrenNumber" type="hidden" id="MaxAgeChildrenNumber" value="3" />
				<input name="MaxAgeBabiesNumber" type="hidden" id="MaxAgeBabiesNumber" value="3" />
				<input name="ReturnUrl" type="hidden" id="ReturnUrl" value="https://www.lodgecolbun.com/lp.html" />

				<input name="FromUrl" type="hidden" id="FromUrl" value="https://www.lodgecolbun.com/" />
				<input name="Tag" type="hidden" id="Tag" value="" />
				<input name="Source" id="Source" type="hidden" value="Contact Form">

				<input name="ProductTimezone" id="ProductTimezone" type="hidden" value="America/Santiago">
				<input name="GlobalDaysModifier" id="GlobalDaysModifier" type="hidden" value="0">

				<input name="SearchID" type="hidden" id="SearchID" value="0" />

				<input name="FromPID" type="hidden" id="FromPID" value="24647" />

				<input name="Type" type="hidden" id="Type" value="Hotel" />


									<input name="ProductID" type="hidden" id="ProductID" value="24647" />
				
									<input name="ListID" type="hidden" id="ListID" value="0" />
				
				<input name="Location" type="hidden" id="Location" value="" />

				<input name="Device" type="hidden" id="Device" value="Computer" />
								<input name="UserID" type="hidden" id="UserID" value="0" />
				<input name="tag" type="hidden" id="tag" class="tag_cookie" value="" />
								<input name="Email" type="hidden" id="Email" value="" />
				<input name="UserType" type="hidden" id="UserType" value="" />
				<input name="AgreementType" type="hidden" id="AgreementType" value="" />

				<input name="GroupsForm" type="hidden" id="GroupsForm" value="1:2,0,0" />

				
				


									<input name="SkuID" type="hidden" id="SkuID" value="" />
				
				
				<div class="nodisplay" id="MinNightsError">
					El minimo de noches debe ser mayor o igual a 0				</div>

				<input name="MinNights" type="hidden" id="MinNights" value="0" />

				<div name="PxMkAcion_Search" id="PxMkAcion_Search" class="px-sm-searchbtn px-sm-inputcontainer w-padding px-mk-fixedwith-inputcontainer cta_webcheckin_px" btntxt="Reservar" loadingbtntxt="Buscando" data-testid="search-button">
					<span class="update-search-span">Reservar</span>
					<label for="" class="px-mk-searchicon px-mk-inputicon ignoreclick">
						<?xml version="1.0" encoding="iso-8859-1"?>
<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
	 viewBox="0 0 373.12 373.12" style="enable-background:new 0 0 373.12 373.12;" xml:space="preserve">
<g>
	<g>
		<path d="M266.667,234.667h-16.96l-5.867-5.867c20.907-24.213,33.493-55.68,33.493-90.133C277.333,62.08,215.253,0,138.667,0
			S0,62.08,0,138.667s62.08,138.667,138.667,138.667c34.453,0,65.92-12.587,90.133-33.387l5.867,5.867v16.853L341.333,373.12
			l31.787-31.787L266.667,234.667z M138.667,234.667c-53.013,0-96-42.987-96-96c0-53.013,42.987-96,96-96c53.013,0,96,42.987,96,96
			C234.667,191.68,191.68,234.667,138.667,234.667z"/>
	</g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
</svg>
					</label>
					<label for="" class="px-mk-searchloader px-mk-inputicon nodisplay ignoreclick">
						<?xml version="1.0" encoding="iso-8859-1"?>
<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
	 width="26.349px" height="26.35px" viewBox="0 0 26.349 26.35" style="enable-background:new 0 0 26.349 26.35;"
	 xml:space="preserve">
<g>
	<g>
		<circle cx="13.792" cy="3.082" r="3.082"/>
		<circle cx="13.792" cy="24.501" r="1.849"/>
		<circle cx="6.219" cy="6.218" r="2.774"/>
		<circle cx="21.365" cy="21.363" r="1.541"/>
		<circle cx="3.082" cy="13.792" r="2.465"/>
		<circle cx="24.501" cy="13.791" r="1.232"/>
		<path d="M4.694,19.84c-0.843,0.843-0.843,2.207,0,3.05c0.842,0.843,2.208,0.843,3.05,0c0.843-0.843,0.843-2.207,0-3.05
			C6.902,18.996,5.537,18.988,4.694,19.84z"/>
		<circle cx="21.364" cy="6.218" r="0.924"/>
	</g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
</svg>
					</label>
				</div>

			</form>

			<input type="hidden" id="MainPos" value="LodgeColbun">


		</div>

	

<div id="dataconfig" product-timezone="America/Santiago" urldispo="id=24647&RateID=63563&start=2026-06-10" class="nodisplay" lng="es" DatePickerStart="0"></div>

<link rel="stylesheet" href="https://unpkg.com/tippy.js@6/animations/scale.css" />
<script src="https://unpkg.com/@popperjs/core@2"></script>
<script src="https://unpkg.com/tippy.js@6"></script>
			<script defer src="/neo_modules/marketplace_buscador_v8/js.js?filev=1778144039" type="text/javascript"></script>
<style>/* ------------ VARIABLES ------------ */
@import url("https://fonts.googleapis.com/css2?family=Poppins:ital,wght@0,100;0,200;0,300;0,400;0,500;0,600;0,700;0,800;0,900;1,100;1,200;1,300;1,400;1,500;1,600;1,700;1,800;1,900&display=swap");
.px-mk-buscador-container {
  font-size: 12px;
}

#MinNightsError {
  float: left;
  width: calc(100% - 22px);
  padding: 10px;
  border: 1px solid #982828;
  line-height: 20px;
  background: #f3e8e8;
  color: #000;
}

.NotValidChildrens {
  width: 100%;
  float: left;
  text-align: center;
  color: #800;
  font-size: 1em;
  font-weight: bold;
  padding: 10px 0px;
}

.update-search-span {
  font-weight: 400;
  margin-right: 10px;
}

.ChildrensAgesSelect.notvalid {
  border: 1px solid #b51212 !important;
}

.buscar_lp .buscar_lp_beforerate {
  display: none;
}

.buscar_lp .NochesError {
  display: none;
}

#NochesError {
  background: white;
  border-right: 1px solid #ccc;
  display: flex;
  justify-content: center;
  align-items: center;
}

.buscar_lp .TextoFormulario {
  float: left;
  width: auto;
  margin-right: 10px;
  text-transform: capitalize;
  padding-top: 5px;
  font-size: 13px;
}

.buscar_lp .imput_text_rooms {
  font-size: 1em;
  padding: 4px 2px;
  border: 1px solid #eaeaea;
  margin-right: 10px;
  float: left;
  max-width: 35px;
}

.buscar_lp .roomtypecontariner {
  float: left;
  width: auto;
}

.buscar_lp .bucle {
  float: left;
  width: auto;
}

.button_bucar {
  float: right;
  width: auto;
  border: 1px solid #999;
  font-size: 14px;
  padding: 4px 10px;
  background: #eaeaea;
  color: #000;
}

.button_bucar:hover {
  background: #999;
  color: #fff;
  cursor: pointer;
}

.ContenidoHab {
  overflow: hidden;
  width: 100%;
  margin-bottom: 5px;
}

.px-mk-buscador-container.buscar_lp .SelectorInitial {
  padding: 1em;
  margin: 0;
  cursor: pointer;
  border: none;
  box-sizing: border-box;
  font-size: 1.1em;
  text-overflow: ellipsis;
  overflow: hidden;
  min-width: 150px;
  text-align: left;
  padding-right: 2rem !important;
  width: 100%;
  height: 100%;
  display: flex;
  background: transparent !important;
  align-items: center;
}
.px-mk-buscador-container.buscar_lp .SelectorInitial .texto {
  font-weight: bold;
}

.px-mk-buscador-container.buscar_lp .RoomsSelectContainer {
  width: 100%;
  padding-bottom: 5px;
  margin-bottom: 5px;
  border-bottom: 1px dotted #ccc;
  display: flex;
  align-items: center;
}
.px-mk-buscador-container.buscar_lp .RoomsSelectContainer .RoomNameContainer {
  width: calc(40% - 10px);
  margin-right: 10px;
  text-transform: capitalize;
  font-size: 1em;
  color: #444;
}
.px-mk-buscador-container.buscar_lp .RoomsSelectContainer .texto {
  float: left;
  width: 100%;
  padding-bottom: 3px;
  font-size: 14px;
  color: #444;
}
.px-mk-buscador-container.buscar_lp .RoomsSelectContainer select {
  border: 1px solid #d0d0d0;
  width: 100%;
  border-radius: 4px;
  padding: 2px;
  color: #666;
  font-size: 11px;
  margin-bottom: 5px;
  cursor: pointer;
}
.px-mk-buscador-container.buscar_lp .RoomsSelectContainer .hostContainer {
  width: 60%;
}
.px-mk-buscador-container.buscar_lp .RoomsSelectContainer .hostContainer .hostPeopleContainer .AdultsContainer,
.px-mk-buscador-container.buscar_lp .RoomsSelectContainer .hostContainer .hostPeopleContainer .ChildrensContainers {
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;
  flex: 1;
  margin: 3px;
}
.px-mk-buscador-container.buscar_lp .RoomsSelectContainer .hostContainer .hostPeopleContainer .AdultsContainer > *,
.px-mk-buscador-container.buscar_lp .RoomsSelectContainer .hostContainer .hostPeopleContainer .ChildrensContainers > * {
  flex-grow: 1;
  width: 100%;
}
.px-mk-buscador-container.buscar_lp .RoomsSelectContainer .hostContainer .ChildrensAges {
  float: left;
  width: 100%;
  margin-top: 5px;
}
.px-mk-buscador-container.buscar_lp .RoomsSelectContainer .hostContainer .ChildrensAges .ChildrensAgesSelect {
  float: left;
  width: calc(50% - 5px) !important;
  margin-right: 5px;
  margin-bottom: 5px;
}
.px-mk-buscador-container.buscar_lp .RoomsSelectContainer .hostContainer .ChildrensAges .ChildrensAgesSelect:nth-child(even) {
  float: right !important;
  margin-right: 0px;
}
.px-mk-buscador-container.buscar_lp .RoomsSelectContainer .hostContainer .ChildrensAges .texto {
  float: left;
  width: 100%;
  padding-bottom: 3px;
  font-size: 14px;
  color: #444;
}

.px-mk-buscador-container.buscar_lp .px-mk-addnewroom,
.px-mk-buscador-container.buscar_lp .px-mk-removeroom {
  flex: 1;
  cursor: pointer;
  margin: 3px;
}
.px-mk-buscador-container.buscar_lp .px-mk-addnewroom.nodisplay,
.px-mk-buscador-container.buscar_lp .px-mk-removeroom.nodisplay {
  display: none;
}
.px-mk-buscador-container.buscar_lp .px-mk-addnewroom svg,
.px-mk-buscador-container.buscar_lp .px-mk-removeroom svg {
  height: 18px;
  width: 18px;
  fill: currentColor;
  margin-left: 3px;
}
.px-mk-buscador-container.buscar_lp .px-mk-addnewroom button,
.px-mk-buscador-container.buscar_lp .px-mk-removeroom button {
  width: 100%;
  display: flex;
  align-items: center;
  justify-content: center;
  text-align: center;
  background: #f3f3f3;
  border: 1px solid #ccc;
  padding: 5px 0px;
  box-sizing: border-box;
  border-radius: 30px;
  color: #444;
  font-size: 0.9em;
  text-transform: capitalize;
  cursor: pointer;
}
.px-mk-buscador-container.buscar_lp .px-mk-addnewroom button span,
.px-mk-buscador-container.buscar_lp .px-mk-removeroom button span {
  text-transform: capitalize;
  line-height: 1;
}

.px-mk-buscador-container.buscar_lp {
  display: flex;
  align-items: center;
  height: 100%;
  padding: 3px;
  box-sizing: border-box;
  transition: 0.3s ease-out;
}
.px-mk-buscador-container.buscar_lp #MultiplePartySelect {
  float: left;
  flex-direction: column;
  display: flex;
  width: calc(100% - 12px);
  padding: 5px;
  background: #fff;
  border: 1px solid #ddd;
  margin: 0px;
  position: absolute;
  top: 100%;
  min-width: 250px;
  z-index: 11;
  box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.16), 0 0 0 1px rgba(0, 0, 0, 0.08);
}
.px-mk-buscador-container.buscar_lp #MultiplePartySelect.nodisplay {
  display: none;
}
.px-mk-buscador-container.buscar_lp .PartyTypeSimulatorSelect {
  background: #fff;
  border: 1px solid #ddd;
  margin: 0px;
  position: absolute;
  top: 100%;
  left: 0;
  display: flex;
  z-index: 99;
  flex-direction: column;
}
.px-mk-buscador-container.buscar_lp .PartyTypeSimulatorSelect .px-sm-inputcontainer {
  height: 50px;
  border-right: none;
  border-bottom: 1px solid #ccc;
  cursor: pointer;
  padding: 1em 4em 1em 1em;
  box-sizing: border-box;
}
.px-mk-buscador-container.buscar_lp .PartyTypeSimulatorSelect .px-sm-inputcontainer:last-child {
  border-bottom: none;
}
.px-mk-buscador-container.buscar_lp .PartyTypeSimulatorSelect .px-sm-inputcontainer .texto {
  padding: 0px;
  display: flex;
  align-items: center;
  text-align: left;
  font-size: 14px;
  color: #888;
}
.px-mk-buscador-container.buscar_lp .PartyTypeSimulatorSelect .px-sm-inputcontainer .texto:hover {
  color: #444;
}
.px-mk-buscador-container.buscar_lp .PartyTypeSimulatorSelect.nodisplay {
  display: none;
}
.px-mk-buscador-container.buscar_lp .px-mk-searchform {
  float: none;
  width: auto;
  display: flex;
  align-items: center;
  height: 60px;
  box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.16), 0 0 0 1px rgba(0, 0, 0, 0.08);
}
.px-mk-buscador-container.buscar_lp .px-mk-searchform > * {
  height: 100%;
  margin: 0;
  float: none;
  position: relative;
  flex-shrink: 0;
  flex-grow: 1;
}
.px-mk-buscador-container.buscar_lp .px-mk-searchform .px-sm-searchbtn {
  min-width: 18em;
}

.ModuloWrap_marketplace_buscador_v3.isolate::after {
  content: "";
  position: fixed;
  top: 0;
  left: 0;
  width: 100vw;
  height: 100vh;
  background: rgba(0, 0, 0, 0.3);
  z-index: -1;
  bottom: 0;
  right: 0;
  -webkit-backdrop-filter: blur(5px);
          backdrop-filter: blur(5px);
  animation: appearIsolate 1s cubic-bezier(0.165, 0.84, 0.44, 1) forwards;
}

@keyframes appearIsolate {
  from {
    opacity: 0;
  }
  to {
    opacity: 1;
  }
}
.px-sm-inputcontainer {
  display: flex;
  position: relative;
  border-right: 1px solid #ccc;
  transition: 0.3s ease-out;
  cursor: pointer;
  flex-direction: column;
  justify-content: center;
  align-items: flex-start;
  text-align: left;
  box-sizing: border-box;
  background-color: white;
}
.px-sm-inputcontainer .hasDatepicker {
  cursor: pointer !important;
}
.px-sm-inputcontainer input {
  border-bottom: none !important;
  box-shadow: none !important;
}
.px-sm-inputcontainer label.error {
  background: #bf0000;
  float: none;
  min-width: 100%;
  margin: 0px;
  left: 0;
  padding: 10px 20px;
  box-sizing: border-box;
  top: 100%;
  bottom: initial;
  right: auto;
  transform: translatey(0);
  color: white;
  font-weight: 400;
  text-transform: uppercase;
  font-size: 10px;
  letter-spacing: 2px;
  position: absolute;
  line-height: 1.6em;
}
.px-sm-inputcontainer.px-mk-fixedwidth-inputcontainer {
  width: 11em;
}
.px-sm-inputcontainer.px-mk-fixedwidth-inputcontainer-max {
  width: 18em;
}
.px-sm-inputcontainer.w-padding {
  padding: 0.6em 1em;
}
.px-sm-inputcontainer .px-mk-labelinput {
  margin-bottom: 3px;
  font-size: 13px;
  opacity: 1;
  cursor: pointer;
  margin-top: 3px;
}
.px-sm-inputcontainer .px-mk-inputicon {
  position: absolute;
  z-index: 2;
  right: 1.2em;
  color: #aaa;
  top: 50%;
  transform: translatey(-50%);
  font-size: 1.2em;
  transition: 0.3s ease-out;
  cursor: pointer;
}
.px-sm-inputcontainer .px-mk-inputicon svg {
  height: 1.2em;
  width: 1.2em;
  fill: currentColor;
}
.px-sm-inputcontainer.nodisplay {
  display: none;
}
.px-sm-inputcontainer:last-child {
  border-right: none;
}
.px-sm-inputcontainer input,
.px-sm-inputcontainer select,
.px-sm-inputcontainer textarea {
  position: relative;
  -webkit-appearance: none;
  -moz-appearance: none;
  border: none;
  box-sizing: border-box;
  font-size: 1.1em;
  text-overflow: ellipsis;
  height: auto;
  transition: inherit;
  background-color: transparent;
  max-width: 100%;
  width: 100%;
}
.px-sm-inputcontainer input option,
.px-sm-inputcontainer select option,
.px-sm-inputcontainer textarea option {
  background-color: #fff;
}
.px-sm-inputcontainer input[type=text]:not(.hasDatepicker),
.px-sm-inputcontainer select[type=text]:not(.hasDatepicker),
.px-sm-inputcontainer textarea[type=text]:not(.hasDatepicker) {
  cursor: text;
}
.px-sm-inputcontainer input {
  padding: 0px;
  margin: 0px !important;
}
.px-sm-inputcontainer > select {
  padding: 1em 4em 1em 1em;
  height: 100%;
  width: 100%;
  cursor: pointer;
  white-space: initial;
}
.px-sm-inputcontainer > select::-ms-expand {
  display: none;
  /* hide the default arrow in ie10 and ie11 */
}
.px-sm-inputcontainer:hover {
  background-color: #f0f0f0;
}
.px-sm-inputcontainer:hover label {
  color: #e0ae1b;
}

.px-mk-searchinfo + .px-mk-buscador-container .px-mk-searchform {
  width: 100%;
}
.px-mk-searchinfo .px-mk-searchinfo-inner {
  width: 100%;
  height: 40px;
  background: #fafafa;
  box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.16), 0 0 0 1px rgba(0, 0, 0, 0.08);
  border-radius: 2px;
  text-transform: uppercase;
  font-size: 1em;
  box-sizing: border-box;
  font-weight: 600;
}
.px-mk-searchinfo .px-mk-searchinfo-inner > div {
  text-align: center;
  border-right: 1px solid #ccc;
  padding: 0 20px;
  box-sizing: border-box;
  height: 100%;
}
.px-mk-searchinfo .px-mk-searchinfo-inner i {
  color: goldenrod;
  margin-right: 10px;
  font-size: 20px;
}
.px-mk-searchinfo .px-mk-searchinfo-inner > .searchinfo-title {
  flex-grow: 0;
  background: #eee;
  color: #000;
}
.px-mk-searchinfo .px-mk-searchinfo-inner > .px-sm-searchbtn {
  width: auto;
  font-weight: 400;
  text-align: center;
  justify-content: center;
}
.px-mk-searchinfo .px-mk-searchinfo-inner.px-mk-searchinfo-column {
  height: auto;
  flex-wrap: wrap;
  width: 100%;
}
.px-mk-searchinfo .px-mk-searchinfo-inner.px-mk-searchinfo-column > * {
  height: 3em;
  border-bottom: 1px solid #ccc;
  padding: 1em;
  width: 50%;
  text-align: left;
  line-height: 1.2;
}
.px-mk-searchinfo .px-mk-searchinfo-inner.px-mk-searchinfo-column > * .px-mk-iconchangesearch {
  height: 1.2em;
  width: 1.2em;
}

.px-mk-iconchangesearch {
  color: goldenrod;
  height: 1.5em;
  width: 1.5em;
  margin-right: 0.5em;
}
.px-mk-iconchangesearch svg {
  fill: currentColor;
  height: 100%;
  width: 100%;
}

div.ui-datepicker#ui-datepicker-div .ui-widget-header {
  background: transparent !important;
  border: none !important;
}
div.ui-datepicker#ui-datepicker-div .ui-datepicker-next,
div.ui-datepicker#ui-datepicker-div .ui-datepicker-prev {
  border-radius: 40px !important;
  cursor: pointer !important;
}
div.ui-datepicker#ui-datepicker-div .ui-state-default,
div.ui-datepicker#ui-datepicker-div .ui-widget-content .ui-state-default,
div.ui-datepicker#ui-datepicker-div .ui-widget-header .ui-state-default {
  border-radius: 8px;
  border: none;
  background-color: rgba(0, 0, 0, 0.02);
  text-align: center;
  display: inline-flex;
  justify-content: center;
  align-items: center;
  width: 90%;
  font-size: 1em;
  transition: 0.3s ease-out;
  border: 1px solid #eee;
}
div.ui-datepicker#ui-datepicker-div .ui-state-focus,
div.ui-datepicker#ui-datepicker-div .ui-state-hover,
div.ui-datepicker#ui-datepicker-div .ui-widget-content .ui-state-focus,
div.ui-datepicker#ui-datepicker-div .ui-widget-content .ui-state-hover,
div.ui-datepicker#ui-datepicker-div .ui-widget-header .ui-state-focus,
div.ui-datepicker#ui-datepicker-div .ui-widget-header .ui-state-hover {
  background: white;
  border: 1px solid #000 !important;
}
div.ui-datepicker#ui-datepicker-div .ui-state-active,
div.ui-datepicker#ui-datepicker-div .ui-widget-content .ui-state-active,
div.ui-datepicker#ui-datepicker-div .ui-widget-header .ui-state-active,
div.ui-datepicker#ui-datepicker-div .ui-state-highlight,
div.ui-datepicker#ui-datepicker-div .ui-widget-content .ui-state-highlight,
div.ui-datepicker#ui-datepicker-div .ui-widget-header .ui-state-highlight {
  background: #000;
  color: white;
}
div.ui-datepicker#ui-datepicker-div td {
  text-align: center;
}

.px-mk-searchloader {
  animation: spinStep steps(1) 1s infinite;
  height: 1em;
  width: 1em;
  transform-origin: top;
}

.neo_m_buscador .neo_marketplace_buscador_v3 {
  padding: 30px 20px;
  justify-content: center;
  align-items: center;
}

@keyframes spinStep {
  0% {
    transform: translatey(-50%);
  }
  12.5% {
    transform: rotate(45deg) translatey(-50%);
  }
  25% {
    transform: rotate(90deg) translatey(-50%);
  }
  37.5% {
    transform: rotate(135deg) translatey(-50%);
  }
  50% {
    transform: rotate(180deg) translatey(-50%);
  }
  62.5% {
    transform: rotate(225deg) translatey(-50%);
  }
  75% {
    transform: rotate(270deg) translatey(-50%);
  }
  87.5% {
    transform: rotate(315deg) translatey(-50%);
  }
  100% {
    transform: rotate(360deg) translatey(-50%);
  }
}
.px-sm-searchbtn {
  height: 100%;
  box-sizing: border-box;
  display: flex;
  text-align: left;
  align-items: flex-start;
  justify-content: center;
  text-transform: uppercase;
  font-size: 1em;
  letter-spacing: 1px;
  line-height: 1;
  background-color: #000;
  color: white;
  cursor: pointer;
  transition: 0.3s ease-out;
  border: none;
  width: 11em;
  padding: 1em 4em 1em 1em;
  flex: 1;
}
.px-sm-searchbtn .px-mk-inputicon svg {
  height: 1em;
  width: 1em;
  fill: white !important;
}
.px-sm-searchbtn:hover {
  background-color: #a37a00;
}

.ModuloWrap_marketplace_list {
  width: 100%;
}

.buscar_lp:not(.px-mk-buscador-vertical) .PartyTypeSimulator {
  height: 100%;
}

.buscar_lp.px-mk-buscador-vertical {
  box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.16), 0 0 0 1px rgba(0, 0, 0, 0.08);
  border-radius: 2px;
  padding: 0;
  margin: 3px;
  height: auto;
  width: auto;
}
.buscar_lp.px-mk-buscador-vertical .px-mk-searchform {
  transition: 1s cubic-bezier(0.17, 0.84, 0.44, 1);
  height: auto;
  width: 100%;
  flex-wrap: wrap;
}
.buscar_lp.px-mk-buscador-vertical .px-mk-searchform > * {
  width: 100%;
  height: 4.5em;
}
.buscar_lp.px-mk-buscador-vertical .px-mk-searchform .wrap_PartyTypeSimulator {
  height: auto;
  min-height: 4.5em;
  width: 50%;
  box-sizing: border-box;
}
.buscar_lp.px-mk-buscador-vertical .px-mk-searchform .wrap_PartyTypeSimulator .SelectorInitial {
  min-height: 4.5em;
  padding: 0.6em 1em;
}
.buscar_lp.px-mk-buscador-vertical .px-mk-searchform .wrap_PartyTypeSimulator .PartyTypeSimulatorSelect,
.buscar_lp.px-mk-buscador-vertical .px-mk-searchform .wrap_PartyTypeSimulator #MultiplePartySelect {
  position: static;
  background: rgba(248, 248, 248, 0.9725490196);
}
.buscar_lp.px-mk-buscador-vertical .px-sm-inputcontainer {
  border-bottom: 1px solid #ccc;
  border-right: none;
  max-width: none;
  width: 100%;
}
.buscar_lp.px-mk-buscador-vertical .px-sm-inputcontainer.fechas_ancho_entrada, .buscar_lp.px-mk-buscador-vertical .px-sm-inputcontainer.fechas_ancho_salida {
  width: 100%;
  box-sizing: border-box;
  margin: 0px;
}
.buscar_lp.px-mk-buscador-vertical .px-sm-inputcontainer.fechas_ancho_salida {
  border-left: 1px solid #ccc;
}
.buscar_lp.px-mk-buscador-vertical .px-sm-inputcontainer.px-mk-productidhidden {
  height: 0px;
  width: 100%;
}
.buscar_lp.px-mk-buscador-vertical .px-sm-inputcontainer input,
.buscar_lp.px-mk-buscador-vertical .px-sm-inputcontainer select,
.buscar_lp.px-mk-buscador-vertical .px-sm-inputcontainer textarea {
  max-width: 100%;
}

.px-mk-filter-disabled {
  pointer-events: none !important;
  opacity: 0.5 !important;
}

.px-mk-buscador-vertical.px-mk-searchform .px-sm-inputcontainer:last-child,
.px-mk-buscador-vertical .px-sm-inputcontainer:last-child {
  border-bottom: none;
  border-right: none;
}

.px-mk-hidesearchform {
  opacity: 0;
  pointer-events: none;
  max-height: 0px;
  overflow: hidden;
}

.ignoreclick {
  pointer-events: none;
}

.px-sm-searchbtn > i {
  font-size: 20px;
  position: relative;
  left: 0;
  top: -1px;
  margin-right: 20px;
  margin-left: -10px;
}

.btn-searching span {
  opacity: 0;
  max-width: 0px;
  overflow: hidden;
  transition: 0.3s ease-out;
}

#ProductID option {
  text-transform: none;
}

#ProductID option[value=everyproduct] {
  font-weight: 600;
}

#ProductID option[value=""][disabled] {
  background-color: #eee;
  color: #555;
}

.px-mk-disabled-temp {
  background-color: #eee;
  cursor: not-allowed;
  pointer-events: none;
  color: #bbb;
}

.px-mk-productid.px-sm-inputcontainer.px-mk-productidhidden {
  opacity: 0;
  max-width: 0px;
  pointer-events: none;
  padding: 0px;
  margin: 0px;
  border: none;
}

.px-mk-productid.px-sm-inputcontainer {
  max-width: 300px;
  transition: 0.3s ease;
  overflow: hidden;
}

.px-mk-locationdropdown {
  position: absolute;
  top: calc(100% + 0.1em);
  left: 0;
  padding: 0;
  line-height: 1.2;
  background: white;
  box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.16), 0 0 0 1px rgba(0, 0, 0, 0.08);
  z-index: 999;
  border-radius: 0 0 4px 4px;
  max-height: 50vh;
  overflow: auto;
  transition: 0.3s cubic-bezier(0.25, 0.46, 0.45, 0.94);
  opacity: 0;
  pointer-events: none;
  transform: translateY(-1em);
  width: 100%;
}
.px-mk-locationdropdown.activeAC {
  transform: none;
  pointer-events: initial;
  opacity: 1;
}
.px-mk-locationdropdown > * {
  padding: 1.2em 1.5em;
  white-space: nowrap;
  max-width: 400px;
  overflow: hidden;
  text-overflow: ellipsis;
  width: 100%;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: flex-start;
  box-sizing: border-box;
}
.px-mk-locationdropdown > *.suggestion_hover {
  background-color: #f2f2f2;
}
.px-mk-locationdropdown > *:hover {
  background-color: #f2f2f2;
}
.px-mk-locationdropdown > *:hover .px-mk-locationimg {
  fill: goldenrod;
}
.px-mk-locationdropdown > * .px-mk-locationtxt {
  width: 100%;
  overflow: hidden;
  text-overflow: ellipsis;
}
.px-mk-locationdropdown > * .px-mk-locationimg {
  height: 1.1em;
  width: 1.1em;
  margin-right: 0.6em;
  flex-shrink: 0;
  fill: #aaa;
  margin-right: 0.8em;
}
.px-mk-locationdropdown > * .px-mk-locationimg svg {
  height: 100%;
  width: 100%;
  -o-object-fit: contain;
     object-fit: contain;
}

.px-mk-locationautocomplete {
  height: 100%;
  width: 100%;
  box-sizing: border-box;
  padding-right: 2em;
}
.px-mk-locationautocomplete input {
  height: 100%;
  padding: 0em 1em;
  width: 100%;
}

.ui-datepicker {
  font-size: 16px !important;
  box-shadow: 0 2px 20px rgba(0, 0, 0, 0.2);
  width: auto;
  border-radius: 0px !important;
  padding: 5px !important;
  width: auto !important;
  box-sizing: border-box;
}

.ui-datepicker td {
  margin: 0px !important;
  padding: 0px;
}

.ui-datepicker td > * {
  height: 40px;
  width: 40px !important;
  border-radius: 0px !important;
  border: 1px solid transparent !important;
  box-sizing: border-box;
}

.ui-datepicker table {
  margin: 0px !important;
}

.neo_marketplace_buscador_v3 * {
  font-size: 13px !important;
}

.neo_marketplace_buscador_v3 input, .neo_marketplace_buscador_v3 select {
  font-size: 16px !important;
}

.neo_modules_cart_hotel_v2 .cart_top_hotel_v2 .PartyTypeSimulator {
  width: 100%;
}

.neo_marketplace_buscador_v3 .PartyTypeSimulatorSelect {
  position: absolute;
  z-index: 999;
  top: 55px;
  left: 0px;
  padding: 5px;
  background: #fff;
  margin: 0px;
  box-shadow: 0 2px 16px rgba(0, 0, 0, 0.15);
  padding: 20px 25px;
  line-height: 1.5;
  box-sizing: border-box;
  width: 300px;
  max-width: 100vw;
}

.txtPartyGroup {
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  margin-right: auto;
  padding-right: 30px;
}

input.neo_partyselector_quantity {
  padding: 15px 10px;
  font-size: 18px;
  text-align: center;
  border: none;
  background: transparent;
  width: 60px;
  -moz-appearance: textfield;
}
input.neo_partyselector_quantity::-webkit-outer-spin-button,
input.neo_partyselector_quantity::-webkit-inner-spin-button {
  -webkit-appearance: none;
  margin: 0;
}
input.neo_partyselector_quantity:focus {
  outline: none;
  background-color: rgba(0, 0, 0, 0.03);
  border-radius: 5px;
}

.ChildrensAges {
  max-height: 180px;
  overflow-y: auto;
  overflow-x: hidden;
  padding-right: 5px;
}
.ChildrensAges::-webkit-scrollbar {
  width: 6px;
}
.ChildrensAges::-webkit-scrollbar-track {
  background: #f1f1f1;
  border-radius: 10px;
}
.ChildrensAges::-webkit-scrollbar-thumb {
  background: #888;
  border-radius: 10px;
}
.ChildrensAges::-webkit-scrollbar-thumb:hover {
  background: #555;
}

@media only screen and (max-width: 650px) {
  .PartyTypeSimulatorContainer {
    height: auto !important;
  }
  .PartyTypeSimulatorContainer .PartyTypeSimulatorSelect {
    position: static !important;
    width: 100%;
  }
  .px-mk-locationdropdown {
    width: 100%;
    box-shadow: 0 4px 9px rgba(0, 0, 0, 0.5);
  }
  .neo_marketplace_buscador_v3 * {
    font-size: 15px !important;
  }
  .neo_marketplace_buscador_v3 input, .neo_marketplace_buscador_v3 select {
    font-size: 16px !important;
  }
  .neo_marketplace_buscador_v3 {
    width: 100%;
    display: flex;
  }
  .ui-datepicker {
    font-size: 19px !important;
    z-index: 1000 !important;
    width: calc(100vw - 30px) !important;
    left: 10px !important;
    box-shadow: 0 2px 20px rgba(0, 0, 0, 0.5);
    padding: 10px !important;
    box-sizing: border-box;
  }
  
  /* Ajustes para el selector de party en mobile */
  .neo_marketplace_buscador_v3 .txtPartyGroup,
  .PartyTypeSimulator .txtPartyGroup,
  .SelectorInitial .txtPartyGroup {
    white-space: normal !important;
    overflow: visible !important;
    text-overflow: clip !important;
    padding-right: 10px !important;
    font-size: 10px !important;
    line-height: 1.4 !important;
    display: flex !important;
    flex-wrap: wrap !important;
    align-items: center !important;
    gap: 2px !important;
    max-width: calc(100% - 40px) !important;
  }
  
  .neo_marketplace_buscador_v3 .txtPartyGroup span,
  .PartyTypeSimulator .txtPartyGroup span,
  .SelectorInitial .txtPartyGroup span {
    white-space: nowrap !important;
    font-size: 15px !important;
  }
  
  .neo_marketplace_buscador_v3 .txtPartyGroup .mdi-circle-small,
  .PartyTypeSimulator .txtPartyGroup .mdi-circle-small,
  .SelectorInitial .txtPartyGroup .mdi-circle-small {
    font-size: 12px !important;
    margin: 0 -3px !important;
  }
  
  .neo_marketplace_buscador_v3 .SelectorInitial,
  .PartyTypeSimulator .SelectorInitial {
    min-height: 55px !important;
    padding: 8px 40px 8px 10px !important;
    display: flex !important;
    align-items: center !important;
  }
  
  .neo_marketplace_buscador_v3 .PartyTypeSimulatorContainer,
  .PartyTypeSimulatorContainer {
    overflow: visible !important;
  }
  
  .px-mk-buscador-container {
    font-size: 16px;
  }
  .px-mk-buscador-container select,
  .px-mk-buscador-container textarea,
  .px-mk-buscador-container input[type=text],
  .px-mk-buscador-container input[type=password],
  .px-mk-buscador-container input[type=datetime],
  .px-mk-buscador-container input[type=datetime-local],
  .px-mk-buscador-container input[type=date],
  .px-mk-buscador-container input[type=month],
  .px-mk-buscador-container input[type=time],
  .px-mk-buscador-container input[type=week],
  .px-mk-buscador-container input[type=number],
  .px-mk-buscador-container input[type=email],
  .px-mk-buscador-container input[type=url],
  .px-mk-buscador-container input[type=search],
  .px-mk-buscador-container input[type=tel],
  .px-mk-buscador-container input[type=color] {
    font-size: 1em;
  }
}/*# sourceMappingURL=css.css.map */</style>
<script>
	(function() {
		function run() {
			try {
				var span = document.querySelector('#PxMkAcion_Search .update-search-span');
				var btn = document.getElementById('PxMkAcion_Search');
				if (!span) return;

				var themeHex = '#29412b';

				function parseHex(hex) {
					if (!hex) return null;
					hex = String(hex).trim();
					if (hex.startsWith('#')) hex = hex.slice(1);
					if (hex.length === 3) {
						hex = hex.split('').map(function(ch) {
							return ch + ch;
						}).join('');
					}
					if (hex.length !== 6) return null;
					var r = parseInt(hex.slice(0, 2), 16);
					var g = parseInt(hex.slice(2, 4), 16);
					var b = parseInt(hex.slice(4, 6), 16);
					if ([r, g, b].some(function(v) {
							return isNaN(v);
						})) return null;
					return {
						r: r,
						g: g,
						b: b
					};
				}

				function relL(rgb) {
					function toLin(c) {
						c = c / 255;
						return c <= 0.03928 ? c / 12.92 : Math.pow((c + 0.055) / 1.055, 2.4);
					}
					var R = toLin(rgb.r),
						G = toLin(rgb.g),
						B = toLin(rgb.b);
					return 0.2126 * R + 0.7152 * G + 0.0722 * B;
				}

				function contrast(L1, L2) {
					var a = Math.max(L1, L2);
					var b = Math.min(L1, L2);
					return (a + 0.05) / (b + 0.05);
				}

				var rgb = parseHex(themeHex);
				if (!rgb) {
					if (btn) {
						var bg = window.getComputedStyle(btn).backgroundColor; // rgb(a)
						var m = bg && bg.match(/rgba?\((\d+),\s*(\d+),\s*(\d+)/i);
						if (m) {
							rgb = {
								r: parseInt(m[1], 10),
								g: parseInt(m[2], 10),
								b: parseInt(m[3], 10)
							};
						}
					}
				}
				if (!rgb) return;

				var Lbg = relL(rgb);
				var Lwhite = relL({
					r: 255,
					g: 255,
					b: 255
				});
				var Lblack = relL({
					r: 0,
					g: 0,
					b: 0
				});
				var cWhite = contrast(Lbg, Lwhite);
				var cBlack = contrast(Lbg, Lblack);

				var textColor = cBlack >= cWhite ? '#000000' : '#FFFFFF';
				span.style.setProperty('color', textColor, 'important');
				if (btn) {
					btn.style.setProperty('color', textColor, 'important');

					// Recolor inline SVG icons (search and loading) to match the contrast color
					function paintInlineSVG(container, color) {
						try {
							var svgs = container.querySelectorAll('svg');
							svgs.forEach(function(svg) {
								// Support SVGs that use currentColor
								svg.style.setProperty('color', color, 'important');
								svg.setAttribute('color', color);
								// Force fill/stroke via style to override inline attrs
								svg.style.setProperty('fill', color, 'important');
								svg.style.setProperty('stroke', color, 'important');
								// Update common shape elements
								svg.querySelectorAll('path, circle, rect, polygon, line, polyline, ellipse, g').forEach(function(node) {
									node.style.setProperty('fill', color, 'important');
									node.style.setProperty('stroke', color, 'important');
								});
								// Also override attributes for stubborn icons
								svg.querySelectorAll('[fill]').forEach(function(node) {
									node.setAttribute('fill', color);
								});
								svg.querySelectorAll('[stroke]').forEach(function(node) {
									node.setAttribute('stroke', color);
								});
							});
						} catch (e) {
							/* ignore */
						}
					}

					var iconLabel = btn.querySelector('.px-mk-searchicon');
					var loaderLabel = btn.querySelector('.px-mk-searchloader');
					if (iconLabel) paintInlineSVG(iconLabel, textColor);
					if (loaderLabel) paintInlineSVG(loaderLabel, textColor);
				}
			} catch (e) {
				/* ignore */
			}
		}

		if (document.readyState === 'loading') {
			document.addEventListener('DOMContentLoaded', run);
		} else {
			run();
		}
	})();
</script>
	<script>
		if (localStorage.getItem('tradename')) {
			localStorage.removeItem('tradename');
		}
	</script>

<!-- Scripts para el mapa -->
<script src="https://unpkg.com/leaflet@1.7.1/dist/leaflet.js" integrity="sha512-XQoYMqMTK8LvdxXYG3nZ448hOEQiglfqkJs1NOQV44cWnUrBc8PkAOcXy20w0vlaXaVUearIOBhiXZ5V3ynxwA==" crossorigin=""></script>
<script>
	(function() {
		// Desactivar logs dentro de este módulo (solo en este scope)
		var console = {
			log: function() {},
			warn: function() {},
			error: function() {}
		};
		// Variables para el mapa
		let map;
		let marker;
		let selectedLat = 0;
		let selectedLng = 0;
		let radiusCircle; // Variable para el círculo del radio
		const defaultZoom = 13;
		// Coordenadas por defecto: Mendoza, Argentina
		const DEFAULT_LAT = -32.889458;
		const DEFAULT_LNG = -68.845839;
		const DEFAULT_RADIUS = 50000; // 50km en metros

		// Elementos del DOM
		const mapModal = document.getElementById('map-modal');
		const mapBtn = document.getElementById('map-search-btn');
		const closeBtn = document.querySelector('.map-close');
		const confirmBtn = document.getElementById('confirm-location');
		const enableLocationGuideBtn = document.getElementById('enable-location-guide');
		const centerLocationBtn = document.getElementById('center-location');
		const locationPermissionsGuide = document.getElementById('location-permissions-guide');
		const browserGuideContent = document.getElementById('browser-guide-content');
		const closeGuideBtn = document.getElementById('close-guide');
		const latitudeInput = document.getElementById('webroot_latitude');
		const longitudeInput = document.getElementById('webroot_longitude');
		const radiusInput = document.getElementById('webroot_distance_radius');
		const locationInput = document.getElementById('webroot_location_search');
		const locationGoogleSearch = document.getElementById('location_google_search');

		// Variables para rastrear estado de permisos
		let locationPermissionsDenied = false;
		let locationPermissionsEnabled = false;

		// Función para detectar el navegador
		function detectBrowser() {
			const userAgent = navigator.userAgent.toLowerCase();
			if (userAgent.includes('chrome') && !userAgent.includes('edg')) return 'chrome';
			if (userAgent.includes('firefox')) return 'firefox';
			if (userAgent.includes('safari') && !userAgent.includes('chrome')) return 'safari';
			if (userAgent.includes('edg')) return 'edge';
			return 'chrome';
		}

		// Función para obtener el contenido de la guía según el navegador
		function getBrowserGuideContent(browser) {
			const guides = {
				chrome: {
					title: 'Google Chrome',
					steps: [
						'Haz clic en el icono de candado en la barra de direcciones',
						'Selecciona "Configuración del sitio" o "Permisos"',
						'Cambia "Ubicación" de "Bloquear" a "Permitir"',
						'Recarga la página'
					],
					link: 'https://support.google.com/chrome/answer/142065'
				},
				firefox: {
					title: 'Mozilla Firefox',
					steps: [
						'Haz clic en el icono de escudo en la barra de direcciones',
						'Selecciona "Configuración mejorada de seguimiento"',
						'Habilita los permisos de ubicación para este sitio',
						'Recarga la página'
					],
					link: 'https://support.mozilla.org/es/kb/compartir-ubicacion-con-sitios-web'
				},
				safari: {
					title: 'Safari',
					steps: [
						'Ve a Safari > Preferencias > Sitios web',
						'Selecciona "Ubicación" en la barra lateral',
						'Encuentra este sitio y cambia a "Permitir"',
						'Recarga la página'
					],
					link: 'https://support.apple.com/es-es/guide/safari/ibrw1056/mac'
				},
				edge: {
					title: 'Microsoft Edge',
					steps: [
						'Haz clic en el icono de candado en la barra de direcciones',
						'Selecciona "Permisos para este sitio"',
						'Cambia "Ubicación" a "Permitir"',
						'Recarga la página'
					],
					link: 'https://support.microsoft.com/es-es/microsoft-edge/ubicaci%C3%B3n-y-privacidad-en-microsoft-edge-31b5d9e7-bb24-43a0-8b0e-d9f4b38f6cf5'
				}
			};
			return guides[browser] || guides.chrome;
		}

		// Función para mostrar la guía de permisos
		function showLocationPermissionsGuide() {
			const browser = detectBrowser();
			const guide = getBrowserGuideContent(browser);

			let content = `
				<div style="margin: 10px 0; padding: 15px; background: white; border-radius: 6px; border: 1px solid #e5e7eb;">
					<h5 style="margin: 0 0 8px 0; color: #374151; font-size: 16px; font-weight: 600;">Instrucciones para ${guide.title}</h5>
					<p style="margin: 0 0 12px 0; color: #6b7280; font-size: 13px;">Sigue estos pasos para habilitar los permisos:</p>
					<ol style="margin: 8px 0 8px 20px; padding: 0;">
			`;

			guide.steps.forEach(step => {
				content += `<li style="margin: 6px 0; font-size: 14px; color: #4b5563;">${step}</li>`;
			});

			content += `
					</ol>
					<a href="${guide.link}" target="_blank" style="display: inline-block; margin-top: 10px; color: #3b82f6; text-decoration: none; font-size: 13px;">
						Ver guía oficial de ${guide.title} ↗
					</a>
				</div>
			`;

			if (browserGuideContent) {
				browserGuideContent.innerHTML = content;
			}

			if (locationPermissionsGuide) {
				locationPermissionsGuide.style.display = 'block';
			}
		}

		// Función para ocultar la guía de permisos
		function hideLocationPermissionsGuide() {
			if (locationPermissionsGuide) {
				locationPermissionsGuide.style.display = 'none';
			}
		}

		// Función para centrar el mapa en la ubicación actual
		function centerMapOnCurrentLocation() {
			if (!navigator.geolocation) {
				alert('Tu navegador no soporta geolocalización.');
				return;
			}

			// Mostrar loader en el botón centrar
			if (centerLocationBtn) {
				const loader = centerLocationBtn.querySelector('.center-btn-loader');
				const text = centerLocationBtn.querySelector('.center-btn-text');
				if (loader && text) {
					loader.style.display = 'inline-block';
					text.style.display = 'none';
				}
				centerLocationBtn.disabled = true;
			}

			navigator.geolocation.getCurrentPosition(
				async function(position) {
						const lat = position.coords.latitude;
						const lng = position.coords.longitude;

						// Centrar el mapa en la nueva ubicación
						if (map) {
							map.setView([lat, lng], defaultZoom);

							// Remover marcador anterior si existe
							if (marker) {
								map.removeLayer(marker);
							}

							// Añadir nuevo marcador
							marker = L.marker([lat, lng], {
								draggable: true
							}).addTo(map);

							// Actualizar posición del círculo
							if (radiusCircle) {
								radiusCircle.setLatLng([lat, lng]);
							} else {
								// Si por alguna razón no existe, crearlo
								const radiusSelect = document.getElementById('radius-select');
								const currentRadius = radiusSelect ? parseInt(radiusSelect.value) : DEFAULT_RADIUS;
								radiusCircle = L.circle([lat, lng], {
									color: '#3388ff',
									fillColor: '#3388ff',
									fillOpacity: 0.2,
									radius: currentRadius
								}).addTo(map);
							}

							// Actualizar coordenadas seleccionadas
							selectedLat = lat;
							selectedLng = lng;

							// Obtener información de ubicación para el marcador
							try {
								const locationName = await getAddressFromCoordinates(lat, lng);
								if (locationName && !locationName.includes(lat.toString())) {
									marker.bindPopup(locationName).openPopup();
								}
							} catch (error) {
								console.log('⚠️ No se pudo obtener información de ubicación para el marcador');
							}

							// Actualizar coordenadas al arrastrar el marcador
							marker.on('dragend', async function(e) {
								const position = marker.getLatLng();
								selectedLat = position.lat;
								selectedLng = position.lng;

								// Actualizar posición del círculo
								if (radiusCircle) {
									radiusCircle.setLatLng(position);
								}

								// Actualizar popup al arrastrar
								try {
									const newLocationName = await getAddressFromCoordinates(selectedLat, selectedLng);
									if (newLocationName && !newLocationName.includes(selectedLat.toString())) {
										marker.setPopupContent(newLocationName);
									}
								} catch (error) {
									console.log('⚠️ No se pudo actualizar información al arrastrar');
								}
							});

							// Actualizar coordenadas al arrastrar el marcador
							marker.on('dragend', async function(e) {
								const position = marker.getLatLng();
								selectedLat = position.lat;
								selectedLng = position.lng;

								// Actualizar popup al arrastrar
								try {
									const newLocationName = await getAddressFromCoordinates(selectedLat, selectedLng);
									if (newLocationName && !newLocationName.includes(selectedLat.toString())) {
										marker.setPopupContent(newLocationName);
									}
								} catch (error) {
									console.log('⚠️ No se pudo actualizar información al arrastrar');
								}
							});
						}

						// Ocultar loader del botón
						if (centerLocationBtn) {
							const loader = centerLocationBtn.querySelector('.center-btn-loader');
							const text = centerLocationBtn.querySelector('.center-btn-text');
							if (loader && text) {
								loader.style.display = 'none';
								text.style.display = 'inline-block';
							}
							centerLocationBtn.disabled = false;
						}
					},
					function(error) {
						console.log('Error al obtener ubicación actual:', error);
						alert('No se pudo obtener tu ubicación actual. Verifica que los permisos estén habilitados.');

						// Ocultar loader del botón
						if (centerLocationBtn) {
							const loader = centerLocationBtn.querySelector('.center-btn-loader');
							const text = centerLocationBtn.querySelector('.center-btn-text');
							if (loader && text) {
								loader.style.display = 'none';
								text.style.display = 'inline-block';
							}
							centerLocationBtn.disabled = false;
						}
					}
			);
		}

		console.log('Botón de mapa:', mapBtn); // Debug para verificar que el botón existe

		// Asegurar que el modal existe en el DOM
		if (!mapModal) {
			console.error('Modal de mapa no encontrado en el DOM');
			// Añadir el modal al final del body si no existe
			const modalHTML = `
				<div id="map-modal" class="map-modal">
					<div class="map-modal-content">
						<span class="map-close">&times;</span>
						<h3>Selecciona una ubicación en el mapa</h3>
						<div id="map-container"></div>
						<div class="map-footer">
							<div class="map-footer-controls">
								<button id="center-location" style="display: none; padding: 6px 12px; color: white; background-color: #10b981; border: none; border-radius: 4px; cursor: pointer; font-size: 14px; margin-right: 10px;">
									<span class="center-btn-loader" style="display: none; width: 12px; height: 12px; border: 2px solid rgba(255, 255, 255, 0.3); border-radius: 50%; border-top-color: white; animation: spin 1s ease-in-out infinite; margin-right: 6px;"></span>
									<span class="center-btn-text">Localizarme</span>
								</button>
								<div class="radius-selector">
									<label for="radius-select" style="margin-right: 5px; font-weight: bold;">Radio:</label>
									<select id="radius-select" style="padding: 8px; border-radius: 4px; border: 1px solid #ccc;">
										<option value="10000">10 km</option>
										<option value="30000">30 km</option>
										<option value="50000" selected>50 km</option>
										<option value="100000">100 km</option>
									</select>
								</div>
							</div>
							<button id="confirm-location" class="neo_bgcolor_primary">
								<span class="btn-loader"></span>
								<span class="btn-text">Buscar en esta zona</span>
							</button>
						</div>
					</div>
				</div>
			`;
			document.body.insertAdjacentHTML('beforeend', modalHTML);
		}

		// Función para inicializar el mapa
		function initMap(lat, lng) {
			// Limpiar mapa existente de manera segura
			if (map) {
				try {
					map.remove();
				} catch (e) {
					console.log('Error al remover mapa:', e);
				}
				map = null;
			}

			// Reset marker
			marker = null;

			// Coordenadas por defecto (si no hay seleccionadas): Mendoza
			lat = (typeof lat === 'number' ? lat : null) ?? DEFAULT_LAT;
			lng = (typeof lng === 'number' ? lng : null) ?? DEFAULT_LNG;

			// Crear mapa con un timeout para asegurar que el contenedor está visible
			setTimeout(() => {
				try {
					// Verificar que el contenedor principal existe
					const mapContainer = document.getElementById('map-container');
					if (!mapContainer) {
						console.error('Contenedor del mapa no encontrado');
						return;
					}

					// Crear un nuevo contenedor para evitar el error de "already initialized"
					const mapId = 'map-instance-' + Date.now();
					mapContainer.innerHTML = `<div id="${mapId}" style="height: 100%; width: 100%;"></div>`;

					// Crear el mapa en el nuevo contenedor
					map = L.map(mapId, {
						scrollWheelZoom: true
					}).setView([lat, lng], defaultZoom);

					// Invalidar tamaño inmediatamente para asegurar renderizado correcto
					map.invalidateSize();

					// Añadir capa de mapa base (OpenStreetMap)
					L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {
						attribution: '&copy; <a href="https://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors'
					}).addTo(map);

					// Añadir marcador SIEMPRE (incluido Mendoza por defecto) y preparar comportamiento
					marker = L.marker([lat, lng], {
						draggable: true
					}).addTo(map);

					// Dibujar círculo de radio inicial
					const radiusSelect = document.getElementById('radius-select');
					const initialRadius = radiusSelect ? parseInt(radiusSelect.value) : DEFAULT_RADIUS;

					radiusCircle = L.circle([lat, lng], {
						color: '#3388ff',
						fillColor: '#3388ff',
						fillOpacity: 0.2,
						radius: initialRadius
					}).addTo(map);

					// Evento para actualizar el radio cuando cambia el select
					if (radiusSelect) {
						// Remover listeners anteriores para evitar duplicados
						const newRadiusSelect = radiusSelect.cloneNode(true);
						radiusSelect.parentNode.replaceChild(newRadiusSelect, radiusSelect);

						newRadiusSelect.addEventListener('change', function() {
							const newRadius = parseInt(this.value);
							if (radiusCircle) {
								radiusCircle.setRadius(newRadius);
							}
						});
					}

					// Obtener información de ubicación para el marcador inicial
					(async () => {
						try {
							const locationName = await getAddressFromCoordinates(lat, lng);
							if (locationName && !locationName.includes(lat.toString())) {
								marker.bindPopup(locationName);
								console.log('📍 Información inicial del marcador:', locationName);
							}
						} catch (error) {
							console.log('⚠️ No se pudo obtener información inicial del marcador');
						}
					})();

					// Actualizar coordenadas al arrastrar el marcador
					marker.on('dragend', async function(e) {
						const position = marker.getLatLng();
						selectedLat = position.lat;
						selectedLng = position.lng;

						// Actualizar posición del círculo
						if (radiusCircle) {
							radiusCircle.setLatLng(position);
						}

						// Actualizar popup al arrastrar
						try {
							const newLocationName = await getAddressFromCoordinates(selectedLat, selectedLng);
							if (newLocationName && !newLocationName.includes(selectedLat.toString())) {
								marker.setPopupContent(newLocationName);
							}
						} catch (error) {
							console.log('⚠️ No se pudo actualizar información al arrastrar');
						}
					});

					selectedLat = lat;
					selectedLng = lng;

					// Añadir evento de clic al mapa
					map.on('click', async function(e) {
						// Si ya existe un marcador, lo eliminamos
						if (marker) {
							map.removeLayer(marker);
						}

						// Añadir nuevo marcador en la posición del clic
						marker = L.marker(e.latlng, {
							draggable: true
						}).addTo(map);

						// Actualizar posición del círculo
						if (radiusCircle) {
							radiusCircle.setLatLng(e.latlng);
						} else {
							// Si por alguna razón no existe, crearlo
							const radiusSelect = document.getElementById('radius-select');
							const currentRadius = radiusSelect ? parseInt(radiusSelect.value) : DEFAULT_RADIUS;
							radiusCircle = L.circle(e.latlng, {
								color: '#3388ff',
								fillColor: '#3388ff',
								fillOpacity: 0.2,
								radius: currentRadius
							}).addTo(map);
						}

						// Guardar coordenadas seleccionadas
						selectedLat = e.latlng.lat;
						selectedLng = e.latlng.lng;

						// Intentar obtener y mostrar información de ubicación en el marcador
						try {
							const locationName = await getAddressFromCoordinates(selectedLat, selectedLng);
							if (locationName && !locationName.includes(selectedLat.toString())) {
								marker.bindPopup(locationName).openPopup();
								console.log('📍 Información del marcador establecida:', locationName);
							}
						} catch (error) {
							console.log('⚠️ No se pudo obtener información de ubicación para el marcador');
						}

						// Actualizar coordenadas al arrastrar el marcador
						marker.on('dragend', async function(e) {
							const position = marker.getLatLng();
							selectedLat = position.lat;
							selectedLng = position.lng;

							// Actualizar posición del círculo
							if (radiusCircle) {
								radiusCircle.setLatLng(position);
							}

							// Actualizar popup al arrastrar
							try {
								const newLocationName = await getAddressFromCoordinates(selectedLat, selectedLng);
								if (newLocationName && !newLocationName.includes(selectedLat.toString())) {
									marker.setPopupContent(newLocationName);
								}
							} catch (error) {
								console.log('⚠️ No se pudo actualizar información al arrastrar');
							}
						});
					});

					// Invalidar tamaño para asegurar que se renderiza correctamente
					setTimeout(() => {
						if (map) {
							map.invalidateSize();
						}
					}, 100);
					// Segundo intento para móviles lentos
					setTimeout(() => {
						if (map) {
							map.invalidateSize();
						}
					}, 500);
				} catch (e) {
					console.error('Error al inicializar el mapa:', e);
				}
			}, 500); // Aumentar timeout para dar más tiempo al modal
		}

		// Evento clic en botón de mapa (consolidado en un único listener)
		if (mapBtn) {
			console.log('Asignando evento click al botón de mapa');

			function openMapModalHandler(e) {
				console.log('Botón de mapa clickeado');
				e.preventDefault();
				e.stopPropagation();
				mapModal.style.display = 'flex';

				// Resetear estado de permisos y ocultar elementos al abrir el modal
				locationPermissionsDenied = false;
				locationPermissionsEnabled = false;
				if (enableLocationGuideBtn) enableLocationGuideBtn.style.display = 'none';
				if (centerLocationBtn) centerLocationBtn.style.display = 'none';
				hideLocationPermissionsGuide();

				// Si ya hay coordenadas guardadas, las usamos
				const currentLat = latitudeInput.value ? parseFloat(latitudeInput.value) : null;
				const currentLng = longitudeInput.value ? parseFloat(longitudeInput.value) : null;

				if (currentLat && currentLng) {
					initMap(currentLat, currentLng);
				} else {
					// Inicializar inmediatamente con Mendoza para evitar mapa en blanco
					initMap(DEFAULT_LAT, DEFAULT_LNG);

					// Mostrar botón de centrar si la geolocalización está disponible en el navegador
					if (navigator.geolocation) {
						if (centerLocationBtn) centerLocationBtn.style.display = 'inline-block';
					}
				}
				return false;
			}

			// Agregar un único listener
			mapBtn.addEventListener('click', openMapModalHandler);
		} else {
			console.error('El botón de mapa no se encontró en el DOM');
		}

		// Event listeners para los botones de la guía
		if (enableLocationGuideBtn) {
			enableLocationGuideBtn.addEventListener('click', function() {
				showLocationPermissionsGuide();
			});
		}

		if (closeGuideBtn) {
			closeGuideBtn.addEventListener('click', function() {
				hideLocationPermissionsGuide();
			});
		}

		// Event listener para el botón "Centrar"
		if (centerLocationBtn) {
			centerLocationBtn.addEventListener('click', function() {
				centerMapOnCurrentLocation();
			});
		}

		// Cerrar modal
		if (closeBtn) {
			closeBtn.addEventListener('click', function() {
				mapModal.style.display = 'none';
				// Resetear estado al cerrar
				locationPermissionsDenied = false;
				locationPermissionsEnabled = false;
				if (enableLocationGuideBtn) enableLocationGuideBtn.style.display = 'none';
				if (centerLocationBtn) centerLocationBtn.style.display = 'none';
				hideLocationPermissionsGuide();
				// Limpiar mapa al cerrar
				if (map) {
					try {
						map.remove();
					} catch (e) {
						console.log('Error al limpiar mapa:', e);
					}
					map = null;
					marker = null;
				}
			});
		}

		// Cerrar modal al hacer clic fuera del contenido
		window.addEventListener('click', function(event) {
			if (event.target === mapModal) {
				mapModal.style.display = 'none';
				// Resetear estado al cerrar
				locationPermissionsDenied = false;
				locationPermissionsEnabled = false;
				if (enableLocationGuideBtn) enableLocationGuideBtn.style.display = 'none';
				if (centerLocationBtn) centerLocationBtn.style.display = 'none';
				hideLocationPermissionsGuide();
				// Limpiar mapa al cerrar
				if (map) {
					try {
						map.remove();
					} catch (e) {
						console.log('Error al limpiar mapa:', e);
					}
					map = null;
					marker = null;
				}
			}
		});

		// Confirmar ubicación seleccionada
		if (confirmBtn) {
			confirmBtn.addEventListener('click', async function() {
				if (selectedLat && selectedLng) {
					// Mostrar loader y deshabilitar botón
					confirmBtn.classList.add('loading');
					confirmBtn.disabled = true;

					try {
						// Guardar coordenadas en los campos hidden
						latitudeInput.value = selectedLat;
						longitudeInput.value = selectedLng;
						const radiusSelect = document.getElementById('radius-select');
						radiusInput.value = radiusSelect ? radiusSelect.value : DEFAULT_RADIUS;

						// Intentar obtener información del marcador primero
						let address = '';

						// Verificar si el marcador tiene información de ubicación
						if (marker && marker.getPopup && marker.getPopup()) {
							const popupContent = marker.getPopup().getContent();
							if (popupContent && typeof popupContent === 'string' && popupContent.trim() !== '') {
								address = popupContent;
								console.log('📍 Usando información del marcador:', address);
							}
						}

						// Si el mapa no proporcionó información, hacer reverse geocoding
						if (!address || address.includes('lat') || address.includes('lng')) {
							console.log('🗺️ Obteniendo dirección para coordenadas:', selectedLat, selectedLng);
							address = await getAddressFromCoordinates(selectedLat, selectedLng);
							console.log('🏙️ Dirección obtenida via geocoding:', address);
						}

						locationInput.value = address;

						// Si existe el campo visible de búsqueda, también lo actualizamos
						if (locationGoogleSearch) {
							console.log('📝 Actualizando campo visible con:', address);
							locationGoogleSearch.value = address;
						}

						// Definimos el tipo de búsqueda
						const searchTypeInput = document.getElementById('SearchType');
						if (searchTypeInput) {
							searchTypeInput.value = 'lat_lng';
						}

						// Pequeña pausa para mostrar que el proceso se completó
						await new Promise(resolve => setTimeout(resolve, 500));

						// Cerrar el modal
						mapModal.style.display = 'none';

						// Limpiar mapa después de confirmar
						if (map) {
							try {
								map.remove();
							} catch (e) {
								console.log('Error al limpiar mapa después de confirmar:', e);
							}
							map = null;
							marker = null;
						}
					} catch (error) {
						console.error('Error al procesar la ubicación:', error);
						alert('Error al procesar la ubicación. Por favor, inténtelo de nuevo.');
					} finally {
						// Ocultar loader y rehabilitar botón
						confirmBtn.classList.remove('loading');
						confirmBtn.disabled = false;
					}
				} else {
					alert('Por favor, seleccione una ubicación en el mapa antes de confirmar.');
				}
			});
		}

		// Función para obtener la dirección aproximada a partir de coordenadas
		async function getAddressFromCoordinates(lat, lng) {
			try {
				console.log('🌐 Solicitando dirección para:', lat, lng);

				// Intentar con el servicio que ya está funcionando en el autocomplete
				const response = await fetch(`https://ipapi.co/${lat},${lng}/json/`);

				if (!response.ok) {
					throw new Error(`HTTP ${response.status}`);
				}

				const data = await response.json();
				console.log('📥 Respuesta de ipapi.co:', data);

				if (data && !data.error) {
					let locationName = '';

					// Extraer información útil en orden de preferencia
					if (data.city) {
						locationName = data.city;
					} else if (data.region) {
						locationName = data.region;
					}

					// Agregar región/estado si existe y es diferente
					if (data.region && data.region !== locationName && locationName) {
						locationName += `, ${data.region}`;
					}

					// Agregar país si existe
					if (data.country_name) {
						locationName += locationName ? `, ${data.country_name}` : data.country_name;
					}

					const finalResult = locationName || `${lat.toFixed(4)}, ${lng.toFixed(4)}`;
					console.log('✅ Dirección procesada:', finalResult);
					return finalResult;
				} else {
					throw new Error('No data received or API error');
				}
			} catch (error) {
				console.warn('⚠️ Error con ipapi.co, intentando con método alternativo:', error);

				// Fallback: usar reverse geocoding simplificado
				try {
					// Intentar con un servicio público que sí permite CORS
					const response = await fetch(`https://api.bigdatacloud.net/data/reverse-geocode-client?latitude=${lat}&longitude=${lng}&localityLanguage=es`);
					const data = await response.json();
					console.log('📥 Respuesta de BigDataCloud:', data);

					if (data) {
						let locationName = '';

						if (data.city) {
							locationName = data.city;
						} else if (data.locality) {
							locationName = data.locality;
						} else if (data.principalSubdivision) {
							locationName = data.principalSubdivision;
						}

						// Agregar país
						if (data.countryName && locationName) {
							locationName += `, ${data.countryName}`;
						} else if (data.countryName) {
							locationName = data.countryName;
						}

						const finalResult = locationName || `${lat.toFixed(4)}, ${lng.toFixed(4)}`;
						console.log('✅ Dirección obtenida con BigDataCloud:', finalResult);
						return finalResult;
					}
				} catch (secondError) {
					console.error('💥 Error con ambos servicios:', secondError);
				}

				// Si todo falla, devolver coordenadas simplificadas
				const errorResult = `${lat.toFixed(4)}, ${lng.toFixed(4)}`;
				console.log('🎯 Usando coordenadas como último recurso:', errorResult);
				return errorResult;
			}
		}

		// Mover el modal de mapa al final del body para evitar problemas de desbordamiento
		document.addEventListener("DOMContentLoaded", function() {
			if (mapModal && document.body) {
				document.body.appendChild(mapModal);
			}
		});
	})();
</script>

<!-- Script independiente para limpiar modal si no hay botón de mapa -->
<script>
	(function() {
		// Función robusta para limpiar el modal
		function cleanupMapModal() {
			try {
				// Verificar si existe el botón del mapa
				const mapBtn = document.getElementById('map-search-btn');

				if (!mapBtn) {
					console.log('🗑️ Botón del mapa no encontrado - removiendo modal del mapa...');
					// Si no existe el botón, remover el modal del mapa
					const mapModal = document.getElementById('map-modal');
					if (mapModal) {
						mapModal.remove();
						console.log('✅ Modal del mapa removido correctamente');
						return true; // Indica que se completó la limpieza
					}
				} else {
					console.log('✅ Botón del mapa encontrado - modal del mapa disponible');
					return true; // Indica que se completó la verificación
				}
			} catch (error) {
				console.error('Error al limpiar modal del mapa:', error);
			}
			return false; // Indica que no se pudo completar
		}

		// Estrategia 1: Ejecutar inmediatamente si el DOM ya está listo
		if (document.readyState === 'loading') {
			// El DOM aún se está cargando, usar múltiples eventos
			let cleaned = false;

			// Función que se ejecuta una sola vez
			function tryCleanup() {
				if (!cleaned && cleanupMapModal()) {
					cleaned = true;
				}
			}

			// Estrategia 2: Múltiples eventos para garantizar ejecución
			document.addEventListener('DOMContentLoaded', tryCleanup);
			document.addEventListener('readystatechange', function() {
				if (document.readyState === 'interactive' || document.readyState === 'complete') {
					tryCleanup();
				}
			});
			window.addEventListener('load', tryCleanup);

			// Estrategia 3: Verificación periódica como respaldo
			let attempts = 0;
			const maxAttempts = 20; // Máximo 2 segundos
			const checkInterval = setInterval(function() {
				attempts++;
				if (cleaned || attempts >= maxAttempts) {
					clearInterval(checkInterval);
					return;
				}

				// Verificar si el DOM está listo
				if (document.readyState === 'interactive' || document.readyState === 'complete') {
					if (cleanupMapModal()) {
						cleaned = true;
						clearInterval(checkInterval);
					}
				}
			}, 100);

		} else {
			// El DOM ya está listo, ejecutar inmediatamente
			cleanupMapModal();
		}
	})();
</script>
<script>
	(function() {
		function run() {
			try {
				var span = document.querySelector('#PxMkAcion_Search .update-search-span');
				var btn = document.getElementById('PxMkAcion_Search');
				if (!span) return;

				var themeHex = '#29412b';

				function parseHex(hex) {
					if (!hex) return null;
					hex = String(hex).trim();
					if (hex.startsWith('#')) hex = hex.slice(1);
					if (hex.length === 3) {
						hex = hex.split('').map(function(ch) {
							return ch + ch;
						}).join('');
					}
					if (hex.length !== 6) return null;
					var r = parseInt(hex.slice(0, 2), 16);
					var g = parseInt(hex.slice(2, 4), 16);
					var b = parseInt(hex.slice(4, 6), 16);
					if ([r, g, b].some(function(v) {
							return isNaN(v);
						})) return null;
					return {
						r: r,
						g: g,
						b: b
					};
				}

				function relL(rgb) {
					function toLin(c) {
						c = c / 255;
						return c <= 0.03928 ? c / 12.92 : Math.pow((c + 0.055) / 1.055, 2.4);
					}
					var R = toLin(rgb.r),
						G = toLin(rgb.g),
						B = toLin(rgb.b);
					return 0.2126 * R + 0.7152 * G + 0.0722 * B;
				}

				function contrast(L1, L2) {
					var a = Math.max(L1, L2);
					var b = Math.min(L1, L2);
					return (a + 0.05) / (b + 0.05);
				}

				var rgb = parseHex(themeHex);
				if (!rgb) {
					if (btn) {
						var bg = window.getComputedStyle(btn).backgroundColor; // rgb(a)
						var m = bg && bg.match(/rgba?\((\d+),\s*(\d+),\s*(\d+)/i);
						if (m) {
							rgb = {
								r: parseInt(m[1], 10),
								g: parseInt(m[2], 10),
								b: parseInt(m[3], 10)
							};
						}
					}
				}
				if (!rgb) return;

				var Lbg = relL(rgb);
				var Lwhite = relL({
					r: 255,
					g: 255,
					b: 255
				});
				var Lblack = relL({
					r: 0,
					g: 0,
					b: 0
				});
				var cWhite = contrast(Lbg, Lwhite);
				var cBlack = contrast(Lbg, Lblack);

				var textColor = cBlack >= cWhite ? '#000000' : '#FFFFFF';
				span.style.setProperty('color', textColor, 'important');
				if (btn) {
					btn.style.setProperty('color', textColor, 'important');

					// Recolor inline SVG icons (search and loading) to match contrast color
					function paintInlineSVG(container, color) {
						try {
							var svgs = container.querySelectorAll('svg');
							svgs.forEach(function(svg) {
								// Support SVGs that use currentColor
								svg.style.setProperty('color', color, 'important');
								svg.setAttribute('color', color);
								// Force fill/stroke
								svg.style.setProperty('fill', color, 'important');
								svg.style.setProperty('stroke', color, 'important');
								// Update common shape elements
								svg.querySelectorAll('path, circle, rect, polygon, line, polyline, ellipse, g').forEach(function(node) {
									node.style.setProperty('fill', color, 'important');
									node.style.setProperty('stroke', color, 'important');
								});

								// Override attributes if they exist
								svg.querySelectorAll('[fill]').forEach(function(node) {
									node.setAttribute('fill', color);
								});
								svg.querySelectorAll('[stroke]').forEach(function(node) {
									node.setAttribute('stroke', color);
								});
							});
						} catch (e) {
							/* ignore */
						}
					}

					var iconLabel = btn.querySelector('.px-mk-searchicon');
					var loaderLabel = btn.querySelector('.px-mk-searchloader');
					if (iconLabel) paintInlineSVG(iconLabel, textColor);
					if (loaderLabel) paintInlineSVG(loaderLabel, textColor);
				}
			} catch (e) {
				/* ignore */
			}
		}

		if (document.readyState === 'loading') {
			document.addEventListener('DOMContentLoaded', run);
		} else {
			run();
		}
	})();
</script>			  </div>
			  </div><div id='toggleMenu'  class="btn-toggle-menu"   onclick='toggleMenu()'><div  class="rallita"  ></div></div></div></div> 


<div id='Overlay'  class=""  ></div> 

</div>

</div>
		<div class="main_wraper_content" id="main_wraper_content">
			

<div class="neo_template_container neo_template_ computer">


<div  class="content-bg-color hidden"  ><div  class="bg-color top"  ></div><div  class="bg-color bottom"  ></div></div> 


<div  class="logo-floating"  > <img loading="lazy"  class=""   lazy-src="https://files-p.pxsol.com/23611/company/library/user/1599746344266f353bb15f6d6c13f69d0448be0d418.png" alt="20 años" > </image></div> 


<div  class="content-background"  ><div  class="background"  ><div  class='container-neo-slider hidden-mobile'  Slide='HomePage' Width='1900' Height='910' Loop='true' Delay='5' Effect='fade' Speed='2000'>
			  <div class="neo_template_block neo_neo_swiper pxModule_include ModuloWrap_neo_swiper" id="neo_swiper" >
			  

<!-- Module Start -->

<div class="megacontainer-neo-swiper">
    <div class="swiper-container-305"> <!-- le asignamos el numero random al contenedor -->
     
            <div class="swiper-wrapper">
                                                <div class="swiper-slide">
                                    <img data-src="https://images-new.pxsol.com/UfPTJivwQV2V36UUbT8XMNoIgplOUsb1HQBa_J-VQv0/rs:fill:1900:910:1/q:80/plain/https%3A%2F%2Ffiles-p.pxsol.com%2F23611%2Fcompany%2Flibrary%2Fuser%2F21075949416b089fd1c3e077d9ecd3150fdfc6376f3.jpg@jpg" class="swiper-lazy" 
                                         width="1900" 
                                         height="910" 
                                         style="aspect-ratio: 1900/910;"
                                         alt="Lodge Colbún">
                                    <div class="swiper-lazy-preloader"></div>
                                                                    </div>	
                                                            <div class="swiper-slide">
                                    <img data-src="https://images-new.pxsol.com/ZPahK3zUKPmbLZSMrV3xBEcUFy3Asq7RRwjK3lgcl9A/rs:fill:1900:910:1/q:80/plain/https%3A%2F%2Ffiles-p.pxsol.com%2F23611%2Fcompany%2Flibrary%2Fuser%2F28101265856abd4abe130158526b4c19ccb9dc70e85.jpg@jpg" class="swiper-lazy" 
                                         width="1900" 
                                         height="910" 
                                         style="aspect-ratio: 1900/910;"
                                         alt="Lodge Colbún">
                                    <div class="swiper-lazy-preloader"></div>
                                                                    </div>	
                                                            <div class="swiper-slide">
                                    <img data-src="https://images-new.pxsol.com/NnUd69aOu_A4GQyFpruaB4jWy3gwWBcBWzHU_9Eddm8/rs:fill:1900:910:1/q:80/plain/https%3A%2F%2Ffiles-p.pxsol.com%2F23611%2Fcompany%2Flibrary%2Fuser%2F26344936800c214f8ecb8ca6e83f779b874d776429f.jpg@jpg" class="swiper-lazy" 
                                         width="1900" 
                                         height="910" 
                                         style="aspect-ratio: 1900/910;"
                                         alt="Lodge Colbún">
                                    <div class="swiper-lazy-preloader"></div>
                                                                    </div>	
                                                            <div class="swiper-slide">
                                    <img data-src="https://images-new.pxsol.com/U7Ye7ga-kzz9KlP75PGDAZuiwh_Z17-l9Hfjhn-2ncA/rs:fill:1900:910:1/q:80/plain/https%3A%2F%2Ffiles-p.pxsol.com%2F23611%2Fcompany%2Flibrary%2Fuser%2F12301021859ddc1107587d926d14d9da293820006f1.jpg@jpg" class="swiper-lazy" 
                                         width="1900" 
                                         height="910" 
                                         style="aspect-ratio: 1900/910;"
                                         alt="Lodge Colbún">
                                    <div class="swiper-lazy-preloader"></div>
                                                                    </div>	
                                                            <div class="swiper-slide">
                                    <img data-src="https://images-new.pxsol.com/LtYsgoiB6BU2ptmaLgOniC3I5T0qkY00HS0i6b9wSXw/rs:fill:1900:910:1/q:80/plain/https%3A%2F%2Ffiles-p.pxsol.com%2F23611%2Fcompany%2Flibrary%2Fuser%2F228447539065f62f417180084f0319cca0d5a9df20e.jpg@jpg" class="swiper-lazy" 
                                         width="1900" 
                                         height="910" 
                                         style="aspect-ratio: 1900/910;"
                                         alt="Lodge Colbún">
                                    <div class="swiper-lazy-preloader"></div>
                                                                    </div>	
                                                            <div class="swiper-slide">
                                    <img data-src="https://images-new.pxsol.com/Wxq1GW6l-EJjiedrWY8MKoLULHdPU5xeYjkvJGyeoVM/rs:fill:1900:910:1/q:80/plain/https%3A%2F%2Ffiles-p.pxsol.com%2F23611%2Fcompany%2Flibrary%2Fuser%2F10539068592658f60423fa48fc5a3cafce757cae229.jpg@jpg" class="swiper-lazy" 
                                         width="1900" 
                                         height="910" 
                                         style="aspect-ratio: 1900/910;"
                                         alt="Lodge Colbún">
                                    <div class="swiper-lazy-preloader"></div>
                                                                    </div>	
                                                            <div class="swiper-slide">
                                    <img data-src="https://images-new.pxsol.com/thvPE3xev5-6QxXvD312ac61KgEGpl3XNlodCXs-Ty0/rs:fill:1900:910:1/q:80/plain/https%3A%2F%2Ffiles-p.pxsol.com%2F23611%2Fcompany%2Flibrary%2Fuser%2F3517343638e9a63d94c4edaef1e50a78e8bea0e380.jpg@jpg" class="swiper-lazy" 
                                         width="1900" 
                                         height="910" 
                                         style="aspect-ratio: 1900/910;"
                                         alt="Lodge Colbún">
                                    <div class="swiper-lazy-preloader"></div>
                                                                    </div>	
                                                            <div class="swiper-slide">
                                    <img data-src="https://images-new.pxsol.com/DX_VQ0dxhLImdzvapOLJ2tYD7AZhi9W-n2lIUfBJ1Jw/rs:fill:1900:910:1/q:80/plain/https%3A%2F%2Ffiles-p.pxsol.com%2F23611%2Fcompany%2Flibrary%2Fuser%2F10552030974b4d6b74d94edfd61e382c68802063567.jpg@jpg" class="swiper-lazy" 
                                         width="1900" 
                                         height="910" 
                                         style="aspect-ratio: 1900/910;"
                                         alt="Lodge Colbún">
                                    <div class="swiper-lazy-preloader"></div>
                                                                    </div>	
                                        </div>
            <!-- Add Arrows -->
                        <div class="swiper-button-next swiper-button-next-305"></div> <!-- igualmente el numero random va para las flechas de cambio de imágenes -->
            <div class="swiper-button-prev swiper-button-prev-305"></div>
                                    
        </div>
    <!-- Así mismo para dataconfig-swiper le pasamos el numero random para identificarlo de otros -->
    <div class="dataconfig-swiper" data-id="305" data-loop="true" data-speed=2000 data-effect="fade" data-delay=5000 style="display:none" ></div>
</div>


			  </div>
			  </div><div  class='container-neo-slider hidden-desktop'  Slide='HomePageMobile' Width='375' Height='420' Loop='true' Effect='Fade '>
			  <div class="neo_template_block neo_neo_swiper pxModule_include ModuloWrap_neo_swiper" id="neo_swiper" >
			  

<!-- Module Start -->

<div class="megacontainer-neo-swiper">
    <div class="swiper-container-2882"> <!-- le asignamos el numero random al contenedor -->
     
            <div class="swiper-wrapper">
                                                <div class="swiper-slide">
                                    <img data-src="https://images-new.pxsol.com/CXMcpnxCoL5hbZodKYmL-Jhsg9Y2-paiJNOdyI2wC5E/rs:fill:375:420:1/q:80/plain/https%3A%2F%2Ffiles-p.pxsol.com%2F23611%2Fcompany%2Flibrary%2Fuser%2F21075949416b089fd1c3e077d9ecd3150fdfc6376f3.jpg@jpg" class="swiper-lazy" 
                                         width="375" 
                                         height="420" 
                                         style="aspect-ratio: 375/420;"
                                         alt="Lodge Colbún">
                                    <div class="swiper-lazy-preloader"></div>
                                                                    </div>	
                                                            <div class="swiper-slide">
                                    <img data-src="https://images-new.pxsol.com/e7JjZEIJlYDEL2jAvjczEgBIbcjRQLTV66B8xd9365U/rs:fill:375:420:1/q:80/plain/https%3A%2F%2Ffiles-p.pxsol.com%2F23611%2Fcompany%2Flibrary%2Fuser%2F105379797902219719ec57bdb9844b8a4b0773ec638.jpg@jpg" class="swiper-lazy" 
                                         width="375" 
                                         height="420" 
                                         style="aspect-ratio: 375/420;"
                                         alt="Lodge Colbún">
                                    <div class="swiper-lazy-preloader"></div>
                                                                    </div>	
                                                            <div class="swiper-slide">
                                    <img data-src="https://images-new.pxsol.com/EhFZGukwG2badEGLrg7nCv0r22P3UiFRu2RoCsnho48/rs:fill:375:420:1/q:80/plain/https%3A%2F%2Ffiles-p.pxsol.com%2F23611%2Fcompany%2Flibrary%2Fuser%2F26344936800c214f8ecb8ca6e83f779b874d776429f.jpg@jpg" class="swiper-lazy" 
                                         width="375" 
                                         height="420" 
                                         style="aspect-ratio: 375/420;"
                                         alt="Lodge Colbún">
                                    <div class="swiper-lazy-preloader"></div>
                                                                    </div>	
                                                            <div class="swiper-slide">
                                    <img data-src="https://images-new.pxsol.com/4gkcx6XsHPnYaVdFfApXmY5fzp-KJzjEC4f3HsU9hlo/rs:fill:375:420:1/q:80/plain/https%3A%2F%2Ffiles-p.pxsol.com%2F23611%2Fcompany%2Flibrary%2Fuser%2F12294309699d1382454cca9d00624659cafe41f2b31.jpg@jpg" class="swiper-lazy" 
                                         width="375" 
                                         height="420" 
                                         style="aspect-ratio: 375/420;"
                                         alt="Lodge Colbún">
                                    <div class="swiper-lazy-preloader"></div>
                                                                    </div>	
                                                            <div class="swiper-slide">
                                    <img data-src="https://images-new.pxsol.com/C8awJrftDcGc5FKSYRR4-O1KWE_1p-TyEGE_7KnC9NU/rs:fill:375:420:1/q:80/plain/https%3A%2F%2Ffiles-p.pxsol.com%2F23611%2Fcompany%2Flibrary%2Fuser%2F14069374688b13a83d22fbf7ad4f3120bc10ca243e0.jpg@jpg" class="swiper-lazy" 
                                         width="375" 
                                         height="420" 
                                         style="aspect-ratio: 375/420;"
                                         alt="Lodge Colbún">
                                    <div class="swiper-lazy-preloader"></div>
                                                                    </div>	
                                                            <div class="swiper-slide">
                                    <img data-src="https://images-new.pxsol.com/YectRWBx1rDdp7pHCQ1w5sqIUrM7E8PEizskYZogiQ8/rs:fill:375:420:1/q:80/plain/https%3A%2F%2Ffiles-p.pxsol.com%2F23611%2Fcompany%2Flibrary%2Fuser%2F158280466776f0b82f2ee50fb45cb19e4f84896bb13.jpg@jpg" class="swiper-lazy" 
                                         width="375" 
                                         height="420" 
                                         style="aspect-ratio: 375/420;"
                                         alt="Lodge Colbún">
                                    <div class="swiper-lazy-preloader"></div>
                                                                    </div>	
                                        </div>
            <!-- Add Arrows -->
                        <div class="swiper-button-next swiper-button-next-2882"></div> <!-- igualmente el numero random va para las flechas de cambio de imágenes -->
            <div class="swiper-button-prev swiper-button-prev-2882"></div>
                                    
        </div>
    <!-- Así mismo para dataconfig-swiper le pasamos el numero random para identificarlo de otros -->
    <div class="dataconfig-swiper" data-id="2882" data-loop="true" data-speed=800 data-effect="fade" data-delay=5000 style="display:none" ></div>
</div>


			  </div>
			  </div></div> <img loading="lazy"  class="hidden-desktop logo-top-mobile hidden"   lazy-src="https://files-p.pxsol.com/23611/company/library/user/24884741770f61d7ab9513ebbe02cf4cb064d719a41.png" alt="LodgeColbun" > </image></div> 


<div  class="info-container-2 padding-xs-50"  ><div  class="container"  ><div  class="desc-hotel"  ><span  class='' >Bienvenido a</span><h1  class='' >Lodge Colbún</h1><div  class="desc-hotel-down"  ><p  class='' >Descubre Lodge Colbún, un rincón excepcionalmente cuidado para los amantes de la naturaleza, el bienestar y las aventuras al aire libre. Aquí, encontrarás un ambiente familiar donde los dueños serán tus anfitriones personales.<br /><br />Nuestro Lodge ofrece una variedad de habitaciones y cabañas en dos áreas exclusivas, cada una con su propia piscina y acceso privado al lago. Sumérgete en la belleza natural y la tranquilidad que solo nuestro lodge frente al lago puede ofrecer.</p></div></div><div  class="img-hotel "  > <img loading="lazy"  class=""   lazy-src="https://files-p.pxsol.com/23611/company/library/user/14050632928b9ab855e98d273286871baeffb54d8ee.jpg" alt="LodgeColbun" > </image></div></div></div> 


<div  class="flex flex-wrap container-cards"  ><div  class="xs-100 sm-50 md-25 card"  ><a  class="content-items"   href="/habitaciones.html" target=""><span  class='place' >Habitaciones/Cabañas</span><div  class="btn-gral"  >Recorre</div><div  class='container-neo-slider'  Slide='TopHabitaciones' Width='500' Height='500' Loop='true' Effect='Fade '>
			  <div class="neo_template_block neo_neo_swiper pxModule_include ModuloWrap_neo_swiper" id="neo_swiper" >
			  

<!-- Module Start -->

<div class="megacontainer-neo-swiper">
    <div class="swiper-container-3645"> <!-- le asignamos el numero random al contenedor -->
     
            <div class="swiper-wrapper">
                                        <div class="swiper-slide slide-one-pic">
                            <img src="https://images-new.pxsol.com/lTo-nmRoMBKKJqEWMOOLwUvG1lEscTdpsIGSeCyKjPs/rs:fill:500:500:1/q:80/plain/https%3A%2F%2Ffiles-p.pxsol.com%2F23611%2Fcompany%2Flibrary%2Fuser%2F10539068592658f60423fa48fc5a3cafce757cae229.jpg@jpg" 
                                 width="500" 
                                 height="500" 
                                 style="aspect-ratio: 500/500;"
                                 alt="Lodge Colbún">
                                                    </div>	
                            </div>
            <!-- Add Arrows -->
                                    
        </div>
    <!-- Así mismo para dataconfig-swiper le pasamos el numero random para identificarlo de otros -->
    <div class="dataconfig-swiper" data-id="3645" data-loop="true" data-speed=800 data-effect="fade" data-delay=5000 style="display:none" ></div>
</div>


			  </div>
			  </div></a></div><div  class="xs-100 sm-50 md-25 card"  ><a  class="content-items"   href="/servicios.html" target=""><span  class='place' >Servicios</span><div  class="btn-gral"  >Conoce</div><div  class='container-neo-slider'  Slide='TopServicios' Width='500' Height='500' Loop='true' Effect='Fade '>
			  <div class="neo_template_block neo_neo_swiper pxModule_include ModuloWrap_neo_swiper" id="neo_swiper" >
			  

<!-- Module Start -->

<div class="megacontainer-neo-swiper">
    <div class="swiper-container-482"> <!-- le asignamos el numero random al contenedor -->
     
            <div class="swiper-wrapper">
                                        <div class="swiper-slide slide-one-pic">
                            <img src="https://images-new.pxsol.com/4DDQInsf-r-TA7w9Gz74X92i0N0Q4gSr2tthqG4G7FU/rs:fill:500:500:1/q:80/plain/https%3A%2F%2Ffiles-p.pxsol.com%2F23611%2Fcompany%2Flibrary%2Fuser%2F281162580962b3a1a4f946f1903a6d2426cc26444d0.jpg@jpg" 
                                 width="500" 
                                 height="500" 
                                 style="aspect-ratio: 500/500;"
                                 alt="Lodge Colbún">
                                                    </div>	
                            </div>
            <!-- Add Arrows -->
                                    
        </div>
    <!-- Así mismo para dataconfig-swiper le pasamos el numero random para identificarlo de otros -->
    <div class="dataconfig-swiper" data-id="482" data-loop="true" data-speed=800 data-effect="fade" data-delay=5000 style="display:none" ></div>
</div>


			  </div>
			  </div></a></div><div  class="xs-100 sm-50 md-25 card"  ><a  class="content-items"   href="/contacto.html" target=""><span  class='place' >Ubicación y Contacto</span><div  class="btn-gral"  >Descubre</div><div  class='container-neo-slider'  Slide='TopContacto' Width='1900' Height='900' Loop='true' Effect='Fade '>
			  <div class="neo_template_block neo_neo_swiper pxModule_include ModuloWrap_neo_swiper" id="neo_swiper" >
			  

<!-- Module Start -->

<div class="megacontainer-neo-swiper">
    <div class="swiper-container-2614"> <!-- le asignamos el numero random al contenedor -->
     
            <div class="swiper-wrapper">
                                        <div class="swiper-slide slide-one-pic">
                            <img src="https://images-new.pxsol.com/eYFHw-xvhsef15sGz7tCVli0k4tRt6SNNYfHdT27ifQ/rs:fill:1900:900:1/q:80/plain/https%3A%2F%2Ffiles-p.pxsol.com%2F23611%2Fcompany%2Flibrary%2Fuser%2F14050632928b9ab855e98d273286871baeffb54d8ee.jpg@jpg" 
                                 width="1900" 
                                 height="900" 
                                 style="aspect-ratio: 1900/900;"
                                 alt="Lodge Colbún">
                                                    </div>	
                            </div>
            <!-- Add Arrows -->
                                    
        </div>
    <!-- Así mismo para dataconfig-swiper le pasamos el numero random para identificarlo de otros -->
    <div class="dataconfig-swiper" data-id="2614" data-loop="true" data-speed=800 data-effect="fade" data-delay=5000 style="display:none" ></div>
</div>


			  </div>
			  </div></a></div><div  class="xs-100 sm-50 md-25 card"  ><a  class="content-items"   href="/promos.html" target=""><span  class='place' >Promociones</span><div  class="btn-gral"  >Disfruta</div><div  class='container-neo-slider'  Slide='TopPromos' Width='1900' Height='900' Loop='true' Effect='Fade '>
			  <div class="neo_template_block neo_neo_swiper pxModule_include ModuloWrap_neo_swiper" id="neo_swiper" >
			  

<!-- Module Start -->

<div class="megacontainer-neo-swiper">
    <div class="swiper-container-2990"> <!-- le asignamos el numero random al contenedor -->
     
            <div class="swiper-wrapper">
                                        <div class="swiper-slide slide-one-pic">
                            <img src="https://images-new.pxsol.com/eEG5M0Dppp1xcGqN1NGbfXaBTOPR2tYov6WNfXuJbqQ/rs:fill:1900:900:1/q:80/plain/https%3A%2F%2Ffiles-p.pxsol.com%2F23611%2Fcompany%2Flibrary%2Fuser%2F10543732554f5b156e353593f4a306fe38e050fd622.jpg@jpg" 
                                 width="1900" 
                                 height="900" 
                                 style="aspect-ratio: 1900/900;"
                                 alt="Lodge Colbún">
                                                    </div>	
                            </div>
            <!-- Add Arrows -->
                                    
        </div>
    <!-- Así mismo para dataconfig-swiper le pasamos el numero random para identificarlo de otros -->
    <div class="dataconfig-swiper" data-id="2990" data-loop="true" data-speed=800 data-effect="fade" data-delay=5000 style="display:none" ></div>
</div>


			  </div>
			  </div></a></div></div> 


<div id='indexGallery'  class="full diplo_indexgal relative"  ><div  class='slider-index flex flex-m-center full'  Slide='Destacado' Width='1900' Height='600' Loop='false' Effect='fade'>
			  <div class="neo_template_block neo_neo_swiper pxModule_include ModuloWrap_neo_swiper" id="neo_swiper" >
			  

<!-- Module Start -->

<div class="megacontainer-neo-swiper">
    <div class="swiper-container-3962"> <!-- le asignamos el numero random al contenedor -->
     
            <div class="swiper-wrapper">
                                        <div class="swiper-slide slide-one-pic">
                            <img src="https://images-new.pxsol.com/uPNXajxB3hmEvqmbJ_qfHPyTxTf_kCtPWvi8htwgLPg/rs:fill:1900:600:1/q:80/plain/https%3A%2F%2Ffiles-p.pxsol.com%2F23611%2Fcompany%2Flibrary%2Fuser%2F105514602725129a1676d612fd7d76bf2dfecb5b6ce.jpg@jpg" 
                                 width="1900" 
                                 height="600" 
                                 style="aspect-ratio: 1900/600;"
                                 alt="Lodge Colbún">
                                                    </div>	
                            </div>
            <!-- Add Arrows -->
                                    
        </div>
    <!-- Así mismo para dataconfig-swiper le pasamos el numero random para identificarlo de otros -->
    <div class="dataconfig-swiper" data-id="3962" data-loop="false" data-speed=800 data-effect="fade" data-delay=5000 style="display:none" ></div>
</div>


			  </div>
			  </div><div  class="diplo_indexgal_overlay flex flex-center"  ><div  class="diplo_contentblock flex-column flex-m-center flex-s-start"  ><div  class="diplo_heading_lower fontsize-35px fontsize-lg-60px diplo_white padding-bottom-20 lineh-120"   style='max-width: 12em;'>Descubre nuestro lodge</div><div  class="diplo_white diplo_paragraphs margin-bottom-20"  ><p  class='textleft diplo_white ' >Te invitamos a que recorras nuestras instalaciones y alrededores.</p></div><a  class="diplo_cta cta_white_outline cta_autoh padding-20 pointerInitial"   href="/galeria.html" target=""><div  class="mdi mdi-image-multiple margin-right-10 fontsize-18px"  ></div><div  class=""  >Ver Galería</div></a></div></div></div> 


<div id='heroDiploTwo'  class="full"  ><div  class="diplo_hero_half autoheight full flex flex-center  padding-top-20 padding-bottom-70"  ><div  class="diplo_main_herotxt full flex flex-center"  ><div  class="diplo_contentblock padding-top-25 padding-bottom-25 padding-lg-top-50 padding-lg-bottom-50"  ><div  class='full'  Slides='3'>
			  <div class="neo_template_block neo_neo_social_proof pxModule_include ModuloWrap_neo_social_proof" id="neo_social_proof" >
			  

 
<div class="swiper-socialproof-initializer" slides="3" swiperid="neosocialproof_1609435846"></div>

<div class="neo_socialproof_slider_titulo">Nuestros huéspedes opinan</div>
 
<div class="neo_promoswiper_container swiper-container" id="neosocialproof_1609435846">

<div class="neo_socialproof_slider_container swiper-wrapper">


  <div class="neo_socialproof_slide_item swiper-slide" id="neosocial_item_513914">
		
  		<div class="neo_socialproof_score">
			8.9		</div>
			
		<div class="neo_socialproof_subtitle">
			Lo mejor del hotel:
		</div>
		<div class="neo_socialproof_slide_besttxt">
			Muy amable los dueños y las instalaciones muy lindas y cómodas.		</div>
						<div class="neo_socialproof_slide_name">
			Mirna, Chile		</div>
			</a>

	</div>


  <div class="neo_socialproof_slide_item swiper-slide" id="neosocial_item_512525">
		
  		<div class="neo_socialproof_score">
			10		</div>
			
		<div class="neo_socialproof_subtitle">
			Lo mejor del hotel:
		</div>
		<div class="neo_socialproof_slide_besttxt">
			Fueron unos días espectaculares
Celebramos nuestro 30° Aniversario 
Regalo de Nuestro hijo mayor Benjamin 
El lugar superó nuestras expectativas. Un grato ambiente la cercania de quienes nos atendieron con cariño.
El paisaje increíble,cada rincón hermoso 
La comida exquisita cada una de ellas comenzando por el desayuno,almuerzo y la cena muy especial  
Hicimos una caminata paseos,la tina caliente fue uno de nuestros momentos favoritos
Lo rústico del lugar nos enamoró y claramente nos encantaría volver por más días.
Muchas gracias		</div>
						<div class="neo_socialproof_slide_name">
			Orietta, Chile		</div>
			</a>

	</div>


  <div class="neo_socialproof_slide_item swiper-slide" id="neosocial_item_508968">
		
  		<div class="neo_socialproof_score">
			9.9		</div>
			
		<div class="neo_socialproof_subtitle">
			Lo mejor del hotel:
		</div>
		<div class="neo_socialproof_slide_besttxt">
			Nos encontramos con un hotel en un entorno hermoso 
La amabilidad de Alejandro y Cristian ha sido enorme. Nos ayudaron y contivieron dado que debimos partir un dia antes por cuestiones climáticas para el cruce a Argentina.  Sin dudas los recomendamos.		</div>
						<div class="neo_socialproof_slide_name">
			Mijal, Argentina		</div>
			</a>

	</div>


  <div class="neo_socialproof_slide_item swiper-slide" id="neosocial_item_505548">
		
  		<div class="neo_socialproof_score">
			9.3		</div>
			
		<div class="neo_socialproof_subtitle">
			Lo mejor del hotel:
		</div>
		<div class="neo_socialproof_slide_besttxt">
			Muchas gracias, todo excelente. Muy buena la atención de los dueños, la comida espectacular, se nota la atención en los detalles.		</div>
						<div class="neo_socialproof_slide_name">
			Andrea, Chile		</div>
			</a>

	</div>


  <div class="neo_socialproof_slide_item swiper-slide" id="neosocial_item_496292">
		
  		<div class="neo_socialproof_score">
			9.1		</div>
			
		<div class="neo_socialproof_subtitle">
			Lo mejor del hotel:
		</div>
		<div class="neo_socialproof_slide_besttxt">
			Mantengan el estilo actual muy acogedor		</div>
						<div class="neo_socialproof_slide_name">
			Roberto, Chile		</div>
			</a>

	</div>


  <div class="neo_socialproof_slide_item swiper-slide" id="neosocial_item_496009">
		
  		<div class="neo_socialproof_score">
			9.2		</div>
			
		<div class="neo_socialproof_subtitle">
			Lo mejor del hotel:
		</div>
		<div class="neo_socialproof_slide_besttxt">
			Intercambios muy amables con los propietarios inquilinos del lugar		</div>
						<div class="neo_socialproof_slide_name">
			Thierry, Switzerland		</div>
			</a>

	</div>


  <div class="neo_socialproof_slide_item swiper-slide" id="neosocial_item_489978">
		
  		<div class="neo_socialproof_score">
			9.3		</div>
			
		<div class="neo_socialproof_subtitle">
			Lo mejor del hotel:
		</div>
		<div class="neo_socialproof_slide_besttxt">
			Muy buena la atención. Al estar el lago tan bajo fue importante disfrutar de la Pileta.		</div>
						<div class="neo_socialproof_slide_name">
			Luis Roberto, Argentina		</div>
			</a>

	</div>


  <div class="neo_socialproof_slide_item swiper-slide" id="neosocial_item_488212">
		
  		<div class="neo_socialproof_score">
			9.7		</div>
			
		<div class="neo_socialproof_subtitle">
			Lo mejor del hotel:
		</div>
		<div class="neo_socialproof_slide_besttxt">
			Entorno cuidado manteniendo flora natural . Clases de vela y ski buenisimos profesores .		</div>
						<div class="neo_socialproof_slide_name">
			Maria Fidelia, Chile		</div>
			</a>

	</div>


  <div class="neo_socialproof_slide_item swiper-slide" id="neosocial_item_486357">
		
  		<div class="neo_socialproof_score">
			9.6		</div>
			
		<div class="neo_socialproof_subtitle">
			Lo mejor del hotel:
		</div>
		<div class="neo_socialproof_slide_besttxt">
			Excelente estadía, muy muy bueno. La vista es increíble, y el staff es muy atento.		</div>
						<div class="neo_socialproof_slide_name">
			Olivier Fontaine		</div>
			</a>

	</div>


  <div class="neo_socialproof_slide_item swiper-slide" id="neosocial_item_485078">
		
  		<div class="neo_socialproof_score">
			9.3		</div>
			
		<div class="neo_socialproof_subtitle">
			Lo mejor del hotel:
		</div>
		<div class="neo_socialproof_slide_besttxt">
			Un lugar muy tranquilo y lindo entorno, super recomendado para ir con la Familia.		</div>
						<div class="neo_socialproof_slide_name">
			Luis, Chile		</div>
			</a>

	</div>


  <div class="neo_socialproof_slide_item swiper-slide" id="neosocial_item_484928">
		
  		<div class="neo_socialproof_score">
			9.7		</div>
			
		<div class="neo_socialproof_subtitle">
			Lo mejor del hotel:
		</div>
		<div class="neo_socialproof_slide_besttxt">
			Lugar tranquilo con acceso a dos piscinas, cubas calientes sin restrinccion y al hermoso lago donde tuvo la oportunidad mi hija y su amiga de andar en motos de agua. Lo recomiendo totalmente.		</div>
						<div class="neo_socialproof_slide_name">
			Marcela Alejandra, Chile		</div>
			</a>

	</div>


  <div class="neo_socialproof_slide_item swiper-slide" id="neosocial_item_481206">
		
  		<div class="neo_socialproof_score">
			9.6		</div>
			
		<div class="neo_socialproof_subtitle">
			Lo mejor del hotel:
		</div>
		<div class="neo_socialproof_slide_besttxt">
			Limpieza		</div>
						<div class="neo_socialproof_slide_name">
			Marcela Isabel, Chile		</div>
			</a>

	</div>


  <div class="neo_socialproof_slide_item swiper-slide" id="neosocial_item_477237">
		
  		<div class="neo_socialproof_score">
			9		</div>
			
		<div class="neo_socialproof_subtitle">
			Lo mejor del hotel:
		</div>
		<div class="neo_socialproof_slide_besttxt">
			tod muy bien, la comida muy rica y la atención muy cercadna... me encantó		</div>
						<div class="neo_socialproof_slide_name">
			Patricia, Chile		</div>
			</a>

	</div>


  <div class="neo_socialproof_slide_item swiper-slide" id="neosocial_item_468110">
		
  		<div class="neo_socialproof_score">
			10		</div>
			
		<div class="neo_socialproof_subtitle">
			Lo mejor del hotel:
		</div>
		<div class="neo_socialproof_slide_besttxt">
			Lugar y entorno magnífico. Ideal para descansar.		</div>
						<div class="neo_socialproof_slide_name">
			Julio, Chile		</div>
			</a>

	</div>


  <div class="neo_socialproof_slide_item swiper-slide" id="neosocial_item_465806">
		
  		<div class="neo_socialproof_score">
			9		</div>
			
		<div class="neo_socialproof_subtitle">
			Lo mejor del hotel:
		</div>
		<div class="neo_socialproof_slide_besttxt">
			Se agradece la amabilidad de su atención y se nota la preocupación de sus dueños en cada detalle		</div>
						<div class="neo_socialproof_slide_name">
			Lucas, Chile		</div>
			</a>

	</div>


  <div class="neo_socialproof_slide_item swiper-slide" id="neosocial_item_463161">
		
  		<div class="neo_socialproof_score">
			9.2		</div>
			
		<div class="neo_socialproof_subtitle">
			Lo mejor del hotel:
		</div>
		<div class="neo_socialproof_slide_besttxt">
			Muy lindo el lugar, nos encantó, nos gustaría volver pronto, la pasamos genial. Todos fueron muy amables		</div>
						<div class="neo_socialproof_slide_name">
			Luis Alejandro, Chile		</div>
			</a>

	</div>


  <div class="neo_socialproof_slide_item swiper-slide" id="neosocial_item_452120">
		
  		<div class="neo_socialproof_score">
			9.4		</div>
			
		<div class="neo_socialproof_subtitle">
			Lo mejor del hotel:
		</div>
		<div class="neo_socialproof_slide_besttxt">
			El descanso y la tranquilidad, la amabilidad  de las personas y o viamente las instalaciones		</div>
						<div class="neo_socialproof_slide_name">
			Miguel, Chile		</div>
			</a>

	</div>


  <div class="neo_socialproof_slide_item swiper-slide" id="neosocial_item_448121">
		
  		<div class="neo_socialproof_score">
			8.1		</div>
			
		<div class="neo_socialproof_subtitle">
			Lo mejor del hotel:
		</div>
		<div class="neo_socialproof_slide_besttxt">
			Buen Restorant, deberían entregar un mapa con las zonas		</div>
						<div class="neo_socialproof_slide_name">
			Matias , Chile		</div>
			</a>

	</div>


  <div class="neo_socialproof_slide_item swiper-slide" id="neosocial_item_446582">
		
  		<div class="neo_socialproof_score">
			8		</div>
			
		<div class="neo_socialproof_subtitle">
			Lo mejor del hotel:
		</div>
		<div class="neo_socialproof_slide_besttxt">
			Excelente vista, excelente atención, excelente lugar, con mi pareja tuvimos un inconveniente personal al momento del check out y en el lodge no tuvieron ninguna problema en ayudarnos, las pizzas muy ricas, la atención rapida y amable, el lugar es hermoso incluso nos tocaron dias con lluvias y estaba 100% equipado para eso!		</div>
						<div class="neo_socialproof_slide_name">
			Natalia Paz, Chile		</div>
			</a>

	</div>


  <div class="neo_socialproof_slide_item swiper-slide" id="neosocial_item_444065">
		
  		<div class="neo_socialproof_score">
			10		</div>
			
		<div class="neo_socialproof_subtitle">
			Lo mejor del hotel:
		</div>
		<div class="neo_socialproof_slide_besttxt">
			Super lindo el lugar y la pieza de jacuzzi miy agradable! La cabana tiene lo justo y necesario		</div>
						<div class="neo_socialproof_slide_name">
			Beatriz, Chile		</div>
			</a>

	</div>


  <div class="neo_socialproof_slide_item swiper-slide" id="neosocial_item_439923">
		
  		<div class="neo_socialproof_score">
			9.8		</div>
			
		<div class="neo_socialproof_subtitle">
			Lo mejor del hotel:
		</div>
		<div class="neo_socialproof_slide_besttxt">
			La atención de los dueños, las instalaciones muy limpias, cómodas y acordes al entorno entre la vegetación del lugar, su entorno con el lago y la posibilidad de realizar muchas actividades y nadar en el lago, la comida exquisita.		</div>
					</a>

	</div>


  <div class="neo_socialproof_slide_item swiper-slide" id="neosocial_item_439922">
		
  		<div class="neo_socialproof_score">
			9.8		</div>
			
		<div class="neo_socialproof_subtitle">
			Lo mejor del hotel:
		</div>
		<div class="neo_socialproof_slide_besttxt">
			La ubicación es increíble. Habitación limpia, parecía que todo estuviera nuevo, con una maravillosa vista al Lago. El lugar es tranquilo, perfecto para relajarse y descansar. Volvería en otra oportunidad y por más tiempo.		</div>
					</a>

	</div>


  <div class="neo_socialproof_slide_item swiper-slide" id="neosocial_item_439921">
		
  		<div class="neo_socialproof_score">
			9.8		</div>
			
		<div class="neo_socialproof_subtitle">
			Lo mejor del hotel:
		</div>
		<div class="neo_socialproof_slide_besttxt">
			Fue nuestra primera parada en Chile, el establecimiento está muy bien ubicado frente al lago. El desayunador comedor excelentemente decorado ofrece una hermosa vista para disfrutar y comenzar el día. Cristian y su familia se preocuparon que la estadía fuera agradable y no faltara nada. Excelente lugar para descansar y relajarse, también con muy buena cocina.		</div>
					</a>

	</div>


  <div class="neo_socialproof_slide_item swiper-slide" id="neosocial_item_439920">
		
  		<div class="neo_socialproof_score">
			9.7		</div>
			
		<div class="neo_socialproof_subtitle">
			Lo mejor del hotel:
		</div>
		<div class="neo_socialproof_slide_besttxt">
			La vista al lago . Instalaciones insertas en la naturaleza de forma amigable . Silencio casi absoluto		</div>
					</a>

	</div>


  <div class="neo_socialproof_slide_item swiper-slide" id="neosocial_item_439919">
		
  		<div class="neo_socialproof_score">
			9.8		</div>
			
		<div class="neo_socialproof_subtitle">
			Lo mejor del hotel:
		</div>
		<div class="neo_socialproof_slide_besttxt">
			El lugar es realmente muy lindo. Tiene un lugar de restaurante y bar muy rico con muy buena vista. Alejandro su dueño, muy entretenido para poder conversar con el. Te hace sentir en casa.		</div>
					</a>

	</div>


</div>


<button type="button" class="swiper-socialproof-nav swiper-prev"><i class="mdi mdi-chevron-left"></i></button>
<button type="button" class="swiper-socialproof-nav swiper-next"><i class="mdi mdi-chevron-right"></i></button>


</div>

			  </div>
			  </div></div></div></div><div  class='container-neo-slider'  Slide='FondoComentarios' Width='1900' Height='900' Loop='true' Effect='Fade '>
			  <div class="neo_template_block neo_neo_swiper pxModule_include ModuloWrap_neo_swiper" id="neo_swiper" >
			  

<!-- Module Start -->

<div class="megacontainer-neo-swiper">
    <div class="swiper-container-4363"> <!-- le asignamos el numero random al contenedor -->
     
            <div class="swiper-wrapper">
                                        <div class="swiper-slide slide-one-pic">
                            <img src="https://images-new.pxsol.com/JXiynK1zMSnHCqDPsNHa4qXFuAl2Hnp0MLIs98l_FhM/rs:fill:1900:900:1/q:80/plain/https%3A%2F%2Ffiles-p.pxsol.com%2F23611%2Fcompany%2Flibrary%2Fuser%2F28101265856abd4abe130158526b4c19ccb9dc70e85.jpg@jpg" 
                                 width="1900" 
                                 height="900" 
                                 style="aspect-ratio: 1900/900;"
                                 alt="Lodge Colbún">
                                                    </div>	
                            </div>
            <!-- Add Arrows -->
                                    
        </div>
    <!-- Así mismo para dataconfig-swiper le pasamos el numero random para identificarlo de otros -->
    <div class="dataconfig-swiper" data-id="4363" data-loop="true" data-speed=800 data-effect="fade" data-delay=5000 style="display:none" ></div>
</div>


			  </div>
			  </div></div> 

</div>

		</div>


		<div style="display:none !important">
			-------------------------------------------------------------<br>UrlInclude: /var/www/html/template.php<br />Folder_Cliente: LodgeColbun<br />Nivel: 0<br />Pid: 24647<br />Sku: 1<br />ListID: 0<br />Location: <br />Type: Hotel<br />SubType: Hotel<br />lng: es<br />cur: CLP<br />content: index<br />cacheContent: index<br />originalContentPreLng: index<br />Original Request: //www.lodgecolbun.com/ <br />-------------------------------------------------------------<br>		</div>

		<div class="main_wraper_footer" id="main_wraper_footer">
			

<div class="neo_template_container neo_template_ computer">


<div  class="megacontainer-footer"  ><div  class="container-info-footer"  ><div  class="contact"  ><div  class='' >
			  <div class="neo_template_block neo_neo_contact_info pxModule_include ModuloWrap_neo_contact_info" id="neo_contact_info" >
			  
<div class="neo-contact-container">
  <h4 class="neo-contact-title">
    Lodge Colbún  </h4>
  <ul>

          <li>
        <a href="tel:+56 9 8475 8096">
          <i class="mdi mdi-phone-in-talk"></i>
          +56 9 8475 8096        </a>
      </li>
    
          <li>
        <a href="tel: +56 9 7669 7162">
          <i class="mdi mdi-phone-in-talk"></i>
          +56 9 7669 7162          
        </a>
      </li>
    
          <li>
        <a href="https://api.whatsapp.com/send?phone=56984758096" target="_blank">
          <i class="mdi mdi-whatsapp"></i>
          +56 9 8475 8096        </a>
      </li>
        
                  <li>
        <a href="https://www.google.com/maps/search/Lodge Colbún, Camino Colbún Alto Km 10,5. Colbún, Linares Maule - Chile" target="_blank">
            <i class="mdi mdi-map-marker"></i>
            Camino Colbún Alto Km 10,5. Colbún, Linares          </a>
        </li>
        
              <li>
          <a href="/cdn-cgi/l/email-protection#acdec9dfc9dedacddfecc0c3c8cbc9cfc3c0ced9c282cfc3c1">
            <i class="mdi mdi-email"></i>
            <span class="__cf_email__" data-cfemail="c8baadbbadbabea9bb88a4a7acafadaba7a4aabda6e6aba7a5">[email&#160;protected]</span>          </a>
        </li>
            </ul>
</div>
			  </div>
			  </div></div><div  class="logo_content flex flex-column flex-center"  ><div  class="logo"  > <img loading="lazy"  class=""   lazy-src="https://files-p.pxsol.com/23611/company/library/user/24884741770f61d7ab9513ebbe02cf4cb064d719a41.png" alt="LodgeColbun" > </image></div></div><div  class="social"  ><div  class=""  ><div  class='' >
			  <div class="neo_template_block neo_neo_social_links pxModule_include ModuloWrap_neo_social_links" id="neo_social_links" >
			  

<div class="neo_social_links_container social_block">
  <ul class="neo_links_list">
          <li class="facebook_page">
        <a href="https://www.facebook.com/lodgecolbun" target="_blank">
          <i class="mdi mdi-facebook"></i>
        </a>
      </li>
              <li class="instagram_page">
        <a href="https://www.instagram.com/lodgecolbun" target="_blank">
          <i class="mdi mdi-instagram"></i>
        </a>
      </li>
                      <li class="tripadvisor_page">
        <a href="https://www.tripadvisor.com.ar/Hotel_Review-g1675381-d1759433-Reviews-Lodge_Colbun-Colbun_Maule_Region.html" target="_blank">
          <svg version="1.1" x="0px" y="0px" width="32px" height="32px" viewBox="0 0 98.566 98.566" style="enable-background:new 0 0 98.566 98.566;" xml:space="preserve">
            <g>
              <g>
                <path d="M60.401,20.996c2.751,0.389,5.445,1.08,8.107,1.898c4.647,1.431,9.032,3.419,13.156,5.998
        			c0.287,0.178,0.67,0.291,1.008,0.291c4.844,0.02,9.686,0.013,14.526,0.017c0.39,0,0.778,0.041,1.167,0.063
        			c0,0.095,0.014,0.135-0.002,0.157c-0.226,0.348-0.455,0.691-0.682,1.038c-1.643,2.52-3.047,5.156-3.876,8.07
        			c-0.09,0.313-0.109,0.575,0.103,0.882c4.312,6.192,5.688,12.99,3.886,20.318c-1.58,6.427-5.264,11.438-10.862,14.986
        			c-4.001,2.537-8.421,3.745-13.143,3.771c-1.984,0.012-3.958-0.255-5.896-0.757c-4.722-1.225-8.77-3.579-12.106-7.144
        			c-0.44-0.468-0.854-0.957-1.323-1.486c-1.764,2.629-3.5,5.215-5.278,7.869c-1.771-2.646-3.483-5.207-5.191-7.758
        			c-0.118,0.062-0.152,0.069-0.175,0.091c-0.039,0.032-0.072,0.071-0.103,0.108c-4.035,4.765-9.111,7.686-15.295,8.663
        			c-3.44,0.545-6.847,0.349-10.188-0.572c-4.735-1.301-8.759-3.799-12.01-7.485c-3.177-3.604-5.153-7.788-5.895-12.545
        			c-0.849-4.44,0.185-8.721,0.443-9.76c0.748-3.02,2.052-5.793,3.842-8.343c0.126-0.181,0.17-0.501,0.11-0.717
        			c-0.73-2.677-1.988-5.112-3.461-7.444c-0.374-0.593-0.822-1.142-1.236-1.711c0-0.065,0-0.132,0-0.198
        			c0.083,0.01,0.165,0.026,0.246,0.026c4.956,0.002,9.911,0.004,14.867-0.006c0.216,0,0.456-0.089,0.64-0.207
        			c3.482-2.234,7.192-4.004,11.09-5.382c2.811-0.992,5.681-1.766,8.608-2.333c2.834-0.548,5.683-0.934,8.562-1.124
        			C51.059,19.73,56.669,20.473,60.401,20.996z M54.188,53.727c0,10.883,8.83,19.774,19.674,19.732
        			c10.885-0.039,19.675-8.68,19.667-19.683c-0.008-11.339-9.206-19.863-20.089-19.642C62.696,34.357,54.286,43.017,54.188,53.727z
        			 M24.677,34.059C14.091,33.967,4.861,42.802,5.046,54.056c0.172,10.495,8.822,19.392,19.851,19.297
        			c10.784-0.092,19.452-8.898,19.472-19.562C44.386,42.835,35.612,34.059,24.677,34.059z M25.653,28.925
        			c5.98,0.365,11.233,2.449,15.671,6.485c4.429,4.028,7.024,9.053,7.967,14.962c0.97-5.839,3.497-10.817,7.843-14.805
        			c4.353-3.992,9.536-6.087,15.418-6.53c-6.98-3.103-14.34-4.421-21.916-4.567C42.026,24.301,33.651,25.57,25.653,28.925z" />
                <path d="M73.822,41.311c6.735-0.011,12.19,5.415,12.19,12.143c0,6.754-5.362,11.975-11.688,12.216
        			c-7.065,0.271-12.718-5.358-12.716-12.186C61.614,46.578,67.307,41.197,73.822,41.311z M81.766,53.484
        			c-0.003-4.39-3.552-7.958-7.912-7.958c-4.41,0-8,3.549-8.018,7.926c-0.016,4.358,3.592,7.984,7.961,7.996
        			C78.173,61.465,81.768,57.866,81.766,53.484z" />
                <path d="M24.417,41.311c6.731-0.007,12.194,5.429,12.177,12.156c-0.019,6.809-5.386,11.916-11.601,12.199
        			c-7.093,0.324-12.816-5.33-12.803-12.195C12.204,46.516,17.936,41.195,24.417,41.311z M32.352,53.457
        			c-0.013-4.417-3.585-7.938-8.044-7.93c-4.301,0.008-7.905,3.638-7.895,7.955c0.011,4.367,3.611,7.958,7.992,7.97
        			C28.759,61.462,32.363,57.836,32.352,53.457z" />
                <path d="M73.828,49.443c2.232-0.002,4.062,1.829,4.041,4.048c-0.022,2.224-1.821,4.026-4.016,4.027
        			c-2.26,0-4.077-1.786-4.072-3.999C69.785,51.223,71.55,49.445,73.828,49.443z" />
                <path d="M24.396,49.407c2.266-0.002,4.087,1.808,4.096,4.067c0.009,2.24-1.829,4.079-4.084,4.084
        			c-2.309,0.005-4.09-1.779-4.088-4.1C20.32,51.179,22.097,49.41,24.396,49.407z" />
              </g>
            </g>
          </svg>
        </a>
      </li>
              </ul>
</div>
  <div class="wsp_floating">
    <a href="https://api.whatsapp.com/send?phone=56984758096" target="_blank">
      <i class="mdi mdi-whatsapp"></i>
    </a>
  </div>
			  </div>
			  </div></div><div  class=""  ><div  class='' ><div class='pxModule_include  ModuloWrap_newsletter  '><div id="content_news">
    <div class="left full titlenewsletter">SUSCRÍBETE A NUESTRO NEWSLETTER</div>
    <form id="form_suscribe" name="form_suscribe" method="post" action="/contact/newsletter">
        <div class="wrap_imputs">
            <div class="wrap_emails">
                <input name="email" type="text" id="email" class="input_newsletter" value="" placeholder="Ingresa tu Email" />
            </div>
            <div class="SuscribeTitle">
                <div id="newsletter-recaptcha"></div>
                <button type="submit" onClick="ga('send','event','click','boton_suscribirse','form_suscribirse');" class="boton_newsletter" id="Import">Suscribirse</button>
                <input name="company_id" type="hidden" id="company_id" value="23611" />
            </div> 
        </div>
    </form>
</div></div></div></div></div></div></div> 

</div>

			<div id="footer_px" class="noprint footer_px_fix" style="max-width: 100vw; box-sizing: border-box; overflow-x: hidden;">
    <div class="wraper_footerpx flex-column flex-center">

        
        <div class="texto_footerpx">
            Al utilizar este sitio web, acepta el uso de cookies.            <a target="_blank" rel="nofollow" href="/cookiespolicies.php?pos=LodgeColbun" class="footer_link">Política de cookies</a> | <a target="_blank" rel="nofollow" href="https://files-p.pxsol.com/23611/company/library/user/21326778216c9b4f8ca905a378b6a5a6da010f26e4e.pdf?X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAQI4Y7PQJFLSSFFFR%2F20260426%2Fus-west-2%2Fs3%2Faws4_request&X-Amz-Date=20260426T192518Z&X-Amz-SignedHeaders=host&X-Amz-Expires=1200&X-Amz-Signature=7e46c64ed31effbee82dd6780ef679f0cf8250e9c01e7c69e5e4576ccde3db15" class="footer_link">Términos y condiciones</a> | <a target="_blank" rel="nofollow" href="/policies.php?pos=LodgeColbun" class="footer_link">Política de privacidad</a> | <span>Cache:
                2026-06-10 12:17:53 | </span><a href="" rel="nofollow" target="_blank">Textos</a> | <span class="framework_f">Framework: 3 | <span class="framework_f">Tag: <span class="tag_cookie">..</span> </span> </span>
        </div>

            <div class="pxsol_link_f">
        <a style="text-decoration: underline !important;" target="_blank" href="https://www.pxsol.com/?" class="footer_link">Software Hotelero</a>
        de        <a href="https://www.pxsol.com/?" target="_blank" class="footer_link footer_logo_svg" title="Software Hotelero">
            <?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
   xmlns:dc="http://purl.org/dc/elements/1.1/"
   xmlns:cc="http://creativecommons.org/ns#"
   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
   xmlns:svg="http://www.w3.org/2000/svg"
   xmlns="http://www.w3.org/2000/svg"
   viewBox="0 0 752.42535 358.37866"
   height="50px"
   width="23px"
   xml:space="preserve"
   id="svg2"
   version="1.1"><metadata
     id="metadata8"><rdf:RDF><cc:Work
         rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
           rdf:resource="http://purl.org/dc/dcmitype/StillImage" /></cc:Work></rdf:RDF></metadata><defs
     id="defs6"><clipPath
       id="clipPath18"
       clipPathUnits="userSpaceOnUse"><path
         id="path16"
         d="M 0,268.784 H 564.319 V 0 H 0 Z" /></clipPath></defs><g
     transform="matrix(1.3333333,0,0,-1.3333333,0,358.37867)"
     id="g10"><g
       id="g12"><g
         clip-path="url(#clipPath18)"
         id="g14"><g
           transform="translate(23.3438,154.8828)"
           id="g20"><path
             id="path22"
             style="fill:#231f20;fill-opacity:1;fill-rule:nonzero;stroke:none"
             d="m 0,0 h 12.405 c 11.978,0 20.768,1.891 26.369,5.674 5.601,3.781 8.4,9.691 8.4,17.728 0,7.447 -2.507,13.002 -7.521,16.666 -5.013,3.664 -12.828,5.496 -23.44,5.496 H 0 Z m 71.202,24.112 c 0,-13.534 -4.884,-23.905 -14.65,-31.115 -9.768,-7.21 -23.67,-10.814 -41.707,-10.814 H 0 V -66.309 H -23.344 V 63.294 h 41.118 c 17.841,0 31.207,-3.311 40.097,-9.929 8.886,-6.619 13.331,-16.37 13.331,-29.253" /></g><g
           transform="translate(325.4336,123.7686)"
           id="g24"><path
             id="path26"
             style="fill:#231f20;fill-opacity:1;fill-rule:nonzero;stroke:none"
             d="m 0,0 c 0,-11.524 -4.59,-20.565 -13.773,-27.126 -9.179,-6.561 -21.846,-9.84 -37.994,-9.84 -16.149,0 -29.367,2.274 -39.653,6.824 v 20.036 c 6.509,-2.78 13.43,-4.964 20.754,-6.56 7.327,-1.596 14.147,-2.392 20.462,-2.392 9.246,0 16.068,1.594 20.462,4.785 4.396,3.191 6.595,7.475 6.595,12.853 0,4.847 -2.02,8.956 -6.057,12.323 -4.039,3.369 -12.372,7.358 -25.005,11.968 -13.023,4.787 -22.204,10.252 -27.542,16.4 -5.341,6.145 -8.01,13.532 -8.01,22.161 0,10.815 4.233,19.324 12.698,25.53 8.463,6.205 19.827,9.308 34.087,9.308 13.675,0 27.284,-2.719 40.829,-8.156 L -9.572,70.829 c -12.697,4.844 -24.028,7.269 -33.99,7.269 -7.555,0 -13.285,-1.494 -17.19,-4.477 -3.906,-2.985 -5.86,-6.93 -5.86,-11.834 0,-3.369 0.781,-6.25 2.344,-8.644 1.563,-2.393 4.134,-4.653 7.716,-6.782 3.58,-2.127 10.026,-4.935 19.339,-8.421 10.484,-3.959 18.166,-7.654 23.05,-11.08 4.884,-3.429 8.464,-7.3 10.745,-11.613 C -1.14,10.933 0,5.85 0,0" /></g><g
           transform="translate(355.8486,153.5532)"
           id="g28"><path
             id="path30"
             style="fill:#231f20;fill-opacity:1;fill-rule:nonzero;stroke:none"
             d="m 0,0 c 0,-15.956 3.547,-28.057 10.646,-36.299 7.097,-8.245 17.614,-12.369 31.548,-12.369 13.87,0 24.335,4.08 31.401,12.235 7.064,8.155 10.598,20.3 10.598,36.433 0,15.897 -3.501,27.953 -10.5,36.168 C 66.693,44.382 56.26,48.49 42.39,48.49 28.391,48.49 17.826,44.382 10.694,36.168 3.564,27.953 0,15.897 0,0 m 109.001,0 c 0,-21.097 -5.811,-37.498 -17.434,-49.198 C 79.946,-60.901 63.486,-66.75 42.194,-66.75 c -21.553,0 -38.108,5.806 -49.667,17.418 -11.558,11.613 -17.334,28.116 -17.334,49.509 0,21.394 5.81,37.823 17.433,49.288 11.622,11.464 28.21,17.198 49.764,17.198 21.227,0 37.635,-5.822 49.227,-17.464 C 103.205,37.556 109.001,21.156 109.001,0" /></g><g
           transform="translate(480.5166,88.5742)"
           id="g32"><path
             id="path34"
             style="fill:#231f20;fill-opacity:1;fill-rule:nonzero;stroke:none"
             d="M 0,0 V 129.603 H 23.342 V 18.175 H 83.803 V 0 Z" /></g><g
           transform="translate(95.5459,218.4404)"
           id="g36"><path
             id="path38"
             style="fill:#ee2735;fill-opacity:1;fill-rule:nonzero;stroke:none"
             d="m 0,0 42.967,-58.803 -68.085,-93.3 30.263,-9.074 56.235,77.141 87.961,-120.538 46.28,-13.866 L 79.583,-59.091 159.441,50.344 112.198,36.084 60.982,-33.892 29.65,9.046 Z" /></g></g></g></g></svg>        </a>
    </div>

    </div>
</div>


<script data-cfasync="false" src="/cdn-cgi/scripts/5c5dd728/cloudflare-static/email-decode.min.js"></script><script>
    function loadPxChatWidget() {
        const posToGetApiKey = 'LodgeColbun';
        const timestamp = '1780899570';
        const urlToGetApiKey = `https://px-chat-widget-prod.pxsol.com/company-widget/apiKey/${posToGetApiKey}?v=${timestamp}`;

        fetch(urlToGetApiKey, {
                method: 'GET',
                headers: {
                    'Content-Type': 'application/json',
                }
            })
            .then(response => {
                if (!response.ok) {
                    throw new Error(`HTTP error! status: ${response.status}`);
                }
                return response.json();
            })
            .then(data => {
                const internalKey = data?.data?.api_key;
                if (!internalKey) {
                    throw new Error('API key not found in response');
                }

                const script = document.createElement('script');
                script.src = `https://cdn.pxsol.com/dist/chat-widget.min.js?k=${internalKey}&v=${timestamp}`;
                script.async = true;
                script.onload = () => {
                    console.log('PxChat widget loaded successfully');
                };
                script.onerror = (error) => {
                    console.error('Failed to load PxChat widget:', error);
                };
                document.body.appendChild(script);
            })
            .catch(error => {
                console.error('PxChat widget initialization failed:', error.message);
            });
    }
        document.addEventListener("DOMContentLoaded", loadPxChatWidget);
    </script>

<script src="https://cdn.pxsol.com/js/domready.js"></script>
<script>
    var head = document.getElementsByTagName('head')[0];

    function initializeFontAwesome() {
        var link = document.createElement('link');
        link.id = "fawesome";
        link.rel = 'stylesheet';
        link.type = 'text/css';
        link.href = 'https://use.fontawesome.com/releases/v5.7.1/css/all.css';
        head.appendChild(link);
    }

    function initializeMDI() {
        var link = document.createElement('link');
        link.id = "fawesome";
        link.rel = 'stylesheet';
        link.type = 'text/css';
        link.href = '/css/materialdesignicons.min.css';
        head.appendChild(link);
    }

    function initializeToast() {
        // check if jquery is loaded
        if (typeof jQuery == 'function') {
            let link = document.createElement('link');
            link.id = "jqToastCss";
            link.rel = 'stylesheet';
            link.type = 'text/css';
            link.href = '/includes/toast/jquery.toast.min.css';
            head.appendChild(link);
            let script = document.createElement('script');
            script.id = "jqToastJs";
            script.type = 'text/javascript';
            script.defer = true;
            script.async = true;
            script.src = '/includes/toast/jquery.toast.min.js';
            head.appendChild(script);
        } else {
            console.log('jQuery is not loaded. Toast could not be initialized.');
        }
    }

    DomReady.ready(function() {
        var link = document.createElement('link');
        link.id = "siteCss";
        link.rel = 'stylesheet';
        link.type = 'text/css';

                    link.href =
				'/css_3.css?pos=LodgeColbun&device=computer&posv=1780899570_2026-04-30T15:19:23.000Z&filev=2';
                            head.appendChild(link);

        if (typeof deferFontAwesome !== "undefined") {
            if (!deferFontAwesome) {
                initializeFontAwesome();
            }
        } else {
            initializeFontAwesome();
        }

        if (typeof deferMDI !== "undefined") {
            if (!deferMDI) {
                initializeMDI();
            }
        } else {
            initializeMDI();
        }

        if (typeof deferToast !== "undefined") {
            if (!deferToast) {
                initializeToast();
            }
        } else {
            initializeToast();
        }

    });
</script>
<script>
	(function(){
		console.log('%c[pxChat] 🚀 Chat tracking script loaded (Chromium optimized)', 'color: #4CAF50; font-weight: bold; font-size: 14px;');
		window.dataLayer = window.dataLayer || [];
		function generateId(prefix){
			const rnd = ([1e7]+-1e3+-4e3+-8e3+-1e11).replace(/[018]/g, c =>
				(c ^ crypto.getRandomValues(new Uint8Array(1))[0] & 15 >> c / 4).toString(16)
			);
			return (prefix || 'id_') + rnd;
		}
		function getPxContext(){
			try { return window.pxContext || {}; } catch(e){ return {}; }
		}
		function getSessionId(){
			const ctx = getPxContext();
			if (ctx.session_id) return ctx.session_id;
			let sid = sessionStorage.getItem('px_session_id');
			if (!sid){ sid = generateId('s_'); sessionStorage.setItem('px_session_id', sid); }
			return sid;
		}
		function getChatSessionId(){
			let cid = sessionStorage.getItem('px_chat_session_id');
			if (!cid){ cid = generateId('c_'); sessionStorage.setItem('px_chat_session_id', cid); }
			return cid;
		}
		function basePayload(){
			const ctx = getPxContext();
			const pos = (ctx.pos || 'LodgeColbun') || null;
			const hotelId = (ctx.product_id || '24647') || null;
			return {
				session_id: getSessionId(),
				search_id: ctx.search_id || ctx.SearchID || null,
				pos: pos,
				post: pos,
				hotel_id: hotelId,
				page_url: location.href
			};
		}
		function pushEvent(name, extra){
			const params = Object.assign({}, basePayload(), extra || {});
			// Dedupe: evita repetidos en ±1s por sesión/mensaje
			try {
				const keyId = params.chat_session_id || params.chat_id || '';
				const key = name + '|' + String(keyId);
				const now = Date.now();
				window.__px_evt_dedupe = window.__px_evt_dedupe || {};
				const last = window.__px_evt_dedupe[key] || 0;
				if (now - last < 1000) { 
					return; 
				}
				window.__px_evt_dedupe[key] = now;
			} catch(_e){
				console.error('[pxChat] Error in pushEvent dedupe:', _e);
			}
			// Evitar duplicados: si pxTrack existe, delegamos y NO empujamos a dataLayer aquí
			if (typeof window.pxTrack === 'function') {
				try { 
					console.log('[pxChat] 📤 Calling pxTrack for', name, 'with params:', params);
					window.pxTrack(name, params); 
					console.log('%c[pxChat] ✅ ' + name + ' event dispatched successfully', 'color: #4CAF50; font-weight: bold;');
				} catch(e){
					console.error('[pxChat] ❌ Error calling window.pxTrack for', name, ':', e);
				}
				return;
			}
			const payload = Object.assign({ event: name }, params);
			console.log('[pxChat] 📤 Pushing to dataLayer:', payload);
			window.dataLayer.push(payload);
			console.log('%c[pxChat] ✅ ' + name + ' event pushed to dataLayer', 'color: #4CAF50; font-weight: bold;');
		}
		let chatOpenTsMs = null;
		let chatIsOpen = false;
		let lastOpenPushMs = 0;
		let closeGuardTimer = null;
		let lastStateChangeMs = 0;
		let lastCloseCallMs = 0; // Guard para prevenir múltiples llamadas rápidas a handleChatClose
		let lastOpenCallMs = 0; // Guard para prevenir múltiples llamadas rápidas a handleChatOpen
		let MIN_CHAT_DURATION_MS = 3000; // Mínimo 3 segundos entre chat_open y chat_close (previene falsos positivos en Chrome)
		let OPEN_DEBOUNCE_MS = 300; // Debounce para chat_open (300ms - solo para múltiples llamadas rápidas)
		let CLOSE_DEBOUNCE_MS = 400; // Debounce para chat_close (400ms - solo para múltiples llamadas rápidas)
		let pendingOpenTimer = null; // Timer para debounce de open
		let pendingCloseTimer = null; // Timer para debounce de close
		let openCallCount = 0; // Contador de llamadas rápidas a open
		let closeCallCount = 0; // Contador de llamadas rápidas a close
		function syncChatState(){
			try {
				// Guard mínimo: no sincronizar si acabamos de cambiar estado hace menos de 200ms
				const now = Date.now();
				if (now - lastStateChangeMs < 200) {
					console.log('[pxChat] syncChatState throttled (' + (now - lastStateChangeMs) + 'ms ago)');
					return;
				}
				// Priorizar estado del launcher: clase --open
				// Buscar el botón con múltiples selectores
				const btn = document.querySelector('.widget-launcher-button') || 
				            document.querySelector('[class*="widget-launcher"]') ||
				            document.querySelector('[class*="launcher-button"]');
				if (btn && btn.classList) {
					const isOpenBtn = btn.classList.contains('widget-launcher-button--open') || 
					                  btn.classList.toString().indexOf('--open') !== -1;
					console.log('[pxChat] syncChatState: button state check:', {
						isOpenBtn: isOpenBtn,
						chatIsOpen: chatIsOpen,
						buttonClasses: btn.className
					});
					if (isOpenBtn && !chatIsOpen) { 
						console.log('[pxChat] syncChatState: button is open but chatIsOpen is false, calling handleChatOpen');
						lastStateChangeMs = now; 
						return handleChatOpen(); 
					}
					if (!isOpenBtn && chatIsOpen) { 
						// Guard mínimo: no cerrar si el chat se abrió hace menos de 3 segundos
						const startMs = chatOpenTsMs || lastOpenPushMs || null;
						if (startMs && (now - startMs < 3000)) {
							console.log('[pxChat] syncChatState: chat_close blocked - chat opened too recently (' + Math.round((now - startMs) / 1000) + 's ago, minimum 3s)');
							return;
						}
						// CRÍTICO: Esperar y verificar nuevamente que el botón realmente está cerrado
						// Esto previene disparos prematuros cuando el DOM aún se está actualizando
						setTimeout(function() {
							const btnCheck = document.querySelector('.widget-launcher-button') || 
							                  document.querySelector('[class*="widget-launcher"]') ||
							                  document.querySelector('[class*="launcher-button"]');
							const isStillOpen = btnCheck && btnCheck.classList && (
								btnCheck.classList.contains('widget-launcher-button--open') || 
								btnCheck.classList.toString().indexOf('--open') !== -1
							);
							const ifrCheck = findChatIframe();
							const isIframeVisible = isElementVisible(ifrCheck);
							
							console.log('[pxChat] syncChatState: delayed verification after button close:', {
								isStillOpen: isStillOpen,
								isIframeVisible: isIframeVisible,
								chatIsOpen: chatIsOpen
							});
							
							if (isStillOpen) {
								console.log('[pxChat] syncChatState: chat_close CANCELLED - button still shows as open after delay');
								return;
							}
							if (isIframeVisible) {
								console.log('[pxChat] syncChatState: chat_close CANCELLED - iframe still visible after delay');
								return;
							}
							if (!chatIsOpen) {
								console.log('[pxChat] syncChatState: chat_close CANCELLED - chatIsOpen is already false');
								return;
							}
							
							console.log('[pxChat] syncChatState: button confirmed closed after delay, calling handleChatClose');
							lastStateChangeMs = Date.now();
							handleChatClose();
						}, 600); // Esperar 600ms para confirmar que el DOM se actualizó completamente
						return;
					}
				}
				// CRÍTICO: NO usar iframe como fallback si hay un botón disponible
				// El iframe puede no ser visible incluso cuando el chat está abierto
				// Solo confiar en el botón launcher para determinar el estado
				if (!btn) {
					// Solo si NO hay botón, intentar buscar el botón de nuevo con un selector más amplio
					const btnRetry = document.querySelector('.widget-launcher-button, [class*="widget-launcher"], [class*="launcher-button"]');
					if (btnRetry && btnRetry.classList) {
						const isOpenBtnRetry = btnRetry.classList.contains('widget-launcher-button--open') || 
						                       btnRetry.classList.toString().indexOf('--open') !== -1;
						console.log('[pxChat] syncChatState: retry button found:', {
							isOpenBtnRetry: isOpenBtnRetry,
							chatIsOpen: chatIsOpen,
							buttonClasses: btnRetry.className
						});
						if (isOpenBtnRetry && !chatIsOpen) { 
							console.log('[pxChat] syncChatState: retry button is open but chatIsOpen is false, calling handleChatOpen');
							lastStateChangeMs = now; 
							return handleChatOpen(); 
						}
						if (!isOpenBtnRetry && chatIsOpen) { 
							// Guard mínimo: no cerrar si el chat se abrió hace menos de 3 segundos
							const startMs = chatOpenTsMs || lastOpenPushMs || null;
							if (startMs && (now - startMs < 3000)) {
								console.log('[pxChat] syncChatState: chat_close blocked - chat opened too recently (' + Math.round((now - startMs) / 1000) + 's ago, minimum 3s)');
								return;
							}
							// Verificar nuevamente antes de cerrar
							setTimeout(function() {
								const btnCheck = document.querySelector('.widget-launcher-button, [class*="widget-launcher"], [class*="launcher-button"]');
								const isStillOpen = btnCheck && (btnCheck.classList.contains('widget-launcher-button--open') || 
								                                 btnCheck.classList.toString().indexOf('--open') !== -1);
								
								if (isStillOpen || !chatIsOpen) {
									console.log('[pxChat] syncChatState: chat_close CANCELLED - button still open or chatIsOpen is false');
									return;
								}
								
								console.log('[pxChat] syncChatState: retry button confirmed closed after delay, calling handleChatClose');
								lastStateChangeMs = Date.now();
								handleChatClose();
							}, 600);
							return;
						}
					}
					
					// ÚLTIMO RECURSO: Solo usar iframe si NO hay botón Y el chat está abierto
					// Y solo para abrir, NUNCA para cerrar (el iframe no es confiable para cerrar)
					const ifr = findChatIframe();
					const visible = isElementVisible(ifr);
					console.log('[pxChat] syncChatState: iframe LAST RESORT check (only for opening):', {
						visible: visible,
						chatIsOpen: chatIsOpen,
						hasIframe: !!ifr
					});
					// Solo usar iframe para detectar apertura, NUNCA para cerrar
					if (visible && !chatIsOpen) { 
						console.log('[pxChat] syncChatState: iframe visible but chatIsOpen is false, calling handleChatOpen');
						lastStateChangeMs = now; 
						return handleChatOpen(); 
					}
					// NO usar iframe para cerrar - solo confiar en el botón
					if (!visible && chatIsOpen) { 
						console.log('[pxChat] syncChatState: iframe not visible but chatIsOpen is true - IGNORING (iframe not reliable for closing)');
						return; // NO hacer nada - solo el botón puede cerrar
					}
				}
			} catch(_e){
				console.error('[pxChat] syncChatState error:', _e);
			}
		}
		function handleChatOpen(meta){
			console.log('[pxChat] handleChatOpen called:', { chatIsOpen: chatIsOpen, meta: meta });
			
			// Si ya está abierto, no hacer nada
			if (chatIsOpen) {
				console.log('[pxChat] handleChatOpen skipped - chat already open');
				return;
			}
			
			const now = Date.now();
			
			// Guard mínimo: no abrir si se cerró hace menos de 500ms (solo para prevenir toggle extremo)
			if (lastCloseCallMs && (now - lastCloseCallMs < 500)) {
				console.log('[pxChat] handleChatOpen blocked - chat closed too recently (' + (now - lastCloseCallMs) + 'ms ago)');
				return;
			}
			
			// Throttling mínimo: solo prevenir llamadas duplicadas en menos de 200ms
			if (now - lastOpenCallMs < 200) {
				console.log('[pxChat] handleChatOpen throttled (too soon)');
				return;
			}
			
			lastOpenCallMs = now;
			
			// Cancelar cualquier close pendiente
			if (pendingCloseTimer) {
				clearTimeout(pendingCloseTimer);
				pendingCloseTimer = null;
				console.log('[pxChat] handleChatOpen: cancelled pending close');
			}
			
			// Disparar inmediatamente (sin debounce para Chromium)
			console.log('[pxChat] handleChatOpen: calling doChatOpen immediately');
			doChatOpen(meta);
		}
		
		function doChatOpen(meta) {
			// Verificar estado del botón (prioridad máxima para Chromium)
			// Buscar el botón con múltiples selectores
			const btn = document.querySelector('.widget-launcher-button') || 
			            document.querySelector('[class*="widget-launcher"]') ||
			            document.querySelector('[class*="launcher-button"]');
			const isActuallyOpen = btn && btn.classList && (
				btn.classList.contains('widget-launcher-button--open') || 
				btn.classList.toString().indexOf('--open') !== -1
			);
			const ifr = findChatIframe();
			const isIframeVisible = isElementVisible(ifr);
			
			// Log detallado para debugging en Chromium
			console.log('[pxChat] doChatOpen called:', {
				isActuallyOpen: isActuallyOpen,
				isIframeVisible: isIframeVisible,
				chatIsOpen: chatIsOpen,
				hasButton: !!btn,
				buttonClasses: btn ? btn.className : 'no button'
			});
			
			// Si el botón existe y dice que está abierto, proceder
			// Si no hay botón pero el iframe es visible, también proceder
			if (!isActuallyOpen && !isIframeVisible && btn) {
				console.warn('[pxChat] doChatOpen: button exists but not showing as open, proceeding anyway');
			}
			
			// Guardar timestamp ANTES de cambiar el estado (importante para Chrome)
			const now = Date.now();
			chatOpenTsMs = now;
			lastOpenPushMs = now;
			chatIsOpen = true;
			const chat_session_id = (meta && (meta.chat_session_id || meta.session_id)) || getChatSessionId();
			
			// Log para debugging
			console.log('[pxChat] 🚀 FIRING chat_open event:', {
				chatOpenTsMs: chatOpenTsMs,
				lastOpenPushMs: lastOpenPushMs,
				timestamp: now,
				chat_session_id: chat_session_id
			});
			pushEvent('chat_open', { chat_session_id });
		}
		function handleChatMessage(meta){
			const chat_id = meta && (meta.chat_id || meta.message_id) || null;
			const message_type = meta && (meta.message_type || meta.type) || null;
			const payload = { chat_id, message_type };
			pushEvent('chat_message', payload);
		}
		function handleChatClose(meta){
			console.log('[pxChat] handleChatClose called:', { chatIsOpen: chatIsOpen, meta: meta });
			
			// Si ya está cerrado, no hacer nada
			if (!chatIsOpen) {
				console.log('[pxChat] handleChatClose skipped - chat already closed');
				return;
			}
			
			const now = Date.now();
			
			// Guard crítico: prevenir que chat_close se dispare inmediatamente después de chat_open
			// Aumentado a 3 segundos para evitar disparos prematuros
			const startMs = chatOpenTsMs || lastOpenPushMs || null;
			if (startMs && (now - startMs < 3000)) {
				console.log('[pxChat] handleChatClose blocked - chat opened too recently (' + Math.round((now - startMs) / 1000) + 's ago, minimum 3s required)');
				return;
			}
			
			// Verificación adicional: asegurarse de que el botón realmente está cerrado
			// Buscar el botón con múltiples selectores
			const btn = document.querySelector('.widget-launcher-button') || 
			            document.querySelector('[class*="widget-launcher"]') ||
			            document.querySelector('[class*="launcher-button"]');
			const isActuallyOpen = btn && btn.classList && (
				btn.classList.contains('widget-launcher-button--open') || 
				btn.classList.toString().indexOf('--open') !== -1
			);
			if (isActuallyOpen) {
				console.log('[pxChat] handleChatClose blocked - button still shows as open');
				return;
			}
			
			// Throttling mínimo: solo prevenir llamadas duplicadas en menos de 200ms
			if (now - lastCloseCallMs < 200) {
				console.log('[pxChat] handleChatClose throttled (too soon)');
				return;
			}
			
			lastCloseCallMs = now;
			
			// Cancelar cualquier open pendiente
			if (pendingOpenTimer) {
				clearTimeout(pendingOpenTimer);
				pendingOpenTimer = null;
				console.log('[pxChat] handleChatClose: cancelled pending open');
			}
			
			// Disparar inmediatamente (sin debounce para Chromium)
			console.log('[pxChat] handleChatClose: calling doChatClose immediately');
			doChatClose(meta, startMs);
		}
		
		function doChatClose(meta, startMs) {
			// Verificar estado del botón (prioridad máxima para Chromium)
			// Buscar el botón con múltiples selectores
			const btn = document.querySelector('.widget-launcher-button') || 
			            document.querySelector('[class*="widget-launcher"]') ||
			            document.querySelector('[class*="launcher-button"]');
			const isActuallyOpen = btn && btn.classList && (
				btn.classList.contains('widget-launcher-button--open') || 
				btn.classList.toString().indexOf('--open') !== -1
			);
			const ifr = findChatIframe();
			const isIframeVisible = isElementVisible(ifr);
			
			// Log detallado para debugging en Chromium
			console.log('[pxChat] doChatClose called:', {
				isActuallyOpen: isActuallyOpen,
				isIframeVisible: isIframeVisible,
				chatIsOpen: chatIsOpen,
				hasButton: !!btn,
				buttonClasses: btn ? btn.className : 'no button',
				startMs: startMs
			});
			
			// CRÍTICO: Solo proceder si el chat realmente está cerrado
			// Si hay un botón, confiar solo en el botón (no en el iframe)
			if (btn) {
				if (isActuallyOpen) {
					console.warn('[pxChat] doChatClose BLOCKED - button still shows as open');
					return;
				}
				// Si hay botón y no está abierto, proceder (ignorar iframe)
				console.log('[pxChat] doChatClose: button exists and is closed, proceeding');
			} else {
				// Solo si NO hay botón, verificar iframe
				if (isIframeVisible) {
					console.warn('[pxChat] doChatClose BLOCKED - iframe still visible (no button found)');
					return;
				}
				console.log('[pxChat] doChatClose: no button found, iframe not visible, proceeding');
			}
			
			// Guardar timestamp ANTES de cambiar el estado (importante para Chrome)
			const now = Date.now();
			const endMs = now;
			// Calcular duración antes de resetear variables
			const duration_sec = startMs ? Math.max(0, Math.round((endMs - startMs) / 1000)) : null;
			// Ahora sí cambiar el estado
			chatIsOpen = false;
			const chat_session_id = (meta && (meta.chat_session_id || meta.session_id)) || getChatSessionId();
			
			// Log para debugging
			console.log('[pxChat] 🚀 FIRING chat_close event:', {
				startMs: startMs,
				endMs: endMs,
				duration_sec: duration_sec,
				chatOpenTsMs: chatOpenTsMs,
				lastOpenPushMs: lastOpenPushMs,
				calculated: endMs - startMs + 'ms',
				chat_session_id: chat_session_id
			});
			pushEvent('chat_close', { chat_session_id, duration_sec });
			// Resetear timestamp inmediatamente (ya calculamos la duración)
			chatOpenTsMs = null;
			lastOpenPushMs = 0;
		}
		function isElementVisible(el){
			if (!el) return false;
			const cs = window.getComputedStyle ? window.getComputedStyle(el) : null;
			if (!cs || cs.display === 'none' || cs.visibility === 'hidden' || cs.opacity === '0') return false;
			const r = el.getBoundingClientRect();
			return !!(r.width && r.height);
		}
		function findChatIframe(){
			try {
				const ifrs = document.querySelectorAll('iframe');
				for (let i = 0; i < ifrs.length; i++){
					const n = ifrs[i];
					if (isChatIframe(n)) return n;
				}
			} catch(_e){}
			return null;
		}
		// Detect launcher button presence (instala watcher; no toggle directo)
		document.addEventListener('click', function(ev){
			try {
				// Detectar click en el botón de cerrar del header
				let closeBtn = null;
				if (ev.composedPath) {
					const path = ev.composedPath();
					for (let i = 0; i < path.length; i++) {
						const n = path[i];
						if (n && n.classList && n.classList.contains && n.classList.contains('widget-header-close')) { 
							closeBtn = n; 
							break; 
						}
					}
				}
				if (!closeBtn && ev.target && ev.target.closest) {
					closeBtn = ev.target.closest('.widget-header-close');
				}
				
				// Si se hizo click en el botón de cerrar, esperar a que el DOM se actualice
				if (closeBtn && chatIsOpen) {
					console.log('[pxChat] Close button clicked, waiting for DOM update...');
					// Esperar más tiempo para que el widget actualice el estado del botón
					setTimeout(function() {
						const launcherBtn = document.querySelector('.widget-launcher-button');
						const isStillOpen = launcherBtn && launcherBtn.classList && launcherBtn.classList.contains('widget-launcher-button--open');
						console.log('[pxChat] After close button click, launcher state:', {
							isStillOpen: isStillOpen,
							chatIsOpen: chatIsOpen
						});
						if (!isStillOpen && chatIsOpen) {
							console.log('[pxChat] Close button clicked and launcher is now closed, calling handleChatClose');
							handleChatClose();
						}
					}, 500); // Esperar 500ms para que el DOM se actualice
					return;
				}
				
				// Detectar click en el botón launcher
				let btn = null;
				if (ev.composedPath) {
					const path = ev.composedPath();
					for (let i = 0; i < path.length; i++) {
						const n = path[i];
						if (n && n.classList && n.classList.contains && n.classList.contains('widget-launcher-button')) { btn = n; break; }
					}
				}
				if (!btn && ev.target && ev.target.closest) {
					btn = ev.target.closest('.widget-launcher-button');
				}
				if (btn) { 
					installButtonListener(btn); 
					// Si el botón tiene --open, está abierto; si no, está cerrado
					const isOpen = btn.classList.contains('widget-launcher-button--open');
					if (isOpen && !chatIsOpen) {
						// Chat se está abriendo
						console.log('[pxChat] Launcher button clicked (opening), calling handleChatOpen');
						setTimeout(function() { handleChatOpen(); }, 300);
					} else if (!isOpen && chatIsOpen) {
						// Chat se está cerrando
						console.log('[pxChat] Launcher button clicked (closing), waiting for DOM update...');
						setTimeout(function() {
							const launcherBtn = document.querySelector('.widget-launcher-button');
							const isStillOpen = launcherBtn && launcherBtn.classList && launcherBtn.classList.contains('widget-launcher-button--open');
							if (!isStillOpen && chatIsOpen) {
								console.log('[pxChat] Launcher button clicked and confirmed closed, calling handleChatClose');
								handleChatClose();
							}
						}, 500); // Esperar 500ms para confirmar que está cerrado
					}
				}
			} catch(_e){
				console.error('[pxChat] Error in click listener:', _e);
			}
		}, true);
		// Keyboard open on launcher
		document.addEventListener('keydown', function(ev){
			try {
				if (ev.key !== 'Enter' && ev.key !== ' ') return;
				let btn = null;
				if (ev.composedPath) {
					const path = ev.composedPath();
					for (let i = 0; i < path.length; i++) {
						const n = path[i];
						if (n && n.classList && n.classList.contains && n.classList.contains('widget-launcher-button')) { btn = n; break; }
					}
				}
				if (!btn && ev.target && ev.target.closest) {
					btn = ev.target.closest('.widget-launcher-button');
				}
				if (btn) { 
					installButtonListener(btn); 
					// Delay mínimo para dar tiempo al widget a actualizar la clase (Chromium)
					setTimeout(syncChatState, 200);
				}
			} catch(_e){}
		}, true);
		// Bridge postMessage events from the widget iframe
		window.addEventListener('message', function(ev){
			const d = ev.data;
			try {
				if (!d) return;
				if (typeof d === 'object') {
					const type = d.type || d.event || d.name || d.px_chat_event;
					if (!type) return;
					const payload = d.payload || d.meta || d;
					switch (String(type)) {
						case 'chat_opened':
						case 'widget_opened':
						case 'open':
							return handleChatOpen(payload);
						case 'message_sent':
						case 'chat_message':
						case 'message':
						case 'message_received':
						case 'new_message':
							// Extraer message_id del payload
							const messageId = payload && (payload.message_id || payload.messageId || payload.id || payload.chat_id);
							const messageType = payload && (payload.type || payload.message_type || 'text');
							const from = payload && (payload.from || payload.user_id || payload.userId);
							if (messageId) {
								detectChatMessage(messageId, messageType, from);
							} else {
								return handleChatMessage(payload);
							}
							return;
						case 'chat_closed':
						case 'widget_closed':
						case 'close':
							return handleChatClose(payload);
					}
					// También buscar en propiedades del objeto directamente
					if (d.message_id || d.messageId || d.id) {
						const messageId = d.message_id || d.messageId || d.id;
						const messageType = d.type || d.message_type || 'text';
						const from = d.from || d.user_id || d.userId;
						detectChatMessage(messageId, messageType, from);
					}
				}
				if (typeof d === 'string' && d.indexOf('px-chat:') === 0) {
					const parts = d.split(':');
					const type = parts[1];
					let payload = null;
					if (parts[2]) { try { payload = JSON.parse(parts.slice(2).join(':')); } catch(_e){} }
					if (type === 'open') return handleChatOpen(payload);
					if (type === 'message') {
						if (payload && (payload.message_id || payload.messageId || payload.id)) {
							detectChatMessage(payload.message_id || payload.messageId || payload.id, payload.type || 'text', payload.from);
						} else {
							return handleChatMessage(payload);
						}
						return;
					}
					if (type === 'close') return handleChatClose(payload);
				}
			} catch(_e){}
		});
		// Message detection: interceptar mensajes del widget
		let lastMessageIds = new Set(); // Track mensajes ya procesados para evitar duplicados
		let lastMessageTime = 0;
		const MESSAGE_THROTTLE_MS = 500; // Máximo 1 mensaje cada 500ms
		
		function detectChatMessage(messageId, messageType, from) {
			if (!messageId) {
				console.debug('[pxChat] detectChatMessage: no messageId provided');
				return;
			}
			
			// Evitar duplicados usando messageId (verificar primero)
			if (messageId && lastMessageIds.has(messageId)) {
				console.debug('[pxChat] detectChatMessage: message already processed', messageId);
				return;
			}
			
			// Throttling: evitar procesar mensajes muy rápidos
			const now = Date.now();
			const timeSinceLast = now - lastMessageTime;
			if (timeSinceLast < MESSAGE_THROTTLE_MS) {
				console.debug('[pxChat] detectChatMessage: throttled', timeSinceLast, 'ms since last');
				return;
			}
			
			// Permitir trackear mensajes incluso si el chat no está visualmente abierto
			// Los mensajes pueden llegar cuando el chat está minimizado pero activo
			// En Chromium, el chat puede estar activo sin que chatIsOpen sea true
			const hasChatSession = getChatSessionId() !== null;
			const shouldProcess = hasChatSession || chatIsOpen;
			
			if (!shouldProcess) {
				// Si no hay sesión y el chat no está abierto, intentar una vez más después de un delay
				console.debug('[pxChat] detectChatMessage: no session/open, will retry', { hasChatSession, chatIsOpen });
				setTimeout(function() {
					const retryHasSession = getChatSessionId() !== null;
					const retryIsOpen = chatIsOpen;
					if ((retryHasSession || retryIsOpen) && messageId && !lastMessageIds.has(messageId)) {
						console.debug('[pxChat] detectChatMessage: retry after delay', { retryHasSession, retryIsOpen });
						detectChatMessage(messageId, messageType, from);
					} else {
						console.debug('[pxChat] detectChatMessage: retry failed - conditions not met');
					}
				}, 1500); // Aumentado a 1.5s para dar más tiempo en Chromium
				return;
			}
			
			// Limpiar Set si tiene más de 100 mensajes (evitar memory leak)
			if (lastMessageIds.size > 100) {
				lastMessageIds.clear();
			}
			
			if (messageId) {
				lastMessageIds.add(messageId);
			}
			lastMessageTime = now;
			
			// Disparar evento
			try {
				const payload = { 
					chat_id: messageId, 
					message_type: messageType || 'text', 
					from: from 
				};
				console.debug('[pxChat] detectChatMessage: processing message', payload);
				handleChatMessage(payload);
			} catch(e) {
				console.error('[pxChat] ❌ Error processing message:', e);
			}
		}
		
		// Listener para eventos personalizados que el widget podría disparar
		document.addEventListener('px-chat-message', function(ev) {
			try {
				const data = ev.detail || ev.data || {};
				detectChatMessage(data.message_id || data.messageId || data.id, data.type || data.message_type, data.from);
			} catch(_e){}
		});
		
		// Interceptar logs de console.log para detectar mensajes de Pusher
		// El widget loguea mensajes con formato específico que podemos interceptar
		try {
			const originalConsoleLog = console.log;
			let isProcessing = false; // Flag para evitar recursión
			let processedMessageIds = new Set(); // Track mensajes ya procesados por el interceptor
			
			console.log = function(...args) {
				// Llamar al console.log original primero (siempre)
				originalConsoleLog.apply(console, args);
				
				// Evitar procesamiento recursivo
				if (isProcessing) return;
				
				try {
					isProcessing = true;
					
					let detectedMessageId = null;
					let detectedMessageType = 'text';
					let detectedFrom = null;
					
					// Buscar message_id en los argumentos directamente (mejorado para Chromium)
					for (let i = 0; i < args.length; i++) {
						const arg = args[i];
						if (typeof arg === 'object' && arg !== null && !Array.isArray(arg)) {
							// Buscar directamente en el objeto
							if (arg.message_id || arg.messageId || arg.id) {
								detectedMessageId = arg.message_id || arg.messageId || arg.id;
								detectedMessageType = arg.type || arg.message_type || 'text';
								detectedFrom = arg.from || arg.user_id || arg.userId || null;
								break;
							}
							// Buscar en rawData (estructura anidada común en Pusher)
							if (arg.rawData && typeof arg.rawData === 'object') {
								if (arg.rawData.message_id || arg.rawData.messageId || arg.rawData.id) {
									detectedMessageId = arg.rawData.message_id || arg.rawData.messageId || arg.rawData.id;
									detectedMessageType = arg.rawData.type || arg.rawData.message_type || 'text';
									detectedFrom = arg.rawData.from || arg.rawData.user_id || arg.rawData.userId || null;
									break;
								}
							}
							// Buscar en propiedades anidadas (para Chromium que puede tener estructura diferente)
							try {
								for (let key in arg) {
									if (arg.hasOwnProperty(key) && typeof arg[key] === 'object' && arg[key] !== null) {
										if (arg[key].message_id || arg[key].messageId || arg[key].id) {
											detectedMessageId = arg[key].message_id || arg[key].messageId || arg[key].id;
											detectedMessageType = arg[key].type || arg[key].message_type || 'text';
											detectedFrom = arg[key].from || arg[key].user_id || arg[key].userId || null;
											break;
										}
									}
								}
								if (detectedMessageId) break;
							} catch(_e) {}
						}
					}
					
					// Si no encontramos en objetos, buscar en strings (solo si contiene patrones de Pusher)
					if (!detectedMessageId) {
						const logStr = args.map(arg => {
							if (typeof arg === 'string') return arg;
							if (typeof arg === 'object' && arg !== null) {
								try { return JSON.stringify(arg); } catch(_e) { return String(arg); }
							}
							return String(arg);
						}).join(' ');
						
						// Solo procesar si contiene patrones específicos de Pusher
						if ((logStr.indexOf('[Pusher] 📨 MENSAJE RECIBIDO') !== -1 || 
						     logStr.indexOf('[Pusher] 📨 Mensaje recibido') !== -1 ||
						     logStr.indexOf('[Pusher] Body completo:') !== -1 ||
						     logStr.indexOf('[Pusher]') !== -1) &&
						     (logStr.indexOf('message_id') !== -1 || logStr.indexOf('messageId') !== -1)) {
							
							// Intentar extraer message_id del string (múltiples formatos)
							try {
								// Formato: "message_id": "xxx"
								let messageIdMatch = logStr.match(/["']message_id["']\s*:\s*["']([^"']+)["']/);
								if (!messageIdMatch) {
									// Formato: messageId: "xxx"
									messageIdMatch = logStr.match(/["']messageId["']\s*:\s*["']([^"']+)["']/);
								}
								if (!messageIdMatch) {
									// Formato: message_id: xxx (sin comillas)
									messageIdMatch = logStr.match(/message_id["']?\s*:\s*["']?([a-zA-Z0-9\-_]+)/);
								}
								if (messageIdMatch && messageIdMatch[1]) {
									detectedMessageId = messageIdMatch[1];
									console.debug('[pxChat] Detected message_id from log string:', detectedMessageId);
								}
							} catch(_e) {}
						}
					}
					
					// Procesar solo si encontramos un messageId y no lo hemos procesado antes
					if (detectedMessageId && !processedMessageIds.has(detectedMessageId)) {
						processedMessageIds.add(detectedMessageId);
						// Limpiar Set si tiene más de 50 mensajes
						if (processedMessageIds.size > 50) {
							processedMessageIds.clear();
						}
						
						console.debug('[pxChat] Detected message from Pusher log:', {
							messageId: detectedMessageId,
							messageType: detectedMessageType,
							from: detectedFrom
						});
						
						setTimeout(function() {
							detectChatMessage(detectedMessageId, detectedMessageType, detectedFrom);
						}, 300); // Aumentado a 300ms para dar tiempo a que se establezca la sesión
					}
				} catch(e) {
					// Silenciar errores en el interceptor para no romper otros logs
					console.debug('[pxChat] Error in console.log interceptor:', e);
				} finally {
					isProcessing = false;
				}
			};
			
			originalConsoleLog('[pxChat] Console.log interceptor installed for Pusher message detection');
		} catch(e) {
			console.error('[pxChat] Error setting up console.log interceptor:', e);
		}
		
		// MutationObserver para detectar mensajes en el DOM del chat (dentro del iframe)
		// Nota: Esto solo funciona si tenemos acceso al contenido del iframe (mismo origen)
		try {
			const chatMessageObserver = new MutationObserver(function(mutations) {
				if (!chatIsOpen) return;
				
				for (let i = 0; i < mutations.length; i++) {
					const mutation = mutations[i];
					if (mutation.addedNodes && mutation.addedNodes.length > 0) {
						for (let j = 0; j < mutation.addedNodes.length; j++) {
							const node = mutation.addedNodes[j];
							if (node.nodeType === 1) { // Element node
								// Buscar elementos que parezcan mensajes de chat
								// Selectores comunes: .message, .chat-message, [data-message-id], etc.
								const messageEl = node.classList && (
									node.classList.contains('message') ||
									node.classList.contains('chat-message') ||
									node.classList.contains('msg') ||
									node.getAttribute('data-message-id')
								) ? node : (node.querySelector && (
									node.querySelector('.message') ||
									node.querySelector('.chat-message') ||
									node.querySelector('[data-message-id]')
								));
								
								if (messageEl) {
									const messageId = messageEl.getAttribute('data-message-id') || 
									                  messageEl.getAttribute('data-id') ||
									                  messageEl.id ||
									                  null;
									const messageType = messageEl.getAttribute('data-type') || 
									                    messageEl.getAttribute('data-message-type') ||
									                    'text';
									const from = messageEl.getAttribute('data-from') || null;
									
									if (messageId) {
										detectChatMessage(messageId, messageType, from);
									}
								}
							}
						}
					}
				}
			});
			
			// Observar el iframe del chat cuando esté disponible
			function observeChatIframe() {
				const ifr = findChatIframe();
				if (ifr && ifr.contentDocument && ifr.contentDocument.body) {
					try {
						chatMessageObserver.observe(ifr.contentDocument.body, {
							childList: true,
							subtree: true
						});
						console.debug('[pxChat] Message observer installed on chat iframe');
					} catch(e) {
						// Cross-origin: no podemos acceder al contenido del iframe
						console.debug('[pxChat] Cannot observe iframe content (cross-origin)');
					}
				}
			}
			
			// Intentar observar cuando el iframe se carga
			const ifr = findChatIframe();
			if (ifr) {
				if (ifr.contentDocument && ifr.contentDocument.body) {
					observeChatIframe();
				} else {
					ifr.addEventListener('load', observeChatIframe);
				}
			}
			
			// También intentar cuando se detecta un nuevo iframe
			const iframeObserver = new MutationObserver(function() {
				const ifr = findChatIframe();
				if (ifr && !ifr.__px_chat_message_observed) {
					ifr.__px_chat_message_observed = true;
					if (ifr.contentDocument && ifr.contentDocument.body) {
						observeChatIframe();
					} else {
						ifr.addEventListener('load', observeChatIframe);
					}
				}
			});
			iframeObserver.observe(document.body, { childList: true, subtree: true });
		} catch(e) {
			console.error('[pxChat] Error setting up message observer:', e);
		}
		
		// Expose helpers for manual triggers if needed
		window.pxChatOpen = function(meta){ handleChatOpen(meta || {}); };
		window.pxChatMessage = function(meta){ handleChatMessage(meta || {}); };
		window.pxChatClose = function(meta){ handleChatClose(meta || {}); };
		// Expose message detection function for external use
		window.pxChatDetectMessage = function(messageId, messageType, from) {
			detectChatMessage(messageId, messageType, from);
		};
		// Robust DOM observer: button presence and iframe lifecycle
		const observedIframes = new Set();
		function isChatIframe(node){
			if (!node || node.nodeName !== 'IFRAME') return false;
			try {
				const src = node.getAttribute('src') || '';
				return /pxsol|chat|widget/i.test(src);
			} catch(_e){ return false; }
		}
		function installButtonListener(btn){
			if (!btn || btn.__px_chat_hooked) return;
			btn.__px_chat_hooked = true;
			try {
				btn.__px_open_state = !!(btn.classList && btn.classList.contains('widget-launcher-button--open'));
				// NO sincronizar estado inicial aquí - solo observar cambios futuros
				let buttonChangeTimer = null;
				const ob = new MutationObserver(function(muts){
					for (let i = 0; i < muts.length; i++){
						const m = muts[i];
						if (m.type === 'attributes' && m.attributeName === 'class') {
							const isOpen = btn.classList.contains('widget-launcher-button--open');
							// Solo disparar si realmente cambió el estado
							if (isOpen !== btn.__px_open_state) {
								const now = Date.now();
								if (now - lastStateChangeMs < 300) {
									console.debug('[pxChat] MutationObserver: change throttled');
									return; // Ignorar cambios muy rápidos
								}
								
								// Procesar inmediatamente (sin debounce para Chromium)
								if (buttonChangeTimer) {
									clearTimeout(buttonChangeTimer);
								}
								// Delay mínimo solo para asegurar que el DOM se actualizó
								buttonChangeTimer = setTimeout(function() {
									processButtonStateChange(btn, now);
									buttonChangeTimer = null;
								}, 50); // Delay mínimo de 50ms para Chromium
							}
						}
					}
				});
				ob.observe(btn, { attributes: true, attributeFilter: ['class'] });
				btn.__px_chat_observer = ob;
			} catch(_e){}
		}
		
		function processButtonStateChange(btn, timestamp) {
			// Verificar que el estado realmente cambió
			const currentIsOpen = btn.classList.contains('widget-launcher-button--open') || 
			                      btn.classList.toString().indexOf('--open') !== -1;
			console.log('[pxChat] processButtonStateChange:', {
				currentIsOpen: currentIsOpen,
				previousState: btn.__px_open_state,
				chatIsOpen: chatIsOpen
			});
			
			if (currentIsOpen === btn.__px_open_state) {
				console.log('[pxChat] MutationObserver: state unchanged, skipping');
				return;
			}
			
			btn.__px_open_state = currentIsOpen;
			lastStateChangeMs = timestamp || Date.now();
			
			if (currentIsOpen) { 
				console.log('[pxChat] MutationObserver: button opened, calling handleChatOpen');
				handleChatOpen(); 
			} else { 
				// Verificar que chatIsOpen es true antes de intentar cerrar
				if (!chatIsOpen) {
					console.log('[pxChat] MutationObserver: button closed but chatIsOpen is already false, skipping');
					return;
				}
				// Guard mínimo: no cerrar si el chat se abrió hace menos de 3 segundos
				const finalNow = Date.now();
				const startMs = chatOpenTsMs || lastOpenPushMs || null;
				if (startMs && (finalNow - startMs < 3000)) {
					console.log('[pxChat] MutationObserver: chat_close blocked - chat opened too recently (' + Math.round((finalNow - startMs) / 1000) + 's ago, minimum 3s)');
					return;
				}
				
				// CRÍTICO: Esperar y verificar nuevamente que el botón realmente perdió la clase --open
				// Esto previene disparos prematuros cuando el DOM aún se está actualizando
				setTimeout(function() {
					const btnCheck = document.querySelector('.widget-launcher-button') || 
					                  document.querySelector('[class*="widget-launcher"]') ||
					                  document.querySelector('[class*="launcher-button"]');
					const isStillOpen = btnCheck && btnCheck.classList && (
						btnCheck.classList.contains('widget-launcher-button--open') || 
						btnCheck.classList.toString().indexOf('--open') !== -1
					);
					
					console.log('[pxChat] MutationObserver: delayed verification after button close:', {
						isStillOpen: isStillOpen,
						chatIsOpen: chatIsOpen,
						hasButton: !!btnCheck
					});
					
					// Solo proceder si el botón realmente está cerrado
					// Si hay botón, confiar solo en el botón (no en el iframe)
					if (isStillOpen) {
						console.log('[pxChat] MutationObserver: chat_close CANCELLED - button still shows as open after delay');
						return;
					}
					// Solo verificar iframe si NO hay botón
					if (!btnCheck) {
						const ifr = findChatIframe();
						const isIframeVisible = isElementVisible(ifr);
						if (isIframeVisible) {
							console.log('[pxChat] MutationObserver: chat_close CANCELLED - iframe still visible after delay (no button found)');
							return;
						}
					}
					if (!chatIsOpen) {
						console.log('[pxChat] MutationObserver: chat_close CANCELLED - chatIsOpen is already false');
						return;
					}
					
					console.log('[pxChat] MutationObserver: button confirmed closed after delay, calling handleChatClose');
					handleChatClose(); 
				}, 600); // Esperar 600ms para confirmar que el DOM se actualizó completamente
			}
		}
		
		function scanExisting(){
			try {
				const btn = document.querySelector('.widget-launcher-button');
				if (btn) installButtonListener(btn);
				document.querySelectorAll('iframe').forEach(function(ifr){
					if (isChatIframe(ifr) && !observedIframes.has(ifr)) {
						observedIframes.add(ifr);
						// Delay más largo para evitar falsos positivos
						setTimeout(syncChatState, 800);
					}
				});
			} catch(_e){}
		}
		const mo = new MutationObserver(function(mutations){
			let anyRemoval = false;
			for (const m of mutations) {
				if (m.type === 'childList') {
					// Added nodes
					m.addedNodes && m.addedNodes.forEach(function(n){
						try {
							if (!(n instanceof Element)) return;
							if (n.classList && n.classList.contains('widget-launcher-button')) {
								installButtonListener(n);
							}
							if (isChatIframe(n) && !observedIframes.has(n)) { observedIframes.add(n); setTimeout(syncChatState, 800); }
							// Deep scan
							n.querySelectorAll && n.querySelectorAll('.widget-launcher-button,iframe').forEach(function(x){
								if (x.classList && x.classList.contains('widget-launcher-button')) installButtonListener(x);
								if (isChatIframe(x) && !observedIframes.has(x)) { observedIframes.add(x); setTimeout(syncChatState, 800); }
							});
						} catch(_e){}
					});
					// Removed nodes
					if (m.removedNodes && m.removedNodes.length) {
						anyRemoval = true;
					}
				}
			}
			if (anyRemoval) {
				// Check if any observed iframe is gone
				const still = new Set();
				observedIframes.forEach(function(ifr){
					if (document.body && document.body.contains(ifr)) {
						still.add(ifr);
					} else {
						// Delay más largo cuando se remueve el iframe (chat cerrado)
						setTimeout(syncChatState, 500);
					}
				});
				observedIframes.clear();
				still.forEach(function(x){ observedIframes.add(x); });
			}
		});
		// Poller de respaldo acotado: solo durante una ventana corta post-load
		// para evitar loops eternos si no aparece el botón.
		const CHAT_FALLBACK_POLL_INTERVAL_MS = 500;
		const CHAT_FALLBACK_POLL_MAX_MS_AFTER_LOAD = 2000;
		let chatFallbackPollIntervalId = null;
		let chatFallbackPollStartMs = null;
		
		function stopChatFallbackPoller(reason) {
			if (!chatFallbackPollIntervalId) return;
			clearInterval(chatFallbackPollIntervalId);
			chatFallbackPollIntervalId = null;
			console.log('[pxChat] Polling stopped:', reason);
		}
		
		function runChatFallbackPollTick() {
			const btn = document.querySelector('.widget-launcher-button') || 
			            document.querySelector('[class*="widget-launcher"]') ||
			            document.querySelector('[class*="launcher-button"]');
			// Solo ejecutar syncChatState si NO hay botón (el botón tiene su propio observer)
			if (!btn) {
				console.log('[pxChat] Polling syncChatState (no button found)');
				syncChatState();
				return;
			}
			
			console.debug('[pxChat] Polling skipped - button found, using MutationObserver instead');
			stopChatFallbackPoller('button found');
		}
		
		function startChatFallbackPoller() {
			if (chatFallbackPollIntervalId) return;
			chatFallbackPollStartMs = Date.now();
			runChatFallbackPollTick(); // Tick inicial inmediato
			chatFallbackPollIntervalId = setInterval(function() {
				if (Date.now() - chatFallbackPollStartMs > CHAT_FALLBACK_POLL_MAX_MS_AFTER_LOAD) {
					stopChatFallbackPoller('load + ' + CHAT_FALLBACK_POLL_MAX_MS_AFTER_LOAD + 'ms timeout');
					return;
				}
				runChatFallbackPollTick();
			}, CHAT_FALLBACK_POLL_INTERVAL_MS);
		}
		
		// Ejecutar solo post-load (o inmediatamente si la página ya terminó de cargar)
		if (document.readyState === 'complete') {
			startChatFallbackPoller();
		} else {
			window.addEventListener('load', function onLoadStartChatFallbackPoller() {
				window.removeEventListener('load', onLoadStartChatFallbackPoller);
				startChatFallbackPoller();
			});
		}
		try {
			mo.observe(document.documentElement || document, { childList: true, subtree: true });
			// Initial scan after load tick
			if (document.readyState === 'loading') {
				document.addEventListener('DOMContentLoaded', scanExisting);
			} else {
				setTimeout(scanExisting, 0);
			}
		} catch(_e){}
	})();
</script>
<script>
	// Override para evitar espejo de chat_* al dataLayer y evitar doble track
	(function(){
		if (typeof window.gtag === 'function') {
			window.gtag = function(){
				try { window.dataLayer.push(arguments); } catch(_e){}
			};
		}
		// Redefinir pxTrack: usa gtag si existe; sino, dataLayer
		window.pxTrack = function(eventName, params){
			params = params || {};
			if (typeof window.gtag === 'function') {
				try { window.gtag('event', eventName, params); } catch(_e){}
			} else {
				try { window.dataLayer.push(Object.assign({ event: eventName }, params)); } catch(_e){}
			}
		};
	})();
</script>
</script>		</div>


		<div id="ContainerRD" class="nodisplay">
			<div class="flex flex-center fullheight">
				<div id="ContainerRDInner">
					<div id="Loader" class="fullheight flex flex-center">
						<img class="animated slideInUp" src="https://cdn.pxsol.com/css/images/logo_loginrd.png" />
					</div>
					<div id="CloseRDContainer"><i class="fa fa-times" aria-hidden="true"></i></div>
					<iframe style="width: 100%; height: 100%" src="" id="IframeRD" scrolling="no">

					</iframe>
				</div>
			</div>
		</div>

		<div id="CortinaCargando" align="center" class="Loading nodisplay">
			<div class="linear-activity">
				<div class="indeterminate"></div>
			</div>
		</div>

		<div id="dialogBox" title="..." class="nodisplay">
			<p><span class="ui-icon ui-icon-alert alerticon"></span>...</p>
		</div>

						<script src='/js_3.js?pos=LodgeColbun&device=computer&filev=1781099866&posv=1780899570_2026-04-30T15:19:23.000Z_2026-04-30T15:19:23.000Z' defer="true" async></script>

		<div id="diccionario">
					</div>

	</div><script>
	window.currentContent = "index";
	window.currentDevice = "desktop";
	console.log('CurrentState', window.currentContent, window.currentDevice);
</script>

                        

                        <div class="show_block show_block_1633">
                            <div class="megacontainer_neo_popup megacontainer_neo_popup_1633 flex flex-center ">
                                <div class="container_neo_popup top center vertical">
                                                                            <div class="popup_img_container">
                                            <img src="https://images-new.pxsol.com/76DYeMTHDer2jtaaMtLs_gAuvgV1qezF8CxA7-X-YA4/rs:fill:500:350:1/q:80/plain/https%3A%2F%2Ffiles-p.pxsol.com%2F23611%2Fcompany%2Flibrary%2Fuser%2F7123551404f77864d19e94e3d5f73bd855e6f8dafe.jpg@jpg" alt="¡Tus vacaciones de invierno a un precio especial!">
                                        </div>
                                                                        <div class="popup_text_container padding-xs-20 flex-column flex-center text-center">
                                        <h3 class="title_popup neo_color_primary">
                                            ¡Tus vacaciones de invierno a un precio especial!                                        </h3>
                                                                                    <p class="text_popup" style="margin-bottom: 15px">
                                                <p>Aprovecha un <strong>20% de descuento&nbsp;</strong>en todos loa alojamientos, para estadías de <em><u>minimo 2 noches</u></em>, desde el 1 de junio hasta el 31 de agosto, usando el codigo <strong>"INVIERNO20"</strong> al reservar en la web.&nbsp;</p><p><br></p><p><br></p>                                            </p>
                                                                                                                            <a href="https://www.lodgecolbun.com/en/promos/tus-vacaciones-de-invierno-con-un-descuento-exclusivo.html" target="_blank" class="standard_cta margin-xs-top-20" onclick="closePopup(event);">
                                                Más información                                            </a>
                                                                            </div>
                                    <div id="close_popup" onClick="closePopup(event);" class="close_neo_popup close_popup_1633"><i class="mdi mdi-close"></i></div>
                                </div>
                            </div>
                            <div class="dataconfig-popup neo_neo_popup" id-popup="1633" data-time="2" data-close-1633="
                            false" show_on_pages="[lp_desktop],[lp_mobile],[index_desktop],[index_mobile]" current-page="index_desktop" data-updated="1780888750"></div>
                        </div>

                    <script src="/neo_modules/neo_popup/js.js?v=121781099866"></script>
<!-- End Popup code -->
<div class="EndError left full" style="max-width: 100vw; overflow: auto;">
	</div>


</body>
<div id="dialogBox" title="..." class="nodisplay">
	<p><span class="ui-icon ui-icon-alert alerticon"></span>...</p>
</div>




</html>


