PageSourceSearch

https://www.sanremohoteles.com/pt/?lng=pt

html sanremohoteles.com collected 2026-10-05 09:35:35 UTC 344,812 bytes, 8,513 lines download raw bytes

1<!doctype html>
2<html lang="pt">
3
4<head>
5	<meta name="viewport" content="width=1300, max-width=1300">
6	<meta name="google-site-verification" content="l_kBGVByEFuQBNvWwVoARudBcFDIGjXjDZ9cFhfwagg" />
7
8	
9
10
11	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
12<meta http-equiv="Cache-Control" content="Public" />
13<meta name="robots" content="index, follow" />
14
15
16
17    <title>Home - San Remo Hoteles</title>
18    <meta name="description" content="Somos una cadena hotelera con 56 años de trayectoria que avalan nuestra experiencia en el servicio al huésped.">
19
20        <meta http-equiv="content-language" content="pt">
21        <link rel="canonical" href="https://www.sanremohoteles.com/pt/" />
22    <meta property="og:url" content="https://www.sanremohoteles.com/pt/" />
23    <meta property="og:type" content="website" />
24    <meta property="og:title" content="Home - San Remo Hoteles" />
25    <meta property="og:description" content="Somos una cadena hotelera con 56 años de trayectoria que avalan nuestra experiencia en el servicio al huésped." />
26
27            <meta property="og:image" content="https://images-new.pxsol.com/X2asHAcuZ24vQ_a8xAP7c69KsZT3avCBkHzDnE0uc3M/rs:fill:630:430:1/q:80/plain/https%3A%2F%2Ffiles-p.pxsol.com%2F13307%2Fcompany%2Flibrary%2Fuser%2F17192626940e9e7e7cb10828bce348612de95523245.jpg@jpg" />
28        
29        
30
31	<link rel="alternate" hreflang="es-AR" href="https://www.sanremohoteles.com/" />
32	<link rel="alternate" hreflang="en-US" href="https://www.sanremohoteles.com/en/" />
33	<link rel="alternate" hreflang="pt-BR" href="https://www.sanremohoteles.com/pt/" />
34	<link rel="alternate" hreflang="fr-FR" href="https://www.sanremohoteles.com/fr/" />
35	<link rel="alternate" hreflang="x-default" href="https://www.sanremohoteles.com/" />
36
37<link rel="icon" type="image/png" sizes="16x16" href="https://images-new.pxsol.com/i8aTnK9z_I7yMOE6uhTDRjt7u974dallnI0vpd-wgKc/rs:fill:16:16:1/q:80/plain/https%3A%2F%2Ffiles-p.pxsol.com%2F13307%2Fcompany%2Flibrary%2Fuser%2F5126930364ea8a9a40b647af1c2cabae351ef5e772.png@png">
38<link rel="icon" type="image/png" sizes="32x32" href="https://images-new.pxsol.com/Na6WSYRu9xt0nvBwWoJXCjcZUU0hDjy94UBvLStJTnE/rs:fill:32:32:1/q:80/plain/https%3A%2F%2Ffiles-p.pxsol.com%2F13307%2Fcompany%2Flibrary%2Fuser%2F5126930364ea8a9a40b647af1c2cabae351ef5e772.png@png">
39<link rel="icon" type="image/png" sizes="48x48" href="https://images-new.pxsol.com/vXQsDGVrobVKfmOIBuWkATPU3ay3i4mI-e7hG6GBTmQ/rs:fill:48:48:1/q:80/plain/https%3A%2F%2Ffiles-p.pxsol.com%2F13307%2Fcompany%2Flibrary%2Fuser%2F5126930364ea8a9a40b647af1c2cabae351ef5e772.png@png">
40<link rel="icon" type="image/png" sizes="96x96" href="https://images-new.pxsol.com/qnK7mhDfUwm27MqRnhtiKMQtvFhqKxXMmPbKm2rPOkg/rs:fill:96:96:1/q:80/plain/https%3A%2F%2Ffiles-p.pxsol.com%2F13307%2Fcompany%2Flibrary%2Fuser%2F5126930364ea8a9a40b647af1c2cabae351ef5e772.png@png">
41<link rel="shortcut icon" href="https://files-p.pxsol.com/13307/company/library/user/5126930364ea8a9a40b647af1c2cabae351ef5e772.png" />
42
43<link rel="apple-touch-icon" sizes="57x57" href="https://images-new.pxsol.com/0Ns7SAkuELF-9IkX4hwCBxt0JYnuWua_OiolB5A94JU/rs:fill:57:57:1/q:80/plain/https%3A%2F%2Ffiles-p.pxsol.com%2F13307%2Fcompany%2Flibrary%2Fuser%2F5126930364ea8a9a40b647af1c2cabae351ef5e772.png@png">
44<link rel="apple-touch-icon" sizes="72x72" href="https://images-new.pxsol.com/Wf7bwULbfl4jw3AgLGjvEh_CbwL48bqth4VC5a_NJXk/rs:fill:72:72:1/q:80/plain/https%3A%2F%2Ffiles-p.pxsol.com%2F13307%2Fcompany%2Flibrary%2Fuser%2F5126930364ea8a9a40b647af1c2cabae351ef5e772.png@png">
45<link rel="apple-touch-icon" sizes="76x76" href="https://images-new.pxsol.com/mUynYO5S4DHMv7SRfMIiemu5rchRgy8mvncyJ4HjxQ0/rs:fill:76:76:1/q:80/plain/https%3A%2F%2Ffiles-p.pxsol.com%2F13307%2Fcompany%2Flibrary%2Fuser%2F5126930364ea8a9a40b647af1c2cabae351ef5e772.png@png">
46<link rel="apple-touch-icon" sizes="114x114" href="https://images-new.pxsol.com/tDzltV8zRUlgI2CqfSvTHm4CvOGkjw1lAtb188TIrqs/rs:fill:114:114:1/q:80/plain/https%3A%2F%2Ffiles-p.pxsol.com%2F13307%2Fcompany%2Flibrary%2Fuser%2F5126930364ea8a9a40b647af1c2cabae351ef5e772.png@png">
47<link rel="apple-touch-icon" sizes="120x120" href="https://images-new.pxsol.com/DjfKoHijr5ulDWQ1sKqrOkBwJqiyAIKGu2cjFF-c7nw/rs:fill:120:120:1/q:80/plain/https%3A%2F%2Ffiles-p.pxsol.com%2F13307%2Fcompany%2Flibrary%2Fuser%2F5126930364ea8a9a40b647af1c2cabae351ef5e772.png@png">
48<link rel="apple-touch-icon" sizes="144x144" href="https://images-new.pxsol.com/8Skc2RbdMtUnWpu_vtjiJvyDmIg1DBiaJ9VjO8kPlpo/rs:fill:144:144:1/q:80/plain/https%3A%2F%2Ffiles-p.pxsol.com%2F13307%2Fcompany%2Flibrary%2Fuser%2F5126930364ea8a9a40b647af1c2cabae351ef5e772.png@png">
49<link rel="apple-touch-icon" sizes="152x152" href="https://images-new.pxsol.com/jOm0xThLFbk9O-i6qVU7-VOzF3PxvnB8Z3nUhCJdChU/rs:fill:152:152:1/q:80/plain/https%3A%2F%2Ffiles-p.pxsol.com%2F13307%2Fcompany%2Flibrary%2Fuser%2F5126930364ea8a9a40b647af1c2cabae351ef5e772.png@png">
50<link rel="apple-touch-icon" sizes="180x180" href="https://images-new.pxsol.com/FHLyab3zm8ybaGF8mU38Z-T0jcfkqHDCWIp-bzF_RYU/rs:fill:180:180:1/q:80/plain/https%3A%2F%2Ffiles-p.pxsol.com%2F13307%2Fcompany%2Flibrary%2Fuser%2F5126930364ea8a9a40b647af1c2cabae351ef5e772.png@png">
51
52<link rel="icon" sizes="192x192" href="https://images-new.pxsol.com/SvryX25ZdDr538yVWjo1QawJBoBNmpkArqcR1f-qCec/rs:fill:192:192:1/q:80/plain/https%3A%2F%2Ffiles-p.pxsol.com%2F13307%2Fcompany%2Flibrary%2Fuser%2F5126930364ea8a9a40b647af1c2cabae351ef5e772.png@png">
53<link rel="icon" sizes="512x512" href="https://images-new.pxsol.com/BJEPhNpVdEnVxWSk3IB3nOgtC4ZnU8fWWDVAfHZd6O8/rs:fill:512:512:1/q:80/plain/https%3A%2F%2Ffiles-p.pxsol.com%2F13307%2Fcompany%2Flibrary%2Fuser%2F5126930364ea8a9a40b647af1c2cabae351ef5e772.png@png">
54
55   <link rel="manifest" href="/manifest.json?pos=Sanremohoteles"> 
56
57<meta name="theme-color" content="#b09d21">
58
59<meta property="og:site_name" content="Home - San Remo Hoteles" />
60<meta name="twitter:card" content="summary">
61<meta name="twitter:site" content="Home - San Remo Hoteles">
62<meta name="twitter:title" content="Home - San Remo Hoteles">
63<meta name="twitter:description" content="Somos una cadena hotelera con 56 años de trayectoria que avalan 
63nuestra experiencia en el servicio al huésped.">
64<meta name="twitter:creator" content="PXSOL">
65<meta name="twitter:image" content="https://images-new.pxsol.com/X2asHAcuZ24vQ_a8xAP7c69KsZT3avCBkHzDnE0uc3M/rs:fill:630:430:1/q:80/plain/https%3A%2F%2Ffiles-p.pxsol.com%2F13307%2Fcompany%2Flibrary%2Fuser%2F17192626940e9e7e7cb10828bce348612de95523245.jpg@jpg">
66
67
68
69<style>
70			.neo_bgcolor_primary, .MuiButton-containedSecondary {
71background-color: #b09d21 !important;
72}
73
74.MuiButton-containedSecondary.MuiButton-contained.Mui-disabled {
75    box-shadow: none !important;
76    background-color: rgba(0, 0, 0, 0.12) !important;
77}
78
79.neo_color_primary {
80color: #b09d21;
81}
82
83.cta_webcheckin_px:not(.btn_sesion) {
84background-color: #b09d21 !important;
85color: white !important;
86border: none !important;
87font-weight: bold;
88right: 0;
89display: flex;
90align-items: center;
91font-size: 13px !important;
92padding: 7px 8px !important;
93line-height: 1.2;
94text-align: left;
95}
96
97.cta_webcheckin_px.btn_sesion {
98border: none !important;
99font-weight: bold;
100right: 0;
101display: flex;
102align-items: center;
103font-size: 13px !important;
104padding: 7px 8px !important;
105line-height: 1.2;
106text-align: left;
107}
108
109.cta_webcheckin_px * {
110color: inherit !important;
111}
112
113.cta_webcheckin_px.btn_sesion > i {
114    color: #b09d21 !important;
115}
116
117.cta_webcheckin_px {
118background-color: #c0b14e;
119}
120.cta_webcheckin_px i {
121margin-right: 10px;
122font-size: 15px;
123}
124
125.neo_bgcolor_primary:hover, .MuiButton-containedSecondary:hover {
126background-color: #c0b14e;
127}
128.px-sm-inputcontainer:hover label {
129color: #b09d21 !important;
130}
131div.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 {
132background-color: #b09d21 !important;
133}
134
135.px-mk-iconchangesearch {
136color: #b09d21 !important;
137}
138
139.px-mk-locationdropdown>*:hover .px-mk-locationimg {
140fill: #b09d21 !important;
141}
142
143.neo_mobile_supratop .neo_supratop_selector i {
144color: #b09d21 !important;
145}
146
147.standard_cta {
148padding: 10px 15px;
149box-sizing: border-box;
150border-radius: 5px;
151display: flex;
152justify-content: center;
153text-align: center;
154align-items: center;
155background: #b09d21 !important;
156color: #000000;
157transition: .2s ease-out;
158color: white;
159text-decoration: none;
160font-size: 18px;
161border: none;
162transition: .25s ease-out;
163cursor: pointer;
164}
165
166.standard_cta:hover {
167background-color: #c8bb64;
168}
169.standard_cta:disabled {
170opacity: .5;
171cursor: not-allowed;
172}
173
174.neo_cta_naked {
175font-weight: bold;
176text-decoration: none;
177color: #b09d21;
178display: inline-flex;
179background-color: transparent;
180border: none;
181cursor: pointer;
182transition: .2s ease-out;
183}
184
185.neo_cta_naked.gray {
186color: darkgray;
187}
188
189.neo_cta_naked:hover {
190color: #7c6e18;
191}
192
193.neo_cta_standard {
194border: none;
195border-radius: 10px;
196padding: 12px 20px;
197font-size: 18px;
198display: flex;
199align-items: center;
200justify-content: space-between;
201font-weight: bold;
202cursor: pointer;
203transition: .25s ease-out;
204box-sizing: border-box;
205text-decoration: none;
206}
207
208.neo_cta_standard.smaller {
209font-size: 16px;
210padding: 7px 13px;
211}
212
213.neo_cta_standard.shadow {
214box-shadow: 0px -1px 15px rgba(0,0,0,.3);
215}
216
217.neo_cta_standard.lowpadding {
218padding: 12px;
219}
220.neo_cta_standard.lowpadding > i {
221margin: 0;
222}
223
224.neo_cta_standard:disabled {
225opacity: .5;
226cursor: not-allowed;
227}
228
229.neo_cta_standard.primary {
230background: #b09d21;
231color: #000000;
232}
233.neo_cta_standard.white_cta {
234background: white;
235color: black;
236}
237.neo_cta_standard.primary:hover {
238background-color: #7c6e18;
239color: #FFFFFF;
240}
241.neo_cta_standard.primary:active {
242background-color: #584f11;
243color: #FFFFFF;
244}
245
246.neo_cta_standard > i {
247margin-left: 10px;
248}
249
250.neo_cta_standard:disabled, .neo_cta_standard[disabled] {
251cursor: not-allowed;
252filter: saturate(.3);
253opacity: 0.8;
254}
255
256.neo_cta_standard.v_disabled {
257background-color: #1e1e1e;
258}
259
260.neo_cta_standard .loading-text, .neo_cta_standard .success-text {
261display:none;
262}
263
264.neo_cta_standard.v_loading {
265pointer-events: none;
266}
267.neo_cta_standard.v_loading {
268position: relative;
269}
270.neo_cta_standard .loading-text {
271display:none;
272}
273.neo_cta_standard.v_loading > *:not(i,.loading-text) {
274display:none;
275}
276.neo_cta_standard.v_loading > i {
277position: relative;
278height: 20px;
279width: 20px;
280}
281
282.neo_cta_standard.v_loading > i:before {
283content: none;
284}
285
286.neo_cta_standard.v_loading > i::after {
287content: "";
288position: absolute;
289width: 100%;
290height: 100%;
291box-sizing: border-box;
292top: 0;
293left: 0;
294right: 0;
295bottom: 0;
296margin: auto;
297border: 0.25rem solid transparent;
298border-top-color: #ffffff;
299border-right-color: #ffffff;
300border-radius: 50%;
301animation: spinner .6s linear infinite;
302}
303.neo_cta_standard.v_loading .loading-text {
304display:block;
305}
306
307.neo_cta_standard.v_success {
308background-color: #00a651;
309}
310.neo_cta_standard.v_success > *:not(.success-text) {
311display:none;
312}
313.neo_cta_standard.v_success .success-text {
314display:block;
315}
316@keyframes button-loading-spinner {
317from {
318transform: rotate(0turn);
319}
320
321to {
322transform: rotate(1turn);
323}
324}
325
326@keyframes spinner {
327to {
328transform: rotate(360deg);
329}
330}
331
332#innerLoader, .innerLoader {
333height: 100%;
334display: flex;
335justify-content: center;
336align-items: center;
337min-height: 200px;
338}
339.neo_spin_loader {
340height: 60px;
341width: 60px;
342margin-bottom: 20px;
343}
344.neo_spin_loader:before {
345content: "";
346box-sizing: border-box;
347position: absolute;
348width: 60px;
349height: 60px;
350border-radius: 50%;
351border: 3px solid #ccc;
352border-top-color: #b09d21;
353animation: spinner 1s linear infinite;
354}
355.neo_bgcolor_primary {
356background-color: #b09d21;
357}
358
359.neo_button_partyselector {
360border: 1px solid #b09d21;
361height: 40px;
362width: 40px;
363display: flex;
364justify-content: center;
365align-items: center;
366text-align: center;
367background: transparent;
368color: #b09d21;
369margin: 10px 0;
370transition: .2s ease-out;
371border-radius: 10px;
372font-size: 18px;
373cursor: pointer;
374
375}
376
377.neo_button_partyselector:hover {
378background-color: #e0d8a7;
379}
380
381.neo_button_partyselector:focus {
382box-shadow: 0 0 0 3px #f0ecd3;
383}
384
385.neo_button_partyselector:active {
386color: #000000;
387background: #b09d21;
388}
389
390.neo_partyselector_quantity {
391padding: 15px 10px;
392font-size: 18px;
393}
394
395.ChildrensAgeSelect {
396width: 100%;
397box-sizing: border-box;
398padding: 10px;
399margin-bottom: 10px;
400border-radius: 10px;
401border-color: #ccc;
402}
403
404.PartyTypeSimulator .px-mk-inputicon svg {
405height: 1.2em;
406width: 1.2em;
407fill: #aaa;
408}
409.neo_bgcolor_primary_text {
410color: #000000;
411}
412
413.neo_pxuser_mainbtn {
414height: 3.5rem;
415max-height: 100%;
416overflow: hidden;
417transition: .2s ease-out;
418border-radius: .5rem;
419cursor: pointer;
420padding: 0 0.5rem;
421background-color: white;
422color: black !important;
423}
424
425.neo_pxuser_mainbtn * {
426color: black !important;
427}
428
429.neo_pxuser_mainbtn:hover {
430background-color: #f2f2f2;
431}
432
433.neo_pxuser_avatar_container {
434height: 100%;
435width: 3rem;
436display: flex;
437justify-content: center;
438align-items: center;
439}
440
441.neo_pxuser_avatar_container img {
442height: 80%;
443border-radius: 2rem;
444}
445
446.neo_pxuser_text_block {
447padding: .5rem .5rem .5rem .5rem;
448box-sizing: border-box;
449height: 100%;
450justify-content: center;
451line-height: 1.5;
452}
453
454.neo_pxuser_icon_dd {
455padding: .5rem;
456box-sizing: border-box;
457}
458
459.neo_pxuser_dropdown {
460position: absolute;
461right: 0;
462top: 100% !important;
463background: white;
464border-radius: .25rem;
465min-width: 110%;
466box-shadow: 0 3px 6px rgba(0,0,0,.5);
467text-align: left;
468display: none !important;
469}
470
471.neo_pxuser_dropdown * {
472color: black !important;
473}
474
475.neo_pxuser_dropdown.open {
476display: flex !important;
477top: 100% !important;
478}
479
480.neo_pxuser_dd_button {
481padding: 1rem;
482transition: .2s ease-out;
483cursor: pointer;
484text-decoration: none;
485color: black;
486}
487
488.neo_pxuser_dd_button > .mdi {
489font-size: 1.2rem;
490line-height: 1;
491vertical-align: middle;
492display: inline-flex;
493width: 2rem;
494justify-content: center;
495align-items: center;
496height: 2rem;
497}
498
499.neo_pxuser_dd_button > span {
500padding: .5rem;
501display: inline-flex;
502flex-grow: 1;
503width: calc(100% - 3rem);
504}
505
506.neo_pxuser_dd_button:hover {
507background-color: #f2f2f2;
508border-radius: .25rem;
509}
510
511.neo_pxuser_email {
512    max-width: 8rem;
513    overflow: hidden;
514    text-overflow: ellipsis;
515}
516
517@media only screen and (max-width: 468px) {
518
519    .neo_pxuser_mainbtn {
520        flex-flow: row-reverse;
521        flex-grow: 1;
522    }
523    
524    .neo_pxuser_icon_dd {
525        display: none;
526    }
527    
528    .neo_pxuser_text_block {
529        text-align: right;
530        text-transform: none;
531        letter-spacing: initial;
532        color: black;
533        line-height: 1;
534        max-width: 50%;
535    }
536    
537    .neo_pxuser_email {
538        display: none;
539    }
540    
541    .neo_pxuser_container {
542        text-transform: initial;
543        letter-spacing: initial;
544        font-weight: normal;
545        font-size: .8rem;
546    }
547    
548    .neo_pxuser_name {
549        font-weight: bold;
550        text-align: left;
551        white-space: nowrap;
552        overflow: hidden;
553        text-overflow: ellipsis;
554        display: flex;
555        align-items: center;
556    }
557    
558    .neo_pxuser_name strong {
559        display: inline-block;
560        max-width: 150px;
561        overflow: hidden;
562        white-space: nowrap;
563        text-overflow: ellipsis;
564        vertical-align: middle;
565        line-height: 1.2;
566    }
567    
568    .neo_pxuser_dd_button {
569        padding: .5rem;
570    }
571    
572
573}</style>
574
575
576
577<script type="application/ld+json" defer async>
578{
579   "url" : "https:\/\/www.sanremohoteles.com\/pt\/",
580   "telephone": "+54 9 223 417 2848",
581   "description" : "Somos una cadena hotelera con 56 a\u00f1os de trayectoria que avalan nuestra experiencia en el servicio al hu\u00e9sped.",
582   "name" : "Home - San Remo Hoteles",
583         "logo" : "https:\/\/images-new.pxsol.com\/BJEPhNpVdEnVxWSk3IB3nOgtC4ZnU8fWWDVAfHZd6O8\/rs:fill:512:512:1\/q:80\/plain\/https%3A%2F%2Ffiles-p.pxsol.com%2F13307%2Fcompany%2Flibrary%2Fuser%2F5126930364ea8a9a40b647af1c2cabae351ef5e772.png@png",
584      "image" : "https:\/\/images-new.pxsol.com\/X2asHAcuZ24vQ_a8xAP7c69KsZT3avCBkHzDnE0uc3M\/rs:fill:630:430:1\/q:80\/plain\/https%3A%2F%2Ffiles-p.pxsol.com%2F13307%2Fcompany%2Flibrary%2Fuser%2F17192626940e9e7e7cb10828bce348612de95523245.jpg@jpg",
585         "@type" : "Hotel",
586   "address" : {
587      "postalCode" : "0",
588      "streetAddress" : "Completar con la dirección de su establecimiento, 0 Ciudad, Capital, Mendoza, Argentina",
589      "addressCountry" : "Argentina",
590      "addressRegion" : "Mendoza",
591      "addressLocality" : "Ciudad, Capital",
592      "@type" : "PostalAddress"
593   },
594   "geo": {
595    "@type": "GeoCoordinates",
596    "latitude": 0,
597    "longitude": 0   },
598   "@context" : "http://schema.org"
599   }
600</script>
600
601
602<!-- Organization Schema for Brand/Logo SEO -->
603<script type="application/ld+json">
604{
605   "@context": "https://schema.org",
606   "@type": "Organization",
607   "name": "Home - San Remo Hoteles",
608   "url": "https:\/\/www.sanremohoteles.com\/pt\/",
609   "logo": "https:\/\/images-new.pxsol.com\/BJEPhNpVdEnVxWSk3IB3nOgtC4ZnU8fWWDVAfHZd6O8\/rs:fill:512:512:1\/q:80\/plain\/https%3A%2F%2Ffiles-p.pxsol.com%2F13307%2Fcompany%2Flibrary%2Fuser%2F5126930364ea8a9a40b647af1c2cabae351ef5e772.png@png",
610   "image": "https:\/\/images-new.pxsol.com\/BJEPhNpVdEnVxWSk3IB3nOgtC4ZnU8fWWDVAfHZd6O8\/rs:fill:512:512:1\/q:80\/plain\/https%3A%2F%2Ffiles-p.pxsol.com%2F13307%2Fcompany%2Flibrary%2Fuser%2F5126930364ea8a9a40b647af1c2cabae351ef5e772.png@png"}
611</script>
611
612
613
614
615				<link rel="icon" sizes="192x192" href="https://images-new.pxsol.com/SvryX25ZdDr538yVWjo1QawJBoBNmpkArqcR1f-qCec/rs:fill:192:192:1/q:80/plain/https%3A%2F%2Ffiles-p.pxsol.com%2F13307%2Fcompany%2Flibrary%2Fuser%2F5126930364ea8a9a40b647af1c2cabae351ef5e772.png@png">
616			<link rel="icon" type="image/png" href="https://files-p.pxsol.com/13307/company/library/user/5126930364ea8a9a40b647af1c2cabae351ef5e772.png" />
617		<!-- CustomHTMLHead (SiteJson) --><link rel="preconnect" href="https://fonts.googleapis.com">
618<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
619<link href="https://fonts.googleapis.com/css2?family=Work+Sans:ital,wght@0,300;0,400;0,500;1,300;1,400;1,500&display=swap" rel="stylesheet">	<!-- Pos->Type: hotel.css -->
620
621<!-- Google tag (gtag.js) GA4 PXSOL TODOS LOS HOTELES -->
622<script>
623  window.dataLayer = window.dataLayer || [];
624  function gtag(){dataLayer.push(arguments);}
625  gtag('js', new Date());
626</script>
vendor: 64 bytes, lines 626-627
626
627<script async src="https://www.googletagmanager.com/gtag/js?id=
627G-SYSQR6EL6E
vendor: 12 bytes, line 627
627"></script>
628<script>
629  let globalSessionGA4Config = {
630    'pos': 'Sanremohoteles',
631    'product_id': '19322',
632    'product_name': 'San Remo Hoteles',
633    'product_country': 'Argentina',
634    'product_state': 'Mendoza',
635    'product_plaza': 'Ciudad, Capital',
636    'product_score': ''
637  };
638
639      gtag('config', 'G-2CG83MMWR8', globalSessionGA4Config);
640  
641      gtag('config', 'G-SYSQR6EL6E', globalSessionGA4Config);
642  
643  
644  // Mirror page_view into dataLayer for GTM debug (guard to avoid duplicates)
645  if (!window.__dl_page_view_pushed) {
646    window.dataLayer.push({ event: 'page_view' });
647    window.__dl_page_view_pushed = true;
648  }
649
650  
651</script>
651
652
653<!-- Global site tag (gtag.js)  -->
vendor: 64 bytes, lines 653-654
653
654<script async src="https://www.googletagmanager.com/gtag/js?id=
654UA-34517567-10
vendor: 12 bytes, line 654
654"></script>
655<script>
656  window.dataLayer = window.dataLayer || [];
657
658  function gtag() {
659    dataLayer.push(arguments);
660    try {
661      var args = Array.prototype.slice.call(arguments);
662      if (args[0] === 'event') {
663        var dlEventName = args[1];
664        var dlParams = (args.length > 2 && typeof args[2] === 'object') ? args[2] : {};
665        var dlObject = {};
666        for (var key in dlParams) {
667          if (Object.prototype.hasOwnProperty.call(dlParams, key)) {
668            dlObject[key] = dlParams[key];
669          }
670        }
671        dlObject.event = dlEventName;
672        window.dataLayer.push(dlObject);
673        
674        // Intercept add_to_cart and fire form_success after it
675        if (dlEventName === 'add_to_cart') {
676          setTimeout(function() {
677            console.log('%c[pxTrack] 🚀 FIRING form_success for add_to_cart', 'color: #4CAF50; font-weight: bold;');
678            window.pxTrack('form_success', {
679              form_id: 'add_to_cart',
680              lead_id: null,
681              transaction_id: null
682            });
683          }, 100);
684        }
685      }
686    } catch (e) {}
687  }
688  gtag('js', new Date());
689
690      gtag('config', 'G-2CG83MMWR8');
691  
692      gtag('config', 'UA-34517567-10');
693  
694  
695  </script>
695
696
697<!-- Pxsol Data Layer utilities and event wiring -->
698<script>
699  (function() {
700    // DEBUG: Confirm script is loaded and updated
701    console.log('%c[pxTrack] Script loaded - Version: 2025-01-15-no-inventory-v3-rate-limit-fix', 'color: #4CAF50; font-weight: bold; font-size: 12px;');
702    
703    // Define manual scan function globally FIRST (before any other code that might fail)
704    window.__px_manual_no_inventory_scan = function() {
705      console.log('[pxTrack] Manual scan triggered');
706      if (window.__px_no_inventory_scan_func) {
707        return window.__px_no_inventory_scan_func();
708      } else {
709        console.warn('[pxTrack] Watcher not initialized yet. Performing basic scan...');
710        // Perform basic scan even if watcher not initialized
711        try {
712          var hasNoInventory = false;
713          var detectionMethod = '';
714          
715          // Check DOM elements
716          var noInventoryContainer = document.querySelector('#no-inventory-container');
717          var noInventoryElement = document.querySelector('#no-inventory');
718          if (noInventoryContainer || noInventoryElement) {
719            hasNoInventory = true;
720            detectionMethod = 'DOM element (ID)';
721            console.log('[pxTrack] ✅ Found #no-inventory-container or #no-inventory');
722          }
723          
724          // Check px_jsonQuery
725          if (!hasNoInventory && typeof window.px_jsonQuery !== 'undefined' && window.px_jsonQuery) {
726            var jsonQuery = window.px_jsonQuery;
727            if (jsonQuery.ProductList && Array.isArray(jsonQuery.ProductList) && jsonQuery.ProductList.length > 0) {
728              var allZero = true;
729              for (var i = 0; i < jsonQuery.ProductList.length; i++) {
730                var product = jsonQuery.ProductList[i];
731                var productAvail = product.Availability || 0;
732                if (product.SkuList && Array.isArray(product.SkuList) && product.SkuList.length > 0) {
733                  for (var j = 0; j < product.SkuList.length; j++) {
734                    if (product.SkuList[j].Availability && product.SkuList[j].Availability > 0) {
735                      allZero = false;
736                      break;
737                    }
738                  }
739                } else if (productAvail > 0) {
740                  allZero = false;
741                }
742                if (!allZero) break;
743              }
744              if (allZero) {
745                hasNoInventory = true;
746                detectionMethod = 'Json_Query';
747                console.log('[pxTrack] ✅ All products have Availability === 0');
748              }
749            }
750          }
751          
752          if (hasNoInventory && !window.__px_no_inventory_pushed) {
753            console.log('[pxTrack] 🚀 FIRING no_inventory event manually - Method:', detectionMethod);
754            window.__px_no_inventory_pushed = true;
755            var params = {};
756            try {
757              // Try to get search params
758              var startRaw = (document.querySelector('#fechaingreso') || {}).value || '';
759              var endRaw = (document.querySelector('#fechaegreso') || {}).value || '';
760              params.start_date = startRaw;
761              params.end_date = endRaw;
762              params.no_inventory = true;
763            } catch(e) {}
764            window.pxTrack('no_inventory', params);
765            
766            // Fire form_success for search form after no_inventory
767            setTimeout(function() {
768              console.log('%c[pxTrack] 🚀 FIRING form_success for search form (after manual no_inventory)', 'color: #4CAF50; font-weight: bold;');
769              window.pxTrack('form_success', {
770                form_id: 'pxmk_searchform',
771                lead_id: null,
772                transaction_id: null
773              });
774            }, 100);
775            
776            return { fired: true, method: detectionMethod, params: params };
777          } else if (hasNoInventory) {
778            return { already_fired: true, method: detectionMethod };
779          } else {
780            return { no_inventory_detected: false, px_jsonQuery_exists: typeof window.px_jsonQuery !== 'undefined' };
781          }
782        } catch(e) {
783          console.error('[pxTrack] Error in manual scan:', e);
784          return { error: 'Scan failed', message: e.message };
785        }
786      }
787    };
788    
789    window.dataLayer = window.dataLayer || [];
790
791    // Helper that tracks to both GA4 and dataLayer
792    if (!window.pxTrack) {
793      window.pxTrack = function(eventName, params) {
794        params = params || {};
795        try { gtag('event', eventName, params); } catch(e) {}
796        try {
797          var dl = {};
798          for (var k in params) if (Object.prototype.hasOwnProperty.call(params, k)) dl[k] = params[k];
799          dl.event = eventName;
800          window.dataLayer.push(dl);
801        } catch(e) {}
802      };
803    }
804
805    // Privacy-safe booleans for PII presence
806    function bool(val) { return !!val; }
807
808    // Read URL param
809    function getUrlParam(name) {
810      try {
811        var params = new URLSearchParams(location.search);
812        return params.get(name) || '';
813      } catch (e) { return ''; }
814    }
815
816    // Normalize common date formats to YYYY-MM-DD (best-effort)
817    function normalizeDate(value) {
818      try {
819        if (!value) return '';
820        var v = String(value).trim();
821        // dd/mm/yyyy -> yyyy-mm-dd
822        if (/^\d{2}\/\d{2}\/\d{4}$/.test(v)) {
823          var p = v.split('/');
824          return [p[2], p[1].padStart(2, '0'), p[0].padStart(2, '0')].join('-');
825        }
826        // Already ISO
827        if (/^\d{4}-\d{2}-\d{2}$/.test(v)) return v;
828        return v;
829      } catch (e) {
830        return String(value || '');
831      }
832    }
833
834    // Session id generator
835    function getPxSessionId() {
836      try {
837        var key = 'px_session_id';
838        var match = document.cookie.match(new RegExp('(^| )' + key + '=([^;]+)'));
839        if (match) return match[2];
840        var id = (crypto && crypto.randomUUID) ? crypto.randomUUID() : String(Date.now()) + '_' + Math.floor(Math.random()*1e9);
841        document.cookie = key + '=' + id + ';path=/;max-age=' + (60*60*24*365).toString();
842        return id;
843      } catch(e) {
844        return 'sid_' + String(Date.now());
845      }
846    }
847
848    // Expose chat helpers (to be called from chat widget)
849    window.pxChatOpen = function(payload) { window.pxTrack('chat_open', payload || {}); };
850    window.pxChatMessage = function(payload) { window.pxTrack('chat_message', payload || {}); };
851    window.pxChatClose = function(payload) { window.pxTrack('chat_close', payload || {}); };
852    window.pxFormSuccess = function(payload) { window.pxTrack('form_success', payload || {}); };
853    window.pxNoInventory = function(payload) { window.pxTrack('no_inventory', payload || { no_inventory: true }); };
854
855    // Context payload from PHP (best-effort)
856    var pxContext = {
857      pos: 'Sanremohoteles',
858      product_id: '19322',
859      product_name: 'San Remo Hoteles',
860      product_country: 'Argentina',
861      product_state: 'Mendoza',
862      product_plaza: 'Ciudad, Capital',
863      search_id: '',
864      start_date: '',
865      end_date: '',
866      transaction_id: '',
867      value: null,
868      currency: '',
869      page_url: location.href,
870      session_id: getPxSessionId()
871    };
872
873    // --- External engine redirect auto event when engine is disabled ---
874    
875    
876    // Adults/children/rooms best-effort totals from PHP when available
877        pxContext.adults = 0;
878    pxContext.children = 0;
879    pxContext.rooms = 0;
880
881    // Push context for GTM usage
882    try { window.dataLayer.push(Object.assign({ event: 'px_context' }, pxContext)); } catch(e) {}
883
884    // Boot event para validar integración en DebugView/GTM
885    if (!window.__px_boot_pushed) {
886      window.__px_boot_pushed = true;
887      window.pxTrack('px_layer_ready', {
888        session_id: pxContext.session_id,
889        page_url: pxContext.page_url,
890        pos: pxContext.pos || '',
891        product_id: pxContext.product_id || '',
892        search_id: pxContext.search_id || '',
893        ts: Date.now()
894      });
895    }
896
897    // ----- Search events wiring (V3/V8) -----
898    function getSearchParamsFromDOM() {
899      var startRaw = (document.querySelector('.neo_marketplace_buscador_v3 #fechaingreso') ||
900                      document.querySelector('#fechaingreso') ||
901                      document.querySelector('[name="Start"]') ||
902                      document.querySelector('#Start') || { }).value || pxContext.start_date || '';
903      var endRaw   = (document.querySelector('.neo_marketplace_buscador_v3 #fechaegreso') ||
904                      document.querySelector('#fechaegreso') ||
905                      document.querySelector('[name="End"]') ||
906                      document.querySelector('#End') || { }).value || pxContext.end_date || '';
907      var sidRaw   = (document.querySelector('#SearchID') || { }).value || getUrlParam('SearchID') || pxContext.search_id || '';
908      var params = {
909        start_date: normalizeDate(startRaw) || '',
910        end_date: normalizeDate(endRaw) || '',
911        pos: pxContext.pos || '',
912        hotel_id: pxContext.product_id || '',
913        page_url: location.href,
914        session_id: pxContext.session_id
915      };
916      if (sidRaw) params.search_id = sidRaw;
917      // Adults/children from UI if present
918      try {
919        var adultsEl = document.querySelector('.neo_partyselector_quantity[party-type="adults"]');
920        var childrenEl = document.querySelector('.neo_partyselector_quantity[party-type="children"]');
921        if (adultsEl) params.adults = Number(adultsEl.getAttribute('val') || adultsEl.textContent) || pxContext.adults || 0;
922        if (childrenEl) params.children = Number(childrenEl.getAttribute('val') || childrenEl.textContent) || pxContext.children || 0;
923        // Fallback from hidden GroupsForm if exists
924        if ((!params.adults || !params.children) && document.querySelector('#GroupsForm')) {
925          var gf = document.querySelector('#GroupsForm').value || '';
926          var rooms = 0, adults = 0, children = 0;
927          if (gf) {
928            gf.split(';').forEach(function(groupStr){
929              if (!groupStr) return;
930              rooms += 1;
931              var parts = groupStr.split(':');
932              if (parts.length < 2) return;
933              var trio = parts[1].split(',');
934              var a = parseInt(trio[0] || '0', 10);
935              adults += isNaN(a) ? 0 : a;
936              var childrenAges = (trio[1] || '0');
937              if (childrenAges && childrenAges !== '0') {
938                children += childrenAges.split('.').filter(Boolean).length;
939              }
940            });
941            if (!params.adults) params.adults = adults;
942            if (!params.children) params.children = children;
943            if (!params.rooms) params.rooms = rooms;
944          }
945        }
946      } catch(e) {}
947      return params;
948    }
949
950    // -- Estado COMPARTIDO del throttle de `search_modify` --------------------------------
951    // Vive FUERA de las funciones de cableado a proposito: `wireSearchEventsWhenReady()` puede
952    // re-ejecutar `wireSearchEvents()` varias veces hasta enganchar el buscador que llega por
953    // AJAX, y con el throttle dentro del cierre cada invocacion tenia su propia ventana de 1 s
954    // => dos cableados equivalentes podian emitir el mismo cambio dos veces.
955    var pxLastModifyMs = 0;
956    var pxLastSnapshot = null;
957
958    function getModifySnapshot() {
959      var p = getSearchParamsFromDOM();
960      return {
961        start_date: p.start_date || '',
962        end_date: p.end_date || '',
963        rooms: (p.rooms*1) || 0,
964        adults: (p.adults*1) || 0,
965        children: (p.children*1) || 0
966      };
967    }
968    function pushModifyFlagsIfChanged(prevSnap, nextSnap) {
969      try {
970        if (!prevSnap) return true;
971        var changes = {};
972        if (nextSnap.start_date !== prevSnap.start_date) changes.start_date = true;
973        if (nextSnap.end_date !== prevSnap.end_date) changes.end_date = true;
974        if ((nextSnap.rooms*1) !== (prevSnap.rooms*1)) changes.rooms = true;
975        if ((nextSnap.adults*1) !== (prevSnap.adults*1)) changes.adults = true;
976        if ((nextSnap.children*1) !== (prevSnap.children*1)) changes.children = true;
977        if (Object.keys(changes).length) return true;
978      } catch (e) {}
979      return false;
980    }
981    function throttledModifyFire() {
982      var now = Date.now();
983      if (now - pxLastModifyMs < 1000) return; // throttle to 1s
984      pxLastModifyMs = now;
985      var current = getModifySnapshot();
986      // Push GA/DataLayer event with current values
987      window.pxTrack('search_modify', getSearchParamsFromDOM());
988      // Also push a probe event with the current values for GTM debug
989      try {
990        window.dataLayer.push({
991          event: 'px_search_modify_probe',
992          search_modify: current,
993          ts: Date.now()
994        });
995      } catch(e) {}
996      // Update snapshot only if something changed
997      if (pushModifyFlagsIfChanged(pxLastSnapshot, current)) {
998        pxLastSnapshot = current;
999      }
1000    }
1001
1002    /**
1003     * Respaldos de `search_modify` que NO dependen de que el buscador exista en el DOM:
1004     * listeners DELEGADOS en `document` (captura) + un poller de 400 ms sobre
1005     * `#fechaingreso`/`#fechaegreso`/`#GroupsForm`.
1006     *
1007     * OJO: se instalan SIEMPRE en el init, sin pasar por `searchDomPresent()` ni por el tope de
1008     * 20 s del watcher -- que es exactamente como se instalaban antes, cuando `wireSearchEvents()`
1009     * se llamaba incondicionalmente. Justamente por ser delegados/poll son los que hacen que
1010     * `search_modify` funcione sobre un buscador inyectado por AJAX: meterlos detras del
1011     * reintento dejaba sin ningun listener a las sesiones donde el buscador tarda mas de 20 s
1012     * (telefono con red lenta), que ANTES si los tenian.
1013     */
1014    function wireSearchFallbacks() {
1015      if (window.__px_search_fallbacks_wired) return;
1016      window.__px_search_fallbacks_wired = true;
1017      pxLastSnapshot = getModifySnapshot();
1018      // Debug: signal that search watchers are alive
1019      try {
1020        window.dataLayer.push({
1021          event: 'px_search_watchers_ready',
1022          ts: Date.now()
1023        });
1024      } catch(e) {}
1025      // Listeners delegados (capturan aunque el DOM se re-renderice)
1026      try {
1027        if (!window.__px_global_search_listeners) {
1028          window.__px_global_search_listeners = true;
1029          var selectorList = ['#fechaingreso','#fechaegreso','.AdultsSelect','.ChildrensSelect','.neo_partyselector_quantity','.ChildrensAgeSelect'];
1030          function matchesTracked(el) {
1031            try { return selectorList.some(function(sel){ return el && el.matches && el.matches(sel); }); } catch(e) { return false; }
1032          }
1033          document.addEventListener('change', function(e){ if (matchesTracked(e.target)) throttledModifyFire(); }, true);
1034          document.addEventListener('input', function(e){ if (matchesTracked(e.target)) throttledModifyFire(); }, true);
1035          document.addEventListener('click', function(e){
1036            var t = e.target;
1037            if (t && t.classList && t.classList.contains('neo_button_partyselector')) throttledModifyFire();
1038          }, true);
1039        }
1040      } catch(e) {}
1041      // Robust watchers for datepicker-driven value changes and hidden GroupsForm updates
1042      try {
1043        if (!window.__px_modify_watchers_started) {
1044          window.__px_modify_watchers_started = true;
1045          var lastIn = (document.querySelector('#fechaingreso') || {}).value || '';
1046          var lastOut = (document.querySelector('#fechaegreso') || {}).value || '';
1047          var lastGF = (document.querySelector('#GroupsForm') || {}).value || '';
1048          setInterval(function(){
1049            try {
1050              var inEl = document.querySelector('#fechaingreso');
1051              var outEl = document.querySelector('#fechaegreso');
1052              var gfEl = document.querySelector('#GroupsForm');
1053              var curIn = inEl ? inEl.value : '';
1054              var curOut = outEl ? outEl.value : '';
1055              var curGF = gfEl ? gfEl.value : '';
1056              if (curIn !== lastIn || curOut !== lastOut || curGF !== lastGF) {
1057                lastIn = curIn; lastOut = curOut; lastGF = curGF;
1058                throttledModifyFire();
1059              }
1060            } catch(e) {}
1061          }, 400);
1062        }
1063      } catch(e) {}
1064    }
1065
1066    /**
1067     * SOLO los cableados que necesitan el nodo del buscador en el DOM: `search_open` (existe el
1068     * contenedor) y `search_submit` (existe el form). Los reintenta `wireSearchEventsWhenReady()`.
1069     *
1070     * OJO: ya NO cuelga listeners de `search_modify` del contenedor. Eran un duplicado EXACTO de
1071     * los delegados de `wireSearchFallbacks()` (la misma lista de 6 selectores y el mismo click
1072     * sobre `.neo_button_partyselector`). Mientras esta funcion corria una sola vez compartian el
1073     * cierre -- y con el el throttle -- asi que no se notaba; con el reintento podian quedar en
1074     * invocaciones distintas y contar el mismo cambio dos veces.
1075     */
1076    function wireSearchEvents() {
1077      var searchForm = document.querySelector('.neo_marketplace_buscador_v3 #pxmk_searchform') || document.querySelector('#search_form');
1078      var searchContainer = document.querySelector('.neo_marketplace_buscador_v3') || document.querySelector('.px-mk-buscador-container') || document.querySelector('#search_form') || document.querySelector('.PartyTypeSimulatorContainer');
1079
1080      if (searchContainer && !window.__px_search_container_bound) {
1081        window.__px_search_container_bound = true;
1082        // fire search_open once
1083        if (!window.__px_search_open_pushed) {
1084          window.__px_search_open_pushed = true;
1085          window.pxTrack('search_open', { page_url: location.href });
1086        }
1087      }
1088
1089      if (searchForm && !window.__px_search_form_bound) {
1090        window.__px_search_form_bound = true;
1091        searchForm.addEventListener('submit', function() {
1092          window.pxTrack('search_submit', getSearchParamsFromDOM());
1093        }, true);
1094        var searchBtn = document.querySelector('.neo_marketplace_buscador_v3 #PxMkAcion_Search') || document.querySelector('#Acion_Search');
1095        if (searchBtn) {
1096          searchBtn.addEventListener('click', function() {
1097            window.pxTrack('search_submit', getSearchParamsFromDOM());
1098          }, true);
1099        }
1100      }
1101    }
1102
1103    /**
1104     * El buscador NO existe al DOMContentLoaded en NINGUNA `lp.html`: lo inyecta por AJAX
1105     * `neo_modules/lp_cart.php` (CargarModulo) cientos de ms despues. `wireSearchEvents()` se
1106     * cableaba UNA sola vez, asi que sus dos gates de DOM evaluaban null y no se emitian nunca
1107     * `search_open` (gate `if (searchContainer)`) ni `search_submit` (gate `if (searchForm)`),
1108     * ni `start_search`/`egreso_search` (`wireDatePickers`). Sólo disparaban en las HOME
1109     * server-rendered, donde el buscador viene en el HTML inicial.
1110     *
1111     * Medido en vivo el 2026-08-21 sobre `fincaogawa.reservadirecto.com/lp.html`: los 6
1112     * selectores del buscador estan en 0 en DOMContentLoaded (1389 ms) y en load (2369 ms), y
1113     * recien aparecen a los ~3010 ms; un click en el submit real (`#Acion_Search`) generaba
1114     * SearchID y `has_inventory`, pero CERO `search_submit`.
1115     *
1116     * `has_inventory`/`no_inventory` nunca sufrieron esto porque cuelgan de una cascada de scans
1117     * + MutationObserver (`wireNoInventoryWatcher` / `observeAvailabilityContainers`), no de un
1118     * cableado one-shot. Esta funcion aplica esa MISMA tecnica a la fam
1118ilia de busqueda.
1119     *
1120     * Se apaga sola en cuanto engancha el contenedor y el form (los dos productores de
1121     * `search_open`/`search_submit`), con tope duro de 20 s. Cada bind es idempotente por su
1122     * propia guarda global, asi que re-correr no duplica ni un listener ni un evento.
1123     */
1124    function searchDomPresent() {
1125      try {
1126        return !!(document.querySelector('.neo_marketplace_buscador_v3')
1127          || document.querySelector('.px-mk-buscador-container')
1128          || document.querySelector('#search_form')
1129          || document.querySelector('.PartyTypeSimulatorContainer')
1130          || document.querySelector('#fechaingreso'));
1131      } catch (e) { return false; }
1132    }
1133    function wireSearchEventsWhenReady() {
1134      if (window.__px_search_ready_watcher) return;
1135      window.__px_search_ready_watcher = true;
1136      var mo = null;
1137      var stopped = false;
1138      function stop() {
1139        if (stopped) return;
1140        stopped = true;
1141        if (mo) { try { mo.disconnect(); } catch (e) {} mo = null; }
1142      }
1143      function attempt() {
1144        if (stopped) return;
1145        // Chequeo barato primero: sin buscador en el DOM no se toca nada. Evita correr
1146        // `wireSearchEvents()` (que lee bastante DOM) en cada mutacion de una pagina sin motor.
1147        if (!searchDomPresent()) return;
1148        if (!window.__px_search_container_bound || !window.__px_search_form_bound) {
1149          try { wireSearchEvents(); } catch (e) {}
1150        }
1151        if (!window.__px_date_pickers_bound) {
1152          try { wireDatePickers(); } catch (e) {}
1153        }
1154        if (window.__px_search_container_bound && window.__px_search_form_bound) stop();
1155      }
1156      attempt();
1157      if (stopped) return;
1158      [200, 500, 1000, 2000, 3000, 5000, 8000, 12000].forEach(function(ms){
1159        setTimeout(attempt, ms);
1160      });
1161      setTimeout(stop, 20000);
1162      if ('MutationObserver' in window && document.body) {
1163        try {
1164          mo = new MutationObserver(function(){
1165            if (stopped || mo.__px_scheduled) return;
1166            mo.__px_scheduled = true;
1167            setTimeout(function(){ if (mo) { mo.__px_scheduled = false; } attempt(); }, 100);
1168          });
1169          mo.observe(document.body, { childList: true, subtree: true });
1170        } catch (e) { mo = null; }
1171      }
1172    }
1173
1174    // ----- Form events wiring (generic) -----
1175    function wireFormEvents() {
1176      var forms = Array.prototype.slice.call(document.querySelectorAll('form:not([data-px-ignore="true"])'));
1177      var observed = new WeakSet();
1178
1179      // form_view when enters viewport first time
1180      if ('IntersectionObserver' in window) {
1181        var io = new IntersectionObserver(function(entries) {
1182          entries.forEach(function(entry) {
1183            if (entry.isIntersecting && !observed.has(entry.target)) {
1184              observed.add(entry.target);
1185              window.pxTrack('form_view', {
1186                form_id: entry.target.id || entry.target.getAttribute('name') || 'form',
1187                page_url: location.href
1188              });
1189            }
1190          });
1191        }, { threshold: 0.2 });
1192        forms.forEach(function(f){ io.observe(f); });
1193      } else {
1194        forms.forEach(function(f){
1195          window.pxTrack('form_view', { form_id: f.id || f.getAttribute('name') || 'form', page_url: location.href });
1196        });
1197      }
1198
1199      // form_interaction on field focus
1200      document.addEventListener('focusin', function(e) {
1201        var field = e.target;
1202        var form = field.form;
1203        if (!form) return;
1204        var fieldName = field.name || field.id || field.type || 'field';
1205        try {
1206          if (field.classList && field.classList.contains('neo_partyselector_quantity')) {
1207            var pt = field.getAttribute('party-type');
1208            if (pt) fieldName = 'party_' + pt;
1209          }
1210        } catch(e) {}
1211        window.pxTrack('form_interaction', {
1212          form_id: form.id || form.getAttribute('name') || 'form',
1213          field_name: fieldName
1214        });
1215      });
1216
1217      // form_submit with privacy-safe flags
1218      forms.forEach(function(form) {
1219        form.addEventListener('submit', function() {
1220          var email = form.querySelector('input[type="email"]');
1221          var phone = form.querySelector('input[type="tel"], input[name*="phone"], input[name*="telefono"]');
1222          var required = Array.prototype.slice.call(form.querySelectorAll('[required]'));
1223          var incomplete = required.some(function(el){ return !el.value; });
1224          window.pxTrack('form_submit', {
1225            form_id: form.id || form.getAttribute('name') || 'form',
1226            page_url: location.href,
1227            fields_status: incomplete ? 'incompletos' : 'completos',
1228            email_provided: bool(email && email.value),
1229            phone_provided: bool(phone && phone.value),
1230            session_id: pxContext.session_id
1231          });
1232        }, true);
1233      });
1234    }
1235    // Extra: map clicks/changes on party selector controls to meaningful field_name
1236    (function wirePartySelectorInteractions(){
1237      try {
1238        var lastMs = 0;
1239        function pushPartyInteraction(partyType) {
1240          var now = Date.now();
1241          if (now - lastMs < 400) return;
1242          lastMs = now;
1243          var form = document.querySelector('#search_form') || document.querySelector('.neo_marketplace_buscador_v3 #pxmk_searchform');
1244          window.pxTrack('form_interaction', {
1245            form_id: form ? (form.id || form.getAttribute('name') || 'form') : 'form',
1246            field_name: partyType ? ('party_' + partyType) : 'party_selector'
1247          });
1248        }
1249        document.addEventListener('click', function(e){
1250          var t = e.target;
1251          if (t && t.classList && t.classList.contains('neo_button_partyselector')) {
1252            pushPartyInteraction(t.getAttribute('party-type') || '');
1253          }
1254        }, true);
1255        document.addEventListener('change', function(e){
1256          var t = e.target;
1257          if (t && t.classList && t.classList.contains('neo_partyselector_quantity')) {
1258            pushPartyInteraction(t.getAttribute('party-type') || '');
1259          }
1260        }, true);
1261        document.addEventListener('input', function(e){
1262          var t = e.target;
1263          if (t && t.classList && t.classList.contains('neo_partyselector_quantity')) {
1264            pushPartyInteraction(t.getAttribute('party-type') || '');
1265          }
1266        }, true);
1267      } catch(e) {}
1268    })();
1269
1270    // Fire specific date interactions (optional)
1271    function wireDatePickers() {
1272      if (window.__px_date_pickers_bound) return;
1273      var inEl = document.querySelector('.neo_marketplace_buscador_v3 #fechaingreso');
1274      var outEl = document.querySelector('.neo_marketplace_buscador_v3 #fechaegreso');
1275      // Todavia no llego el buscador: NO se marca como cableado, lo reintenta
1276      // `wireSearchEventsWhenReady()`.
1277      if (!inEl && !outEl) return;
1278      window.__px_date_pickers_bound = true;
1279      if (inEl) inEl.addEventListener('change', function(){ window.pxTrack('start_search', { start_search: inEl.value || '', page_url: location.href }); });
1280      if (outEl) outEl.addEventListener('change', function(){ window.pxTrack('egreso_search', { egreso_search: outEl.value || '', page_url: location.href }); });
1281    }
1282
1283    // ----- WhatsApp click tracking (GA4/dataLayer + Meta Pixel "Contact") -----
1284    // El cliente pidió medir el clic en el botón de WhatsApp como una conversión más.
1285    // Se replica el patrón del resto de los eventos (window.pxTrack -> gtag + dataLayer) y,
1286    // si el POS tiene el pixel cargado (FacebookPixelID), se dispara el evento estándar "Contact".
1287    function wireWhatsappClick() {
1288      if (window.__px_whatsapp_wired) return;
1289      window.__px_whatsapp_wired = true;
1290
1291      var companyId = '';
1292      var lastWaMs = 0;
1293
1294      function extractPhone(href) {
1295        try {
1296          var m = href.match(/[?&]phone=(\+?\d+)/i);
1297          if (m) return m[1];
1298          m = href.match(/wa\.me\/(\+?\d+)/i);
1299          if (m) return m[1];
1300        } catch (e) {}
1301        return '';
1302      }
1303
1304      // Cualquier <a> hacia WhatsApp (api./web.whatsapp.com o wa.me), incluidos los botones
1305      // flotantes .wsp_floating (neo_social_links / standard_lp_motor) y #checkout_wsp_floating.
1306      function findWhatsappLink(el) {
1307        try {
1308          if (!el || !el.closest) return null;
1309          var a = el.closest('a');
1310          if (!a) return null;
1311          var href = (a.getAttribute('href') || '').toLowerCase();
1312          if (/(?:api\.|web\.)?whatsapp\.com|wa\.me/.test(href)) return a;
1313          if (a.closest('.wsp_floating') || a.closest('#checkout_wsp_floating')) return a;
1314        } catch (e) {}
1315        return null;
1316      }
1317
1318      // Delegado en captura: se dispara aunque el módulo re-renderice el botón (los .wsp_floating
1319      // se re-inyectan/mueven al body). target="_blank" mantiene la página viva para los beacons.
1320      document.addEventListener('click', function (e) {
1321        var link = findWhatsappLink(e.target);
1322        if (!link) return;
1323        var now = Date.now();
1324        if (now - lastWaMs < 800) return; // dedupe de doble-disparo
1325        lastWaMs = now;
1326
1327        var href = link.getAttribute('href') || '';
1328        var phone = extractPhone(href);
1329        var payload = {
1330          phone: phone,
1331          destination_url: href,
1332          pos: pxContext.pos || '',
1333          product_id: pxContext.product_id || '',
1334          product_name: pxContext.product_name || '',
1335          company_id: companyId || '',
1336          search_id: pxContext.search_id || '',
1337          currency: pxContext.currency || '',
1338          page_url: location.href,
1339          session_id: pxContext.session_id
1340        };
1341
1342        // GA4 + dataLayer (Google y GTM)
1343        window.pxTrack('whatsapp_click', payload);
1344
1345        // Meta Pixel: evento estándar "Contact". fbq solo existe si el POS tiene FacebookPixelID
1346        // (se inicializa en Conversion_SearchOK.php / PageView), así que este typeof es el guard.
1347        try {
1348          if (typeof window.fbq === 'function') {
1349            window.fbq('track', 'Contact', { content_name: 'whatsapp', content_category: 'whatsapp_click' });
1350          }
1351        } catch (e) {}
1352      }, true);
1353    }
1354
1355    // Enrich context from hidden inputs present in LP/consultas templates
1356    function enhanceContextFromHiddenInputs() {
1357      var startRaw = (document.querySelector('#Start') ||
1358                      document.querySelector('#fechaingreso') ||
1359                      document.querySelector('[name="Start"]') || { }).value || '';
1360      var endRaw   = (document.querySelector('#End') ||
1361                      document.querySelector('#fechaegreso') ||
1362                      document.querySelector('[name="End"]') || { }).value || '';
1363      var start = normalizeDate(startRaw);
1364      var end = normalizeDate(endRaw);
1365      var sid = (document.querySelector('#SearchID') || {}).value || '';
1366      var gf = (document.querySelector('#GroupsForm') || {}).value || '';
1367      var rooms = 0, adults = 0, children = 0;
1368      if (gf) {
1369        gf.split(';').forEach(function(groupStr){
1370          if (!groupStr) return;
1371          rooms += 1;
1372          var parts = groupStr.split(':');
1373          if (parts.length < 2) return;
1374          var trio = parts[1].split(',');
1375          var a = parseInt(trio[0] || '0', 10);
1376          adults += isNaN(a) ? 0 : a;
1377          var childrenAges = (trio[1] || '0');
1378          if (childrenAges && childrenAges !== '0') {
1379            children += childrenAges.split('.').filter(Boolean).length;
1380          }
1381        });
1382      }
1383      var updated = {};
1384      if (start && start !== pxContext.start_date) { pxContext.start_date = start; updated.start_date = start; }
1385      if (end && end !== pxContext.end_date) { pxContext.end_date = end; updated.end_date = end; }
1386      if (sid && sid !== pxContext.search_id) { pxContext.search_id = sid; updated.search_id = sid; }
1387      if (adults && adults !== pxContext.adults) { pxContext.adults = adults; updated.adults = adults; }
1388      if (children && children !== pxContext.children) { pxContext.children = children; updated.children = children; }
1389      if (rooms && rooms !== pxContext.rooms) { pxContext.rooms = rooms; updated.rooms = rooms; }
1390      if (Object.keys(updated).length) {
1391        try { window.dataLayer.push(Object.assign({ event: 'px_context_update' }, updated)); } catch(e) {}
1392      }
1393    }
1394
1395    // Parse GroupsForm like "1:2,0,0;1:1,5.7,0" into {rooms, adults, children}
1396    function parseGroupsForm(gf) {
1397      var out = { rooms: 0, adults: 0, children: 0 };
1398      try {
1399        if (!gf) return out;
1400        String(gf).split(';').forEach(function(groupStr){
1401          if (!groupStr) return;
1402          out.rooms += 1;
1403          var parts = groupStr.split(':');
1404          if (parts.length < 2) return;
1405          var trio = parts[1].split(',');
1406          var a = parseInt(trio[0] || '0', 10);
1407          out.adults += isNaN(a) ? 0 : a;
1408          var childrenAges = (trio[1] || '0');
1409          if (childrenAges && childrenAges !== '0') {
1410            out.children += childrenAges.split('.').filter(Boolean).length;
1411          }
1412          // Babies are not counted in children
1413        });
1414      } catch (e) {}
1415      return out;
1416    }
1417
1418    // Enrich context from px_jsonQuery (server-rendered Json_Query) when available
1419    function enhanceContextFromPxJson() {
1420      try {
1421        var q = (typeof window !== 'undefined' && window.px_jsonQuery) ? window.px_jsonQuery : (typeof px_jsonQuery !== 'undefined' ? px_jsonQuery : null);
1422        if (!q) return;
1423        var updated = {};
1424        // SearchID
1425        if (q.SearchID && String(q.SearchID) !== String(pxContext.search_id || '')) {
1426          pxContext.search_id = String(q.SearchID);
1427          updated.search_id = pxContext.search_id;
1428        }
1429        // Dates
1430        var start = normalizeDate(q.Start || '');
1431        var end = normalizeDate(q.End || '');
1432        if (start && start !== pxContext.start_date) { pxContext.start_date = start; updated.start_date = start; }
1433        if (end && end !== pxContext.end_date) { pxContext.end_date = end; updated.end_date = end; }
1434        // Pax/rooms from GroupsForm or Group array
1435        var paxParsed = null;
1436        if (q.GroupsForm) {
1437          paxParsed = parseGroupsForm(q.GroupsForm);
1438        } else if (q.Group && Array.isArray(q.Group)) {
1439          paxParsed = { rooms: 0, adults: 0, children: 0 };
1440          q.Group.forEach(function(g){
1441            paxParsed.rooms += 1;
1442            paxParsed.adults += (g.Adults*1) || 0;
1443            paxParsed.children += (g.Childs*1) || 0;
1444          });
1445        }
1446        if (paxParsed) {
1447          if (paxParsed.adults && paxParsed.adults !== pxContext.adults) { pxContext.adults = paxParsed.adults; updated.adults = paxParsed.adults; }
1448          if (paxParsed.children && paxParsed.children !== pxContext.children) { pxContext.children = paxParsed.children; updated.children = paxParsed.children; }
1449          if (paxParsed.rooms && paxParsed.rooms !== pxContext.rooms) { pxContext.rooms = paxParsed.rooms; updated.rooms = paxParsed.rooms; }
1450        }
1451        if (Object.keys(updated).length) {
1452          try { window.dataLayer.push(Object.assign({ event: 'px_context_update' }, updated)); } catch(e) {}
1453        }
1454      } catch (e) {}
1455    }
1456
1457    // Process API payloads to enrich context
1458    function processApiData(url, data) {
1459      try {
1460        if (!data) return;
1461        // avoid reprocessing same SearchID repeatedly
1462        window.__px_processed_sids = window.__px_processed_sids || {};
1463        var updated = {};
1464        var payload = data && data.Json_Query ? data.Json_Query : data;
1465        // SearchID present?
1466        if (typeof payload.SearchID !== 'undefined' && String(payload.SearchID)) {
1467          var sid = String(payload.SearchID);
1468          if (window.__px_processed_sids[sid]) return;
1469          if (sid && sid !== String(pxContext.search_id || '')) { pxContext.search_id = sid; updated.search_id = sid; }
1470          window.__px_processed_sids[sid] = true;
1471        }
1472        // Start / End can exist either top-level or nested
1473        var start = payload.Start || (data && data.Start) || '';
1474        var end = payload.End || (data && data.End) || '';
1475        start = normalizeDate(start);
1476        end = normalizeDate(end);
1477        if (start && start !== pxContext.start_date) { pxContext.start_date = start; updated.start_date = start; }
1478        if (end && end !== pxContext.end_date) { pxContext.end_date = end; updated.end_date = end; }
1479        // GroupsForm could be present
1480        var gf = payload.GroupsForm || (data && data.GroupsForm) || '';
1481        if (gf) {
1482          var parsed = parseGroupsForm(gf);
1483          if (parsed.adults && parsed.adults !== pxContext.adults) { pxContext.adults = parsed.adults; updated.adults = parsed.adults; }
1484          if (parsed.children && parsed.children !== pxContext.children) { pxContext.children = parsed.children; updated.children = parsed.children; }
1485          if (parsed.rooms && parsed.rooms !== pxContext.rooms) { pxContext.rooms = parsed.rooms; updated.rooms = parsed.rooms; }
1486        }
1487        // Some APIs include Group arrays; attempt totals
1488        if (payload.Group && Array.isArray(payload.Group)) {
1489          var aT = 0, cT = 0, rT = 0;
1490          payload.Group.forEach(function(g){
1491            if (!g) return;
1492            rT += 1;
1493            aT += (g.Adults*1) || 0;
1494            cT += (g.Childs*1) || 0;
1495          });
1496          if (aT && aT !== pxContext.adults) { pxContext.adults = aT; updated.adults = aT; }
1497          if (cT && cT !== pxContext.children) { pxContext.children = cT; updated.children = cT; }
1498          if (rT && rT !== pxContext.rooms) { pxContext.rooms = rT; updated.rooms = rT; }
1499        }
1500        if (Object.keys(updated).length) {
1501          try { window.dataLayer.push(Object.assign({ event: 'px_context_update' }, updated)); } catch(e) {}
1502        }
1503      } catch(e) {}
1504    }
1505
1506    // Intercept fetch/XHR to learn from API responses
1507    (function installNetworkTaps(){
1508      try {
1509        var origFetch = window.fetch;
1510        if (origFetch && !window.__px_fetch_hooked) {
1511          window.__px_fetch_hooked = true;
1512          window.fetch = function(input, init) {
1513            var p = origFetch(input, init);
1514            try {
1515              var url = typeof input === 'string' ? input : (input && input.url) || '';
1516              p.then(function(res){
1517                try {
1518                  var ct = (res.headers && res.headers.get && res.headers.get('content-type')) || '';
1519                  if (ct && ct.indexOf('application/json') !== -1 && (/\/query\/list/i.test(url) || /\/search\/info/i.test(url))) {
1520                    res.clone().json().then(function(json){ processApiData(url, json); }).catch(function(){});
1521                  }
1522                } catch(e) {}
1523              }).catch(function(){});
1524            } catch(e) {}
1525            return p;
1526          };
1527        }
1528      } catch(e) {}
1529      try {
1530        if (!window.__px_xhr_hooked && window.XMLHttpRequest) {
1531          window.__px_xhr_hooked = true;
1532          var XHR = window.XMLHttpRequest;
1533          var open = XHR.prototype.open;
1534          var send = XHR.prototype.send;
1535          XHR.prototype.open = function(method, url) {
1536            this.__px_url = url;
1537            return open.apply(this, arguments);
1538          };
1539          XHR.prototype.send = function(body) {
1540            try {
1541              this.addEventListener('load', function() {
1542                try {
1543                  var url = this.__px_url || '';
1544                  var ct = this.getResponseHeader && this.getResponseHeader('content-type') || '';
1545                  if (ct && ct.indexOf('application/json') !== -1 && (/\/query\/list/i.test(url) || /\/search\/info/i.test(url))) {
1546                    var txt = this.responseText;
1547                    try { processApiData(url, JSON.parse(txt)); } catch(e) {}
1548                  }
1549                } catch(e) {}
1550              });
1551            } catch(e) {}
1552            return send.apply(this, arguments);
1553          };
1554        }
1555      } catch(e) {}
1556    })();
1557
1558    // If we have SearchID but missing details, fetch /search/info
1559    function fetchSearchInfoIfNeeded() {
1560      try {
1561        var sid = pxContext.search_id || getUrlParam('SearchID') || (document.querySelector('#SearchID')||{}).value || '';
1562        var needsDates = !(pxContext.start_date && pxContext.end_date);
1563        var needsPaxs = !((pxContext.adults*1) > 0 || (pxContext.children*1) > 0);
1564        if (sid && (needsDates || needsPaxs)) {
1565          fetchSearchInfoForSid(sid);
1566        }
1567      } catch(e) {}
1568    }
1569
1570    // Cached fetch per SearchID
1571    function fetchSearchInfoForSid(sid) {
1572      try {
1573        window.__px_sid_promises = window.__px_sid_promises || {};
1574        if (window.__px_sid_promises[sid]) return window.__px_sid_promises[sid];
1575        var endpoint = 'https://api-1-eb-web.pxsol.io/search/info?SearchID=' + encodeURIComponent(sid);
1576        var pr = fetch(endpoint, { credentials: 'omit' }).then(function(res){
1577          if (!res.ok) return;
1578          var ct = (res.headers && res.headers.get && res.headers.get('content-type')) || '';
1579          if (ct.indexOf('application/json') === -1) return;
1580          return res.json();
1581        }).then(function(json){
1582          if (json) processApiData(endpoint, json);
1583          return true;
1584        }).catch(function(){ return false; });
1585        window.__px_sid_promises[sid] = pr;
1586        return pr;
1587      } catch(e) { return Promise.resolve(false); }
1588    }
1589
1590    // Ensure dates/paxs are ready before firing a callback
1591    function ensureContextReady(cb) {
1592      try {
1593        // Try quick enrichments first
1594        enhanceContextFromHiddenInputs();
1595        enhanceContextFromPxJson();
1596        var sid = pxContext.search_id || getUrlParam('SearchID') || (document.querySelector('#SearchID')||{}).value || '';
1597        var hasDates = !!(pxContext.start_date && pxContext.end_date);
1598        var hasPaxs = ((pxContext.adults*1) > 0) || ((pxContext.children*1) > 0);
1599        if (hasDates && hasPaxs) { cb(); return; }
1600        if (sid) {
1601          fetchSearchInfoForSid(sid).finally(function(){ cb(); });
1602          return;
1603        }
1604        // Last resort: try to enrich from DOM then run
1605        enhanceContextFromHiddenInputs();
1606        cb();
1607      } catch(e) { cb(); }
1608    }
1609
1610    // Detect "No hay resultados" to push no_inventory automatically
1611    function wireNoInventoryWatcher() {
1612      console.log('%c[pxTrack] 🔍 Initializing no_inventory watcher...', 'color: #2196F3; font-weight: bold; font-size: 14px;');
1613      console.log('[pxTrack] wireNoInventoryWatcher() called at:', new Date().toISOString());
1614      var scanCount = 0;
1615      var lastScanResult = null;
1616      var lastSearchID = null; // Track SearchID to detect new searches
1617      var lastScanTime = 0; // For throttling scans
1618      var SCAN_THROTTLE_MS = 1000; // Maximum 1 scan per second
1619      var EVENT_COOLDOWN_MS = 5000; // Minimum 5 seconds between events of the same type
1620      var lastEventTime = {}; // Track last time each event type was fired
1621      var MAX_SCANS_PER_SEARCH = 30; // Maximum scans per search to prevent excessive polling
1622      var __px_has_inventory_pushed = false; // Flag para has_inventory (opuesto de no_inventory)
1623      
1624      // Log immediately to confirm function is executing
1625      console.log('[pxTrack] ✅ wireNoInventoryWatcher() is executing - scan function will be defined');
1626      
1627      // Expose scan function to global manual trigger
1628      window.__px_no_inventory_scan_func = function() {
1629        console.log('[pxTrack] Manual scan triggered via global function');
1630        scan();
1631        return lastScanResult;
1632      };
1633      
1634      function checkJsonQueryAvailability() {
1635        try {
1636          // Check if px_jsonQuery is available
1637          if (typeof window.px_jsonQuery === 'undefined' || !window.px_jsonQuery) {
1638            return false;
1639          }
1640          
1641          var jsonQuery = window.px_jsonQuery;
1642          
1643          // Log full structure on first check (for debugging)
1644          if (!window.__px_jsonQuery_logged) {
1645            window.__px_jsonQuery_logged = true;
1646            try {
1647              console.log('[pxTrack] 📦 px_jsonQuery structure detected:', {
1648                hasProductList: !!(jsonQuery.ProductList),
1649                productListIsArray: Array.isArray(jsonQuery.ProductList),
1650                productListLength: jsonQuery.ProductList ? jsonQuery.ProductList.length : 0,
1651                sampleProduct: jsonQuery.ProductList && jsonQuery.ProductList.length > 0 ? {
1652                  hasAvailability: typeof jsonQuery.ProductList[0].Availability !== 'undefined',
1653                  availability: jsonQuery.ProductList[0].Availability,
1654                  hasSkuList: !!(jsonQuery.ProductList[0].SkuList),
1655                  skuListLength: jsonQuery.ProductList[0].SkuList ? jsonQuery.ProductList[0].SkuList.length : 0
1656                } : null
1657              });
1658              // Log first product details if available
1659              if (jsonQuery.ProductList && jsonQuery.ProductList.length > 0) {
1660                var firstProduct = jsonQuery.ProductList[0];
1661                console.log('[pxTrack] First product sample:', {
1662                  Availability: firstProduct.Availability,
1663                  hasSkuList: !!(firstProduct.SkuList),
1664                  SkuList: firstProduct.SkuList ? firstProduct.SkuList.map(function(sku) {
1665                    return { Availability: sku.Availability };
1666                  }).slice(0, 3) : null
1667                });
1668              }
1669            } catch(e) {
1670              console.error('[pxTrack] Error logging Json_Query structure:', e);
1671            }
1672          }
1673          
1674          // Check if ProductList exists and is an array
1675          if (!jsonQuery.ProductList) {
1676            // ProductList might not be loaded yet, but object exists
1677            return false;
1678          }
1679          
1680          if (!Array.isArray(jsonQuery.ProductList)) {
1681            console.warn('[pxTrack] px_jsonQuery.ProductList exists but is not an array:', typeof jsonQuery.ProductList);
1682            return false;
1683          }
1684          
1685          if (jsonQuery.ProductList.length === 0) {
1686            // Empty ProductList might indicate no inventory, but we need at least one product to check
1687            return false;
1688          }
1689          
1690          // Check if ALL products have Availability === 0
1691          var allZeroAvailability = true;
1692          var availabilityDetails = [];
1693          
1694          for (var i = 0; i < jsonQuery.ProductList.length; i++) {
1695            var product = jsonQuery.ProductList[i];
1696            // Check Availability property (could be at product level or in SkuList)
1697            var productAvailability = product.Availability || 0;
1698            var productHasAvailability = typeof product.Availability !== 'undefined';
1699            
1700            // If product has SkuList, check all SKUs
1701            if (product.SkuList && Array.isArray(product.SkuList) && product.SkuList.length > 0) {
1702              var allSkusZero = true;
1703              var skuAvailabilities = [];
1704              for (var j = 0; j < product.SkuList.length; j++) {
1705                var sku = product.SkuList[j];
1706                var skuAvail = sku.Availability || 0;
1707                skuAvailabilities.push(skuAvail);
1708                if (sku.Availability && sku.Availability > 0) {
1709                  allSkusZero = false;
1710                  break;
1711                }
1712              }
1713              availabilityDetails.push({
1714                productIndex: i,
1715                hasProductAvailability: productHasAvailability,
1716                productAvailability: productAvailability,
1717                hasSkuList: true,
1718                skuAvailabilities: skuAvailabilities,
1719                allSkusZero: allSkusZero
1720              });
1721              if (!allSkusZero) {
1722                allZeroAvailability = false;
1723                break;
1724              }
1725            } else {
1726              // Product-level availability check
1727              availabilityDetails.push({
1728                productIndex: i,
1729                hasProductAvailability: productHasAvailability,
1730                productAvailability: productAvailability,
1731                hasSkuList: false
1732              });
1733              if (productAvailability > 0) {
1734                allZeroAvailability = false;
1735                break;
1736              }
1737            }
1738          }
1739          
1740          // Log availability details when checking (first time or when all zero)
1741          if (allZeroAvailability || !window.__px_availability_details_logged) {
1742            window.__px_availability_details_logged = true;
1743            console.log('[pxTrack] Availability check result:', {
1744              allZeroAvailability: allZeroAvailability,
1745              totalProducts: jsonQuery.ProductList.length,
1746              details: availabilityDetails.slice(0, 3) // Show first 3 products
1747            });
1748          }
1749          
1750          return allZeroAvailability;
1751        } catch(e) {
1752          console.error('[pxTrack] Error checking Json_Query availability:', e);
1753          return false;
1754        }
1755      }
1756      
1757      function checkJsonQueryHasAvailability() {
1758        try {
1759          // Check if px_jsonQuery is available
1760          if (typeof window.px_jsonQuery === 'undefined' || !window.px_jsonQuery) {
1761            return { hasAvailability: false, totalAvailability: 0, availabilityDetails: null };
1762          }
1763          
1764          var jsonQuery = window.px_jsonQuery;
1765          
1766          // Check if ProductList exists and is an array
1767          if (!jsonQuery.ProductList || !Array.isArray(jsonQuery.ProductList) || jsonQuery.ProductList.length === 0) {
1768            return { hasAvailability: false, totalAvailability: 0, availabilityDetails: null };
1769          }
1770          
1771          var totalAvailability = 0;
1772          var hasAnyAvailability = false;
1773          var availabilityDetails = [];
1774          
1775          for (var i = 0; i < jsonQuery.ProductList.length; i++) {
1776            var product = jsonQuery.ProductList[i];
1777            var productAvailability = product.Availability || 0;
1778            var productTotal = 0;
1779            
1780            // If product has SkuList, sum all SKU availabilities
1781            if (product.SkuList && Array.isArray(product.SkuList) && product.SkuList.length > 0) {
1782              for (var j = 0; j < product.SkuList.length; j++) {
1783                var sku = product.SkuList[j];
1784                var skuAvail = sku.Availability || 0;
1785                productTotal += skuAvail;
1786                if (skuAvail > 0) {
1787                  hasAnyAvailability = true;
1788                }
1789              }
1790            } else {
1791              // Product-level availability
1792              productTotal = productAvailability;
1793              if (productAvailability > 0) {
1794                hasAnyAvailability = true;
1795              }
1796            }
1797            
1798            totalAvailability += productTotal;
1799            availabilityDetails.push({
1800              productIndex: i,
1801              productAvailability: productAvailability,
1802              productTotal: productTotal,
1803              hasSkuList: !!(product.SkuList && Array.isArray(product.SkuList) && product.SkuList.length > 0)
1804            });
1805          }
1806          
1807          return {
1808            hasAvailability: hasAnyAvailability,
1809            totalAvailability: totalAvailability,
1810            availabilityDetails: availabilityDetails,
1811            productCount: jsonQuery.ProductList.length
1812          };
1813        } catch(e) {
1814          console.error('[pxTrack] Error checking Json_Query for availability:', e);
1815          return { hasAvailability: false, totalAvailability: 0, availabilityDetails: null };
1816        }
1817      }
1818      
1819      function scan() {
1820        // THROTTLING: Evitar escaneos muy frecuentes
1821        var now = Date.now();
1822        if (now - lastScanTime < SCAN_THROTTLE_MS) {
1823          console.debug('[pxTrack] scan() throttled (too soon after last scan)');
1824          return;
1825        }
1826        lastScanTime = now;
1827        
1828        // Check if SearchID changed (new search) - if so, reset the flag
1829        try {
1830          var currentSearchID = null;
1831          if (typeof window.px_jsonQuery !== 'undefined' && window.px_jsonQuery && window.px_jsonQuery.SearchID) {
1832            currentSearchID = String(window.px_jsonQuery.SearchID);
1833          } else {
1834            var searchIDEl = document.querySelector('#SearchID');
1835            if (searchIDEl && searchIDEl.value) {
1836              currentSearchID = String(searchIDEl.value);
1837            } else {
1838              try {
1839                var urlParams = new URLSearchParams(location.search);
1840                currentSearchID = urlParams.get('SearchID') || null;
1841              } catch(e) {}
1842            }
1843          }
1844          
1845          // If SearchID changed, reset the flags for new search
1846          if (currentSearchID && currentSearchID !== lastSearchID && lastSearchID !== null) {
1847            console.log('[pxTrack] 🔄 New search detected (SearchID: ' + lastSearchID + ' → ' + currentSearchID + '), resetting flags');
1848            window.__px_no_inventory_pushed = false;
1849            __px_has_inventory_pushed = false;
1850            scanCount = 0; // Reset scan count
1851            lastScanTime = 0; // Reset throttling for new search
1852          }
1853          
1854          // Update lastSearchID
1855          if (currentSearchID) {
1856            lastSearchID = currentSearchID;
1857          }
1858        } catch(e) {
1859          console.error('[pxTrack] Error checking SearchID:', e);
1860        }
1861        
1862        // Don't scan if event already fired (unless we just reset it)
1863        if (window.__px_no_inventory_pushed) {
1864          console.debug('[pxTrack] scan() called but event already fired, skipping');
1865          return;
1866        }
1867        
1868        // Límite máximo de escaneos por búsqueda
1869        if (scanCount >= MAX_SCANS_PER_SEARCH) {
1870          console.debug('[pxTrack] scan() skipped - maximum scans per search reached (' + MAX_SCANS_PER_SEARCH + ')');
1871          return;
1872        }
1873        
1874        scanCount++;
1875        // Log first few scans to confirm function is working
1876        if (scanCount <= 5) {
1877          console.log('[pxTrack] scan() executing - Scan #' + scanCount);
1878        }
1879        var shouldFire = false;
1880        var detectionMethod = '';
1881        var debugInfo = {
1882          scanNumber: scanCount,
1883          px_jsonQuery_exists: typeof window.px_jsonQuery !== 'undefined' && !!window.px_jsonQuery,
1884          productList_length: 0,
1885          productList_details: []
1886        };
1887        
1888        // Method 1: Check px_jsonQuery.ProductList for all Availability === 0
1889        try {
1890          if (typeof window.px_jsonQuery !== 'undefined' && window.px_jsonQuery) {
1891            debugInfo.productList_length = (window.px_jsonQuery.ProductList && Array.isArray(window.px_jsonQuery.ProductList)) ? window.px_jsonQuery.ProductList.length : 0;
1892            
1893            if (checkJsonQueryAvailability()) {
1894              shouldFire = true;
1895              detectionMethod = 'Json_Query';
1896              try { 
1897                console.log('%c[pxTrack] ✅ no_inventory DETECTED via Json_Query (all Availability === 0) - Scan #' + scanCount, 'color: #FF5722; font-weight: bold;');
1898              } catch(_e){}
1899            } else {
1900              // Log details about why it didn't fire
1901              try {
1902                if (window.px_jsonQuery.ProductList && Array.isArray(window.px_jsonQuery.ProductList)) {
1903                  var productDetails = [];
1904                  for (var idx = 0; idx < Math.min(window.px_jsonQuery.ProductList.length, 3); idx++) {
1905                    var p = window.px_jsonQuery.ProductList[idx];
1906                    var prodAvail = p.Availability || 0;
1907                    var skuAvail = 'N/A';
1908                    if (p.SkuList && Array.isArray(p.SkuList) && p.SkuList.length > 0) {
1909                      var skuAvails = [];
1910                      for (var skuIdx = 0; skuIdx < p.SkuList.length; skuIdx++) {
1911                        skuAvails.push(p.SkuList[skuIdx].Availability || 0);
1912                      }
1913                      skuAvail = skuAvails.join(',');
1914                    }
1915                    productDetails.push({productAvail: prodAvail, skuAvail: skuAvail});
1916                  }
1917                  debugInfo.productList_details = productDetails;
1918                }
1919              } catch(e) {}
1920            }
1921          }
1922        } catch(e) {
1923          console.error('[pxTrack] Error in Json_Query availability check:', e);
1924        }
1925        
1926        // Method 2: Check for specific DOM elements (most reliable)
1927        if (!shouldFire) {
1928          try {
1929            // Check for #no-inventory-container or #no-inventory (from sindispo.php)
1930            var noInventoryContainer = document.querySelector('#no-inventory-container');
1931            var noInventoryElement = document.querySelector('#no-inventory');
1932            if (noInventoryContainer || noInventoryElement) {
1933              shouldFire = true;
1934              detectionMethod = 'DOM element (ID)';
1935              try { 
1936                console.log('%c[pxTrack] ✅ no_inventory DETECTED via DOM element (#no-inventory-container or #no-inventory) - Scan #' + scanCount, 'color: #FF5722; font-weight: bold;');
1937                console.log('[pxTrack] DOM elements found:', {
1938                  hasContainer: !!noInventoryContainer,
1939                  hasElement: !!noInventoryElement,
1940                  containerVisible: noInventoryContainer ? (noInventoryContainer.offsetParent !== null) : false,
1941                  elementText: noInventoryElement ? (noInventoryElement.textContent || noInventoryElement.innerText || '').substring(0, 50) : ''
1942                });
1943              } catch(_e){}
1944            } else if (scanCount <= 3 || scanCount % 10 === 0) {
1945              // Log when elements are not found (for debugging)
1946              try {
1947                console.debug('[pxTrack] DOM check: #no-inventory-container and #no-inventory not found (scan #' + scanCount + ')');
1948              } catch(_e){}
1949            }
1950          } catch(e) {
1951            console.error('[pxTrack] Error in DOM element check:', e);
1952          }
1953        }
1954        
1955        // Method 3: Fallback - Check DOM text for "No hay resultados" or "No results"
1956        if (!shouldFire) {
1957          try {
1958            var candidates = Array.prototype.slice.call(document.querySelectorAll('body *'));
1959            for (var i=0; i<candidates.length; i++) {
1960              var t = (candidates[i].innerText || '').trim();
1961              if (!t) continue;
1962              if (t.indexOf('No hay resultados') !== -1 || t.indexOf('No results') !== -1) { 
1963                shouldFire = true;
1964                detectionMethod = 'DOM text';
1965                try { 
1966                  console.log('%c[pxTrack] ✅ no_inventory DETECTED via DOM text - Scan #' + scanCount, 'color: #FF5722; font-weight: bold;');
1967                } catch(_e){}
1968                break; 
1969              }
1970            }
1971          } catch(e) {
1972            console.error('[pxTrack] Error in DOM text check:', e);
1973          }
1974        }
1975        
1976        // Store last scan result for debugging
1977        lastScanResult = {
1978          shouldFire: shouldFire,
1979          method: detectionMethod,
1980          scanCount: scanCount,
1981          px_jsonQuery_exists: debugInfo.px_jsonQuery_exists,
1982          productList_length: debugInfo.productList_length,
1983          productList_details: debugInfo.productList_details
1984        };
1985        
1986        // Log scan details every 5th scan or when px_jsonQuery becomes available
1987        if (scanCount % 5 === 0 || (debugInfo.px_jsonQuery_exists && scanCount <= 3)) {
1988          try {
1989            console.log('[pxTrack] no_inventory scan #' + scanCount + ':', {
1990              px_jsonQuery_exists: debugInfo.px_jsonQuery_exists,
1991              productList_length: debugInfo.productList_length,
1992              shouldFire: shouldFire,
1993              method: detectionMethod
1994            });
1995            if (debugInfo.productList_details.length > 0) {
1996              console.log('[pxTrack] Sample product availability:', debugInfo.productList_details);
1997            }
1998          } catch(_e){}
1999        }
2000        
2001        if (shouldFire && !window.__px_no_inventory_pushed) {
2002          // COOLDOWN: Verificar que no se haya disparado recientemente
2003          var eventType = 'no_inventory';
2004          var now = Date.now();
2005          if (lastEventTime[eventType] && (now - lastEventTime[eventType] < EVENT_COOLDOWN_MS)) {
2006            console.log('[pxTrack] ⏸️ Event cooldown active, skipping no_inventory event (last fired ' + Math.round((now - lastEventTime[eventType]) / 1000) + 's ago)');
2007            return;
2008          }
2009          
2010          window.__px_no_inventory_pushed = true;
2011          lastEventTime[eventType] = now; // Registrar tiempo del evento
2012          
2013          // Ensure dates/paxs are enriched before sending
2014          ensureContextReady(function(){
2015            var params = getSearchParamsFromDOM();
2016            params.no_inventory = true;
2017            try { 
2018              console.log('%c[pxTrack] 🚀 FIRING no_inventory event - Detection method: ' + detectionMethod + ' - Scan #' + scanCount, 'color: #4CAF50; font-weight: bold; font-size: 14px;');
2019              console.log('[pxTrack] no_inventory payload:', params);
2020              console.log('[pxTrack] Last scan result:', lastScanResult);
2021            } catch(_e){}
2022            window.pxTrack('no_inventory', params);
2023            
2024            // Fire form_success for search form after no_inventory
2025            setTimeout(function() {
2026              console.log('%c[pxTrack] 🚀 FIRING form_success for search form (after no_inventory)', 'color: #4CAF50; font-weight: bold;');
2027              window.pxTrack('form_success', {
2028                form_id: 'pxmk_searchform',
2029                lead_id: null,
2030                transaction_id: null
2031              });
2032            }, 100);
2033          });
2034        }
2035        
2036        // OPPOSITE: Check if there IS availability (has_inventory)
2037        // Only check if no_inventory was NOT detected and has_inventory hasn't been fired yet
2038        if (!shouldFire && !__px_has_inventory_pushed && !window.__px_no_inventory_pushed) {
2039          try {
2040            // Also verify that no "no inventory" DOM elements are present
2041            var noInventoryContainer = document.querySelector('#no-inventory-container');
2042            var noInventoryElement = document.querySelector('#no-inventory');
2043            var hasNoInventoryDOM = !!(noInventoryContainer || noInventoryElement);
2044            
2045            if (hasNoInventoryDOM) {
2046              console.debug('[pxTrack] has_inventory blocked - no inventory DOM elements present');
2047            } else {
2048              var availabilityInfo = checkJsonQueryHasAvailability();
2049              
2050              if (availabilityInfo.hasAvailability) {
2051                // COOLDOWN: Verificar que no se haya disparado recientemente
2052                var eventType = 'has_inventory';
2053                var now = Date.now();
2054                if (lastEventTime[eventType] && (now - lastEventTime[eventType] < EVENT_COOLDOWN_MS)) {
2055                  console.log('[pxTrack] ⏸️ Event cooldown active, skipping has_inventory event (last fired ' + Math.round((now - lastEventTime[eventType]) / 1000) + 's ago)');
2056                } else {
2057              
2058              __px_has_inventory_pushed = true;
2059              lastEventTime[eventType] = now;
2060              
2061              // Ensure dates/paxs are enriched before sending
2062              ensureContextReady(function(){
2063                var params = getSearchParamsFromDOM();
2064                params.has_availability = true;
2065                params.availability = availabilityInfo.totalAvailability;
2066                params.product_count = availabilityInfo.productC
2066ount || 0;
2067                
2068                // Add SearchID if available
2069                try {
2070                  if (typeof window.px_jsonQuery !== 'undefined' && window.px_jsonQuery && window.px_jsonQuery.SearchID) {
2071                    params.search_id = String(window.px_jsonQuery.SearchID);
2072                  }
2073                } catch(e) {}
2074                
2075                // Add availability details (first 3 products for debugging)
2076                if (availabilityInfo.availabilityDetails && availabilityInfo.availabilityDetails.length > 0) {
2077                  params.availability_details = availabilityInfo.availabilityDetails.slice(0, 3).map(function(detail) {
2078                    return {
2079                      product_index: detail.productIndex,
2080                      availability: detail.productTotal,
2081                      has_skus: detail.hasSkuList
2082                    };
2083                  });
2084                }
2085                
2086                try { 
2087                  console.log('%c[pxTrack] 🚀 FIRING has_inventory event (availability detected) - Scan #' + scanCount, 'color: #4CAF50; font-weight: bold; font-size: 14px;');
2088                  console.log('[pxTrack] has_inventory payload:', params);
2089                  console.log('[pxTrack] Availability info:', {
2090                    totalAvailability: availabilityInfo.totalAvailability,
2091                    productCount: availabilityInfo.productCount,
2092                    hasAvailability: availabilityInfo.hasAvailability
2093                  });
2094                } catch(_e){}
2095                window.pxTrack('has_inventory', params);
2096                
2097                // Fire form_success for search form after has_inventory
2098                setTimeout(function() {
2099                  console.log('%c[pxTrack] 🚀 FIRING form_success for search form (after has_inventory)', 'color: #4CAF50; font-weight: bold;');
2100                  window.pxTrack('form_success', {
2101                    form_id: 'pxmk_searchform',
2102                    lead_id: null,
2103                    transaction_id: null
2104                  });
2105                }, 100);
2106              });
2107                }
2108              }
2109            }
2110          } catch(e) {
2111            console.error('[pxTrack] Error checking for availability (has_inventory):', e);
2112          }
2113        }
2114      }
2115      
2116      // Try to intercept px_jsonQuery assignment (works if px_jsonQuery is undefined)
2117      try {
2118        if (typeof window.px_jsonQuery === 'undefined') {
2119          try {
2120            var _px_jsonQuery_value = undefined;
2121            var _px_jsonQuery_lastTrigger = 0;
2122            Object.defineProperty(window, 'px_jsonQuery', {
2123              get: function() { return _px_jsonQuery_value; },
2124              set: function(newValue) {
2125                _px_jsonQuery_value = newValue;
2126                if (newValue) {
2127                  try {
2128                    // Throttle interceptor triggers (máximo 1 cada 1 segundo)
2129                    var now = Date.now();
2130                    if (now - _px_jsonQuery_lastTrigger < 1000) {
2131                      console.debug('[pxTrack] px_jsonQuery interceptor throttled');
2132                      return;
2133                    }
2134                    _px_jsonQuery_lastTrigger = now;
2135                    console.log('[pxTrack] px_jsonQuery was set via Object.defineProperty, triggering scan');
2136                    setTimeout(function() { scan(); }, 150);
2137                  } catch(e) {
2138                    console.error('[pxTrack] Error in triggerScan:', e);
2139                  }
2140                }
2141              },
2142              configurable: true,
2143              enumerable: true
2144            });
2145          } catch(e) {
2146            console.error('[pxTrack] Object.defineProperty failed for px_jsonQuery:', e);
2147          }
2148        }
2149      } catch(e) {
2150        console.error('[pxTrack] Error setting up px_jsonQuery interception:', e);
2151      }
2152      
2153      // Multiple initial scans with increasing delays (for Chrome compatibility)
2154      function runInitialScans() {
2155        console.log('%c[pxTrack] Starting initial scans for no_inventory detection...', 'color: #FF9800; font-weight: bold;');
2156        console.log('[pxTrack] runInitialScans() called - will execute multiple scans');
2157        // Immediate scan
2158        console.log('[pxTrack] Executing immediate scan...');
2159        scan();
2160        // Delayed scans to catch px_jsonQuery if it loads later AND DOM elements that load dynamically
2161        setTimeout(function() { scan(); }, 200);
2162        setTimeout(function() { scan(); }, 500);
2163        setTimeout(function() { scan(); }, 1000);
2164        setTimeout(function() { scan(); }, 2000);
2165        setTimeout(function() { scan(); }, 3000);
2166        setTimeout(function() { scan(); }, 5000);
2167      }
2168      
2169      // Run initial scans after DOM is ready
2170      if (document.readyState === 'loading') {
2171        console.log('[pxTrack] DOM is loading, will wait for DOMContentLoaded');
2172        document.addEventListener('DOMContentLoaded', function() {
2173          console.log('[pxTrack] DOMContentLoaded fired, scheduling runInitialScans() in 100ms');
2174          setTimeout(function() {
2175            console.log('[pxTrack] Executing runInitialScans() now...');
2176            runInitialScans();
2177          }, 100);
2178        });
2179      } else {
2180        console.log('[pxTrack] DOM already ready, scheduling runInitialScans() in 100ms');
2181        setTimeout(function() {
2182          console.log('[pxTrack] Executing runInitialScans() now...');
2183          runInitialScans();
2184        }, 100);
2185      }
2186      
2187      // Also use requestAnimationFrame for Chrome (ensures DOM is painted)
2188      if (window.requestAnimationFrame) {
2189        requestAnimationFrame(function() {
2190          setTimeout(function() { scan(); }, 500);
2191        });
2192      }
2193      
2194      // Watch for px_jsonQuery availability (reduced polling frequency to prevent rate limiting)
2195      var jsonQueryCheckStart = Date.now();
2196      var jsonQueryCheckTimeout = 20000; // 20 seconds
2197      var jsonQueryCheckInterval = setInterval(function() {
2198        // Stop if timeout reached
2199        if (Date.now() - jsonQueryCheckStart > jsonQueryCheckTimeout) {
2200          clearInterval(jsonQueryCheckInterval);
2201          try { 
2202            console.log('[pxTrack] no_inventory px_jsonQuery polling timed out after', scanCount, 'scans');
2203            console.log('[pxTrack] Last scan result:', lastScanResult);
2204          } catch(_e){}
2205          return;
2206        }
2207        
2208        // Stop if event already fired
2209        if (window.__px_no_inventory_pushed) {
2210          clearInterval(jsonQueryCheckInterval);
2211          return;
2212        }
2213        
2214        // Check if px_jsonQuery is now available and scan
2215        if (typeof window.px_jsonQuery !== 'undefined' && window.px_jsonQuery) {
2216          scan();
2217        }
2218      }, 1000); // Reduced to 1 second to prevent rate limiting
2219      
2220      // Watch DOM changes and specifically look for #no-inventory-container or #no-inventory
2221      try {
2222        var mo = new MutationObserver(function(mutations) { 
2223          if (window.__px_no_inventory_pushed) return;
2224          
2225          // Throttling más agresivo para MutationObserver (2 segundos mínimo)
2226          var now = Date.now();
2227          if (mo.__px_lastScan && (now - mo.__px_lastScan < 2000)) {
2228            return;
2229          }
2230          
2231          // Check if any of the mutations added our target elements
2232          var foundTarget = false;
2233          for (var i = 0; i < mutations.length; i++) {
2234            var mutation = mutations[i];
2235            if (mutation.addedNodes && mutation.addedNodes.length > 0) {
2236              for (var j = 0; j < mutation.addedNodes.length; j++) {
2237                var node = mutation.addedNodes[j];
2238                if (node.nodeType === 1) { // Element node
2239                  // Check if the added node is our target or contains it
2240                  if (node.id === 'no-inventory-container' || node.id === 'no-inventory' ||
2241                      node.querySelector && (node.querySelector('#no-inventory-container') || node.querySelector('#no-inventory'))) {
2242                    foundTarget = true;
2243                    break;
2244                  }
2245                }
2246              }
2247            }
2248            if (foundTarget) break;
2249          }
2250          
2251          // If target found or if enough time passed, scan
2252          if (foundTarget || !mo.__px_lastScan || Date.now() - mo.__px_lastScan > 2000) {
2253            mo.__px_lastScan = Date.now();
2254            if (foundTarget) {
2255              console.log('[pxTrack] MutationObserver detected #no-inventory-container or #no-inventory added to DOM');
2256            }
2257            scan(); 
2258          }
2259        });
2260        mo.observe(document.body, { childList: true, subtree: true });
2261      } catch(e) {
2262        console.error('[pxTrack] MutationObserver failed for no_inventory:', e);
2263      }
2264      
2265      // Additional polling specifically for DOM elements (reduced frequency to prevent rate limiting)
2266      var domPollingStart = Date.now();
2267      var domPollingTimeout = 15000; // 15 seconds
2268      var domPollingInterval = setInterval(function() {
2269        if (Date.now() - domPollingStart > domPollingTimeout) {
2270          clearInterval(domPollingInterval);
2271          return;
2272        }
2273        
2274        if (window.__px_no_inventory_pushed) {
2275          clearInterval(domPollingInterval);
2276          return;
2277        }
2278        
2279        // Quick check for target elements
2280        var noInventoryContainer = document.querySelector('#no-inventory-container');
2281        var noInventoryElement = document.querySelector('#no-inventory');
2282        if (noInventoryContainer || noInventoryElement) {
2283          console.log('[pxTrack] DOM polling detected #no-inventory-container or #no-inventory');
2284          scan();
2285          clearInterval(domPollingInterval);
2286        }
2287      }, 1000); // Reduced to 1 second to prevent rate limiting
2288      
2289      // Confirm watcher is fully initialized
2290      console.log('%c[pxTrack] ✅ no_inventory watcher fully initialized and ready', 'color: #4CAF50; font-weight: bold; font-size: 14px;');
2291      console.log('[pxTrack] wireNoInventoryWatcher() completed at:', new Date().toISOString());
2292      console.log('[pxTrack] All watchers, observers, and polling intervals are now active');
2293    }
2294
2295    // Observe availability containers to re-enrich context after dynamic updates
2296    function observeAvailabilityContainers() {
2297      try {
2298        var targets = [];
2299        var el1 = document.querySelector('#neo_cart_results_list');
2300        var el2 = document.querySelector('#neo_cart_pedido_container');
2301        if (el1) targets.push(el1);
2302        if (el2) targets.push(el2);
2303        if (!targets.length || !('MutationObserver' in window)) return;
2304        var refresh = function() {
2305          enhanceContextFromHiddenInputs();
2306          enhanceContextFromPxJson();
2307        };
2308        var mo = new MutationObserver(function(muts) {
2309          // throttle bursts
2310          if (mo.__px_scheduled) return;
2311          mo.__px_scheduled = true;
2312          setTimeout(function(){ mo.__px_scheduled = false; refresh(); }, 100);
2313        });
2314        targets.forEach(function(t){ mo.observe(t, { childList: true, subtree: true }); });
2315        // initial pass
2316        refresh();
2317      } catch (e) {}
2318    }
2319
2320    // Init after DOM ready - LOG EARLY AND OFTEN
2321    console.log('%c[pxTrack] STEP 1: Checking DOM readyState...', 'color: #9C27B0; font-weight: bold; font-size: 14px;');
2322    console.log('[pxTrack] document.readyState:', document.readyState);
2323    console.log('[pxTrack] wireNoInventoryWatcher function exists:', typeof wireNoInventoryWatcher);
2324    
2325    if (document.readyState === 'loading') {
2326      console.log('%c[pxTrack] STEP 2: DOM is loading, setting up DOMContentLoaded listener', 'color: #9C27B0; font-weight: bold;');
2327      document.addEventListener('DOMContentLoaded', function() {
2328        console.log('%c[pxTrack] STEP 3: DOMContentLoaded fired!', 'color: #9C27B0; font-weight: bold; font-size: 16px;');
2329        console.log('[pxTrack] DOMContentLoaded fired, initializing watchers...');
2330        try {
2331          wireSearchFallbacks();
2332          wireSearchEventsWhenReady();
2333          wireFormEvents();
2334          wireWhatsappClick();
2335          if (typeof wireCheckoutForm === 'function') {
2336            wireCheckoutForm();
2337          } else {
2338            console.log('[pxTrack] wireCheckoutForm() not available (may be conditional)');
2339          }
2340          wireDatePickers();
2341          enhanceContextFromHiddenInputs();
2342          enhanceContextFromPxJson();
2343          fetchSearchInfoIfNeeded();
2344          console.log('%c[pxTrack] STEP 4: About to call wireNoInventoryWatcher()...', 'color: #FF5722; font-weight: bold; font-size: 16px;');
2345          try {
2346            wireNoInventoryWatcher();
2347            console.log('%c[pxTrack] STEP 5: wireNoInventoryWatcher() completed successfully!', 'color: #4CAF50; font-weight: bold; font-size: 16px;');
2348          } catch(e) {
2349            console.error('[pxTrack] ERROR calling wireNoInventoryWatcher():', e);
2350            console.error('[pxTrack] Error stack:', e.stack);
2351          }
2352          observeAvailabilityContainers();
2353          // delayed retries in case modules/scripts load late
2354          setTimeout(function(){ enhanceContextFromHiddenInputs(); enhanceContextFromPxJson(); }, 500);
2355          setTimeout(function(){ enhanceContextFromHiddenInputs(); enhanceContextFromPxJson(); }, 1500);
2356          // checkout success detector (thank-you page) - multiple attempts with delays
2357          if (typeof maybePushFormSuccess === 'function') {
2358            maybePushFormSuccess(); // Immediate
2359            setTimeout(function(){ maybePushFormSuccess(); }, 500); // After 500ms
2360            setTimeout(function(){ maybePushFormSuccess(); }, 1500); // After 1.5s
2361            setTimeout(function(){ maybePushFormSuccess(); }, 3000); // After 3s (for slow loading pages)
2362          }
2363        } catch(e) {
2364          console.error('[pxTrack] Error during initialization:', e);
2365        }
2366      });
2367    } else {
2368      console.log('%c[pxTrack] STEP 2: DOM already ready, initializing immediately', 'color: #9C27B0; font-weight: bold;');
2369      console.log('[pxTrack] DOM already ready, initializing watchers immediately...');
2370      try {
2371        wireSearchFallbacks();
2372        wireSearchEventsWhenReady();
2373        wireFormEvents();
2374        wireWhatsappClick();
2375        if (typeof wireCheckoutForm === 'function') {
2376          wireCheckoutForm();
2377        } else {
2378          console.log('[pxTrack] wireCheckoutForm() not available (may be conditional)');
2379        }
2380        wireDatePickers();
2381        enhanceContextFromHiddenInputs();
2382        enhanceContextFromPxJson();
2383        fetchSearchInfoIfNeeded();
2384        console.log('%c[pxTrack] STEP 4: About to call wireNoInventoryWatcher()...', 'color: #FF5722; font-weight: bold; font-size: 16px;');
2385        try {
2386          wireNoInventoryWatcher();
2387          console.log('%c[pxTrack] STEP 5: wireNoInventoryWatcher() completed successfully!', 'color: #4CAF50; font-weight: bold; font-size: 16px;');
2388        } catch(e) {
2389          console.error('[pxTrack] ERROR calling wireNoInventoryWatcher():', e);
2390          console.error('[pxTrack] Error stack:', e.stack);
2391        }
2392        observeAvailabilityContainers();
2393        setTimeout(function(){ enhanceContextFromHiddenInputs(); enhanceContextFromPxJson(); }, 500);
2394        setTimeout(function(){ enhanceContextFromHiddenInputs(); enhanceContextFromPxJson(); }, 1500);
2395        // checkout success detector (thank-you page) - multiple attempts with delays
2396        if (typeof maybePushFormSuccess === 'function') {
2397          maybePushFormSuccess(); // Immediate
2398          setTimeout(function(){ maybePushFormSuccess(); }, 500); // After 500ms
2399          setTimeout(function(){ maybePushFormSuccess(); }, 1500); // After 1.5s
2400          setTimeout(function(){ maybePushFormSuccess(); }, 3000); // After 3s (for slow loading pages)
2401        }
2402      } catch(e) {
2403        console.error('[pxTrack] Error during initialization:', e);
2404        console.error('[pxTrack] Error stack:', e.stack);
2405      }
2406    }
2407  })();
2408</script>
2408
2409
2410
2411<!-- Google Tag Manager -->
2412<script>
vendor: 436 bytes, lines 2412-2426
2412
2413  (function(w, d, s, l, i) {
2414    w[l] = w[l] || [];
2415    w[l].push({
2416      'gtm.start': new Date().getTime(),
2417      event: 'gtm.js'
2418    });
2419    var f = d.getElementsByTagName(s)[0],
2420      j = d.createElement(s),
2421      dl = l != 'dataLayer' ? '&l=' + l : '';
2422    j.async = true;
2423    j.src =
2424      'https://www.googletagmanager.com/gtm.js?id=' + i + dl;
2425    f.parentNode.insertBefore(j, f);
2426  })(window, document, 'script', 'dataLayer', '
2426GTM-TPTNCNX
vendor: 4 bytes, line 2426
2426');
2427</script>
2427
2428<!-- End Google Tag Manager -->
2429
2430  <!-- Google Tag Manager -->
2431  
2431<script>
2432    (function(w, d, s, l, i) {
2433      w[l] = w[l] || [];
2434      w[l].push({
2435        'gtm.start': new Date().getTime(),
2436        event: 'gtm.js'
2437      });
2438      var f = d.getElementsByTagName(s)[0],
2439        j = d.createElement(s),
2440        dl = l != 'dataLayer' ? '&l=' + l : '';
2441      j.async = true;
2442      j.src =
2443        'https://www.googletagmanager.com/gtm.js?id=' + i + dl;
2444      f.parentNode.insertBefore(j, f);
2445    })(window, document, 'script', 'dataLayer', 'AW-824953249');
2446  </script>
2446
2447  <!-- End Google Tag Manager -->
2448
2449
2450
2451</head>
2452
2453<body>
2454	<!-- Google Tag Manager (noscript) -->
vendor: 69 bytes, lines 2454-2455
2454
2455	<noscript><iframe src="https://www.googletagmanager.com/ns.html?id=
2455GTM-TPTNCNX
vendor: 84 bytes, lines 2455-2456
2455" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
2456	
2456<!-- End Google Tag Manager (noscript) -->
2457
2458			<!-- Google Tag Manager (noscript) -->
2459		<noscript><iframe src="https://www.googletagmanager.com/ns.html?id=AW-824953249" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
2460		<!-- End Google Tag Manager (noscript) -->
2461	
2462	
2463
2464	<div class="neo_loader">
2465		<style>
2466			.linear-activity {
2467				overflow: hidden;
2468				width: 100%;
2469				height: 4px;
2470				background-color: #B3E5FC;
2471				margin: 0
2472			}
2473
2474			.determinate {
2475				position: relative;
2476				max-width: 100%;
2477				height: 100%;
2478				-webkit-transition: width .5s ease-out 1s;
2479				-moz-transition: width .5s ease-out 1s;
2480				-o-transition: width .5s ease-out 1s;
2481				transition: width .5s ease-out 1s;
2482				background-color: #03A9F4
2483			}
2484
2485			.indeterminate {
2486				position: relative;
2487				width: 100%;
2488				height: 100%
2489			}
2490
2491			.indeterminate:after,
2492			.indeterminate:before {
2493				content: '';
2494				position: absolute;
2495				height: 100%
2496			}
2497
2498			.indeterminate:before {
2499				background-color: #03A9F4;
2500				animation: indeterminate_first 1.5s infinite ease-out
2501			}
2502
2503			.indeterminate:after {
2504				background-color: #4FC3F7;
2505				animation: indeterminate_second 1.5s infinite ease-in
2506			}
2507
2508			@keyframes indeterminate_first {
2509				0% {
2510					left: -100%;
2511					width: 100%
2512				}
2513
2514				100% {
2515					left: 100%;
2516					width: 10%
2517				}
2518			}
2519
2520			@keyframes indeterminate_second {
2521				0% {
2522					left: -150%;
2523					width: 100%
2524				}
2525
2526				100% {
2527					left: 100%;
2528					width: 10%
2529				}
2530			}
2531
2532			.neo_loader {
2533				position: fixed;
2534				top: 0;
2535				left: 0;
2536				right: 0;
2537				bottom: 0;
2538				z-index: 9999999999999999999999;
2539				background: #fff;
2540				height: 100vh;
2541				width: 100vw;
2542				display: flex;
2543				flex-direction: column;
2544				justify-content: center;
2545				align-items: center;
2546				padding: 40px;
2547				box-sizing: border-box;
2548				text-align: center;
2549			}
2550
2551			.neo_loader .loaderline {
2552				width: 400px;
2553				margin: 40px;
2554				max-width: 90vw
2555			}
2556
2557			.loadername {
2558				color: #bbb;
2559				font-family: Helvetica, Arial, sans-serif;
2560				margin: 10px auto 15px
2561			}
2562
2563			.linear-activity.gray {
2564				background-color: #eaeaea
2565			}
2566
2567			.gray .indeterminate:after,
2568			.gray .indeterminate:before {
2569				background-color: #bbb
2570			}
2571
2572			.neo_megacontainer {
2573				display: none
2574			}
2575		</style>
2576
2577						<img loading="lazy" style=" max-height: 200px; max-width: 200px; object-fit: contain; margin-bottom: 20px;" src="https://files-p.pxsol.com/13307/company/library/user/5126930364ea8a9a40b647af1c2cabae351ef5e772.png" alt="San Remo Hoteles">
2578				<div class="loadername">
2579			San Remo Hoteles		</div>
2580		<div class="loaderline">
2581			<div class="linear-activity gray">
2582				<div class="indeterminate"></div>
2583			</div>
2584		</div>
2585	</div>
2586
2587	<div class="neo_megacontainer index">
2588
2589
2590
2591		
2592
2593<div class="main_wraper_top" id="main_wraper_top">
2594    
2595
2596<div class="neo_template_container neo_template_ computer">
2597
2598
2599<div id='amerian_supratop'  class="amerian_top_container diplo_top_container flex flex-m-center"  ><div id='diploTopContainer'  class="flex flex-s-center amerian_main_top"  ><a  class="diplo_top_logo padding-5 padding-left-20 fullh"   href="/pt/" target=""> <img loading="lazy"  class="diplo_top_logo_img fullh"   lazy-src="https://files-p.pxsol.com/13307/company/library/user/5126930364ea8a9a40b647af1c2cabae351ef5e772.png" alt="San Remo Hoteles" > </image></a><div id='diploMenuTop'  class="amerian_menu_container flex-column flex-grow fullh padding-left-20 padding-right-20"  ><div  class="amerian_supramenu flex flex-s-center padding-20"  ><div  class='diplo_idiomas fullh' ><div class='pxModule_include  ModuloWrap_idiomas  '><div id="top_menu">
2600
2601		<div id="contenedor_top">
2602		<div id="menu_div_top">
2603			<div class="nav_top flex flex-s-center">
2604
2605				
2606				<div class="selectidiomaymoneda">
2607					<div class="currency_module_container" >
2608						<input type="hidden" id='ModuloIdioma_DefaultCurrency' value="ARS">
2609						<input type="hidden" id="ModuloIdioma_BookingEngineVersion" value="7">
2610						<div class="texto_idiomaymoneda">
2611							Moneda - </div>
2612						<div id="deploymoneda" class='cursornormal';>
2613															<div class="monedaactual hidden" cur="ARS">
2614									ARS $								</div>
2615													</div>
2616											</div>
2617					<div class="texto_idiomaymoneda">
2618						Idioma - </div>
2619
2620					
2621						<div id="deployidioma" class="deployidioma">
2622															<img alt="Bandera" style="object-fit: contain;" class="bandera" src="/css/images/bnd_pt.png" height="24px" width="24px" />
2623													</div>
2624
2625					
2626					<div id="idiomasshow" class="idiomasshow">
2627						<div class="titlemenujs">
2628							Elija el idioma de su preferencia						</div>
2629															<div class="idiomaitem">
2630																				<a class="idiomalink" lng="es" href="/?lng=es" ignorar-vista="true" style="width: 100%;">
2631																							<img class="bandera" style="object-fit: contain;" src="/css/images/bnd_es.png" height="20" width="20" alt="es" />
2632																						<span class="nameidioma">
2633												Español											</span>
2634										</a>
2635									</div>
2636															<div class="idiomaitem">
2637																				<a class="idiomalink" lng="en" href="/en/?lng=en" ignorar-vista="true" style="width: 100%;">
2638																							<img class="bandera" style="object-fit: contain;" src="/css/images/bnd_en.png" height="20" width="20" alt="en" />
2639																						<span class="nameidioma">
2640												English											</span>
2641										</a>
2642									</div>
2643															<div class="idiomaitem">
2644																				<a class="idiomalink" lng="fr" href="/fr/?lng=fr" ignorar-vista="true" style="width: 100%;">
2645																							<img class="bandera" style="object-fit: contain;" src="/css/images/bnd_fr.png" height="20" width="20" alt="fr" />
2646																						<span class="nameidioma">
2647												Français											</span>
2648										</a>
2649									</div>
2650											</div>
2651				</div>
2652
2653				
2654    <a href="https://app.reservadirecto.com/auth_web?return_url=https%3A%2F%2Fwww.sanremohoteles.com%2Fauthorize.php%3Fredirect_url%3Dhttps%253A%252F%252Fwww.sanremohoteles.com%252Fpt%252F%253Flng%253Dpt&origin_pos=Sanremohoteles" ignorar-vista="true" class="btn_sesion cta_webcheckin_px margin-sm-right-10" style="text-decoration: none">
2655        <i class="mdi mdi-account" aria-hidden="true"></i>
2656        <span>
2657            Iniciar Sesión        </span>
2658    </a>
2659
2660    
2660<script src="https://accounts.google.com/gsi/intermediate"></script>
2660
2661    
2661<script src="https://accounts.google.com/gsi/intermediatesupport"></script>
2661
2662
2663            <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.sanremohoteles.com&amp;redirect_url=https%3A%2F%2Fwww.sanremohoteles.com%2Fpt%2F%3Flng%3Dpt&amp;pos=Sanremohoteles">
2664    </div>
2665
2666    <style>
2667        .neo_login_incentive {
2668            position: fixed;
2669            top: 10rem;
2670            right: calc(1rem + 10px);
2671            width: 375px;
2672            text-align: left;
2673            z-index: 1;
2674        }
2675
2676        .neo_login_incentive>div {
2677            margin: 0;
2678            border-radius: 10px;
2679        }
2680
2681        iframe#onetap_google_intermediate_iframe,
2682        #credential_picker_container,
2683        #credential_picker_container iframe,
2684        iframe[src*="google_one_tap_intermediate_iframe"] {
2685            top: 18.5rem !important;
2686            right: 1rem !important;
2687        }
2688
2689        @media only screen and (max-width: 468px) {
2690            .neo_login_incentive {
2691                display: none !important;
2692                bottom: 0rem;
2693                top: initial;
2694                left: 0;
2695                right: 0;
2696                position: fixed;
2697                width: 100%;
2698                text-transform: initial;
2699                letter-spacing: normal;
2700                font-weight: initial;
2701            }
2702
2703            iframe#onetap_google_intermediate_iframe,
2704            #credential_picker_container,
2705            #credential_picker_container iframe,
2706            iframe[src*="google_one_tap_intermediate_iframe"] {
2707                top: initial !important;
2708                bottom: 5rem !important;
2709                right: initial !important;
2710                z-index: 1;
2711            }
2712        }
2713    </style>
2714    
2714<script>
2715        (function() {
2716            var repositioned = false;
2717            var attempts = 0;
2718            var timer = setInterval(function() {
2719                if (repositioned || ++attempts > 60) { clearInterval(timer); return; }
2720                var el = document.getElementById('credential_picker_container')
2721                      || document.querySelector('iframe[src*="google_one_tap_intermediate_iframe"]')
2722                      || document.getElementById('onetap_google_intermediate_iframe');
2723                if (el) {
2724                    var target = (el.tagName === 'IFRAME' && el.parentElement && el.parentElement.style.position === 'fixed') ? el.parentElement : el;
2725                    var isMobile = window.innerWidth <= 468;
2726                    if (isMobile) {
2727                        target.style.setProperty('top', 'initial', 'important');
2728                        target.style.setProperty('bottom', '5rem', 'important');
2729                        target.style.setProperty('right', 'initial', 'important');
2730                    } else {
2731                        target.style.setProperty('top', '18.5rem', 'important');
2732                        target.style.setProperty('right', '1rem', 'important');
2733                    }
2734                    repositioned = true;
2735                    clearInterval(timer);
2736                }
2737            }, 100);
2738        })();
2739    </script>
2739
2740
2741			</div>
2742		</div>
2743	</div>
2744
2745</div>
2746</div></div></div></div><div  class="diplo_cta padding-20 toggle_search fullh heightplus1"   style='display: none'><i  class='mdi mdi-room-service-outline margin-right-10 fontsize-20px' ></i><div  class=""  >Reserve Ahora</div></div></div></div> 
2747
2748
2749<div id='mainTopSearch'  class="diplo_top_search active_search"  ></div> 
2750
2751
2752<div id='searchOverlay'  class="search_overlay"  ></div> 
2753
2754</div>
2755
2756</div>
2757		<div class="main_wraper_content" id="main_wraper_content">
2758			
2759
2760<div class="neo_template_container neo_template_ computer">
2761
2762
2763<div id='introHero'  class="full diplo_main_heroimg flex flex-s-end flex-m-center"  ><div  class="diplo_main_herotxt flex flex-center fullh flex-column flex-center full padding-xs-top-60 padding-lg-top-20"  ><div  class="diplo_heading diplo_white fontsize-35px fontsize-lg-4em diplo_hero_heading hero_max"  >Bienvenidos a San Remo Hoteles</div><div  class="margin-top-20 margin-bottom-40"  ></div><div id='mainSearchHero'  class="chdm_search_hero"  ><div  class=''  LocationSearch='true'>
2764			  <div class="neo_template_block neo_marketplace_buscador_v3 pxModule_include ModuloWrap_marketplace_buscador_v3" id="marketplace_buscador_v3" >
2765			  
2766		
2767		<div class="px-mk-buscador-container  buscar_lp ">
2768
2769			
2770
2771			<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">
2772				<label class="error px-mk-generalerror nodisplay">Ha ocurrido un error, por favor intente nuevamente</label>
2773													<div class="px-sm-inputcontainer px-mk-fixedwidth-inputcontainer-max">
2774						<label for="CountryListID" class="px-mk-inputicon ignoreclick">
2775							<?xml version="1.0" encoding="iso-8859-1"?>
2776<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
2777<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"
2778	 viewBox="0 0 373.12 373.12" style="enable-background:new 0 0 373.12 373.12;" xml:space="preserve">
2779<g>
2780	<g>
2781		<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
2782			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
2783			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
2784			C234.667,191.68,191.68,234.667,138.667,234.667z"/>
2785	</g>
2786</g>
2787<g>
2788</g>
2789<g>
2790</g>
2791<g>
2792</g>
2793<g>
2794</g>
2795<g>
2796</g>
2797<g>
2798</g>
2799<g>
2800</g>
2801<g>
2802</g>
2803<g>
2804</g>
2805<g>
2806</g>
2807<g>
2808</g>
2809<g>
2810</g>
2811<g>
2812</g>
2813<g>
2814</g>
2815<g>
2816</g>
2817</svg>
2818						</label>
2819						<div class="px-mk-locationautocomplete">
2820							<input disabled autocomplete="off" type="search" style='font-size: 16px !important;' name="LocationSearch" id="LocationSearch" maxlength="200" placeholder="¿A dónde vas?" value="" data-testid="location-search">
2821							<div class="px-mk-locationdropdown">
2822								<div class="px-mk-locationitem px-mk-everylocation" location-id="">
2823									<div class="px-mk-locationimg">
2824										<?xml version="1.0" encoding="iso-8859-1"?>
2825<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
2826<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
2827<svg version="1.1" id="Capa_1" 
2828	xmlns="http://www.w3.org/2000/svg" 
2829	xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="30px" height="30px" viewBox="0 0 510 510" style="enable-background:new 0 0 510 510;" xml:space="preserve">
2830	<g>
2831		<g id="public">
2832			<path d="M255,0C114.75,0,0,114.75,0,255s114.75,255,255,255s255-114.75,255-255S395.25,0,255,0z M229.5,456.45
2833			C130.05,443.7,51,357,51,255c0-15.3,2.55-30.6,5.1-45.9l122.4,122.4V357c0,28.05,22.95,51,51,51V456.45z M405.45,392.7
2834			C397.8,372.3,379.95,357,357,357h-25.5v-76.5c0-15.3-10.2-25.5-25.5-25.5H153v-51h51c15.3,0,25.5-10.2,25.5-25.5v-51h51
2835			c28.05,0,51-22.95,51-51V66.3C405.45,96.9,459,170.85,459,255C459,308.55,438.6,357,405.45,392.7z"/>
2836		</g>
2837	</g>
2838</svg>
2839									</div>
2840									<div class="px-mk-locationtxt">
2841										Buscar en todas las ubicaciones									</div>
2842								</div>
2843																											<div class="px-mk-locationitem" style="display:none" location-plaza="" location-id="Argentina">
2844											<div class="px-mk-locationimg">
2845												<?xml version="1.0" encoding="iso-8859-1"?>
2846<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
2847<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
2848<svg version="1.1" id="Capa_1" 
2849	xmlns="http://www.w3.org/2000/svg" 
2850	xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="30px" height="30px" viewBox="0 0 510 510" style="enable-background:new 0 0 510 510;" xml:space="preserve">
2851	<g>
2852		<g id="public">
2853			<path d="M255,0C114.75,0,0,114.75,0,255s114.75,255,255,255s255-114.75,255-255S395.25,0,255,0z M229.5,456.45
2854			C130.05,443.7,51,357,51,255c0-15.3,2.55-30.6,5.1-45.9l122.4,122.4V357c0,28.05,22.95,51,51,51V456.45z M405.45,392.7
2855			C397.8,372.3,379.95,357,357,357h-25.5v-76.5c0-15.3-10.2-25.5-25.5-25.5H153v-51h51c15.3,0,25.5-10.2,25.5-25.5v-51h51
2856			c28.05,0,51-22.95,51-51V66.3C405.45,96.9,459,170.85,459,255C459,308.55,438.6,357,405.45,392.7z"/>
2857		</g>
2858	</g>
2859</svg>
2860											</div>
2861											<div class="px-mk-locationtxt">
2862												Argentina											</div>
2863										</div>
2864																		<div class="px-mk-locationitem" style="display:none" location-plaza="" location-id="Santiago del Estero, Argentina">
2865											<div class="px-mk-locationimg">
2866												<?xml version="1.0" encoding="iso-8859-1"?>
2867<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
2868<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
2869<svg version="1.1" id="Capa_1" 
2870	xmlns="http://www.w3.org/2000/svg" 
2871	xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="30px" height="30px" viewBox="0 0 510 510" style="enable-background:new 0 0 510 510;" xml:space="preserve">
2872	<g>
2873		<g id="public">
2874			<path d="M255,0C114.75,0,0,114.75,0,255s114.75,255,255,255s255-114.75,255-255S395.25,0,255,0z M229.5,456.45
2875			C130.05,443.7,51,357,51,255c0-15.3,2.55-30.6,5.1-45.9l122.4,122.4V357c0,28.05,22.95,51,51,51V456.45z M405.45,392.7
2876			C397.8,372.3,379.95,357,357,357h-25.5v-76.5c0-15.3-10.2-25.5-25.5-25.5H153v-51h51c15.3,0,25.5-10.2,25.5-25.5v-51h51
2877			c28.05,0,51-22.95,51-51V66.3C405.45,96.9,459,170.85,459,255C459,308.55,438.6,357,405.45,392.7z"/>
2878		</g>
2879	</g>
2880</svg>
2881											</div>
2882											<div class="px-mk-locationtxt">
2883												Santiago del Estero, Argentina											</div>
2884										</div>
2885																		<div class="px-mk-locationitem" style="display:none" location-plaza="" location-id="Termas de Río Hondo, Santiago del Estero, Argentina">
2886											<div class="px-mk-locationimg">
2887												<?xml version="1.0" encoding="iso-8859-1"?>
2888<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
2889<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
2890<svg version="1.1" id="Capa_1" 
2891	xmlns="http://www.w3.org/2000/svg" 
2892	xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="30px" height="30px" viewBox="0 0 510 510" style="enable-background:new 0 0 510 510;" xml:space="preserve">
2893	<g>
2894		<g id="public">
2895			<path d="M255,0C114.75,0,0,114.75,0,255s114.75,255,255,255s255-114.75,255-255S395.25,0,255,0z M229.5,456.45
2896			C130.05,443.7,51,357,51,255c0-15.3,2.55-30.6,5.1-45.9l122.4,122.4V357c0,28.05,22.95,51,51,51V456.45z M405.45,392.7
2897			C397.8,372.3,379.95,357,357,357h-25.5v-76.5c0-15.3-10.2-25.5-25.5-25.5H153v-51h51c15.3,0,25.5-10.2,25.5-25.5v-51h51
2898			c28.05,0,51-22.95,51-51V66.3C405.45,96.9,459,170.85,459,255C459,308.55,438.6,357,405.45,392.7z"/>
2899		</g>
2900	</g>
2901</svg>
2902											</div>
2903											<div class="px-mk-locationtxt">
2904												Termas de Río Hondo, Santiago del Estero, Argentina											</div>
2905										</div>
2906																		<div class="px-mk-locationitem" style="display:none" location-plaza="" location-id="Provincia de Buenos Aires, Argentina">
2907											<div class="px-mk-locationimg">
2908												<?xml version="1.0" encoding="iso-8859-1"?>
2909<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
2910<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
2911<svg version="1.1" id="Capa_1" 
2912	xmlns="http://www.w3.org/2000/svg" 
2913	xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="30px" height="30px" viewBox="0 0 510 510" style="enable-background:new 0 0 510 510;" xml:space="preserve">
2914	<g>
2915		<g id="public">
2916			<path d="M255,0C114.75,0,0,114.75,0,255s114.75,255,255,255s255-114.75,255-255S395.25,0,255,0z M229.5,456.45
2917			C130.05,443.7,51,357,51,255c0-15.3,2.55-30.6,5.1-45.9l122.4,122.4V357c0,28.05,22.95,51,51,51V456.45z M405.45,392.7
2918			C397.8,372.3,379.95,357,357,357h-25.5v-76.5c0-15.3-10.2-25.5-25.5-25.5H153v-51h51c15.3,0,25.5-10.2,25.5-25.5v-51h51
2919			c28.05,0,51-22.95,51-51V66.3C405.45,96.9,459,170.85,459,255C459,308.55,438.6,357,405.45,392.7z"/>
2920		</g>
2921	</g>
2922</svg>
2923											</div>
2924											<div class="px-mk-locationtxt">
2925												Provincia de Buenos Aires, Argentina											</div>
2926										</div>
2927																		<div class="px-mk-locationitem" style="display:none" location-plaza="" location-id="Mar del Plata, Provincia de Buenos Aires, Argentina">
2928											<div class="px-mk-locationimg">
2929												<?xml version="1.0" encoding="iso-8859-1"?>
2930<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
2931<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
2932<svg version="1.1" id="Capa_1" 
2933	xmlns="http://www.w3.org/2000/svg" 
2934	xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="30px" height="30px" viewBox="0 0 510 510" style="enable-background:new 0 0 510 510;" xml:space="preserve">
2935	<g>
2936		<g id="public">
2937			<path d="M255,0C114.75,0,0,114.75,0,255s114.75,255,255,255s255-114.75,255-255S395.25,0,255,0z M229.5,456.45
2938			C130.05,443.7,51,357,51,255c0-15.3,2.55-30.6,5.1-45.9l122.4,122.4V357c0,28.05,22.95,51,51,51V456.45z M405.45,392.7
2939			C397.8,372.3,379.95,357,357,357h-25.5v-76.5c0-15.3-10.2-25.5-25.5-25.5H153v-51h51c15.3,0,25.5-10.2,25.5-25.5v-51h51
2940			c28.05,0,51-22.95,51-51V66.3C405.45,96.9,459,170.85,459,255C459,308.55,438.6,357,405.45,392.7z"/>
2941		</g>
2942	</g>
2943</svg>
2944											</div>
2945											<div class="px-mk-locationtxt">
2946												Mar del Plata, Provincia de Buenos Aires, Argentina											</div>
2947										</div>
2948																		<div class="px-mk-locationitem" style="display:none" location-plaza="" location-id="Ciudad Autónoma de Buenos Aires, Argentina">
2949											<div class="px-mk-locationimg">
2950												<?xml version="1.0" encoding="iso-8859-1"?>
2951<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
2952<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
2953<svg version="1.1" id="Capa_1" 
2954	xmlns="http://www.w3.org/2000/svg" 
2955	xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="30px" height="30px" viewBox="0 0 510 510" style="enable-background:new 0 0 510 510;" xml:space="preserve">
2956	<g>
2957		<g id="public">
2958			<path d="M255,0C114.75,0,0,114.75,0,255s114.75,255,255,255s255-114.75,255-255S395.25,0,255,0z M229.5,456.45
2959			C130.05,443.7,51,357,51,255c0-15.3,2.55-30.6,5.1-45.9l122.4,122.4V357c0,28.05,22.95,51,51,51V456.45z M405.45,392.7
2960			C397.8,372.3,379.95,357,357,357h-25.5v-76.5c0-15.3-10.2-25.5-25.5-25.5H153v-51h51c15.3,0,25.5-10.2,25.5-25.5v-51h51
2961			c28.05,0,51-22.95,51-51V66.3C405.45,96.9,459,170.85,459,255C459,308.55,438.6,357,405.45,392.7z"/>
2962		</g>
2963	</g>
2964</svg>
2965											</div>
2966											<div class="px-mk-locationtxt">
2967												Ciudad Autónoma de Buenos Aires, Argentina											</div>
2968										</div>
2969																		<div class="px-mk-locationitem" style="display:none" location-plaza="" location-id="Comuna 1, Ciudad Autónoma de Buenos Aires, Argentina">
2970											<div class="px-mk-locationimg">
2971												<?xml version="1.0" encoding="iso-8859-1"?>
2972<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
2973<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
2974<svg version="1.1" id="Capa_1" 
2975	xmlns="http://www.w3.org/2000/svg" 
2976	xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="30px" height="30px" viewBox="0 0 510 510" style="enable-background:new 0 0 510 510;" xml:space="preserve">
2977	<g>
2978		<g id="public">
2979			<path d="M255,0C114.75,0,0,114.75,0,255s114.75,255,255,255s255-114.75,255-255S395.25,0,255,0z M229.5,456.45
2980			C130.05,443.7,51,357,51,255c0-15.3,2.55-30.6,5.1-45.9l122.4,122.4V357c0,28.05,22.95,51,51,51V456.45z M405.45,392.7
2981			C397.8,372.3,379.95,357,357,357h-25.5v-76.5c0-15.3-10.2-25.5-25.5-25.5H153v-51h51c15.3,0,25.5-10.2,25.5-25.5v-51h51
2982			c28.05,0,51-22.95,51-51V66.3C405.45,96.9,459,170.85,459,255C459,308.55,438.6,357,405.45,392.7z"/>
2983		</g>
2984	</g>
2985</svg>
2986											</div>
2987											<div class="px-mk-locationtxt">
2988												Comuna 1, Ciudad Autónoma de Buenos Aires, Argentina											</div>
2989										</div>
2990																		<div class="px-mk-locationitem" style="display:none" location-plaza="" location-id="Buenos Aires, Argentina">
2991											<div class="px-mk-locationimg">
2992												<?xml version="1.0" encoding="iso-8859-1"?>
2993<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
2994<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
2995<svg version="1.1" id="Capa_1" 
2996	xmlns="http://www.w3.org/2000/svg" 
2997	xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="30px" height="30px" viewBox="0 0 510 510" style="enable-background:new 0 0 510 510;" xml:space="preserve">
2998	<g>
2999		<g id="public">
3000			<path d="M255,0C114.75,0,0,114.75,0,255s114.75,255,255,255s255-114.75,255-255S395.25,0,255,0z M229.5,456.45
3001			C130.05,443.7,51,357,51,255c0-15.3,2.55-30.6,5.1-45.9l122.4,122.4V357c0,28.05,22.95,51,51,51V456.45z M405.45,392.7
3002			C397.8,372.3,379.95,357,357,357h-25.5v-76.5c0-15.3-10.2-25.5-25.5-25.5H153v-51h51c15.3,0,25.5-10.2,25.5-25.5v-51h51
3003			c28.05,0,51-22.95,51-51V66.3C405.45,96.9,459,170.85,459,255C459,308.55,438.6,357,405.45,392.7z"/>
3004		</g>
3005	</g>
3006</svg>
3007											</div>
3008											<div class="px-mk-locationtxt">
3009												Buenos Aires, Argentina											</div>
3010										</div>
3011																		<div class="px-mk-locationitem" style="display:none" location-plaza="" location-id="Cariló, Buenos Aires, Buenos Aires, Argentina">
3012											<div class="px-mk-locationimg">
3013												<?xml version="1.0" encoding="iso-8859-1"?>
3014<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
3015<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
3016<svg version="1.1" id="Capa_1" 
3017	xmlns="http://www.w3.org/2000/svg" 
3018	xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="30px" height="30px" viewBox="0 0 510 510" style="enable-background:new 0 0 510 510;" xml:space="preserve">
3019	<g>
3020		<g id="public">
3021			<path d="M255,0C114.75,0,0,114.75,0,255s114.75,255,255,255s255-114.75,255-255S395.25,0,255,0z M229.5,456.45
3022			C130.05,443.7,51,357,51,255c0-15.3,2.55-30.6,5.1-45.9l122.4,122.4V357c0,28.05,22.95,51,51,51V456.45z M405.45,392.7
3023			C397.8,372.3,379.95,357,357,357h-25.5v-76.5c0-15.3-10.2-25.5-25.5-25.5H153v-51h51c15.3,0,25.5-10.2,25.5-25.5v-51h51
3024			c28.05,0,51-22.95,51-51V66.3C405.45,96.9,459,170.85,459,255C459,308.55,438.6,357,405.45,392.7z"/>
3025		</g>
3026	</g>
3027</svg>
3028											</div>
3029											<div class="px-mk-locationtxt">
3030												Cariló, Buenos Aires, Buenos Aires, Argentina											</div>
3031										</div>
3032																		<div class="px-mk-locationitem" style="display:none" location-plaza="" location-id="Mar de Ajó, Provincia de Buenos Aires, Argentina">
3033											<div class="px-mk-locationimg">
3034						
3034						<?xml version="1.0" encoding="iso-8859-1"?>
3035<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
3036<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
3037<svg version="1.1" id="Capa_1" 
3038	xmlns="http://www.w3.org/2000/svg" 
3039	xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="30px" height="30px" viewBox="0 0 510 510" style="enable-background:new 0 0 510 510;" xml:space="preserve">
3040	<g>
3041		<g id="public">
3042			<path d="M255,0C114.75,0,0,114.75,0,255s114.75,255,255,255s255-114.75,255-255S395.25,0,255,0z M229.5,456.45
3043			C130.05,443.7,51,357,51,255c0-15.3,2.55-30.6,5.1-45.9l122.4,122.4V357c0,28.05,22.95,51,51,51V456.45z M405.45,392.7
3044			C397.8,372.3,379.95,357,357,357h-25.5v-76.5c0-15.3-10.2-25.5-25.5-25.5H153v-51h51c15.3,0,25.5-10.2,25.5-25.5v-51h51
3045			c28.05,0,51-22.95,51-51V66.3C405.45,96.9,459,170.85,459,255C459,308.55,438.6,357,405.45,392.7z"/>
3046		</g>
3047	</g>
3048</svg>
3049											</div>
3050											<div class="px-mk-locationtxt">
3051												Mar de Ajó, Provincia de Buenos Aires, Argentina											</div>
3052										</div>
3053																		<div class="px-mk-locationitem" style="display:none" location-plaza="" location-id="La Costa, Provincia de Buenos Aires, Argentina">
3054											<div class="px-mk-locationimg">
3055												<?xml version="1.0" encoding="iso-8859-1"?>
3056<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
3057<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
3058<svg version="1.1" id="Capa_1" 
3059	xmlns="http://www.w3.org/2000/svg" 
3060	xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="30px" height="30px" viewBox="0 0 510 510" style="enable-background:new 0 0 510 510;" xml:space="preserve">
3061	<g>
3062		<g id="public">
3063			<path d="M255,0C114.75,0,0,114.75,0,255s114.75,255,255,255s255-114.75,255-255S395.25,0,255,0z M229.5,456.45
3064			C130.05,443.7,51,357,51,255c0-15.3,2.55-30.6,5.1-45.9l122.4,122.4V357c0,28.05,22.95,51,51,51V456.45z M405.45,392.7
3065			C397.8,372.3,379.95,357,357,357h-25.5v-76.5c0-15.3-10.2-25.5-25.5-25.5H153v-51h51c15.3,0,25.5-10.2,25.5-25.5v-51h51
3066			c28.05,0,51-22.95,51-51V66.3C405.45,96.9,459,170.85,459,255C459,308.55,438.6,357,405.45,392.7z"/>
3067		</g>
3068	</g>
3069</svg>
3070											</div>
3071											<div class="px-mk-locationtxt">
3072												La Costa, Provincia de Buenos Aires, Argentina											</div>
3073										</div>
3074																		<div class="px-mk-locationitem" style="display:none" location-plaza="" location-id="San Clemente del Tuyu, Provincia de Buenos Aires, Argentina">
3075											<div class="px-mk-locationimg">
3076												<?xml version="1.0" encoding="iso-8859-1"?>
3077<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
3078<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
3079<svg version="1.1" id="Capa_1" 
3080	xmlns="http://www.w3.org/2000/svg" 
3081	xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="30px" height="30px" viewBox="0 0 510 510" style="enable-background:new 0 0 510 510;" xml:space="preserve">
3082	<g>
3083		<g id="public">
3084			<path d="M255,0C114.75,0,0,114.75,0,255s114.75,255,255,255s255-114.75,255-255S395.25,0,255,0z M229.5,456.45
3085			C130.05,443.7,51,357,51,255c0-15.3,2.55-30.6,5.1-45.9l122.4,122.4V357c0,28.05,22.95,51,51,51V456.45z M405.45,392.7
3086			C397.8,372.3,379.95,357,357,357h-25.5v-76.5c0-15.3-10.2-25.5-25.5-25.5H153v-51h51c15.3,0,25.5-10.2,25.5-25.5v-51h51
3087			c28.05,0,51-22.95,51-51V66.3C405.45,96.9,459,170.85,459,255C459,308.55,438.6,357,405.45,392.7z"/>
3088		</g>
3089	</g>
3090</svg>
3091											</div>
3092											<div class="px-mk-locationtxt">
3093												San Clemente del Tuyu, Provincia de Buenos Aires, Argentina											</div>
3094										</div>
3095																		<div class="px-mk-locationitem" style="display:none" location-plaza="" location-id="Pinamar, Provincia de Buenos Aires, Argentina">
3096											<div class="px-mk-locationimg">
3097												<?xml version="1.0" encoding="iso-8859-1"?>
3098<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
3099<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
3100<svg version="1.1" id="Capa_1" 
3101	xmlns="http://www.w3.org/2000/svg" 
3102	xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="30px" height="30px" viewBox="0 0 510 510" style="enable-background:new 0 0 510 510;" xml:space="preserve">
3103	<g>
3104		<g id="public">
3105			<path d="M255,0C114.75,0,0,114.75,0,255s114.75,255,255,255s255-114.75,255-255S395.25,0,255,0z M229.5,456.45
3106			C130.05,443.7,51,357,51,255c0-15.3,2.55-30.6,5.1-45.9l122.4,122.4V357c0,28.05,22.95,51,51,51V456.45z M405.45,392.7
3107			C397.8,372.3,379.95,357,357,357h-25.5v-76.5c0-15.3-10.2-25.5-25.5-25.5H153v-51h51c15.3,0,25.5-10.2,25.5-25.5v-51h51
3108			c28.05,0,51-22.95,51-51V66.3C405.45,96.9,459,170.85,459,255C459,308.55,438.6,357,405.45,392.7z"/>
3109		</g>
3110	</g>
3111</svg>
3112											</div>
3113											<div class="px-mk-locationtxt">
3114												Pinamar, Provincia de Buenos Aires, Argentina											</div>
3115										</div>
3116																		<div class="px-mk-locationitem" style="display:none" location-plaza="" location-id="Ostende, Provincia de Buenos Aires, Argentina">
3117											<div class="px-mk-locationimg">
3118												<?xml version="1.0" encoding="iso-8859-1"?>
3119<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
3120<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
3121<svg version="1.1" id="Capa_1" 
3122	xmlns="http://www.w3.org/2000/svg" 
3123	xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="30px" height="30px" viewBox="0 0 510 510" style="enable-background:new 0 0 510 510;" xml:space="preserve">
3124	<g>
3125		<g id="public">
3126			<path d="M255,0C114.75,0,0,114.75,0,255s114.75,255,255,255s255-114.75,255-255S395.25,0,255,0z M229.5,456.45
3127			C130.05,443.7,51,357,51,255c0-15.3,2.55-30.6,5.1-45.9l122.4,122.4V357c0,28.05,22.95,51,51,51V456.45z M405.45,392.7
3128			C397.8,372.3,379.95,357,357,357h-25.5v-76.5c0-15.3-10.2-25.5-25.5-25.5H153v-51h51c15.3,0,25.5-10.2,25.5-25.5v-51h51
3129			c28.05,0,51-22.95,51-51V66.3C405.45,96.9,459,170.85,459,255C459,308.55,438.6,357,405.45,392.7z"/>
3130		</g>
3131	</g>
3132</svg>
3133											</div>
3134											<div class="px-mk-locationtxt">
3135												Ostende, Provincia de Buenos Aires, Argentina											</div>
3136										</div>
3137																		<div class="px-mk-locationitem" style="display:none" location-plaza="" location-id="Villa Gesell, Provincia de Buenos Aires, Argentina">
3138											<div class="px-mk-locationimg">
3139												<?xml version="1.0" encoding="iso-8859-1"?>
3140<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
3141<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
3142<svg version="1.1" id="Capa_1" 
3143	xmlns="http://www.w3.org/2000/svg" 
3144	xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="30px" height="30px" viewBox="0 0 510 510" style="enable-background:new 0 0 510 510;" xml:space="preserve">
3145	<g>
3146		<g id="public">
3147			<path d="M255,0C114.75,0,0,114.75,0,255s114.75,255,255,255s255-114.75,255-255S395.25,0,255,0z M229.5,456.45
3148			C130.05,443.7,51,357,51,255c0-15.3,2.55-30.6,5.1-45.9l122.4,122.4V357c0,28.05,22.95,51,51,51V456.45z M405.45,392.7
3149			C397.8,372.3,379.95,357,357,357h-25.5v-76.5c0-15.3-10.2-25.5-25.5-25.5H153v-51h51c15.3,0,25.5-10.2,25.5-25.5v-51h51
3150			c28.05,0,51-22.95,51-51V66.3C405.45,96.9,459,170.85,459,255C459,308.55,438.6,357,405.45,392.7z"/>
3151		</g>
3152	</g>
3153</svg>
3154											</div>
3155											<div class="px-mk-locationtxt">
3156												Villa Gesell, Provincia de Buenos Aires, Argentina											</div>
3157										</div>
3158								
3159							</div>
3160							<input name="LocationID" id="LocationID" hidden value="">
3161						</div>
3162
3163					</div>
3164								
3165
3166				
3167				
3168
3169				<div class="fechas_ancho_entrada px-sm-inputcontainer w-padding px-mk-fixedwidth-inputcontainer">
3170					<label class="px-mk-inputicon" for="fechaingreso">
3171						<?xml version="1.0" encoding="iso-8859-1"?>
3172<svg version="1.1" id="Capa_1" 
3173    xmlns="http://www.w3.org/2000/svg" 
3174    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">
3175    <g>
3176        <g>
3177            <g>
3178                <rect x="213.333" y="234.667" width="106.667" height="106.667"/>
3179                <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"/>
3180            </g>
3181        </g>
3182    </g>
3183</svg>					</label>
3184					<label class="px-mk-labelinput" for="fechaingreso">
3185						Fecha de Llegada					</label>
3186					<input name="Start" type="text" style="font-size: 16px !important;" onfocus="return false;
3186" readonly id="fechaingreso" class="" value="05/10/2026" placeholder="Llegada" data-testid="date-start" />
3187				</div>
3188
3189				<div class=" fechas_ancho_salida px-sm-inputcontainer w-padding px-mk-fixedwidth-inputcontainer">
3190					<label class="px-mk-inputicon" for="fechaegreso">
3191						<?xml version="1.0" encoding="iso-8859-1"?>
3192<svg version="1.1" id="Capa_1" 
3193    xmlns="http://www.w3.org/2000/svg" 
3194    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">
3195    <g>
3196        <g>
3197            <g>
3198                <rect x="213.333" y="234.667" width="106.667" height="106.667"/>
3199                <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"/>
3200            </g>
3201        </g>
3202    </g>
3203</svg>					</label>
3204					<label class="px-mk-labelinput" for="fechaegreso">
3205						Fecha de Salida					</label>
3206					<input name="End" type="text" style="font-size: 16px !important;" onfocus="return false;" readonly id="fechaegreso" size="10" value="06/10/2026" class="relative maxzindex pointer" placeholder="Salida" data-testid="date-end" />
3207				</div>
3208
3209
3210				<div id="NochesError" class="error" style="display:none"></div>
3211
3212				
3213					<div class="codigopromocional px-sm-inputcontainer w-padding px-mk-fixedwidth-inputcontainer">
3214						<label class="px-mk-inputicon" for="fechaegreso">
3215							<?xml version="1.0" encoding="iso-8859-1"?>
3216<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
3217<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"
3218	 viewBox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve">
3219<g>
3220	<g>
3221		<path d="M32,271.692v192c0,17.664,14.368,32,32,32h160v-224H32z"/>
3222	</g>
3223</g>
3224<g>
3225	<g>
3226		<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
3227			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
3228			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
3229			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
3230			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
3231			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
3232			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
3233			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
3234			C360.128,120.716,317.92,143.692,295.776,143.692z"/>
3235	</g>
3236</g>
3237<g>
3238	<g>
3239		<path d="M288,271.692v224h160c17.664,0,32-14.336,32-32v-192H288z"/>
3240	</g>
3241</g>
3242<g>
3243</g>
3244<g>
3245</g>
3246<g>
3247</g>
3248<g>
3249</g>
3250<g>
3251</g>
3252<g>
3253</g>
3254<g>
3255</g>
3256<g>
3257</g>
3258<g>
3259</g>
3260<g>
3261</g>
3262<g>
3263</g>
3264<g>
3265</g>
3266<g>
3267</g>
3268<g>
3269</g>
3270<g>
3271</g>
3272</svg>
3273						</label>
3274						<label class="px-mk-labelinput" for="PromoCode">
3275							Código Promocional						</label>
3276						<input name="Code" type="text" id="PromoCode" size="6" class="relative maxzindex pointer" data-testid="promo-code" />
3277					</div>
3278
3279				
3280
3281								
3282<style>
3283	/* Quitar flechitas de inputs number en Chrome, Safari, Edge, Opera */
3284	.neo_partyselector_quantity::-webkit-outer-spin-button,
3285	.neo_partyselector_quantity::-webkit-inner-spin-button {
3286		-webkit-appearance: none;
3287		margin: 0;
3288	}
3289
3290	/* Desktop - mantener original, todo en una línea */
3291	.txtPartyGroup .guests-row,
3292	.txtPartyGroup .rooms-row {
3293		display: inline;
3294	}
3295
3296	/* Nacionalidad label - desktop #000, mobile #333 */
3297	.nacionalidad-label {
3298		color: #000 !important;
3299	}
3300
3301	@media only screen and (max-width: 650px) {
3302		.nacionalidad-label {
3303			color: #333 !important;
3304		}
3305	}
3306
3307	.txtPartyGroup .party-number {
3308		margin-right: 4px;
3309	}
3310
3311	.txtPartyGroup .party-separator {
3312		color: #999;
3313		margin: 0 4px;
3314	}
3315
3316	/* Mobile - formato de dos líneas mejorado */
3317	@media only screen and (max-width: 650px) {
3318
3319		/* Ocultar separador entre huéspedes y habitaciones en mobile */
3320		.txtPartyGroup .rooms-separator {
3321			display: none;
3322		}
3323
3324		.txtPartyGroup {
3325			display: flex;
3326			flex-direction: column;
3327			align-items: flex-start;
3328			gap: 2px;
3329			font-size: 15px;
3330			line-height: 1.4;
3331			color: #555;
3332		}
3333
3334		.txtPartyGroup .guests-row {
3335			display: flex;
3336			align-items: center;
3337			flex-wrap: wrap;
3338		}
3339
3340		.txtPartyGroup .party-item {
3341			display: inline-flex;
3342			align-items: baseline;
3343			white-space: nowrap;
3344		}
3345
3346		.txtPartyGroup .party-number {
3347			font-weight: 700;
3348			color: #333;
3349			margin-right: 4px;
3350		}
3351
3352		.txtPartyGroup .party-label {
3353			color: #666;
3354		}
3355
3356		.txtPartyGroup .party-separator {
3357			color: #ccc;
3358			margin: 0 8px;
3359		}
3360
3361		.txtPartyGroup .rooms-row {
3362			display: block;
3363			color: #666;
3364			margin: 0;
3365			padding: 0;
3366			text-align: left;
3367		}
3368
3369		.SelectorInitial {
3370			min-height: 65px;
3371			padding: 12px 45px 12px 14px;
3372			display: flex;
3373			align-items: center;
3374		}
3375
3376		.PartyTypeSimulatorContainer {
3377			overflow: visible;
3378		}
3379
3380		/* Ajuste para los labels del selector */
3381		.neo_party_selector>div:first-child {
3382			display: flex;
3383			flex-direction: column;
3384			min-width: 0;
3385		}
3386
3387		.neo_party_selector>div:first-child>div {
3388			white-space: nowrap;
3389			overflow: visible;
3390			font-size: 14px;
3391			font-weight: 500;
3392		}
3393
3394		.neo_party_selector>div:first-child>div:last-child {
3395			font-size: 12px;
3396			color: #888;
3397			margin-top: 3px;
3398			white-space: nowrap;
3399			font-weight: 400;
3400		}
3401
3402		/* Asegurar que en mobile los controles sigan alineados a la derecha */
3403		.neo_party_selector {
3404			display: flex;
3405			justify-content: space-between;
3406			align-items: center;
3407			width: 100%;
3408			margin-bottom: 14px;
3409			padding-bottom: 14px;
3410			border-bottom: 1px solid #f0f0f0;
3411		}
3412
3413		.neo_party_selector:last-of-type {
3414			border-bottom: none;
3415			margin-bottom: 0;
3416			padding-bottom: 0;
3417		}
3418
3419		.neo_party_selector>div:last-child {
3420			display: flex;
3421			align-items: center;
3422			justify-content: flex-end;
3423			flex-shrink: 0;
3424			margin-left: 15px;
3425		}
3426
3427		.neo_party_selector .flex.flex-s-center {
3428			display: flex;
3429			align-items: center;
3430			gap: 4px;
3431		}
3432	}
3433
3434	/* Estilos para alinear correctamente los controles numéricos */
3435	.neo_party_selector {
3436		display: flex !important;
3437		justify-content: space-between !important;
3438		align-items: center !important;
3439		width: 100% !important;
3440		margin-bottom: 15px !important;
3441	}
3442
3443	.neo_party_selector>div:first-child {
3444		flex: 1 !important;
3445		min-width: 0 !important;
3446	}
3447
3448	.neo_party_selector>div:last-child {
3449		display: flex !important;
3450		align-items: center !important;
3451		justify-content: flex-end !important;
3452		flex-shrink: 0 !important;
3453		margin-left: 15px !important;
3454	}
3455
3456	/* Asegurar que los botones y input estén alineados correctamente */
3457	.neo_party_selector .flex.flex-s-center {
3458		display: flex !important;
3459		align-items: center !important;
3460		gap: 3px !important;
3461	}
3462</style>
3463
3464<div class="relative PartyTypeSimulatorContainer">
3465	<div class="PartyTypeSimulator px-sm-inputcontainer w-padding" style="border-right: none" maxadult="6" maxchild="5" maxrooms="4">
3466		<div class="SelectorInitial" data-testid="guest-selector-trigger">
3467									<span class="txtPartyGroup" style="align-items: flex-start !important;">
3468				<span class="guests-row">
3469					<span class="party-item txtAdults">
3470						<span class="party-number numberAdults">2</span>
3471						<span class="party-label txtAdultsTxt" plural="adultos" singular="adulto">
3472							adultos						</span>
3473					</span>
3474					<span class="party-item txtChildren"  style="display:none;">
3475						<span class="party-separator">•</span>
3476						<span class="party-number numberChildren">0</span>
3477						<span class="party-label txtChildrenTxt" plural="niños" singular="niño">
3478							niño						</span>
3479					</span>
3480					<span class="party-item txtBabies"  style="display:none;">
3481						<span class="party-separator">•</span>
3482						<span class="party-number numberBabies">0</span>
3483						<span class="party-label txtBabiesTxt" plural="bebés" singular="bebé">
3484							bebé						</span>
3485					</span>
3486				</span>
3487				<span class="rooms-separator party-separator">•</span>
3488				<span class="rooms-row txtRooms">
3489					<span class="party-number numberRooms">1</span>
3490					<span
3491						class="party-label txtRoomsTxt"
3492						plural="habitaciones"
3493						singular="habitación">
3494						habitación					</span>
3495				</span>
3496			</span>
3497			<label class='ignoreclick px-mk-inputicon'>
3498				<?xml version="1.0" encoding="iso-8859-1"?>
3499<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
3500<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"
3501	 viewBox="0 0 426.667 426.667" style="enable-background:new 0 0 426.667 426.667;" xml:space="preserve">
3502<g>
3503	<g>
3504		<g>
3505			<path d="M309.333,213.333c29.44,0,53.12-23.893,53.12-53.333s-23.68
3505-53.333-53.12-53.333S256,130.56,256,160
3506				S279.893,213.333,309.333,213.333z"/>
3507			<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
3508				C85.333,163.307,114.027,192,149.333,192z"/>
3509			<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
3510				C181.333,236.693,163.307,234.667,149.333,234.667z"/>
3511			<path d="M309.333,256C270.187,256,192,275.627,192,314.667v48h234.667v-48C426.667,275.627,348.48,256,309.333,256z"/>
3512		</g>
3513	</g>
3514</g>
3515<g>
3516</g>
3517<g>
3518</g>
3519<g>
3520</g>
3521<g>
3522</g>
3523<g>
3524</g>
3525<g>
3526</g>
3527<g>
3528</g>
3529<g>
3530</g>
3531<g>
3532</g>
3533<g>
3534</g>
3535<g>
3536</g>
3537<g>
3538</g>
3539<g>
3540</g>
3541<g>
3542</g>
3543<g>
3544</g>
3545</svg>
3546			</label>
3547		</div>
3548	</div>
3549	<div class="PartyTypeSimulatorSelect nodisplay padding-xs-20">
3550		<div class="flex-column full">
3551			<div class="neo_party_selector neo_adults_selector flex flex-m-sb flex-s-center">
3552				<div>
3553					<div>Adultos</div>
3554					<div style="font-size: 11px; color: #888; margin-top: 2px;">
3555						11 años o más					</div>
3556				</div>
3557				<div class="flex flex-s-center">
3558										<button onclick="alterPartyGroup(this);" class="neo_button_partyselector neo_minus_button" type='button' party-type="adults" action-type='minus' data-testid="adults-minus">-</button>
3559					<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" />
3560					<button onclick="alterPartyGroup(this);" class="neo_button_partyselector neo_plus_button" type='button' party-type="adults" action-type='plus' data-testid="adults-plus">+</button>
3561				</div>
3562			</div>
3563							<div class="neo_party_selector neo_adults_selector flex flex-m-sb flex-s-center">
3564					<div>
3565						<div>Menores</div>
3566						<div style="font-size: 11px; color: #888; margin-top: 2px;">
3567							Hasta 10 años						</div>
3568					</div>
3569					<div class="flex flex-s-center">
3570												<button onclick="alterPartyGroup(this);" class="neo_button_partyselector neo_minus_button" type='button' party-type="children" action-type='minus' data-testid="children-minus">-</button>
3571						<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" />
3572						<button onclick="alterPartyGroup(this);" class="neo_button_partyselector neo_plus_button" type='button' party-type="children" action-type='plus' data-testid="children-plus">+</button>
3573					</div>
3574				</div>
3575						<div class="neo_party_selector neo_adults_selector flex flex-m-sb flex-s-center">
3576				<div>Habitaciones</div>
3577				<div class="flex flex-s-center">
3578										<button onclick="alterPartyGroup(this);" class="neo_button_partyselector neo_minus_button" type='button' party-type="rooms" action-type='minus' data-testid="rooms-minus">-</button>
3579					<input type="number" inputmode="numeric" class="neo_partyselector_quantity" party-type="rooms" val="1" value="1" onchange="handlePartyInputChange(this);" min="1" max="4" 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" />
3580					<button onclick="alterPartyGroup(this);" class="neo_button_partyselector neo_plus_button" type='button' party-type="rooms" action-type='plus' data-testid="rooms-plus">+</button>
3581				</div>
3582			</div>
3583		</div>
3584		<div class="ChildrenAgesContainer nodisplay">
3585			<div class="flex-column">
3586				<div class="texto padding-xs-bottom-20" style="font-size: 12px !important;">¿Qué edades tienen los menores con los que viajas?</div>
3587				<div class="ChildrensAges" child-id="0" style="max-height: 200px !important; overflow-y: auto !important; padding-right: 5px !important;">
3588					<div class="ChildrensAgesSelectContainer" child-id="0" style="margin-bottom: 10px !important;">
3589						<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">
3590							<option value="" disabled selected>Edad el día del check-out</option>
3591															<option value="0">0 años</option>
3592															<option value="1">1 año</option>
3593															<option value="2">2 años</option>
3594															<option value="3">3 años</option>
3595															<option value="4">4 años</option>
3596															<option value="5">5 años</option>
3597															<option value="6">6 años</option>
3598															<option value="7">7 años</option>
3599															<option value="8">8 años</option>
3600															<option value="9">9 años</option>
3601															<option value="10">10 años</option>
3602													</select>
3603					</div>
3604				</div>
3605				<div class="NotValidChildrens nodisplay animated shake"><i class="fa fa-exclamation" aria-hidden="true"></i> Seleccione edad de los menores por favor</div>
3606			</div>
3607		</div>
3608
3609
3610		
3611	</div>
3612
3613</div>
3614
3615<script>
3616	// Global flag to track if ages have been initialized
3617	var childrenAgesInitialized = false;
3618
3619	// Function to initialize children ages from GroupsForm
3620	function initializeChildrenAgesFromGroupsForm(force) {
3621		// Only initialize once unless forced
3622		if (childrenAgesInitialized && !force) {
3623			return;
3624		}
3625
3626		try {
3627					} catch (e) {
3628			console.error('Error initializing children ages:', e);
3629		}
3630	}
3631
3632	// Call initialization on page load (in case selects already exist)
3633	$(document).ready(function() {
3634		// Wait a bit to ensure selects are created
3635		setTimeout(function() {
3636			initializeChildrenAgesFromGroupsForm();
3637		}, 100);
3638	});
3639</script>
3639
3640								<input name="MaxRooms" type="hidden" id="MaxRooms" value="4" />
3641				<input name="Nights" type="hidden" id="Nights" />
3642				<input name="Channel" type="hidden" id="Channel" value="2" />
3643				<input name="RateType" type="hidden" id="RateType" value="auto" />
3644				<input name="Pos" type="hidden" id="Pos" value='Sanremohoteles' />
3645				<input name="Lng" type="hidden" id="Lng" value='pt' />
3646				<input name="Currency" type="hidden" id="Currency" value="ARS" />
3647				<input name="MaxAgeChildrenNumber" type="hidden" id="MaxAgeChildrenNumber" value="10" />
3648				<input name="MaxAgeBabiesNumber" type="hidden" id="MaxAgeBabiesNumber" value="1" />
3649				<input name="MaxBabiesNumber" type="hidden" id="MaxBabiesNumber" value="2" />
3650				<input name="ReturnUrl" type="hidden" id="ReturnUrl" value="https://www.sanremohoteles.com/pt/list.html" />
3651
3652				<input name="FromUrl" type="hidden" id="FromUrl" value="https://www.sanremohoteles.com/pt/" />
3653				<input name="Tag" type="hidden" id="Tag" value="" />
3654				<input name="Source" id="Source" type="hidden" value="Contact Form">
3655
3656				<input name="ProductTimezone" id="ProductTimezone" type="hidden" value="America/Argentina/Buenos_Aires">
3657				<input name="GlobalDaysModifier" id="GlobalDaysModifier" type="hidden" value="0">
3658
3659				<input name="SearchID" type="hidden" id="SearchID" value="0" />
3660
3661				<input name="FromPID" type="hidden" id="FromPID" value="19322" />
3662
3663				<input name="Type" type="hidden" id="Type" value="Hotel" />
3664
3665
3666									<input name="ProductID" type="hidden" id="ProductID" value="19322" />
3667				
3668									<input name="ListID" type="hidden" id="ListID" value="910" />
3669				
3670				<input name="Location" type="hidden" id="Location" value="" />
3671
3672				<input name="Device" type="hidden" id="Device" value="Computer" />
3673								<input name="UserID" type="hidden" id="UserID" value="0" />
3674				<input name="tag" type="hidden" id="tag" class="tag_cookie" value="" />
3675								<input name="Email" type="hidden" id="Email" value="" />
3676				<input name="UserType" type="hidden" id="UserType" value="" />
3677				<input name="AgreementType" type="hidden" id="AgreementType" value="" />
3678
3679				<input name="GroupsForm" type="hidden" id="GroupsForm" value="1:2,0,0" />
3680
3681				
3682				
3683																																																	
3684
3685
3686									<input name="SkuID" type="hidden" id="SkuID" value="" />
3687				
3688				
3689				<div class="nodisplay" id="MinNightsError">
3690					El minimo de noches debe ser mayor o igual a 0				</div>
3691
3692				<input name="MinNights" type="hidden" id="MinNights" value="0" />
3693
3694				<div name="PxMkAcion_Search" id="PxMkAcion_Search" class="px-sm-searchbtn px-sm-inputcontainer w-padding px-mk-fixedwith-inputcontainer cta_webcheckin_px" btntxt="Ver Tarifas" loadingbtntxt="Buscando" data-testid="search-button">
3695					<span class="update-search-span">Ver Tarifas</span>
3696					<label for="" class="px-mk-searchicon px-mk-inputicon ignoreclick">
3697						<?xml version="1.0" encoding="iso-8859-1"?>
3698<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
3699<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"
3700	 viewBox="0 0 373.12 373.12" style="enable-background:new 0 0 373.12 373.12;" xml:space="preserve">
3701<g>
3702	<g>
3703		<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
3704			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
3705			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
3706			C234.667,191.68,191.68,234.667,138.667,234.667z"/>
3707	</g>
3708</g>
3709<g>
3710</g>
3711<g>
3712</g>
3713<g>
3714</g>
3715<g>
3716</g>
3717<g>
3718</g>
3719<g>
3720</g>
3721<g>
3722</g>
3723<g>
3724</g>
3725<g>
3726</g>
3727<g>
3728</g>
3729<g>
3730</g>
3731<g>
3732</g>
3733<g>
3734</g>
3735<g>
3736</g>
3737<g>
3738</g>
3739</svg>
3740					</label>
3741					<label for="" class="px-mk-searchloader px-mk-inputicon nodisplay ignoreclick">
3742						<?xml version="1.0" encoding="iso-8859-1"?>
3743<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
3744<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
3745<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"
3746	 width="26.349px" height="26.35px" viewBox="0 0 26.349 26.35" style="enable-background:new 0 0 26.349 26.35;"
3747	 xml:space="preserve">
3748<g>
3749	<g>
3750		<circle cx="13.792" cy="3.082" r="3.082"/>
3751		<circle cx="13.792" cy="24.501" r="1.849"/>
3752		<circle cx="6.219" cy="6.218" r="2.774"/>
3753		<circle cx="21.365" cy="21.363" r="1.541"/>
3754		<circle cx="3.082" cy="13.792" r="2.465"/>
3755		<circle cx="24.501" cy="13.791" r="1.232"/>
3756		<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
3757			C6.902,18.996,5.537,18.988,4.694,19.84z"/>
3758		<circle cx="21.364" cy="6.218" r="0.924"/>
3759	</g>
3760</g>
3761<g>
3762</g>
3763<g>
3764</g>
3765<g>
3766</g>
3767<g>
3768</g>
3769<g>
3770</g>
3771<g>
3772</g>
3773<g>
3774</g>
3775<g>
3776</g>
3777<g>
3778</g>
3779<g>
3780</g>
3781<g>
3782</g>
3783<g>
3784</g>
3785<g>
3786</g>
3787<g>
3788</g>
3789<g>
3790</g>
3791</svg>
3792					</label>
3793				</div>
3794
3795			</form>
3796
3797			<input type="hidden" id="MainPos" value="Sanremohoteles">
3798
3799
3800		</div>
3801
3802	
3803
3804<div id="dataconfig" product-timezone="America/Argentina/Buenos_Aires" urldispo="id=19322&RateID=24629&start=2026-10-05" class="nodisplay" lng="pt" DatePickerStart="0"></div>
3805
3806<link rel="stylesheet" href="https://unpkg.com/tippy.js@6/animations/scale.css" />
3807<script src="https://unpkg.com/@popperjs/core@2"></script>
vendor: 1 bytes, line 3807
3807
3808<script src="https://unpkg.com/tippy.js@6"></script>
3808
3809			
3809<script defer src="/neo_modules/marketplace_buscador_v8/js.js?filev=1778144039" type="text/javascript"></script>
3809
3810<style>/* ------------ VARIABLES ------------ */
3811@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");
3812.px-mk-buscador-container {
3813  font-size: 12px;
3814}
3815
3816#MinNightsError {
3817  float: left;
3818  width: calc(100% - 22px);
3819  padding: 10px;
3820  border: 1px solid #982828;
3821  line-height: 20px;
3822  background: #f3e8e8;
3823  color: #000;
3824}
3825
3826.NotValidChildrens {
3827  width: 100%;
3828  float: left;
3829  text-align: center;
3830  color: #800;
3831  font-size: 1em;
3832  font-weight: bold;
3833  padding: 10px 0px;
3834}
3835
3836.update-search-span {
3837  font-weight: 400;
3838  margin-right: 10px;
3839}
3840
3841.ChildrensAgesSelect.notvalid {
3842  border: 1px solid #b51212 !important;
3843}
3844
3845.buscar_lp .buscar_lp_beforerate {
3846  display: none;
3847}
3848
3849.buscar_lp .NochesError {
3850  display: none;
3851}
3852
3853#NochesError {
3854  background: white;
3855  border-right: 1px solid #ccc;
3856  display: flex;
3857  justify-content: center;
3858  align-items: center;
3859}
3860
3861.buscar_lp .TextoFormulario {
3862  float: left;
3863  width: auto;
3864  margin-right: 10px;
3865  text-transform: capitalize;
3866  padding-top: 5px;
3867  font-size: 13px;
3868}
3869
3870.buscar_lp .imput_text_rooms {
3871  font-size: 1em;
3872  padding: 4px 2px;
3873  border: 1px solid #eaeaea;
3874  margin-right: 10px;
3875  float: left;
3876  max-width: 35px;
3877}
3878
3879.buscar_lp .roomtypecontariner {
3880  float: left;
3881  width: auto;
3882}
3883
3884.buscar_lp .bucle {
3885  float: left;
3886  width: auto;
3887}
3888
3889.button_bucar {
3890  float: right;
3891  width: auto;
3892  border: 1px solid #999;
3893  font-size: 14px;
3894  padding: 4px 10px;
3895  background: #eaeaea;
3896  color: #000;
3897}
3898
3899.button_bucar:hover {
3900  background: #999;
3901  color: #fff;
3902  cursor: pointer;
3903}
3904
3905.ContenidoHab {
3906  overflow: hidden;
3907  width: 100%;
3908  margin-bottom: 5px;
3909}
3910
3911.px-mk-buscador-container.buscar_lp .SelectorInitial {
3912  padding: 1em;
3913  margin: 0;
3914  cursor: pointer;
3915  border: none;
3916  box-sizing: border-box;
3917  font-size: 1.1em;
3918  text-overflow: ellipsis;
3919  overflow: hidden;
3920  min-width: 150px;
3921  text-align: left;
3922  padding-right: 2rem !important;
3923  width: 100%;
3924  height: 100%;
3925  display: flex;
3926  background: transparent !important;
3927  align-items: center;
3928}
3929.px-mk-buscador-container.buscar_lp .SelectorInitial .texto {
3930  font-weight: bold;
3931}
3932
3933.px-mk-buscador-container.buscar_lp .RoomsSelectContainer {
3934  width: 100%;
3935  padding-bottom: 5px;
3936  margin-bottom: 5px;
3937  border-bottom: 1px dotted #ccc;
3938  display: flex;
3939  align-items: center;
3940}
3941.px-mk-buscador-container.buscar_lp .RoomsSelectContainer .RoomNameContainer {
3942  width: calc(40% - 10px);
3943  margin-right: 10px;
3944  text-transform: capitalize;
3945  font-size: 1em;
3946  color: #444;
3947}
3948.px-mk-buscador-container.buscar_lp .RoomsSelectContainer .texto {
3949  float: left;
3950  width: 100%;
3951  padding-bottom: 3px;
3952  font-size: 14px;
3953  color: #444;
3954}
3955.px-mk-buscador-container.buscar_lp .RoomsSelectContainer select {
3956  border: 1px solid #d0d0d0;
3957  width: 100%;
3958  border-radius: 4px;
3959  padding: 2px;
3960  color: #666;
3961  font-size: 11px;
3962  margin-bottom: 5px;
3963  cursor: pointer;
3964}
3965.px-mk-buscador-container.buscar_lp .RoomsSelectContainer .hostContainer {
3966  width: 60%;
3967}
3968.px-mk-buscador-container.buscar_lp .RoomsSelectContainer .hostContainer .hostPeopleContainer .AdultsContainer,
3969.px-mk-buscador-container.buscar_lp .RoomsSelectContainer .hostContainer .hostPeopleContainer .ChildrensContainers {
3970  display: flex;
3971  flex-direction: column;
3972  justify-content: center;
3973  align-items: center;
3974  flex: 1;
3975  margin: 3px;
3976}
3977.px-mk-buscador-container.buscar_lp .RoomsSelectContainer .hostContainer .hostPeopleContainer .AdultsContainer > *,
3978.px-mk-buscador-container.buscar_lp .RoomsSelectContainer .hostContainer .hostPeopleContainer .ChildrensContainers > * {
3979  flex-grow: 1;
3980  width: 100%;
3981}
3982.px-mk-buscador-container.buscar_lp .RoomsSelectContainer .hostContainer .ChildrensAges {
3983  float: left;
3984  width: 100%;
3985  margin-top: 5px;
3986}
3987.px-mk-buscador-container.buscar_lp .RoomsSelectContainer .hostContainer .ChildrensAges .ChildrensAgesSelect {
3988  float: left;
3989  width: calc(50% - 5px) !important;
3990  margin-right: 5px;
3991  margin-bottom: 5px;
3992}
3993.px-mk-buscador-container.buscar_lp .RoomsSelectContainer .hostContainer .ChildrensAges .ChildrensAgesSelect:nth-child(even) {
3994  float: right !important;
3995  margin-right: 0px;
3996}
3997.px-mk-buscador-container.buscar_lp .RoomsSelectContainer .hostContainer .ChildrensAges .texto {
3998  float: left;
3999  width: 100%;
4000  padding-bottom: 3px;
4001  font-size: 14px;
4002  color: #444;
4003}
4004
4005.px-mk-buscador-container.buscar_lp .px-mk-addnewroom,
4006.px-mk-buscador-container.buscar_lp .px-mk-removeroom {
4007  flex: 1;
4008  cursor: pointer;
4009  margin: 3px;
4010}
4011.px-mk-buscador-container.buscar_lp .px-mk-addnewroom.nodisplay,
4012.px-mk-buscador-container.buscar_lp .px-mk-removeroom.nodisplay {
4013  display: none;
4014}
4015.px-mk-buscador-container.buscar_lp .px-mk-addnewroom svg,
4016.px-mk-buscador-container.buscar_lp .px-mk-removeroom svg {
4017  height: 18px;
4018  width: 18px;
4019  fill: currentColor;
4020  margin-left: 3px;
4021}
4022.px-mk-buscador-container.buscar_lp .px-mk-addnewroom button,
4023.px-mk-buscador-container.buscar_lp .px-mk-removeroom button {
4024  width: 100%;
4025  display: flex;
4026  align-items: center;
4027  justify-content: center;
4028  text-align: center;
4029  background: #f3f3f3;
4030  border: 1px solid #ccc;
4031  padding: 5px 0px;
4032  box-sizing: border-box;
4033  border-radius: 30px;
4034  color: #444;
4035  font-size: 0.9em;
4036  text-transform: capitalize;
4037  cursor: pointer;
4038}
4039.px-mk-buscador-container.buscar_lp .px-mk-addnewroom button span,
4040.px-mk-buscador-container.buscar_lp .px-mk-removeroom button span {
4041  text-transform: capitalize;
4042  line-height: 1;
4043}
4044
4045.px-mk-buscador-container.buscar_lp {
4046  display: flex;
4047  align-items: center;
4048  height: 100%;
4049  padding: 3px;
4050  box-sizing: border-box;
4051  transition: 0.3s ease-out;
4052}
4053.px-mk-buscador-container.buscar_lp #MultiplePartySelect {
4054  float: left;
4055  flex-direction: column;
4056  display: flex;
4057  width: calc(100% - 12px);
4058  padding: 5px;
4059  background: #fff;
4060  border: 1px solid #ddd;
4061  margin: 0px;
4062  position: absolute;
4063  top: 100%;
4064  min-width: 250px;
4065  z-index: 11;
4066  box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.16), 0 0 0 1px rgba(0, 0, 0, 0.08);
4067}
4068.px-mk-buscador-container.buscar_lp #MultiplePartySelect.nodisplay {
4069  display: none;
4070}
4071.px-mk-buscador-container.buscar_lp .PartyTypeSimulatorSelect {
4072  background: #fff;
4073  border: 1px solid #ddd;
4074  margin: 0px;
4075  position: absolute;
4076  top: 100%;
4077  left: 0;
4078  display: flex;
4079  z-index: 99;
4080  flex-direction: column;
4081}
4082.px-mk-buscador-container.buscar_lp .PartyTypeSimulatorSelect .px-sm-inputcontainer {
4083  height: 50px;
4084  border-right: none;
4085  border-bottom: 1px solid #ccc;
4086  cursor: pointer;
4087  padding: 1em 4em 1em 1em;
4088  box-sizing: border-box;
4089}
4090.px-mk-buscador-container.buscar_lp .PartyTypeSimulatorSelect .px-sm-inputcontainer:last-child {
4091  border-bottom: none;
4092}
4093.px-mk-buscador-container.buscar_lp .PartyTypeSimulatorSelect .px-sm-inputcontainer .texto {
4094  padding: 0px;
4095  display: flex;
4096  align-items: center;
4097  text-align: left;
4098  font-size: 14px;
4099  color: #888;
4100}
4101.px-mk-buscador-container.buscar_lp .PartyTypeSimulatorSelect .px-sm-inputcontainer .texto:hover {
4102  color: #444;
4103}
4104.px-mk-buscador-container.buscar_lp .PartyTypeSimulatorSelect.nodisplay {
4105  display: none;
4106}
4107.px-mk-buscador-container.buscar_lp .px-mk-searchform {
4108  float: none;
4109  width: auto;
4110  display: flex;
4111  align-items: center;
4112  height: 60px;
4113  box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.16), 0 0 0 1px rgba(0, 0, 0, 0.08);
4114}
4115.px-mk-buscador-container.buscar_lp .px-mk-searchform > * {
4116  height: 100%;
4117  margin: 0;
4118  float: none;
4119  position: relative;
4120  flex-shrink: 0;
4121  flex-grow: 1;
4122}
4123.px-mk-buscador-container.buscar_lp .px-mk-searchform .px-sm-searchbtn {
4124  min-width: 18em;
4125}
4126
4127.ModuloWrap_marketplace_buscador_v3.isolate::after {
4128  content: "";
4129  position: fixed;
4130  top: 0;
4131  left: 0;
4132  width: 100vw;
4133  height: 100vh;
4134  background: rgba(0, 0, 0, 0.3);
4135  z-index: -1;
4136  bottom: 0;
4137  right: 0;
4138  -webkit-backdrop-filter: blur(5px);
4139          backdrop-filter: blur(5px);
4140  animation: appearIsolate 1s cubic-bezier(0.165, 0.84, 0.44, 1) forwards;
4141}
4142
4143@keyframes appearIsolate {
4144  from {
4145    opacity: 0;
4146  }
4147  to {
4148    opacity: 1;
4149  }
4150}
4151.px-sm-inputcontainer {
4152  display: flex;
4153  position: relative;
4154  border-right: 1px solid #ccc;
4155  transition: 0.3s ease-out;
4156  cursor: pointer;
4157  flex-direction: column;
4158  justify-content: center;
4159  align-items: flex-start;
4160  text-align: left;
4161  box-sizing: border-box;
4162  background-color: white;
4163}
4164.px-sm-inputcontainer .hasDatepicker {
4165  cursor: pointer !important;
4166}
4167.px-sm-inputcontainer input {
4168  border-bottom: none !important;
4169  box-shadow: none !important;
4170}
4171.px-sm-inputcontainer label.error {
4172  background: #bf0000;
4173  float: none;
4174  min-width: 100%;
4175  margin: 0px;
4176  left: 0;
4177  padding: 10px 20px;
4178  box-sizing: border-box;
4179  top: 100%;
4180  bottom: initial;
4181  right: auto;
4182  transform: translatey(0);
4183  color: white;
4184  font-weight: 400;
4185  text-transform: uppercase;
4186  font-size: 10px;
4187  letter-spacing: 2px;
4188  position: absolute;
4189  line-height: 1.6em;
4190}
4191.px-sm-inputcontainer.px-mk-fixedwidth-inputcontainer {
4192  width: 11em;
4193}
4194.px-sm-inputcontainer.px-mk-fixedwidth-inputcontainer-max {
4195  width: 18em;
4196}
4197.px-sm-inputcontainer.w-padding {
4198  padding: 0.6em 1em;
4199}
4200.px-sm-inputcontainer .px-mk-labelinput {
4201  margin-bottom: 3px;
4202  font-size: 13px;
4203  opacity: 1;
4204  cursor: pointer;
4205  margin-top: 3px;
4206}
4207.px-sm-inputcontainer .px-mk-inputicon {
4208  position: absolute;
4209  z-index: 2;
4210  right: 1.2em;
4211  color: #aaa;
4212  top: 50%;
4213  transform: translatey(-50%);
4214  font-size: 1.2em;
4215  transition: 0.3s ease-out;
4216  cursor: pointer;
4217}
4218.px-sm-inputcontainer .px-mk-inputicon svg {
4219  height: 1.2em;
4220  width: 1.2em;
4221  fill: currentColor;
4222}
4223.px-sm-inputcontainer.nodisplay {
4224  display: none;
4225}
4226.px-sm-inputcontainer:last-child {
4227  border-right: none;
4228}
4229.px-sm-inputcontainer input,
4230.px-sm-inputcontainer select,
4231.px-sm-inputcontainer textarea {
4232  position: relative;
4233  -webkit-appearance: none;
4234  -moz-appearance: none;
4235  border: none;
4236  box-sizing: border-box;
4237  font-size: 1.1em;
4238  text-overflow: ellipsis;
4239  height: auto;
4240  transition: inherit;
4241  background-color: transparent;
4242  max-width: 100%;
4243  width: 100%;
4244}
4245.px-sm-inputcontainer input option,
4246.px-sm-inputcontainer select option,
4247.px-sm-inputcontainer textarea option {
4248  background-color: #fff;
4249}
4250.px-sm-inputcontainer input[type=text]:not(.hasDatepicker),
4251.px-sm-inputcontainer select[type=text]:not(.hasDatepicker),
4252.px-sm-inputcontainer textarea[type=text]:not(.hasDatepicker) {
4253  cursor: text;
4254}
4255.px-sm-inputcontainer input {
4256  padding: 0px;
4257  margin: 0px !important;
4258}
4259.px-sm-inputcontainer > select {
4260  padding: 1em 4em 1em 1em;
4261  height: 100%;
4262  width: 100%;
4263  cursor: pointer;
4264  white-space: initial;
4265}
4266.px-sm-inputcontainer > select::-ms-expand {
4267  display: none;
4268  /* hide the default arrow in ie10 and ie11 */
4269}
4270.px-sm-inputcontainer:hover {
4271  background-color: #f0f0f0;
4272}
4273.px-sm-inputcontainer:hover label {
4274  color: #e0ae1b;
4275}
4276
4277.px-mk-searchinfo + .px-mk-buscador-container .px-mk-searchform {
4278  width: 100%;
4279}
4280.px-mk-searchinfo .px-mk-searchinfo-inner {
4281  width: 100%;
4282  height: 40px;
4283  background: #fafafa;
4284  box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.16), 0 0 0 1px rgba(0, 0, 0, 0.08);
4285  border-radius: 2px;
4286  text-transform: uppercase;
4287  font-size: 1em;
4288  box-sizing: border-box;
4289  font-weight: 600;
4290}
4291.px-mk-searchinfo .px-mk-searchinfo-inner > div {
4292  text-align: center;
4293  border-right: 1px solid #ccc;
4294  padding: 0 20px;
4295  box-sizing: border-box;
4296  height: 100%;
4297}
4298.px-mk-searchinfo .px-mk-searchinfo-inner i {
4299  color: goldenrod;
4300  margin-right: 10px;
4301  font-size: 20px;
4302}
4303.px-mk-searchinfo .px-mk-searchinfo-inner > .searchinfo-title {
4304  flex-grow: 0;
4305  background: #eee;
4306  color: #000;
4307}
4308.px-mk-searchinfo .px-mk-searchinfo-inner > .px-sm-searchbtn {
4309  width: auto;
4310  font-weight: 400;
4311  text-align: center;
4312  justify-content: center;
4313}
4314.px-mk-searchinfo .px-mk-searchinfo-inner.px-mk-searchinfo-column {
4315  height: auto;
4316  flex-wrap: wrap;
4317  width: 100%;
4318}
4319.px-mk-searchinfo .px-mk-searchinfo-inner.px-mk-searchinfo-column > * {
4320  height: 3em;
4321  border-bottom: 1px solid #ccc;
4322  padding: 1em;
4323  width: 50%;
4324  text-align: left;
4325  line-height: 1.2;
4326}
4327.px-mk-searchinfo .px-mk-searchinfo-inner.px-mk-searchinfo-column > * .px-mk-iconchangesearch {
4328  height: 1.2em;
4329  width: 1.2em;
4330}
4331
4332.px-mk-iconchangesearch {
4333  color: goldenrod;
4334  height: 1.5em;
4335  width: 1.5em;
4336  margin-right: 0.5em;
4337}
4338.px-mk-iconchangesearch svg {
4339  fill: currentColor;
4340  height: 100%;
4341  width: 100%;
4342}
4343
4344div.ui-datepicker#ui-datepicker-div .ui-widget-header {
4345  background: transparent !important;
4346  border: none !important;
4347}
4348div.ui-datepicker#ui-datepicker-div .ui-datepicker-next,
4349div.ui-datepicker#ui-datepicker-div .ui-datepicker-prev {
4350  border-radius: 40px !important;
4351  cursor: pointer !important;
4352}
4353div.ui-datepicker#ui-datepicker-div .ui-state-default,
4354div.ui-datepicker#ui-datepicker-div .ui-widget-content .ui-state-default,
4355div.ui-datepicker#ui-datepicker-div .ui-widget-header .ui-state-default {
4356  border-radius: 8px;
4357  border: none;
4358  background-color: rgba(0, 0, 0, 0.02);
4359  text-align: center;
4360  display: inline-flex;
4361  justify-content: center;
4362  align-items: center;
4363  width: 90%;
4364  font-size: 1em;
4365  transition: 0.3s ease-out;
4366  border: 1px solid #eee;
4367}
4368div.ui-datepicker#ui-datepicker-div .ui-state-focus,
4369div.ui-datepicker#ui-datepicker-div .ui-state-hover,
4370div.ui-datepicker#ui-datepicker-div .ui-widget-content .ui-state-focus,
4371div.ui-datepicker#ui-datepicker-div .ui-widget-content .ui-state-hover,
4372div.ui-datepicker#ui-datepicker-div .ui-widget-header .ui-state-focus,
4373div.ui-datepicker#ui-datepicker-div .ui-widget-header .ui-state-hover {
4374  background: white;
4375  border: 1px solid #000 !important;
4376}
4377div.ui-datepicker#ui-datepicker-div .ui-state-active,
4378div.ui-datepicker#ui-datepicker-div .ui-widget-content .ui-state-active,
4379div.ui-datepicker#ui-datepicker-div .ui-widget-header .ui-state-active,
4380div.ui-datepicker#ui-datepicker-div .ui-state-highlight,
4381div.ui-datepicker#ui-datepicker-div .ui-widget-content .ui-state-highlight,
4382div.ui-datepicker#ui-datepicker-div .ui-widget-header .ui-state-highlight {
4383  background: #000;
4384  color: white;
4385}
4386div.ui-datepicker#ui-datepicker-div td {
4387  text-align: center;
4388}
4389
4390.px-mk-searchloader {
4391  animation: spinStep steps(1) 1s infinite;
4392  height: 1em;
4393  width: 1em;
4394  transform-origin: top;
4395}
4396
4397.neo_m_buscador .neo_marketplace_buscador_v3 {
4398  padding: 30px 20px;
4399  justify-content: center;
4400  align-items: center;
4401}
4402
4403@keyframes spinStep {
4404  0% {
4405    transform: translatey(-50%);
4406  }
4407  12.5% {
4408    transform: rotate(45deg) translatey(-50%);
4409  }
4410  25% {
4411    transform: rotate(90deg) translatey(-50%);
4412  }
4413  37.5% {
4414    transform: rotate(135deg) translatey(-50%);
4415  }
4416  50% {
4417    transform: rotate(180deg) translatey(-50%);
4418  }
4419  62.5% {
4420    transform: rotate(225deg) translatey(-50%);
4421  }
4422  75% {
4423    transform: rotate(270deg) translatey(-50%);
4424  }
4425  87.5% {
4426    transform: rotate(315deg) translatey(-50%);
4427  }
4428  100% {
4429    transform: rotate(360deg) translatey(-50%);
4430  }
4431}
4432.px-sm-searchbtn {
4433  height: 100%;
4434  box-sizing: border-box;
4435  display: flex;
4436  text-align: left;
4437  align-items: flex-start;
4438  justify-content: center;
4439  text-transform: uppercase;
4440  font-size: 1em;
4441  letter-spacing: 1px;
4442  line-height: 1;
4443  background-color: #000;
4444  color: white;
4445  cursor: pointer;
4446  transition: 0.3s ease-out;
4447  border: none;
4448  width: 11em;
4449  padding: 1em 4em 1em 1em;
4450  flex: 1;
4451}
4452.px-sm-searchbtn .px-mk-inputicon svg {
4453  height: 1em;
4454  width: 1em;
4455  fill: white !important;
4456}
4457.px-sm-searchbtn:hover {
4458  background-color: #a37a00;
4459}
4460
4461.ModuloWrap_marketplace_list {
4462  width: 100%;
4463}
4464
4465.buscar_lp:not(.px-mk-buscador-vertical) .PartyTypeSimulator {
4466  height: 100%;
4467}
4468
4469.buscar_lp.px-mk-buscador-vertical {
4470  box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.16), 0 0 0 1px rgba(0, 0, 0, 0.08);
4471  border-radius: 2px;
4472  padding: 0;
4473  margin: 3px;
4474  height: auto;
4475  width: auto;
4476}
4477.buscar_lp.px-mk-buscador-vertical .px-mk-searchform {
4478  transition: 1s cubic-bezier(0.17, 0.84, 0.44, 1);
4479  height: auto;
4480  width: 100%;
4481  flex-wrap: wrap;
4482}
4483.buscar_lp.px-mk-buscador-vertical .px-mk-searchform > * {
4484  width: 100%;
4485  height: 4.5em;
4486}
4487.buscar_lp.px-mk-buscador-vertical .px-mk-searchform .wrap_PartyTypeSimulator {
4488  height: auto;
4489  min-height: 4.5em;
4490  width: 50%;
4491  box-sizing: border-box;
4492}
4493.buscar_lp.px-mk-buscador-vertical .px-mk-searchform .wrap_PartyTypeSimulator .SelectorInitial {
4494  min-height: 4.5em;
4495  padding: 0.6em 1em;
4496}
4497.buscar_lp.px-mk-buscador-vertical .px-mk-searchform .wrap_PartyTypeSimulator .PartyTypeSimulatorSelect,
4498.buscar_lp.px-mk-buscador-vertical .px-mk-searchform .wrap_PartyTypeSimulator #MultiplePartySelect {
4499  position: static;
4500  background: rgba(248, 248, 248, 0.9725490196);
4501}
4502.buscar_lp.px-mk-buscador-vertical .px-sm-inputcontainer {
4503  border-bottom: 1px solid #ccc;
4504  border-right: none;
4505  max-width: none;
4506  width: 100%;
4507}
4508.buscar_lp.px-mk-buscador-vertical .px-sm-inputcontainer.fechas_ancho_entrada, .buscar_lp.px-mk-buscador-vertical .px-sm-inputcontainer.fechas_ancho_salida {
4509  width: 100%;
4510  box-sizing: border-box;
4511  margin: 0px;
4512}
4513.buscar_lp.px-mk-buscador-vertical .px-sm-inputcontainer.fechas_ancho_salida {
4514  border-left: 1px solid #ccc;
4515}
4516.buscar_lp.px-mk-buscador-vertical .px-sm-inputcontainer.px-mk-productidhidden {
4517  height: 0px;
4518  width: 100%;
4519}
4520.buscar_lp.px-mk-buscador-vertical .px-sm-inputcontainer input,
4521.buscar_lp.px-mk-buscador-vertical .px-sm-inputcontainer select,
4522.buscar_lp.px-mk-buscador-vertical .px-sm-inputcontainer textarea {
4523  max-width: 100%;
4524}
4525
4526.px-mk-filter-disabled {
4527  pointer-events: none !important;
4528  opacity: 0.5 !important;
4529}
4530
4531.px-mk-buscador-vertical.px-mk-searchform .px-sm-inputcontainer:last-child,
4532.px-mk-buscador-vertical .px-sm-inputcontainer:last-child {
4533  border-bottom: none;
4534  border-right: none;
4535}
4536
4537.px-mk-hidesearchform {
4538  opacity: 0;
4539  pointer-events: none;
4540  max-height: 0px;
4541  overflow: hidden;
4542}
4543
4544.ignoreclick {
4545  pointer-events: none;
4546}
4547
4548.px-sm-searchbtn > i {
4549  font-size: 20px;
4550  position: relative;
4551  left: 0;
4552  top: -1px;
4553  margin-right: 20px;
4554  margin-left: -10px;
4555}
4556
4557.btn-searching span {
4558  opacity: 0;
4559  max-width: 0px;
4560  overflow: hidden;
4561  transition: 0.3s ease-out;
4562}
4563
4564#ProductID option {
4565  text-transform: none;
4566}
4567
4568#ProductID option[value=everyproduct] {
4569  font-weight: 600;
4570}
4571
4572#ProductID option[value=""][disabled] {
4573  background-color: #eee;
4574  color: #555;
4575}
4576
4577.px-mk-disabled-temp {
4578  background-color: #eee;
4579  cursor: not-allowed;
4580  pointer-events: none;
4581  color: #bbb;
4582}
4583
4584.px-mk-productid.px-sm-inputcontainer.px-mk-productidhidden {
4585  opacity: 0;
4586  max-width: 0px;
4587  pointer-events: none;
4588  padding: 0px;
4589  margin: 0px;
4590  border: none;
4591}
4592
4593.px-mk-productid.px-sm-inputcontainer {
4594  max-width: 300px;
4595  transition: 0.3s ease;
4596  overflow: hidden;
4597}
4598
4599.px-mk-locationdropdown {
4600  position: absolute;
4601  top: calc(100% + 0.1em);
4602  left: 0;
4603  padding: 0;
4604  line-height: 1.2;
4605  background: white;
4606  box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.16), 0 0 0 1px rgba(0, 0, 0, 0.08);
4607  z-index: 999;
4608  border-radius: 0 0 4px 4px;
4609  max-height: 50vh;
4610  overflow: auto;
4611  transition: 0.3s cubic-bezier(0.25, 0.46, 0.45, 0.94);
4612  opacity: 0;
4613  pointer-events: none;
4614  transform: translateY(-1em);
4615  width: 100%;
4616}
4617.px-mk-locationdropdown.activeAC {
4618  transform: none;
4619  pointer-events: initial;
4620  opacity: 1;
4621}
4622.px-mk-locationdropdown > * {
4623  padding: 1.2em 1.5em;
4624  white-space: nowrap;
4625  max-width: 400px;
4626  overflow: hidden;
4627  text-overflow: ellipsis;
4628  width: 100%;
4629  cursor: pointer;
4630  display: flex;
4631  align-items: center;
4632  justify-content: flex-start;
4633  box-sizing: border-box;
4634}
4635.px-mk-locationdropdown > *.suggestion_hover {
4636  background-color: #f2f2f2;
4637}
4638.px-mk-locationdropdown > *:hover {
4639  background-color: #f2f2f2;
4640}
4641.px-mk-locationdropdown > *:hover .px-mk-locationimg {
4642  fill: goldenrod;
4643}
4644.px-mk-locationdropdown > * .px-mk-locationtxt {
4645  width: 100%;
4646  overflow: hidden;
4647  text-overflow: ellipsis;
4648}
4649.px-mk-locationdropdown > * .px-mk-locationimg {
4650  height: 1.1em;
4651  width: 1.1em;
4652  margin-right: 0.6em;
4653  flex-shrink: 0;
4654  fill: #aaa;
4655  margin-right: 0.8em;
4656}
4657.px-mk-locationdropdown > * .px-mk-locationimg svg {
4658  height: 100%;
4659  width: 100%;
4660  -o-object-fit: contain;
4661     object-fit: contain;
4662}
4663
4664.px-mk-locationautocomplete {
4665  height: 100%;
4666  width: 100%;
4667  box-sizing: border-box;
4668  padding-right: 2em;
4669}
4670.px-mk-locationautocomplete input {
4671  height: 100%;
4672  padding: 0em 1em;
4673  width: 100%;
4674}
4675
4676.ui-datepicker {
4677  font-size: 16px !important;
4678  box-shadow: 0 2px 20px rgba(0, 0, 0, 0.2);
4679  width: auto;
4680  border-radius: 0px !important;
4681  padding: 5px !important;
4682  width: auto !important;
4683  box-sizing: border-box;
4684}
4685
4686.ui-datepicker td {
4687  margin: 0px !important;
4688  padding: 0px;
4689}
4690
4691.ui-datepicker td > * {
4692  height: 40px;
4693  width: 40px !important;
4694  border-radius: 0px !important;
4695  border: 1px solid transparent !important;
4696  box-sizing: border-box;
4697}
4698
4699.ui-datepicker table {
4700  margin: 0px !important;
4701}
4702
4703.neo_marketplace_buscador_v3 * {
4704  font-size: 13px !important;
4705}
4706
4707.neo_marketplace_buscador_v3 input, .neo_marketplace_buscador_v3 select {
4708  font-size: 16px !important;
4709}
4710
4711.neo_modules_cart_hotel_v2 .cart_top_hotel_v2 .PartyTypeSimulator {
4712  width: 100%;
4713}
4714
4715.neo_marketplace_buscador_v3 .PartyTypeSimulatorSelect {
4716  position: absolute;
4717  z-index: 999;
4718  top: 55px;
4719  left: 0px;
4720  padding: 5px;
4721  background: #fff;
4722  margin: 0px;
4723  box-shadow: 0 2px 16px rgba(0, 0, 0, 0.15);
4724  padding: 20px 25px;
4725  line-height: 1.5;
4726  box-sizing: border-box;
4727  width: 300px;
4728  max-width: 100vw;
4729}
4730
4731.txtPartyGroup {
4732  white-space: nowrap;
4733  overflow: hidden;
4734  text-overflow: ellipsis;
4735  margin-right: auto;
4736  padding-right: 30px;
4737}
4738
4739input.neo_partyselector_quantity {
4740  padding: 15px 10px;
4741  font-size: 18px;
4742  text-align: center;
4743  border: none;
4744  background: transparent;
4745  width: 60px;
4746  -moz-appearance: textfield;
4747}
4748input.neo_partyselector_quantity::-webkit-outer-spin-button,
4749input.neo_partyselector_quantity::-webkit-inner-spin-button {
4750  -webkit-appearance: none;
4751  margin: 0;
4752}
4753input.neo_partyselector_quantity:focus {
4754  outline: none;
4755  background-color: rgba(0, 0, 0, 0.03);
4756  border-radius: 5px;
4757}
4758
4759.ChildrensAges {
4760  max-height: 180px;
4761  overflow-y: auto;
4762  overflow-x: hidden;
4763  padding-right: 5px;
4764}
4765.ChildrensAges::-webkit-scrollbar {
4766  width: 6px;
4767}
4768.ChildrensAges::-webkit-scrollbar-track {
4769  background: #f1f1f1;
4770  border-radius: 10px;
4771}
4772.ChildrensAges::-webkit-scrollbar-thumb {
4773  background: #888;
4774  border-radius: 10px;
4775}
4776.ChildrensAges::-webkit-scrollbar-thumb:hover {
4777  background: #555;
4778}
4779
4780@media only screen and (max-width: 650px) {
4781  .PartyTypeSimulatorContainer {
4782    height: auto !important;
4783  }
4784  .PartyTypeSimulatorContainer .PartyTypeSimulatorSelect {
4785    position: static !important;
4786    width: 100%;
4787  }
4788  .px-mk-locationdropdown {
4789    width: 100%;
4790    box-shadow: 0 4px 9px rgba(0, 0, 0, 0.5);
4791  }
4792  .neo_marketplace_buscador_v3 * {
4793    font-size: 15px !important;
4794  }
4795  .neo_marketplace_buscador_v3 input, .neo_marketplace_buscador_v3 select {
4796    font-size: 16px !important;
4797  }
4798  .neo_marketplace_buscador_v3 {
4799    width: 100%;
4800    display: flex;
4801  }
4802  .ui-datepicker {
4803    font-size: 19px !important;
4804    z-index: 1000 !important;
4805    width: calc(100vw - 30px) !important;
4806    left: 10px !important;
4807    box-shadow: 0 2px 20px rgba(0, 0, 0, 0.5);
4808    padding: 10px !important;
4809    box-sizing: border-box;
4810  }
4811  
4812  /* Ajustes para el selector de party en mobile */
4813  .neo_marketplace_buscador_v3 .txtPartyGroup,
4814  .PartyTypeSimulator .txtPartyGroup,
4815  .SelectorInitial .txtPartyGroup {
4816    white-space: normal !important;
4817    overflow: visible !important;
4818    text-overflow: clip !important;
4819    padding-right: 10px !important;
4820    font-size: 10px !important;
4821    line-height: 1.4 !important;
4822    display: flex !important;
4823    flex-wrap: wrap !important;
4824    align-items: center !important;
4825    gap: 2px !important;
4826    max-width: calc(100% - 40px) !important;
4827  }
4828  
4829  .neo_marketplace_buscador_v3 .txtPartyGroup span,
4830  .PartyTypeSimulator .txtPartyGroup span,
4831  .SelectorInitial .txtPartyGroup span {
4832    white-space: nowrap !important;
4833    font-size: 15px !important;
4834  }
4835  
4836  .neo_marketplace_buscador_v3 .txtPartyGroup .mdi-circle-small,
4837  .PartyTypeSimulator .txtPartyGroup .mdi-circle-small,
4838  .SelectorInitial .txtPartyGroup .mdi-circle-small {
4839    font-size: 12px !important;
4840    margin: 0 -3px !important;
4841  }
4842  
4843  .neo_marketplace_buscador_v3 .SelectorInitial,
4844  .PartyTypeSimulator .SelectorInitial {
4845    min-height: 55px !important;
4846    padding: 8px 40px 8px 10px !important;
4847    display: flex !important;
4848    align-items: center !important;
4849  }
4850  
4851  .neo_marketplace_buscador_v3 .PartyTypeSimulatorContainer,
4852  .PartyTypeSimulatorContainer {
4853    overflow: visible !important;
4854  }
4855  
4856  .px-mk-buscador-container {
4857    font-size: 16px;
4858  }
4859  .px-mk-buscador-container select,
4860  .px-mk-buscador-container textarea,
4861  .px-mk-buscador-container input[type=text],
4862  .px-mk-buscador-container input[type=password],
4863  .px-mk-buscador-container input[type=datetime],
4864  .px-mk-buscador-container input[type=datetime-local],
4865  .px-mk-buscador-container input[type=date],
4866  .px-mk-buscador-container input[type=month],
4867  .px-mk-buscador-container input[type=time],
4868  .px-mk-buscador-container input[type=week],
4869  .px-mk-buscador-container input[type=number],
4870  .px-mk-buscador-container input[type=email],
4871  .px-mk-buscador-container input[type=url],
4872  .px-mk-buscador-container input[type=search],
4873  .px-mk-buscador-container input[type=tel],
4874  .px-mk-buscador-container input[type=color] {
4875    font-size: 1em;
4876  }
4877}/*# sourceMappingURL=css.css.map */</style>
4878<script>
4879	(function() {
4880		function run() {
4881			try {
4882				var span = document.querySelector('#PxMkAcion_Search .update-search-span');
4883				var btn = document.getElementById('PxMkAcion_Search');
4884				if (!span) return;
4885
4886				var themeHex = '#b09d21';
4887
4888				function parseHex(hex) {
4889					if (!hex) return null;
4890					hex = String(hex).trim();
4891					if (hex.startsWith('#')) hex = hex.slice(1);
4892					if (hex.length === 3) {
4893						hex = hex.split('').map(function(ch) {
4894							return ch + ch;
4895						}).join('');
4896					}
4897					if (hex.length !== 6) return null;
4898					var r = parseInt(hex.slice(0, 2), 16);
4899					var g = parseInt(hex.slice(2, 4), 16);
4900					var b = parseInt(hex.slice(4, 6), 16);
4901					if ([r, g, b].some(function(v) {
4902							return isNaN(v);
4903						})) return null;
4904					return {
4905						r: r,
4906						g: g,
4907						b: b
4908					};
4909				}
4910
4911				function relL(rgb) {
4912					function toLin(c) {
4913						c = c / 255;
4914						return c <= 0.03928 ? c / 12.92 : Math.pow((c + 0.055) / 1.055, 2.4);
4915					}
4916					var R = toLin(rgb.r),
4917						G = toLin(rgb.g),
4918						B = toLin(rgb.b);
4919					return 0.2126 * R + 0.7152 * G + 0.0722 * B;
4920				}
4921
4922				function contrast(L1, L2) {
4923					var a = Math.max(L1, L2);
4924					var b = Math.min(L1, L2);
4925					return (a + 0.05) / (b + 0.05);
4926				}
4927
4928				var rgb = parseHex(themeHex);
4929				if (!rgb) {
4930					if (btn) {
4931						var bg = window.getComputedStyle(btn).backgroundColor; // rgb(a)
4932						var m = bg && bg.match(/rgba?\((\d+),\s*(\d+),\s*(\d+)/i);
4933						if (m) {
4934							rgb = {
4935								r: parseInt(m[1], 10),
4936								g: parseInt(m[2], 10),
4937								b: parseInt(m[3], 10)
4938							};
4939						}
4940					}
4941				}
4942				if (!rgb) return;
4943
4944				var Lbg = relL(rgb);
4945				var Lwhite = relL({
4946					r: 255,
4947					g: 255,
4948					b: 255
4949				});
4950				var Lblack = relL({
4951					r: 0,
4952					g: 0,
4953					b: 0
4954				});
4955				var cWhite = contrast(Lbg, Lwhite);
4956				var cBlack = contrast(Lbg, Lblack);
4957
4958				var textColor = cBlack >= cWhite ? '#000000' : '#FFFFFF';
4959				span.style.setProperty('color', textColor, 'important');
4960				if (btn) {
4961					btn.style.setProperty('color', textColor, 'important');
4962
4963					// Recolor inline SVG icons (search and loading) to match the contrast color
4964					function paintInlineSVG(container, color) {
4965						try {
4966							var svgs = container.querySelectorAll('svg');
4967							svgs.forEach(function(svg) {
4968								// Support SVGs that use currentColor
4969								svg.style.setProperty('color', color, 'important');
4970								svg.setAttribute('color', color);
4971								// Force fill/stroke via style to override inline attrs
4972								svg.style.setProperty('fill', color, 'important');
4973								svg.style.setProperty('stroke', color, 'important');
4974								// Update common shape elements
4975								svg.querySelectorAll('path, circle, rect, polygon, line, polyline, ellipse, g').forEach(function(node) {
4976									node.style.setProperty('fill', color, 'important');
4977									node.style.setProperty('stroke', color, 'important');
4978								});
4979								// Also override attributes for stubborn icons
4980								svg.querySelectorAll('[fill]').forEach(function(node) {
4981									node.setAttribute('fill', color);
4982								});
4983								svg.querySelectorAll('[stroke]').forEach(function(node) {
4984									node.setAttribute('stroke', color);
4985								});
4986							});
4987						} catch (e) {
4988							/* ignore */
4989						}
4990					}
4991
4992					var iconLabel = btn.querySelector('.px-mk-searchicon');
4993					var loaderLabel = btn.querySelector('.px-mk-searchloader');
4994					if (iconLabel) paintInlineSVG(iconLabel, textColor);
4995					if (loaderLabel) paintInlineSVG(loaderLabel, textColor);
4996				}
4997			} catch (e) {
4998				/* ignore */
4999			}
5000		}
5001
5002		if (document.readyState === 'loading') {
5003			document.addEventListener('DOMContentLoaded', run);
5004		} else {
5005			run();
5006		}
5007	})();
5008</script>
5008
5009	
5009<script>
5010		if (localStorage.getItem('tradename')) {
5011			localStorage.removeItem('tradename');
5012		}
5013	</script>
5013
5014
5015<!-- Scripts para el mapa -->
5016<script src="https://unpkg.com/[email protected]/dist/leaflet.js" integrity="sha512-XQoYMqMTK8LvdxXYG3nZ448hOEQiglfqkJs1NOQV44cWnUrBc8PkAOcXy20w0vlaXaVUearIOBhiXZ5V3ynxwA==" crossorigin=""></script>
vendor: 1 bytes, line 5016
5016
5017<script>
5018	(function() {
5019		// Desactivar logs dentro de este módulo (solo en este scope)
5020		var console = {
5021			log: function() {},
5022			warn: function() {},
5023			error: function() {}
5024		};
5025		// Variables para el mapa
5026		let map;
5027		let marker;
5028		let selectedLat = 0;
5029		let selectedLng = 0;
5030		let radiusCircle; // Variable para el círculo del radio
5031		const defaultZoom = 13;
5032		// Coordenadas por defecto: Mendoza, Argentina
5033		const DEFAULT_LAT = -32.889458;
5034		const DEFAULT_LNG = -68.845839;
5035		const DEFAULT_RADIUS = 50000; // 50km en metros
5036
5037		// Elementos del DOM
5038		const mapModal = document.getElementById('map-modal');
5039		const mapBtn = document.getElementById('map-search-btn');
5040		const closeBtn = document.querySelector('.map-close');
5041		const confirmBtn = document.getElementById('confirm-location');
5042		const enableLocationGuideBtn = document.getElementById('enable-location-guide');
5043		const centerLocationBtn = document.getElementById('center-location');
5044		const locationPermissionsGuide = document.getElementById('location-permissions-guide');
5045		const browserGuideContent = document.getElementById('browser-guide-content');
5046		const closeGuideBtn = document.getElementById('close-guide');
5047		const latitudeInput = document.getElementById('webroot_latitude');
5048		const longitudeInput = document.getElementById('webroot_longitude');
5049		const radiusInput = document.getElementById('webroot_distance_radius');
5050		const locationInput = document.getElementById('webroot_location_search');
5051		const locationGoogleSearch = document.getElementById('location_google_search');
5052
5053		// Variables para rastrear estado de permisos
5054		let locationPermissionsDenied = false;
5055		let locationPermissionsEnabled = false;
5056
5057		// Función para detectar el navegador
5058		function detectBrowser() {
5059			const userAgent = navigator.userAgent.toLowerCase();
5060			if (userAgent.includes('chrome') && !userAgent.includes('edg')) return 'chrome';
5061			if (userAgent.includes('firefox')) return 'firefox';
5062			if (userAgent.includes('safari') && !userAgent.includes('chrome')) return 'safari';
5063			if (userAgent.includes('edg')) return 'edge';
5064			return 'chrome';
5065		}
5066
5067		// Función para obtener el contenido de la guía según el navegador
5068		function getBrowserGuideContent(browser) {
5069			const guides = {
5070				chrome: {
5071					title: 'Google Chrome',
5072					steps: [
5073						'Haz clic en el icono de candado en la barra de direcciones',
5074						'Selecciona "Configuración del sitio" o "Permisos"',
5075						'Cambia "Ubicación" de "Bloquear" a "Permitir"',
5076						'Recarga la página'
5077					],
5078					link: 'https://support.google.com/chrome/answer/142065'
5079				},
5080				firefox: {
5081					title: 'Mozilla Firefox',
5082					steps: [
5083						'Haz clic en el icono de escudo en la barra de direcciones',
5084						'Selecciona "Configuración mejorada de seguimiento"',
5085						'Habilita los permisos de ubicación para este sitio',
5086						'Recarga la página'
5087					],
5088					link: 'https://support.mozilla.org/es/kb/compartir-ubicacion-con-sitios-web'
5089				},
5090				safari: {
5091					title: 'Safari',
5092					steps: [
5093						'Ve a Safari > Preferencias > Sitios web',
5094						'Selecciona "Ubicación" en la barra lateral',
5095						'Encuentra este sitio y cambia a "Permitir"',
5096						'Recarga la página'
5097					],
5098					link: 'https://support.apple.com/es-es/guide/safari/ibrw1056/mac'
5099				},
5100				edge: {
5101					title: 'Microsoft Edge',
5102					steps: [
5103						'Haz clic en el icono de candado en la barra de direcciones',
5104						'Selecciona "Permisos para este sitio"',
5105						'Cambia "Ubicación" a "Permitir"',
5106						'Recarga la página'
5107					],
5108					link: 'https://support.microsoft.com/es-es/microsoft-edge/ubicaci%C3%B3n-y-privacidad-en-microsoft-edge-31b5d9e7-bb24-43a0-8b0e-d9f4b38f6cf5'
5109				}
5110			};
5111			return guides[browser] || guides.chrome;
5112		}
5113
5114		// Función para mostrar la guía de permisos
5115		function showLocationPermissionsGuide() {
5116			const browser = detectBrowser();
5117			const guide = getBrowserGuideContent(browser);
5118
5119			let content = `
5120				<div style="margin: 10px 0; padding: 15px; background: white; border-radius: 6px; border: 1px solid #e5e7eb;">
5121					<h5 style="margin: 0 0 8px 0; color: #374151; font-size: 16px; font-weight: 600;">Instrucciones para ${guide.title}</h5>
5122					<p style="margin: 0 0 12px 0; color: #6b7280; font-size: 13px;">Sigue estos pasos para habilitar los permisos:</p>
5123					<ol style="margin: 8px 0 8px 20px; padding: 0;">
5124			`;
5125
5126			guide.steps.forEach(step => {
5127				content += `<li style="margin: 6px 0; font-size: 14px; color: #4b5563;">${step}</li>`;
5128			});
5129
5130			content += `
5131					</ol>
5132					<a href="${guide.link}" target="_blank" style="display: inline-block; margin-top: 10px; color: #3b82f6; text-decoration: none; font-size: 13px;">
5133						Ver guía oficial de ${guide.title} ↗
5134					</a>
5135				</div>
5136			`;
5137
5138			if (browserGuideContent) {
5139				browserGuideContent.innerHTML = content;
5140			}
5141
5142			if (locationPermissionsGuide) {
5143				locationPermissionsGuide.style.display = 'block';
5144			}
5145		}
5146
5147		// Función para ocultar la guía de permisos
5148		function hideLocationPermissionsGuide() {
5149			if (locationPermissionsGuide) {
5150				locationPermissionsGuide.style.display = 'none';
5151			}
5152		}
5153
5154		// Función para centrar el mapa en la ubicación actual
5155		function centerMapOnCurrentLocation() {
5156			if (!navigator.geolocation) {
5157				alert('Tu navegador no soporta geolocalización.');
5158				return;
5159			}
5160
5161			// Mostrar loader en el botón centrar
5162			if (centerLocationBtn) {
5163				const loader = centerLocationBtn.querySelector('.center-btn-loader');
5164				const text = centerLocationBtn.querySelector('.center-btn-text');
5165				if (loader && text) {
5166					loader.style.display = 'inline-block';
5167					text.style.display = 'none';
5168				}
5169				centerLocationBtn.disabled = true;
5170			}
5171
5172			navigator.geolocation.getCurrentPosition(
5173				async function(position) {
5174						const lat = position.coords.latitude;
5175						const lng = position.coords.longitude;
5176
5177						// Centrar el mapa en la nueva ubicación
5178						if (map) {
5179							map.setView([lat, lng], defaultZoom);
5180
5181							// Remover marcador anterior si existe
5182							if (marker) {
5183								map.removeLayer(marker);
5184							}
5185
5186							// Añadir nuevo marcador
5187							marker = L.marker([lat, lng], {
5188								draggable: true
5189							}).addTo(map);
5190
5191							// Actualizar posición del círculo
5192							if (radiusCircle) {
5193								radiusCircle.setLatLng([lat, lng]);
5194							} else {
5195								// Si por alguna razón no existe, crearlo
5196								const radiusSelect = document.getElementById('radius-select');
5197								const currentRadius = radiusSelect ? parseInt(radiusSelect.value) : DEFAULT_RADIUS;
5198								radiusCircle = L.circle([lat, lng], {
5199									color: '#3388ff',
5200									fillColor: '#3388ff',
5201									fillOpacity: 0.2,
5202									radius: currentRadius
5203								}).addTo(map);
5204							}
5205
5206							// Actualizar coordenadas seleccionadas
5207							selectedLat = lat;
5208							selectedLng = lng;
5209
5210							// Obtener información de ubicación para el marcador
5211							try {
5212								const locationName = await getAddressFromCoordinates(lat, lng);
5213								if (locationName && !locationName.includes(lat.toString())) {
5214									marker.bindPopup(locationName).openPopup();
5215								}
5216							} catch (error) {
5217								console.log('⚠️ No se pudo obtener información de ubicación para el marcador');
5218							}
5219
5220							// Actualizar coordenadas al arrastrar el marcador
5221							marker.on('dragend', async function(e) {
5222								const position = marker.getLatLng();
5223								selectedLat = position.lat;
5224								selectedLng = position.lng;
5225
5226								// Actualizar posición del círculo
5227								if (radiusCircle) {
5228									radiusCircle.setLatLng(position);
5229								}
5230
5231								// Actualizar popup al arrastrar
5232								try {
5233									const newLocationName = await getAddressFromCoordinates(selectedLat, selectedLng);
5234									if (newLocationName && !newLocationName.includes(selectedLat.toString())) {
5235										marker.setPopupContent(newLocationName);
5236									}
5237								} catch (error) {
5238									console.log('⚠️ No se pudo actualizar información al arrastrar');
5239								}
5240							});
5241
5242							// Actualizar coordenadas al arrastrar el marcador
5243							marker.on('dragend', async function(e) {
5244								const position = marker.getLatLng();
5245								selectedLat = position.lat;
5246								selectedLng = position.lng;
5247
5248								// Actualizar popup al arrastrar
5249								try {
5250									const newLocationName = await getAddressFromCoordinates(selectedLat, selectedLng);
5251									if (newLocationName && !newLocationName.includes(selectedLat.toString())) {
5252										marker.setPopupContent(newLocationName);
5253									}
5254								} catch (error) {
5255									console.log('⚠️ No se pudo actualizar información al arrastrar');
5256								}
5257							});
5258						}
5259
5260						// Ocultar loader del botón
5261						if (centerLocationBtn) {
5262							const loader = centerLocationBtn.querySelector('.center-btn-loader');
5263							const text = centerLocationBtn.querySelector('.center-btn-text');
5264							if (loader && text) {
5265								loader.style.display = 'none';
5266								text.style.display = 'inline-block';
5267							}
5268							centerLocationBtn.disabled = false;
5269						}
5270					},
5271					function(error) {
5272						console.log('Error al obtener ubicación actual:', error);
5273						alert('No se pudo obtener tu ubicación actual. Verifica que los permisos estén habilitados.');
5274
5275						// Ocultar loader del botón
5276						if (centerLocationBtn) {
5277							const loader = centerLocationBtn.querySelector('.center-btn-loader');
5278							const text = centerLocationBtn.querySelector('.center-btn-text');
5279							if (loader && text) {
5280								loader.style.display = 'none';
5281								text.style.display = 'inline-block';
5282							}
5283							centerLocationBtn.disabled = false;
5284						}
5285					}
5286			);
5287		}
5288
5289		console.log('Botón de mapa:', mapBtn); // Debug para verificar que el botón existe
5290
5291		// Asegurar que el modal existe en el DOM
5292		if (!mapModal) {
5293			console.error('Modal de mapa no encontrado en el DOM');
5294			// Añadir el modal al final del body si no existe
5295			const modalHTML = `
5296				<div id="map-modal" class="map-modal">
5297					<div class="map-modal-content">
5298						<span class="map-close">&times;</span>
5299						<h3>Selecciona una ubicación en el mapa</h3>
5300						<div id="map-container"></div>
5301						<div class="map-footer">
5302							<div class="map-footer-controls">
5303								<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;">
5304									<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>
5305									<span class="center-btn-text">Localizarme</span>
5306								</button>
5307								<div class="radius-selector">
5308									<label for="radius-select" style="margin-right: 5px; font-weight: bold;">Radio:</label>
5309									<select id="radius-select" style="padding: 8px; border-radius: 4px; border: 1px solid #ccc;">
5310										<option value="10000">10 km</option>
5311										<option value="30000">30 km</option>
5312										<option value="50000" selected>50 km</option>
5313										<option value="100000">100 km</option>
5314									</select>
5315								</div>
5316							</div>
5317							<button id="confirm-location" class="neo_bgcolor_primary">
5318								<span class="btn-loader"></span>
5319								<span class="btn-text">Buscar en esta zona</span>
5320							</button>
5321						</div>
5322					</div>
5323				</div>
5324			`;
5325			document.body.insertAdjacentHTML('beforeend', modalHTML);
5326		}
5327
5328		// Función para inicializar el mapa
5329		function initMap(lat, lng) {
5330			// Limpiar mapa existente de manera segura
5331			if (map) {
5332				try {
5333					map.remove();
5334				} catch (e) {
5335					console.log('Error al remover mapa:', e);
5336				}
5337				map = null;
5338			}
5339
5340			// Reset marker
5341			marker = null;
5342
5343			// Coordenadas por defecto (si no hay seleccionadas): Mendoza
5344			lat = (typeof lat === 'number' ? lat : null) ?? DEFAULT_LAT;
5345			lng = (typeof lng === 'number' ? lng : null) ?? DEFAULT_LNG;
5346
5347			// Crear mapa con un timeout para asegurar que el contenedor está visible
5348			setTimeout(() => {
5349				try {
5350					// Verificar que el contenedor principal existe
5351					const mapContainer = document.getElementById('map-container');
5352					if (!mapContainer) {
5353						console.error('Contenedor del mapa no encontrado');
5354						return;
5355					}
5356
5357					// Crear un nuevo contenedor para evitar el error de "already initialized"
5358					const mapId = 'map-instance-' + Date.now();
5359					mapContainer.innerHTML = `<div id="${mapId}" style="height: 100%; width: 100%;"></div>`;
5360
5361					// Crear el mapa en el nuevo contenedor
5362					map = L.map(mapId, {
5363						scrollWheelZoom: true
5364					}).setView([lat, lng], defaultZoom);
5365
5366					// Invalidar tamaño inmediatamente para asegurar renderizado correcto
5367					map.invalidateSize();
5368
5369					// Añadir capa de mapa base (OpenStreetMap)
5370					L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {
5371						attribution: '&copy; <a href="https://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors'
5372					}).addTo(map);
5373
5374					// Añadir marcador SIEMPRE (incluido Mendoza por defecto) y preparar comportamiento
5375					marker = L.marker([lat, lng], {
5376						draggable: true
5377					}).addTo(map);
5378
5379					// Dibujar círculo de radio inicial
5380					const radiusSelect = document.getElementById('radius-select');
5381					const initialRadius = radiusSelect ? parseInt(radiusSelect.value) : DEFAULT_RADIUS;
5382
5383					radiusCircle = L.circle([lat, lng], {
5384						color: '#3388ff',
5385						fillColor: '#3388ff',
5386						fillOpacity: 0.2,
5387						radius: initialRadius
5388					}).addTo(map);
5389
5390					// Evento para actualizar el radio cuando cambia el select
5391					if (radiusSelect) {
5392						// Remover listeners anteriores para evitar duplicados
5393						const newRadiusSelect = radiusSelect.cloneNode(true);
5394						radiusSelect.parentNode.replaceChild(newRadiusSelect, radiusSelect);
5395
5396						newRadiusSelect.addEventListener('change', function() {
5397							const newRadius = parseInt(this.value);
5398							if (radiusCircle) {
5399								radiusCircle.setRadius(newRadius);
5400							}
5401						});
5402					}
5403
5404					// Obtener información de ubicación para el marcador inicial
5405					(async () => {
5406						try {
5407							const locationName = await getAddressFromCoordinates(lat, lng);
5408							if (locationName && !locationName.includes(lat.toString())) {
5409								marker.bindPopup(locationName);
5410								console.log('📍 Información inicial del marcador:', locationName);
5411							}
5412						} catch (error) {
5413							console.log('⚠️ No se pudo obtener información inicial del marcador');
5414						}
5415					})();
5416
5417					// Actualizar coordenadas al arrastrar el marcador
5418					marker.on('dragend', async function(e) {
5419						const position = marker.getLatLng();
5420						selectedLat = position.lat;
5421						selectedLng = position.lng;
5422
5423						// Actualizar posición del círculo
5424						if (radiusCircle) {
5425							radiusCircle.setLatLng(position);
5426						}
5427
5428						// Actualizar popup al arrastrar
5429						try {
5430							const newLocationName = await getAddressFromCoordinates(selectedLat, selectedLng);
5431							if (newLocationName && !newLocationName.includes(selectedLat.toString())) {
5432								marker.setPopupContent(newLocationName);
5433							}
5434						} catch (error) {
5435							console.log('⚠️ No se pudo actualizar información al arrastrar');
5436						}
5437					});
5438
5439					selectedLat = lat;
5440					selectedLng = lng;
5441
5442					// Añadir evento de clic al mapa
5443					map.on('click', async function(e) {
5444						// Si ya existe un marcador, lo eliminamos
5445						if (marker) {
5446							map.removeLayer(marker);
5447						}
5448
5449						// Añadir nuevo marcador en la posición del clic
5450						marker = L.marker(e.latlng, {
5451							draggable: true
5452						}).addTo(map);
5453
5454						// Actualizar posición del círculo
5455						if (radiusCircle) {
5456							radiusCircle.setLatLng(e.latlng);
5457						} else {
5458							// Si por alguna razón no existe, crearlo
5459							const radiusSelect = document.getElementById('radius-select');
5460							const currentRadius = radiusSelect ? parseInt(radiusSelect.value) : DEFAULT_RADIUS;
5461							radiusCircle = L.circle(e.latlng, {
5462								color: '#3388ff',
5463								fillColor: '#3388ff',
5464								fillOpacity: 0.2,
5465								radius: currentRadius
5466							}).addTo(map);
5467						}
5468
5469						// Guardar coordenadas seleccionadas
5470						selectedLat = e.latlng.lat;
5471						selectedLng = e.latlng.lng;
5472
5473						// Intentar obtener y mostrar información de ubicación en el marcador
5474						try {
5475							const locationName = await getAddressFromCoordinates(selectedLat, selectedLng);
5476							if (locationName && !locationName.includes(selectedLat.toString())) {
5477								marker.bindPopup(locationName).openPopup();
5478								console.log('📍 Información del marcador establecida:', locationName);
5479							}
5480						} catch (error) {
5481							console.log('⚠️ No se pudo obtener información de ubicación para el marcador');
5482						}
5483
5484						// Actualizar coordenadas al arrastrar el marcador
5485						marker.on('dragend', async function(e) {
5486							const position = marker.getLatLng();
5487							selectedLat = position.lat;
5488							selectedLng = position.lng;
5489
5490							// Actualizar posición del círculo
5491							if (radiusCircle) {
5492								radiusCircle.setLatLng(position);
5493							}
5494
5495							// Actualizar popup al arrastrar
5496							try {
5497								const newLocationName = await getAddressFromCoordinates(selectedLat, selectedLng);
5498								if (newLocationName && !newLocationName.includes(selectedLat.toString())) {
5499									marker.setPopupContent(newLocationName);
5500								}
5501							} catch (error) {
5502								console.log('⚠️ No se pudo actualizar información al arrastrar');
5503							}
5504						});
5505					});
5506
5507					// Invalidar tamaño para asegurar que se renderiza correctamente
5508					setTimeout(() => {
5509						if (map) {
5510							map.invalidateSize();
5511						}
5512					}, 100);
5513					// Segundo intento para móviles lentos
5514					setTimeout(() => {
5515						if (map) {
5516							map.invalidateSize();
5517						}
5518					}, 500);
5519				} catch (e) {
5520					console.error('Error al inicializar el mapa:', e);
5521				}
5522			}, 500); // Aumentar timeout para dar más tiempo al modal
5523		}
5524
5525		// Evento clic en botón de mapa (consolidado en un único listener)
5526		if (mapBtn) {
5527			console.log('Asignando evento click al botón de mapa');
5528
5529			function openMapModalHandler(e) {
5530				console.log('Botón de mapa clickeado');
5531				e.preventDefault();
5532				e.stopPropagation();
5533				mapModal.style.display = 'flex';
5534
5535				// Resetear estado de permisos y ocultar elementos al abrir el modal
5536				locationPermissionsDenied = false;
5537				locationPermissionsEnabled = false;
5538				if (enableLocationGuideBtn) enableLocationGuideBtn.style.display = 'none';
5539				if (centerLocationBtn) centerLocationBtn.style.display = 'none';
5540				hideLocationPermissionsGuide();
5541
5542				// Si ya hay coordenadas guardadas, las usamos
5543				const currentLat = latitudeInput.value ? parseFloat(latitudeInput.value) : null;
5544				const currentLng = longitudeInput.value ? parseFloat(longitudeInput.value) : null;
5545
5546				if (currentLat && currentLng) {
5547					initMap(currentLat, currentLng);
5548				} else {
5549					// Inicializar inmediatamente con Mendoza para evitar mapa en blanco
5550					initMap(DEFAULT_LAT, DEFAULT_LNG);
5551
5552					// Mostrar botón de centrar si la geolocalización está disponible en el navegador
5553					if (navigator.geolocation) {
5554						if (centerLocationBtn) centerLocationBtn.style.display = 'inline-block';
5555					}
5556				}
5557				return false;
5558			}
5559
5560			// Agregar un único listener
5561			mapBtn.addEventListener('click', openMapModalHandler);
5562		} else {
5563			console.error('El botón de mapa no se encontró en el DOM');
5564		}
5565
5566		// Event listeners para los botones de la guía
5567		if (enableLocationGuideBtn) {
5568			enableLocationGuideBtn.addEventListener('click', function() {
5569				showLocationPermissionsGuide();
5570			});
5571		}
5572
5573		if (closeGuideBtn) {
5574			closeGuideBtn.addEventListener('click', function() {
5575				hideLocationPermissionsGuide();
5576			});
5577		}
5578
5579		// Event listener para el botón "Centrar"
5580		if (centerLocationBtn) {
5581			centerLocationBtn.addEventListener('click', function() {
5582				centerMapOnCurrentLocation();
5583			});
5584		}
5585
5586		// Cerrar modal
5587		if (closeBtn) {
5588			closeBtn.addEventListener('click', function() {
5589				mapModal.style.display = 'none';
5590				// Resetear estado al cerrar
5591				locationPermissionsDenied = false;
5592				locationPermissionsEnabled = false;
5593				if (enableLocationGuideBtn) enableLocationGuideBtn.style.display = 'none';
5594				if (centerLocationBtn) centerLocationBtn.style.display = 'none';
5595				hideLocationPermissionsGuide();
5596				// Limpiar mapa al cerrar
5597				if (map) {
5598					try {
5599						map.remove();
5600					} catch (e) {
5601						console.log('Error al limpiar mapa:', e);
5602					}
5603					map = null;
5604					marker = null;
5605				}
5606			});
5607		}
5608
5609		// Cerrar modal al hacer clic fuera del contenido
5610		window.addEventListener('click', function(event) {
5611			if (event.target === mapModal) {
5612				mapModal.style.display = 'none';
5613				// Resetear estado al cerrar
5614				locationPermissionsDenied = false;
5615				locationPermissionsEnabled = false;
5616				if (enableLocationGuideBtn) enableLocationGuideBtn.style.display = 'none';
5617				if (centerLocationBtn) centerLocationBtn.style.display = 'none';
5618				hideLocationPermissionsGuide();
5619				// Limpiar mapa al cerrar
5620				if (map) {
5621					try {
5622						map.remove();
5623					} catch (e) {
5624						console.log('Error al limpiar mapa:', e);
5625					}
5626					map = null;
5627					marker = null;
5628				}
5629			}
5630		});
5631
5632		// Confirmar ubicación seleccionada
5633		if (confirmBtn) {
5634			confirmBtn.addEventListener('click', async function() {
5635				if (selectedLat && selectedLng) {
5636					// Mostrar loader y deshabilitar botón
5637					confirmBtn.classList.add('loading');
5638					confirmBtn.disabled = true;
5639
5640					try {
5641						// Guardar coordenadas en los campos hidden
5642						latitudeInput.value = selectedLat;
5643						longitudeInput.value = selectedLng;
5644						const radiusSelect = document.getElementById('radius-select');
5645						radiusInput.value = radiusSelect ? radiusSelect.value : DEFAULT_RADIUS;
5646
5647						// Intentar obtener información del marcador primero
5648						let address = '';
5649
5650						// Verificar si el marcador tiene información de ubicación
5651						if (marker && marker.getPopup && marker.getPopup()) {
5652							const popupContent = marker.getPopup().getContent();
5653							if (popupContent && typeof popupContent === 'string' && popupContent.trim() !== '') {
5654								address = popupContent;
5655								console.log('📍 Usando información del marcador:', address);
5656							}
5657						}
5658
5659						// Si el mapa no proporcionó información, hacer reverse geocoding
5660						if (!address || address.includes('lat') || address.includes('lng')) {
5661							console.log('🗺️ Obteniendo dirección para coordenadas:', selectedLat, selectedLng);
5662							address = await getAddressFromCoordinates(selectedLat, selectedLng);
5663							console.log('🏙️ Dirección obtenida via geocoding:', address);
5664						}
5665
5666						locationInput.value = address;
5667
5668						// Si existe el campo visible de búsqueda, también lo actualizamos
5669						if (locationGoogleSearch) {
5670							console.log('📝 Actualizando campo visible con:', address);
5671							locationGoogleSearch.value = address;
5672						}
5673
5674						// Definimos el tipo de búsqueda
5675						const searchTypeInput = document.getElementById('SearchType');
5676						if (searchTypeInput) {
5677							searchTypeInput.value = 'lat_lng';
5678						}
5679
5680						// Pequeña pausa para mostrar que el proceso se completó
5681						await new Promise(resolve => setTimeout(resolve, 500));
5682
5683						// Cerrar el modal
5684						mapModal.style.display = 'none';
5685
5686						// Limpiar mapa después de confirmar
5687						if (map) {
5688							try {
5689								map.remove();
5690							} catch (e) {
5691								console.log('Error al limpiar mapa después de confirmar:', e);
5692							}
5693							map = null;
5694							marker = null;
5695						}
5696					} catch (error) {
5697						console.error('Error al procesar la ubicación:', error);
5698						alert('Error al procesar la ubicación. Por favor, inténtelo de nuevo.');
5699					} finally {
5700						// Ocultar loader y rehabilitar botón
5701						confirmBtn.classList.remove('loading');
5702						confirmBtn.disabled = false;
5703					}
5704				} else {
5705					alert('Por favor, seleccione una ubicación en el mapa antes de confirmar.');
5706				}
5707			});
5708		}
5709
5710		// Función para obtener la dirección aproximada a partir de coordenadas
5711		async function getAddressFromCoordinates(lat, lng) {
5712			try {
5713				console.log('🌐 Solicitando dirección para:', lat, lng);
5714
5715				// Intentar con el servicio que ya está funcionando en el autocomplete
5716				const response = await fetch(`https://ipapi.co/${lat},${lng}/json/`);
5717
5718				if (!response.ok) {
5719					throw new Error(`HTTP ${response.status}`);
5720				}
5721
5722				const data = await response.json();
5723				console.log('📥 Respuesta de ipapi.co:', data);
5724
5725				if (data && !data.error) {
5726					let locationName = '';
5727
5728					// Extraer información útil en orden de preferencia
5729					if (data.city) {
5730						locationName = data.city;
5731					} else if (data.region) {
5732						locationName = data.region;
5733					}
5734
5735					// Agregar región/estado si existe y es diferente
5736					if (data.region && data.region !== locationName && locationName) {
5737						locationName += `, ${data.region}`;
5738					}
5739
5740					// Agregar país si existe
5741					if (data.country_name) {
5742						locationName += locationName ? `, ${data.country_name}` : data.country_name;
5743					}
5744
5745					const finalResult = locationName || `${lat.toFixed(4)}, ${lng.toFixed(4)}`;
5746					console.log('✅ Dirección procesada:', finalResult);
5747					return finalResult;
5748				} else {
5749					throw new Error('No data received or API error');
5750				}
5751			} catch (error) {
5752				console.warn('⚠️ Error con ipapi.co, intentando con método alternativo:', error);
5753
5754				// Fallback: usar reverse geocoding simplificado
5755				try {
5756					// Intentar con un servicio público que sí permite CORS
5757					const response = await fetch(`https://api.bigdatacloud.net/data/reverse-geocode-client?latitude=${lat}&longitude=${lng}&localityLanguage=es`);
5758					const data = await response.json();
5759					console.log('📥 Respuesta de BigDataCloud:', data);
5760
5761					if (data) {
5762						let locationName = '';
5763
5764						if (data.city) {
5765							locationName = data.city;
5766						} else if (data.locality) {
5767							locationName = data.locality;
5768						} else if (data.principalSubdivision) {
5769							locationName = data.principalSubdivision;
5770						}
5771
5772						// Agregar país
5773						if (data.countryName && locationName) {
5774							locationName += `, ${data.countryName}`;
5775						} else if (data.countryName) {
5776							locationName = data.countryName;
5777						}
5778
5779						const finalResult = locationName || `${lat.toFixed(4)}, ${lng.toFixed(4)}`;
5780						console.log('✅ Dirección obtenida con BigDataCloud:', finalResult);
5781						return finalResult;
5782					}
5783				} catch (secondError) {
5784					console.error('💥 Error con ambos servicios:', secondError);
5785				}
5786
5787				// Si todo falla, devolver coordenadas simplificadas
5788				const errorResult = `${lat.toFixed(4)}, ${lng.toFixed(4)}`;
5789				console.log('🎯 Usando coordenadas como último recurso:', errorResult);
5790				return errorResult;
5791			}
5792		}
5793
5794		// Mover el modal de mapa al final del body para evitar problemas de desbordamiento
5795		document.addEventListener("DOMContentLoaded", function() {
5796			if (mapModal && document.body) {
5797				document.body.appendChild(mapModal);
5798			}
5799		});
5800	})();
5801</script>
5801
5802
5803<!-- Script independiente para limpiar modal si no hay botón de mapa -->
5804<script>
5805	(function() {
5806		// Función robusta para limpiar el modal
5807		function cleanupMapModal() {
5808			try {
5809				// Verificar si existe el botón del mapa
5810				const mapBtn = document.getElementById('map-search-btn');
5811
5812				if (!mapBtn) {
5813					console.log('🗑️ Botón del mapa no encontrado - removiendo modal del mapa...');
5814					// Si no existe el botón, remover el modal del mapa
5815					const mapModal = document.getElementById('map-modal');
5816					if (mapModal) {
5817						mapModal.remove();
5818						console.log('✅ Modal del mapa removido correctamente');
5819						return true; // Indica que se completó la limpieza
5820					}
5821				} else {
5822					console.log('✅ Botón del mapa encontrado - modal del mapa disponible');
5823					return true; // Indica que se completó la verificación
5824				}
5825			} catch (error) {
5826				console.error('Error al limpiar modal del mapa:', error);
5827			}
5828			return false; // Indica que no se pudo completar
5829		}
5830
5831		// Estrategia 1: Ejecutar inmediatamente si el DOM ya está listo
5832		if (document.readyState === 'loading') {
5833			// El DOM aún se está cargando, usar múltiples eventos
5834			let cleaned = false;
5835
5836			// Función que se ejecuta una sola vez
5837			function tryCleanup() {
5838				if (!cleaned && cleanupMapModal()) {
5839					cleaned = true;
5840				}
5841			}
5842
5843			// Estrategia 2: Múltiples eventos para garantizar ejecución
5844			document.addEventListener('DOMContentLoaded', tryCleanup);
5845			document.addEventListener('readystatechange', function() {
5846				if (document.readyState === 'interactive' || document.readyState === 'complete') {
5847					tryCleanup();
5848				}
5849			});
5850			window.addEventListener('load', tryCleanup);
5851
5852			// Estrategia 3: Verificación periódica como respaldo
5853			let attempts = 0;
5854			const maxAttempts = 20; // Máximo 2 segundos
5855			const checkInterval = setInterval(function() {
5856				attempts++;
5857				if (cleaned || attempts >= maxAttempts) {
5858					clearInterval(checkInterval);
5859					return;
5860				}
5861
5862				// Verificar si el DOM está listo
5863				if (document.readyState === 'interactive' || document.readyState === 'complete') {
5864					if (cleanupMapModal()) {
5865						cleaned = true;
5866						clearInterval(checkInterval);
5867					}
5868				}
5869			}, 100);
5870
5871		} else {
5872			// El DOM ya está listo, ejecutar inmediatamente
5873			cleanupMapModal();
5874		}
5875	})();
5876</script>
vendor: 1 bytes, line 5876
5876
5877<script>
5878	(function() {
5879		function run() {
5880			try {
5881				var span = document.querySelector('#PxMkAcion_Search .update-search-span');
5882				var btn = document.getElementById('PxMkAcion_Search');
5883				if (!span) return;
5884
5885				var themeHex = '#b09d21';
5886
5887				function parseHex(hex) {
5888					if (!hex) return null;
5889					hex = String(hex).trim();
5890					if (hex.startsWith('#')) hex = hex.slice(1);
5891					if (hex.length === 3) {
5892						hex = hex.split('').map(function(ch) {
5893							return ch + ch;
5894						}).join('');
5895					}
5896					if (hex.length !== 6) return null;
5897					var r = parseInt(hex.slice(0, 2), 16);
5898					var g = parseInt(hex.slice(2, 4), 16);
5899					var b = parseInt(hex.slice(4, 6), 16);
5900					if ([r, g, b].some(function(v) {
5901							return isNaN(v);
5902						})) return null;
5903					return {
5904						r: r,
5905						g: g,
5906						b: b
5907					};
5908				}
5909
5910				function relL(rgb) {
5911					function toLin(c) {
5912						c = c / 255;
5913						return c <= 0.03928 ? c / 12.92 : Math.pow((c + 0.055) / 1.055, 2.4);
5914					}
5915					var R = toLin(rgb.r),
5916						G = toLin(rgb.g),
5917						B = toLin(rgb.b);
5918					return 0.2126 * R + 0.7152 * G + 0.0722 * B;
5919				}
5920
5921				function contrast(L1, L2) {
5922					var a = Math.max(L1, L2);
5923					var b = Math.min(L1, L2);
5924					return (a + 0.05) / (b + 0.05);
5925				}
5926
5927				var rgb = parseHex(themeHex);
5928				if (!rgb) {
5929					if (btn) {
5930						var bg = window.getComputedStyle(btn).backgroundColor; // rgb(a)
5931						var m = bg && bg.match(/rgba?\((\d+),\s*(\d+),\s*(\d+)/i);
5932						if (m) {
5933							rgb = {
5934								r: parseInt(m[1], 10),
5935								g: parseInt(m[2], 10),
5936								b: parseInt(m[3], 10)
5937							};
5938						}
5939					}
5940				}
5941				if (!rgb) return;
5942
5943				var Lbg = relL(rgb);
5944				var Lwhite = relL({
5945					r: 255,
5946					g: 255,
5947					b: 255
5948				});
5949				var Lblack = relL({
5950					r: 0,
5951					g: 0,
5952					b: 0
5953				});
5954				var cWhite = contrast(Lbg, Lwhite);
5955				var cBlack = contrast(Lbg, Lblack);
5956
5957				var textColor = cBlack >= cWhite ? '#000000' : '#FFFFFF';
5958				span.style.setProperty('color', textColor, 'important');
5959				if (btn) {
5960					btn.style.setProperty('color', textColor, 'important');
5961
5962					// Recolor inline SVG icons (search and loading) to match contrast color
5963					function paintInlineSVG(container, color) {
5964						try {
5965							var svgs = container.querySelectorAll('svg');
5966							svgs.forEach(function(svg) {
5967								// Support SVGs that use currentColor
5968								svg.style.setProperty('color', color, 'important');
5969								svg.setAttribute('color', color);
5970								// Force fill/stroke
5971								svg.style.setProperty('fill', color, 'important');
5972								svg.style.setProperty('stroke', color, 'important');
5973								// Update common shape elements
5974								svg.querySelectorAll('path, circle, rect, polygon, line, polyline, ellipse, g').forEach(function(node) {
5975									node.style.setProperty('fill', color, 'important');
5976									node.style.setProperty('stroke', color, 'important');
5977								});
5978
5979								// Override attributes if they exist
5980								svg.querySelectorAll('[fill]').forEach(function(node) {
5981									node.setAttribute('fill', color);
5982								});
5983								svg.querySelectorAll('[stroke]').forEach(function(node) {
5984									node.setAttribute('stroke', color);
5985								});
5986							});
5987						} catch (e) {
5988							/* ignore */
5989						}
5990					}
5991
5992					var iconLabel = btn.querySelector('.px-mk-searchicon');
5993					var loaderLabel = btn.querySelector('.px-mk-searchloader');
5994					if (iconLabel) paintInlineSVG(iconLabel, textColor);
5995					if (loaderLabel) paintInlineSVG(loaderLabel, textColor);
5996				}
5997			} catch (e) {
5998				/* ignore */
5999			}
6000		}
6001
6002		if (document.readyState === 'loading') {
6003			document.addEventListener('DOMContentLoaded', run);
6004		} else {
6005			run();
6006		}
6007	})();
6008</script>
6008			  </div>
6009			  </div></div></div><div  class='container-neo-slider amerian_swiper_main'  Slide='HomePage' Width='1900' Height='600' Loop='true' Effect='Fade '>
6010			  <div class="neo_template_block neo_neo_swiper pxModule_include ModuloWrap_neo_swiper" id="neo_swiper" >
6011			  
6012
6013<!-- Module Start -->
6014
6015<div class="megacontainer-neo-swiper">
6016    <div class="swiper-container-3842"> <!-- le asignamos el numero random al contenedor -->
6017     
6018            <div class="swiper-wrapper">
6019                                        <div class="swiper-slide slide-one-pic">
6020                            <img src="https://images-new.pxsol.com/fuFCQ3ogZ9-ZarnrJzjuueE3Vc-Z-URju6AO0zFWFSM/rs:fill:1900:600:1/q:80/plain/https%3A%2F%2Ffiles-p.pxsol.com%2F13307%2Fcompany%2Flibrary%2Fuser%2F17192626940e9e7e7cb10828bce348612de95523245.jpg@jpg" 
6021                                 width="1900" 
6022                                 height="600" 
6023                                 style="aspect-ratio: 1900/600;"
6024                                 alt="San Remo Hoteles">
6025                                                    </div>	
6026                            </div>
6027            <!-- Add Arrows -->
6028                                    
6029        </div>
6030    <!-- Así mismo para dataconfig-swiper le pasamos el numero random para identificarlo de otros -->
6031    <div class="dataconfig-swiper" data-id="3842" data-loop="true" data-speed=800 data-effect="fade" data-delay=5000 style="display:none" ></div>
6032</div>
6033
6034
6035			  </div>
6036			  </div></div> 
6037
6038
6039<div  class="neo_full background_white"  ><div  class="diplo_contentblock flex-column flex-s-center padding-top-80 padding-bottom-30"  ><h1  class='diplo_hero_sub golden text-center margin-bottom-40 text-center' >San Remo Hoteles</h1><div  class="diplo_divider_small golden"  ></div><h2  class='diplo_h2 full padding-20 padding-lg-40 text-center' >La Cadena San Remo Hoteles pertenece a capitales nacionales, nacida hace 57 años con su primer hotel en la ciudad balnearia bonaerense de Santa Teresita y supo expandirse en toda la costa atlántica contando con 11 hoteles, llegando hasta Capital Federal.<br>En sus años extendió su marca con 2 hoteles en Uruguay y 2 en Brasil.<br>De generación en generación, la Familia San Remo invierte cada año en sus hoteles para convertir la estadía de cada huésped en una experiencia placentera e inigualable.<br>¡Te esperamos todo el año! Seguinos en redes sociales y viví la experiencia del #mundosanremo</h2></div></div> 
6040
6041
6042<div id='introText'  class="diplo_contentblock flex-column flex-s-center padding-top-30 padding-bottom-30"  ><div id='home_hotel_list'  class="flex-column full flex-center"  ><div  class="diplo_heading diplo_primary fontsize-40px txtUpper txtLetterSpacing padding-bottom-30 text-center"  >Nuestros Hoteles</div><div  class='full'  Horizontal='true' LinkType='marketplace_booking_engine'>
6043			  <div class="neo_template_block neo_neo_marketplace_list pxModule_include ModuloWrap_neo_marketplace_list" id="neo_marketplace_list" >
6044			  
6045<div px-listid="910" class="px-mklist-listcontainer px-mklist-litemode    px-mklist-litehoriz  " linkType="marketplace_booking_engine">
6046
6047	<div px-pid="24471" px-product="HSR TERMAS" px-type="Hotel" px-country="Argentina" px-category="2" class="px-mklist-listitemlite ">
6048	<div class="px-mklist-liimage">
6049					<a class="" rel="https://images-new.pxsol.com/DylSY3FRRsKwRdC3d0rTd64moOq_JWqzFcljNOGl4g4/rs:fill:500:300:1/q:80/plain/https%3A%2F%2Ffiles-p.pxsol.com%2F23437%2Fcompany%2Flibrary%2Fuser%2F1602001633576143f09f9529628de298d9cc1c25e5f.jpg@jpg" title="" href="/list.html?mkt_active=true&Pid=24471&origin=marketplace_homepage">
6050				<img src="https://images-new.pxsol.com/DylSY3FRRsKwRdC3d0rTd64moOq_JWqzFcljNOGl4g4/rs:fill:500:300:1/q:80/plain/https%3A%2F%2Ffiles-p.pxsol.com%2F23437%2Fcompany%2Flibrary%2Fuser%2F1602001633576143f09f9529628de298d9cc1c25e5f.jpg@jpg" width="" height="" />
6051			</a>
6052			</div>
6053
6054	<div class="px-mklist-liinfo">
6055
6056		<div class="px-mklist-lidata">
6057
6058			<div class="flex flex-m-sb full">
6059				<div class="px-mklist-lidireccion">
6060					<div class="margin-right-5"><?xml version="1.0" encoding="iso-8859-1"?>
6061<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
6062<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
6063<svg version="1.1" id="Capa_1" 
6064	xmlns="http://www.w3.org/2000/svg" 
6065	xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="30px" height="30px" viewBox="0 0 510 510" style="enable-background:new 0 0 510 510;" xml:space="preserve">
6066	<g>
6067		<g id="public">
6068			<path d="M255,0C114.75,0,0,114.75,0,255s114.75,255,255,255s255-114.75,255-255S395.25,0,255,0z M229.5,456.45
6069			C130.05,443.7,51,357,51,255c0-15.3,2.55-30.6,5.1-45.9l122.4,122.4V357c0,28.05,22.95,51,51,51V456.45z M405.45,392.7
6070			C397.8,372.3,379.95,357,357,357h-25.5v-76.5c0-15.3-10.2-25.5-25.5-25.5H153v-51h51c15.3,0,25.5-10.2,25.5-25.5v-51h51
6071			c28.05,0,51-22.95,51-51V66.3C405.45,96.9,459,170.85,459,255C459,308.55,438.6,357,405.45,392.7z"/>
6072		</g>
6073	</g>
6074</svg>
6075</div> <span class="text-ellipsis">Termas de Río Hondo, Santiago del Estero, Argentina</span>
6076				</div>
6077				<div class="px-mklist-stars"><div class="px-mklist-star"><?xml version="1.0" encoding="iso-8859-1"?>
6078<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
6079<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
6080<svg version="1.1" id="Capa_1" 
6081	xmlns="http://www.w3.org/2000/svg" 
6082	xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="20px" height="20px" viewBox="0 0 306 306" style="enable-background:new 0 0 306 306;" xml:space="preserve">
6083	<g>
6084		<g id="star-rate">
6085			<polygon points="153,230.775 247.35,299.625 211.65,187.425 306,121.125 191.25,121.125 153,6.375 114.75,121.125 0,121.125 
6086			94.35,187.425 58.65,299.625 		"/>
6087		</g>
6088	</g>
6089</svg>
6090</div><div class="px-mklist-star"><?xml version="1.0" encoding="iso-8859-1"?>
6091<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
6092<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
6093<svg version="1.1" id="Capa_1" 
6094	xmlns="http://www.w3.org/2000/svg" 
6095	xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="20px" height="20px" viewBox="0 0 306 306" style="enable-background:new 0 0 306 306;" xml:space="preserve">
6096	<g>
6097		<g id="star-rate">
6098			<polygon points="153,230.775 247.35,299.625 211.65,187.425 306,121.125 191.25,121.125 153,6.375 114.75,121.125 0,121.125 
6099			94.35,187.425 58.65,299.625 		"/>
6100		</g>
6101	</g>
6102</svg>
6103</div></div>
6104			</div>
6105							<a href="/list.html?mkt_active=true&Pid=24471&origin=marketplace_homepage" class="px-mklist-lititulo ">HSR TERMAS</a>
6106								</div>
6107					<a class="px-mklist-licta" href="/list.html?mkt_active=true&Pid=24471&origin=marketplace_homepage" data-testid="view-rates-button-lite">
6108				Consultar Tarifas			</a>
6109			</div>
6110
6111
6112</div><div px-pid="15202" px-product="Grand Hotel Mar del Plata" px-type="Hotel" px-country="Argentina" px-category="3" class="px-mklist-listitemlite ">
6113	<div class="px-mklist-liimage">
6114					<a class="" rel="https://images-new.pxsol.com/6mZD1sFPA7IEHQRNXBowW6C4l3YVsrN3FQqy7KCSSgE/rs:fill:500:300:1/q:80/plain/https%3A%2F%2Ffiles-p.pxsol.com%2F13307%2Fcompany%2Flibrary%2Fuser%2F154522870202bae1d1197e43785c398182a9d2dccb3.jpg@jpg" title="" href="/list.html?mkt_active=true&Pid=15202&origin=marketplace_homepage">
6115				<img src="https://images-new.pxsol.com/6mZD1sFPA7IEHQRNXBowW6C4l3YVsrN3FQqy7KCSSgE/rs:fill:500:300:1/q:80/plain/https%3A%2F%2Ffiles-p.pxsol.com%2F13307%2Fcompany%2Flibrary%2Fuser%2F154522870202bae1d1197e43785c398182a9d2dccb3.jpg@jpg" width="" height="" />
6116			</a>
6117			</div>
6118
6119	<div class="px-mklist-liinfo">
6120
6121		<div class="px-mklist-lidata">
6122
6123			<div class="flex flex-m-sb full">
6124				<div class="px-mklist-lidireccion">
6125					<div class="margin-right-5"><?xml version="1.0" encoding="iso-8859-1"?>
6126<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
6127<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
6128<svg version="1.1" id="Capa_1" 
6129	xmlns="http://www.w3.org/2000/svg" 
6130	xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="30px" height="30px" viewBox="0 0 510 510" style="enable-background:new 0 0 510 510;" xml:space="preserve">
6131	<g>
6132		<g id="public">
6133			<path d="M255,0C114.75,0,0,114.75,0,255s114.75,255,255,255s255-114.75,255-255S395.25,0,255,0z M229.5,456.45
6134			C130.05,443.7,51,357,51,255c0-15.3,2.55-30.6,5.1-45.9l122.4,122.4V357c0,28.05,22.95,51,51,51V456.45z M405.45,392.7
6135			C397.8,372.3,379.95,357,357,357h-25.5v-76.5c0-15.3-10.2-25.5-25.5-25.5H153v-51h51c15.3,0,25.5-10.2,25.5-25.5v-51h51
6136			c28.05,0,51-22.95,51-51V66.3C405.45,96.9,459,170.85,459,255C459,308.55,438.6,357,405.45,392.7z"/>
6137		</g>
6138	</g>
6139</svg>
6140</div> <span class="text-ellipsis">Mar del Plata, Provincia de Buenos Aires, Argentina</span>
6141				</div>
6142				<div class="px-mklist-stars"><div class="px-mklist-star"><?xml version="1.0" encoding="iso-8859-1"?>
6143<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
6144<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
6145<svg version="1.1" id="Capa_1" 
6146	xmlns="http://www.w3.org/2000/svg" 
6147	xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="20px" height="20px" viewBox="0 0 306 306" style="enable-background:new 0 0 306 306;" xml:space="preserve">
6148	<g>
6149		<g id="star-rate">
6150			<polygon points="153,230.775 247.35,299.625 211.65,187.425 306,121.125 191.25,121.125 153,6.375 114.75,121.125 0,121.125 
6151			94.35,187.425 58.65,299.625 		"/>
6152		</g>
6153	</g>
6154</svg>
6155</div><div class="px-mklist-star"><?xml version="1.0" encoding="iso-8859-1"?>
6156<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
6157<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
6158<svg version="1.1" id="Capa_1" 
6159	xmlns="http://www.w3.org/2000/svg" 
6160	xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="20px" height="20px" viewBox="0 0 306 306" style="enable-background:new 0 0 306 306;" xml:space="preserve">
6161	<g>
6162		<g id="star-rate">
6163			<polygon points="153,230.775 247.35,299.625 211.65,187.425 306,121.125 191.25,121.125 153,6.375 114.75,121.125 0,121.125 
6164			94.35,187.425 58.65,299.625 		"/>
6165		</g>
6166	</g>
6167</svg>
6168</div><div class="px-mklist-star"><?xml version="1.0" encoding="iso-8859-1"?>
6169<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
6170<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
6171<svg version="1.1" id="Capa_1" 
6172	xmlns="http://www.w3.org/2000/svg" 
6173	xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="20px" height="20px" viewBox="0 0 306 306" style="enable-background:new 0 0 306 306;" xml:space="preserve">
6174	<g>
6175		<g id="star-rate">
6176			<polygon points="153,230.775 247.35,299.625 211.65,187.425 306,121.125 191.25,121.125 153,6.375 114.75,121.125 0,121.125 
6177			94.35,187.425 58.65,299.625 		"/>
6178		</g>
6179	</g>
6180</svg>
6181</div></div>
6182			</div>
6183							<a href="/list.html?mkt_active=true&Pid=15202&origin=marketplace_homepage" class="px-mklist-lititulo ">Grand Hotel Mar del Plata</a>
6184										<div class="pk-mklist-ratinghotel">
6185					<div class="pk-mkratingnum">7.8</div>
6186					<div class="pk-mkratingtxt">Muy bueno</div>
6187				</div>
6188					</div>
6189					<a class="px-mklist-licta" href="/list.html?mkt_active=true&Pid=15202&origin=marketplace_homepage" data-testid="view-rates-button-lite">
6190				Consultar Tarifas			</a>
6191			</div>
6192
6193
6194</div><div px-pid="18055" px-product="City Hotel Buenos Aires" px-type="Hotel" px-country="Argentina" px-category="3" class="px-mklist-listitemlite ">
6195	<div class="px-mklist-liimage">
6196					<a class="" rel="https://images-new.pxsol.com/h2kM7NoldkFmYGNJORmTDUkim6k5fiaFG-FFvkGi-OM/rs:fill:500:300:1/q:80/plain/https%3A%2F%2Ffiles-p.pxsol.com%2F13307%2Fcompany%2Flibrary%2Fuser%2F34302296944d851b3cb8c42475e52597232a649b50.jpg@jpg" title="" href="/list.html?mkt_active=true&Pid=18055&origin=marketplace_homepage">
6197				<img src="https://images-new.pxsol.com/h2kM7NoldkFmYGNJORmTDUkim6k5fiaFG-FFvkGi-OM/rs:fill:500:300:1/q:80/plain/https%3A%2F%2Ffiles-p.pxsol.com%2F13307%2Fcompany%2Flibrary%2Fuser%2F34302296944d851b3cb8c42475e52597232a649b50.jpg@jpg" width="" height="" />
6198			</a>
6199			</div>
6200
6201	<div class="px-mklist-liinfo">
6202
6203		<div class="px-mklist-lidata">
6204
6205			<div class="flex flex-m-sb full">
6206				<div class="px-mklist-lidireccion">
6207					<div class="margin-right-5"><?xml version="1.0" encoding="iso-8859-1"?>
6208<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
6209<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
6210<svg version="1.1" id="Capa_1" 
6211	xmlns="http://www.w3.org/2000/svg" 
6212	xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="30px" height="30px" viewBox="0 0 510 510" style="enable-background:new 0 0 510 510;" xml:space="preserve">
6213	<g>
6214		<g id="public">
6215			<path d="M255,0C114.75,0,0,114.75,0,255s114.75,255,255,255s255-114.75,255-255S395.25,0,255,0z M229.5,456.45
6216			C130.05,443.7,51,357,51,255c0-15.3,2.55-30.6,5.1-45.9l122.4,122.4V357c0,28.05,22.95,51,51,51V456.45z M405.45,392.7
6217			C397.8,372.3,379.95,357,357,357h-25.5v-76.5c0-15.3-10.2-25.5-25.5-25.5H153v-51h51c15.3,0,25.5-10.2,25.5-25.5v-51h51
6218			c28.05,0,51-22.95,51-51V66.3C405.45,96.9,459,170.85,459,255C459,308.55,438.6,357,405.45,392.7z"/>
6219		</g>
6220	</g>
6221</svg>
6222</div> <span class="text-ellipsis">Comuna 1, Ciudad Autónoma de Buenos Aires, Argentina</span>
6223				</div>
6224				<div class="px-mklist-stars"><div class="px-mklist-star"><?xml version="1.0" encoding="iso-8859-1"?>
6225<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
6226<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
6227<svg version="1.1" id="Capa_1" 
6228	xmlns="http://www.w3.org/2000/svg" 
6229	xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="20px" height="20px" viewBox="0 0 306 306" style="enable-background:new 0 0 306 306;" xml:space="preserve">
6230	<g>
6231		<g id="star-rate">
6232			<polygon points="153,230.775 247.35,299.625 211.65,187.425 306,121.125 191.25,121.125 153,6.375 114.75,121.125 0,121.125 
6233			94.35,187.425 58.65,299.625 		"/>
6234		</g>
6235	</g>
6236</svg>
6237</div><div class="px-mklist-star"><?xml version="1.0" encoding="iso-8859-1"?>
6238<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
6239<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
6240<svg version="1.1" id="Capa_1" 
6241	xmlns="http://www.w3.org/2000/svg" 
6242	xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="20px" height="20px" viewBox="0 0 306 306" style="enable-background:new 0 0 306 306;" xml:space="preserve">
6243	<g>
6244		<g id="star-rate">
6245			<polygon points="153,230.775 247.35,299.625 211.65,187.425 306,121.125 191.25,121.125 153,6.375 114.75,121.125 0,121.125 
6246			94.35,187.425 58.65,299.625 		"/>
6247		</g>
6248	</g>
6249</svg>
6250</div><div class="px-mklist-star"><?xml version="1.0" encoding="iso-8859-1"?>
6251<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
6252<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
6253<svg version="1.1" id="Capa_1" 
6254	xmlns="http://www.w3.org/2000/svg" 
6255	xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="20px" height="20px" viewBox="0 0 306 306" style="enable-background:new 0 0 306 306;" xml:space="preserve">
6256	<g>
6257		<g id="star-rate">
6258			<polygon points="153,230.775 247.35,299.625 211.65,187.425 306,121.125 191.25,121.125 153,6.375 114.75,121.125 0,121.125 
6259			94.35,187.425 58.65,299.625 		"/>
6260		</g>
6261	</g>
6262</svg>
6263</div></div>
6264			</div>
6265							<a href="/list.html?mkt_active=true&Pid=18055&origin=marketplace_homepage" class="px-mklist-lititulo ">City Hotel Buenos Aires</a>
6266										<div class="pk-mklist-ratinghotel">
6267					<div class="pk-mkratingnum">8.3</div>
6268					<div class="pk-mkratingtxt">Muy bueno</div>
6269				</div>
6270					</div>
6271					<a class="px-mklist-licta" href="/list.html?mkt_active=true&Pid=18055&origin=marketplace_homepage" data-testid="view-rates-button-lite">
6272				Consultar Tarifas			</a>
6273			</div>
6274
6275
6276</div><div px-pid="18056" px-product="Villa Corral Apart Hotel Carilo" px-type="Hotel" px-country="Argentina" px-category="3" class="px-mklist-listitemlite ">
6277	<div class="px-mklist-liimage">
6278					<a class="" rel="https://images-new.pxsol.com/qVUBv0IR84bL8FdJzMnUMiDLUlT6eZSKJic-E0Qnj34/rs:fill:500:300:1/q:80/plain/https%3A%2F%2Ffiles-p.pxsol.com%2F13307%2Fcompany%2Flibrary%2Fuser%2F102901233245bf6a48ffa513d087a841ffd24dbbfa1.jpg@jpg" title="" href="/list.html?mkt_active=true&Pid=18056&origin=marketplace_homepage">
6279				<img src="https://images-new.pxsol.com/qVUBv0IR84bL8FdJzMnUMiDLUlT6eZSKJic-E0Qnj34/rs:fill:500:300:1/q:80/plain/https%3A%2F%2Ffiles-p.pxsol.com%2F13307%2Fcompany%2Flibrary%2Fuser%2F102901233245bf6a48ffa513d087a841ffd24dbbfa1.jpg@jpg" width="" height="" />
6280			</a>
6281			</div>
6282
6283	<div class="px-mklist-liinfo">
6284
6285		<div class="px-mklist-lidata">
6286
6287			<div class="flex flex-m-sb full">
6288				<div class="px-mklist-lidireccion">
6289					<div class="margin-right-5"><?xml version="1.0" encoding="iso-8859-1"?>
6290<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
6291<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
6292<svg version="1.1" id="Capa_1" 
6293	xmlns="http://www.w3.org/2000/svg" 
6294	xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="30px" height="30px" viewBox="0 0 510 510" style="enable-background:new 0 0 510 510;" xml:space="preserve">
6295	<g>
6296		<g id="public">
6297			<path d="M255,0C114.75,0,0,114.75,0,255s114.75,255,255,255s255-114.75,255-255S395.25,0,255,0z M229.5,456.45
6298			C130.05,443.7,51,357,51,255c0-15.3,2.55-30.6,5.1-45.9l122.4,122.4V357c0,28.05,22.95,51,51,51V456.45z M405.45,392.7
6299			C397.8,372.3,379.95,357,357,357h-25.5v-76.5c0-15.3-10.2-25.5-25.5-25.5H153v-51h51c15.3,0,25.5-10.2,25.5-25.5v-51h51
6300			c28.05,0,51-22.95,51-51V66.3C405.45,96.9,459,170.85,459,255C459,308.55,438.6,357,405.45,392.7z"/>
6301		</g>
6302	</g>
6303</svg>
6304</div> <span class="text-ellipsis">Cariló, Buenos Aires, Buenos Aires, Argentina</span>
6305				</div>
6306				<div class="px-mklist-stars"><div class="px-mklist-star"><?xml version="1.0" encoding="iso-8859-1"?>
6307<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
6308<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
6309<svg version="1.1" id="Capa_1" 
6310	xmlns="http://www.w3.org/2000/svg" 
6311	xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="20px" height="20px" viewBox="0 0 306 306" style="enable-background:new 0 0 306 306;" xml:space="preserve">
6312	<g>
6313		<g id="star-rate">
6314			<polygon points="153,230.775 247.35,299.625 211.65,187.425 306,121.125 191.25,121.125 153,6.375 114.75,121.125 0,121.125 
6315			94.35,187.425 58.65,299.625 		"/>
6316		</g>
6317	</g>
6318</svg>
6319</div><div class="px-mklist-star"><?xml version="1.0" encoding="iso-8859-1"?>
6320<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
6321<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
6322<svg version="1.1" id="Capa_1" 
6323	xmlns="http://www.w3.org/2000/svg" 
6324	xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="20px" height="20px" viewBox="0 0 306 306" style="enable-background:new 0 0 306 306;" xml:space="preserve">
6325	<g>
6326		<g id="star-rate">
6327			<polygon points="153,230.775 247.35,299.625 211.65,187.425 306,121.125 191.25,121.125 153,6.375 114.75,121.125 0,121.125 
6328			94.35,187.425 58.65,299.625 		"/>
6329		</g>
6330	</g>
6331</svg>
6332</div><div class="px-mklist-star"><?xml version="1.0" encoding="iso-8859-1"?>
6333<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
6334<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
6335<svg version="1.1" id="Capa_1" 
6336	xmlns="http://www.w3.org/2000/svg" 
6337	xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="20px" height="20px" viewBox="0 0 306 306" style="enable-background:new 0 0 306 306;" xml:space="preserve">
6338	<g>
6339		<g id="star-rate">
6340			<polygon points="153,230.775 247.35,299.625 211.65,187.425 306,121.125 191.25,121.125 153,6.375 114.75,121.125 0,121.125 
6341			94.35,187.425 58.65,299.625 		"/>
6342		</g>
6343	</g>
6344</svg>
6345</div></div>
6346			</div>
6347							<a href="/list.html?mkt_active=true&Pid=18056&origin=marketplace_homepage" class="px-mklist-lititulo ">Villa Corral Apart Hotel Carilo</a>
6348										<div class="pk-mklist-ratinghotel">
6349					<div class="pk-mkratingnum">7.9</div>
6350					<div class="pk-mkratingtxt">Muy bueno</div>
6351				</div>
6352					</div>
6353					<a class="px-mklist-licta" href="/list.html?mkt_active=true&Pid=18056&origin=marketplace_homepage" data-testid="view-rates-button-lite">
6354				Consultar Tarifas			</a>
6355			</div>
6356
6357
6358</div><div px-pid="18057" px-product="Majestic Hotel Mar de Ajo" px-type="Hotel" px-country="Argentina" px-category="3" class="px-mklist-listitemlite ">
6359	<div class="px-mklist-liimage">
6360					<a class="" rel="https://images-new.pxsol.com/Bv0Xxy8b2vaoXIfOBGaEOuDiACW4z3zf81xPEQYnbfk/rs:fill:500:300:1/q:80/plain/https%3A%2F%2Ffiles-p.pxsol.com%2F13307%2Fcompany%2Flibrary%2Fuser%2F27436123088b5a42d350f72d3cd701f0a9eaa9a2082.jpg@jpg" title="" href="/list.html?mkt_active=true&Pid=18057&origin=marketplace_homepage">
6361				<img src="https://images-new.pxsol.com/Bv0Xxy8b2vaoXIfOBGaEOuDiACW4z3zf81xPEQYnbfk/rs:fill:500:300:1/q:80/plain/https%3A%2F%2Ffiles-p.pxsol.com%2F13307%2Fcompany%2Flibrary%2Fuser%2F27436123088b5a42d350f72d3cd701f0a9eaa9a2082.jpg@jpg" width="" height="" />
6362			</a>
6363			</div>
6364
6365	<div class="px-mklist-liinfo">
6366
6367		<div class="px-mklist-lidata">
6368
6369			<div class="flex flex-m-sb full">
6370				<div class="px-mklist-lidireccion">
6371					<div class="margin-right-5"><?xml version="1.0" encoding="iso-8859-1"?>
6372<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
6373<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
6374<svg version="1.1" id="Capa_1" 
6375	xmlns="http://www.w3.org/2000/svg" 
6376	xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="30px" height="30px" viewBox="0 0 510 510" style="enable-background:new 0 0 510 510;" xml:space="preserve">
6377	<g>
6378		<g id="public">
6379			<path d="M255,0C114.75,0,0,114.75,0,255s114.75,255,255,255s255-114.75,255-255S395.25,0,255,0z M229.5,456.45
6380			C130.05,443.7,51,357,51,255c0-15.3,2.55-30.6,5.1-45.9l122.4,122.4V357c0,28.05,22.95,51,51,51V456.45z M405.45,392.7
6381			C397.8,372.3,379.95,357,357,357h-25.5v-76.5c0-15.3-10.2-25.5-25.5-25.5H153v-51h51c15.3,0,25.5-10.2,25.5-25.5v-51h51
6382			c28.05,0,51-22.95,51-51V66.3C405.45,96.9,459,170.85,459,255C459,308.55,438.6,357,405.45,392.7z"/>
6383		</g>
6384	</g>
6385</svg>
6386</div> <span class="text-ellipsis">Mar de Ajó, Provincia de Buenos Aires, Argentina</span>
6387				</div>
6388				<div class="px-mklist-stars"><div class="px-mklist-star"><?xml version="1.0" encoding="iso-8859-1"?>
6389<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
6390<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
6391<svg version="1.1" id="Capa_1" 
6392	xmlns="http://www.w3.org/2000/svg" 
6393	xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="20px" height="20px" viewBox="0 0 306 306" style="enable-background:new 0 0 306 306;" xml:space="preserve">
6394	<g>
6395		<g id="star-rate">
6396			<polygon points="153,230.775 247.35,299.625 211.65,187.425 306,121.125 191.25,121.125 153,6.375 114.75,121.125 0,121.125 
6397			94.35,187.425 58.65,299.625 		"/>
6398		</g>
6399	</g>
6400</svg>
6401</div><div class="px-mklist-star"><?xml version="1.0" encoding="iso-8859-1"?>
6402<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
6403<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
6404<svg version="1.1" id="Capa_1" 
6405	xmlns="http://www.w3.org/2000/svg" 
6406	xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="20px" height="20px" viewBox="0 0 306 306" style="enable-background:new 0 0 306 306;" xml:space="preserve">
6407	<g>
6408		<g id="star-rate">
6409			<polygon points="153,230.775 247.35,299.625 211.65,187.425 306,121.125 191.25,121.125 153,6.375 114.75,121.125 0,121.125 
6410			94.35,187.425 58.65,299.625 		"/>
6411		</g>
6412	</g>
6413</svg>
6414</div><div class="px-mklist-star"><?xml version="1.0" encoding="iso-8859-1"?>
6415<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
6416<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
6417<svg version="1.1" id="Capa_1" 
6418	xmlns="http://www.w3.org/2000/svg" 
6419	xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="20px" height="20px" viewBox="0 0 306 306" style="enable-background:new 0 0 306 306;" xml:space="preserve">
6420	<g>
6421		<g id="star-rate">
6422			<polygon points="153,230.775 247.35,299.625 211.65,187.425 306,121.125 191.25,121.125 153,6.375 114.75,121.125 0,121.125 
6423			94.35,187.425 58.65,299.625 		"/>
6424		</g>
6425	</g>
6426</svg>
6427</div></div>
6428			</div>
6429							<a href="/list.html?mkt_active=true&Pid=18057&origin=marketplace_homepage" class="px-mklist-lititulo ">Majestic Hotel Mar de Ajo</a>
6430								</div>
6431					<a class="px-mklist-licta" href="/list.html?mkt_active=true&Pid=18057&origin=marketplace_homepage" data-testid="view-rates-button-lite">
6432				Consultar Tarifas			</a>
6433			</div>
6434
6435
6436</div><div px-pid="18058" px-product="Park Hotel San Bernardo" px-type="Hotel" px-country="Argentina" px-category="3" class="px-mklist-listitemlite ">
6437	<div class="px-mklist-liimage">
6438					<a class="" rel="https://images-new.pxsol.com/j9dBWpAMhTNMCx3ksqeR59uELlRpEUeykdiThWW2INc/rs:fill:500:300:1/q:80/plain/https%3A%2F%2Ffiles-p.pxsol.com%2F13307%2Fcompany%2Flibrary%2Fuser%2F342952177697bbc2dbb3e86123e7e4dd74c8c730e6.jpg@jpg" title="" href="/list.html?mkt_active=true&Pid=18058&origin=marketplace_homepage">
6439				<img src="https://images-new.pxsol.com/j9dBWpAMhTNMCx3ksqeR59uELlRpEUeykdiThWW2INc/rs:fill:500:300:1/q:80/plain/https%3A%2F%2Ffiles-p.pxsol.com%2F13307%2Fcompany%2Flibrary%2Fuser%2F342952177697bbc2dbb3e86123e7e4dd74c8c730e6.jpg@jpg" width="" height="" />
6440			</a>
6441			</div>
6442
6443	<div class="px-mklist-liinfo">
6444
6445		<div class="px-mklist-lidata">
6446
6447			<div class="flex flex-m-sb full">
6448				<div class="px-mklist-lidireccion">
6449					<div class="margin-right-5"><?xml version="1.0" encoding="iso-8859-1"?>
6450<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
6451<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
6452<svg version="1.1" id="Capa_1" 
6453	xmlns="http://www.w3.org/2000/svg" 
6454	xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="30px" height="30px" viewBox="0 0 510 510" style="enable-background:new 0 0 510 510;" xml:space="preserve">
6455	<g>
6456		<g id="public">
6457			<path d="M255,0C114.75,0,0,114.75,0,255s114.75,255,255,255s255-114.75,255-255S395.25,0,255,0z M229.5,456.45
6458			C130.05,443.7,51,357,51,255c0-15.3,2.55-30.6,5.1-45.9l122.4,122.4V357c0,28.05,22.95,51,51,51V456.45z M405.45,392.7
6459			C397.8,372.3,379.95,357,357,357h-25.5v-76.5c0-15.3-10.2-25.5-25.5-25.5H153v-51h51c15.3,0,25.5-10.2,25.5-25.5v-51h51
6460			c28.05,0,51-22.95,51-51V66.3C405.45,96.9,459,170.85,459,255C459,308.55,438.6,357,405.45,392.7z"/>
6461		</g>
6462	</g>
6463</svg>
6464</div> <span class="text-ellipsis">La Costa, Provincia de Buenos Aires, Argentina</span>
6465				</div>
6466				<div class="px-mklist-stars"><div class="px-mklist-star"><?xml version="1.0" encoding="iso-8859-1"?>
6467<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
6468<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
6469<svg version="1.1" id="Capa_1" 
6470	xmlns="http://www.w3.org/2000/svg" 
6471	xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="20px" height="20px" viewBox="0 0 306 306" style="enable-background:new 0 0 306 306;" xml:space="preserve">
6472	<g>
6473		<g id="star-rate">
6474			<polygon points="153,230.775 247.35,299.625 211.65,187.425 306,121.125 191.25,121.125 153,6.375 114.75,121.125 0,121.125 
6475			94.35,187.425 58.65,299.625 		"/>
6476		</g>
6477	</g>
6478</svg>
6479</div><div class="px-mklist-star"><?xml version="1.0" encoding="iso-8859-1"?>
6480<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
6481<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
6482<svg version="1.1" id="Capa_1" 
6483	xmlns="http://www.w3.org/2000/svg" 
6484	xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="20px" height="20px" viewBox="0 0 306 306" style="enable-background:new 0 0 306 306;" xml:space="preserve">
6485	<g>
6486		<g id="star-rate">
6487			<polygon points="153,230.775 247.35,299.625 211.65,187.425 306,121.125 191.25,121.125 153,6.375 114.75,121.125 0,121.125 
6488			94.35,187.425 58.65,299.625 		"/>
6489		</g>
6490	</g>
6491</svg>
6492</div><div class="px-mklist-star"><?xml version="1.0" encoding="iso-8859-1"?>
6493<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
6494<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
6495<svg version="1.1" id="Capa_1" 
6496	xmlns="http://www.w3.org/2000/svg" 
6497	xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="20px" height="20px" viewBox="0 0 306 306" style="enable-background:new 0 0 306 306;" xml:space="preserve">
6498	<g>
6499		<g id="star-rate">
6500			<polygon points="153,230.775 247.35,299.625 211.65,187.425 306,121.125 191.25,121.125 153,6.375 114.75,121.125 0,121.125 
6501			94.35,187.425 58.65,299.625 		"/>
6502		</g>
6503	</g>
6504</svg>
6505</div></div>
6506			</div>
6507							<a href="/list.html?mkt_active=true&Pid=18058&origin=marketplace_homepage" class="px-mklist-lititulo ">Park Hotel San Bernardo</a>
6508										<div class="pk-mklist-ratinghotel">
6509					<div class="pk-mkratingnum">7.1</div>
6510					<div class="pk-mkratingtxt">Muy bueno</div>
6511				</div>
6512					</div>
6513					<a class="px-mklist-licta" href="/list.html?mkt_active=true&Pid=18058&origin=marketplace_homepage" data-testid="view-rates-button-lite">
6514				Consultar Tarifas			</a>
6515			</div>
6516
6517
6518</div><div px-pid="18059" px-product="World Hotel San Clemente" px-type="Hotel" px-country="Argentina" px-category="3" class="px-mklist-listitemlite ">
6519	<div class="px-mklist-liimage">
6520					<a class="" rel="https://images-new.pxsol.com/hkKbmy7KVbco8wiTCMo33xmRLjQVR3w68PtT2X7uvuQ/rs:fill:500:300:1/q:80/plain/https%3A%2F%2Ffiles-p.pxsol.com%2F13307%2Fcompany%2Flibrary%2Fuser%2F223392262606fa0a3cf30801f3c6c9bf907c7fa1344.jpg@jpg" title="" href="/list.html?mkt_active=true&Pid=18059&origin=marketplace_homepage">
6521				<img src="https://images-new.pxsol.com/hkKbmy7KVbco8wiTCMo33xmRLjQVR3w68PtT2X7uvuQ/rs:fill:500:300:1/q:80/plain/https%3A%2F%2Ffiles-p.pxsol.com%2F13307%2Fcompany%2Flibrary%2Fuser%2F223392262606fa0a3cf30801f3c6c9bf907c7fa1344.jpg@jpg" width="" height="" />
6522			</a>
6523			</div>
6524
6525	<div class="px-mklist-liinfo">
6526
6527		<div class="px-mklist-lidata">
6528
6529			<div class="flex flex-m-sb full">
6530				<div class="px-mklist-lidireccion">
6531					<div class="margin-right-5"><?xml version="1.0" encoding="iso-8859-1"?>
6532<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
6533<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
6534<svg version="1.1" id="Capa_1" 
6535	xmlns="http://www.w3.org/2000/svg" 
6536	xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="30px" height="30px" viewBox="0 0 510 510" style="enable-background:new 0 0 510 510;" xml:space="preserve">
6537	<g>
6538		<g id="public">
6539			<path d="M255,0C114.75,0,0,114.75,0,255s114.75,255,255,255s255-114.75,255-255S395.25,0,255,0z M229.5,456.45
6540			C130.05,443.7,51,357,51,255c0-15.3,2.55-30.6,5.1-45.9l122.4,122.4V357c0,28.05,22.95,51,51,51V456.45z M405.45,392.7
6541			C397.8,372.3,379.95,357,357,357h-25.5v-76.5c0-15.3-10.2-25.5-25.5-25.5H153v-51h51c15.3,0,25.5-10.2,25.5-25.5v-51h51
6542			c28.05,0,51-22.95,51-51V66.3C405.45,96.9,459,170.85,459,255C459,308.55,438.6,357,405.45,392.7z"/>
6543		</g>
6544	</g>
6545</svg>
6546</div> <span class="text-ellipsis">San Clemente del Tuyu, Provincia de Buenos Aires, Argentina</span>
6547				</div>
6548				<div class="px-mklist-stars"><div class="px-mklist-star"><?xml version="1.0" encoding="iso-8859-1"?>
6549<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
6550<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
6551<svg version="1.1" id="Capa_1" 
6552	xmlns="http://www.w3.org/2000/svg" 
6553	xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="20px" height="20px" viewBox="0 0 306 306" style="enable-background:new 0 0 306 306;" xml:space="preserve">
6554	<g>
6555		<g id="star-rate">
6556			<polygon points="153,230.775 247.35,299.625 211.65,187.425 306,121.125 191.25,121.125 153,6.375 114.75,121.125 0,121.125 
6557			94.35,187.425 58.65,299.625 		"/>
6558		</g>
6559	</g>
6560</svg>
6561</div><div class="px-mklist-star"><?xml version="1.0" encoding="iso-8859-1"?>
6562<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
6563<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
6564<svg version="1.1" id="Capa_1" 
6565	xmlns="http://www.w3.org/2000/svg" 
6566	xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="20px" height="20px" viewBox="0 0 306 306" style="enable-background:new 0 0 306 306;" xml:space="preserve">
6567	<g>
6568		<g id="star-rate">
6569			<polygon points="153,230.775 247.35,299.625 211.65,187.425 306,121.125 191.25,121.125 153,6.375 114.75,121.125 0,121.125 
6570			94.35,187.425 58.65,299.625 		"/>
6571		</g>
6572	</g>
6573</svg>
6574</div><div class="px-mklist-star"><?xml version="1.0" encoding="iso-8859-1"?>
6575<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
6576<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
6577<svg version="1.1" id="Capa_1" 
6578	xmlns="http://www.w3.org/2000/svg" 
6579	xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="20px" height="20px" viewBox="0 0 306 306" style="enable-background:new 0 0 306 306;" xml:space="preserve">
6580	<g>
6581		<g id="star-rate">
6582			<polygon points="153,230.775 247.35,299.625 211.65,187.425 306,121.125 191.25,121.125 153,6.375 114.75,121.125 0,121.125 
6583			94.35,187.425 58.65,299.625 		"/>
6584		</g>
6585	</g>
6586</svg>
6587</div></div>
6588			</div>
6589							<a href="/list.html?mkt_active=true&Pid=18059&origin=marketplace_homepage" class="px-mklist-lititulo ">World Hotel San Clemente</a>
6590										<div class="pk-mklist-ratinghotel">
6591					<div class="pk-mkratingnum">7.7</div>
6592					<div class="pk-mkratingtxt">Muy bueno</div>
6593				</div>
6594					</div>
6595					<a class="px-mklist-licta" href="/list.html?mkt_active=true&Pid=18059&origin=marketplace_homepage" data-testid="view-rates-button-lite">
6596				Consultar Tarifas			</a>
6597			</div>
6598
6599
6600</div><div px-pid="18062" px-product="Resort Hotel Santa Teresita" px-type="Hotel" px-country="Argentina" px-category="3" class="px-mklist-listitemlite ">
6601	<div class="px-mklist-liimage">
6602					<a class="" rel="https://images-new.pxsol.com/lZCRwgjn1tBZ5elkhccISExIbeX6HDX3ExqmVW2ih4E/rs:fill:500:300:1/q:80/plain/https%3A%2F%2Ffiles-p.pxsol.com%2F13307%2Fcompany%2Flibrary%2Fuser%2F10290048012fd7af99988e1164ebce340318faaeffd.jpg@jpg" title="" href="/list.html?mkt_active=true&Pid=18062&origin=marketplace_homepage">
6603				<img src="https://images-new.pxsol.com/lZCRwgjn1tBZ5elkhccISExIbeX6HDX3ExqmVW2ih4E/rs:fill:500:300:1/q:80/plain/https%3A%2F%2Ffiles-p.pxsol.com%2F13307%2Fcompany%2Flibrary%2Fuser%2F10290048012fd7af99988e1164ebce340318faaeffd.jpg@jpg" width="" height="" />
6604			</a>
6605			</div>
6606
6607	<div class="px-mklist-liinfo">
6608
6609		<div class="px-mklist-lidata">
6610
6611			<div class="flex flex-m-sb full">
6612				<div class="px-mklist-lidireccion">
6613					<div class="margin-right-5"><?xml version="1.0" encoding="iso-8859-1"?>
6614<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
6615<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
6616<svg version="1.1" id="Capa_1" 
6617	xmlns="http://www.w3.org/2000/svg" 
6618	xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="30px" height="30px" viewBox="0 0 510 510" style="enable-background:new 0 0 510 510;" xml:space="preserve">
6619	<g>
6620		<g id="public">
6621			<path d="M255,0C114.75,0,0,114.75,0,255s114.75,255,255,255s255-114.75,255-255S395.25,0,255,0z M229.5,456.45
6622			C130.05,443.7,51,357,51,255c0-15.3,2.55-30.6,5.1-45.9l122.4,122.4V357c0,28.05,22.95,51,51,51V456.45z M405.45,392.7
6623			C397.8,372.3,379.95,357,357,357h-25.5v-76.5c0-15.3-10.2-25.5-25.5-25.5H153v-51h51c15.3,0,25.5-10.2,25.5-25.5v-51h51
6624			c28.05,0,51-22.95,51-51V66.3C405.45,96.9,459,170.85,459,255C459,308.55,438.6,357,405.45,392.7z"/>
6625		</g>
6626	</g>
6627</svg>
6628</div> <span class="text-ellipsis">La Costa, Provincia de Buenos Aires, Argentina</span>
6629				</div>
6630				<div class="px-mklist-stars"><div class="px-mklist-star"><?xml version="1.0" encoding="iso-8859-1"?>
6631<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
6632<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
6633<svg version="1.1" id="Capa_1" 
6634	xmlns="http://www.w3.org/2000/svg" 
6635	xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="20px" height="20px" viewBox="0 0 306 306" style="enable-background:new 0 0 306 306;" xml:space="preserve">
6636	<g>
6637		<g id="star-rate">
6638			<polygon points="153,230.775 247.35,299.625 211.65,187.425 306,121.125 191.25,121.125 153,6.375 114.75,121.125 0,121.125 
6639			94.35,187.425 58.65,299.625 		"/>
6640		</g>
6641	</g>
6642</svg>
6643</div><div class="px-mklist-star"><?xml version="1.0" encoding="iso-8859-1"?>
6644<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
6645<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
6646<svg version="1.1" id="Capa_1" 
6647	xmlns="http://www.w3.org/2000/svg" 
6648	xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="20px" height="20px" viewBox="0 0 306 306" style="enable-background:new 0 0 306 306;" xml:space="preserve">
6649	<g>
6650		<g id="star-rate">
6651			<polygon points="153,230.775 247.35,299.625 211.65,187.425 306,121.125 191.25,121.125 153,6.375 114.75,121.125 0,121.125 
6652			94.35,187.425 58.65,299.625 		"/>
6653		</g>
6654	</g>
6655</svg>
6656</div><div class="px-mklist-star"><?xml version="1.0" encoding="iso-8859-1"?>
6657<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
6658<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
6659<svg version="1.1" id="Capa_1" 
6660	xmlns="http://www.w3.org/2000/svg" 
6661	xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="20px" height="20px" viewBox="0 0 306 306" style="enable-background:new 0 0 306 306;" xml:space="preserve">
6662	<g>
6663		<g id="star-rate">
6664			<polygon points="153,230.775 247.35,299.625 211.65,187.425 306,121.125 191.25,121.125 153,6.375 114.75,121.125 0,121.125 
6665			94.35,187.425 58.65,299.625 		"/>
6666		</g>
6667	</g>
6668</svg>
6669</div></div>
6670			</div>
6671							<a href="/list.html?mkt_active=true&Pid=18062&origin=marketplace_homepage" class="px-mklist-lititulo ">Resort Hotel Santa Teresita</a>
6672								</div>
6673					<a class="px-mklist-licta" href="/list.html?mkt_active=true&Pid=18062&origin=marketplace_homepage" data-testid="view-rates-button-lite">
6674				Consultar Tarifas			</a>
6675			</div>
6676
6677
6678</div><div px-pid="18063" px-product="Viking Hotel Pinamar" px-type="Hotel" px-country="Argentina" px-category="3" class="px-mklist-listitemlite ">
6679	<div class="px-mklist-liimage">
6680					<a class="" rel="https://images-new.pxsol.com/Kl_0qS4izuoMyoTiE9uulp1DuH1FL7d03jpYpEzW_JY/rs:fill:500:300:1/q:80/plain/https%3A%2F%2Ffiles-p.pxsol.com%2F13307%2Fcompany%2Flibrary%2Fuser%2F137200825443ed8ce823c4fe3caf204a892ad04ea91.jpg@jpg" title="" href="/list.html?mkt_active=true&Pid=18063&origin=marketplace_homepage">
6681				<img src="https://images-new.pxsol.com/Kl_0qS4izuoMyoTiE9uulp1DuH1FL7d03jpYpEzW_JY/rs:fill:500:300:1/q:80/plain/https%3A%2F%2Ffiles-p.pxsol.com%2F13307%2Fcompany%2Flibrary%2Fuser%2F137200825443ed8ce823c4fe3caf204a892ad04ea91.jpg@jpg" width="" height="" />
6682			</a>
6683			</div>
6684
6685	<div class="px-mklist-liinfo">
6686
6687		<div class="px-mklist-lidata">
6688
6689			<div class="flex flex-m-sb full">
6690				<div class="px-mklist-lidireccion">
6691					<div class="margin-right-5"><?xml version="1.0" encoding="iso-8859-1"?>
6692<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
6693<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
6694<svg version="1.1" id="Capa_1" 
6695	xmlns="http://www.w3.org/2000/svg" 
6696	xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="30px" height="30px" viewBox="0 0 510 510" style="enable-background:new 0 0 510 510;" xml:space="preserve">
6697	<g>
6698		<g id="public">
6699			<path d="M255,0C114.75,0,0,114.75,0,255s114.75,255,255,255s255-114.75,255-255S395.25,0,255,0z M229.5,456.45
6700			C130.05,443.7,51,357,51,255c0-15.3,2.55-30.6,5.1-45.9l122.4,122.4V357c0,28.05,22.95,51,51,51V456.45z M405.45,392.7
6701			C397.8,372.3,379.95,357,357,357h-25.5v-76.5c0-15.3-10.2-25.5-25.5-25.5H153v-51h51c15.3,0,25.5-10.2,25.5-25.5v-51h51
6702			c28.05,0,51-22.95,51-51V66.3C405.45,96.9,459,170.85,459,255C459,308.55,438.6,357,405.45,392.7z"/>
6703		</g>
6704	</g>
6705</svg>
6706</div> <span class="text-ellipsis">Pinamar, Provincia de Buenos Aires, Argentina</span>
6707				</div>
6708				<div class="px-mklist-stars"><div class="px-mklist-star"><?xml version="1.0" encoding="iso-8859-1"?>
6709<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
6710<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
6711<svg version="1.1" id="Capa_1" 
6712	xmlns="http://www.w3.org/2000/svg" 
6713	xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="20px" height="20px" viewBox="0 0 306 306" style="enable-background:new 0 0 306 306;" xml:space="preserve">
6714	<g>
6715		<g id="star-rate">
6716			<polygon points="153,230.775 247.35,299.625 211.65,187.425 306,121.125 191.25,121.125 153,6.375 114.75,121.125 0,121.125 
6717			94.35,187.425 58.65,299.625 		"/>
6718		</g>
6719	</g>
6720</svg>
6721</div><div class="px-mklist-star"><?xml version="1.0" encoding="iso-8859-1"?>
6722<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
6723<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
6724<svg version="1.1" id="Capa_1" 
6725	xmlns="http://www.w3.org/2000/svg" 
6726	xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="20px" height="20px" viewBox="0 0 306 306" style="enable-background:new 0 0 306 306;" xml:space="preserve">
6727	<g>
6728		<g id="star-rate">
6729			<polygon points="153,230.775 247.35,299.625 211.65,187.425 306,121.125 191.25,121.125 153,6.375 114.75,121.125 0,121.125 
6730			94.35,187.425 58.65,299.625 		"/>
6731		</g>
6732	</g>
6733</svg>
6734</div><div class="px-mklist-star"><?xml version="1.0" encoding="iso-8859-1"?>
6735<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
6736<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
6737<svg version="1.1" id="Capa_1" 
6738	xmlns="http://www.w3.org/2000/svg" 
6739	xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="20px" height="20px" viewBox="0 0 306 306" style="enable-background:new 0 0 306 306;" xml:space="preserve">
6740	<g>
6741		<g id="star-rate">
6742			<polygon points="153,230.775 247.35,299.625 211.65,187.425 306,121.125 191.25,121.125 153,6.375 114.75,121.125 0,121.125 
6743			94.35,187.425 58.65,299.625 		"/>
6744		</g>
6745	</g>
6746</svg>
6747</div></div>
6748			</div>
6749							<a href="/list.html?mkt_active=true&Pid=18063&origin=marketplace_homepage" class="px-mklist-lititulo ">Viking Hotel Pinamar</a>
6750										<div class="pk-mklist-ratinghotel">
6751					<div class="pk-mkratingnum">8</div>
6752					<div class="pk-mkratingtxt">Muy bueno</div>
6753				</div>
6754					</div>
6755					<a class="px-mklist-licta" href="/list.html?mkt_active=true&Pid=18063&origin=marketplace_homepage" data-testid="view-rates-button-lite">
6756				Consultar Tarifas			</a>
6757			</div>
6758
6759
6760</div><div px-pid="18064" px-product="Amapola Apart Ostende" px-type="Hotel" px-country="Argentina" px-category="3" class="px-mklist-listitemlite ">
6761	<div class="px-mklist-liimage">
6762					<a class="" rel="https://images-new.pxsol.com/8hBml1_YsrpyyZ8T_1YAEaa8mokoxRhgb13_tD5KDAs/rs:fill:500:300:1/q:80/plain/https%3A%2F%2Ffiles-p.pxsol.com%2F13307%2Fcompany%2Flibrary%2Fuser%2F257647950454d9fa56550e44673564d226d3d54a79f.jpg@jpg" title="" href="/list.html?mkt_active=true&Pid=18064&origin=marketplace_homepage">
6763				<img src="https://images-new.pxsol.com/8hBml1_YsrpyyZ8T_1YAEaa8mokoxRhgb13_tD5KDAs/rs:fill:500:300:1/q:80/plain/https%3A%2F%2Ffiles-p.pxsol.com%2F13307%2Fcompany%2Flibrary%2Fuser%2F257647950454d9fa56550e44673564d226d3d54a79f.jpg@jpg" width="" height="" />
6764			</a>
6765			</div>
6766
6767	<div class="px-mklist-liinfo">
6768
6769		<div class="px-mklist-lidata">
6770
6771			<div class="flex flex-m-sb full">
6772				<div class="px-mklist-lidireccion">
6773					<div class="margin-right-5"><?xml version="1.0" encoding="iso-8859-1"?>
6774<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
6775<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
6776<svg version="1.1" id="Capa_1" 
6777	xmlns="http://www.w3.org/2000/svg" 
6778	xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="30px" height="30px" viewBox="0 0 510 510" style="enable-background:new 0 0 510 510;" xml:space="preserve">
6779	<g>
6780		<g id="public">
6781			<path d="M255,0C114.75,0,0,114.75,0,255s114.75,255,255,255s255-114.75,255-255S395.25,0,255,0z M229.5,456.45
6782			C130.05,443.7,51,357,51,255c0-15.3,2.55-30.6,5.1-45.9l122.4,122.4V357c0,28.05,22.95,51,51,51V456.45z M405.45,392.7
6783			C397.8,372.3,379.95,357,357,357h-25.5v-76.5c0-15.3-10.2-25.5-25.5-25.5H153v-51h51c15.3,0,25.5-10.2,25.5-25.5v-51h51
6784			c28.05,0,51-22.95,51-51V66.3C405.45,96.9,459,170.85,459,255C459,308.55,438.6,357,405.45,392.7z"/>
6785		</g>
6786	</g>
6787</svg>
6788</div> <span class="text-ellipsis">Ostende, Provincia de Buenos Aires, Argentina</span>
6789				</div>
6790				<div class="px-mklist-stars"><div class="px-mklist-star"><?xml version="1.0" encoding="iso-8859-1"?>
6791<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
6792<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
6793<svg version="1.1" id="Capa_1" 
6794	xmlns="http://www.w3.org/2000/svg" 
6795	xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="20px" height="20px" viewBox="0 0 306 306" style="enable-background:new 0 0 306 306;" xml:space="preserve">
6796	<g>
6797		<g id="star-rate">
6798			<polygon points="153,230.775 247.35,299.625 211.65,187.425 306,121.125 191.25,121.125 153,6.375 114.75,121.125 0,121.125 
6799			94.35,187.425 58.65,299.625 		"/>
6800		</g>
6801	</g>
6802</svg>
6803</div><div class="px-mklist-star"><?xml version="1.0" encoding="iso-8859-1"?>
6804<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
6805<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
6806<svg version="1.1" id="Capa_1" 
6807	xmlns="http://www.w3.org/2000/svg" 
6808	xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="20px" height="20px" viewBox="0 0 306 306" style="enable-background:new 0 0 306 306;" xml:space="preserve">
6809	<g>
6810		<g id="star-rate">
6811			<polygon points="153,230.775 247.35,299.625 211.65,187.425 306,121.125 191.25,121.125 153,6.375 114.75,121.125 0,121.125 
6812			94.35,187.425 58.65,299.625 		"/>
6813		</g>
6814	</g>
6815</svg>
6816</div><div class="px-mklist-star"><?xml version="1.0" encoding="iso-8859-1"?>
6817<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
6818<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
6819<svg version="1.1" id="Capa_1" 
6820	xmlns="http://www.w3.org/2000/svg" 
6821	xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="20px" height="20px" viewBox="0 0 306 306" style="enable-background:new 0 0 306 306;" xml:space="preserve">
6822	<g>
6823		<g id="star-rate">
6824			<polygon points="153,230.775 247.35,299.625 211.65,187.425 306,121.125 191.25,121.125 153,6.375 114.75,121.125 0,121.125 
6825			94.35,187.425 58.65,299.625 		"/>
6826		</g>
6827	</g>
6828</svg>
6829</div></div>
6830			</div>
6831							<a href="/list.html?mkt_active=true&Pid=18064&origin=marketplace_homepage" class="px-mklist-lititulo ">Amapola Apart Ostende</a>
6832										<div class="pk-mklist-ratinghotel">
6833					<div class="pk-mkratingnum">7.4</div>
6834					<div class="pk-mkratingtxt">Muy bueno</div>
6835				</div>
6836					</div>
6837					<a class="px-mklist-licta" href="/list.html?mkt_active=true&Pid=18064&origin=marketplace_homepage" data-testid="view-rates-button-lite">
6838				Consultar Tarifas			</a>
6839			</div>
6840
6841
6842</div><div px-pid="18065" px-product="Palace Hotel Villa Gesell" px-type="Hotel" px-country="Argentina" px-category="3" class="px-mklist-listitemlite ">
6843	<div class="px-mklist-liimage">
6844					<a class="" rel="https://images-new.pxsol.com/RI2uimS4sjCwpW5g_uzmpKrGjOWcLi-OlqQ80a-dUVc/rs:fill:500:300:1/q:80/plain/https%3A%2F%2Ffiles-p.pxsol.com%2F13307%2Fcompany%2Flibrary%2Fuser%2F188969936650f528a55075dbb9aa80c724a0a4fb3ef.jpg@jpg" title="" href="/list.html?mkt_active=true&Pid=18065&origin=marketplace_homepage">
6845				<img src="https://images-new.pxsol.com/RI2uimS4sjCwpW5g_uzmpKrGjOWcLi-OlqQ80a-dUVc/rs:fill:500:300:1/q:80/plain/https%3A%2F%2Ffiles-p.pxsol.com%2F13307%2Fcompany%2Flibrary%2Fuser%2F188969936650f528a55075dbb9aa80c724a0a4fb3ef.jpg@jpg" width="" height="" />
6846			</a>
6847			</div>
6848
6849	<div class="px-mklist-liinfo">
6850
6851		<div class="px-mklist-lidata">
6852
6853			<div class="flex flex-m-sb full">
6854				<div class="px-mklist-lidireccion">
6855					<div class="margin-right-5"><?xml version="1.0" encoding="iso-8859-1"?>
6856<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
6857<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
6858<svg version="1.1" id="Capa_1" 
6859	xmlns="http://www.w3.org/2000/svg" 
6860	xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="30px" height="30px" viewBox="0 0 510 510" style="enable-background:new 0 0 510 510;" xml:space="preserve">
6861	<g>
6862		<g id="public">
6863			<path d="M255,0C114.75,0,0,114.75,0,255s114.75,255,255,255s255-114.75,255-255S395.25,0,255,0z M229.5,456.45
6864			C130.05,443.7,51,357,51,255c0-15.3,2.55-30.6,5.1-45.9l122.4,122.4V357c0,28.05,22.95,51,51,51V456.45z M405.45,392.7
6865			C397.8,372.3,379.95,357,357,357h-25.5v-76.5c0-15.3-10.2-25.5-25.5-25.5H153v-51h51c15.3,0,25.5-10.2,25.5-25.5v-51h51
6866			c28.05,0,51-22.95,51-51V66.3C405.45,96.9,459,170.85,459,255C459,308.55,438.6,357,405.45,392.7z"/>
6867		</g>
6868	</g>
6869</svg>
6870</div> <span class="text-ellipsis">Villa Gesell, Provincia de Buenos Aires, Argentina</span>
6871				</div>
6872				<div class="px-mklist-stars"><div class="px-mklist-star"><?xml version="1.0" encoding="iso-8859-1"?>
6873<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
6874<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
6875<svg version="1.1" id="Capa_1" 
6876	xmlns="http://www.w3.org/2000/svg" 
6877	xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="20px" height="20px" viewBox="0 0 306 306" style="enable-background:new 0 0 306 306;" xml:space="preserve">
6878	<g>
6879		<g id="star-rate">
6880			<polygon points="153,230.775 247.35,299.625 211.65,187.425 306,121.125 191.25,121.125 153,6.375 114.75,121.125 0,121.125 
6881			94.35,187.425 58.65,299.625 		"/>
6882		</g>
6883	</g>
6884</svg>
6885</div><div class="px-mklist-star"><?xml version="1.0" encoding="iso-8859-1"?>
6886<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
6887<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
6888<svg version="1.1" id="Capa_1" 
6889	xmlns="http://www.w3.org/2000/svg" 
6890	xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="20px" height="20px" viewBox="0 0 306 306" style="enable-background:new 0 0 306 306;" xml:space="preserve">
6891	<g>
6892		<g id="star-rate">
6893			<polygon points="153,230.775 247.35,299.625 211.65,187.425 306,121.125 191.25,121.125 153,6.375 114.75,121.125 0,121.125 
6894			94.35,187.425 58.65,299.625 		"/>
6895		</g>
6896	</g>
6897</svg>
6898</div><div class="px-mklist-star"><?xml version="1.0" encoding="iso-8859-1"?>
6899<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
6900<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
6901<svg version="1.1" id="Capa_1" 
6902	xmlns="http://www.w3.org/2000/svg" 
6903	xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="20px" height="20px" viewBox="0 0 306 306" style="enable-background:new 0 0 306 306;" xml:space="preserve">
6904	<g>
6905		<g id="star-rate">
6906			<polygon points="153,230.775 247.35,299.625 211.65,187.425 306,121.125 191.25,121.125 153,6.375 114.75,121.125 0,121.125 
6907			94.35,187.425 58.65,299.625 		"/>
6908		</g>
6909	</g>
6910</svg>
6911</div></div>
6912			</div>
6913							<a href="/list.html?mkt_active=true&Pid=18065&origin=marketplace_homepage" class="px-mklist-lititulo ">Palace Hotel Villa Gesell</a>
6914								</div>
6915					<a class="px-mklist-licta" href="/list.html?mkt_active=true&Pid=18065&origin=marketplace_homepage" data-testid="view-rates-button-lite">
6916				Consultar Tarifas			</a>
6917			</div>
6918
6919
6920</div><div px-pid="18066" px-product="Gesell Mar Apart" px-type="Hotel" px-country="Argentina" px-category="3" class="px-mklist-listitemlite ">
6921	<div class="px-mklist-liimage">
6922					<a class="" rel="https://images-new.pxsol.com/s7pbDPmCirdKfmt70zJcTT5n-Xnl6HpWnHO0Px5wu1s/rs:fill:500:300:1/q:80/plain/https%3A%2F%2Ffiles-p.pxsol.com%2F13307%2Fcompany%2Flibrary%2Fuser%2F12204797150557162e2f9ff91c2758ab4e7b9712db9.jpg@jpg" title="" href="/list.html?mkt_active=true&Pid=18066&origin=marketplace_homepage">
6923				<img src="https://images-new.pxsol.com/s7pbDPmCirdKfmt70zJcTT5n-Xnl6HpWnHO0Px5wu1s/rs:fill:500:300:1/q:80/plain/https%3A%2F%2Ffiles-p.pxsol.com%2F13307%2Fcompany%2Flibrary%2Fuser%2F12204797150557162e2f9ff91c2758ab4e7b9712db9.jpg@jpg" width="" height="" />
6924			</a>
6925			</div>
6926
6927	<div class="px-mklist-liinfo">
6928
6929		<div class="px-mklist-lidata">
6930
6931			<div class="flex flex-m-sb full">
6932				<div class="px-mklist-lidireccion">
6933					<div class="margin-right-5"><?xml version="1.0" encoding="iso-8859-1"?>
6934<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
6935<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
6936<svg version="1.1" id="Capa_1" 
6937	xmlns="http://www.w3.org/2000/svg" 
6938	xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="30px" height="30px" viewBox="0 0 510 510" style="enable-background:new 0 0 510 510;" xml:space="preserve">
6939	<g>
6940		<g id="public">
6941			<path d="M255,0C114.75,0,0,114.75,0,255s114.75,255,255,255s255-114.75,255-255S395.25,0,255,0z M229.5,456.45
6942			C130.05,443.7,51,357,51,255c0-15.3,2.55-30.6,5.1-45.9l122.4,122.4V357c0,28.05,22.95,51,51,51V456.45z M405.45,392.7
6943			C397.8,372.3,379.95,357,357,357h-25.5v-76.5c0-15.3-10.2-25.5-25.5-25.5H153v-51h51c15.3,0,25.5-10.2,25.5-25.5v-51h51
6944			c28.05,0,51-22.95,51-51V66.3C405.45,96.9,459,170.85,459,255C459,308.55,438.6,357,405.45,392.7z"/>
6945		</g>
6946	</g>
6947</svg>
6948</div> <span class="text-ellipsis">Villa Gesell, Provincia de Buenos Aires, Argentina</span>
6949				</div>
6950				<div class="px-mklist-stars"><div class="px-mklist-star"><?xml version="1.0" encoding="iso-8859-1"?>
6951<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
6952<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
6953<svg version="1.1" id="Capa_1" 
6954	xmlns="http://www.w3.org/2000/svg" 
6955	xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="20px" height="20px" viewBox="0 0 306 306" style="enable-background:new 0 0 306 306;" xml:space="preserve">
6956	<g>
6957		<g id="star-rate">
6958			<polygon points="153,230.775 247.35,299.625 211.65,187.425 306,121.125 191.25,121.125 153,6.375 114.75,121.125 0,121.125 
6959			94.35,187.425 58.65,299.625 		"/>
6960		</g>
6961	</g>
6962</svg>
6963</div><div class="px-mklist-star"><?xml version="1.0" encoding="iso-8859-1"?>
6964<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
6965<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
6966<svg version="1.1" id="Capa_1" 
6967	xmlns="http://www.w3.org/2000/svg" 
6968	xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="20px" height="20px" viewBox="0 0 306 306" style="enable-background:new 0 0 306 306;" xml:space="preserve">
6969	<g>
6970		<g id="star-rate">
6971			<polygon points="153,230.775 247.35,299.625 211.65,187.425 306,121.125 191.25,121.125 153,6.375 114.75,121.125 0,121.125 
6972			94.35,187.425 58.65,299.625 		"/>
6973		</g>
6974	</g>
6975</svg>
6976</div><div class="px-mklist-star"><?xml version="1.0" encoding="iso-8859-1"?>
6977<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
6978<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
6979<svg version="1.1" id="Capa_1" 
6980	xmlns="http://www.w3.org/2000/svg" 
6981	xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="20px" height="20px" viewBox="0 0 306 306" style="enable-background:new 0 0 306 306;" xml:space="preserve">
6982	<g>
6983		<g id="star-rate">
6984			<polygon points="153,230.775 247.35,299.625 211.65,187.425 306,121.125 191.25,121.125 153,6.375 114.75,121.125 0,121.125 
6985			94.35,187.425 58.65,299.625 		"/>
6986		</g>
6987	</g>
6988</svg>
6989</div></div>
6990			</div>
6991							<a href="/list.html?mkt_active=true&Pid=18066&origin=marketplace_homepage" class="px-mklist-lititulo ">Gesell Mar Apart</a>
6992										<div class="pk-mklist-ratinghotel">
6993					<div class="pk-mkratingnum">7.3</div>
6994					<div class="pk-mkratingtxt">Muy bueno</div>
6995				</div>
6996					</div>
6997					<a class="px-mklist-licta" href="/list.html?mkt_active=true&Pid=18066&origin=marketplace_homepage" data-testid="view-rates-button-lite">
6998				Consultar Tarifas			</a>
6999			</div>
7000
7001
7002</div>
7003
7004</div>			  </div>
7005			  </div></div></div> 
7006
7007
7008<div  class="logos-container"  ><a  class=""   target='_blank' href="https://rutatlantica.com.ar/" target=""> <img loading="lazy"  class=""   lazy-src="https://picsv3.pxsol.com/13307/company/library/user/70114740081ae8a2df42e2b8ad98ba73ac9f279651.png?ixlib=js-2.3.2&s=f38a1092a867c416030485baf7013b72" alt="Sanremohoteles" > </image></a><a  class=""   target='_blank' href="https://www.costadelsoltermas.com.ar/" target=""> <img loading="lazy"  class=""   lazy-src="https://picsv3.pxsol.com/13307/company/library/user/52567833249d56b575e61e7de4f9d429c26d36d00a.jpg?ixlib=js-2.3.2&s=905620668d8f412f95c5a3a861955407" alt="Sanremohoteles" > </image></a></div> 
7009
7010
7011<div  class="container-uru-bra"  ><section  class='hotels-info-section' ><h2  class='main-title' >Nuestros Hoteles en Brasil y Uruguay</h2><div  class="countries-container"  ><div  class="country-section"  ><div  class="country-title"  >Hoteles en Brasil</div><div  class="hotels-container"  ><div  class="hotel-card"  ><h3  class='hotel-name' >Hanna Balneario - SR Camboriu</h3><p  class='' ><strong>Reservas:</strong></p><p  class='' >WhatsApp Hotel: +55 (47) 3047-0209</p><p  class='' >Ubicación: Rua 1301, 296 - Centro – Camboriu – Santa Catarina</p></div><div  class="hotel-card"  ><h3  class='hotel-name' >Hanna Praia Hotel - SR Canasvieiras</h3><p  class='' ><strong>Reservas:</strong></p><p  class='' >Teléfono: +55 48 3054-8829</p><p  class='' >WhatsApp: +55 48 3054-8829</p><p  class='' >Ubicación: R. do Kalifa, 435 - Canasvieiras, Florianópolis - Brasil</p></div></div></div><div  class="country-section"  ><div  class="country-title"  >Hoteles en Uruguay</div><div  class="hotels-container"  ><div  class="hotel-card"  ><h3  class='hotel-name' >San Remo Piriápolis</h3><p  class='' ><strong>Reservas:</strong></p><p  class='' >Teléfono: +598 4432 0468</p><p  class='' >WhatsApp: +598 92 594 212</p></div><div  class="hotel-card"  ><h3  class='hotel-name' >San Remo Punta del Este</h3><p  class='' ><strong>Reservas:</strong></p><p  class='' >Teléfono: +598 4432 0468</p><p  class='' >WhatsApp: +598 92 594 212</p></div></div></div></div></section></div> 
7012
7013</div>
7014
7015		</div>
7016
7017
7018		
7019		<div class="main_wraper_footer" id="main_wraper_footer">
7020			
7021
7022<div class="neo_template_container neo_template_ computer">
7023
7024
7025<div  class="diplo_footercontainer full flex flex-wrap padding-20 padding-top-60 padding-bottom-40"  ><div  class="xs-100 lg-10"  ></div><div  class="xs-100 lg-50 flex flex-column"  > <img loading="lazy"  class="amerian_footerimg margin-top-10 margin-bottom-30"   lazy-src="https://files-p.pxsol.com/13307/company/library/user/5126930364ea8a9a40b647af1c2cabae351ef5e772.png" alt="San Remo Hoteles" > </image><div  class="fontsize-1em diplo_white padding-bottom-30"  ><div  class="diplo_footerinfo flex-column"  ><div  class="margin-bottom-30 txtUpper txtWhite amerian_heading"  >Central de Reservas</div><a  class="margin-bottom-5 flex flex-s-center txtUpper amerian_supramenu_item nopadding fontsize-20px"   href="tel:8102208880" target=""><div  class=""  >8102208880</div></a><a  class="margin-bottom-5 flex flex-s-center txtUpper amerian_supramenu_item nopadding fontsize-20px"   href="tel:5491127216237" target=""><div  class=""  >5491127216237</div></a></div></div></div><div  class="xs-100 lg-30"  ><div  class="diplo_social flex flex-m-end flex-s-center padding-bottom-20 padding-right-20"  ><div  class='' >
7026			  <div class="neo_template_block neo_neo_social_links pxModule_include ModuloWrap_neo_social_links" id="neo_social_links" >
7027			  
7028
7029<div class="neo_social_links_container social_block">
7030  <ul class="neo_links_list">
7031          <li class="facebook_page">
7032        <a href="https://www.facebook.com/sanremohoteles" target="_blank">
7033          <i class="mdi mdi-facebook"></i>
7034        </a>
7035      </li>
7036              <li class="instagram_page">
7037        <a href="https://www.instagram.com/hotelessanremo" target="_blank">
7038          <i class="mdi mdi-instagram"></i>
7039        </a>
7040      </li>
7041                              <li class="linkedin_page">
7042        <a href="https://www.linkedin.com/company/101938064" target="_blank">
7043          <i class="mdi mdi-linkedin"></i>
7044        </a>
7045      </li>
7046      </ul>
7047</div>
7048  <div class="wsp_floating">
7049    <a href="https://api.whatsapp.com/send?phone=5491127216237" target="_blank">
7050      <i class="mdi mdi-whatsapp"></i>
7051    </a>
7052  </div>
7053			  </div>
7054			  </div><ul  class='neo_links_list' ><li  class='youtube_page' ><a  class=""   target='_blank' href="https://www.youtube.com/@sanremohoteles5949" target=""><i  class='mdi mdi mdi-youtube' ></i></a></li></ul></div><div  class="diplo_social flex flex-m-end flex-s-center padding-bottom-20 padding-right-20"  ></div></div><div  class="xs-100 lg-10"  ></div></div> 
7055
7056</div>
7057
7058			<div id="footer_px" class="noprint footer_px_fix" style="max-width: 100vw; box-sizing: border-box; overflow-x: hidden;">
7059    <div class="wraper_footerpx flex-column flex-center">
7060
7061        
7062        <div class="texto_footerpx">
7063            Al utilizar este sitio web, acepta el uso de cookies.            <a target="_blank" rel="nofollow" href="/cookiespolicies.php?pos=Sanremohoteles" class="footer_link">Política de cookies</a> | <a target="_blank" rel="nofollow" href="/terms.php?pos=Sanremohoteles" class="footer_link">Términos y condiciones</a> | <a target="_blank" rel="nofollow" href="/policies.php?pos=Sanremohoteles" class="footer_link">Política de privacidad</a> | <span>Cache:
7064                2026-10-05 06:35:32 | </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>
7065        </div>
7066
7067            <div class="pxsol_link_f">
7068        <a style="text-decoration: underline !important;" target="_blank" href="https://www.pxsol.com/pos_source=Sanremohoteles" class="footer_link">Sistema Hotelero</a>
7069        por        <a href="/" target="_blank" class="footer_link footer_logo_svg" title="Sistema Hotelero">
7070            <?xml version="1.0" encoding="UTF-8" standalone="no"?>
7071<svg
7072   xmlns:dc="http://purl.org/dc/elements/1.1/"
7073   xmlns:cc="http://creativecommons.org/ns#"
7074   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
7075   xmlns:svg="http://www.w3.org/2000/svg"
7076   xmlns="http://www.w3.org/2000/svg"
7077   viewBox="0 0 752.42535 358.37866"
7078   height="50px"
7079   width="23px"
7080   xml:space="preserve"
7081   id="svg2"
7082   version="1.1"><metadata
7083     id="metadata8"><rdf:RDF><cc:Work
7084         rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
7085           rdf:resource="http://purl.org/dc/dcmitype/StillImage" /></cc:Work></rdf:RDF></metadata><defs
7086     id="defs6"><clipPath
7087       id="clipPath18"
7088       clipPathUnits="userSpaceOnUse"><path
7089         id="path16"
7090         d="M 0,268.784 H 564.319 V 0 H 0 Z" /></clipPath></defs><g
7091     transform="matrix(1.3333333,0,0,-1.3333333,0,358.37867)"
7092     id="g10"><g
7093       id="g12"><g
7094         clip-path="url(#clipPath18)"
7095         id="g14"><g
7096           transform="translate(23.3438,154.8828)"
7097           id="g20"><path
7098             id="path22"
7099             style="fill:#231f20;fill-opacity:1;fill-rule:nonzero;stroke:none"
7100             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
7101           transform="translate(325.4336,123.7686)"
7102           id="g24"><path
7103             id="path26"
7104             style="fill:#231f20;fill-opacity:1;fill-rule:nonzero;stroke:none"
7105             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
7106           transform="translate(355.8486,153.5532)"
7107           id="g28"><path
7108             id="path30"
7109             style="fill:#231f20;fill-opacity:1;fill-rule:nonzero;stroke:none"
7110             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 
711010.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
7111           transform="translate(480.5166,88.5742)"
7112           id="g32"><path
7113             id="path34"
7114             style="fill:#231f20;fill-opacity:1;fill-rule:nonzero;stroke:none"
7115             d="M 0,0 V 129.603 H 23.342 V 18.175 H 83.803 V 0 Z" /></g><g
7116           transform="translate(95.5459,218.4404)"
7117           id="g36"><path
7118             id="path38"
7119             style="fill:#ee2735;fill-opacity:1;fill-rule:nonzero;stroke:none"
7120             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>
7121    </div>
7122
7123    </div>
7124</div>
7125
7126
7127<script>
7128    function loadPxChatWidget() {
7129        const posToGetApiKey = 'Sanremohoteles';
7130        const timestamp = '1788314973';
7131        const urlToGetApiKey = `https://px-chat-widget-prod.pxsol.com/company-widget/apiKey/${posToGetApiKey}?v=${timestamp}`;
7132
7133        fetch(urlToGetApiKey, {
7134                method: 'GET',
7135                headers: {
7136                    'Content-Type': 'application/json',
7137                }
7138            })
7139            .then(response => {
7140                if (!response.ok) {
7141                    throw new Error(`HTTP error! status: ${response.status}`);
7142                }
7143                return response.json();
7144            })
7145            .then(data => {
7146                const internalKey = data?.data?.api_key;
7147                if (!internalKey) {
7148                    throw new Error('API key not found in response');
7149                }
7150
7151                const script = document.createElement('script');
7152                script.src = `https://cdn.pxsol.com/dist/chat-widget.min.js?k=${internalKey}&v=${timestamp}`;
7153                script.async = true;
7154                script.onload = () => {
7155                    console.log('PxChat widget loaded successfully');
7156                };
7157                script.onerror = (error) => {
7158                    console.error('Failed to load PxChat widget:', error);
7159                };
7160                document.body.appendChild(script);
7161            })
7162            .catch(error => {
7163                console.error('PxChat widget initialization failed:', error.message);
7164            });
7165    }
7166        document.addEventListener("DOMContentLoaded", loadPxChatWidget);
7167    </script>
7167
7168
7169<style>
7170    /* El botón flotante de WhatsApp (.wsp_floating) y el launcher del widget de chat (pxChat)
7171       se ubican ambos en la esquina inferior derecha y chocan entre sí. Cuando el chat está
7172       activo/montado, ocultamos el botón de WhatsApp para evitar la superposición. */
7173    body.px-chat-widget-active .wsp_floating { display: none !important; }
7174</style>
7175<script>
7176    (function () {
7177        // El widget pxChat monta su launcher/panel bajo #px-widget-root (clase .widget-launcher-button).
7178        function chatWidgetPresent() {
7179            return !!(
7180                document.getElementById('px-widget-root') ||
7181                document.querySelector('.widget-launcher-button, [class*="widget-launcher"]')
7182            );
7183        }
7184        var applied = false;
7185        var observer = null;
7186        var fallbackTimer = null;
7187        function apply() {
7188            if (applied || !document.body || !chatWidgetPresent()) return;
7189            document.body.classList.add('px-chat-widget-active');
7190            applied = true;
7191            if (observer) observer.disconnect();
7192            if (fallbackTimer) clearTimeout(fallbackTimer);
7193        }
7194        function start() {
7195            apply();
7196            if (applied || !('MutationObserver' in window) || !document.body) return;
7197            // El widget carga async (fetch de apiKey + inyección del 
7197<script>), así que observamos
7198            // el DOM hasta que aparezca. Si a los 20s no montó, dejamos de observar.
7199            observer = new MutationObserver(apply);
7200            observer.observe(document.body, { childList: true, subtree: true });
7201            fallbackTimer = setTimeout(function () {
7202                if (observer) observer.disconnect();
7203            }, 20000);
7204        }
7205        if (document.readyState === 'loading') {
7206            document.addEventListener('DOMContentLoaded', start);
7207        } else {
7208            start();
7209        }
7210    })();
7211</script>
7211
7212
7213<script src="https://cdn.pxsol.com/js/domready.js"></script>
vendor: 1 bytes, line 7213
7213
7214<script>
7215    var head = document.getElementsByTagName('head')[0];
7216
7217    function initializeFontAwesome() {
7218        var link = document.createElement('link');
7219        link.id = "fawesome";
7220        link.rel = 'stylesheet';
7221        link.type = 'text/css';
7222        link.href = 'https://use.fontawesome.com/releases/v5.7.1/css/all.css';
7223        head.appendChild(link);
7224    }
7225
7226    function initializeMDI() {
7227        var link = document.createElement('link');
7228        link.id = "fawesome";
7229        link.rel = 'stylesheet';
7230        link.type = 'text/css';
7231        link.href = '/css/materialdesignicons.min.css';
7232        head.appendChild(link);
7233    }
7234
7235    function initializeToast() {
7236        // check if jquery is loaded
7237        if (typeof jQuery == 'function') {
7238            let link = document.createElement('link');
7239            link.id = "jqToastCss";
7240            link.rel = 'stylesheet';
7241            link.type = 'text/css';
7242            link.href = '/includes/toast/jquery.toast.min.css';
7243            head.appendChild(link);
7244            let script = document.createElement('script');
7245            script.id = "jqToastJs";
7246            script.type = 'text/javascript';
7247            script.defer = true;
7248            script.async = true;
7249            script.src = '/includes/toast/jquery.toast.min.js';
7250            head.appendChild(script);
7251        } else {
7252            console.log('jQuery is not loaded. Toast could not be initialized.');
7253        }
7254    }
7255
7256    DomReady.ready(function() {
7257        var link = document.createElement('link');
7258        link.id = "siteCss";
7259        link.rel = 'stylesheet';
7260        link.type = 'text/css';
7261
7262                    link.href =
7263				'/css_3.css?pos=Sanremohoteles&device=computer&posv=1788314973_2025-08-29T20:43:48.000Z&filev=1782498034';
7264                            head.appendChild(link);
7265
7266        if (typeof deferFontAwesome !== "undefined") {
7267            if (!deferFontAwesome) {
7268                initializeFontAwesome();
7269            }
7270        } else {
7271            initializeFontAwesome();
7272        }
7273
7274        if (typeof deferMDI !== "undefined") {
7275            if (!deferMDI) {
7276                initializeMDI();
7277            }
7278        } else {
7279            initializeMDI();
7280        }
7281
7282        if (typeof deferToast !== "undefined") {
7283            if (!deferToast) {
7284                initializeToast();
7285            }
7286        } else {
7287            initializeToast();
7288        }
7289
7290    });
7291</script>
vendor: 1 bytes, line 7291
7291
7292<script>
7293	(function(){
7294		console.log('%c[pxChat] 🚀 Chat tracking script loaded (Chromium optimized)', 'color: #4CAF50; font-weight: bold; font-size: 14px;');
7295		window.dataLayer = window.dataLayer || [];
7296		function generateId(prefix){
7297			const rnd = ([1e7]+-1e3+-4e3+-8e3+-1e11).replace(/[018]/g, c =>
7298				(c ^ crypto.getRandomValues(new Uint8Array(1))[0] & 15 >> c / 4).toString(16)
7299			);
7300			return (prefix || 'id_') + rnd;
7301		}
7302		function getPxContext(){
7303			try { return window.pxContext || {}; } catch(e){ return {}; }
7304		}
7305		function getSessionId(){
7306			const ctx = getPxContext();
7307			if (ctx.session_id) return ctx.session_id;
7308			let sid = sessionStorage.getItem('px_session_id');
7309			if (!sid){ sid = generateId('s_'); sessionStorage.setItem('px_session_id', sid); }
7310			return sid;
7311		}
7312		function getChatSessionId(){
7313			let cid = sessionStorage.getItem('px_chat_session_id');
7314			if (!cid){ cid = generateId('c_'); sessionStorage.setItem('px_chat_session_id', cid); }
7315			return cid;
7316		}
7317		function basePayload(){
7318			const ctx = getPxContext();
7319			const pos = (ctx.pos || 'Sanremohoteles') || null;
7320			const hotelId = (ctx.product_id || '19322') || null;
7321			return {
7322				session_id: getSessionId(),
7323				search_id: ctx.search_id || ctx.SearchID || null,
7324				pos: pos,
7325				post: pos,
7326				hotel_id: hotelId,
7327				page_url: location.href
7328			};
7329		}
7330		function pushEvent(name, extra){
7331			const params = Object.assign({}, basePayload(), extra || {});
7332			// Dedupe: evita repetidos en ±1s por sesión/mensaje
7333			try {
7334				const keyId = params.chat_session_id || params.chat_id || '';
7335				const key = name + '|' + String(keyId);
7336				const now = Date.now();
7337				window.__px_evt_dedupe = window.__px_evt_dedupe || {};
7338				const last = window.__px_evt_dedupe[key] || 0;
7339				if (now - last < 1000) { 
7340					return; 
7341				}
7342				window.__px_evt_dedupe[key] = now;
7343			} catch(_e){
7344				console.error('[pxChat] Error in pushEvent dedupe:', _e);
7345			}
7346			// Evitar duplicados: si pxTrack existe, delegamos y NO empujamos a dataLayer aquí
7347			if (typeof window.pxTrack === 'function') {
7348				try { 
7349					console.log('[pxChat] 📤 Calling pxTrack for', name, 'with params:', params);
7350					window.pxTrack(name, params); 
7351					console.log('%c[pxChat] ✅ ' + name + ' event dispatched successfully', 'color: #4CAF50; font-weight: bold;');
7352				} catch(e){
7353					console.error('[pxChat] ❌ Error calling window.pxTrack for', name, ':', e);
7354				}
7355				return;
7356			}
7357			const payload = Object.assign({ event: name }, params);
7358			console.log('[pxChat] 📤 Pushing to dataLayer:', payload);
7359			window.dataLayer.push(payload);
7360			console.log('%c[pxChat] ✅ ' + name + ' event pushed to dataLayer', 'color: #4CAF50; font-weight: bold;');
7361		}
7362		let chatOpenTsMs = null;
7363		let chatIsOpen = false;
7364		let lastOpenPushMs = 0;
7365		let closeGuardTimer = null;
7366		let lastStateChangeMs = 0;
7367		let lastCloseCallMs = 0; // Guard para prevenir múltiples llamadas rápidas a handleChatClose
7368		let lastOpenCallMs = 0; // Guard para prevenir múltiples llamadas rápidas a handleChatOpen
7369		let MIN_CHAT_DURATION_MS = 3000; // Mínimo 3 segundos entre chat_open y chat_close (previene falsos positivos en Chrome)
7370		let OPEN_DEBOUNCE_MS = 300; // Debounce para chat_open (300ms - solo para múltiples llamadas rápidas)
7371		let CLOSE_DEBOUNCE_MS = 400; // Debounce para chat_close (400ms - solo para múltiples llamadas rápidas)
7372		let pendingOpenTimer = null; // Timer para debounce de open
7373		let pendingCloseTimer = null; // Timer para debounce de close
7374		let openCallCount = 0; // Contador de llamadas rápidas a open
7375		let closeCallCount = 0; // Contador de llamadas rápidas a close
7376		function syncChatState(){
7377			try {
7378				// Guard mínimo: no sincronizar si acabamos de cambiar estado hace menos de 200ms
7379				const now = Date.now();
7380				if (now - lastStateChangeMs < 200) {
7381					console.log('[pxChat] syncChatState throttled (' + (now - lastStateChangeMs) + 'ms ago)');
7382					return;
7383				}
7384				// Priorizar estado del launcher: clase --open
7385				// Buscar el botón con múltiples selectores
7386				const btn = document.querySelector('.widget-launcher-button') || 
7387				            document.querySelector('[class*="widget-launcher"]') ||
7388				            document.querySelector('[class*="launcher-button"]');
7389				if (btn && btn.classList) {
7390					const isOpenBtn = btn.classList.contains('widget-launcher-button--open') || 
7391					                  btn.classList.toString().indexOf('--open') !== -1;
7392					console.log('[pxChat] syncChatState: button state check:', {
7393						isOpenBtn: isOpenBtn,
7394						chatIsOpen: chatIsOpen,
7395						buttonClasses: btn.className
7396					});
7397					if (isOpenBtn && !chatIsOpen) { 
7398						console.log('[pxChat] syncChatState: button is open but chatIsOpen is false, calling handleChatOpen');
7399						lastStateChangeMs = now; 
7400						return handleChatOpen(); 
7401					}
7402					if (!isOpenBtn && chatIsOpen) { 
7403						// Guard mínimo: no cerrar si el chat se abrió hace menos de 3 segundos
7404						const startMs = chatOpenTsMs || lastOpenPushMs || null;
7405						if (startMs && (now - startMs < 3000)) {
7406							console.log('[pxChat] syncChatState: chat_close blocked - chat opened too recently (' + Math.round((now - startMs) / 1000) + 's ago, minimum 3s)');
7407							return;
7408						}
7409						// CRÍTICO: Esperar y verificar nuevamente que el botón realmente está cerrado
7410						// Esto previene disparos prematuros cuando el DOM aún se está actualizando
7411						setTimeout(function() {
7412							const btnCheck = document.querySelector('.widget-launcher-button') || 
7413							                  document.querySelector('[class*="widget-launcher"]') ||
7414							                  document.querySelector('[class*="launcher-button"]');
7415							const isStillOpen = btnCheck && btnCheck.classList && (
7416								btnCheck.classList.contains('widget-launcher-button--open') || 
7417								btnCheck.classList.toString().indexOf('--open') !== -1
7418							);
7419							const ifrCheck = findChatIframe();
7420							const isIframeVisible = isElementVisible(ifrCheck);
7421							
7422							console.log('[pxChat] syncChatState: delayed verification after button close:', {
7423								isStillOpen: isStillOpen,
7424								isIframeVisible: isIframeVisible,
7425								chatIsOpen: chatIsOpen
7426							});
7427							
7428							if (isStillOpen) {
7429								console.log('[pxChat] syncChatState: chat_close CANCELLED - button still shows as open after delay');
7430								return;
7431							}
7432							if (isIframeVisible) {
7433								console.log('[pxChat] syncChatState: chat_close CANCELLED - iframe still visible after delay');
7434								return;
7435							}
7436							if (!chatIsOpen) {
7437								console.log('[pxChat] syncChatState: chat_close CANCELLED - chatIsOpen is already false');
7438								return;
7439							}
7440							
7441							console.log('[pxChat] syncChatState: button confirmed closed after delay, calling handleChatClose');
7442							lastStateChangeMs = Date.now();
7443							handleChatClose();
7444						}, 600); // Esperar 600ms para confirmar que el DOM se actualizó completamente
7445						return;
7446					}
7447				}
7448				// CRÍTICO: NO usar iframe como fallback si hay un botón disponible
7449				// El iframe puede no ser visible incluso cuando el chat está abierto
7450				// Solo confiar en el botón launcher para determinar el estado
7451				if (!btn) {
7452					// Solo si NO hay botón, intentar buscar el botón de nuevo con un selector más amplio
7453					const btnRetry = document.querySelector('.widget-launcher-button, [class*="widget-launcher"], [class*="launcher-button"]');
7454					if (btnRetry && btnRetry.classList) {
7455						const isOpenBtnRetry = btnRetry.classList.contains('widget-launcher-button--open') || 
7456						                       btnRetry.classList.toString().indexOf('--open') !== -1;
7457						console.log('[pxChat] syncChatState: retry button found:', {
7458							isOpenBtnRetry: isOpenBtnRetry,
7459							chatIsOpen: chatIsOpen,
7460							buttonClasses: btnRetry.className
7461						});
7462						if (isOpenBtnRetry && !chatIsOpen) { 
7463							console.log('[pxChat] syncChatState: retry button is open but chatIsOpen is false, calling handleChatOpen');
7464							lastStateChangeMs = now; 
7465							return handleChatOpen(); 
7466						}
7467						if (!isOpenBtnRetry && chatIsOpen) { 
7468							// Guard mínimo: no cerrar si el chat se abrió hace menos de 3 segundos
7469							const startMs = chatOpenTsMs || lastOpenPushMs || null;
7470							if (startMs && (now - startMs < 3000)) {
7471								console.log('[pxChat] syncChatState: chat_close blocked - chat opened too recently (' + Math.round((now - startMs) / 1000) + 's ago, minimum 3s)');
7472								return;
7473							}
7474							// Verificar nuevamente antes de cerrar
7475							setTimeout(function() {
7476								const btnCheck = document.querySelector('.widget-launcher-button, [class*="widget-launcher"], [class*="launcher-button"]');
7477								const isStillOpen = btnCheck && (btnCheck.classList.contains('widget-launcher-button--open') || 
7478								                                 btnCheck.classList.toString().indexOf('--open') !== -1);
7479								
7480								if (isStillOpen || !chatIsOpen) {
7481									console.log('[pxChat] syncChatState: chat_close CANCELLED - button still open or chatIsOpen is false');
7482									return;
7483								}
7484								
7485								console.log('[pxChat] syncChatState: retry button confirmed closed after delay, calling handleChatClose');
7486								lastStateChangeMs = Date.now();
7487								handleChatClose();
7488							}, 600);
7489							return;
7490						}
7491					}
7492					
7493					// ÚLTIMO RECURSO: Solo usar iframe si NO hay botón Y el chat está abierto
7494					// Y solo para abrir, NUNCA para cerrar (el iframe no es confiable para cerrar)
7495					const ifr = findChatIframe();
7496					const visible = isElementVisible(ifr);
7497					console.log('[pxChat] syncChatState: iframe LAST RESORT check (only for opening):', {
7498						visible: visible,
7499						chatIsOpen: chatIsOpen,
7500						hasIframe: !!ifr
7501					});
7502					// Solo usar iframe para detectar apertura, NUNCA para cerrar
7503					if (visible && !chatIsOpen) { 
7504						console.log('[pxChat] syncChatState: iframe visible but chatIsOpen is false, calling handleChatOpen');
7505						lastStateChangeMs = now; 
7506						return handleChatOpen(); 
7507					}
7508					// NO usar iframe para cerrar - solo confiar en el botón
7509					if (!visible && chatIsOpen) { 
7510						console.log('[pxChat] syncChatState: iframe not visible but chatIsOpen is true - IGNORING (iframe not reliable for closing)');
7511						return; // NO hacer nada - solo el botón puede cerrar
7512					}
7513				}
7514			} catch(_e){
7515				console.error('[pxChat] syncChatState error:', _e);
7516			}
7517		}
7518		function handleChatOpen(meta){
7519			console.log('[pxChat] handleChatOpen called:', { chatIsOpen: chatIsOpen, meta: meta });
7520			
7521			// Si ya está abierto, no hacer nada
7522			if (chatIsOpen) {
7523				console.log('[pxChat] handleChatOpen skipped - chat already open');
7524				return;
7525			}
7526			
7527			const now = Date.now();
7528			
7529			// Guard mínimo: no abrir si se cerró hace menos de 500ms (solo para prevenir toggle extremo)
7530			if (lastCloseCallMs && (now - lastCloseCallMs < 500)) {
7531				console.log('[pxChat] handleChatOpen blocked - chat closed too recently (' + (now - lastCloseCallMs) + 'ms ago)');
7532				return;
7533			}
7534			
7535			// Throttling mínimo: solo prevenir llamadas duplicadas en menos de 200ms
7536			if (now - lastOpenCallMs < 200) {
7537				console.log('[pxChat] handleChatOpen throttled (too soon)');
7538				return;
7539			}
7540			
7541			lastOpenCallMs = now;
7542			
7543			// Cancelar cualquier close pendiente
7544			if (pendingCloseTimer) {
7545				clearTimeout(pendingCloseTimer);
7546				pendingCloseTimer = null;
7547				console.log('[pxChat] handleChatOpen: cancelled pending close');
7548			}
7549			
7550			// Disparar inmediatamente (sin debounce para Chromium)
7551			console.log('[pxChat] handleChatOpen: calling doChatOpen immediately');
7552			doChatOpen(meta);
7553		}
7554		
7555		function doChatOpen(meta) {
7556			// Verificar estado del botón (prioridad máxima para Chromium)
7557			// Buscar el botón con múltiples selectores
7558			const btn = document.querySelector('.widget-launcher-button') || 
7559			            document.querySelector('[class*="widget-launcher"]') ||
7560			            document.querySelector('[class*="launcher-button"]');
7561			const isActuallyOpen = btn && btn.classList && (
7562				btn.classList.contains('widget-launcher-button--open') || 
7563				btn.classList.toString().indexOf('--open') !== -1
7564			);
7565			const ifr = findChatIframe();
7566			const isIframeVisible = isElementVisible(ifr);
7567			
7568			// Log detallado para debugging en Chromium
7569			console.log('[pxChat] doChatOpen called:', {
7570				isActuallyOpen: isActuallyOpen,
7571				isIframeVisible: isIframeVisible,
7572				chatIsOpen: chatIsOpen,
7573				hasButton: !!btn,
7574				buttonClasses: btn ? btn.className : 'no button'
7575			});
7576			
7577			// Si el botón existe y dice que está abierto, proceder
7578			// Si no hay botón pero el iframe es visible, también proceder
7579			if (!isActuallyOpen && !isIframeVisible && btn) {
7580				console.warn('[pxChat] doChatOpen: button exists but not showing as open, proceeding anyway');
7581			}
7582			
7583			// Guardar timestamp ANTES de cambiar el estado (importante para Chrome)
7584			const now = Date.now();
7585			chatOpenTsMs = now;
7586			lastOpenPushMs = now;
7587			chatIsOpen = true;
7588			const chat_session_id = (meta && (meta.chat_session_id || meta.session_id)) || getChatSessionId();
7589			
7590			// Log para debugging
7591			console.log('[pxChat] 🚀 FIRING chat_open event:', {
7592				chatOpenTsMs: chatOpenTsMs,
7593				lastOpenPushMs: lastOpenPushMs,
7594				timestamp: now,
7595				chat_session_id: chat_session_id
7596			});
7597			pushEvent('chat_open', { chat_session_id });
7598		}
7599		function handleChatMessage(meta){
7600			const chat_id = meta && (meta.chat_id || meta.message_id) || null;
7601			const message_type = meta && (meta.message_type || meta.type) || null;
7602			const payload = { chat_id, message_type };
7603			pushEvent('chat_message', payload);
7604		}
7605		function handleChatClose(meta){
7606			console.log('[pxChat] handleChatClose called:', { chatIsOpen: chatIsOpen, meta: meta });
7607			
7608			// Si ya está cerrado, no hacer nada
7609			if (!chatIsOpen) {
7610				console.log('[pxChat] handleChatClose skipped - chat already closed');
7611				return;
7612			}
7613			
7614			const now = Date.now();
7615			
7616			// Guard crítico: prevenir que chat_close se dispare inmediatamente después de chat_open
7617			// Aumentado a 3 segundos para evitar disparos prematuros
7618			const startMs = chatOpenTsMs || lastOpenPushMs || null;
7619			if (startMs && (now - startMs < 3000)) {
7620				console.log('[pxChat] handleChatClose blocked - chat opened too recently (' + Math.round((now - startMs) / 1000) + 's ago, minimum 3s required)');
7621				return;
7622			}
7623			
7624			// Verificación adicional: asegurarse de que el botón realmente está cerrado
7625			// Buscar el botón con múltiples selectores
7626			const btn = document.querySelector('.widget-launcher-button') || 
7627			            document.querySelector('[class*="widget-launcher"]') ||
7628			            document.querySelector('[class*="launcher-button"]');
7629			const isActuallyOpen = btn && btn.classList && (
7630				btn.classList.contains('widget-launcher-button--open') || 
7631				btn.classList.toString().indexOf('--open') !== -1
7632			);
7633			if (isActuallyOpen) {
7634				console.log('[pxChat] handleChatClose blocked - button still shows as open');
7635				return;
7636			}
7637			
7638			// Throttling mínimo: solo prevenir llamadas duplicadas en menos de 200ms
7639			if (now - lastCloseCallMs < 200) {
7640				console.log('[pxChat] handleChatClose throttled (too soon)');
7641				return;
7642			}
7643			
7644			lastCloseCallMs = now;
7645			
7646			// Cancelar cualquier open pendiente
7647			if (pendingOpenTimer) {
7648				clearTimeout(pendingOpenTimer);
7649				pendingOpenTimer = null;
7650				console.log('[pxChat] handleChatClose: cancelled pending open');
7651			}
7652			
7653			// Disparar inmediatamente (sin debounce para Chromium)
7654			console.log('[pxChat] handleChatClose: calling doChatClose immediately');
7655			doChatClose(meta, startMs);
7656		}
7657		
7658		function doChatClose(meta, startMs) {
7659			// Verificar estado del botón (prioridad máxima para Chromium)
7660			// Buscar el botón con múltiples selectores
7661			const btn = document.querySelector('.widget-launcher-button') || 
7662			            document.querySelector('[class*="widget-launcher"]') ||
7663			            document.querySelector('[class*="launcher-button"]');
7664			const isActuallyOpen = btn && btn.classList && (
7665				btn.classList.contains('widget-launcher-button--open') || 
7666				btn.classList.toString().indexOf('--open') !== -1
7667			);
7668			const ifr = findChatIframe();
7669			const isIframeVisible = isElementVisible(ifr);
7670			
7671			// Log detallado para debugging en Chromium
7672			console.log('[pxChat] doChatClose called:', {
7673				isActuallyOpen: isActuallyOpen,
7674				isIframeVisible: isIframeVisible,
7675				chatIsOpen: chatIsOpen,
7676				hasButton: !!btn,
7677				buttonClasses: btn ? btn.className : 'no button',
7678				startMs: startMs
7679			});
7680			
7681			// CRÍTICO: Solo proceder si el chat realmente está cerrado
7682			// Si hay un botón, confiar solo en el botón (no en el iframe)
7683			if (btn) {
7684				if (isActuallyOpen) {
7685					console.warn('[pxChat] doChatClose BLOCKED - button still shows as open');
7686					return;
7687				}
7688				// Si hay botón y no está abierto, proceder (ignorar iframe)
7689				console.log('[pxChat] doChatClose: button exists and is closed, proceeding');
7690			} else {
7691				// Solo si NO hay botón, verificar iframe
7692				if (isIframeVisible) {
7693					console.warn('[pxChat] doChatClose BLOCKED - iframe still visible (no button found)');
7694					return;
7695				}
7696				console.log('[pxChat] doChatClose: no button found, iframe not visible, proceeding');
7697			}
7698			
7699			// Guardar timestamp ANTES de cambiar el estado (importante para Chrome)
7700			const now = Date.now();
7701			const endMs = now;
7702			// Calcular duración antes de resetear variables
7703			const duration_sec = startMs ? Math.max(0, Math.round((endMs - startMs) / 1000)) : null;
7704			// Ahora sí cambiar el estado
7705			chatIsOpen = false;
7706			const chat_session_id = (meta && (meta.chat_session_id || meta.session_id)) || getChatSessionId();
7707			
7708			// Log para debugging
7709			console.log('[pxChat] 🚀 FIRING chat_close event:', {
7710				startMs: startMs,
7711				endMs: endMs,
7712				duration_sec: duration_sec,
7713				chatOpenTsMs: chatOpenTsMs,
7714				lastOpenPushMs: lastOpenPushMs,
7715				calculated: endMs - startMs + 'ms',
7716				chat_session_id: chat_session_id
7717			});
7718			pushEvent('chat_close', { chat_session_id, duration_sec });
7719			// Resetear timestamp inmediatamente (ya calculamos la duración)
7720			chatOpenTsMs = null;
7721			lastOpenPushMs = 0;
7722		}
7723		function isElementVisible(el){
7724			if (!el) return false;
7725			const cs = window.getComputedStyle ? window.getComputedStyle(el) : null;
7726			if (!cs || cs.display === 'none' || cs.visibility === 'hidden' || cs.opacity === '0') return false;
7727			const r = el.getBoundingClientRect();
7728			return !!(r.width && r.height);
7729		}
7730		function findChatIframe(){
7731			try {
7732				const ifrs = document.querySelectorAll('iframe');
7733				for (let i = 0; i < ifrs.length; i++){
7734					const n = ifrs[i];
7735					if (isChatIframe(n)) return n;
7736				}
7737			} catch(_e){}
7738			return null;
7739		}
7740		// Detect launcher button presence (instala watcher; no toggle directo)
7741		document.addEventListener('click', function(ev){
7742			try {
7743				// Detectar click en el botón de cerrar del header
7744				let closeBtn = null;
7745				if (ev.composedPath) {
7746					const path = ev.composedPath();
7747					for (let i = 0; i < path.length; i++) {
7748						const n = path[i];
7749						if (n && n.classList && n.classList.contains && n.classList.contains('widget-header-close')) { 
7750							closeBtn = n; 
7751							break; 
7752						}
7753					}
7754				}
7755				if (!closeBtn && ev.target && ev.target.closest) {
7756					closeBtn = ev.target.closest('.widget-header-close');
7757				}
7758				
7759				// Si se hizo click en el botón de cerrar, esperar a que el DOM se actualice
7760				if (closeBtn && chatIsOpen) {
7761					console.log('[pxChat] Close button clicked, waiting for DOM update...');
7762					// Esperar más tiempo para que el widget actualice el estado del botón
7763					setTimeout(function() {
7764						const launcherBtn = document.querySelector('.widget-launcher-button');
7765						const isStillOpen = launcherBtn && launcherBtn.classList && launcherBtn.classList.contains('widget-launcher-button--open');
7766						console.log('[pxChat] After close button click, launcher state:', {
7767							isStillOpen: isStillOpen,
7768							chatIsOpen: chatIsOpen
7769						});
7770						if (!isStillOpen && chatIsOpen) {
7771							console.log('[pxChat] Close button clicked and launcher is now closed, calling handleChatClose');
7772							handleChatClose();
7773						}
7774					}, 500); // Esperar 500ms para que el DOM se actualice
7775					return;
7776				}
7777				
7778				// Detectar click en el botón launcher
7779				let btn = null;
7780				if (ev.composedPath) {
7781					const path = ev.composedPath();
7782					for (let i = 0; i < path.length; i++) {
7783						const n = path[i];
7784						if (n && n.classList && n.classList.contains && n.classList.contains('widget-launcher-button')) { btn = n; break; }
7785					}
7786				}
7787				if (!btn && ev.target && ev.target.closest) {
7788					btn = ev.target.closest('.widget-launcher-button');
7789				}
7790				if (btn) { 
7791					installButtonListener(btn); 
7792					// Si el botón tiene --open, está abierto; si no, está cerrado
7793					const isOpen = btn.classList.contains('widget-launcher-button--open');
7794					if (isOpen && !chatIsOpen) {
7795						// Chat se está abriendo
7796						console.log('[pxChat] Launcher button clicked (opening), calling handleChatOpen');
7797						setTimeout(function() { handleChatOpen(); }, 300);
7798					} else if (!isOpen && chatIsOpen) {
7799						// Chat se está cerrando
7800						console.log('[pxChat] Launcher button clicked (closing), waiting for DOM update...');
7801						setTimeout(function() {
7802							const launcherBtn = document.querySelector('.widget-launcher-button');
7803							const isStillOpen = launcherBtn && launcherBtn.classList && launcherBtn.classList.contains('widget-launcher-button--open');
7804							if (!isStillOpen && chatIsOpen) {
7805								console.log('[pxChat] Launcher button clicked and confirmed closed, calling handleChatClose');
7806								handleChatClose();
7807							}
7808						}, 500); // Esperar 500ms para confirmar que está cerrado
7809					}
7810				}
7811			} catch(_e){
7812				console.error('[pxChat] Error in click listener:', _e);
7813			}
7814		}, true);
7815		// Keyboard open on launcher
7816		document.addEventListener('keydown', function(ev){
7817			try {
7818				if (ev.key !== 'Enter' && ev.key !== ' ') return;
7819				let btn = null;
7820				if (ev.composedPath) {
7821					const path = ev.composedPath();
7822					for (let i = 0; i < path.length; i++) {
7823						const n = path[i];
7824						if (n && n.classList && n.classList.contains && n.classList.contains('widget-launcher-button')) { btn = n; break; }
7825					}
7826				}
7827				if (!btn && ev.target && ev.target.closest) {
7828					btn = ev.target.closest('.widget-launcher-button');
7829				}
7830				if (btn) { 
7831					installButtonListener(btn); 
7832					// Delay mínimo para dar tiempo al widget a actualizar la clase (Chromium)
7833					setTimeout(syncChatState, 200);
7834				}
7835			} catch(_e){}
7836		}, true);
7837		// Bridge postMessage events from the widget iframe
7838		window.addEventListener('message', function(ev){
7839			const d = ev.data;
7840			try {
7841				if (!d) return;
7842				if (typeof d === 'object') {
7843					const type = d.type || d.event || d.name || d.px_chat_event;
7844					if (!type) return;
7845					const payload = d.payload || d.meta || d;
7846					switch (String(type)) {
7847						case 'chat_opened':
7848						case 'widget_opened':
7849						case 'open':
7850							return handleChatOpen(payload);
7851						case 'message_sent':
7852						case 'chat_message':
7853						case 'message':
7854						case 'message_received':
7855						case 'new_message':
7856							// Extraer message_id del payload
7857							const messageId = payload && (payload.message_id || payload.messageId || payload.id || payload.chat_id);
7858							const messageType = payload && (payload.type || payload.message_type || 'text');
7859							const from = payload && (payload.from || payload.user_id || payload.userId);
7860							if (messageId) {
7861								detectChatMessage(messageId, messageType, from);
7862							} else {
7863								return handleChatMessage(payload);
7864							}
7865							return;
7866						case 'chat_closed':
7867						case 'widget_closed':
7868						case 'close':
7869							return handleChatClose(payload);
7870					}
7871					// También buscar en propiedades del objeto directamente
7872					if (d.message_id || d.messageId || d.id) {
7873						const messageId = d.message_id || d.messageId || d.id;
7874						const messageType = d.type || d.message_type || 'text';
7875						const from = d.from || d.user_id || d.userId;
7876						detectChatMessage(messageId, messageType, from);
7877					}
7878				}
7879				if (typeof d === 'string' && d.indexOf('px-chat:') === 0) {
7880					const parts = d.split(':');
7881					const type = parts[1];
7882					let payload = null;
7883					if (parts[2]) { try { payload = JSON.parse(parts.slice(2).join(':')); } catch(_e){} }
7884					if (type === 'open') return handleChatOpen(payload);
7885					if (type === 'message') {
7886						if (payload && (payload.message_id || payload.messageId || payload.id)) {
7887							detectChatMessage(payload.message_id || payload.messageId || payload.id, payload.type || 'text', payload.from);
7888						} else {
7889							return handleChatMessage(payload);
7890						}
7891						return;
7892					}
7893					if (type === 'close') return handleChatClose(payload);
7894				}
7895			} catch(_e){}
7896		});
7897		// Message detection: interceptar mensajes del widget
7898		let lastMessageIds = new Set(); // Track mensajes ya procesados para evitar duplicados
7899		let lastMessageTime = 0;
7900		const MESSAGE_THROTTLE_MS = 500; // Máximo 1 mensaje cada 500ms
7901		
7902		function detectChatMessage(messageId, messageType, from) {
7903			if (!messageId) {
7904				console.debug('[pxChat] detectChatMessage: no messageId provided');
7905				return;
7906			}
7907			
7908			// Evitar duplicados usando messageId (verificar primero)
7909			if (messageId && lastMessageIds.has(messageId)) {
7910				console.debug('[pxChat] detectChatMessage: message already processed', messageId);
7911				return;
7912			}
7913			
7914			// Throttling: evitar procesar mensajes muy rápidos
7915			const now = Date.now();
7916			const timeSinceLast = now - lastMessageTime;
7917			if (timeSinceLast < MESSAGE_THROTTLE_MS) {
7918				console.debug('[pxChat] detectChatMessage: throttled', timeSinceLast, 'ms since last');
7919				return;
7920			}
7921			
7922			// Permitir trackear mensajes incluso si el chat no está visualmente abierto
7923			// Los mensajes pueden llegar cuando el chat está minimizado pero activo
7924			// En Chromium, el chat puede estar activo sin que chatIsOpen sea true
7925			const hasChatSession = getChatSessionId() !== null;
7926			const shouldProcess = hasChatSession || chatIsOpen;
7927			
7928			if (!shouldProcess) {
7929				// Si no hay sesión y el chat no está abierto, intentar una vez más después de un delay
7930				console.debug('[pxChat] detectChatMessage: no session/open, will retry', { hasChatSession, chatIsOpen });
7931				setTimeout(function() {
7932					const retryHasSession = getChatSessionId() !== null;
7933					const retryIsOpen = chatIsOpen;
7934					if ((retryHasSession || retryIsOpen) && messageId && !lastMessageIds.has(messageId)) {
7935						console.debug('[pxChat] detectChatMessage: retry after delay', { retryHasSession, retryIsOpen });
7936						detectChatMessage(messageId, messageType, from);
7937					} else {
7938						console.debug('[pxChat] detectChatMessage: retry failed - conditions not met');
7939					}
7940				}, 1500); // Aumentado a 1.5s para dar más tiempo en Chromium
7941				return;
7942			}
7943			
7944			// Limpiar Set si tiene más de 100 mensajes (evitar memory leak)
7945			if (lastMessageIds.size > 100) {
7946				lastMessageIds.clear();
7947			}
7948			
7949			if (messageId) {
7950				lastMessageIds.add(messageId);
7951			}
7952			lastMessageTime = now;
7953			
7954			// Disparar evento
7955			try {
7956				const payload = { 
7957					chat_id: messageId, 
7958					message_type: messageType || 'text', 
7959					from: from 
7960				};
7961				console.debug('[pxChat] detectChatMessage: processing message', payload);
7962				handleChatMessage(payload);
7963			} catch(e) {
7964				console.error('[pxChat] ❌ Error processing message:', e);
7965			}
7966		}
7967		
7968		// Listener para eventos personalizados que el widget podría disparar
7969		document.addEventListener('px-chat-message', function(ev) {
7970			try {
7971				const data = ev.detail || ev.data || {};
7972				detectChatMessage(data.message_id || data.messageId || data.id, data.type || data.message_type, data.from);
7973			} catch(_e){}
7974		});
7975		
7976		// Interceptar logs de console.log para detectar mensajes de Pusher
7977		// El widget loguea mensajes con formato específico que podemos interceptar
7978		try {
7979			const originalConsoleLog = console.log;
7980			let isProcessing = false; // Flag para evitar recursión
7981			let processedMessageIds = new Set(); // Track mensajes ya procesados por el interceptor
7982			
7983			console.log = function(...args) {
7984				// Llamar al console.log original primero (siempre)
7985				originalConsoleLog.apply(console, args);
7986				
7987				// Evitar procesamiento recursivo
7988				if (isProcessing) return;
7989				
7990				try {
7991					isProcessing = true;
7992					
7993					let detectedMessageId = null;
7994					let detectedMessageType = 'text';
7995					let detectedFrom = null;
7996					
7997					// Buscar message_id en los argumentos directamente (mejorado para Chromium)
7998					for (let i = 0; i < args.length; i++) {
7999						const arg = args[i];
8000						if (typeof arg === 'object' && arg !== null && !Array.isArray(arg)) {
8001							// Buscar directamente en el objeto
8002							if (arg.message_id || arg.messageId || arg.id) {
8003								detectedMessageId = arg.message_id || arg.messageId || arg.id;
8004								detectedMessageType = arg.type || arg.message_type || 'text';
8005								detectedFrom = arg.from || arg.user_id || arg.userId || null;
8006								break;
8007							}
8008							// Buscar en rawData (estructura anidada común en Pusher)
8009							if (arg.rawData && typeof arg.rawData === 'object') {
8010								if (arg.rawData.message_id || arg.rawData.messageId || arg.rawData.id) {
8011									detectedMessageId = arg.rawData.message_id || arg.rawData.messageId || arg.rawData.id;
8012									detectedMessageType = arg.rawData.type || arg.rawData.message_type || 'text';
8013									detectedFrom = arg.rawData.from || arg.rawData.user_id || arg.rawData.userId || null;
8014									break;
8015								}
8016							}
8017							// Buscar en propiedades anidadas (para Chromium que puede tener estructura diferente)
8018							try {
8019								for (let key in arg) {
8020									if (arg.hasOwnProperty(key) && typeof arg[key] === 'object' && arg[key] !== null) {
8021										if (arg[key].message_id || arg[key].messageId || arg[key].id) {
8022											detectedMessageId = arg[key].message_id || arg[key].messageId || arg[key].id;
8023											detectedMessageType = arg[key].type || arg[key].message_type || 'text';
8024											detectedFrom = arg[key].from || arg[key].user_id || arg[key].userId || null;
8025											break;
8026										}
8027									}
8028								}
8029								if (detectedMessageId) break;
8030							} catch(_e) {}
8031						}
8032					}
8033					
8034					// Si no encontramos en objetos, buscar en strings (solo si contiene patrones de Pusher)
8035					if (!detectedMessageId) {
8036						const logStr = args.map(arg => {
8037							if (typeof arg === 'string') return arg;
8038							if (typeof arg === 'object' && arg !== null) {
8039								try { return JSON.stringify(arg); } catch(_e) { return String(arg); }
8040							}
8041							return String(arg);
8042						}).join(' ');
8043						
8044						// Solo procesar si contiene patrones específicos de Pusher
8045						if ((logStr.indexOf('[Pusher] 📨 MENSAJE RECIBIDO') !== -1 || 
8046						     logStr.indexOf('[Pusher] 📨 Mensaje recibido') !== -1 ||
8047						     logStr.indexOf('[Pusher] Body completo:') !== -1 ||
8048						     logStr.indexOf('[Pusher]') !== -1) &&
8049						     (logStr.indexOf('message_id') !== -1 || logStr.indexOf('messageId') !== -1)) {
8050							
8051							// Intentar extraer message_id del string (múltiples formatos)
8052							try {
8053								// Formato: "message_id": "xxx"
8054								let messageIdMatch = logStr.match(/["']message_id["']\s*:\s
8054*["']([^"']+)["']/);
8055								if (!messageIdMatch) {
8056									// Formato: messageId: "xxx"
8057									messageIdMatch = logStr.match(/["']messageId["']\s*:\s*["']([^"']+)["']/);
8058								}
8059								if (!messageIdMatch) {
8060									// Formato: message_id: xxx (sin comillas)
8061									messageIdMatch = logStr.match(/message_id["']?\s*:\s*["']?([a-zA-Z0-9\-_]+)/);
8062								}
8063								if (messageIdMatch && messageIdMatch[1]) {
8064									detectedMessageId = messageIdMatch[1];
8065									console.debug('[pxChat] Detected message_id from log string:', detectedMessageId);
8066								}
8067							} catch(_e) {}
8068						}
8069					}
8070					
8071					// Procesar solo si encontramos un messageId y no lo hemos procesado antes
8072					if (detectedMessageId && !processedMessageIds.has(detectedMessageId)) {
8073						processedMessageIds.add(detectedMessageId);
8074						// Limpiar Set si tiene más de 50 mensajes
8075						if (processedMessageIds.size > 50) {
8076							processedMessageIds.clear();
8077						}
8078						
8079						console.debug('[pxChat] Detected message from Pusher log:', {
8080							messageId: detectedMessageId,
8081							messageType: detectedMessageType,
8082							from: detectedFrom
8083						});
8084						
8085						setTimeout(function() {
8086							detectChatMessage(detectedMessageId, detectedMessageType, detectedFrom);
8087						}, 300); // Aumentado a 300ms para dar tiempo a que se establezca la sesión
8088					}
8089				} catch(e) {
8090					// Silenciar errores en el interceptor para no romper otros logs
8091					console.debug('[pxChat] Error in console.log interceptor:', e);
8092				} finally {
8093					isProcessing = false;
8094				}
8095			};
8096			
8097			originalConsoleLog('[pxChat] Console.log interceptor installed for Pusher message detection');
8098		} catch(e) {
8099			console.error('[pxChat] Error setting up console.log interceptor:', e);
8100		}
8101		
8102		// MutationObserver para detectar mensajes en el DOM del chat (dentro del iframe)
8103		// Nota: Esto solo funciona si tenemos acceso al contenido del iframe (mismo origen)
8104		try {
8105			const chatMessageObserver = new MutationObserver(function(mutations) {
8106				if (!chatIsOpen) return;
8107				
8108				for (let i = 0; i < mutations.length; i++) {
8109					const mutation = mutations[i];
8110					if (mutation.addedNodes && mutation.addedNodes.length > 0) {
8111						for (let j = 0; j < mutation.addedNodes.length; j++) {
8112							const node = mutation.addedNodes[j];
8113							if (node.nodeType === 1) { // Element node
8114								// Buscar elementos que parezcan mensajes de chat
8115								// Selectores comunes: .message, .chat-message, [data-message-id], etc.
8116								const messageEl = node.classList && (
8117									node.classList.contains('message') ||
8118									node.classList.contains('chat-message') ||
8119									node.classList.contains('msg') ||
8120									node.getAttribute('data-message-id')
8121								) ? node : (node.querySelector && (
8122									node.querySelector('.message') ||
8123									node.querySelector('.chat-message') ||
8124									node.querySelector('[data-message-id]')
8125								));
8126								
8127								if (messageEl) {
8128									const messageId = messageEl.getAttribute('data-message-id') || 
8129									                  messageEl.getAttribute('data-id') ||
8130									                  messageEl.id ||
8131									                  null;
8132									const messageType = messageEl.getAttribute('data-type') || 
8133									                    messageEl.getAttribute('data-message-type') ||
8134									                    'text';
8135									const from = messageEl.getAttribute('data-from') || null;
8136									
8137									if (messageId) {
8138										detectChatMessage(messageId, messageType, from);
8139									}
8140								}
8141							}
8142						}
8143					}
8144				}
8145			});
8146			
8147			// Observar el iframe del chat cuando esté disponible
8148			function observeChatIframe() {
8149				const ifr = findChatIframe();
8150				if (ifr && ifr.contentDocument && ifr.contentDocument.body) {
8151					try {
8152						chatMessageObserver.observe(ifr.contentDocument.body, {
8153							childList: true,
8154							subtree: true
8155						});
8156						console.debug('[pxChat] Message observer installed on chat iframe');
8157					} catch(e) {
8158						// Cross-origin: no podemos acceder al contenido del iframe
8159						console.debug('[pxChat] Cannot observe iframe content (cross-origin)');
8160					}
8161				}
8162			}
8163			
8164			// Intentar observar cuando el iframe se carga
8165			const ifr = findChatIframe();
8166			if (ifr) {
8167				if (ifr.contentDocument && ifr.contentDocument.body) {
8168					observeChatIframe();
8169				} else {
8170					ifr.addEventListener('load', observeChatIframe);
8171				}
8172			}
8173			
8174			// También intentar cuando se detecta un nuevo iframe
8175			const iframeObserver = new MutationObserver(function() {
8176				const ifr = findChatIframe();
8177				if (ifr && !ifr.__px_chat_message_observed) {
8178					ifr.__px_chat_message_observed = true;
8179					if (ifr.contentDocument && ifr.contentDocument.body) {
8180						observeChatIframe();
8181					} else {
8182						ifr.addEventListener('load', observeChatIframe);
8183					}
8184				}
8185			});
8186			iframeObserver.observe(document.body, { childList: true, subtree: true });
8187		} catch(e) {
8188			console.error('[pxChat] Error setting up message observer:', e);
8189		}
8190		
8191		// Expose helpers for manual triggers if needed
8192		window.pxChatOpen = function(meta){ handleChatOpen(meta || {}); };
8193		window.pxChatMessage = function(meta){ handleChatMessage(meta || {}); };
8194		window.pxChatClose = function(meta){ handleChatClose(meta || {}); };
8195		// Expose message detection function for external use
8196		window.pxChatDetectMessage = function(messageId, messageType, from) {
8197			detectChatMessage(messageId, messageType, from);
8198		};
8199		// Robust DOM observer: button presence and iframe lifecycle
8200		const observedIframes = new Set();
8201		function isChatIframe(node){
8202			if (!node || node.nodeName !== 'IFRAME') return false;
8203			try {
8204				const src = node.getAttribute('src') || '';
8205				return /pxsol|chat|widget/i.test(src);
8206			} catch(_e){ return false; }
8207		}
8208		function installButtonListener(btn){
8209			if (!btn || btn.__px_chat_hooked) return;
8210			btn.__px_chat_hooked = true;
8211			try {
8212				btn.__px_open_state = !!(btn.classList && btn.classList.contains('widget-launcher-button--open'));
8213				// NO sincronizar estado inicial aquí - solo observar cambios futuros
8214				let buttonChangeTimer = null;
8215				const ob = new MutationObserver(function(muts){
8216					for (let i = 0; i < muts.length; i++){
8217						const m = muts[i];
8218						if (m.type === 'attributes' && m.attributeName === 'class') {
8219							const isOpen = btn.classList.contains('widget-launcher-button--open');
8220							// Solo disparar si realmente cambió el estado
8221							if (isOpen !== btn.__px_open_state) {
8222								const now = Date.now();
8223								if (now - lastStateChangeMs < 300) {
8224									console.debug('[pxChat] MutationObserver: change throttled');
8225									return; // Ignorar cambios muy rápidos
8226								}
8227								
8228								// Procesar inmediatamente (sin debounce para Chromium)
8229								if (buttonChangeTimer) {
8230									clearTimeout(buttonChangeTimer);
8231								}
8232								// Delay mínimo solo para asegurar que el DOM se actualizó
8233								buttonChangeTimer = setTimeout(function() {
8234									processButtonStateChange(btn, now);
8235									buttonChangeTimer = null;
8236								}, 50); // Delay mínimo de 50ms para Chromium
8237							}
8238						}
8239					}
8240				});
8241				ob.observe(btn, { attributes: true, attributeFilter: ['class'] });
8242				btn.__px_chat_observer = ob;
8243			} catch(_e){}
8244		}
8245		
8246		function processButtonStateChange(btn, timestamp) {
8247			// Verificar que el estado realmente cambió
8248			const currentIsOpen = btn.classList.contains('widget-launcher-button--open') || 
8249			                      btn.classList.toString().indexOf('--open') !== -1;
8250			console.log('[pxChat] processButtonStateChange:', {
8251				currentIsOpen: currentIsOpen,
8252				previousState: btn.__px_open_state,
8253				chatIsOpen: chatIsOpen
8254			});
8255			
8256			if (currentIsOpen === btn.__px_open_state) {
8257				console.log('[pxChat] MutationObserver: state unchanged, skipping');
8258				return;
8259			}
8260			
8261			btn.__px_open_state = currentIsOpen;
8262			lastStateChangeMs = timestamp || Date.now();
8263			
8264			if (currentIsOpen) { 
8265				console.log('[pxChat] MutationObserver: button opened, calling handleChatOpen');
8266				handleChatOpen(); 
8267			} else { 
8268				// Verificar que chatIsOpen es true antes de intentar cerrar
8269				if (!chatIsOpen) {
8270					console.log('[pxChat] MutationObserver: button closed but chatIsOpen is already false, skipping');
8271					return;
8272				}
8273				// Guard mínimo: no cerrar si el chat se abrió hace menos de 3 segundos
8274				const finalNow = Date.now();
8275				const startMs = chatOpenTsMs || lastOpenPushMs || null;
8276				if (startMs && (finalNow - startMs < 3000)) {
8277					console.log('[pxChat] MutationObserver: chat_close blocked - chat opened too recently (' + Math.round((finalNow - startMs) / 1000) + 's ago, minimum 3s)');
8278					return;
8279				}
8280				
8281				// CRÍTICO: Esperar y verificar nuevamente que el botón realmente perdió la clase --open
8282				// Esto previene disparos prematuros cuando el DOM aún se está actualizando
8283				setTimeout(function() {
8284					const btnCheck = document.querySelector('.widget-launcher-button') || 
8285					                  document.querySelector('[class*="widget-launcher"]') ||
8286					                  document.querySelector('[class*="launcher-button"]');
8287					const isStillOpen = btnCheck && btnCheck.classList && (
8288						btnCheck.classList.contains('widget-launcher-button--open') || 
8289						btnCheck.classList.toString().indexOf('--open') !== -1
8290					);
8291					
8292					console.log('[pxChat] MutationObserver: delayed verification after button close:', {
8293						isStillOpen: isStillOpen,
8294						chatIsOpen: chatIsOpen,
8295						hasButton: !!btnCheck
8296					});
8297					
8298					// Solo proceder si el botón realmente está cerrado
8299					// Si hay botón, confiar solo en el botón (no en el iframe)
8300					if (isStillOpen) {
8301						console.log('[pxChat] MutationObserver: chat_close CANCELLED - button still shows as open after delay');
8302						return;
8303					}
8304					// Solo verificar iframe si NO hay botón
8305					if (!btnCheck) {
8306						const ifr = findChatIframe();
8307						const isIframeVisible = isElementVisible(ifr);
8308						if (isIframeVisible) {
8309							console.log('[pxChat] MutationObserver: chat_close CANCELLED - iframe still visible after delay (no button found)');
8310							return;
8311						}
8312					}
8313					if (!chatIsOpen) {
8314						console.log('[pxChat] MutationObserver: chat_close CANCELLED - chatIsOpen is already false');
8315						return;
8316					}
8317					
8318					console.log('[pxChat] MutationObserver: button confirmed closed after delay, calling handleChatClose');
8319					handleChatClose(); 
8320				}, 600); // Esperar 600ms para confirmar que el DOM se actualizó completamente
8321			}
8322		}
8323		
8324		function scanExisting(){
8325			try {
8326				const btn = document.querySelector('.widget-launcher-button');
8327				if (btn) installButtonListener(btn);
8328				document.querySelectorAll('iframe').forEach(function(ifr){
8329					if (isChatIframe(ifr) && !observedIframes.has(ifr)) {
8330						observedIframes.add(ifr);
8331						// Delay más largo para evitar falsos positivos
8332						setTimeout(syncChatState, 800);
8333					}
8334				});
8335			} catch(_e){}
8336		}
8337		const mo = new MutationObserver(function(mutations){
8338			let anyRemoval = false;
8339			for (const m of mutations) {
8340				if (m.type === 'childList') {
8341					// Added nodes
8342					m.addedNodes && m.addedNodes.forEach(function(n){
8343						try {
8344							if (!(n instanceof Element)) return;
8345							if (n.classList && n.classList.contains('widget-launcher-button')) {
8346								installButtonListener(n);
8347							}
8348							if (isChatIframe(n) && !observedIframes.has(n)) { observedIframes.add(n); setTimeout(syncChatState, 800); }
8349							// Deep scan
8350							n.querySelectorAll && n.querySelectorAll('.widget-launcher-button,iframe').forEach(function(x){
8351								if (x.classList && x.classList.contains('widget-launcher-button')) installButtonListener(x);
8352								if (isChatIframe(x) && !observedIframes.has(x)) { observedIframes.add(x); setTimeout(syncChatState, 800); }
8353							});
8354						} catch(_e){}
8355					});
8356					// Removed nodes
8357					if (m.removedNodes && m.removedNodes.length) {
8358						anyRemoval = true;
8359					}
8360				}
8361			}
8362			if (anyRemoval) {
8363				// Check if any observed iframe is gone
8364				const still = new Set();
8365				observedIframes.forEach(function(ifr){
8366					if (document.body && document.body.contains(ifr)) {
8367						still.add(ifr);
8368					} else {
8369						// Delay más largo cuando se remueve el iframe (chat cerrado)
8370						setTimeout(syncChatState, 500);
8371					}
8372				});
8373				observedIframes.clear();
8374				still.forEach(function(x){ observedIframes.add(x); });
8375			}
8376		});
8377		// Poller de respaldo acotado: solo durante una ventana corta post-load
8378		// para evitar loops eternos si no aparece el botón.
8379		const CHAT_FALLBACK_POLL_INTERVAL_MS = 500;
8380		const CHAT_FALLBACK_POLL_MAX_MS_AFTER_LOAD = 2000;
8381		let chatFallbackPollIntervalId = null;
8382		let chatFallbackPollStartMs = null;
8383		
8384		function stopChatFallbackPoller(reason) {
8385			if (!chatFallbackPollIntervalId) return;
8386			clearInterval(chatFallbackPollIntervalId);
8387			chatFallbackPollIntervalId = null;
8388			console.log('[pxChat] Polling stopped:', reason);
8389		}
8390		
8391		function runChatFallbackPollTick() {
8392			const btn = document.querySelector('.widget-launcher-button') || 
8393			            document.querySelector('[class*="widget-launcher"]') ||
8394			            document.querySelector('[class*="launcher-button"]');
8395			// Solo ejecutar syncChatState si NO hay botón (el botón tiene su propio observer)
8396			if (!btn) {
8397				console.log('[pxChat] Polling syncChatState (no button found)');
8398				syncChatState();
8399				return;
8400			}
8401			
8402			console.debug('[pxChat] Polling skipped - button found, using MutationObserver instead');
8403			stopChatFallbackPoller('button found');
8404		}
8405		
8406		function startChatFallbackPoller() {
8407			if (chatFallbackPollIntervalId) return;
8408			chatFallbackPollStartMs = Date.now();
8409			runChatFallbackPollTick(); // Tick inicial inmediato
8410			chatFallbackPollIntervalId = setInterval(function() {
8411				if (Date.now() - chatFallbackPollStartMs > CHAT_FALLBACK_POLL_MAX_MS_AFTER_LOAD) {
8412					stopChatFallbackPoller('load + ' + CHAT_FALLBACK_POLL_MAX_MS_AFTER_LOAD + 'ms timeout');
8413					return;
8414				}
8415				runChatFallbackPollTick();
8416			}, CHAT_FALLBACK_POLL_INTERVAL_MS);
8417		}
8418		
8419		// Ejecutar solo post-load (o inmediatamente si la página ya terminó de cargar)
8420		if (document.readyState === 'complete') {
8421			startChatFallbackPoller();
8422		} else {
8423			window.addEventListener('load', function onLoadStartChatFallbackPoller() {
8424				window.removeEventListener('load', onLoadStartChatFallbackPoller);
8425				startChatFallbackPoller();
8426			});
8427		}
8428		try {
8429			mo.observe(document.documentElement || document, { childList: true, subtree: true });
8430			// Initial scan after load tick
8431			if (document.readyState === 'loading') {
8432				document.addEventListener('DOMContentLoaded', scanExisting);
8433			} else {
8434				setTimeout(scanExisting, 0);
8435			}
8436		} catch(_e){}
8437	})();
8438</script>
vendor: 1 bytes, line 8438
8438
8439<script>
8440	// Override para evitar espejo de chat_* al dataLayer y evitar doble track
8441	(function(){
8442		if (typeof window.gtag === 'function') {
8443			window.gtag = function(){
8444				try { window.dataLayer.push(arguments); } catch(_e){}
8445			};
8446		}
8447		// Redefinir pxTrack: usa gtag si existe; sino, dataLayer
8448		window.pxTrack = function(eventName, params){
8449			params = params || {};
8450			if (typeof window.gtag === 'function') {
8451				try { window.gtag('event', eventName, params); } catch(_e){}
8452			} else {
8453				try { window.dataLayer.push(Object.assign({ event: eventName }, params)); } catch(_e){}
8454			}
8455		};
8456	})();
8457</script>
8457
8458</script>
8458		</div>
8459
8460
8461		<div id="ContainerRD" class="nodisplay">
8462			<div class="flex flex-center fullheight">
8463				<div id="ContainerRDInner">
8464					<div id="Loader" class="fullheight flex flex-center">
8465						<img class="animated slideInUp" src="https://cdn.pxsol.com/css/images/logo_loginrd.png" />
8466					</div>
8467					<div id="CloseRDContainer"><i class="fa fa-times" aria-hidden="true"></i></div>
8468					<iframe style="width: 100%; height: 100%" src="" id="IframeRD" scrolling="no">
8469
8470					</iframe>
8471				</div>
8472			</div>
8473		</div>
8474
8475		<div id="CortinaCargando" align="center" class="Loading nodisplay">
8476			<div class="linear-activity">
8477				<div class="indeterminate"></div>
8478			</div>
8479		</div>
8480
8481		<div id="dialogBox" title="..." class="nodisplay">
8482			<p><span class="ui-icon ui-icon-alert alerticon"></span>...</p>
8483		</div>
8484
8485						
8485<script src='/js_3.js?pos=Sanremohoteles&amp;device=computer&amp;filev=1790891789&amp;posv=1788314973_2025-08-29T20:43:48.000Z_2025-08-29T20:43:48.000Z' defer="true" async></script>
8485
8486
8487		<div id="diccionario">
8488					</div>
8489
8490	</div>
8490<script>
8491	window.currentContent = "index";
8492	window.currentDevice = "desktop";
8493	console.log('CurrentState', window.currentContent, window.currentDevice);
8494</script>
8494
8495
8496    
8496<script src="/neo_modules/neo_popup/js.js?v=121790891789"></script>
8496
8497<!-- End Popup code -->
8498<div class="EndError left full" style="max-width: 100vw; overflow: auto;">
8499	</div>
8500
8501
8502<script type="module" src="https://static.cloudflareinsights.com/beacon.min.js/v31edd6df95cf4e85bb4c19e7a9bdbcba1788362987495" integrity="sha512-iIg7k2xntmwu6/uSb5tpc/hySgZc4eoL31yB29W6tJFo2akwjPWcEqnCEdJvGexCL0KEQwVYv5BlowfhVz26hg==" data-cf-beacon='{"version":"2024.11.0","token":"1a7d7c25cb794fbbb525883f1f41f61e","r":1,"spa":2}' crossorigin="anonymous"></script>
8502
8503</body>
8504<div id="dialogBox" title="..." class="nodisplay">
8505	<p><span class="ui-icon ui-icon-alert alerticon"></span>...</p>
8506</div>
8507
8508
8509
8510
8511</html>
8512
8513

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.