1<!DOCTYPE html> 2<html lang="en"> 3 4<head> 5 <meta charset="utf-8"> 6 <meta http-equiv="X-UA-Compatible" content="IE=edge"> 7 <title>Hotel in Basco, Batanes, Philippines | Art Inspired Stay atâ¦</title> 8 <meta name="description" content="Stay at Fundacion Pacita, a unique hilltop heritage hotel in Basco, Batanes with ocean views, Ivatan-inspired rooms, art gallery spaces and peacefulâ¦"> 9<meta name="viewport" content="width=device-width, initial-scale=1"> 10 <link rel="preconnect" href="https://fonts.googleapis.com"> 11 <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> 12 <link rel="preconnect" href="https://cdn.jsdelivr.net" crossorigin><link rel="preconnect" href="https://cdn.jsdelivr.net"> 13 <link rel="preconnect" href="https://cdnjs.cloudflare.com" crossorigin> 14 <link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" rel="stylesheet"> 15 <link rel="stylesheet" href="./css/style.css?v=1791356110" /> 16 <link rel="stylesheet" href="./css/accessibility.css?v=1791356110" /> 17 <link rel="stylesheet" href="./css/responsive.css?v=1791356110" /> 18 <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/[email protected]/font/bootstrap-icons.css" media="print" onload="this.media='all'"> 19 <noscript><link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/[email protected]/font/bootstrap-icons.css"></noscript> 20 <link href="https://fonts.googleapis.com/css2?family=Sansation:ital,wght@0,400;0,700;1,400&display=swap" 21 rel="stylesheet" media="print" onload="this.media='all'"> 22 <noscript><link href="https://fonts.googleapis.com/css2?family=Sansation:ital,wght@0,400;0,700;1,400&display=swap" rel="stylesheet"></noscript> 23 <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/swiper@11/swiper-bundle.min.css" media="print" onload="this.media='all'" /> 24 <noscript><link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/swiper@11/swiper-bundle.min.css" /></noscript> 25 <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/[email protected]/css/flag-icons.min.css" media="print" onload="this.media='all'"> 26 <noscript><link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/[email protected]/css/flag-icons.min.css"></noscript> 27 <link rel="icon" href="https://homesweb.staah.net/13724/13724_177551912188043495169d445913e665.png"> 28
28<script>window.THEME_ID = '200-Republic';</script>
28 29
29<script src="./js/language-config.js?v=1791356110"></script>
29 30 <link rel="canonical" href="https://fundacionpacita.com/"> 31 <meta name="robots" 32 content="index,follow"> 33 <link rel="alternate" type="text/plain" title="llms.txt" href="https://fundacionpacita.com/llms.txt"> 34 <meta property="og:type" content="website"> 35 <meta property="og:title" content="Hotel in Basco, Batanes, Philippines | Art Inspired Stay atâ¦"> 36 <meta property="og:description" content="Stay at Fundacion Pacita, a unique hilltop heritage hotel in Basco, Batanes with ocean views, Ivatan-inspired rooms, art gallery spaces and peacefulâ¦"> 37 <meta property="og:url" content="https://fundacionpacita.com/"> 38 <meta property="og:image" 39 content="https://homesweb.staah.net/imagelibrary/13724_1770763612081.jpeg"> 40 <meta name="twitter:card" content="summary_large_image"> 41 <meta name="twitter:title" content="Hotel in Basco, Batanes, Philippines | Art Inspired Stay atâ¦"> 42 <meta name="twitter:description" content="Stay at Fundacion Pacita, a unique hilltop heritage hotel in Basco, Batanes with ocean views, Ivatan-inspired rooms, art gallery spaces and peacefulâ¦"> 43 <meta name="twitter:image" 44 content="https://homesweb.staah.net/imagelibrary/13724_1770763612081.jpeg"> 45
45<script> 46 // Early compatibility shim for legacy custom scripts referencing #demo before DOM is ready. 47 (function setupLegacyDemoShim() { 48 var DEMO_ID = 'demo'; 49 var fallbackDemo = { innerHTML: '' }; 50 var originalGetElementById = document.getElementById.bind(document); 51 52 document.getElementById = function (id) { 53 var el = originalGetElementById(id); 54 if (id === DEMO_ID && !el) return fallbackDemo; 55 return el; 56 }; 57 58 function ensureDemoElement() { 59 if (originalGetElementById(DEMO_ID) || !document.body) return; 60 var el = document.createElement('div'); 61 el.id = DEMO_ID; 62 el.style.display = 'none'; 63 document.body.appendChild(el); 64 } 65 66 if (document.readyState === 'loading') { 67 document.addEventListener('DOMContentLoaded', ensureDemoElement); 68 } else { 69 ensureDemoElement(); 70 } 71 })(); 72 </script>
72 73 74<link rel="alternate" type="text/plain" title="LLM-ready site summary" href="https://fundacionpacita.com/llms.txt"> 75<link rel="alternate" type="text/plain" title="AI resource index" href="https://fundacionpacita.com/ai.txt"> 76<link rel="alternate" type="application/json" title="ai/property.json" href="https://fundacionpacita.com/ai/property.json"> 77<link rel="alternate" type="application/json" title="ai/rooms.json" href="https://fundacionpacita.com/ai/rooms.json"> 78<link rel="alternate" type="application/json" title="ai/faq.json" href="https://fundacionpacita.com/ai/faq.json">
79<script type="application/ld+json"> 80{ 81 "@context": "https://schema.org", 82 "@graph": [ 83 { 84 "@type": ["Hotel", "LodgingBusiness", "LocalBusiness"], 85 "@id": "https://fundacionpacita.com/#hotel", 86 "name": "Fundacion Pacita", 87 "url": "https://fundacionpacita.com/", 88 "description": "Earth and art come together at Fundacion Pacita to create the most unforgettable and picturesque stay in Basco, Batanes, Philippines. Set atop a lush hill and caught between the mountain, sea, and sky, the hotel offers the best spot to view the scenic landscape and the cultural and aesthetic heritage of the Ivatan people. Experience the true photographic beauty of Batanes right from the comfortsâ¦" 89 , 90 "image": "https://homesweb.staah.net/imagelibrary/13724_1770763612081.jpeg" 91 , 92 "logo": { 93 "@type": "ImageObject", 94 "url": "https://homesweb.staah.net/13724/1770173557_13724_FP_LOGO_2.png" 95 } 96 , 97 "telephone": "09209720014" 98 , 99 "email": "[email protected]" 100 , 101 "address": { 102 "@type": "PostalAddress", 103 "streetAddress": "Sitio Tukon, Chanarian-Tukon, Basco, Batanes", 104 "addressLocality": "Basco", 105 "addressRegion": "Batanes", 106 "addressCountry": "Philippines" 107 } 108 , 109 "numberOfRooms": { 110 "@type": "QuantitativeValue", 111 "value": 13, 112 "unitCode": "ROM", 113 "unitText": "room" 114 } 115 , 116 "geo": { 117 "@type": "GeoCoordinates", 118 "latitude": "20.4313393", 119 "longitude": "121.9672182" 120 } 121 , 122 "sameAs": [ 123 "https://www.facebook.com/fundacionpacita/", 124 "https://www.instagram.com/fundacionpacita/" 125 ] 126 , 127 "amenityFeature": [ 128 { 129 "@type": "LocationFeatureSpecification", 130 "name": "Non-smoking Property", 131 "value": true 132 }, 133 { 134 "@type": "LocationFeatureSpecification", 135 "name": "Restaurants", 136 "value": true 137 }, 138 { 139 "@type": "LocationFeatureSpecification", 140 "name": "Cafe", 141 "value": true 142 }, 143 { 144 "@type": "LocationFeatureSpecification", 145 "name": "Room Service - Limited Service", 146 "value": true 147 }, 148 { 149 "@type": "LocationFeatureSpecification", 150 "name": "Dry Cleaning / Laundry Service", 151 "value": true 152 }, 153 { 154 "@type": "LocationFeatureSpecification", 155 "name": "Arrival / Departure Lounge", 156 "value": true 157 }, 158 { 159 "@type": "LocationFeatureSpecification", 160 "name": "Luggage Storage", 161 "value": true 162 }, 163 { 164 "@type": "LocationFeatureSpecification", 165 "name": "Free Airport Shuttle", 166 "value": true 167 }, 168 { 169 "@type": "LocationFeatureSpecification", 170 "name": "Free Wifi", 171 "additionalType": "https://www.wikidata.org/wiki/Q1798823", 172 "value": true 173 }, 174 { 175 "@type": "LocationFeatureSpecification", 176 "name": "Linen provided", 177 "value": true 178 }, 179 { 180 "@type": "LocationFeatureSpecification", 181 "name": "Eco-friendly", 182 "value": true 183 }, 184 { 185 "@type": "LocationFeatureSpecification", 186 "name": "Room service breakfast", 187 "value": true 188 }, 189 { 190 "@type": "LocationFeatureSpecification", 191 "name": "Food available", 192 "value": true 193 }, 194 { 195 "@type": "LocationFeatureSpecification", 196 "name": "Dining", 197 "value": true 198 }, 199 { 200 "@type": "LocationFeatureSpecification", 201 "name": "Bed \u0026 Breakfast", 202 "value": true 203 } 204 ] 205 , 206 "containsPlace": [ 207 { 208 "@type": "HotelRoom", 209 "@id": "https://fundacionpacita.com/sumla-i.html#room", 210 "name": "Sumla I", 211 "url": "https://fundacionpacita.com/sumla-i.html" 212 , 213 "description": "Sumla is the local term for the south wind in Batanes. During its season, the texture and rhythm of the wind bring a gentle breeze across the area. Sumla I is a premium room with one (1) queen-size bed and one (1) single bed, with aâ¦" 214 , 215 "image": "https://homesweb.staah.net/imagelibrary/big_13724_1770764046108.jpeg" 216 , 217 "occupancy": { 218 "@type": "QuantitativeValue", 219 "maxValue": 3, 220 "unitCode": "C62", 221 "unitText": "person" 222 } 223 , 224 "numberOfRooms": { 225 "@type": "QuantitativeValue", 226 "value": 1, 227 "unitCode": "ROM", 228 "unitText": "room" 229 } 230 }, 231 { 232 "@type": "HotelRoom", 233 "@id": "https://fundacionpacita.com/munmo.html#room", 234 "name": "Munmo", 235 "url": "https://fundacionpacita.com/munmo.html" 236 , 237 "description": "Munmo, or the northwest wind, is generally accompanied by rough seas and large waves. The room has one (1) queen-size bed and one (1) single bed. Because of the staircase setup, this room type is not advisable for persons who haveâ¦" 238 , 239 "image": "https://homesweb.staah.net/imagelibrary/big_13724_1770764483714.jpeg" 240 , 241 "occupancy": { 242 "@type": "QuantitativeValue", 243 "maxValue": 3, 244 "unitCode": "C62", 245 "unitText": "person" 246 } 247 , 248 "numberOfRooms": { 249 "@type": "QuantitativeValue", 250 "value": 1, 251 "unitCode": "ROM", 252 "unitText": "room" 253 } 254 }, 255 { 256 "@type": "HotelRoom", 257 "@id": "https://fundacionpacita.com/sumla-ii.html#room", 258 "name": "Sumla II", 259 "url": "https://fundacionpacita.com/sumla-ii.html" 260 , 261 "description": "Sumla is the local term for the south wind in Batanes. During its season, the texture and rhythm of the wind bring a gentle breeze across the area. Sumla II is a premium family room with two (2) connecting rooms and two (2) bathrooms. Oneâ¦" 262 , 263 "image": "https://homesweb.staah.net/imagelibrary/big_13724_1770764116405.jpeg" 264 , 265 "occupancy": { 266 "@type": "QuantitativeValue", 267 "maxValue": 5, 268 "unitCode": "C62", 269 "unitText": "person" 270 } 271 , 272 "numberOfRooms": { 273 "@type": "QuantitativeValue", 274 "value": 1, 275 "unitCode": "ROM", 276 "unitText": "room" 277 } 278 }, 279 { 280 "@type": "HotelRoom", 281 "@id": "https://fundacionpacita.com/palahañitan.html#room", 282 "name": "Palahañitan", 283 "url": "https://fundacionpacita.com/palahañitan.html" 284 , 285 "description": "In Batanes, the northeast wind is known as Palahañitan, one of the trade winds that dominate the season. The Palahañitan room has two (2) queen-size beds and access to two balconies overlooking the Fundacion Pacita topiary garden and Mtâ¦" 286 , 287 "image": "https://homesweb.staah.net/imagelibrary/big_13724_1770764443197.jpeg" 288 , 289 "occupancy": { 290 "@type": "QuantitativeValue", 291 "maxValue": 4, 292 "unitCode": "C62", 293 "unitText": "person" 294 } 295 , 296 "numberOfRooms": { 297 "@type": "QuantitativeValue", 298 "value": 1, 299 "unitCode": "ROM", 300 "unitText": "room" 301 } 302 }, 303 { 304 "@type": "HotelRoom", 305 "@id": "https://fundacionpacita.com/itaw.html#room", 306 "name": "Itaw", 307 "url": "https://fundacionpacita.com/itaw.html" 308 , 309 "description": "Itaw refers to the southwest monsoon in Batanes, which brings heavy rainfall during the wet season. Itaw is a deluxe room with one (1) queen-size bed and a balcony facing the Pacific Ocean. Because of the staircase setup, this room type isâ¦" 310 , 311 "image": "https://homesweb.staah.net/imagelibrary/big_13724_1770763782299.jpeg" 312 , 313 "occupancy": { 314 "@type": "QuantitativeValue", 315 "maxValue": 2, 316 "unitCode": "C62", 317 "unitText": "person" 318 } 319 , 320 "numberOfRooms": { 321 "@type": "QuantitativeValue", 322 "value": 1, 323 "unitCode": "ROM", 324 "unitText": "room" 325 } 326 }, 327 { 328 "@type": "HotelRoom", 329 "@id": "https://fundacionpacita.com/idaud.html#room", 330 "name": "Idaud", 331 "url": "https://fundacionpacita.com/idaud.html" 332 , 333 "description": "Idaud is the local term for the north wind, usually accompanied by rough seas and strong winds during the colder months from November to February. The room has one (1) queen-size bed and a private balcony overlooking the Pacific Ocean." 334 , 335 "image": "https://homesweb.staah.net/imagelibrary/big_13724_1770763612081.jpeg" 336 , 337 "occupancy": { 338 "@type": "QuantitativeValue", 339 "maxValue": 2, 340 "unitCode": "C62", 341 "unitText": "person" 342 } 343 , 344 "numberOfRooms": { 345 "@type": "QuantitativeValue", 346 "value": 1, 347 "unitCode": "ROM", 348 "unitText": "room" 349 } 350 }, 351 { 352 "@type": "HotelRoom", 353 "@id": "https://fundacionpacita.com/avayat.html#room", 354 "name": "Avayat", 355 "url": "https://fundacionpacita.com/avayat.html" 356 , 357 "description": "Avayat refers to the prevailing wind from the west. During its season, the wind is often strong and accompanied by rough sea waves. The room has one (1) queen-size bed and a private balcony overlooking the Pacific Ocean and the Sitio Tukonâ¦" 358 , 359 "image": "https://homesweb.staah.net/imagelibrary/big_13724_1770763935453.jpeg" 360 , 361 "occupancy": { 362 "@type": "QuantitativeValue", 363 "maxValue": 2, 364 "unitCode": "C62", 365 "unitText": "person" 366 } 367 , 368 "numberOfRooms": { 369 "@type": "QuantitativeValue", 370 "value": 1, 371 "unitCode": "ROM", 372 "unitText": "room" 373 } 374 }, 375 { 376 "@type": "HotelRoom", 377 "@id": "https://fundacionpacita.com/valugan-i.html#room", 378 "name": "Valugan I", 379 "url": "https://fundacionpacita.com/valugan-i.html" 380 , 381 "description": "Valugan is a term often used by Ivatans, particularly fishermen at sea, to refer to the eastern direction of land and sea. The two (2) Valugan rooms are villa-type accommodations located outside the main building. Both rooms have one (1)â¦" 382 , 383 "image": "https://homesweb.staah.net/imagelibrary/big_13724_1770764304300.jpeg" 384 , 385 "occupancy": { 386 "@type": "QuantitativeValue", 387 "maxValue": 2, 388 "unitCode": "C62", 389 "unitText": "person" 390 } 391 , 392 "numberOfRooms": { 393 "@type": "QuantitativeValue", 394 "value": 1, 395 "unitCode": "ROM", 396 "unitText": "room" 397 } 398 }, 399 { 400 "@type": "HotelRoom", 401 "@id": "https://fundacionpacita.com/valugan-ii.html#room", 402 "name": "Valugan II", 403 "url": "https://fundacionpacita.com/valugan-ii.html" 404 , 405 "description": "Valugan is a term often used by Ivatans, particularly fishermen at sea, to refer to the eastern direction of land and sea. The two (2) Valugan rooms are villa-type accommodations located outside the main building. Both rooms have one (1)â¦" 406 , 407 "image": "https://homesweb.staah.net/imagelibrary/big_13724_1770764395698.jpeg" 408 , 409 "occupancy": { 410 "@type": "QuantitativeValue", 411 "maxValue": 2, 412 "unitCode": "C62", 413 "unitTex
413t": "person" 414 } 415 , 416 "numberOfRooms": { 417 "@type": "QuantitativeValue", 418 "value": 1, 419 "unitCode": "ROM", 420 "unitText": "room" 421 } 422 }, 423 { 424 "@type": "HotelRoom", 425 "@id": "https://fundacionpacita.com/cuvi-i.html#room", 426 "name": "Cuvi I", 427 "url": "https://fundacionpacita.com/cuvi-i.html" 428 , 429 "description": "Cuvi is the local term for the southeasterly trade winds in Batanes. Cuvi I and Cuvi II are located outside the main building. Both rooms have one (1) queen-size bed and access to a topiary garden overlooking the Pacific Ocean. Because ofâ¦" 430 , 431 "image": "https://homesweb.staah.net/imagelibrary/big_13724_1770764772266.jpeg" 432 , 433 "occupancy": { 434 "@type": "QuantitativeValue", 435 "maxValue": 2, 436 "unitCode": "C62", 437 "unitText": "person" 438 } 439 , 440 "numberOfRooms": { 441 "@type": "QuantitativeValue", 442 "value": 1, 443 "unitCode": "ROM", 444 "unitText": "room" 445 } 446 }, 447 { 448 "@type": "HotelRoom", 449 "@id": "https://fundacionpacita.com/cuvi-ii.html#room", 450 "name": "Cuvi II", 451 "url": "https://fundacionpacita.com/cuvi-ii.html" 452 , 453 "description": "Cuvi is the local term for the southeasterly trade winds in Batanes. Cuvi I and Cuvi II are located outside the main building. Both rooms have one (1) queen-size bed and access to a topiary garden overlooking the Pacific Ocean. Because ofâ¦" 454 , 455 "image": "https://homesweb.staah.net/imagelibrary/big_13724_1770764735607.jpeg" 456 , 457 "occupancy": { 458 "@type": "QuantitativeValue", 459 "maxValue": 2, 460 "unitCode": "C62", 461 "unitText": "person" 462 } 463 , 464 "numberOfRooms": { 465 "@type": "QuantitativeValue", 466 "value": 1, 467 "unitCode": "ROM", 468 "unitText": "room" 469 } 470 }, 471 { 472 "@type": "HotelRoom", 473 "@id": "https://fundacionpacita.com/ayukayam-i.html#room", 474 "name": "Ayukayam I", 475 "url": "https://fundacionpacita.com/ayukayam-i.html" 476 , 477 "description": "Ayukayam, the local term for storm, refers to the powerful northeast monsoon winds of Batanes. Ayukayam I and II are located outside the main building. Both rooms have one (1) queen-size bed and access to a topiary garden overlooking theâ¦" 478 , 479 "image": "https://homesweb.staah.net/imagelibrary/big_13724_1770764592774.jpeg" 480 , 481 "occupancy": { 482 "@type": "QuantitativeValue", 483 "maxValue": 2, 484 "unitCode": "C62", 485 "unitText": "person" 486 } 487 , 488 "numberOfRooms": { 489 "@type": "QuantitativeValue", 490 "value": 1, 491 "unitCode": "ROM", 492 "unitText": "room" 493 } 494 }, 495 { 496 "@type": "HotelRoom", 497 "@id": "https://fundacionpacita.com/ayukayam-ii.html#room", 498 "name": "Ayukayam II", 499 "url": "https://fundacionpacita.com/ayukayam-ii.html" 500 , 501 "description": "Ayukayam, the local term for storm, refers to the powerful northeast monsoon winds of Batanes. Ayukayam I and II are located outside the main building. Both rooms have one (1) queen-size bed and access to a topiary garden overlooking theâ¦" 502 , 503 "image": "https://homesweb.staah.net/imagelibrary/big_13724_1770764658409.jpeg" 504 , 505 "occupancy": { 506 "@type": "QuantitativeValue", 507 "maxValue": 2, 508 "unitCode": "C62", 509 "unitText": "person" 510 } 511 , 512 "numberOfRooms": { 513 "@type": "QuantitativeValue", 514 "value": 1, 515 "unitCode": "ROM", 516 "unitText": "room" 517 } 518 } 519 ] 520 , 521 "potentialAction": { 522 "@type": "ReserveAction", 523 "target": {
524 "@type": "EntryPoint", 525 "urlTemplate": "https://www.swiftbook.io/inst/#home?propertyId=462NTovM0JIR42r3AinAVOw7FHLRY5ODI=\u0026JDRN=Y", 526 "actionPlatform": [ 527 "https://schema.org/DesktopWebPlatform", 528 "https://schema.org/MobileWebPlatform" 529 ] 530 }, 531 "result": { 532 "@type": "LodgingReservation", 533 "name": "Book accommodation" 534 } 535 } 536 }, 537 { 538 "@type": "WebSite", 539 "@id": "https://fundacionpacita.com/#website", 540 "url": "https://fundacionpacita.com/", 541 "name": "Fundacion Pacita", 542 "description": "Earth and art come together at Fundacion Pacita to create the most unforgettable and picturesque stay in Basco, Batanes, Philippines. Set atop a lush hill and caught between the mountain, sea, and sky, the hotel offers the best spot toâ¦", 543 "publisher": {"@id": "https://fundacionpacita.com/#hotel"}, 544 "inLanguage": "en" 545 }, 546 { 547 "@type": "WebPage", 548 "@id": "https://fundacionpacita.com#webpage", 549 "url": "https://fundacionpacita.com", 550 "name": "Hotel in Basco, Batanes, Philippines | Art Inspired Stay at Fundacion Pacita", 551 "description": "Stay at Fundacion Pacita, a unique hilltop heritage hotel in Basco, Batanes with ocean views, Ivatan-inspired rooms, art gallery spaces and peacefulâ¦", 552 "isPartOf": {"@id": "https://fundacionpacita.com/#website"}, 553 "about": {"@id": "https://fundacionpacita.com/#hotel"}, "author": {"@id": "https://fundacionpacita.com/#hotel"}, 554 "publisher": {"@id": "https://fundacionpacita.com/#hotel"}, 555 "inLanguage": "en" 556 , 557 "abstract": "Stay at Fundacion Pacita, a unique hilltop heritage hotel in Basco, Batanes with ocean views, Ivatan-inspired rooms, art gallery spaces and peacefulâ¦" 558 , 559 "datePublished": "2026-10-07", 560 "dateModified": "2026-10-07" 561 , 562 "speakable": { 563 "@type": "SpeakableSpecification", 564 "cssSelector": ["h1", "[data-speakable]"] 565 } 566 , 567 "primaryImageOfPage": { 568 "@type": "ImageObject", 569 "url": "https://homesweb.staah.net/imagelibrary/13724_1770763612081.jpeg" 570 } 571 } 572 , 573 { 574 "@type": "SiteNavigationElement", 575 "@id": "https://fundacionpacita.com/#navigation", 576 "name": "Main navigation", 577 "mainEntity": { 578 "@type": "ItemList", 579 "itemListElement": [ 580 { 581 "@type": "ListItem", 582 "position": 1, 583 "name": "Home", 584 "url": "https://fundacionpacita.com/" 585 }, 586 { 587 "@type": "ListItem", 588 "position": 2, 589 "name": "About Us", 590 "url": "https://fundacionpacita.com/about-us.html" 591 }, 592 { 593 "@type": "ListItem", 594 "position": 3, 595 "name": "Rooms", 596 "url": "https://fundacionpacita.com/accommodation.html" 597 }, 598 { 599 "@type": "ListItem", 600 "position": 4, 601 "name": "Cafe du Tukon", 602 "url": "https://fundacionpacita.com/cafe.html" 603 }, 604 { 605 "@type": "ListItem", 606 "position": 5, 607 "name": "Gallery", 608 "url": "https://fundacionpacita.com/gallery.html" 609 }, 610 { 611 "@type": "ListItem", 612 "position": 6, 613 "name": "Contact", 614 "url": "https://fundacionpacita.com/contact-us.html" 615 }, 616 { 617 "@type": "ListItem", 618 "position": 7, 619 "name": "The Jorge, Aurora and Pacita Abad Memorial Foundation", 620 "url": "https://fundacionpacita.com/foundation.html" 621 }, 622 { 623 "@type": "ListItem", 624 "position": 8, 625 "name": "KIN beyond", 626 "url": "https://fundacionpacita.com/kin-beyond.html" 627 } 628 ] 629 } 630 } 631 , 632{ 633 "@type": "BreadcrumbList", 634 "@id": "https://fundacionpacita.com#breadcrumb", 635 "itemListElement": [ 636 { 637 "@type": "ListItem", 638 "position": 1, 639 "name": "Home", 640 "item": "https://fundacionpacita.com/" 641 } ] 642} 643 ] 644} 645</script>
645 646 <link rel="preload" as="image" href="https://cfstatic.staah.net/w*2000/big_13724_1770763612081.jpeg?k=462NTovM0JIR42r3AinAVOw7FHLRY5ODI=" fetchpriority="high" imagesrcset="https://cfstatic.staah.net/w*480/big_13724_1770763612081.jpeg?k=462NTovM0JIR42r3AinAVOw7FHLRY5ODI= 480w, https://cfstatic.staah.net/w*768/big_13724_1770763612081.jpeg?k=462NTovM0JIR42r3AinAVOw7FHLRY5ODI= 768w, https://cfstatic.staah.net/w*1200/big_13724_1770763612081.jpeg?k=462NTovM0JIR42r3AinAVOw7FHLRY5ODI= 1200w, https://cfstatic.staah.net/w*1600/big_13724_1770763612081.jpeg?k=462NTovM0JIR42r3AinAVOw7FHLRY5ODI= 1600w, https://cfstatic.staah.net/w*2000/big_13724_1770763612081.jpeg?k=462NTovM0JIR42r3AinAVOw7FHLRY5ODI= 2000w" imagesizes="100vw"> 647<link rel="preload" as="image" href="https://cfstatic.staah.net/w*2000/big_13724_1770763628222.jpeg?k=462NTovM0JIR42r3AinAVOw7FHLRY5ODI=" imagesrcset="https://cfstatic.staah.net/w*480/big_13724_1770763628222.jpeg?k=462NTovM0JIR42r3AinAVOw7FHLRY5ODI= 480w, https://cfstatic.staah.net/w*768/big_13724_1770763628222.jpeg?k=462NTovM0JIR42r3AinAVOw7FHLRY5ODI= 768w, https://cfstatic.staah.net/w*1200/big_13724_1770763628222.jpeg?k=462NTovM0JIR42r3AinAVOw7FHLRY5ODI= 1200w, https://cfstatic.staah.net/w*1600/big_13724_1770763628222.jpeg?k=462NTovM0JIR42r3AinAVOw7FHLRY5ODI= 1600w, https://cfstatic.staah.net/w*2000/big_13724_1770763628222.jpeg?k=462NTovM0JIR42r3AinAVOw7FHLRY5ODI= 2000w" imagesizes="100vw"> 648<link rel="preconnect" href="https://cfstatic.staah.net"> 649<link rel="preconnect" href="https://code.jquery.com"> 650<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/swiper@11/swiper-bundle.min.css"> 651<style> 652 /* Show only the first hero slide before Swiper CSS/JS finish â avoids blank/fade delay */ 653 .hero .hero-slider:not(.swiper-initialized) .swiper-slide:not(:first-child) { display: none; } 654 .hero .hero-slider:not(.swiper-initialized) .swiper-slide:first-child { display: block; } 655 .hero .hero-slider { 656 background-size: cover; 657 background-position: center; 658 background-repeat: no-repeat; 659 } 660 .hero .hero-slider .swiper-slide { 661 background-size: cover; 662 background-position: center; 663 background-repeat: no-repeat; 664 } 665</style> 666 667
667<script> 668 (function () { 669 var headerColor = ""; 670 var headerFontColor = ""; 671 var widgetColor = ""; 672 var propertyColorKeySuffix = "Fundacion\u0020Pacita"; 673 var scopedColorKey = 'bePrimaryColor:' + propertyColorKeySuffix; 674 var scopedHoverKey = 'bePrimaryHover:' + propertyColorKeySuffix; 675 676 function colorLuminance(color) { 677 var c = String(color || '').trim().toLowerCase(); 678 var m = c.match(/rgba?\((\d+),\s*(\d+),\s*(\d+)/); 679 if (m) { 680 return (parseInt(m[1], 10) * 299 + parseInt(m[2], 10) * 587 + parseInt(m[3], 10) * 114) / 1000; 681 } 682 var hex = c.replace('#', ''); 683 if (/^[0-9a-f]{3}$/.test(hex)) { 684 hex = hex[0] + hex[0] + hex[1] + hex[1] + hex[2] + hex[2]; 685 } 686 if (/^[0-9a-f]{6}$/.test(hex)) { 687 var r = parseInt(hex.slice(0, 2), 16); 688 var g = parseInt(hex.slice(2, 4), 16); 689 var b = parseInt(hex.slice(4, 6), 16); 690 return (r * 299 + g * 587 + b * 114) / 1000; 691 } 692 return -1; 693 } 694 695 function isUsableColor(color) { 696 if (!color) return false; 697 var c = String(color).trim().toLowerCase(); 698 if (!c || c === 'transparent' || c === 'rgba(0, 0, 0, 0)') return false; 699 if (c === '#fff' || c === '#ffffff' || c === 'white' || c === 'rgb(255, 255, 255)' || c === 'rgba(255, 255, 255, 1)') return false; 700 var lum = colorLuminance(c); 701 if (lum >= 0) { 702 if (lum > 220 || lum < 50) return false; 703 } 704 return true; 705 } 706 707 function isTooLight(color) { 708 if (!color) return false; 709 var lum = colorLuminance(color); 710 return lum >= 0 && lum > 220; 711 } 712 713 function getDefaultReadableHeaderColor() { 714 try { 715 var cssColor = getComputedStyle(document.documentElement).getPropertyValue('--color-desc'); 716 var cleaned = cssColor ? cssColor.trim() : ''; 717 return cleaned || '#292929'; 718 } catch (e) { 719 return '#292929'; 720 } 721 } 722 723 var storedBeColor = ''; 724 var storedBeHover = ''; 725 try { 726 storedBeColor = localStorage.getItem(scopedColorKey) || localStorage.getItem('bePrimaryColor') || ''; 727 storedBeHover = localStorage.getItem(scopedHoverKey) || localStorage.getItem('bePrimaryHover') || ''; 728 if (storedBeColor && !isUsableColor(storedBeColor)) { 729 localStorage.removeItem(scopedColorKey); 730 localStorage.removeItem('bePrimaryColor'); 731 storedBeColor = ''; 732 } 733 } catch (e) { } 734 735 var effectiveButtonColor = isUsableColor(widgetColor) ? widgetColor : (isUsableColor(storedBeColor) ? storedBeColor : ''); 736 if (!isUsableColor(effectiveButtonColor)) { 737 effectiveButtonColor = 'var\u0028\u002D\u002Dcolor\u002Dbrand\u0029'; 738 } 739 var effectiveButtonHover = isUsableColor(storedBeHover) ? storedBeHover : effectiveButtonColor; 740 741 if (!headerColor && !headerFontColor && !effectiveButtonColor) return; 742 743 var css = ''; 744 if (headerColor) css += '.header .top,#mainHeader .top{background-color:' + headerColor + ' !important;}'; 745 if (headerFontColor) css += '.header .top,#mainHeader .top,.header .top a,#mainHeader .top a,.header .top i,#mainHeader .top i,.header .top button,#mainHeader .top button,.header .top span,#mainHeader .top span{color:' + headerFontColor + ' !important;}'; 746 if (effectiveButtonColor) { 747 css += '.btn-primary,.btn.btn-primary,.btn--accent,.btn.btn--accent,a.btn--accent,a.main-btn,a.service-badge,.btn.btn-secondary.active,.not-found-home-btn,.cookie-btn-accept{background-color:' + effectiveButtonColor + ' !important;border-color:' + effectiveButtonColor + ' !important;color:#fff !important;}'; 748 css += '.btn-secondary,.btn.btn-secondary,.btn.btn-outline{border-color:' + effectiveButtonColor + ' !important;background-color:' + effectiveButtonColor + ' !important;color:' + effectiveButtonColor + ' !important;}'; 749 css += '.btn-primary:hover,.btn.btn-primary:hover,.btn--accent:hover,.btn.btn--accent:hover,a.btn--accent:hover,a.main-btn:hover,a.service-badge:hover,.btn.btn-secondary.active,.btn.btn-outline:hover,.not-found-home-btn:hover,.cookie-btn-accept:hover{background-color:' + effectiveButtonHover + ' !important;border-color:' + effectiveButtonHover + ' !important;color:#fff !important;}'; 750 css += '.gallery-filter-btn.active,#room-filter-list .gallery-filter-btn.active{background-color:' + effectiveButtonColor + ' !important;border-color:' + effectiveButtonColor + ' !important;color:#fff !important;}'; 751 } 752 753 var styleEl = document.createElement('style'); 754 styleEl.id = 'color-configuration-overrides'; 755 styleEl.textContent = css; 756 document.head.appendChild(styleEl); 757 })(); 758</script>
758 759<link rel="canonical" href="https://fundacionpacita.com/"/> 760 761 762 <meta property="og:site_name" content="Fundacion Pacita"> 763 <meta property="og:locale" content="en_US"> 764<link rel="preconnect" href="https://www.swiftbook.io"><link rel="dns-prefetch" href="https://www.swiftbook.io"><link rel="preconnect" href="https://homesweb.staah.net"><link rel="dns-prefetch" href="https://homesweb.staah.net"><style>.isw-skip-link{position:absolute;left:-9999px;top:0;z-index:100000;padding:10px 16px;background:#000;color:#fff;text-decoration:none;font:inherit}.isw-skip-link:focus{left:8px;top:8px;outline:3px solid #fff;outline-offset:2px}.isw-content-freshness{margin:0;padding:8px 0;font-size:.85em;opacity:.85;text-align:center}.isw-text-center{text-align:center}.isw-text-larger{font-size:larger}.Configure-quickBook-Widget,[id^="quickbook-widget-"]{min-height:96px}@media (max-width:767px){.Configure-quickBook-Widget,[id^="quickbook-widget-"]{min-height:220px}}.Configure-quickBook-Widget:empty,[id^="quickbook-widget-"]:empty{min-height:121px}@media (max-width:991px){.Configure-quickBook-Widget:empty,[id^="quickbook-widget-"]:empty{min-height:162px}}@media (max-width:767px){.Configure-quickBook-Widget:empty,[id^="quickbook-widget-"]:empty{min-height:341px}}</style> 765</head> 766 767<body> 768<a class="isw-skip-link" href="#smooth-wrapper">Skip to main content</a> 769
769<script> 770 (function () { 771 try { 772 var s = localStorage.getItem("theme200_a11y"); 773 if (s) { 774 var o = JSON.parse(s); 775 var r = document.documentElement; 776 if (o.contrast) r.classList.add("high-contrast"); 777 if (o.largeFont) r.classList.add("large-font"); 778 if (o.cursor) r.classList.add("large-cursor"); 779 if (o.highlightLink) r.classList.add("highlight-link"); 780 } 781 } catch (e) { } 782 })(); 783 </script>
783 784 785 <header class="header"> 786 <div class="top py-2 px-3 px-lg-5"> 787 <div class="row"> 788 <div class="col-4 col-md-8 col-xl-6 top-left d-flex align-items-center"> 789 <div class="contact-info-item d-flex align-items-center gap-2"> 790 <i class="bi bi-telephone"></i> 791 <a href="tel:09209720014" class="text-decoration-none">09209720014</a> 792 </div> 793 <div class="contact-info-item d-flex align-items-center gap-2"> 794 <i class="bi bi-envelope"></i> 795 <a href="mailto:inquiries@fundacionpacita.com" class="text-decoration-none">inquiries@fundacionpacita.com</a> 796 </div> 797 </div> 798 <div class="col-8 col-md-4 col-xl-6 top-right d-flex align-items-center justify-content-end"> 799 <div class="position-relative dropdown"> 800 <button type="button" class="accessibility-toggle d-flex align-items-center gap-1" aria-label="Open Accessibility Menu" 801 aria-expanded="false" aria-controls="accessibility-panel" data-bs-toggle="dropdown"> 802 <i class="bi bi-universal-access"></i> 803 <i class="bi bi-plus-lg plus-icon"></i> 804 <i class="bi bi-dash-lg minus-icon"></i> 805 </button> 806 <div class="accessibility-panel dropdown-menu dropdown-content" id="accessibility-panel" role="region" aria-label="Accessibility Options"> 807 <div class="accessibility-header"> 808 <h5>Accessibility Menu</h5> 809 <button type="button" class="close-btn" aria-label="Close accessibility menu"> 810 <i class="bi bi-x-lg" aria-hidden="true"></i> 811 </button> 812 </div> 813 <div class="accessibility-btn"> 814 <button onclick="toggleContrast(this)"> 815 <i class="bi bi-circle-half"></i> 816 High Contrast 817 </button> 818 <button onclick="toggleFontSize(this)"> 819 <i class="bi bi-textarea-resize"></i> 820 Larger Text 821 </button> 822 <button onclick="toggleCursor(this)"> 823 <i class="bi bi-cursor-fill"></i> 824 Large Cursor 825 </button> 826 <button onclick="toggleLink(this)"> 827 <i class="bi bi-link-45deg"></i> 828 Highlight Links 829 </button> 830 </div> 831 <div class="accessibility-footer"> 832 <button onclick="resetAccessibility()"> 833 Reset All 834 </button> 835 </div> 836 </div> 837 </div> 838 <div id="google_translate_element" aria-hidden="true"></div> 839 <div class="dropdown lang-drop d-flex align-items-center"> 840 <button class="notranslate btn border-0 p-0 d-flex gap-1" type="button" data-bs-toggle="dropdown" 841 aria-expanded="false">English 842 <i class="bi bi-plus-lg plus-icon"></i> 843 <i class="bi bi-dash-lg minus-icon" style="display: none;"></i> 844 </button> 845 <ul class="dropdown-menu language_dropdown dropdown-content"></ul> 846 </div> 847 </div> 848 </div> 849 </div> 850 <nav class="navbar px-3 px-lg-5" role="navigation" aria-label="Main Navigation"> 851 <div class="logo navbar-brand-block"> 852 <a href="index.html" aria-label="Homepage"> 853 <img src="https://homesweb.staah.net/13724/1770173557_13724_FP_LOGO_2.png" alt="Fundacion Pacita Logo" class="logo-svg" fetchpriority="high" decoding="async" /> 854 </a> 855 </div> 856 <ul class="nav-links nav-menu desktop-menu-main mb-0 d-none d-xl-flex list-unstyled" role="menubar" 857 aria-label="Primary Navigation" data-nav-overflow> 858 859 860 861 862 <li class="nav-menu-item active" role="none" 863 data-menu-order="0" data-nav-home="1"> 864 <a href="index.html" class="nav-link" role="menuitem" 865 aria-current="page">Home</a> 866</li> 867 868 869 870 871 872 <li class="nav-menu-item" role="none" 873 data-menu-order="1" > 874 <a href="about-us.html" class="nav-link" role="menuitem" 875 >About Us</a> 876</li> 877 878 879 880 881 882<li class="nav-menu-item has-dropdown" role="none" 883 data-dropdown-key="accommodation" 884 data-menu-order="2" > 885 <a href="accommodation.html" class="nav-link dropdown-trigger" role="menuitem" 886 aria-haspopup="true" aria-expanded="false" data-dropdown-template="nav-dropdown-items-accommodation" 887 > 888 <span class="nav-link-label">Rooms</span> <svg class="nav-dropdown-arrow" width="10" height="6" viewBox="0 0 10 6" fill="none" aria-hidden="true"> 889 <path d="M1 1L5 5L9 1" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" 890 stroke-linejoin="round" /> 891 </svg> 892 </a> 893 <template id="nav-dropdown-items-accommodation"> 894 <li role="none" > 895 <a href="sumla-i.html" class="dropdown-item" role="menuitem" 896 > 897 Sumla I 898 </a> 899</li> 900<li role="none" > 901 <a href="munmo.html" class="dropdown-item" role="menuitem" 902 > 903 Munmo 904 </a> 905</li> 906<li role="none" > 907 <a href="sumla-ii.html" class="dropdown-item" role="menuitem" 908 > 909 Sumla II 910 </a> 911</li> 912<li role="none" > 913 <a href="palahañitan.html" class="dropdown-item" role="menuitem" 914 > 915 Palahañitan 916 </a> 917</li> 918<li role="none" > 919 <a href="itaw.html" class="dropdown-item" role="menuitem" 920 > 921 Itaw 922 </a> 923</li> 924<li role="none" > 925 <a href="idaud.html" class="dropdown-item" role="menuitem" 926 > 927 Idaud 928 </a> 929</li> 930<li role="none" > 931 <a href="avayat.html" class="dropdown-item" role="menuitem" 932 > 933 Avayat 934 </a> 935</li> 936<li role="none" > 937 <a href="valugan-i.html" class="dropdown-item" role="menuitem" 938 > 939 Valugan I 940 </a> 941</li> 942<li role="none" > 943 <a href="valugan-ii.html" class="dropdown-item" role="menuitem" 944 > 945 Valugan II 946 </a> 947</li> 948<li role="none" > 949 <a href="cuvi-i.html" class="dropdown-item" role="menuitem" 950 > 951 Cuvi I 952 </a> 953</li> 954<li role="none" > 955 <a href="cuvi-ii.html" class="dropdown-item" role="menuitem" 956 > 957 Cuvi II 958 </a> 959</li> 960<li role="none" > 961 <a href="ayukayam-i.html" class="dropdown-item" role="menuitem" 962 > 963 Ayukayam I 964 </a> 965</li> 966<li role="none" > 967 <a href="ayukayam-ii.html" class="dropdown-item" role="menuitem" 968 > 969 Ayukayam II 970 </a> 971</li> 972</template> 973</li> 974 975 976 977 978 979 <li class="nav-menu-item" role="none" 980 data-menu-order="3" > 981 <a href="cafe.html" class="nav-link" role="menuitem" 982 >Cafe du Tukon</a> 983</li> 984 985 986 987 988 989 <li class="nav-menu-item" role="none" 990 data-menu-order="4" > 991 <a href="gallery.html" class="nav-link" role="menuitem" 992 >Gallery</a> 993</li> 994 995 996 997 998 999 <li class="nav-menu-item" role="none" 1000 data-menu-order="5" > 1001 <a href="contact-us.html" class="nav-link" role="menuitem" 1002 >Contact</a> 1003</li> 1004 1005 1006 1007 1008 1009 <li class="nav-menu-item" role="none" 1010 data-menu-order="6" > 1011 <a href="foundation.html" class="nav-link" role="menuitem" 1012 >The Jorge, Aurora and Pacita Abad Memorial Foundation</a> 1013</li> 1014 1015 1016 1017 1018 1019 <li class="nav-menu-item" role="none" 1020 data-menu-order="7" > 1021 <a href="kin-beyond.html" class="nav-link" role="menuitem" 1022 >KIN beyond</a> 1023</li> 1024 1025 <li class="nav-menu-more" role="none" hidden> 1026 <button type="button" class="nav-more-toggle border-0 bg-transparent" 1027 data-bs-toggle="offcanvas" data-bs-target="#nav-divider-toggle" 1028 aria-controls="nav-divider-toggle" aria-label="Open menu"> 1029 <i class="bi bi-list hamburger-icon" aria-hidden="true"></i> 1030 </button> 1031 <ul class="dropdown-menu dropdown-menu-end dropdown-content nav-more-panel" role="menu" 1032 aria-label="Additional menu items" hidden></ul> 1033 </li> 1034 </ul> 1035 <div class="nav-right nav-actions desktop-menu d-flex gap-3"> 1036 <a href="https://www.swiftbook.io/inst/#home?propertyId=462NTovM0JIR42r3AinAVOw7FHLRY5ODI=&JDRN=Y" target="_blank" class="book-now-btn">Book Now</a> 1037 <a class="nav-divider border-r" href="#nav-divider-toggle" data-bs-toggle="offcanvas" role="button" 1038 aria-controls="nav-divider-toggle"> 1039 <div class="nav-divider-lines">
1040 <span></span> 1041 <span></span> 1042 <span></span> 1043 </div> 1044 <span class="nav-divider-label">Menu</span> 1045 </a> 1046 </div> 1047 </nav> 1048</header> 1049<div class="offcanvas offcanvas-end" tabindex="-1" id="nav-divider-toggle" aria-labelledby="nav-divider-toggle"> 1050 <ul class="nav-links desktop-menu mb-0 h-100 list-unstyled" role="menubar" aria-label="Primary Navigation"> 1051 <li class="nav-divider-close" aria-label="Close Menu" data-bs-dismiss="offcanvas"> 1052 <i class="bi bi-x-lg"></i> 1053 </li> 1054 1055 1056 1057 1058 <li role="listitem" class="active" data-menu-order="0"> 1059 <a href="index.html" 1060 aria-current="page">Home</a> 1061 </li> 1062 1063 1064 1065 1066 <li role="listitem" data-menu-order="1"> 1067 <a href="about-us.html" 1068 >About Us</a> 1069 </li> 1070 1071 1072 1073 1074 <li class="offcanvas-has-dropdown" role="listitem" 1075 data-menu-order="2"> 1076 <a href="accommodation.html" class="offcanvas-slide-toggle" aria-haspopup="true" aria-expanded="false"> 1077 <span class="nav-link-label">Rooms</span> <svg class="nav-dropdown-arrow" width="10" height="6" viewBox="0 0 10 6" fill="none" aria-hidden="true"> 1078 <path d="M1 1L5 5L9 1" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" 1079 stroke-linejoin="round" /> 1080 </svg> 1081 </a> 1082 <ul class="offcanvas-slide-menu list-unstyled"> 1083 <li> 1084 <a href="sumla-i.html" 1085 >Sumla I</a> 1086</li> 1087 <li> 1088 <a href="munmo.html" 1089 >Munmo</a> 1090</li> 1091 <li> 1092 <a href="sumla-ii.html" 1093 >Sumla II</a> 1094</li> 1095 <li> 1096 <a href="palahañitan.html" 1097 >Palahañitan</a> 1098</li> 1099 <li> 1100 <a href="itaw.html" 1101 >Itaw</a> 1102</li> 1103 <li> 1104 <a href="idaud.html" 1105 >Idaud</a> 1106</li> 1107 <li> 1108 <a href="avayat.html" 1109 >Avayat</a> 1110</li> 1111 <li> 1112 <a href="valugan-i.html" 1113 >Valugan I</a> 1114</li> 1115 <li> 1116 <a href="valugan-ii.html" 1117 >Valugan II</a> 1118</li> 1119 <li> 1120 <a href="cuvi-i.html" 1121 >Cuvi I</a> 1122</li> 1123 <li> 1124 <a href="cuvi-ii.html" 1125 >Cuvi II</a> 1126</li> 1127 <li> 1128 <a href="ayukayam-i.html" 1129 >Ayukayam I</a> 1130</li> 1131 <li> 1132 <a href="ayukayam-ii.html" 1133 >Ayukayam II</a> 1134</li> 1135 </ul> 1136 </li> 1137 1138 1139 1140 1141 <li role="listitem" data-menu-order="3"> 1142 <a href="cafe.html" 1143 >Cafe du Tukon</a> 1144 </li> 1145 1146 1147 1148 1149 <li role="listitem" data-menu-order="4"> 1150 <a href="gallery.html" 1151 >Gallery</a> 1152 </li> 1153 1154 1155 1156 1157 <li role="listitem" data-menu-order="5"> 1158 <a href="contact-us.html" 1159 >Contact</a> 1160 </li> 1161 1162 1163 1164 1165 <li role="listitem" data-menu-order="6"> 1166 <a href="foundation.html" 1167 >The Jorge, Aurora and Pacita Abad Memorial Foundation</a> 1168 </li> 1169 1170 1171 1172 1173 <li role="listitem" data-menu-order="7"> 1174 <a href="kin-beyond.html" 1175 >KIN beyond</a> 1176 </li> 1177 </ul> 1178</div> 1179 1180<div class="nav-dropdown-portal" id="navDropdownPortal" role="menu" aria-hidden="true"> 1181 <ul class="nav-dropdown-portal-menu" id="navDropdownPortalMenu"></ul> 1182</div> 1183 1184<style id="staah-gt-banner-hide-body"> 1185 .goog-te-banner-frame.skiptranslate { 1186 display: none !important; 1187 } 1188 1189 #goog-gt-tt, 1190 .goog-tooltip, 1191 .goog-tooltip skiptranslate, 1192 iframe.goog-te-banner-frame, 1193 .skiptranslate { 1194 display: none !important; 1195 } 1196 1197 .goog-text-highlight { 1198 background: none !important; 1199 box-shadow: none !important; 1200 } 1201 1202 body, 1203 body.translated-ltr, 1204 body.translated-rtl { 1205 top: 0 !important; 1206 position: static !important; 1207 margin-top: 0 !important; 1208 padding-top: 0 !important; 1209 } 1210 1211 html, 1212 html.translated-ltr, 1213 html.translated-rtl { 1214 margin-top: 0 !important; 1215 } 1216</style>
1217<script> 1218 (function () { 1219 var LANGUAGE_PREF_KEY = "theme200.selectedLang"; 1220 var LANGUAGE_DISPLAY_MODE = "text"; 1221 var restoreLanguageTries = 0; 1222 // Capture source language before Google Translate mutates <html lang>. 1223 var PAGE_SOURCE_LANGUAGE = (function () { 1224 var cookieMatch = document.cookie.match(/(?:^|;\s*)googtrans=\/([^/]+)\//); 1225 if (cookieMatch && cookieMatch[1]) { 1226 return normalizeLangCodeEarly(cookieMatch[1]).split('-')[0] || 'en'; 1227 } 1228 return normalizeLangCodeEarly(document.documentElement.getAttribute('lang') || 'en').split('-')[0] || 'en'; 1229 })(); 1230 1231 function normalizeLangCodeEarly(code) { 1232 return String(code || '').trim().toLowerCase().replace('_', '-'); 1233 } 1234 1235 function watchTranslateCombo() { 1236 var combo = document.querySelector('select.goog-te-combo'); 1237 if (!combo || combo.__staahLangWatch) return; 1238 combo.__staahLangWatch = true; 1239 combo.addEventListener('change', function () { 1240 syncLanguageButtonDisplay(); 1241 }); 1242 } 1243 1244 function watchTranslatedDom() { 1245 if (window.__staahLangDomWatch) return; 1246 window.__staahLangDomWatch = true; 1247 var observer = new MutationObserver(function () { 1248 suppressGoogleTranslateBanner(); 1249 if (isPageTranslated()) { 1250 syncLanguageButtonDisplay(); 1251 } 1252 }); 1253 observer.observe(document.documentElement, { 1254 attributes: true, 1255 attributeFilter: ['lang', 'class'] 1256 }); 1257 } 1258 1259 function suppressGoogleTranslateBanner() { 1260 if (typeof window.__staahSuppressGoogleTranslateBanner === 'function') { 1261 window.__staahSuppressGoogleTranslateBanner(); 1262 } 1263 } 1264 1265 function watchGoogleTranslateBanner() { 1266 if (window.__staahGtBannerWatch) return; 1267 window.__staahGtBannerWatch = true; 1268 suppressGoogleTranslateBanner(); 1269 var observer = new MutationObserver(function () { 1270 suppressGoogleTranslateBanner(); 1271 }); 1272 var target = document.body || document.documentElement; 1273 observer.observe(target, { 1274 childList: true, 1275 subtree: false, 1276 attributes: true, 1277 attributeFilter: ['style'] 1278 }); 1279 var tries = 0; 1280 var interval = setInterval(function () { 1281 suppressGoogleTranslateBanner(); 1282 tries++; 1283 if (tries >= 40) clearInterval(interval); 1284 }, 500); 1285 } 1286 1287 function googleTranslateElementInit() { 1288 if (window.__staahGtElementInit) return; 1289 window.__staahGtElementInit = true; 1290 repairGoogTransCookie(); 1291 new google.translate.TranslateElement({ 1292 pageLanguage: 'en', 1293 layout: google.translate.TranslateElement.InlineLayout.HORIZONTAL, 1294 autoDisplay: false 1295 }, 'google_translate_element'); 1296 try { 1297 document.body.style.setProperty('position', 'static', 'important'); 1298 document.body.style.setProperty('top', '0', 'important'); 1299 } catch (e) { } 1300 suppressGoogleTranslateBanner(); 1301 watchTranslateCombo(); 1302 watchTranslatedDom(); 1303 watchGoogleTranslateBanner(); 1304 setTimeout(suppressGoogleTranslateBanner, 100); 1305 setTimeout(suppressGoogleTranslateBanner, 500); 1306 setTimeout(applyStoredLanguagePreference, 250); 1307 setTimeout(applyStoredLanguagePreference, 1200); 1308 setTimeout(applyStoredLanguagePreference, 2500); 1309 setTimeout(syncLanguageButtonDisplay, 3000); 1310 setTimeout(syncLanguageButtonDisplay, 4500); 1311 } 1312 window.googleTranslateElementInit = googleTranslateElementInit; 1313 1314 function langCodeToFlag(code) { 1315 try { 1316 var c = (code || '').toLowerCase(); 1317 if (c.indexOf('-') > -1) c = c.split('-').pop(); 1318 var map = { en: 'gb', zh: 'cn', iw: 'il', he: 'il', ja: 'jp' }; 1319 return 'fi fi-' + (map[c] || c); 1320 } catch (e) { 1321 return 'fi fi-gb'; 1322 } 1323 } 1324
1325 function normalizeLangCode(code) { 1326 return String(code || '').trim().toLowerCase().replace('_', '-'); 1327 } 1328 1329 function toGoogleTranslateLangCode(code) { 1330 var normalized = normalizeLangCode(code); 1331 var map = { 1332 'zh-cn': 'zh-CN', 1333 'zh-tw': 'zh-TW', 1334 'pt-br': 'pt-BR', 1335 'pt-pt': 'pt-PT' 1336 }; 1337 return map[normalized] || normalized; 1338 } 1339 1340 function getGoogleTranslateCandidates(code) { 1341 var normalized = normalizeLangCode(code); 1342 var gtCode = toGoogleTranslateLangCode(code); 1343 var shortCode = normalized.split('-')[0]; 1344 var candidates = [gtCode, normalized, shortCode]; 1345 var i; 1346 var unique = []; 1347 for (i = 0; i < candidates.length; i++) { 1348 if (candidates[i] && unique.indexOf(candidates[i]) === -1) { 1349 unique.push(candidates[i]); 1350 } 1351 } 1352 return unique; 1353 } 1354 1355 function getPageLanguageCode() { 1356 return PAGE_SOURCE_LANGUAGE; 1357 } 1358 1359 function isDefaultLanguage(code) { 1360 var normalized = normalizeLangCode(code); 1361 if (!normalized) return true; 1362 return normalized === PAGE_SOURCE_LANGUAGE; 1363 } 1364 1365 function isPageTranslated() { 1366 var html = document.documentElement; 1367 if (html.classList.contains('translated-ltr') || html.classList.contains('translated-rtl')) { 1368 return true; 1369 }
1370 var current = normalizeLangCode(html.getAttribute('lang') || '').split('-')[0]; 1371 return !!current && current !== PAGE_SOURCE_LANGUAGE; 1372 } 1373 1374 function getRegistrableDomain(hostname) { 1375 if (!hostname || hostname === 'localhost' || /^\d+\.\d+\.\d+\.\d+$/.test(hostname)) { 1376 return ''; 1377 } 1378 1379 var parts = hostname.toLowerCase().split('.'); 1380 if (parts.length < 2) { 1381 return ''; 1382 } 1383 1384 var multiPartSuffixes = [ 1385 'com.au', 'net.au', 'org.au', 'edu.au', 'gov.au', 1386 'co.uk', 'org.uk', 'ac.uk', 1387 'co.nz', 'com.br', 'co.jp', 'com.sg', 'co.in' 1388 ]; 1389 var host = hostname.toLowerCase(); 1390 var i; 1391 1392 for (i = 0; i < multiPartSuffixes.length; i++) { 1393 var suffix = multiPartSuffixes[i]; 1394 if (host === suffix || host.slice(-(suffix.length + 1)) === '.' + suffix) { 1395 if (parts.length > suffix.split('.').length) { 1396 return '.' + parts.slice(-(suffix.split('.').length + 1)).join('.'); 1397 } 1398 return ''; 1399 } 1400 } 1401 1402 return '.' + parts.slice(-2).join('.'); 1403 } 1404 1405 function buildGoogTransValue(targetLang) { 1406 var pageLang = getPageLanguageCode(); 1407 var target = toGoogleTranslateLangCode(targetLang);
1408 if (!target || target === 'en' || normalizeLangCode(target) === pageLang) { 1409 return '/' + pageLang + '/' + pageLang; 1410 } 1411 return '/' + pageLang + '/' + target; 1412 } 1413 1414 function clearGoogTransCookie() { 1415 var expired = 'Thu, 01 Jan 1970 00:00:00 GMT'; 1416 var hostname = window.location.hostname; 1417 var rootDomain = getRegistrableDomain(hostname); 1418 1419 document.cookie = 'googtrans=; expires=' + expired + '; path=/'; 1420 if (rootDomain) { 1421 document.cookie = 'googtrans=; expires=' + expired + '; path=/; domain=' + rootDomain; 1422 } 1423 } 1424 1425 function setGoogTransCookie(targetLang) { 1426 if (isDefaultLanguage(targetLang)) { 1427 clearGoogTransCookie(); 1428 return; 1429 } 1430 1431 var value = buildGoogTransValue(targetLang); 1432 clearGoogTransCookie(); 1433 document.cookie = 'googtrans=' + value + '; path=/; SameSite=Lax'; 1434 1435 var rootDomain = getRegistrableDomain(window.location.hostname); 1436 if (rootDomain) { 1437 document.cookie = 'googtrans=' + value + '; path=/; domain=' + rootDomain + '; SameSite=Lax'; 1438 } 1439 } 1440 1441 function repairGoogTransCookie() { 1442 var fromCookie = getGoogTransCookieLang(); 1443 if (!fromCookie || isDefaultLanguage(fromCookie)) return; 1444 setGoogTransCookie(fromCookie); 1445 } 1446 1447 function getConfiguredLanguages() { 1448 return (window.LanguageConfig && (window.LanguageConfig[window.THEME_ID] || window.LanguageConfig.defaults)) || []; 1449 } 1450 1451 function getGoogTransCookieLang() { 1452 var m = document.cookie.match(/(?:^|;\s*)googtrans=([^;]+)/); 1453 if (!m || !m[1]) return ''; 1454 var v = decodeURIComponent(m[1]); 1455 var parts = v.split('/').filter(function (part) { return !!part; }); 1456 if (parts.length < 2) return '';
1457 var source = normalizeLangCode(parts[parts.length - 2]); 1458 var target = normalizeLangCode(parts[parts.length - 1]); 1459 if (!target || target === source || isDefaultLanguage(target)) return ''; 1460 return target; 1461 } 1462 1463 function findLanguageByCode(langs, code) { 1464 var c = normalizeLangCode(code); 1465 if (!c) return null; 1466 var i; 1467 for (i = 0; i < langs.length; i++) { 1468 if (normalizeLangCode(langs[i].code) === c) return langs[i]; 1469 } 1470 for (i = 0; i < langs.length; i++) { 1471 var shortCode = normalizeLangCode(langs[i].code).split('-')[0]; 1472 if (shortCode && shortCode === c.split('-')[0]) return langs[i]; 1473 } 1474 return null; 1475 } 1476 1477 function getLangButton() { 1478 var dd = document.querySelector('.lang-drop'); 1479 if (!dd) return null; 1480 return dd.querySelector('.dropdown-toggle') || dd.querySelector('button'); 1481 } 1482 1483 function notifyLanguageLayoutUpdate() { 1484 document.dispatchEvent(new CustomEvent('site:languageUpdated')); 1485 } 1486 1487 function getButtonFlagElement(btn) { 1488 return btn.querySelector('.current-flag, #selected-flag, .fi:not
1488(.lang-label)'); 1489 } 1490 1491 function updateButtonFlag(flagEl, item) { 1492 if (!flagEl || !item) return; 1493 var flagClass = item.flag ? ('fi-' + item.flag) : langCodeToFlag(item.code).replace('fi ', ''); 1494 if (flagEl.id === 'selected-flag') { 1495 flagEl.className = 'fi ' + flagClass; 1496 } else if (flagEl.classList.contains('current-flag')) { 1497 flagEl.className = 'current-flag fi ' + flagClass; 1498 } else { 1499 var suffix = flagEl.classList.contains('me-2') ? ' me-2' : ''; 1500 flagEl.className = 'fi ' + flagClass + suffix; 1501 } 1502 } 1503 1504 function ensureLangLabelSpan(btn, labelText) { 1505 var labelSpan = btn.querySelector('.lang-label'); 1506 if (labelSpan) { 1507 if (labelText) labelSpan.textContent = labelText; 1508 return labelSpan; 1509 } 1510 1511 var child; 1512 var textNode; 1513 for (child = btn.firstChild; child; child = child.nextSibling) { 1514 if (child.nodeType === 3 && child.textContent.trim()) { 1515 textNode = child; 1516 break; 1517 } 1518 } 1519 1520 labelSpan = document.createElement('span'); 1521 labelSpan.className = 'lang-label notranslate'; 1522 labelSpan.textContent = labelText || (textNode ? textNode.textContent.trim() : ''); 1523 1524 if (textNode) { 1525 textNode.replaceWith(labelSpan); 1526 return labelSpan; 1527 } 1528 1529 var flagEl = getButtonFlagElement(btn); 1530 if (flagEl) { 1531 var next = flagEl.nextSibling; 1532 while (next && next.nodeType === 3 && !next.textContent.trim()) { 1533 next = next.nextSibling; 1534 } 1535 if (next && next.nodeType === 3) { 1536 if (!labelText) labelSpan.textContent = next.textContent.trim(); 1537 next.replaceWith(labelSpan); 1538 return labelSpan; 1539 } 1540 flagEl.after(document.createTextNode(' '), labelSpan); 1541 return labelSpan; 1542 } 1543 1544 var icon; 1545 for (child = btn.firstChild; child; child = child.nextSibling) { 1546 if (child.nodeType === 1 && (child.tagName === 'I' || child.hasAttribute('data-lucide'))) { 1547 icon = child; 1548 break; 1549 } 1550 } 1551 if (icon) { 1552 btn.insertBefore(labelSpan, icon); 1553 if (labelSpan.nextSibling !== icon) { 1554 btn.insertBefore(document.createTextNode(' '), icon); 1555 } 1556 return labelSpan; 1557 } 1558 1559 btn.insertBefore(labelSpan, btn.firstChild); 1560 return labelSpan; 1561 } 1562 1563 function setButtonLanguageLabel(item) { 1564 if (!item) return; 1565 var btn = getLangButton(); 1566 if (!btn) return; 1567 1568 var labelSpan = btn.querySelector('.lang-label'); 1569 var countryName = btn.querySelector('.lang-country-name, #selected-country-name'); 1570 var flagEl = getButtonFlagElement(btn); 1571 var buttonText = btn.textContent.replace(/\s+/g, ' ').trim(); 1572 var isFlagOnlyButton = LANGUAGE_DISPLAY_MODE === 'flag' 1573 && flagEl 1574 && !labelSpan 1575 && !countryName 1576 && buttonText.length <= 2; 1577 1578 if (isFlagOnlyButton) { 1579 updateButtonFlag(flagEl, item); 1580 btn.setAttribute('aria-label', 'Language: ' + item.label); 1581 notifyLanguageLayoutUpdate(); 1582 return; 1583 } 1584 1585 // Theme 232: country name + flag only â update flag, keep country label. 1586 if (countryName && !labelSpan) { 1587 if (flagEl) updateButtonFlag(flagEl, item); 1588 notifyLanguageLayoutUpdate(); 1589 return; 1590 } 1591 1592 if (labelSpan) { 1593 labelSpan.textContent = item.label; 1594 } else if (LANGUAGE_DISPLAY_MODE === 'text' || LANGUAGE_DISPLAY_MODE === 'label') { 1595 ensureLangLabelSpan(btn, item.label); 1596 } 1597 1598 if (flagEl) { 1599 updateButtonFlag(flagEl, item); 1600 } 1601 1602 notifyLanguageLayoutUpdate(); 1603 } 1604 1605 function getStoredLanguageCode() { 1606 try {
1607 return normalizeLangCode(localStorage.getItem(LANGUAGE_PREF_KEY)); 1608 } catch (e) { 1609 return ''; 1610 } 1611 } 1612 1613 function getDesiredLanguageCode() { 1614 var stored = getStoredLanguageCode(); 1615 var fromCookie = getGoogTransCookieLang(); 1616 // Cookie reflects the live translation; prefer it when localStorage is still on English. 1617 if (fromCookie && isDefaultLanguage(stored)) { 1618 return fromCookie; 1619 } 1620 if (stored) return stored; 1621 if (fromCookie) return fromCookie; 1622 return PAGE_SOURCE_LANGUAGE; 1623 } 1624 1625 function getDisplayLanguageCode() { 1626 var stored = getStoredLanguageCode(); 1627 if (stored && !isDefaultLanguage(stored)) { 1628 return stored; 1629 } 1630 if (isPageTranslated()) { 1631 var fromCookie = getGoogTransCookieLang(); 1632 if (fromCookie) return fromCookie; 1633 var active = getActiveTranslatedCode(); 1634 if (!isDefaultLanguage(active)) return active; 1635 } 1636 var activeCode = getActiveTranslatedCode(); 1637 if (!isDefaultLanguage(activeCode)) return activeCode; 1638 return getDesiredLanguageCode(); 1639 } 1640 1641 function getActiveTranslatedCode() { 1642 var combo = document.querySelector('select.goog-te-combo'); 1643 if (combo && combo.value) {
1644 var comboVal = normalizeLangCode(combo.value); 1645 if (!isDefaultLanguage(comboVal)) return comboVal; 1646 } 1647 var fromCookie = getGoogTransCookieLang(); 1648 if (fromCookie) return fromCookie; 1649 return PAGE_SOURCE_LANGUAGE; 1650 } 1651 1652 function syncLanguageButtonDisplay() { 1653 var langs = getConfiguredLanguages(); 1654 var code = getDisplayLanguageCode(); 1655 var stored = getStoredLanguageCode(); 1656 var fromCookie = getGoogTransCookieLang(); 1657 if (fromCookie && isDefaultLanguage(stored) && !isDefaultLanguage(fromCookie)) { 1658 try { localStorage.setItem(LANGUAGE_PREF_KEY, fromCookie); } catch (e) { } 1659 } 1660 if (isDefaultLanguage(code)) { 1661 code = PAGE_SOURCE_LANGUAGE; 1662 } 1663 var item = findLanguageByCode(langs, code) || findLanguageByCode(langs, PAGE_SOURCE_LANGUAGE); 1664 if (item) setButtonLanguageLabel(item); 1665 } 1666 1667 function setComboLanguage(code) { 1668 var combo = document.querySelector('select.goog-te-combo'); 1669 if (!combo) return false; 1670 var c = normalizeLangCode(code); 1671 1672 if (isDefaultLanguage(c)) { 1673 clearGoogTransCookie(); 1674 try { localStorage.setItem(LANGUAGE_PREF_KEY, PAGE_SOURCE_LANGUAGE); } catch (e) { } 1675 combo.value = ''; 1676 combo.dispatchEvent(new Event('change')); 1677 return true; 1678 } 1679 1680 setGoogTransCookie(code); 1681 var candidates = getGoogleTranslateCandidates(code); 1682 var i; 1683 var j; 1684 var options = combo.options; 1685 for (j = 0; j < candidates.length; j++) { 1686 var candidate = candidates[j]; 1687 for (i = 0; i < options.length; i++) {
1688 if (normalizeLangCode(options[i].value) === normalizeLangCode(candidate)) { 1689 combo.value = options[i].value; 1690 combo.dispatchEvent(new Event('change')); 1691 return true; 1692 } 1693 } 1694 } 1695 for (j = 0; j < candidates.length; j++) { 1696 var shortCandidate = normalizeLangCode(candidates[j]).split('-')[0]; 1697 if (!shortCandidate) continue; 1698 for (i = 0; i < options.length; i++) { 1699 var shortVal = normalizeLangCode(options[i].value).split('-')[0]; 1700 if (shortVal && shortVal === shortCandidate) { 1701 combo.value = options[i].value; 1702 combo.dispatchEvent(new Event('change')); 1703 return true; 1704 } 1705 } 1706 } 1707 return false; 1708 } 1709 1710 function applyStoredLanguagePreference() { 1711 var stored = getStoredLanguageCode(); 1712 var desired = getDesiredLanguageCode(); 1713 var active = getActiveTranslatedCode(); 1714 syncLanguageButtonDisplay(); 1715 1716 // Only force English when the user preference is explicitly English. 1717 if (isDefaultLanguage(desired) && isDefaultLanguage(stored)) { 1718 if (!isDefaultLanguage(active)) { 1719 if (setComboLanguage(PAGE_SOURCE_LANGUAGE)) { 1720 return; 1721 } 1722 clearGoogTransCookie(); 1723 restoreLanguageTries++; 1724 if (restoreLanguageTries < 20) { 1725 setTimeout(applyStoredLanguagePreference, 300); 1726 } 1727 } 1728 return; 1729 } 1730 1731 if (!isDefaultLanguage(stored)) { 1732 desired = stored; 1733 } 1734 1735 if (active === desired) { 1736 syncLanguageButtonDisplay(); 1737 return; 1738 } 1739 1740 if (setComboLanguage(desired)) { 1741 try { localStorage.setItem(LANGUAGE_PREF_KEY, desired); } catch (e) { } 1742 var langs = getConfiguredLanguages(); 1743 var item = findLanguageByCode(langs, desired); 1744 if (item) setButtonLanguageLabel(item); 1745 return; 1746 } 1747 1748 restoreLanguageTries++; 1749 if (restoreLanguageTries < 20) { 1750 setTimeout(applyStoredLanguagePreference, 300); 1751 } 1752 } 1753 1754 function populateLanguageList() { 1755 var list = document.querySelector('.language_dropdown'); 1756 if (!list) return; 1757 var langs = getConfiguredLanguages(); 1758 while (list.firstChild) list.removeChild(list.firstChild);
1759 langs.forEach(function (item) { 1760 var li = document.createElement('li'); 1761 var a = document.createElement('a'); 1762 a.className = 'dropdown-item notranslate d-flex align-items-center'; 1763 a.href = 'javascript:void(0)'; 1764 var flag = document.createElement('span'); 1765 flag.className = 'fi ' + (item.flag ? ('fi-' + item.flag) : langCodeToFlag(item.code).replace('fi ', '')); 1766 flag.style.marginRight = '8px'; 1767 flag.style.width = '18px'; 1768 flag.style.height = '12px'; 1769 a.appendChild(flag); 1770 var txt = document.createElement('span'); 1771 txt.textContent = item.label; 1772 a.appendChild(txt); 1773 a.addEventListener('click', function () { 1774 try { localStorage.setItem(LANGUAGE_PREF_KEY, item.code); } catch (e) { } 1775 if (isDefaultLanguage(item.code)) { 1776 clearGoogTransCookie(); 1777 } else { 1778 setGoogTransCookie(item.code); 1779 } 1780 setButtonLanguageLabel(item); 1781 1782 var dd = list.closest('.lang-drop'); 1783 var btn = dd ? (dd.querySelector('.dropdown-toggle') || dd.querySelector('button')) : null; 1784 if (dd) { 1785 list.classList.remove('show'); 1786 if (btn) btn.setAttribute('aria-expanded', 'false'); 1787 } 1788 1789 // Reload so Google Translate reads our host-valid googtrans cookie 1790 // instead of writing an invalid domain cookie (e.g. .com.au). 1791 window.location.reload(); 1792 }); 1793 li.appendChild(a); 1794 list.appendChild(li); 1795 }); 1796 } 1797 1798 document.addEventListener('DOMContentLoaded', function () { 1799 suppressGoogleTranslateBanner(); 1800 watchGoogleTranslateBanner(); 1801 populateLanguageList(); 1802 watchTranslatedDom(); 1803 syncLanguageButtonDisplay(); 1804 var syncIntervalTries = 0; 1805 var syncInterval = setInterval(function () { 1806 syncIntervalTries++; 1807 syncLanguageButtonDisplay(); 1808 if (syncIntervalTries >= 20) clearInterval(syncInterval); 1809 }, 500); 1810 }); 1811 1812 document.addEventListener('shown.bs.dropdown', function (e) { 1813 var dd = e.target.closest('.lang-drop'); 1814 if (!dd) return; 1815 var list = dd.querySelector('.language_dropdown'); 1816 if (list && !list.children.length) populateLanguageList(); 1817 syncLanguageButtonDisplay(); 1818 }); 1819 })(); 1820</script>
vendor: 1 bytes, line 1820
1820
1821<script> 1822 (function () { 1823 var translateLoaded = false; 1824 function loadTranslateScript() { 1825 if (translateLoaded) return; 1826 translateLoaded = true; 1827 var s = document.createElement('script'); 1828 s.src = 'https://translate.google.com/translate_a/element.js?cb=googleTranslateElementInit'; 1829 s.defer = true; 1830 document.head.appendChild(s); 1831 } 1832 document.addEventListener('DOMContentLoaded', function () { 1833 var langBtn = document.querySelector('.lang-drop .dropdown-toggle') || document.querySelector('.lang-drop button'); 1834 if (langBtn) { 1835 langBtn.addEventListener('pointerdown', loadTranslateScript, { once: true }); 1836 langBtn.addEventListener('focus', loadTranslateScript, { once: true }); 1837 } 1838 // Load immediately when a translation cookie or stored preference exists. 1839 if (document.cookie.indexOf('googtrans=') !== -1 || (function () { 1840 try { return localStorage.getItem("theme200.selectedLang"); } catch (e) { return ''; } 1841 })()) { 1842 loadTranslateScript(); 1843 } else { 1844 setTimeout(loadTranslateScript, 2500); 1845 } 1846 }); 1847 })(); 1848</script>
vendor: 1 bytes, line 1848
1848
1849<script> 1850 // Toggle dropdown icon from plus to minus when dropdown opens/closes. 1851 // Also keep accessibility and language dropdowns mutually exclusive. 1852 document.addEventListener('DOMContentLoaded', function () { 1853 function syncPlusMinusIcons(dropdown, isOpen) { 1854 if (!dropdown) return; 1855 var dropdownToggle = dropdown.querySelector('.dropdown-toggle') 1856 || (dropdown.classList.contains('lang-drop') ? dropdown.querySelector('button') : null) 1857 || dropdown.querySelector('.accessibility-toggle'); 1858 if (!dropdownToggle) return; 1859 var plusIcon = dropdownToggle.querySelector('.plus-icon'); 1860 var minusIcon = dropdownToggle.querySelector('.minus-icon'); 1861 if (!plusIcon || !minusIcon) return; 1862 plusIcon.style.display = isOpen ? 'none' : 'inline-block'; 1863 minusIcon.style.display = isOpen ? 'inline-block' : 'none'; 1864 } 1865 1866 function hideOtherTopRightDropdowns(currentDropdown) { 1867 var topRight = document.querySelector('.top-right'); 1868 if (!topRight || typeof bootstrap === 'undefined' || !bootstrap.Dropdown) return; 1869 1870 topRight.querySelectorAll('.dropdown').forEach(function (other) { 1871 if (other === currentDropdown) return; 1872 var toggle = other.querySelector('[data-bs-toggle="dropdown"]'); 1873 if (!toggle) return; 1874 var instance = bootstrap.Dropdown.getInstance(toggle); 1875 if (instance) { 1876 instance.hide(); 1877 } else { 1878 var menu = other.querySelector('.dropdown-menu'); 1879 if (menu) menu.classList.remove('show'); 1880 toggle.classList.remove('show'); 1881 toggle.setAttribute('aria-expanded', 'false'); 1882 syncPlusMinusIcons(other, false); 1883 } 1884 }); 1885 } 1886 1887 document.addEventListener('show.bs.dropdown', function (e) { 1888 var dropdown = e.target.closest('.dropdown'); 1889 syncPlusMinusIcons(dropdown, true); 1890 if (dropdown && dropdown.closest('.top-right')) { 1891 hideOtherTopRightDropdowns(dropdown); 1892 } 1893 }); 1894 1895 document.addEventListener('hide.bs.dropdown', function (e) { 1896 var dropdown = e.target.closest('.dropdown'); 1897 syncPlusMinusIcons(dropdown, false); 1898 }); 1899 }); 1900</script>
vendor: 1 bytes, line 1900
1900
1901<script> 1902 (function (window, document) { 1903 if (window.StaahBookingHelper) return; 1904 1905 function onReady(fn) { 1906 if (document.readyState !== 'loading') { 1907 fn(); 1908 } else { 1909 document.addEventListener('DOMContentLoaded', fn); 1910 } 1911 } 1912 1913 function normalizeUrl(url) { 1914 try { 1915 return String(url || ''); 1916 } catch (e) { 1917 return ''; 1918 } 1919 } 1920 1921 function normalizeLangCode(code) { 1922 return String(code || '').trim().toLowerCase().replace('_', '-'); 1923 } 1924 1925 function getGoogTransLangCode() { 1926 try { 1927 var match = document.cookie.match(/(?:^|;\s*)googtrans=([^;]+)/); 1928 if (!match || !match[1]) return ''; 1929 var parts = decodeURIComponent(match[1]).split('/').filter(function (part) { 1930 return !!part; 1931 }); 1932 if (parts.length < 2) return ''; 1933 var source = normalizeLangCode(parts[parts.length - 2]); 1934 var target = normalizeLangCode(parts[parts.length - 1]); 1935 return target && target !== source ? target : ''; 1936 } catch (e) { 1937 return ''; 1938 } 1939 } 1940 1941 function getStoredLangCode() { 1942 try { 1943 var i; 1944 for (i = 0; i < localStorage.length; i++) { 1945 var key = localStorage.key(i); 1946 if (key && /(^|\.)selectedLang$/.test(key)) {
1947 var stored = normalizeLangCode(localStorage.getItem(key)); 1948 if (stored) return stored; 1949 } 1950 } 1951 } catch (e) { 1952 // localStorage unavailable (private mode); ignore. 1953 } 1954 return ''; 1955 } 1956 1957 function getSelectedLangCode() { 1958 return getGoogTransLangCode() || getStoredLangCode(); 1959 } 1960 1961 /** Languages the booking engine accepts in its `lang` parameter. */ 1962 var BOOKING_LANG_CODES = ('EN AF SQ AM AR HY AZ EU BE BN BS BG CA CEB zh-CN CO HR CS DA NL EO ET FI FR FY GL ' 1963 + 'KA DE EL GU HT HAW IW HI HMN HU IS IG GA ID IT JA JW KN KK KM RW KO KU KY LO LA LV LT LB MK MG MS ML MT ' 1964 + 'MI MR MN MY NE NO NY OR PS FA PL PT PA RO RU SM ES GD SR ST SN SD SI SK SL SO SU SW SV TL TG TA TT TE TH ' 1965 + 'TK TR UK UR UG UZ VI CY XH YI YO ZU').split(' '); 1966 1967 /** Google Translate codes that differ from the booking engine's codes. */ 1968 var BOOKING_LANG_ALIASES = { 1969 'zh': 'zh-CN', 1970 'zh-cn': 'zh-CN', 1971 'zh-tw': 'zh-CN', 1972 'he': 'IW', 1973 'fil': 'TL', 1974 'jv': 'JW' 1975 }; 1976 1977 function toBookingLangCode(code) {
1978 var normalized = normalizeLangCode(code); 1979 if (!normalized) return ''; 1980 1981 var alias = BOOKING_LANG_ALIASES[normalized] || BOOKING_LANG_ALIASES[normalized.split('-')[0]]; 1982 if (alias) return alias; 1983 1984 var candidate = normalized.split('-')[0].toUpperCase(); 1985 return BOOKING_LANG_CODES.indexOf(candidate) !== -1 ? candidate : ''; 1986 } 1987 1988 function applyBookingLanguage(url) { 1989 var target = normalizeUrl(url); 1990 if (!target) return target; 1991 1992 var lang = toBookingLangCode(getSelectedLangCode()); 1993 if (!lang) return target; 1994 1995 if (/[?&]lang=/.test(target)) { 1996 return target.replace(/([?&]lang=)[^&]*/, '$1' + lang); 1997 } 1998 return target + (target.indexOf('?') === -1 ? '?' : '&') + 'lang=' + lang; 1999 } 2000 2001 var OVERLAY_PRESETS = { 2002 'overlay-block': { 2003 displayMode: 'block', 2004 overlayCss: 'position:fixed;inset:0;display:none;background:rgba(0,0,0,.7);z-index:2147483647;', 2005 closeButtonCss: 'position:absolute;top:12px;left:12px;z-index:1;background:#fff;border:none;border-radius:4px;padding:8px 12px;font-size:22px;line-height:1;cursor:pointer;box-shadow:0 2px 8px rgba(0,0,0,.2)', 2006 frameCss: 'width:100%;height:100%;border:0;background:#fff', 2007 watchBlankFrame: false 2008 }, 2009 'overlay-flex-roomy': { 2010 displayMode: 'flex', 2011 overlayCss: 'position:fixed;inset:0;display:none;flex-direction:column;background:rgba(0,0,0,.72);z-index:2147483647;padding:10px;box-sizing:border-box;', 2012 closeButtonCss: 'align-self:flex-start;background:#fff;border:0;border-radius:4px;padding:4px 10px;margin-bottom:8px;font-size:24px;line-height:1;cursor:pointer;box-shadow:0 2px 8px rgba(0,0,0,.25);', 2013 frameCss: 'width:100%;height:calc(100% - 40px);border:0;background:#fff;border-radius:6px;', 2014 watchBlankFrame: true 2015 }, 2016 'overlay-flex-compact': { 2017 displayMode: 'flex', 2018 overlayCss: 'position:fixed;inset:0;display:none;flex-direction:column;background:rgba(0,0,0,.7);z-index:2147483647;padding:8px;box-sizing:border-box;', 2019 closeButtonCss: 'position:static;align-self:flex-start;z-index:2;background:#fff;border:none;border-radius:4px;padding:3px 8px;font-size:16px;line-height:1;cursor:pointer;box-shadow:0 2px 8px rgba(0,0,0,.2);margin-bottom:5px;', 2020 frameCss: 'width:100%;height:calc(100% - 30px);border:0;background:#fff;border-radius:6px;', 2021 watchBlankFrame: true 2022 } 2023 }; 2024 2025 function extendObject(target, source, options) { 2026 var out = target || {}; 2027 if (!source) return out; 2028 Object.keys(source).forEach(function (key) { 2029 var value = source[key]; 2030 if (typeof value === 'undefined') return; 2031 if (options && options.skipEmpty && (value === null || value === '')) return; 2032 out[key] = value; 2033 }); 2034 return out; 2035 } 2036 2037 function getOverlayPreset(name) { 2038 return extendObject({}, OVERLAY_PRESETS[name] || {}); 2039 } 2040 2041 function resolveOverlayOptions(options) { 2042 var config = extendObject({}, getOverlayPreset((options && options.preset) || 'overlay-block')); 2043 config = extendObject(config, options || {}, { skipEmpty: true }); 2044 2045 if (typeof config.watchBlankFrame === 'string') { 2046 var watchValue = config.watchBlankFrame.trim().toLowerCase(); 2047 if (watchValue === 'true' || watchValue === '1' || watchValue === 'yes') { 2048 config.watchBlankFrame = true; 2049 } else if (watchValue === 'false' || watchValue === '0' || watchValue === 'no') { 2050 config.watchBlankFrame = false; 2051 } 2052 } 2053 2054 return config; 2055 } 2056 2057 function createBookingMatcher(beUrlBase, staahPropertyIdEnc) { 2058 var base = normalizeUrl(beUrlBase); 2059 var baseNoQuery = base ? base.split('?')[0] : ''; 2060 var propertyIdNeedle = staahPropertyIdEnc ? ('propertyId=' + staahPropertyIdEnc) : ''; 2061 2062 return function isBookingUrl(url) { 2063 try { 2064 var abs = normalizeUrl(url); 2065 if (!abs) return false; 2066 if (baseNoQuery && abs.indexOf(baseNoQuery) !== -1) return true; 2067 2068 return !!( 2069 propertyIdNeedle && 2070 abs.indexOf(propertyIdNeedle) !== -1 && 2071 ( 2072 abs.indexOf('swiftbook.io/inst/') !== -1 || 2073 abs.indexOf('/inst/#home') !== -1 || 2074 abs.indexOf('indexpackdetail') !== -1 2075 ) 2076 ); 2077 } catch (e) { 2078 return false;
2079 } 2080 }; 2081 } 2082 2083 function ensureNativeWindowOpen() { 2084 if (!window.__staahNativeWindowOpen) { 2085 window.__staahNativeWindowOpen = window.open; 2086 } 2087 return window.__staahNativeWindowOpen; 2088 } 2089 2090 function installWindowOpenInterceptor(options) { 2091 if (!options || typeof options.isBookingUrl !== 'function' || typeof options.open !== 'function') { 2092 return null; 2093 } 2094 2095 var nativeWindowOpen = ensureNativeWindowOpen(); 2096 window.open = function (url, target, features) { 2097 if (options.isBookingUrl(url)) { 2098 options.open(String(url || '')); 2099 return (typeof options.getWindow === 'function' && options.getWindow()) || window; 2100 } 2101 return nativeWindowOpen.apply(window, arguments); 2102 }; 2103 2104 return nativeWindowOpen; 2105 } 2106 2107 function bindBookingAnchors(options) { 2108 if (!options || typeof options.isBookingUrl !== 'function' || typeof options.open !== 'function') { 2109 return null; 2110 } 2111 2112 var boundAttr = options.boundAttr || 'data-be-overlay-bound'; 2113 var selector = options.selector || 'a[href]'; 2114 var removeTarget = options.removeTarget !== false; 2115 var listenerOptions = options.listenerOptions || { passive: false }; 2116 2117 function bind() { 2118 var anchors = document.querySelectorAll(selector); 2119 anchors.forEach(function (anchor) { 2120 var hrefAttr = anchor.getAttribute('href') || ''; 2121 var href = anchor.href || hrefAttr; 2122 if (!options.isBookingUrl(href)) return; 2123 2124 if (removeTarget) { 2125 anchor.removeAttribute('target'); 2126 } 2127 2128 var localizedHref = applyBookingLanguage(hrefAttr || href); 2129 if (localizedHref && localizedHref !== hrefAttr) { 2130 anchor.setAttribute('href', localizedHref); 2131 } 2132 if (anchor.getAttribute(boundAttr) === '1') return; 2133 2134 anchor.setAttribute(boundAttr, '1'); 2135 anchor.addEventListener('click', function (event) { 2136 event.preventDefault(); 2137 if (options.stopPropagation) { 2138 event.stopPropagation(); 2139 } 2140 options.open(anchor.href || anchor.getAttribute('href')); 2141 }, listenerOptions); 2142 }); 2143 } 2144 2145 bind(); 2146 var observer = new MutationObserver(bind); 2147 observer.observe(document.body, { childList: true, subtree: true }); 2148 return observer; 2149 } 2150 2151 function createOverlayController(options) { 2152 var config = resolveOverlayOptions(options); 2153 var displayMode = config.displayMode || 'block'; 2154 var blankStates = config.blankStates || ['about:blank', 'about:srcdoc']; 2155 var overlay = document.createElement('div'); 2156 var closeBtn = document.createElement('button'); 2157 var frame = document.createElement('iframe'); 2158 var blankFrameWatch = null; 2159 2160 overlay.id = config.overlayId || 'be-overlay'; 2161 overlay.setAttribute('role', 'dialog'); 2162 overlay.setAttribute('aria-modal', 'true'); 2163 overlay.style.cssText = config.overlayCss || 'position:fixed;inset:0;display:none;background:rgba(0,0,0,.7);z-index:2147483647;'; 2164 2165 closeBtn.type = 'button'; 2166 closeBtn.setAttribute('aria-label', config.closeButtonAriaLabel || 'Close booking'); 2167 closeBtn.style.cssText = config.closeButtonCss || 'position:absolute;top:12px;left:12px;z-index:1;background:#fff;border:none;border-radius:4px;padding:8px 12px;font-size:22px;line-height:1;cursor:pointer;box-shadow:0 2px 8px rgba(0,0,0,.2)'; 2168 closeBtn.textContent = config.closeButtonText || '\u00D7'; 2169 2170 frame.id = config.frameId || 'be-iframe'; 2171 frame.title = config.frameTitle || 'Booking'; 2172 frame.style.cssText = config.frameCss || 'width:100%;height:100%;border:0;background:#fff'; 2173 2174 overlay.appendChild(closeBtn); 2175 overlay.appendChild(frame); 2176 document.body.appendChild(overlay); 2177 2178 function close() { 2179 overlay.style.display = 'none'; 2180 frame.removeAttribute('src'); 2181 if (blankFrameWatch) { 2182 clearInterval(blankFrameWatch); 2183 blankFrameWatch = null; 2184 } 2185 document.documentElement.style.overflow = ''; 2186 document.body.style.overflow = ''; 2187 } 2188 2189 function open(url) { 2190 frame.src = applyBookingLanguage(url); 2191 overlay.style.display = displayMode; 2192 document.documentElement.style.overflow = 'hidden'; 2193 document.body.style.overflow = 'hidden'; 2194 2195 if (config.watchBlankFrame) { 2196 if (blankFrameWatch) clearInterval(blankFrameWatch); 2197 blankFrameWatch = setInterval(function () { 2198 if (overlay.style.display !== displayMode) return; 2199 try { 2200 var href = frame.contentWindow && frame.contentWindow.location ? frame.contentWindow.location.href : ''; 2201 if (blankStates.indexOf(href) !== -1) { 2202 close(); 2203 } 2204 } catch (e) { 2205 // Cross-origin frame; ignore. 2206 } 2207 }, config.blankFramePollMs || 1200); 2208 } 2209 } 2210 2211 if (config.watchBlankFrame) { 2212 frame.addEventListener('load', function () { 2213 if (overlay.style.display !== displayMode) return; 2214 try { 2215 var href = frame.contentWindow && frame.contentWindow.location ? frame.contentWindow.location.href : ''; 2216 if (blankStates.indexOf(href) !== -1) { 2217 close(); 2218 } 2219 } catch (e) { 2220 // Cross-origin frame; ignore. 2221 } 2222 }); 2223 } 2224 2225 closeBtn.addEventListener('click', close); 2226 overlay.addEventListener('click', function (event) { 2227 if (event.target === overlay) { 2228 close(); 2229 } 2230 }); 2231 document.addEventListener('keydown', function (event) { 2232 if (event.key === 'Escape' && overlay.style.display === displayMode) { 2233 close(); 2234 } 2235 }); 2236 2237 return { 2238 overlay: overlay, 2239 frame: frame, 2240 open: open, 2241 close: close, 2242 getWindow: function () { 2243 return frame.contentWindow || window; 2244 } 2245 }; 2246 } 2247 2248 function attachOverlayInterception(options) { 2249 if (!options || !options.beUrlBase) return null; 2250 2251 var resolvedOptions = resolveOverlayOptions(options); 2252 var isBookingUrl = createBookingMatcher(resolvedOptions.beUrlBase, resolvedOptions.staahPro
2252pertyIdEnc); 2253 var controller = createOverlayController(resolvedOptions); 2254 2255 window.__staahOpenBookingOverlay = controller.open; 2256 installWindowOpenInterceptor({ 2257 isBookingUrl: isBookingUrl, 2258 open: controller.open, 2259 getWindow: controller.getWindow 2260 }); 2261 bindBookingAnchors({ 2262 isBookingUrl: isBookingUrl, 2263 open: controller.open, 2264 boundAttr: resolvedOptions.boundAttr, 2265 removeTarget: resolvedOptions.removeTarget, 2266 stopPropagation: resolvedOptions.stopPropagation, 2267 listenerOptions: { passive: false } 2268 }); 2269 2270 return controller; 2271 } 2272 2273 window.StaahBookingHelper = { 2274 onReady: onReady, 2275 normalizeUrl: normalizeUrl, 2276 getSelectedLangCode: getSelectedLangCode, 2277 toBookingLangCode: toBookingLangCode, 2278 applyBookingLanguage: applyBookingLanguage, 2279 overlayPresets: OVERLAY_PRESETS, 2280 getOverlayPreset: getOverlayPreset, 2281 resolveOverlayOptions: resolveOverlayOptions, 2282 createBookingMatcher: createBookingMatcher, 2283 installWindowOpenInterceptor: installWindowOpenInterceptor, 2284 bindBookingAnchors: bindBookingAnchors, 2285 createOverlayController: createOverlayController, 2286 attachOverlayInterception: attachOverlayInterception 2287 }; 2288 })(window, document); 2289</script>
vendor: 1 bytes, line 2289
2289
2290<script> 2291 (function () { 2292 var helper = window.StaahBookingHelper; 2293 if (!helper || typeof helper.onReady !== 'function') return; 2294 2295 helper.onReady(function () { 2296 if (!window.StaahBookingHelper || typeof window.StaahBookingHelper.attachOverlayInterception !== 'function') { 2297 return; 2298 } 2299 2300 window.StaahBookingHelper.attachOverlayInterception({ 2301 preset: "overlay\u002Dblock", 2302 beUrlBase: "https\u003A\/\/www.swiftbook.io\/inst\/\u0023home\u003FpropertyId\u003D462NTovM0JIR42r3AinAVOw7FHLRY5ODI\u003D\u0026JDRN\u003DY", 2303 staahPropertyIdEnc: "462NTovM0JIR42r3AinAVOw7FHLRY5ODI\u003D", 2304 overlayId: "be\u002Doverlay", 2305 frameId: "be\u002Diframe", 2306 boundAttr: "data\u002Dbe\u002Doverlay\u002Dbound", 2307 removeTarget: true, 2308 displayMode: "", 2309 overlayCss: "", 2310 closeButtonCss: "", 2311 closeButtonText: "", 2312 frameCss: "", 2313 watchBlankFrame: "" 2314 }); 2315 }); 2316 })(); 2317</script>
2317 2318 2319 <style> 2320 /* Popup Background */ 2321 .popup-overlay { 2322 position: fixed; 2323 inset: 0; 2324 width: 100%; 2325 height: 100%; 2326 background: rgba(0, 0, 0, 0.6); 2327 display: flex; 2328 justify-content: center; 2329 align-items: center; 2330 z-index: 9999; 2331 } 2332 2333 /* Popup Box */ 2334 .popup-box { 2335 background: #fff; 2336 width: 90%; 2337 max-width: 400px; 2338 max-height: 90vh; 2339 overflow-y: auto; 2340 border-radius: 12px; 2341 padding: 28px 25px; 2342 text-align: center; 2343 position: relative; 2344 animation: popupFade 0.4s ease; 2345 box-shadow: 0 8px 25px rgba(0, 0, 0, 0.25); 2346 } 2347 2348 @keyframes popupFade { 2349 from { 2350 transform: scale(0.8); 2351 opacity: 0; 2352 } 2353 2354 to { 2355 transform: scale(1); 2356 opacity: 1; 2357 } 2358 } 2359 2360 /* Slider */ 2361 .popup-slider { 2362 position: relative; 2363 width: 100%; 2364 overflow: hidden; 2365 border-radius: 8px; 2366 margin-bottom: 18px; 2367 } 2368 2369 .slider-wrapper { 2370 display: flex; 2371 transition: transform 0.5s ease-in-out; 2372 } 2373 2374 .slide { 2375 min-width: 100%; 2376 } 2377 2378 .slide img { 2379 display: block; 2380 width: 100%; 2381 height: auto; 2382 border-radius: 8px; 2383 cursor: pointer; 2384 } 2385 2386 /* Slider Arrows */ 2387 .slider-arrow { 2388 position: absolute; 2389 top: 50%; 2390 transform: translateY(-50%); 2391 width: 32px; 2392 height: 32px; 2393 border: none; 2394 border-radius: 50%; 2395 background: rgba(0, 0, 0, 0.55); 2396 color: #fff; 2397 font-size: 20px; 2398 cursor: pointer; 2399 z-index: 2; 2400 } 2401 2402 .slider-arrow:hover { 2403 background: rgba(0, 0, 0, 0.8); 2404 } 2405 2406 .prev-slide { 2407 left: 10px; 2408 } 2409 2410 .next-slide { 2411 right: 10px; 2412 } 2413 2414 /* Slider Dots */ 2415 .slider-dots { 2416 display: flex; 2417 justify-content: center; 2418 gap: 7px; 2419 margin-top: 10px; 2420 } 2421 2422 .slider-dot { 2423 width: 9px; 2424 height: 9px; 2425 background: #ccc; 2426 border-radius: 50%; 2427 cursor: pointer; 2428 } 2429 2430 .slider-dot.active { 2431 background: #28a745; 2432 } 2433 2434 /* Book Button */ 2435 .book-btn { 2436 display: inline-block; 2437 background: #28a745; 2438 color: #fff !important; 2439 text-decoration: none; 2440 padding: 7px 13px; 2441 border-radius: 6px; 2442 font-size: 16px; 2443 transition: 0.3s; 2444 } 2445 2446 .book-btn:hover { 2447 background: #218838; 2448 } 2449 2450 /* Close Button */ 2451 .close-btn { 2452 position: absolute; 2453 top: -17px; 2454 right: 7px; 2455 font-size: 40px; 2456 color: #666; 2457 cursor: pointer; 2458 z-index: 10; 2459 } 2460 2461 .close-btn:hover { 2462 color: #000; 2463 } 2464 2465 /* Mobile Responsive */ 2466 @media (max-width: 480px) { 2467 .popup-box { 2468 padding: 25px 18px; 2469 } 2470 } 2471 2472 @media (max-width: 768px) { 2473 2474 .popup-box { 2475 width: 95%; 2476 max-width: 350px; 2477 padding: 15px; 2478 } 2479 2480 .close-btn { 2481 top: -12px; 2482 right: -5px; 2483 font-size: 34px; 2484 } 2485 2486 .book-btn { 2487 width: 100%; 2488 display: block; 2489 padding: 12px; 2490 font-size: 17px; 2491 box-sizing: border-box; 2492 } 2493 2494 .slider-arrow { 2495 width: 30px; 2496 height: 30px; 2497 font-size: 18px; 2498 } 2499 } 2500</style> 2501 2502 2503<!-- Popup --> 2504<div class="popup-overlay" id="offerPopup"> 2505 2506 <div class="popup-box"> 2507 2508 <span class="close-btn" id="closePopupBtn">×</span> 2509 2510 <div class="popup-slider"> 2511 2512 <div class="slider-wrapper" id="sliderWrapper"> 2513 2514 <div class="slide"> 2515 <a href="https://www.swiftbook.io/inst/#home?propertyId=56982&PackageID=1372400000000006&checkIn=2027-05-07&checkOut=2027-05-10" 2516 target="_blank"> 2517 2518 <img src="https://cfstatic.staah.net/w*2000/big_13724_1791355861412.jpeg?k=462NTovM0JIR42r3AinAVOw7FHLRY5ODI=" alt="Special Offer" decoding="async" loading="lazy" srcset="https://cfstatic.staah.net/w*480/big_13724_1791355861412.jpeg?k=462NTovM0JIR42r3AinAVOw7FHLRY5ODI= 480w, https://cfstatic.staah.net/w*768/big_13724_1791355861412.jpeg?k=462NTovM0JIR42r3AinAVOw7FHLRY5ODI= 768w, https://cfstatic.staah.net/w*1200/big_13724_1791355861412.jpeg?k=462NTovM0JIR42r3AinAVOw7FHLRY5ODI= 1200w, https://cfstatic.staah.net/w*1600/big_13724_1791355861412.jpeg?k=462NTovM0JIR42r3AinAVOw7FHLRY5ODI= 1600w, https://cfstatic.staah.net/w*2000/big_13724_1791355861412.jpeg?k=462NTovM0JIR42r3AinAVOw7FHLRY5ODI= 2000w" sizes="100vw"> 2519 </a> 2520 </div> 2521 2522 2523 <!--<div class="slide"> 2524 <a href="https://www.swiftbook.io/inst/#home?propertyId=56982&PackageID=1372400000000006&checkIn=10-16-2026&checkOut=10-19-2026" 2525 target="_blank"> 2526 2527 <img src="https://cfstatic.staah.net/w*2000/big_13724_1784890904915.jpeg?k=462NTovM0JIR42r3AinAVOw7FHLRY5ODI=" alt="Special Offer" decoding="async" loading="lazy" srcset="https://cfstatic.staah.net/w*480/big_13724_1784890904915.jpeg?k=462NTovM0JIR42r3AinAVOw7FHLRY5ODI= 480w, https://cfstatic.staah.net/w*768/big_13724_1784890904915.jpeg?k=462NTovM0JIR42r3AinAVOw7FHLRY5ODI= 768w, https://cfstatic.staah.net/w*1200/big_13724_1784890904915.jpeg?k=462NTovM0JIR42r3AinAVOw7FHLRY5ODI= 1200w, https://cfstatic.staah.net/w*1600/big_13724_1784890904915.jpeg?k=462NTovM0JIR42r3AinAVOw7FHLRY5ODI= 1600w, https://cfstatic.staah.net/w*2000/big_13724_1784890904915.jpeg?k=462NTovM0JIR42r3AinAVOw7FHLRY5ODI= 2000w" sizes="100vw"> 2528 </a> 2529 </div>--> 2530 2531 </div> 2532 2533 2534 <button class="slider-arrow prev-slide">â®</button> 2535 2536<button class="slider-arrow next-slide">â¯</button> 2537 2538 </div> 2539 2540
2541 <div class="slider-dots"> 2542 2543 <span class="slider-dot active"></span> 2544<span class="slider-dot"></span> 2545 2546 </div> 2547 2548 2549 <a href="https://www.swiftbook.io/inst/#home?propertyId=56982&PackageID=1372400000000006&checkIn=2027-05-07&checkOut=2027-05-10" 2550 target="_blank" class="book-btn"> 2551 2552 Book Now 2553 2554 </a> 2555 2556 </div> 2557 2558</div> 2559
2560<script> 2561(function () { 2562 2563 function initPopupSlider() { 2564 2565 const popup = document.getElementById("offerPopup"); 2566 if (!popup) return; 2567 2568 const closeBtn = document.getElementById("closePopupBtn"); 2569 const sliderWrapper = document.getElementById("sliderWrapper"); 2570 const slides = popup.querySelectorAll(".slide"); 2571 const sliderDots = popup.querySelectorAll(".slider-dot"); 2572 const prevBtn = popup.querySelector(".prev-slide"); 2573 const nextBtn = popup.querySelector(".next-slide"); 2574 2575 if (!sliderWrapper || slides.length === 0) return; 2576 2577 let currentSlide = 0; 2578 let autoSlide; 2579 2580 popup.style.display = "flex"; 2581 2582 function updateSlider() { 2583 sliderWrapper.style.transform = 2584 "translateX(-" + (currentSlide * 100) + "%)"; 2585 2586 sliderDots.forEach(function (dot, index) { 2587 dot.classList.toggle("active", index === currentSlide); 2588 }); 2589 } 2590 2591 function changeSlide(direction) { 2592 currentSlide += direction; 2593 2594 if (currentSlide < 0) { 2595 currentSlide = slides.length - 1; 2596 } 2597 2598 if (currentSlide >= slides.length) { 2599 currentSlide = 0; 2600 } 2601 2602 updateSlider(); 2603 } 2604 2605 function goToSlide(index) { 2606 currentSlide = index; 2607 updateSlider(); 2608 } 2609 2610 // Make functions available globally (for inline onclick) 2611 window.changeSlide = changeSlide; 2612 window.goToSlide = goToSlide; 2613 2614 // Attach events (recommended) 2615 if (prevBtn) { 2616 prevBtn.addEventListener("click", function () { 2617 changeSlide(-1); 2618 }); 2619 } 2620 2621 if (nextBtn) { 2622 nextBtn.addEventListener("click", function () { 2623 changeSlide(1); 2624 }); 2625 } 2626 2627 sliderDots.forEach(function (dot, index) { 2628 dot.addEventListener("click", function () { 2629 goToSlide(index); 2630 }); 2631 }); 2632 2633 if (closeBtn) { 2634 closeBtn.addEventListener("click", function () { 2635 popup.style.display = "none"; 2636 }); 2637 } 2638 2639 popup.addEventListener("click", function (e) { 2640 if (e.target === popup) { 2641 popup.style.display = "none"; 2642 } 2643 }); 2644 2645 autoSlide = setInterval(function () { 2646 changeSlide(1); 2647 }, 3000); 2648 2649 updateSlider(); 2650 } 2651 2652 if (document.readyState === "loading") { 2653 document.addEventListener("DOMContentLoaded", initPopupSlider); 2654 } else { 2655 initPopupSlider(); 2656 } 2657 2658})(); 2659</script>
2659<main id="smooth-wrapper" tabindex="-1"> 2660 <!-- Back to Top Button --> 2661 <button id="back-to-top" class="back-to-top-btn" aria-label="Back to top" title="Back to top"> 2662 <i class="bi bi-arrow-up"></i> 2663 </button> 2664 <div id="smooth-content"> 2665 2666<section class="hero px-3 px-lg-5 position-relative pb-0 space-hero"> 2667 <div class="hero-slider swiper" role="region" aria-roledescription="carousel" aria-label="Hero slider" style="background-image: url('https://cfstatic.staah.net/w*1200/big_13724_1770763612081.jpeg?k=462NTovM0JIR42r3AinAVOw7FHLRY5ODI=');"> 2668 <div class="swiper-wrapper"> 2669 <div class="swiper-slide slide-bg" style="background-image: url('https://cfstatic.staah.net/w*1200/big_13724_1770763612081.jpeg?k=462NTovM0JIR42r3AinAVOw7FHLRY5ODI=');" data-swiper-autoplay="5000" role="group" 2670 aria-label="Fundacion Pacita"> 2671 <img src="https://cfstatic.staah.net/w*2000/big_13724_1770763612081.jpeg?k=462NTovM0JIR42r3AinAVOw7FHLRY5ODI=" alt="Fundacion Pacita" class="slider-image" 2672 sizes="100vw" loading="eager" fetchpriority="high" decoding="async" width="1000" height="667" srcset="https://cfstatic.staah.net/w*480/big_13724_1770763612081.jpeg?k=462NTovM0JIR42r3AinAVOw7FHLRY5ODI= 480w, https://cfstatic.staah.net/w*768/big_13724_1770763612081.jpeg?k=462NTovM0JIR42r3AinAVOw7FHLRY5ODI= 768w, https://cfstatic.staah.net/w*1200/big_13724_1770763612081.jpeg?k=462NTovM0JIR42r3AinAVOw7FHLRY5ODI= 1200w, https://cfstatic.staah.net/w*1600/big_13724_1770763612081.jpeg?k=462NTovM0JIR42r3AinAVOw7FHLRY5ODI= 1600w, https://cfstatic.staah.net/w*2000/big_13724_1770763612081.jpeg?k=462NTovM0JIR42r3AinAVOw7FHLRY5ODI= 2000w" /> 2673 </div> 2674 <div class="swiper-slide slide-bg" style="background-image: url('https://cfstatic.staah.net/w*1200/big_13724_1770763628222.jpeg?k=462NTovM0JIR42r3AinAVOw7FHLRY5ODI=');" data-swiper-autoplay="5000" role="group" 2675 aria-label="Fundacion Pacita"> 2676 <img src="https://cfstatic.staah.net/w*2000/big_13724_1770763628222.jpeg?k=462NTovM0JIR42r3AinAVOw7FHLRY5ODI=" alt="Fundacion Pacita" class="slider-image" 2677 sizes="100vw" loading="eager" decoding="async" width="1000" height="667" srcset="https://cfstatic.staah.net/w*480/big_13724_1770763628222.jpeg?k=462NTovM0JIR42r3AinAVOw7FHLRY5ODI= 480w, https://cfstatic.staah.net/w*768/big_13724_1770763628222.jpeg?k=462NTovM0JIR42r3AinAVOw7FHLRY5ODI= 768w, https://cfstatic.staah.net/w*1200/big_13724_1770763628222.jpeg?k=462NTovM0JIR42r3AinAVOw7FHLRY5ODI= 1200w, https://cfstatic.staah.net/w*1600/big_13724_1770763628222.jpeg?k=462NTovM0JIR42r3AinAVOw7FHLRY5ODI= 1600w, https://cfstatic.staah.net/w*2000/big_13724_1770763628222.jpeg?k=462NTovM0JIR42r3AinAVOw7FHLRY5ODI= 2000w" /> 2678 </div> 2679 <div class="swiper-slide slide-bg" data-swiper-autoplay="5000" role="group" 2680 aria-label="Fundacion Pacita"> 2681 <img data-src="https://cfstatic.staah.net/w*2000/big_13724_1770763726499.jpeg?k=462NTovM0JIR42r3AinAVOw7FHLRY5ODI=" src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" alt="Fundacion Pacita" class="slider-image" 2682 sizes="100vw" decoding="async" width="1000" height="667" loading="lazy" /> 2683 </div> 2684 <div class="swiper-slide slide-bg" data-swiper-autoplay="5000" role="group" 2685 aria-label="Fundacion Pacita"> 2686 <img data-src="https://cfstatic.staah.net/w*2000/big_13724_1770763782299.jpeg?k=462NTovM0JIR42r3AinAVOw7FHLRY5ODI=" src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" alt="Fundacion Pacita" class="slider-image" 2687 sizes="100vw" decoding="async" width="1000" height="667" loading="lazy" /> 2688 </div> 2689 <div class="swiper-slide slide-bg" data-swiper-autoplay="5000" role="group" 2690 aria-label="Fundacion Pacita"> 2691 <img data-src="https://cfstatic.staah.net/w*2000/big_13724_1770764067329.jpeg?k=462NTovM0JIR42r3AinAVOw7FHLRY5ODI=" src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" alt="Fundacion Pacita" class="slider-image" 2692 sizes="100vw" decoding="async" width="1000" height="667" loading="lazy" /> 2693 </div> 2694 <div class="swiper-slide slide-bg" data-swiper-autoplay="5000" role="group" 2695 aria-label="Fundacion Pacita"> 2696 <img data-src="https://cfstatic.staah.net/w*2000/big_13724_1770764129166.jpeg?k=462NTovM0JIR42r3AinAVOw7FHLRY5ODI=" src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" alt="Fundacion Pacita" class="slider-image" 2697 sizes="100vw" decoding="async" width="1000" height="667" loading="lazy" /> 2698 </div> 2699 </div> 2700 <div class="swiper-button-prev"><i class="bi bi-arrow-left"></i></div> 2701 <div class="swiper-button-next"><i class="bi bi-arrow-right"></i></div> 2702</div> 2703 2704<div class="booking-engine"> 2705 <div id="quickbook-widget-462NTovM0JIR42r3AinAVOw7FHLRY5ODI=-462NTovM0JIR42r3AinAVOw7FHLRY5ODI=" 2706 class="Configure-quickBook-Widget"></div> 2707
2707<script src="https://settings.swiftbook.io/displaywidget/preview/booking-service.min.js?propertyId=462NTovM0JIR42r3AinAVOw7FHLRY5ODI=&scriptId=462NTovM0JIR42r3AinAVOw7FHLRY5ODI=" id="propInfo" defer></script>
2707 2708 </div> 2709</section> 2710 2711<section class="dining-section" aria-labelledby="dining-title"> 2712 <div class="container"> 2713 <div class="row"> 2714 <div class="col-lg-12"> 2715 <div class="dining-text-content text-center"> 2716 <h1 class="gsap-slide-right text-center">Fundacion Pacita</h1> 2717 <p class="mb-8 gsap-fade-in" data-speakable><p style="text-align: justify;">Earth and art come together at Fundacion Pacita to create the most unforgettable and picturesque stay in Basco, Batanes, Philippines. Set atop a lush hill and caught between the mountain, sea, and sky, the hotel offers the best spot to view the scenic landscape and the cultural and aesthetic heritage of the Ivatan people. Experience the true photographic beauty of Batanes right from the comforts of the hotel.<br /> 2718<br /> 2719Once the home studio of internationally acclaimed artist Pacita Abad, it pays homage to its creative roots with Ivatan-inspired rooms and suites. Resembling a gallery, each uniquely designed accommodation is adorned with artworks by both well-known and up-and-coming artists. Meanwhile, the ambience gives you the distinct yet familiar feeling of being right in your very own home, with a bed-and-breakfast warmth that can be felt throughout. Essential assistance is provided through the hotel’s facilities, which include airport and city transfers, room service, complimentaty afternoon tea, and so much more.<br /> 2720<br /> 2721More than the mesmerizing scenery and genuine promise of relaxation, staying in this destination hotel nurtures the artistic lifeblood of its community. Fundacion Pacita supports the education of Ivatan youth through projects initiated by The Jorge, Aurora, and Pacita Abad Memorial Foundation, Inc.</p></p> 2722 </div> 2723 </div> 2724 </div> 2725 </div> 2726</section> 2727 2728<section class="accommodation" aria-labelledby="accommodation-title"> 2729 <div class="container-fluid"> 2730 <div class="row justify-content-center align-items-center"> 2731 <div class="col-lg-11"> 2732 <div class="row align-items-center"> 2733 <div class="col-md-8"> 2734 <h2 class="gsap-slide-up mb-3 mb-md-0 text-center text-md-start" id="section-our-accommodation">Our Accommodation</h2> 2735 </div> 2736 <div class="col-md-4 text-center text-md-end"> 2737 <a href="./accommodation.html" class="btn-primary gsap-fade-in d-inline-block">View More</a> 2738 </div> 2739 </div> 2740 </div> 2741 </div> 2742 </div> 2743</section> 2744 2745<div class="accommodation-grid swiper" id="accommodation-grid" role="list"> 2746 <div class="swiper-wrapper "> 2747 <div class="swiper-slide " role="listitem"> 2748 <div class="accommodation-card"> 2749 <img loading="lazy" src="https://cfstatic.staah.net/w*500/big_13724_1770764046108.jpeg?k=462NTovM0JIR42r3AinAVOw7FHLRY5ODI=" alt="Sumla I" data-src="https://cfstatic.staah.net/w*500/big_13724_1770764046108.jpeg?k=462NTovM0JIR42r3AinAVOw7FHLRY5ODI=" 2750 class="card-image swiper-lazy" width="400" height="250" decoding="async" srcset="https://cfstatic.staah.net/w*480/big_13724_1770764046108.jpeg?k=462NTovM0JIR42r3AinAVOw7FHLRY5ODI= 480w, https://cfstatic.staah.net/w*500/big_13724_1770764046108.jpeg?k=462NTovM0JIR42r3AinAVOw7FHLRY5ODI= 500w" sizes="100vw" /> 2751 <div class="overlay-content d-flex flex-column"> 2752 <h3 class="room-title" title="Sumla I" id="section-sumla-i">Sumla I</h3> 2753 <div class="button-group d-flex"> 2754 <a href="sumla-i.html" class="btn-secondary">View Detail</a> 2755 <a href="https://www.swiftbook.io/inst/#home?propertyId=462NTovM0JIR42r3AinAVOw7FHLRY5ODI=&JDRN=Y&RoomID=238947&wType=2" class="btn-primary" 2756 target="_blank">Book Now</a> 2757 </div> 2758 </div> 2759 </div> 2760 </div> 2761 <div class="swiper-slide " role="listitem"> 2762 <div class="accommodation-card"> 2763 <img loading="lazy" src="https://cfstatic.staah.net/w*500/big_13724_1770764483714.jpeg?k=462NTovM0JIR42r3AinAVOw7FHLRY5ODI=" alt="Munmo" data-src="https://cfstatic.staah.net/w*500/big_13724_1770764483714.jpeg?k=462NTovM0JIR42r3AinAVOw7FHLRY5ODI=" 2764 class="card-image swiper-lazy" width="400" height="250" decoding="async" srcset="https://cfstatic.staah.net/w*480/big_13724_1770764483714.jpeg?k=462NTovM0JIR42r3AinAVOw7FHLRY5ODI= 480w, https://cfstatic.staah.net/w*500/big_13724_1770764483714.jpeg?k=462NTovM0JIR42r3AinAVOw7FHLRY5ODI= 500w" sizes="100vw" /> 2765 <div class="overlay-content d-flex flex-column"> 2766 <h3 class="room-title" title="Munmo" id="section-munmo">Munmo</h3> 2767 <div class="button-group d-flex"> 2768 <a href="munmo.html" class="btn-secondary">View Detail</a> 2769 <a href="https://www.swiftbook.io/inst/#home?propertyId=462NTovM0JIR42r3AinAVOw7FHLRY5ODI=&JDRN=Y&RoomID=239041&wType=2" class="btn-primary" 2770 target="_blank">Book Now</a> 2771 </div> 2772 </div> 2773 </div> 2774 </div> 2775 <div class="swiper-slide " role="listitem"> 2776 <div class="accommodation-card"> 2777 <img loading="lazy" src="https://cfstatic.staah.net/w*500/big_13724_1770764116405.jpeg?k=462NTovM0JIR42r3AinAVOw7FHLRY5ODI=" alt="Sumla II" data-src="https://cfstatic.staah.net/w*500/big_13724_1770764116405.jpeg?k=462NTovM0JIR42r3AinAVOw7FHLRY5ODI=" 2778 class="card-image swiper-lazy" width="400" height="250" decoding="async" srcset="https://cfstatic.staah.net/w*480/big_13724_1770764116405.jpeg?k=462NTovM0JIR42r3AinAVOw7FHLRY5ODI= 480w, https://cfstatic.staah.net/w*500/big_13724_1770764116405.jpeg?k=462NTovM0JIR42r3AinAVOw7FHLRY5ODI= 500w" sizes="100vw" /> 2779 <div class="overlay-content d-flex flex-column"> 2780 <h3 class="room-title" title="Sumla II" id="section-sumla-ii">Sumla II</h3> 2781 <div class="button-group d-flex"> 2782 <a href="sumla-ii.html" class="btn-secondary">View Detail</a> 2783 <a href="https://www.swiftbook.io/inst/#home?propertyId=462NTovM0JIR42r3AinAVOw7FHLRY5ODI=&JDRN=Y&RoomID=239042&wType=2" class="btn-primary" 2784 target="_blank">Book Now</a> 2785 </div> 2786 </div> 2787 </div> 2788 </div> 2789 <div class="swiper-slide " role="listitem"> 2790 <div class="accommodation-card"> 2791 <img loading="lazy" src="https://cfstatic.staah.net/w*500/big_13724_1770764443197.jpeg?k=462NTovM0JIR42r3AinAVOw7FHLRY5ODI=" alt="Palahañitan" data-src="https://cfstatic.staah.net/w*500/big_13724_1770764443197.jpeg?k=462NTovM0JIR42r3AinAVOw7FHLRY5ODI=" 2792 class="card-image swiper-lazy" width="400" height="250" decoding="async" srcset="https://cfstatic.staah.net/w*480/big_13724_1770764443197.jpeg?k=462NTovM0JIR42r3AinAVOw7FHLRY5ODI= 480w, https://cfstatic.staah.net/w*500/big_13724_1770764443197.jpeg?k=462NTovM0JIR42r3AinAVOw7FHLRY5ODI= 500w" sizes="100vw" /> 2793 <div class="overlay-content d-flex flex-column"> 2794 <h3 class="room-title" title="Palahañitan" id="section-palaha-itan">Palahañitan</h3> 2795 <div class="button-group d-flex"> 2796 <a href="palahañitan.html" class="btn-secondary">View Detail</a> 2797 <a href="https://www.swiftbook.io/inst/#home?propertyId=462NTovM0JIR42r3AinAVOw7FHLRY5ODI=&JDRN=Y&RoomID=239063&wType=2" class="btn-primary" 2798 target="_blank">Book Now</a> 2799 </div> 2800 </div> 2801 </div> 2802 </div> 2803 <div class="swiper-slide " role="listitem"> 2804 <div class="accommodation-card"> 2805 <img loading="lazy" src="https://cfstatic.staah.net/w*500/big_13724_1770763782299.jpeg?k=462NTovM0JIR42r3AinAVOw7FHLRY5ODI=" alt="Itaw" data-src="https://cfstatic.staah.net/w*500/big_13724_1770763782299.jpeg?k=462NTovM0JIR42r3AinAVOw7FHLRY5ODI=" 2806 class="card-image swiper-lazy" width="400" height="250" decoding="async" srcset="https://cfstatic.staah.net/w*480/big_13724_1770763782299.jpeg?k=462NTovM0JIR42r3AinAVOw7FHLRY5ODI= 480w, https://cfstatic.staah.net/w*500/big_13724_1770763782299.jpeg?k=462NTovM0JIR42r3AinAVOw7FHLRY5ODI= 500w" sizes="100vw" /> 2807 <div class="overlay-content d-flex flex-column"> 2808 <h3 class="room-title" title="Itaw" id="section-itaw">Itaw</h3> 2809 <div class="button-group d-flex"> 2810 <a href="itaw.html" class="btn-secondary">View Detail</a> 2811 <a href="https://www.swiftbook.io/inst/#home?propertyId=462NTovM0JIR42r3AinAVOw7FHLRY5ODI=&JDRN=Y&RoomID=238873&wType=2" class="btn-primary" 2812 target="_blank">Book Now</a> 2813 </div> 2814 </div> 2815 </div> 2816 </div> 2817 <div class="swiper-slide " role="listitem"> 2818 <div class="accommodation-card"> 2819 <img loading="lazy" src="https://cfstatic.staah.net/w*500/big_13724_1770763612081.jpeg?k=462NTovM0JIR42r3AinAVOw7FHLRY5ODI=" alt="Idaud" data-src="https://cfstatic.staah.net/w*500/big_13724_1770763612081.jpeg?k=462NTovM0JIR42r3AinAVOw7FHLRY5ODI=" 2820 class="card-image swiper-lazy" width="400" height="250" decoding="async" srcset="https://cfstatic.staah.net/w*480/big_13724_1770763612081.jpeg?k=462NTovM0JIR42r3AinAVOw7FHLRY5ODI= 480w, https://cfstatic.staah.net/w*500/big_13724_1770763612081.jpeg?k=462NTovM0JIR42r3AinAVOw7FHLRY5ODI= 500w" sizes="100vw" /> 2821 <div class="overlay-content d-flex flex-column"> 2822 <h3 class="room-title" title="Idaud" id="section-idaud">Idaud</h3> 2823 <div class="button-group d-flex"> 2824 <a href="idaud.html" class="btn-secondary">View Detail</a> 2825 <a href="https://www.swiftbook.io/inst/#home?propertyId=462NTovM0JIR42r3AinAVOw7FHLRY5ODI=&JDRN=Y&RoomID=239065&wType=2" class="btn-primary" 2826 target="_blank">Book Now</a> 2827 </div> 2828 </div> 2829 </div> 2830 </div> 2831 <div class="swiper-slide " role="listitem"> 2832 <div class="accommodation-card"> 2833 <img loading="lazy" src="https://cfstatic.staah.net/w*500/big_13724_1770763935453.jpeg?k=462NTovM0JIR42r3AinAVOw7FHLRY5ODI=" alt="Avayat" data-src="https://cfstatic.staah.net/w*500/big_13724_1770763935453.jpeg?k=462NTovM0JIR42r3AinAVOw7FHLRY5ODI=" 2834 class="card-image swiper-lazy" width="400" height="250" decoding="async" srcset="https://cfstatic.staah.net/w*480/big_13724_1770763935453.jpeg?k=462NTovM0JIR42r3AinAVOw7FHLRY5ODI= 480w, https://cfstatic.staah.net/w*500/big_13724_1770763935453.jpeg?k=462NTovM0JIR42r3AinAVOw7FHLRY5ODI= 500w" sizes="100vw" /> 2835 <div class="overlay-content d-flex flex-column"> 2836 <h3 class="room-title" title="Avayat" id="section-avayat">Avayat</h3> 2837 <div class="button-group d-flex"> 2838 <a href="avayat.html" class="btn-secondary">View Detail</a> 2839 <a href="https://www.swiftbook.io/inst/#home?propertyId=462NTovM0JIR42r3AinAVOw7FHLRY5ODI=&JDRN=Y&RoomID=239064&wType=2" class="btn-primary" 2840 target="_blank">Book Now</a> 2841 </div> 2842 </div> 2843 </div> 2844 </div> 2845 <div class="swiper-slide " role="listitem"> 2846 <div class="accommodation-card"> 2847 <img loading="lazy" src="https://cfstatic.staah.net/w*500/big_13724_1770764304300.jpeg?k=462NTovM0JIR42r3AinAVOw7FHLRY5ODI=" alt="Valugan I" data-src="https://cfstatic.staah.net/w*500/big_13724_1770764304300.jpeg?k=462NTovM0JIR42r3AinAVOw7FHLRY5ODI=" 2848 class="card-image swiper-lazy" width="400" height="250" decoding="async" srcset="https://cfstatic.staah.net/w*480/big_13724_1770764304300.jpeg?k=462NTovM0JIR42r3AinAVOw7FHLRY5ODI= 480w, https://cfstatic.staah.net/w*500/big_13724_1770764304300.jpeg?k=462NTovM0JIR42r3AinAVOw7FHLRY5ODI= 500w" sizes="100vw" /> 2849 <div class="overlay-content d-flex flex-column"> 2850 <h3 class="room-title" title="Valugan I" id="section-valugan-i">Valugan I</h3> 2851 <div class="button-group d-flex"> 2852 <a href="valugan-i.html" class="btn-secondary">View Detail</a> 2853 <a href="https://www.swiftbook.io/inst/#home?propertyId=462NTovM0JIR42r3AinAVOw7FHLRY5ODI=&JDRN=Y&RoomID=242051&wType=2" class="btn-primary" 2854 target="_blank">Book Now</a> 2855 </div> 2856 </div> 2857 </div> 2858 </div> 2859 <div class="swiper-slide " role="listitem"> 2860 <div class="accommodation-card"> 2861 <img loading="lazy" src="https://cfstatic.staah.net/w*500/big_13724_1770764395698.jpeg?k=462NTovM0JIR42r3AinAVOw7FHLRY5ODI=" alt="Valugan II" data-src="https://cfstatic.staah.net/w*500/big_13724_1770764395698.jpeg?k=462NTovM0JIR42r3AinAVOw7FHLRY5ODI=" 2862 class="card-image swiper-lazy" width="400" height="250" decoding="async" srcset="https://cfstatic.staah.net/w*480/big_13724_1770764395698.jpeg?k=462NTovM0JIR42r3AinAVOw7FHLRY5ODI= 480w, https://cfstatic.staah.net/w*500/big_13724_1770764395698.jpeg?k=462NTovM0JIR42r3AinAVOw7FHLRY5ODI= 500w" sizes="100vw" /> 2863 <div class="overlay-content d-flex flex-column"> 2864 <h3 class="room-title" title="Valugan II" id="section-valugan-ii">Valugan II</h3> 2865 <div class="button-group d-flex"> 2866 <a href="valugan-ii.html" class="btn-secondary">View Detail</a> 2867 <a href="https://www.swiftbook.io/inst/#home?propertyId=462NTovM0JIR42r3AinAVOw7FHLRY5ODI=&JDRN=Y&RoomID=242052&wType=2" class="btn-primary" 2868 target="_blank">Book Now</a> 2869 </div> 2870 </div> 2871 </div> 2872 </div> 2873 <div class="swiper-slide " role="listitem"> 2874 <div class="accommodation-card"> 2875 <img loading="lazy" src="https://cfstatic.staah.net/w*500/big_13724_1770764772266.jpeg?k=462NTovM0JIR42r3AinAVOw7FHLRY5ODI=" alt="Cuvi I" data-src="https://cfstatic.staah.net/w*500/big_13724_1770764772266.jpeg?k=462NTovM0JIR42r3AinAVOw7FHLRY5ODI=" 2876 class="card-image swiper-lazy" width="400" height="250" decoding="async" srcset="https://cfstatic.staah.net/w*480/big_13724_1770764772266.jpeg?k=462NTovM0JIR42r3AinAVOw7FHLRY5ODI= 480w, https://cfstatic.staah.net/w*500/big_13724_1770764772266.jpeg?k=462NTovM0JIR42r3AinAVOw7FHLRY5ODI= 500w" sizes="100vw" /> 2877 <div class="overlay-content d-flex flex-column"> 2878 <h3 class="room-title" title="Cuvi I" id="section-cuvi-i">Cuvi I</h3> 2879 <div class="button-group d-flex"> 2880 <a href="cuvi-i.html" class="btn-secondary">View Detail</a> 2881 <a href="https://www.swiftbook.io/inst/#home?propertyId=462NTovM0JIR42r3AinAVOw7FHLRY5ODI=&JDRN=Y&RoomID=242053&wType=2" class="btn-primary" 2882 target="_blank">Book Now</a> 2883 </div> 2884 </div> 2885 </div> 2886 </div> 2887 <div class="swiper-slide " role="listitem"> 2888 <div class="accommodation-card"> 2889 <img loading="lazy" src="https://cfstatic.staah.net/w*500/big_13724_1770764735607.jpeg?k=462NTovM0JIR42r3AinAVOw7FHLRY5ODI=" alt="Cuvi II" data-src="https://cfstatic.staah.net/w*500/big_13724_1770764735607.jpeg?k=462NTovM0JIR42r3AinAVOw7FHLRY5ODI=" 2890 class="card-image swiper-lazy" width="400" height="250" decoding="async" srcset="https://cfstatic.staah.net/w*480/big_13724_1770764735607.jpeg?k=462NTovM0JIR42r3AinAVOw7FHLRY5ODI= 480w, https://cfstatic.staah.net/w*500/big_13724_1770764735607.jpeg?k=462NTovM0JIR42r3AinAVOw7FHLRY5ODI= 500w" sizes="100vw" /> 2891 <div class="overlay-content d-flex flex-column"> 2892 <h3 class="room-title" title="Cuvi II" id="section-cuvi-ii">Cuvi II</h3> 2893 <div class="button-group d-flex"> 2894 <a href="cuvi-ii.html" class="btn-secondary">View Detail</a> 2895 <a href="https://www.swiftbook.io/inst/#home?propertyId=462NTovM0JIR42r3AinAVOw7FHLRY5ODI=&JDRN=Y&RoomID=242054&wType=2" class="btn-primary" 2896 target="_blank">Book Now</a> 2897 </div> 2898 </div> 2899 </div> 2900 </div> 2901 <div class="swiper-slide " role="listitem"> 2902 <div class="accommodation-card"> 2903 <img loading="lazy" src="https://cfstatic.staah.net/w*500/big_13724_1770764592774.jpeg?k=462NTovM0JIR42r3AinAVOw7FHLRY5ODI=" alt="Ayukayam I" data-src="https://cfstatic.staah.net/w*500/big_13724_1770764592774.jpeg?k=462NTovM0JIR42r3AinAVOw7FHLRY5ODI=" 2904 class="card-image swiper-lazy" width="400" height="250" decoding="async" srcset="https://cfstatic.staah.net/w*480/big_13724_1770764592774.jpeg?k=462NTovM0JIR42r3AinAVOw7FHLRY5ODI= 480w, https://cfstatic.staah.net/w*500/big_13724_177076
29044592774.jpeg?k=462NTovM0JIR42r3AinAVOw7FHLRY5ODI= 500w" sizes="100vw" /> 2905 <div class="overlay-content d-flex flex-column"> 2906 <h3 class="room-title" title="Ayukayam I" id="section-ayukayam-i">Ayukayam I</h3> 2907 <div class="button-group d-flex"> 2908 <a href="ayukayam-i.html" class="btn-secondary">View Detail</a> 2909 <a href="https://www.swiftbook.io/inst/#home?propertyId=462NTovM0JIR42r3AinAVOw7FHLRY5ODI=&JDRN=Y&RoomID=242055&wType=2" class="btn-primary" 2910 target="_blank">Book Now</a> 2911 </div> 2912 </div> 2913 </div> 2914 </div> 2915 <div class="swiper-slide " role="listitem"> 2916 <div class="accommodation-card"> 2917 <img loading="lazy" src="https://cfstatic.staah.net/w*500/big_13724_1770764658409.jpeg?k=462NTovM0JIR42r3AinAVOw7FHLRY5ODI=" alt="Ayukayam II" data-src="https://cfstatic.staah.net/w*500/big_13724_1770764658409.jpeg?k=462NTovM0JIR42r3AinAVOw7FHLRY5ODI=" 2918 class="card-image swiper-lazy" width="400" height="250" decoding="async" srcset="https://cfstatic.staah.net/w*480/big_13724_1770764658409.jpeg?k=462NTovM0JIR42r3AinAVOw7FHLRY5ODI= 480w, https://cfstatic.staah.net/w*500/big_13724_1770764658409.jpeg?k=462NTovM0JIR42r3AinAVOw7FHLRY5ODI= 500w" sizes="100vw" /> 2919 <div class="overlay-content d-flex flex-column"> 2920 <h3 class="room-title" title="Ayukayam II" id="section-ayukayam-ii">Ayukayam II</h3> 2921 <div class="button-group d-flex"> 2922 <a href="ayukayam-ii.html" class="btn-secondary">View Detail</a> 2923 <a href="https://www.swiftbook.io/inst/#home?propertyId=462NTovM0JIR42r3AinAVOw7FHLRY5ODI=&JDRN=Y&RoomID=242056&wType=2" class="btn-primary" 2924 target="_blank">Book Now</a> 2925 </div> 2926 </div> 2927 </div> 2928 </div> 2929 </div> 2930 <div class="swiper-button-prev"><i class="bi bi-arrow-left"></i></div> 2931 <div class="swiper-button-next"><i class="bi bi-arrow-right"></i></div> 2932 </div> 2933 2934<!-- Facilities Gallery Section --> 2935<section class="facilities-gallery-section"> 2936 <div class="container"> 2937 <div class="facilities-gallery-header text-center"> 2938 <a href="./gallery.html" class="d-inline-block mb-2">View Gallery<i 2939 class="ms-2 bi bi-arrow-90deg-right"></i></a> 2940 <h2 class="facilities-title gsap-slide-up" id="section-our-gallery">Our Gallery</h2> 2941 </div> 2942 <div class="facilities-gallery-images" id="facilities-gallery"> 2943 <!-- First Row --> 2944 <div class="facility-image-wrapper facility-image-left gsap-slide-down"> 2945 <img loading="lazy" src="https://cfstatic.staah.net/w*500/big_13724_1773731388746.jpeg?k=462NTovM0JIR42r3AinAVOw7FHLRY5ODI=" 2946 alt="IMG_9383" class="facility-image" decoding="async" srcset="https://cfstatic.staah.net/w*480/big_13724_1773731388746.jpeg?k=462NTovM0JIR42r3AinAVOw7FHLRY5ODI= 480w, https://cfstatic.staah.net/w*500/big_13724_1773731388746.jpeg?k=462NTovM0JIR42r3AinAVOw7FHLRY5ODI= 500w" sizes="100vw" /> 2947 </div> 2948 <div class="facility-image-wrapper facility-image-center gsap-slide-up"> 2949 <img loading="lazy" src="https://cfstatic.staah.net/w*500/big_13724_1770763612081.jpeg?k=462NTovM0JIR42r3AinAVOw7FHLRY5ODI=" 2950 alt="ST_Fundacion Pacita_Rooms_0112" class="facility-image" decoding="async" srcset="https://cfstatic.staah.net/w*480/big_13724_1770763612081.jpeg?k=462NTovM0JIR42r3AinAVOw7FHLRY5ODI= 480w, https://cfstatic.staah.net/w*500/big_13724_1770763612081.jpeg?k=462NTovM0JIR42r3AinAVOw7FHLRY5ODI= 500w" sizes="100vw" /> 2951 </div> 2952 <div class="facility-image-wrapper facility-image-right gsap-slide-down"> 2953 <img loading="lazy" src="https://cfstatic.staah.net/w*500/big_13724_1770763782299.jpeg?k=462NTovM0JIR42r3AinAVOw7FHLRY5ODI=" 2954 alt="ST_Fundacion Pacita_Cam_0950" class="facility-image" decoding="async" srcset="https://cfstatic.staah.net/w*480/big_13724_1770763782299.jpeg?k=462NTovM0JIR42r3AinAVOw7FHLRY5ODI= 480w, https://cfstatic.staah.net/w*500/big_13724_1770763782299.jpeg?k=462NTovM0JIR42r3AinAVOw7FHLRY5ODI= 500w" sizes="100vw" /> 2955 </div> 2956 </div> 2957 </div> 2958</section> 2959 2960 <footer class="footer" role="contentinfo"> 2961 <div class="container"> 2962 <div class="row"> 2963 <div class="col-md-6 col-lg-4 text-center order-2 order-lg-1 mb-4 mb-md-0"> 2964 <h3 class="footer-section-title" id="section-address">Address</h3> 2965 <address class="footer-address"> 2966 <p>Sitio Tukon, Chanarian-Tukon, Basco, Batanes</p> 2967 <p> 2968 Philippines </p> 2969 </address> 2970 <div class="footer-contact-info mt-4"> 2971 <h3 class="footer-section-title" id="section-contact-us">Contact Us</h3> 2972 <p class="contact-line">
2973 <span class="contact-label">T.</span> 2974 <a href="tel:09209720014">09209720014</a> 2975 </p> 2976 <p class="contact-line"> 2977 <span class="contact-label">M.</span> 2978 <a href="mailto:inquiries@fundacionpacita.com">inquiries@fundacionpacita.com</a> 2979 </p> 2980 </div> 2981 </div> 2982 <div class="col-lg-4 text-center border-l border-r order-1 order-lg-2 mb-4 mt-lg-0"> 2983 <div class="footer-brand"> 2984 <div class="logo"> 2985 <a href="index.html" aria-label="Homepage"> 2986 <img loading="lazy" src="https://homesweb.staah.net/13724/1770173557_13724_FP_LOGO_2.png" alt="Fundacion Pacita Logo" decoding="async" /> 2987 </a> 2988 </div> 2989 <div class="footer-social"> 2990 <a href="https://www.facebook.com/fundacionpacita/" target="_blank" aria-label="Facebook" 2991 class="social-icon"> 2992 <i class="bi bi-facebook"></i> 2993 </a> 2994 <a href="https://www.instagram.com/fundacionpacita/" target="_blank" aria-label="Instagram" 2995 class="social-icon"> 2996 <i class="bi bi-instagram"></i> 2997 </a> 2998 </div> 2999 </div> 3000 </div> 3001 <div class="col-md-6 col-lg-4 text-start order-2 order-md-3 ps-4 ps-lg-5"> 3002 <h3 class="footer-section-title text-center" id="section-quick-links">Quick Links</h3> 3003 <div class="quick-links-row"> 3004 <ul class="footer-links list-unstyled m-0 text-center"> 3005 <li> 3006 <a href="index.html" > 3007 Home 3008 </a> 3009 </li> 3010 <li> 3011 <a href="accommodation.html" > 3012 Rooms 3013 </a> 3014 </li> 3015 <li> 3016 <a href="gallery.html" > 3017 Gallery 3018 </a> 3019 </li> 3020 <li> 3021 <a href="contact-us.html" > 3022 Contact 3023 </a> 3024 </li> 3025 <li> 3026 <a href="javascript:show_newsletter()" aria-current="page" id="join-our-newsletter"> 3027 Join Our Newsletter 3028 </a> 3029 </li> 3030 </ul> 3031 </div> 3032 </div> 3033 </div><div class="footer-bottom mt-4 mt-sm-5"> 3034 <p class="mb-0 text-center"> 3035 © Copyright 2026 | Designed & Developed by <a target="_blank" 3036 href="https://www.staah.com" class="footer-link">STAAH</a> | Powering your 3037 Online Revenue 3038 <a href="javascript:show_policy()" class="footer-link">Privacy Policy</a> 3039 </p> 3040 </div> 3041
3041<script> 3042 (function () { 3043 var script = document.currentScript; 3044 var footer = script && script.closest ? script.closest(".footer") : null; 3045 if (!footer) return; 3046 3047 function parseColor(value) { 3048 if (!value) return null; 3049 var color = String(value).trim(); 3050 var hexMatch = color.match(/^#([0-9a-f]{3}|[0-9a-f]{6})$/i); 3051 if (hexMatch) { 3052 var hex = hexMatch[1]; 3053 if (hex.length === 3) { 3054 hex = hex.split("").map(function (part) { return part + part; }).join(""); 3055 } 3056 return { 3057 r: parseInt(hex.slice(0, 2), 16), 3058 g: parseInt(hex.slice(2, 4), 16), 3059 b: parseInt(hex.slice(4, 6), 16) 3060 }; 3061 } 3062 3063 var rgbMatch = color.match(/^rgba?\((\d+),\s*(\d+),\s*(\d+)/i); 3064 if (!rgbMatch) return null; 3065 return { 3066 r: parseInt(rgbMatch[1], 10), 3067 g: parseInt(rgbMatch[2], 10), 3068 b: parseInt(rgbMatch[3], 10) 3069 }; 3070 } 3071 3072 function toLinear(channel) { 3073 var normalized = channel / 255; 3074 return normalized <= 0.03928 3075 ? normalized / 12.92 3076 : Math.pow((normalized + 0.055) / 1.055, 2.4); 3077 } 3078 3079 function luminance(rgb) { 3080 return (0.2126 * toLinear(rgb.r)) + (0.7152 * toLinear(rgb.g)) + (0.0722 * toLinear(rgb.b)); 3081 } 3082 3083 function contrast(colorA, colorB) { 3084 var lumA = luminance(colorA); 3085 var lumB = luminance(colorB); 3086 var lighter = Math.max(lumA, lumB); 3087 var darker = Math.min(lumA, lumB); 3088 return (lighter + 0.05) / (darker + 0.05); 3089 } 3090 3091 function toCss(rgb) { 3092 return "rgb(" + rgb.r + ", " + rgb.g + ", " + rgb.b + ")"; 3093 } 3094 3095 function toAlpha(rgb, alpha) { 3096 return "rgba(" + rgb.r + ", " + rgb.g + ", " + rgb.b + ", " + alpha + ")"; 3097 } 3098 3099 var footerStyles = getComputedStyle(footer); 3100 var bg = parseColor(footerStyles.backgroundColor); 3101 if (!bg) return; 3102 3103 var rootStyles = getComputedStyle(document.documentElement); 3104 var darkText = parseColor(rootStyles.getPropertyValue("--color-text-heading")) || { r: 51, g: 29, b: 44 }; 3105 var brandAccent = parseColor(rootStyles.getPropertyValue("--color-brand-primary")) || darkText; 3106 var whiteText = { r: 255, g: 255, b: 255 }; 3107 3108 var whiteContrast = contrast(bg, whiteText); 3109 var darkContrast = contrast(bg, darkText); 3110 3111 if (whiteContrast >= 4.5 || darkContrast <= whiteContrast) { 3112 return; 3113 } 3114 3115 var accentColor = contrast(bg, brandAccent) >= 3 ? brandAccent : darkText; 3116 var darkTextCss = toCss(darkText); 3117 3118 footer.style.setProperty("--footer-text-color", darkTextCss); 3119 footer.style.setProperty("--footer-heading-color", darkTextCss); 3120 footer.style.setProperty("--footer-link-color", darkTextCss); 3121 footer.style.setProperty("--footer-icon-color", darkTextCss); 3122 footer.style.setProperty("--footer-accent-color", toCss(accentColor)); 3123 footer.style.setProperty("--footer-border-color", toAlpha(darkText, 0.18)); 3124 })(); 3125 </script>
3125 3126<p class="isw-content-freshness">Last updated <time datetime="2026-10-07">7 October 2026</time> · Published by <span class="isw-content-author">Fundacion Pacita</span></p></footer> </div> 3127 </main> 3128 3129
3129<script> 3130 // Initialize modal event handlers once 3131 document.addEventListener('DOMContentLoaded', function () { 3132 var policyModal = document.getElementById('policyModal'); 3133 if (policyModal) { 3134 // Handle modal show event 3135 policyModal.addEventListener('shown.bs.modal', function () { 3136 var modalBody = policyModal.querySelector('.modal-body'); 3137 3138 // Pause ScrollSmoother if it exists (prevents scroll interference) 3139 if (typeof ScrollSmoother !== 'undefined') { 3140 try { 3141 var smoother = ScrollSmoother.get(); 3142 if (smoother) { 3143 smoother.paused(true); 3144 } 3145 } catch (e) { 3146 // ScrollSmoother not initialized yet 3147 } 3148 } 3149 3150 // Ensure modal body is scrollable 3151 if (modalBody) { 3152 modalBody.style.overflowY = 'auto'; 3153 modalBody.style.maxHeight = 'calc(100vh - 140px)'; 3154 } 3155 }); 3156 3157 // Handle modal hide event 3158 policyModal.addEventListener('hidden.bs.modal', function () { 3159 // Resume ScrollSmoother if it exists 3160 if (typeof ScrollSmoother !== 'undefined') { 3161 try { 3162 var smoother = ScrollSmoother.get(); 3163 if (smoother) { 3164 smoother.paused(false); 3165 } 3166 } catch (e) { 3167 // ScrollSmoother not initialized yet 3168 } 3169 } 3170 }); 3171 } 3172 }); 3173 3174 function show_policy() { 3175 setTimeout(function () { 3176 var policyModal = document.getElementById('policyModal'); 3177 if (!policyModal) return; 3178 var modalTitle = policyModal.querySelector('.modal-title'); 3179 var modalBody = policyModal.querySelector('.modal-body'); 3180 var propertyPolicy = document.getElementById('property_policy'); 3181 if (!modalBody || !propertyPolicy) return; 3182 3183 if (modalTitle) modalTitle.textContent = 'Privacy Policy'; 3184 while (modalBody.firstChild) modalBody.removeChild(modalBody.firstChild); 3185 3186 // Prefer <template> content (inert); fall back to a hidden div's HTML. 3187 var sourceHtml = propertyPolicy.tagName === 'TEMPLATE' 3188 ? propertyPolicy.innerHTML 3189 : propertyPolicy.innerHTML; 3190 3191 var tempDiv = document.createElement('div'); 3192 tempDiv.innerHTML = sourceHtml; 3193 3194 // Hoist CSS out of the flow so it cannot render as visible text 3195 // (CMS/Word often wraps <style> inside <p>). 3196 var cssParts = []; 3197 tempDiv.querySelectorAll('style').forEach(function (el) { 3198 var css = (el.textContent || '').trim(); 3199 if (css) cssParts.push(css); 3200 el.remove(); 3201 }); 3202 tempDiv.querySelectorAll('script, iframe, object, embed, form').forEach(function (el) { 3203 el.remove(); 3204 }); 3205 3206 if (cssParts.length) { 3207 var styleEl = document.createElement('style'); 3208 styleEl.setAttribute('data-policy-style', '1'); 3209 styleEl.textContent = cssParts.join('\n'); 3210 modalBody.appendChild(styleEl); 3211 } 3212 while (tempDiv.firstChild) modalBody.appendChild(tempDiv.firstChild); 3213 3214 var modal = new bootstrap.Modal(policyModal); 3215 modal.show(); 3216 }, 100); 3217 } 3218 </script>
3218 3219
3219<script> 3220 (function () { 3221 var pendingVideoSrc = ''; 3222 var pendingIsDirectVideo = false; 3223 var prevBodyOverflow = ''; 3224 var prevBodyPaddingRight = ''; 3225 3226 function initVideoModal() { 3227 var modalEl = document.getElementById('myVideoModal'); 3228 var iframeEl = modalEl ? modalEl.querySelector('#video') : null; 3229 if (!modalEl || !iframeEl) return; 3230 3231 // IMPORTANT: Additional-page HTML injects the modal inside transformed wrappers. 3232 // Move modal to <body> so it can truly center and overlay the page. 3233 try { 3234 if (modalEl.parentElement !== document.body) { 3235 document.body.appendChild(modalEl); 3236 } 3237 } catch (e) { } 3238 3239 // Ensure Bootstrap 5 modal structure behaves nicely even if injected HTML is legacy 3240 modalEl.style.display = ''; 3241 modalEl.classList.add('modal'); 3242 var dialogEl = modalEl.querySelector('.modal-dialog'); 3243 if (dialogEl) { 3244 dialogEl.classList.add('modal-dialog-centered', 'modal-lg'); 3245 } 3246 var bodyEl = modalEl.querySelector('.modal-body'); 3247 if (bodyEl) { 3248 bodyEl.style.padding = '0'; 3249 } 3250 3251 // Scoped CSS for responsive, centered video 3252 if (!document.getElementById('theme200-video-modal-css')) { 3253 var st = document.createElement('style'); 3254 st.id = 'theme200-video-modal-css'; 3255 st.textContent = 3256 '#myVideoModal{z-index:20000;position:fixed;inset:0;}' + 3257 '#myVideoModal:not(.show){display:none !important;}' + 3258 '#myVideoModal.show{display:flex !important;align-items:center;justify-content:center;padding:16px;}' + 3259 // 'body.theme200-modal-open{overflow:hidden !important;}' + 3260 '#myVideoModal .modal-dialog{max-width:min(960px,95vw);margin:0 !important;width:100%;}' + 3261 '#myVideoModal .modal-content{background:#000;border-radius:12px;}' + 3262 '#myVideoModal .embed-responsive{width:100%;}' + 3263 '#myVideoModal iframe#video,#myVideoModal video.direct-video{display:block;width:100%;aspect-ratio:16/9;height:auto;background:#000;border:0;}' + 3264 '#myVideoModal .close,[data-bs-dismiss=\"modal\"]{position:absolute;right:-12px;top:-12px;width:40px;height:40px;border-radius:999px;background:rgba(0,0,0,.8);color:#fff;opacity:1;display:flex;align-items:center;justify-content:center;border:1px solid rgba(255,255,255,.25);}'; 3265 document.head.appendChild(st); 3266 } 3267 3268 function lockScroll() { 3269 try { 3270 // prevBodyOverflow = document.body.style.overflow; 3271 prevBodyPaddingRight = document.body.style.paddingRight; 3272 var scrollBarWidth = window.innerWidth - document.documentElement.clientWidth; 3273 // document.body.classList.add('theme200-modal-open'); 3274 // document.body.style.overflow = 'hidden'; 3275 if (scrollBarWidth > 0) document.body.style.paddingRight = scrollBarWidth + 'px'; 3276 } catch (e) { } 3277 } 3278 3279 function unlockScroll() { 3280 try { 3281 // document.body.classList.remove('theme200-modal-open'); 3282 // document.body.style.overflow = prevBodyOverflow || ''; 3283 document.body.style.paddingRight = prevBodyPaddingRight || ''; 3284 } catch (e) { } 3285 } 3286 3287 function ensureScrollUnlockedSoon() { 3288 // Some legacy modal markup paths may not emit hidden.bs.modal on mobile. 3289 // Ensure scroll is restored shortly after any close attempt. 3290 setTimeout(function () { 3291 try { 3292 if (!modalEl.classList.contains('show')) { 3293 unlockScroll(); 3294 } 3295 } catch (e) { 3296 unlockScroll(); 3297 } 3298 }, 80); 3299 } 3300 3301 // Ensure a bootstrap modal instance exists (legacy markup sometimes misses attributes) 3302 var bsModal = null; 3303 if (window.bootstrap && typeof window.bootstrap.Modal === 'function') { 3304 bsModal = window.bootstrap.Modal.getOrCreateInstance(modalEl, { backdrop: true, keyboard: true, focus: true }); 3305 } 3306 3307 var triggers = document.querySelectorAll('.video-btn, img[data-src][data-target="#myVideoModal"], [data-src][data-target="#myVideoModal"]');
3308 triggers.forEach(function (el) { 3309 if (el._videoModalBound) return; 3310 el._videoModalBound = true; 3311 el.setAttribute('data-bs-toggle', 'modal'); 3312 el.setAttribute('data-bs-target', '#myVideoModal'); 3313 el.style.cursor = 'pointer'; 3314 el.addEventListener('click', function () { 3315 var src = (el.getAttribute('data-src') || el.dataset.src || '').trim(); 3316 if (!src) return; 3317 var directVideo = /\.(mp4|webm|ogg|mov)(\?|$)/i.test(src); 3318 if (src.indexOf('youtube.com') !== -1 || src.indexOf('youtu.be') !== -1) { 3319 var vid = (src.match(/(?:youtu\.be\/|youtube\.com\/(?:watch\?v=|embed\/))([A-Za-z0-9_-]{11})/) || [])[1]; 3320 if (vid) src = 'https://www.youtube.com/embed/' + vid + '?autoplay=1&modestbranding=1&showinfo=0'; 3321 } else if (!directVideo) { 3322 src = src + (src.indexOf('?') !== -1 ? '&' : '?') + 'autoplay=1'; 3323 } 3324 pendingVideoSrc = src; 3325 pendingIsDirectVideo = directVideo; 3326 if (bsModal) { 3327 // Ensure consistent centered modal + no scroll even if data attributes are ignored 3328 try { bsModal.show(); } catch (e) { } 3329 } 3330 }); 3331 }); 3332 3333 modalEl.addEventListener('shown.bs.modal', function () { 3334 lockScroll(); 3335 if (pendingVideoSrc) { 3336 if (pendingIsDirectVideo) { 3337 iframeEl.style.display = 'none'; 3338 var existingVideo = modalEl.querySelector('video.direct-video'); 3339 if (existingVideo) existingVideo.remove(); 3340 var videoEl = document.createElement('video'); 3341 videoEl.className = 'direct-video'; 3342 videoEl.src = pendingVideoSrc; 3343 videoEl.autoplay = true; 3344 videoEl.controls = true; 3345 videoEl.playsInline = true; 3346 iframeEl.parentNode.insertBefore(videoEl, iframeEl); 3347 } else { 3348 iframeEl.style.display = ''; 3349 iframeEl.setAttribute('src', pendingVideoSrc); 3350 } 3351 pendingVideoSrc = ''; 3352 } 3353 }); 3354 3355 modalEl.addEventListener('hidden.bs.modal', function () { 3356 iframeEl.removeAttribute('src'); 3357 iframeEl.style.display = ''; 3358 var existingVideo = modalEl.querySelector('video.direct-video'); 3359 if (existingVideo) existingVideo.remove(); 3360 unlockScroll(); 3361 }); 3362 3363 modalEl.addEventListener('hide.bs.modal', function () { 3364 // belt-and-suspenders: start restoring scroll early 3365 ensureScrollUnlockedSoon(); 3366 }); 3367 3368 // Close button(s): legacy markup uses .close + data-dismiss 3369 var closeBtns = modalEl.querySelectorAll('[data-dismiss="modal"], [data-bs-dismiss="modal"], .close'); 3370 closeBtns.forEach(function (btn) { 3371 try { 3372 btn.setAttribute('data-bs-dismiss', 'modal'); 3373 btn.setAttribute('aria-label', 'Close'); 3374 btn.setAttribute('type', 'button'); 3375 btn.style.cursor = 'pointer'; 3376 } catch (e) { } 3377 btn.addEventListener('click', function (e) { 3378 // Fallback: force close even if legacy markup prevents bootstrap auto-dismiss 3379 try { e.preventDefault(); e.stopPropagation(); } catch (err) { } 3380 if (bsModal) { 3381 try { bsModal.hide(); } catch (err2) { } 3382 ensureScrollUnlockedSoon(); 3383 } else { 3384 try { modalEl.classList.remove('show'); modalEl.style.display = 'none'; } catch (err3) { } 3385 unlockScroll(); 3386 } 3387 }, { capture: true }); 3388 }); 3389 3390 // Backdrop click (clicking outside the dialog closes) 3391 modalEl.addEventListener('click', function (e) { 3392 if (e.target !== modalEl) return; 3393 if (bsModal) { 3394 try { bsModal.hide(); } catch (err) { } 3395 ensureScrollUnlockedSoon(); 3396 } 3397 }); 3398 } 3399 3400 if (document.readyState === 'loading') { 3401 document.addEventListener('DOMContentLoaded', initVideoModal); 3402 } else { 3403 initVideoModal(); 3404 } 3405 })(); 3406 </script>
3406 3407 <template id="property_policy"><div data-nosnippet><style type="text/css">@page { margin: 2cm } 3408 h1 { margin-left: 0.02cm; text-indent: -0.02cm; margin-bottom: 0.44cm; direction: ltr; color: #000000; line-height: 103%; text-align: left; page-break-inside: avoid; orphans: 2; widows: 2 } 3409 h1.western { font-family: "Times New Roman", sans-serif; font-size: 12pt } 3410 h1.cjk { font-family: "Times New Roman"; font-size: 12pt } 3411 h1.ctl { font-family: "Times New Roman"; font-size: 14pt; font-weight: normal } 3412 p { margin-left: 0.02cm; text-indent: -0.02cm; margin-bottom: 0.25cm; direction: ltr; color: #000000; line-height: 120%; text-align: left; orphans: 2; widows: 2 } 3413 a:link { so-language: zxx }</style> 3414<p style="margin-left: 0cm; text-indent: 0cm; margin-bottom: 0.38cm; line-height: 108%"><span style="font-family:Arial, serif"><span style="font-size:1.13em;font-size: 13pt"><b>Privacy Policy</b></span></span></p> 3415 3416<p style="margin-left: -0.01cm; margin-bottom: 0.48cm; line-height: 103%"><span style="font-family:Arial, serif">This privacy policy sets out how we use and protects any information that you give us when you use this website. </span></p> 3417 3418<p align="justify" style="margin-left: 0cm; margin-right: 0.08cm; text-indent: 0cm; margin-bottom: 0.49cm; line-height: 99%"><span style="font-family:Arial, serif">We are committed to ensuring that your privacy is protected. Should we ask you to provide certain information by which you can be identified when using this website, then you can be assured that it will only be used in accordance with this privacy statement. </span></p> 3419 3420<p style="margin-left: -0.01cm; margin-bottom: 0.48cm; line-height: 103%"><span style="font-family:Arial, serif">We may change this policy from time to time by updating this page. You should check this page from time to time to ensure that you are happy with any changes. </span></p> 3421 3422<h3 class="western" style="margin-left: -0.01cm" id="section-what-we-collect"><span style="font-family:Arial, serif">What we collect</span><span style="font-family:Arial, serif"><span style="font-weight: normal"> </span></span></h3> 3423 3424<p style="margin-left: -0.01cm; margin-bottom: 0.48cm; line-height: 103%"><span style="font-family:Arial, serif">We may collect the following information: </span></p> 3425 3426<ul> 3427 <li> 3428 <p style="text-indent: 0cm; margin-bottom: 0.02cm; line-height: 103%"><span style="font-family:Arial, serif">name and job title </span></p> 3429 </li> 3430 <li> 3431 <p style="text-indent: 0cm; margin-bottom: 0.02cm; line-height: 103%"><span style="font-family:Arial, serif">contact information including email address </span></p> 3432 </li> 3433 <li> 3434 <p style="text-indent: 0cm; margin-bottom: 0.02cm; line-height: 103%"><span style="font-family:Arial, serif">demographic information such as postcode, preferences and interests </span></p> 3435 </li> 3436</ul> 3437 3438<h3 class="western" style="margin-left: -0.01cm" id="section-what-we-do-with-the-information-we-gather"><span style="font-family:Arial, serif">What we do with the information we gather </span></h3> 3439 3440<p style="margin-left: -0.01cm; margin-bottom: 0.52cm; line-height: 103%"><span style="font-family:Arial, serif">We require this information to understand your needs and provide you with a better service, and for the following reasons: </span></p> 3441 3442<ul> 3443 <li> 3444 <p style="text-indent: 0cm; margin-bottom: 0.02cm; line-height: 103%"><span style="font-family:Arial, serif">Internal record keeping. </span></p> 3445 </li> 3446 <li> 3447 <p style="text-indent: 0cm; margin-bottom: 0.02cm; line-height: 103%"><span style="font-family:Arial, serif">We may use the information to improve our products and services. </span></p> 3448 </li> 3449 <li> 3450 <p style="text-indent: 0cm; margin-bottom: 0.02cm; line-height: 103%"><span style="font-family:Arial, serif">We may periodically send promotional email about new products, special offers or other information which we think you may find interesting using the email address which you have provided, </span><span style="font-family:Arial, serif"><b>to do this you need to opt in for this service</b></span><span style="font-family:Arial, serif">.</span></p> 3451 </li> 3452 <li> 3453 <p style="text-indent: 0cm; margin-bottom: 0.02cm; line-height: 103%"><span style="font-family:Arial, serif">We may contact you by email, phone, or mail. </span></p> 3454 </li> 3455 <li> 3456 <p style="text-indent: 0cm; margin-bottom: 0.48cm; line-height: 103%"><span style="font-family:Arial, serif">We may use the information to customise the website according to your interests. </span></p> 3457 </li> 3458</ul> 3459 3460<h3 class="western" style="margin-left: -0.01cm" id="section-security"><span style="font-family:Arial, serif">Security</span><span style="font-family:Arial, serif"><span style="font-weight: normal"> </span></span></h3> 3461 3462<p style="margin-left: -0.01cm; margin-bottom: 0.48cm; line-height: 103%"><span style="font-family:Arial, serif">We are committed to ensuring that your information is secure. To prevent unauthorised access or disclosure we have put in place suitable physical, electronic and managerial procedures to safeguard and secure the information we collect online. </span></p> 3463 3464<h3 class="western" style="margin-left: -0.01cm" id="section-how-we-use-cookie
3464s"><span style="font-family:Arial, serif">How we use cookies</span><span style="font-family:Arial, serif"><span style="font-weight: normal"> </span></span></h3> 3465 3466<p style="margin-left: 0cm; text-indent: 0cm; margin-bottom: 0.26cm; line-height: 100%"><span style="color:#00000a"><span style="color:#000000"><span style="font-family:Arial, serif">A cookie is an element of data that a website can send to your browser, which may then store it on your system. We use cookies in some of our pages to store your preferences and record session information. The information that we collect is then used to ensure a more personalized service level for our users. Please be assured though that your credit card number will not be saved for security reasons. You must type the credit card number each time you make a purchase.</span></span></span></p> 3467 3468<p style="margin-left: 0cm; text-indent: 0cm; margin-bottom: 0.26cm; line-height: 100%"><span style="color:#00000a"><span style="color:#000000"><span style="font-family:Arial, serif">You can adjust settings on your browser so that you will be notified when you receive a cookie. Please refer to your browser documentation to check if cookies have been enabled on your computer or to request not to receive cookies. As cookies allow you to take advantage of some of the Website’s essential features, we recommend that you accept cookies. For instance, if you block or otherwise reject our cookies, you will not be able to book flights or use any products or services on the Website that require you to log-in.</span></span></span></p> 3469 3470<p style="margin-left: 0cm; text-indent: 0cm; margin-bottom: 0.26cm; line-height: 100%"><span style="color:#00000a"><span style="color:#000000"><span style="font-family:Arial, serif">This information is treated confidentially and will not be shared with anyone outside of the Company unless otherwise stated in this Privacy Policy. We will only use this information to make informed decisions regarding the purchase of online advertising.</span></span></span></p> 3471 3472<h3 class="western" style="margin-left: -0.01cm" id="section-links-to-other-websites"><span style="font-family:Arial, serif">Links to other websites </span></h3> 3473 3474<p style="margin-left: -0.01cm; margin-bottom: 0.48cm; line-height: 103%"><span style="font-family:Arial, serif">Our website may contain links to enable you to visit other websites of interest easily. However, once you have used these links to leave our site, you should note that we do not have any control over that other website. Therefore, we cannot be responsible for the protection and privacy of any information which you provide whilst visiting such sites and such sites are not governed by this privacy statement. You should exercise caution and look at the privacy statement applicable to the website in question. </span></p> 3475 3476<h3 class="western" style="margin-left: -0.01cm" id="section-controlling-your-personal-information"><span style="font-family:Arial, serif">Controlling your personal information </span></h3> 3477 3478<p style="margin-left: -0.01cm; margin-bottom: 0.52cm; line-height: 103%"><span style="font-family:Arial, serif">You may choose to restrict the collection or use of your personal information in the following ways: </span></p> 3479 3480<p style="margin-left: -0.01cm; margin-bottom: 0.48cm; line-height: 103%"><span style="font-family:Arial, serif">We will not sell, distribute or lease your personal information to third parties unless we have your permission or are required by law to do so. </span></p> 3481 3482<p style="margin-left: -0.01cm; margin-bottom: 0.48cm; line-height: 103%"><span style="font-family:Arial, serif">You may request details of personal information which we hold about you under the Data Protection Act 1998 </span></p> 3483 3484<p style="margin-left: -0.01cm; margin-bottom: 0.48cm; line-height: 103%"><span style="font-family:Arial, serif">If you believe that any information we are holding on you is incorrect or incomplete, please write to or email us as soon as possible, at the above address. We will promptly correct any information found to be incorrect.</span></p></div></template> 3485 3486 <div id="policyModal" class="modal fade" tabindex="-1" role="dialog" aria-labelledby="policyModalLabel" 3487 aria-hidden="true"> 3488 <div class="modal-dialog modal-dialog-scrollable modal-xl"> 3489 <div class="modal-content"> 3490 <div class="modal-header"> 3491 <h4 class="modal-title" id="policyModalLabel"></h4> 3492 <button type="button" class="close bg-transparent border-0 me-0 ms-auto" data-bs-dismiss="modal" 3493 aria-label="Close"> 3494 <i class="bi bi-x-lg"></i> 3495 </button> 3496 </div> 3497 <div class="modal-body clearfix"> </div> 3498 </div> 3499 </div> 3500 </div> 3501 3502
3502<script> 3503 var STAAH_NEWSLETTER_POST_URL = 'https://newsletter.staah.net/newsletter_registration.php'; 3504 3505 function resetStaahNewsletterForm() { 3506 var fn = document.getElementById('nsl_fname'); 3507 if (!fn) return; 3508 document.getElementById('nsl_fname').value = ''; 3509 document.getElementById('nsl_lname').value = ''; 3510 document.getElementById('nsl_email').value = ''; 3511 var country = document.getElementById('nsl_country'); 3512 if (country) country.value = 'Default'; 3513 } 3514 3515 function show_newsletter() { 3516 setTimeout(function () { 3517 resetStaahNewsletterForm(); 3518 var newsletterModal = document.getElementById('newsletterModal'); 3519 if (!newsletterModal) return; 3520 var modal = bootstrap.Modal.getOrCreateInstance(newsletterModal); 3521 modal.show(); 3522 }, 100); 3523 } 3524 3525 function validateStaahNewsletterEmail(email) { 3526 return /^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(email); 3527 } 3528 3529 function SubscribeSubmitmainpopup() { 3530 var nsl_fname = (document.getElementById('nsl_fname') || {}).value || ''; 3531 var nsl_lname = (document.getElementById('nsl_lname') || {}).value || ''; 3532 var nsl_email = (document.getElementById('nsl_email') || {}).value || ''; 3533 var nsl_countryEl = document.getElementById('nsl_country'); 3534 var nsl_country = nsl_countryEl ? nsl_countryEl.value : ''; 3535 var propIdEl = document.getElementById('nsl_prop_id'); 3536 var typeEl = document.getElementById('nsl_prop_type'); 3537 var nsl_prop_id = propIdEl ? propIdEl.value : ''; 3538 var nsl_prop_type = typeEl ? typeEl.value : 'Instant'; 3539 3540 nsl_fname = nsl_fname.trim(); 3541 nsl_lname = nsl_lname.trim(); 3542 nsl_email = nsl_email.trim(); 3543 3544 var letters = /^[^\s][-'A-Za-z\u4e00-\u9eff\W'\s_@.\/#&+-]{1,30}$/; 3545 3546 if (nsl_fname === '') { 3547 alert('Please enter first name.'); 3548 return; 3549 } 3550 if (!letters.test(nsl_fname)) { 3551 alert('First name field required only alphabet characters.'); 3552 return; 3553 } 3554 if (nsl_lname === '') { 3555 alert('Please enter the last name.'); 3556 return; 3557 } 3558 if (!letters.test(nsl_lname)) { 3559 alert('Last name field required only alphabet characters.'); 3560 return; 3561 } 3562 if (nsl_email === '') { 3563 alert('Please enter your email id.'); 3564 return; 3565 } 3566 if (!validateStaahNewsletterEmail(nsl_email)) { 3567 alert('Please provide a valid email address!'); 3568 return; 3569 } 3570 if (nsl_country === 'Default') { 3571 alert('Select your country from the list.'); 3572 return; 3573 } 3574 3575 var params = new URLSearchParams(); 3576 params.set('name', nsl_fname + ' ' + nsl_lname); 3577 params.set('email', nsl_email); 3578 params.set('country', nsl_country); 3579 params.set('prop_id', nsl_prop_id); 3580 params.set('prop_type', nsl_prop_type); 3581 3582 var xmlhttp = new XMLHttpRequest(); 3583 xmlhttp.onreadystatechange = function () { 3584 if (xmlhttp.readyState !== 4) return; 3585 var text = (xmlhttp.responseText || '').trim(); 3586 if (xmlhttp.status !== 200) { 3587 alert(text || ('Subscription request failed (' + xmlhttp.status + ').')); 3588 return; 3589 } 3590 if (text === 'success') { 3591 alert('Thank you for subscribing. \n You have now been added to our mailer list.'); 3592 resetStaahNewsletterForm(); 3593 var modalEl = document.getElementById('newsletterModal'); 3594 if (modalEl) { 3595 var inst = bootstrap.Modal.getInstance(modalEl); 3596 if (inst) inst.hide(); 3597 } 3598 } else { 3599 alert(text); 3600 } 3601 }; 3602 xmlhttp.open('POST', STAAH_NEWSLETTER_POST_URL, true); 3603 xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); 3604 xmlhttp.send(params.toString()); 3605 } 3606 3607 document.addEventListener('DOMContentLoaded', function () { 3608 var newsletterModal = document.getElementById('newsletterModal'); 3609 if (newsletterModal) { 3610 newsletterModal.addEventListener('hidden.bs.modal', resetStaahNewsletterForm); 3611 } 3612 }); 3613</script>
3613 3614<div id="newsletterModal" 3615 class="modal fade staah-newsletter-modal staah-newsletter-modal--theme-200" 3616 data-theme-id="200" tabindex="-1" aria-labelledby="newsletterModalLabel" 3617 aria-describedby="newsletterModalDescription" aria-hidden="true"> 3618 <div class="modal-dialog modal-dialog-centered"> 3619 <div class="modal-content"> 3620 <div class="modal-header"> 3621 <h4 class="modal-title" id="newsletterModalLabel">Join Our Newsletter</h4> 3622 <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button> 3623 </div> 3624 <div class="modal-body"> 3625 <form id="ajax-contact-popup" action="https://newsletter.staah.net/newsletter_registration.php" method="post"> 3626 <input type="hidden" id="nsl_prop_id" value="13724"> 3627 <input type="hidden" id="nsl_prop_type" 3628 value="Max"> 3629 <div class="mb-3"> 3630 <label class="visually-hidden" for="nsl_fname">First name</label> 3631 <input type="text" class="form-control" id="nsl_fname" name="nsl_fname" placeholder="First Name" 3632 maxlength="20" autocomplete="given-name"> 3633 </div> 3634 <div class="mb-3"> 3635 <label class="visually-hidden" for="nsl_lname">Last name</label> 3636 <input type="text" class="form-control" id="nsl_lname" name="nsl_lname" placeholder="Last Name" 3637 maxlength="20" autocomplete="family-name"> 3638 </div> 3639 <div class="mb-3"> 3640 <label class="visually-hidden" for="nsl_email">Email</label> 3641 <input type="text" class="form-control" id="nsl_email" name="nsl_email" placeholder="Email" 3642 maxlength="50" autocomplete="email" inputmode="email"> 3643 </div> 3644 <div class="mb-3"> 3645 <label class="visually-hidden" for="nsl_country">Country</label> 3646 <select name="nsl_country" id="nsl_country" class="form-select w-100"> 3647  <option value="Default">Select Country</option> 3648 <option value="Afganistan">Afghanistan</option> 3649 <option value="Albania">Albania</option> 3650 <option value="Algeria">Algeria</option> 3651 <option value="American Samoa">American Samoa</option> 3652 <option value="Andorra">Andorra</option> 3653 <option value="Angola">Angola</option> 3654 <option value="Anguilla">Anguilla</option> 3655 <option value="Antigua & Barbuda">Antigua & Barbuda</option> 3656 <option value="Argentina">Argentina</option> 3657 <option value="Armenia">Armenia</option> 3658 <option value="Aruba">Aruba</option> 3659 <option value="Australia">Australia</option> 3660 <option value="Austria">Austria</option> 3661 <option value="Azerbaijan">Azerbaijan</option> 3662 <option value="Bahamas">Bahamas</option> 3663 <option value="Bahrain">Bahrain</option> 3664 <option value="Bangladesh">Bangladesh</option> 3665 <option value="Barbados">Barbados</option> 3666 <option value="Belarus">Belarus</option> 3667 <option value="Belgium">Belgium</option> 3668 <option value="Belize">Belize</option> 3669 <option value="Benin">Benin</option> 3670 <option value="Bermuda">Bermuda</option> 3671 <option value="Bhutan">Bhutan</option> 3672 <option value="Bolivia">Bolivia</option> 3673 <option value="Bonaire">Bonaire</option> 3674 <option value="Bosnia & Herzegovina">Bosnia & Herzegovina</option> 3675 <option value="Botswana">Botswana</option> 3676 <option value="Brazil">Brazil</option> 3677 <option value="British Indian Ocean Ter">British Indian Ocean Ter</option> 3678 <option value="Brunei">Brunei</option> 3679 <option value="Bulgaria">Bulgaria</option> 3680 <option value="Burkina Faso">Burkina Faso</option> 3681 <option value="Burundi">Burundi</option> 3682 <option value="Cambodia">Cambodia</option> 3683 <option value="Cameroon">Cameroon</option> 3684 <option value="Canada">Canada</option> 3685 <option value="Canary Islands">Canary Islands</option> 3686 <option value="Cape Verde">Cape Verde</option> 3687 <option value="Cayman Islands">Cayman Islands</option> 3688 <option value="Central African Republic">Central African Republic</option> 3689 <option value="Chad">Chad</option> 3690 <option value="Channel Islands">Channel Islands</option> 3691 <option value="Chile">Chile</option> 3692 <option value="China">China</option> 3693 <option value="Christmas Island">Christmas Island</option> 3694 <option value="Cocos Island">Cocos Island</option> 3695 <option value="Colombia">Colombia</option> 3696 <option value="Comoros">Comoros</option> 3697 <option value="Congo">Congo</option> 3698 <option value="Cook Islands">Cook Islands</option> 3699 <option value="Costa Rica">Costa Rica</option> 3700 <option value="Cote DIvoire">Cote DIvoire</option> 3701 <option value="Croatia">Croatia</option> 3702 <option value="Cuba">Cuba</option> 3703 <option value="Curaco">Curacao</option> 3704 <option value="Cyprus">Cyprus</option> 3705 <option value="Czech Republic">Czech Republic</option> 3706 <option value="Denmark">Denmark</option> 3707 <option value="Djibouti">Djibouti</option> 3708 <option value="Dominica">Dominica</option> 3709 <option value="Dominican Republic">Dominican Republic</option> 3710 <option value="East Timor">East Timor</option> 3711 <option value="Ecuador">Ecuador</option> 3712 <option value="Egypt">Egypt</option> 3713 <option value="El Salvador">El Salvador</option> 3714 <option value="Equatorial Guinea">Equatorial Guinea</option> 3715 <option value="Eritrea">Eritrea</option> 3716 <option value="Estonia">Estonia</option> 3717 <option value="Ethiopia">Ethiopia</option> 3718 <option value="Falkland Islands">Falkland Islands</option> 3719 <option value="Faroe Islands">Faroe Islands</option> 3720 <option value="Fiji">Fiji</option> 3721 <option value="Finland">Finland</option> 3722 <option value="France">
3722France</option> 3723 <option value="French Guiana">French Guiana</option> 3724 <option value="French Polynesia">French Polynesia</option> 3725 <option value="French Southern Ter">French Southern Ter</option> 3726 <option value="Gabon">Gabon</option> 3727 <option value="Gambia">Gambia</option> 3728 <option value="Georgia">Georgia</option> 3729 <option value="Germany">Germany</option> 3730 <option value="Ghana">Ghana</option> 3731 <option value="Gibraltar">Gibraltar</option> 3732 <option value="Great Britain">Great Britain</option> 3733 <option value="Greece">Greece</option> 3734 <option value="Greenland">Greenland</option> 3735 <option value="Grenada">Grenada</option> 3736 <option value="Guadeloupe">Guadeloupe</option> 3737 <option value="Guam">Guam</option> 3738 <option value="Guatemala">Guatemala</option> 3739 <option value="Guinea">Guinea</option> 3740 <option value="Guyana">Guyana</option> 3741 <option value="Haiti">Haiti</option> 3742 <option value="Hawaii">Hawaii</option> 3743 <option value="Honduras">Honduras</option> 3744 <option value="Hong Kong">Hong Kong</option> 3745 <option value="Hungary">Hungary</option> 3746 <option value="Iceland">Iceland</option> 3747 <option value="Indonesia">Indonesia</option> 3748 <option value="India">India</option> 3749 <option value="Iran">Iran</option> 3750 <option value="Iraq">Iraq</option> 3751 <option value="Ireland">Ireland</option> 3752 <option value="Isle of Man">Isle of Man</option> 3753 <option value="Israel">Israel</option> 3754 <option value="Italy">Italy</option> 3755 <option value="Jamaica">Jamaica</option> 3756 <option value="Japan">Japan</option> 3757 <option value="Jordan">Jordan</option> 3758 <option value="Kazakhstan">Kazakhstan</option> 3759 <option value="Kenya">Kenya</option> 3760 <option value="Kiribati">Kiribati</option> 3761 <option value="Korea North">Korea North</option> 3762 <option value="Korea Sout">Korea South</option> 3763 <option value="Kuwait">Kuwait</option> 3764 <option value="Kyrgyzstan">Kyrgyzstan</option> 3765 <option value="Laos">Laos</option> 3766 <option value="Latvia">Latvia</option> 3767 <option value="Lebanon">Lebanon</option> 3768 <option value="Lesotho">Lesotho</option> 3769 <option value="Liberia">Liberia</option> 3770 <option value="Libya">Libya</option> 3771 <option value="Liechtenstein">Liechtenstein</option> 3772 <option value="Lithuania">Lithuania</option> 3773 <option value="Luxembourg">Luxembourg</option> 3774 <option value="Macau">Macau</option> 3775 <option value="Macedonia">Macedonia</option> 3776 <option value="Madagascar">Madagascar</option> 3777 <option value="Malaysia">Malaysia</option> 3778 <option value="Malawi">Malawi</option> 3779 <option value="Maldives">Maldives</option> 3780 <option value="Mali">Mali</option> 3781 <option value="Malta">Malta</option> 3782 <option value="Marshall Islands">Marshall Islands</option> 3783 <option value="Martinique">Martinique</option> 3784 <option value="Mauritania">Mauritania</option> 3785 <option value="Mauritius">Mauritius</option> 3786 <option value="Mayotte">Mayotte</option> 3787 <option value="Mexico">Mexico</option> 3788 <option value="Midway Islands">Midway Islands</option> 3789 <option value="Moldova">Moldova</option> 3790 <option value="Monaco">Monaco</option> 3791 <option value="Mongolia">Mongolia</option> 3792 <option value="Montserrat">Montserrat</option> 3793 <option value="Morocco">Morocco</option> 3794 <option value="Mozambique">Mozambique</option> 3795 <option value="Myanmar">Myanmar</option> 3796 <option value="Nambia">Nambia</option> 3797 <option value="Nauru">Nauru</option> 3798 <option value="Nepal">Nepal</option> 3799 <option value="Netherland Antilles">Netherland Antilles</option> 3800 <option value="Netherlands">Netherlands (Holland, Europe)</option> 3801 <option value="Nevis">Nevis</option> 3802 <option value="New Caledonia">New Caledonia</option> 3803 <option value="New Zealand">New Zealand</option> 3804 <option value="Nicaragua">Nicaragua</option> 3805 <option value="Niger">Niger</option> 3806 <option value="Nigeria">Nigeria</option> 3807 <option value="Niue">Niue</option> 3808 <option value="Norfolk Island">Norfolk Island</option> 3809 <option value="Norway">Norway</option> 3810 <option value="Oman">Oman</option> 3811 <option value="Pakistan">Pakistan</option> 3812 <option value="Palau Island">Palau Island</option> 3813 <option value="Palestine">Palestine</option> 3814 <option value="Panama">Panama</option> 3815 <option value="Papua New Guinea">Papua New Guinea</option> 3816 <option value="Paraguay">Paraguay</option> 3817 <option value="Peru">Peru</option> 3818 <option value="Phillipines">Philippines</option> 3819 <option value="Pitcairn Island">Pitcairn Island</option> 3820 <option value="Poland">Poland</option> 3821 <option value="Portugal">Portugal</option> 3822 <option value="Puerto Rico">Puerto Rico</option> 3823 <option value="Qatar">Qatar</option> 3824 <option value="Republic of Montenegro">Republic of Montenegro</option>
3825 <option value="Republic of Serbia">Republic of Serbia</option> 3826 <option value="Reunion">Reunion</option> 3827 <option value="Romania">Romania</option> 3828 <option value="Russia">Russia</option> 3829 <option value="Rwanda">Rwanda</option> 3830 <option value="St Barthelemy">St Barthelemy</option> 3831 <option value="St Eustatius">St Eustatius</option> 3832 <option value="St Helena">St Helena</option> 3833 <option value="St Kitts-Nevis">St Kitts-Nevis</option> 3834 <option value="St Lucia">St Lucia</option> 3835 <option value="St Maarten">St Maarten</option> 3836 <option value="St Pierre & Miquelon">St Pierre & Miquelon</option> 3837 <option value="St Vincent & Grenadines">St Vincent & Grenadines</option> 3838 <option value="Saipan">Saipan</option> 3839 <option value="Samoa">Samoa</option> 3840 <option value="Samoa American">Samoa American</option> 3841 <option value="San Marino">San Marino</option> 3842 <option value="Sao Tome & Principe">Sao Tome & Principe</option> 3843 <option value="Saudi Arabia">Saudi Arabia</option> 3844 <option value="Senegal">Senegal</option> 3845 <option value="Seychelles">Seychelles</option> 3846 <option value="Sierra Leone">Sierra Leone</option> 3847 <option value="Singapore">Singapore</option> 3848 <option value="Slovakia">Slovakia</option> 3849 <option value="Slovenia">Slovenia</option> 3850 <option value="Solomon Islands">Solomon Islands</option> 3851 <option value="Somalia">Somalia</option> 3852 <option value="South Africa">South Africa</option> 3853 <option value="Spain">Spain</option> 3854 <option value="Sri Lanka">Sri Lanka</option> 3855 <option value="Sudan">Sudan</option> 3856 <option value="Suriname">Suriname</option> 3857 <option value="Swaziland">Swaziland</option> 3858 <option value="Sweden">Sweden</option> 3859 <option value="Switzerland">Switzerland</option> 3860 <option value="Syria">Syria</option> 3861 <option value="Tahiti">Tahiti</option> 3862 <option value="Taiwan">Taiwan</option> 3863 <option value="Tajikistan">Tajikistan</option> 3864 <option value="Tanzania">Tanzania</option> 3865 <option value="Thailand">Thailand</option> 3866 <option value="Togo">Togo</option> 3867 <option value="Tokelau">Tokelau</option> 3868 <option value="Tonga">Tonga</option> 3869 <option value="Trinidad & Tobago">Trinidad & Tobago</option> 3870 <option value="Tunisia">Tunisia</option> 3871 <option value="Turkey">Turkey</option> 3872 <option value="Turkmenistan">Turkmenistan</option> 3873 <option value="Turks & Caicos Is">Turks & Caicos Is</option> 3874 <option value="Tuvalu">Tuvalu</option> 3875 <option value="Uganda">Uganda</option> 3876 <option value="United Kingdom">United Kingdom</option> 3877 <option value="Ukraine">Ukraine</option> 3878 <option value="United Arab Erimates">United Arab Emirates</option> 3879 <option value="United States of America">United States of America</option> 3880 <option value="Uraguay">Uruguay</option> 3881 <option value="Uzbekistan">Uzbekistan</option> 3882 <option value="Vanuatu">Vanuatu</option> 3883 <option value="Vatican City State">Vatican City State</option> 3884 <option value="Venezuela">Venezuela</option> 3885 <option value="Vietnam">Vietnam</option> 3886 <option value="Virgin Islands (Brit)">Virgin Islands (Brit)</option> 3887 <option value="Virgin Islands (USA)">Virgin Islands (USA)</option> 3888 <option value="Wake Island">Wake Island</option> 3889 <option value="Wallis & Futana Is">Wallis & Futana Is</option> 3890 <option value="Yemen">Yemen</option> 3891 <option value="Zaire">Zaire</option> 3892 <option value="Zambia">Zambia</option> 3893 <option value="Zimbabwe">Zimbabwe</option> 3894 </select> 3895 </div> 3896 <div class="text-center"> 3897 <button type="button" class="btn btn-primary" onclick="SubscribeSubmitmainpopup()">Join Our Newsletter</button> 3898 </div> 3899 </form> 3900 </div> 3901 </div> 3902 </div> 3903</div> 3904 3905
3905<script src="https://code.jquery.com/jquery-3.7.1.min.js" defer></script>
3905 3906
3906<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.bundle.min.js" defer></script>
3906 3907
3907<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/gsap.min.js" defer></script>
3907 3908
3908<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/ScrollTrigger.min.js" defer></script>
3908 3909
3909<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/ScrollSmoother.min.js" defer></script>
3909 3910 3911
3911<script src="https://cdn.jsdelivr.net/npm/swiper@11/swiper-bundle.min.js" defer></script>
3911 3912
3912<script src="./js/desktop-menu-overflow.js?v=1791356110" defer></script>
3912 3913
3913<script src="./js/accessibility.js?v=1791356110" defer></script>
3913 3914
3914<script src="./js/script.js?v=1791356110" defer></script>
3914 3915 3916
3916<script> 3917 (function (window, document) { 3918 if (window.StaahWidgetColorSyncHelper) return; 3919 3920 function onReady(fn) { 3921 if (document.readyState !== 'loading') { 3922 fn(); 3923 } else { 3924 document.addEventListener('DOMContentLoaded', fn); 3925 } 3926 } 3927 3928 function toStringSafe(value) { 3929 try { 3930 return String(value || ''); 3931 } catch (e) { 3932 return ''; 3933 } 3934 } 3935 3936 function isVisible(el) { 3937 return !!(el && el.offsetParent !== null); 3938 } 3939 3940 function getColorLuminance(color) { 3941 var c = toStringSafe(color).trim().toLowerCase(); 3942 if (!c) return -1; 3943 var m = c.match(/rgba?\((\d+),\s*(\d+),\s*(\d+)/); 3944 if (m) { 3945 return (parseInt(m[1], 10) * 299 + parseInt(m[2], 10) * 587 + parseInt(m[3], 10) * 114) / 1000; 3946 } 3947 var hex = c.replace('#', ''); 3948 if (/^[0-9a-f]{3}$/.test(hex)) { 3949 hex = hex[0] + hex[0] + hex[1] + hex[1] + hex[2] + hex[2]; 3950 } 3951 if (/^[0-9a-f]{6}$/.test(hex)) { 3952 var r = parseInt(hex.slice(0, 2), 16); 3953 var g = parseInt(hex.slice(2, 4), 16); 3954 var b = parseInt(hex.slice(4, 6), 16); 3955 return (r * 299 + g * 587 + b * 114) / 1000; 3956 } 3957 return -1; 3958 } 3959 3960 function isUsableButtonColor(color) { 3961 if (!color) return false; 3962 var c = toStringSafe(color).trim().toLowerCase(); 3963 if (!c || c === 'transparent' || c === 'rgba(0, 0, 0, 0)') return false; 3964 if ( 3965 c === '#fff' || 3966 c === '#ffffff' || 3967 c === 'white' || 3968 c === 'rgb(255, 255, 255)' || 3969 c === 'rgba(255, 255, 255, 1)' 3970 ) { 3971 return false; 3972 } 3973 var lum = getColorLuminance(c); 3974 if (lum >= 0) { 3975 if (lum > 220) return false; 3976 if (lum < 50) return false; 3977 } 3978 return true; 3979 } 3980 3981 function darken(rgb, factor) { 3982 try { 3983 var m = toStringSafe(rgb).match(/rgba?\((\d+),\s*(\d+),\s*(\d+)/i); 3984 if (!m) return rgb; 3985 var r = Math.max(0, Math.min(255, Math.round(parseInt(m[1], 10) * factor))); 3986 var g = Math.max(0, Math.min(255, Math.round(parseInt(m[2], 10) * factor))); 3987 var b = Math.max(0, Math.min(255, Math.round(parseInt(m[3], 10) * factor))); 3988 return 'rgb(' + r + ', ' + g + ', ' + b + ')'; 3989 } catch (e) { 3990 return rgb; 3991 } 3992 } 3993 3994 function parseTimeouts(value) { 3995 if (Array.isArray(value)) { 3996 return value.map(function (n) { return parseInt(n, 10); }).filter(function (n) { return !isNaN(n) && n >= 0; }); 3997 } 3998 return toStringSafe(value) 3999 .split(',') 4000 .map(function (part) { return parseInt(part.trim(), 10); }) 4001 .filter(function (n) { return !isNaN(n) && n >= 0; }); 4002 } 4003 4004 function parseBoolean(value) { 4005 if (typeof value === 'boolean') return value; 4006 var normalized = toStringSafe(value).trim().toLowerCase(); 4007 if (normalized === 'true' || normalized === '1' || normalized === 'yes' || normalized === 'on') return true; 4008 if (normalized === 'false' || normalized === '0' || normalized === 'no' || normalized === 'off') return false; 4009 return false; 4010 } 4011 4012 function createSync(options) { 4013 var config = options || {}; 4014 var themeKey = toStringSafe(config.themeKey).trim() || 'theme'; 4015 var propertyColorKeySuffix = toStringSafe(config.propertyColorKeySuffix).trim() || themeKey; 4016 var configuredWidgetColor = toStringSafe(config.configuredWidgetColor).trim(); 4017 var defaultButtonColor = toStringSafe(config.defaultButtonColor).trim() || '#B87C4C'; 4018 var colorCssVar = toStringSafe(config.defaultColorCssVar).trim() || '--color-brand'; 4019 var hardApplySelector = toStringSafe(config.hardApplySelector).trim(); 4020 var hardApplyDataAttr = toStringSafe(config.hardApplyDataAttr).trim(); 4021 var initialApplyTimeouts = parseTimeouts(config.initialApplyTimeouts || '800,2000'); 4022 var reapplyStoredTimeouts = parseTimeouts(config.reapplyStoredTimeouts || ''); 4023 var observeHardApplyMutations = parseBoolean(config.observeHardApplyMutations); 4024 var watchdogIntervalMs = parseInt(config.watchdogIntervalMs, 10); 4025 var watchdogDurationMs = parseInt(config.watchdogDurationMs, 10); 4026 if (isNaN(watchdogIntervalMs) || watchdogIntervalMs < 500) { 4027 watchdogIntervalMs = observeHardApplyMutations ? 2000 : 0; 4028 } 4029 if (isNaN(watchdogDurationMs) || watchdogDurationMs < watchdogIntervalMs) { 4030 watchdogDurationMs = observeHardApplyMutations ? 45000 : 0; 4031 } 4032 var styleId = toStringSafe(config.styleId).trim() || ('be-sync-header-' + themeKey); 4033 var beColorStorageKey = 'bePrimaryColor:' + propertyColorKe
4033ySuffix; 4034 var beHoverStorageKey = 'bePrimaryHover:' + propertyColorKeySuffix; 4035 var lastAppliedBg = ''; 4036 var lastAppliedHover = ''; 4037 4038 function getThemeDefaultButtonColor() { 4039 try { 4040 var cssColor = getComputedStyle(document.documentElement).getPropertyValue(colorCssVar); 4041 var cleaned = cssColor ? cssColor.trim() : ''; 4042 return cleaned || defaultButtonColor; 4043 } catch (e) { 4044 return defaultButtonColor; 4045 } 4046 } 4047 4048 function applyHardStyles(bg) { 4049 if (!hardApplySelector) return; 4050 var headerButtons = document.querySelectorAll(hardApplySelector); 4051 Array.prototype.forEach.call(headerButtons, function (btn) { 4052 try { 4053 btn.style.setProperty('background-color', bg, 'important'); 4054 btn.style.setProperty('border-color', bg, 'important'); 4055 btn.style.setProperty('color', '#fff', 'important'); 4056 if (hardApplyDataAttr) { 4057 btn.setAttribute(hardApplyDataAttr, '1'); 4058 } 4059 } catch (e) { 4060 // Ignore direct-style failures on non-standard nodes. 4061 } 4062 }); 4063 } 4064 4065 function applyColors(bg, hover) { 4066 if (!isUsableButtonColor(bg)) return false; 4067 if (!hover) hover = darken(bg, 0.9); 4068 lastAppliedBg = bg; 4069 lastAppliedHover = hover; 4070 4071 var styleEl = document.getElementById(styleId); 4072 if (!styleEl) { 4073 styleEl = document.createElement('style'); 4074 styleEl.id = styleId; 4075 document.head.appendChild(styleEl); 4076 } 4077 4078 styleEl.textContent = 4079 '.btn.btn-primary, .btn-primary, .btn.btn--accent, .btn--accent, a.btn--accent, a.main-btn, a.service-badge, .btn.btn-secondary.active, .not-found-home-btn, .cookie-btn-accept{' + 4080 'background:' + bg + ' !important;' + 4081 'border-color:' + bg + ' !important;' + 4082 'color:#fff !important;' + 4083 '}' + 4084 '.btn.btn-primary:hover, .btn.btn-primary:active, .btn-primary:hover, .btn-primary:active, .btn.btn--accent:hover, .btn--accent:hover, a.btn--accent:hover, a.service-badge:hover, a.main-btn:hover, .not-found-home-btn:hover, .cookie-btn-accept:hover{' + 4085 'background:' + hover + ' !important;' + 4086 'border-color:' + hover + ' !important;' + 4087 'color:#fff !important;' + 4088 '}' + 4089 '.gallery-filter-btn.active, #room-filter-list .gallery-filter-btn.active{' + 4090 'background:' + bg + ' !important;' + 4091 'border-color:' + bg + ' !important;' + 4092 'color:#fff !important;' + 4093 '}' + 4094 '.btn.btn-secondary, .btn-secondary, .btn.btn-outline, .btn-outline{' + 4095 'background:transparent !important;' + 4096 'color:' + bg + ' !important;' + 4097 'border-color:' + bg + ' !important;' + 4098 '}' + 4099 '.btn.btn-secondary:hover, .btn.btn-secondary:active, .btn-secondary:hover, .btn-secondary:active, .btn.btn-outline:hover, .btn.btn-outline:active, .btn-outline:hover, .btn-outline:active{' + 4100 'background:' + bg + ' !important;' + 4101 'border-color:' + hover + ' !important;' + 4102 'color:#fff !important;' + 4103 '}' + 4104 'header .navbar .btn.btn-primary, header .navbar a.btn.btn-primary, .nav-actions .btn.btn-primary, header .nav-actions a.btn.btn-primary{' + 4105 'background:' + bg + ' !important;' + 4106 'border-color:' + bg + ' !important;' + 4107 'color:#fff !important;' + 4108 '}' + 4109 'header .navbar .btn.btn-primary:hover, header .navbar .btn.btn-primary:active, .nav-actions .btn.btn-primary:hover, .nav-actions .btn.btn-primary:active, header .nav-actions a.btn.btn-primary:hover, header .nav-actions a.btn.btn-primary:active{' + 4110 'background:' + hover + ' !important;' + 4111 'border-color:' + hover + ' !important;' + 4112 'color:#fff !important;' + 4113 '}'; 4114 // '[data-theme="contrast"] .btn.btn-secondary, [data-theme="contrast"] .btn-secondary{' + 4115 // 'background:transparent !important;' + 4116 // 'color:#fff !important;' + 4117 // 'border-color:#fff !important;' + 4118 // '}'; 4119 4120 applyHardStyles(bg); 4121 try { 4122 document.documentElement.style.setProperty(colorCssVar, bg); 4123 } catch (e) { 4124 // Ignore CSS variable failures. 4125 } 4126 return true; 4127 } 4128
4129 function readButtonBackground(button) { 4130 if (!button) return ''; 4131 try { 4132 return getComputedStyle(button).backgroundColor || ''; 4133 } catch (e) { 4134 return ''; 4135 } 4136 } 4137 4138 function findWidgetPrimaryButton() { 4139 var selectorGroups = [ 4140 '.Configure-quickBook-Widget .MbsSearchWidget .searchButton', 4141 '.Configure-quickBook-Widget .MbsSearchWidget input[type="submit"]', 4142 '.Configure-quickBook-Widget .MbsSearchWidget button[type="submit"]', 4143 '.Configure-quickBook-Widget .MbsSearchWidget button' 4144 ]; 4145 var group; 4146 var candidates; 4147 var i; 4148 var btn; 4149 var bg; 4150 for (i = 0; i < selectorGroups.length; i++) { 4151 group = selectorGroups[i]; 4152 candidates = document.querySelectorAll(group); 4153 btn = Array.prototype.find.call(candidates, function (button) { 4154 if (!isVisible(button)) return false; 4155 bg = readButtonBackground(button); 4156 return isUsableButtonColor(bg); 4157 }); 4158 if (btn) return btn; 4159 } 4160 return null; 4161 } 4162 4163 function clearInvalidStoredColors() { 4164 try { 4165 var storedBg = localStorage.getItem(beColorStorageKey) || localStorage.getItem('bePrimaryColor'); 4166 var storedHover = localStorage.getItem(beHoverStorageKey) || localStorage.getItem('bePrimaryHover'); 4167 if (storedBg && !isUsableButtonColor(storedBg)) { 4168 localStorage.removeItem(beColorStorageKey); 4169 localStorage.removeItem('bePrimaryColor'); 4170 } 4171 if (storedHover && !isUsableButtonColor(storedHover)) { 4172 localStorage.removeItem(beHoverStorageKey); 4173 localStorage.removeItem('bePrimaryHover'); 4174 } 4175 } catch (e) { 4176 // Ignore localStorage failures. 4177 } 4178 } 4179 4180 function persistWidgetColors(bg, hover) { 4181 if (!isUsableButtonColor(bg)) return; 4182 if ( 4183 isUsableButtonColor(configuredWidgetColor) && 4184 getColorLuminance(bg) >= 0 && 4185 getColorLuminance(configuredWidgetColor) >= 0 && 4186 getColorLuminance(bg) < getColorLuminance(configuredWidgetColor) - 15 4187 ) { 4188 return; 4189 } 4190 try { 4191 localStorage.setItem(beColorStorageKey, bg); 4192 localStorage.setItem(beHoverStorageKey, hover); 4193 } catch (e) { 4194 // Ignore localStorage failures. 4195 } 4196 } 4197 4198 function applyFromWidget() { 4199 var btn = findWidgetPrimaryButton(); 4200 if (!btn) return false; 4201 var bg = readButtonBackground(btn); 4202 if (!isUsableButtonColor(bg)) return false; 4203 var hover = darken(bg, 0.9); 4204 applyColors(bg, hover); 4205 persistWidgetColors(bg, hover); 4206 return true; 4207 } 4208 4209 function reapplyStoredHeaderButtonColor() { 4210 try { 4211 if (lastAppliedBg && isUsableButtonColor(lastAppliedBg)) { 4212 applyColors(lastAppliedBg, lastAppliedHover || lastAppliedBg); 4213 return; 4214 } 4215 var persistedBg = localStorage.getItem(beColorStorageKey) || localStorage.getItem('bePrimaryColor'); 4216 var persistedHover = localStorage.getItem(beHoverStorageKey) || localStorage.getItem('bePrimaryHover'); 4217 if (persistedBg && isUsableButtonColor(persistedBg)) { 4218 applyColors(persistedBg, persistedHover || persistedBg); 4219 return; 4220 } 4221 if (isUsableButtonColor(configuredWidgetColor)) { 4222 applyColors(configuredWidgetColor, darken(configuredWidgetColor, 0.9)); 4223 return; 4224 } 4225 applyColors(getThemeDefaultButtonColor(), darken(getThemeDefaultButtonColor(), 0.9)); 4226 } catch (e) { 4227 // Ignore late localStorage access failures. 4228 } 4229 } 4230 4231 function attachReapplyListeners() { 4232 window.addEventListener('resize', reapplyStoredHeaderButtonColor); 4233 window.addEventListener('orientationchange', reapplyStoredHeaderButtonColor); 4234 window.addEventListener('pageshow', reapplyStoredHeaderButtonColor); 4235 document.addEventListener('shown.bs.collapse', reapplyStoredHeaderButtonColor); 4236 document.addEventListener('hidden.bs.collapse', reapplyStoredHeaderButtonColor);
4237 reapplyStoredTimeouts.forEach(function (timeout) { 4238 setTimeout(reapplyStoredHeaderButtonColor, timeout); 4239 }); 4240 4241 if (!observeHardApplyMutations || !hardApplySelector) return; 4242 4243 var reapplyQueued = false; 4244 function queueReapply() { 4245 if (reapplyQueued) return; 4246 reapplyQueued = true; 4247 setTimeout(function () { 4248 reapplyQueued = false; 4249 if (lastAppliedBg) { 4250 applyColors(lastAppliedBg, lastAppliedHover || lastAppliedBg); 4251 } else { 4252 reapplyStoredHeaderButtonColor(); 4253 } 4254 }, 50); 4255 } 4256 4257 try { 4258 var headerMo = new MutationObserver(function (mutations) { 4259 for (var i = 0; i < mutations.length; i++) { 4260 var target = mutations[i].target; 4261 if (target && target.matches && target.matches(hardApplySelector)) { 4262 queueReapply(); 4263 return; 4264 } 4265 } 4266 }); 4267 headerMo.observe(document.body, { 4268 subtree: true, 4269 attributes: true, 4270 attributeFilter: ['class', 'style'] 4271 }); 4272 } catch (e) { 4273 // Ignore observer setup failures. 4274 } 4275 } 4276 4277 function scheduleWidgetColorWatchdog() { 4278 if (!watchdogIntervalMs || !watchdogDurationMs) return; 4279 var elapsed = 0; 4280 var timerId = setInterval(function () { 4281 elapsed += watchdogIntervalMs; 4282 applyFromWidget(); 4283 if (lastAppliedBg) { 4284 applyColors(lastAppliedBg, lastAppliedHover || lastAppliedBg); 4285 } else { 4286 reapplyStoredHeaderButtonColor(); 4287 } 4288 if (elapsed >= watchdogDurationMs) { 4289 clearInterval(timerId); 4290 } 4291 }, watchdogIntervalMs); 4292 } 4293 4294 function init() { 4295 var themeDefaultColor = getThemeDefaultButtonColor(); 4296 var applied = false; 4297 4298 clearInvalidStoredColors(); 4299 4300 try { 4301 var storedBg = localStorage.getItem(beColorStorageKey) || localStorage.getItem('bePrimaryColor'); 4302 var storedHover = localStorage.getItem(beHoverStorageKey) || localStorage.getItem('bePrimaryHover'); 4303 if (storedBg && isUsableButtonColor(storedBg)) { 4304 applied = applyColors(storedBg, storedHover || storedBg) || applied; 4305 } 4306 } catch (e) { 4307 // Ignore localStorage failures. 4308 } 4309 4310 if (!applied && isUsableButtonColor(configuredWidgetColor)) { 4311 applied = applyColors(configuredWidgetColor, darken(configuredWidgetColor, 0.9)) || applied; 4312 } 4313 4314 if (!applied) { 4315 applyColors(themeDefaultColor, darken(themeDefaultColor, 0.9)); 4316 } 4317 4318 applyFromWidget(); 4319 4320 var observer = new MutationObserver(function () { 4321 if (applyFromWidget()) { 4322 try { 4323 observer.disconnect(); 4324 } catch (e) { 4325 // Ignore disconnect failures. 4326 } 4327 } 4328 }); 4329 observer.observe(document.body, { childList: true, subtree: true }); 4330 4331 initialApplyTimeouts.forEach(function (timeout) { 4332 setTimeout(applyFromWidget, timeout); 4333 }); 4334 4335 attachReapplyListeners(); 4336 scheduleWidgetColorWatchdog(); 4337 } 4338 4339 return { 4340 init: init, 4341 applyColors: applyColors, 4342 applyFromWidget: applyFromWidget, 4343 reapplyStoredHeaderButtonColor: reapplyStoredHeaderButtonColor 4344 }; 4345 } 4346 4347 function attach(options) { 4348 var sync = createSync(options); 4349 onReady(sync.init); 4350 return sync; 4351 } 4352 4353 window.StaahWidgetColorSyncHelper = { 4354 onReady: onReady, 4355 isUsableButtonColor: isUsableButtonColor, 4356 darken: darken, 4357 createSync: createSync, 4358 attach: attach 4359 }; 4360 })(window, document); 4361</script>
vendor: 1 bytes, line 4361
4361
4362<script> 4363 (function () { 4364 var helper = window.StaahWidgetColorSyncHelper; 4365 if (!helper || typeof helper.attach !== 'function') return; 4366 4367 helper.attach({ 4368 themeKey: "theme200", 4369 styleId: "be\u002Dsync\u002Dheader\u002D200", 4370 propertyColorKeySuffix: "Fundacion\u0020Pacita", 4371 configuredWidgetColor: "", 4372 defaultButtonColor: "\u0023a78295", 4373 defaultColorCssVar: "\u002D\u002Dcolor\u002Dbrand", 4374 hardApplySelector: "header\u0020.navbar\u0020.btn.btn\u002Dprimary,\u0020header\u0020.navbar\u0020a.btn.btn\u002Dprimary,\u0020.nav\u002Dactions\u0020.btn.btn\u002Dprimary,\u0020header\u0020.nav\u002Dactions\u0020a.btn.btn\u002Dprimary", 4375 hardApplyDataAttr: "data\u002Dtheme200\u002Dbtn\u002Dsync", 4376 initialApplyTimeouts: "800,2000,4000,8000", 4377 reapplyStoredTimeouts: "300,1200,3000", 4378 observeHardApplyMutations: "1", 4379 watchdogIntervalMs: "2000", 4380 watchdogDurationMs: "45000" 4381 }); 4382 })(); 4383</script>
4383 4384 4385 4386 4387 4388 <style> 4389 #cookie-consent-banner { 4390 display: none; 4391 position: fixed; 4392 right: 20px; 4393 bottom: 20px; 4394 left: auto; 4395 z-index: 999999 !important; 4396 width: min(420px, calc(100vw - 32px)); 4397 padding: 0; 4398 margin: 0; 4399 background: #ffffff !important; 4400 color: #1a1a1a !important; 4401 border-radius: 12px; 4402 box-shadow: 0 12px 40px rgba(0, 0, 0, 0.18); 4403 font-size: 14px; 4404 line-height: 1.5; 4405 mix-blend-mode: normal !important; 4406 } 4407 4408 #cookie-consent-banner .cookie-consent-inner { 4409 display: block; 4410 max-width: none; 4411 margin: 0; 4412 padding: 20px 22px 18px; 4413 } 4414 4415 #cookie-consent-banner .cookie-consent-header { 4416 display: flex; 4417 align-items: flex-start; 4418 justify-content: space-between; 4419 gap: 12px; 4420 margin-bottom: 10px; 4421 } 4422 4423 #cookie-consent-banner .cookie-consent-title { 4424 margin: 0; 4425 font-size: 18px; 4426 font-weight: 700; 4427 line-height: 1.3; 4428 color: #111111 !important; 4429 -webkit-text-fill-color: #111111 !important; 4430 } 4431 4432 #cookie-consent-banner .cookie-consent-close { 4433 flex: 0 0 auto; 4434 width: 32px; 4435 height: 32px; 4436 margin: -6px -8px 0 0; 4437 padding: 0; 4438 border: 0; 4439 border-radius: 6px; 4440 background: transparent; 4441 color: #333333 !important; 4442 -webkit-text-fill-color: #333333 !important; 4443 font-size: 22px; 4444 line-height: 1; 4445 cursor: pointer; 4446 } 4447 4448 #cookie-consent-banner .cookie-consent-close:hover, 4449 #cookie-consent-banner .cookie-consent-close:focus-visible { 4450 background: rgba(0, 0, 0, 0.06); 4451 } 4452 4453 #cookie-consent-banner .cookie-consent-text { 4454 margin: 0 0 16px; 4455 color: #333333 !important; 4456 -webkit-text-fill-color: #333333 !important; 4457 font-size: 13px; 4458 line-height: 1.55; 4459 } 4460 4461 #cookie-consent-banner .cookie-consent-text a { 4462 color: #111111 !important; 4463 -webkit-text-fill-color: #111111 !important; 4464 font-weight: 600; 4465 text-decoration: underline; 4466 text-underline-offset: 2px; 4467 } 4468 4469 #cookie-consent-banner .cookie-consent-actions { 4470 display: flex; 4471 justify-content: flex-end; 4472 flex-wrap: wrap; 4473 gap: 10px; 4474 } 4475 4476 #cookie-consent-banner .cookie-btn { 4477 min-width: 96px; 4478 padding: 9px 18px; 4479 border-radius: 8px; 4480 border: 1px solid #111111; 4481 cursor: pointer; 4482 font-size: 14px; 4483 font-weight: 600; 4484 line-height: 1.2; 4485 } 4486 4487 #cookie-consent-banner .cookie-btn-essential { 4488 background: #111111 !important; 4489 color: #ffffff !important; 4490 -webkit-text-fill-color: #ffffff !important; 4491 } 4492 4493 #cookie-consent-banner .cookie-btn-accept { 4494 background: #c5d4d8 !important; 4495 color: #111111 !important; 4496 -webkit-text-fill-color: #111111 !important; 4497 border-color: #111111; 4498 } 4499 4500 #cookie-consent-banner .cookie-btn-essential:hover, 4501 #cookie-consent-banner .cookie-btn-accept:hover { 4502 opacity: 0.92; 4503 } 4504 4505 @media (max-width: 575px) { 4506 #cookie-consent-banner { 4507 right: 12px; 4508 bottom: 12px; 4509 left: 12px; 4510 width: auto; 4511 } 4512 4513 #cookie-consent-banner .cookie-consent-actions { 4514 justify-content: stretch; 4515 } 4516 4517 #cookie-consent-banner .cookie-btn { 4518 flex: 1 1 auto; 4519 } 4520 } 4521</style> 4522 4523<div id="cookie-consent-banner" role="dialog" aria-modal="false" aria-labelledby="cookie-consent-title" aria-describedby="cookie-consent-text"> 4524 <div class="cookie-consent-inner"> 4525 <div class="cookie-consent-header"> 4526 <h2 id="cookie-consent-title" class="cookie-consent-title">Cookie Consent</h2> 4527 <button type="button" class="cookie-consent-close" onclick="dismissCookieConsent()" aria-label="Close cookie notice">×</button> 4528 </div> 4529 <p id="cookie-consent-text" class="cookie-consent-text"> 4530 This site uses cookies to ensure you get the best experience on our website. Learn more in our 4531 <a href="javascript:void(0)" onclick="if (typeof show_policy === 'function') { show_policy(); } return false;">Privacy Policy</a> 4532 </p> 4533 <div class="cookie-consent-actions"> 4534 <button type="button" class="cookie-btn cookie-btn-essential" onclick="rejectNonEssentialCookies()">Essential Only</button> 4535 <button type="button" class="cookie-btn cookie-btn-accept" onclick="acceptCookies()">Accept All</button> 4536 </div> 4537 </div> 4538</div>
4539<script> 4540 (function () { 4541 var CONSENT_KEY = 'cookie_consent'; 4542 var CONSENT_TTL_MS = 365 * 24 * 60 * 60 * 1000; // 12 months 4543 4544 function hideBanner() { 4545 var banner = document.getElementById('cookie-consent-banner'); 4546 if (banner) banner.style.display = 'none'; 4547 } 4548 4549 function clearConsent() { 4550 try { localStorage.removeItem(CONSENT_KEY); } catch (e) {} 4551 } 4552 4553 function readConsent() { 4554 try { 4555 var raw = localStorage.getItem(CONSENT_KEY); 4556 if (!raw) return null; 4557 4558 // Legacy plain values: treat as expired so the new expiry format takes over 4559 if (raw === 'all' || raw === 'essential' || raw === 'dismissed') { 4560 clearConsent(); 4561 return null; 4562 } 4563 4564 var data = JSON.parse(raw); 4565 if (!data || !data.choice || !data.ts) { 4566 clearConsent(); 4567 return null; 4568 } 4569 4570 if ((Date.now() - Number(data.ts)) > CONSENT_TTL_MS) { 4571 clearConsent(); 4572 return null; 4573 } 4574 4575 return data; 4576 } catch (e) { 4577 clearConsent(); 4578 return null; 4579 } 4580 } 4581 4582 function saveConsent(choice) { 4583 try { 4584 localStorage.setItem(CONSENT_KEY, JSON.stringify({ 4585 choice: choice, 4586 ts: Date.now() 4587 })); 4588 } catch (e) {} 4589 } 4590 4591 window.acceptCookies = function () { 4592 saveConsent('all'); 4593 hideBanner(); 4594 }; 4595 4596 // Essential Only / Close: hide for this page only; show again after reload. 4597 window.rejectNonEssentialCookies = function () { 4598 clearConsent(); 4599 hideBanner(); 4600 }; 4601 4602 window.dismissCookieConsent = function () { 4603 clearConsent(); 4604 hideBanner(); 4605 }; 4606 4607 // Only "Accept All" stays dismissed (12 months). Anything else shows the banner. 4608 var saved = readConsent(); 4609 if (!saved || saved.choice !== 'all') { 4610 if (saved) clearConsent(); 4611 var show = function () { 4612 var banner = document.getElementById('cookie-consent-banner'); 4613 if (banner) banner.style.display = 'block'; 4614 }; 4615 if (document.readyState === 'loading') { 4616 document.addEventListener('DOMContentLoaded', show); 4617 } else { 4618 show(); 4619 } 4620 } 4621 })(); 4622</script>
vendor: 1 bytes, line 4622
4622
4623<script> 4624 // Third-party widgets (booking engine, rate compare) inject their own fields. 4625 (function iswNameInjectedControls() { 4626 function humanize(value) { 4627 return String(value || '').replace(/[_\-.]+/g, ' ').replace(/([a-z])([A-Z])/g, '$1 $2').trim(); 4628 } 4629 function nameControl(control) { 4630 if (!control || control.type === 'hidden' || control.hasAttribute('aria-label') || 4631 control.hasAttribute('aria-labelledby') || control.hasAttribute('title')) return; 4632 if (control.id && document.querySelector('label[for="' + control.id.replace(/"/g, '\\"') + '"]')) return; 4633 if (control.closest('label')) return; 4634 var name = control.getAttribute('placeholder') || humanize(control.getAttribute('name')) || humanize(control.id); 4635 if (name) control.setAttribute('aria-label', name); 4636 } 4637 function nameAll(root) { 4638 (root || document).querySelectorAll('input, select, textarea').forEach(nameControl); 4639 } 4640 function start() { 4641 nameAll(document); 4642 new MutationObserver(function (records) { 4643 records.forEach(function (record) { 4644 record.addedNodes.forEach(function (node) { 4645 if (node.nodeType !== 1) return; 4646 nameControl(node); 4647 nameAll(node); 4648 }); 4649 }); 4650 }).observe(document.documentElement, { childList: true, subtree: true }); 4651 } 4652 if (document.readyState === 'loading') { 4653 document.addEventListener('DOMContentLoaded', start); 4654 } else { 4655 start(); 4656 } 4657 })(); 4658</script>
4658 4659</body> 4660 4661</html> 4662
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.