1<!-- 2 ââââââ âââ ââââââââââ âââââââ ââââ ââââ 3 âââââââââââ âââââââââââ âââââââââââââ âââââ 4 ââââââââââââââââââââââââ âââ ââââââââââââââ 5 ââââââââââââââââââââââââ âââ ââââââââââââââ 6 âââ ââââââ ââââââ âââ âââââââââââ âââ âââ 7 âââ ââââââ ââââââ âââ âââââââ âââ âââ 8 9 Developed by The Astoria Group Marketing Team (DTM - JBC) 10 (App v2.0.8) 11 12 ###################################################### 13 # (\_/) 14 # ( â¢_â¢) Cookie you want? 15 # / >ðª 16 ###################################################### 17--> 18<!DOCTYPE html> 19<html lang="en" class="scroll-smooth"> 20<head> 21 <!-- Google Tag Manager -->
22<script>
vendor: 327 bytes, lines 22-26
22(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': 23new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], 24j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= 25'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); 26})(window,document,'script','dataLayer','
26GTM-PT73L2P
vendor: 3 bytes, line 26
26');
26</script>
26 27<!-- End Google Tag Manager --> 28 <meta charset="utf-8"> 29 <meta name="viewport" content="width=device-width, initial-scale=1"> 30 <meta name="csrf-token" content="n1t1QG0VvjCD3eOa6UObtPr3dv6Bh2ZbViGgBhMf"> 31 <meta name="google" content="notranslate"> 32 33 <title>Search results for âaccommodationsâ | Astoria Boracay</title> 34 <link rel="icon" href="https://astoriaboracay.com/images/favicon.ico"/> 35 36 <style> 37 .ab1-search-page { 38 --search-green: #0047BB; 39 --search-green-dark: #0047BB; 40 --search-orange: #F05323; 41 --search-peach: #fdd3b5; 42 --search-text: #25282a; 43 --search-soft: #eefbf8; 44 background: 45 radial-gradient(circle at 8% 0%, rgba(0,168,143,.10), transparent 30rem), 46 radial-gradient(circle at 92% 10%, rgba(240,83,35,.10), transparent 26rem), 47 linear-gradient(180deg, #ffffff 0%, #fff7f1 48%, #ffffff 100%); 48 color: var(--search-text); 49 } 50 51 .ab1-search-hero { 52 position: relative; 53 overflow: hidden; 54 background: 55 radial-gradient(circle at 16% 10%, rgba(255,255,255,.22), transparent 22rem), 56 linear-gradient(135deg, var(--search-green-dark) 0%, var(--search-green) 62%, #0047BB 100%); 57 color: #ffffff; 58 } 59 60 .ab1-search-hero::before { 61 content: ""; 62 position: absolute; 63 inset: 0; 64 pointer-events: none; 65 background: 66 linear-gradient(120deg, rgba(255,255,255,.12), transparent 34%, transparent 72%, rgba(255,255,255,.08)), 67 radial-gradient(circle at 88% 18%, rgba(255,255,255,.12), transparent 17rem); 68 } 69 70 .ab1-search-card-shadow { 71 box-shadow: 0 24px 70px rgba(240,83,35,.10); 72 } 73 74 .ab1-search-input::-webkit-search-cancel-button { 75 opacity: .55; 76 } 77 78 .ab1-search-input:focus { 79 outline: none; 80 box-shadow: none; 81 } 82 83 .ab1-hit { 84 display: inline; 85 border-radius: .38rem; 86 background: linear-gradient(180deg, #fff36a 0%, #ffd400 100%); 87 color: #000000; 88 padding: .07em .38em; 89 font-weight: 950; 90 box-decoration-break: clone; 91 -webkit-box-decoration-break: clone; 92 box-shadow: 93 0 0 0 2px rgba(253,211,181,.55), 94 inset 0 -2px 0 rgba(0,168,143,.22), 95 0 7px 18px rgba(240,83,35,.14); 96 } 97 98 .ab1-search-google-result { 99 transition: background-color .18s ease; 100 } 101 102 .ab1-search-google-result:hover { 103 background: linear-gradient(90deg, rgba(238,251,248,.70), rgba(255,255,255,0)); 104 } 105 106 .ab1-search-url .ab1-hit { 107 color: #25282a; 108 } 109 110 .ab1-search-line-clamp-2, 111 .ab1-search-line-clamp-3 { 112 display: -webkit-box; 113 -webkit-box-orient: vertical; 114 overflow: hidden; 115 } 116 117 .ab1-search-line-clamp-2 { 118 -webkit-line-clamp: 2; 119 } 120 121 .ab1-search-line-clamp-3 { 122 -webkit-line-clamp: 3; 123 } 124 </style> 125 126 127 128
128<script type="application/ld+json"> 129 { 130 "@context": "https://schema.org", 131 "@graph": [ 132 { 133 "@type": [ 134 "Hotel", 135 "Organization" 136 ], 137 "@id": "https://astoriaboracay.com#organization", 138 "name": "Astoria Boracay", 139 "description": "Browse 19 Astoria Boracay results for âaccommodationsâ across public pages, blogs, and promos.", 140 "url": "https://astoriaboracay.com", 141 "logo": { 142 "@type": "ImageObject", 143 "@id": "https://astoriaboracay.com#logo", 144 "url": "https://astoriaboracay.com/images/ab1-logo-square.webp" 145 }, 146 "image": { 147 "@type": "ImageObject", 148 "@id": "https://astoriaboracay.com#primaryimage", 149 "url": "https://astoriaboracay.com/images/ab1-logo-square.webp" 150 } 151 }, 152 { 153 "@type": "WebSite", 154 "@id": "https://astoriaboracay.com#website", 155 "url": "https://astoriaboracay.com", 156 "name": "Astoria Boracay", 157 "description": "Browse 19 Astoria Boracay results for âaccommodationsâ across public pages, blogs, and promos.", 158 "inLanguage": "en-PH", 159 "publisher": { 160 "@id": "https://astoriaboracay.com#organization" 161 } 162 }, 163 { 164 "@type": "WebPage", 165 "@id": "https://astoriaboracay.com/search#webpage", 166 "url": "https://astoriaboracay.com/search", 167 "name": "Search results for âaccommodationsâ | Astoria Boracay", 168 "description": "Browse 19 Astoria Boracay results for âaccommodationsâ across public pages, blogs, and promos.", 169 "inLanguage": "en-PH", 170 "isPartOf": { 171 "@id": "https://astoriaboracay.com#website" 172 }, 173 "about": { 174 "@id": "https://astoriaboracay.com#organization" 175 }, 176 "primaryImageOfPage": { 177 "@id": "https://astoriaboracay.com#primaryimage" 178 } 179 } 180 ] 181} 182 </script>
182 183 184 185 186 187 <link rel="preload" as="style" href="https://astoriaboracay.com/build/assets/app-BYJjLflU.css" /><link rel="modulepreload" as="script" href="https://astoriaboracay.com/build/assets/app-CE-q-u3R.js" /><link rel="stylesheet" href="https://astoriaboracay.com/build/assets/app-BYJjLflU.css" />
187<script type="module" src="https://astoriaboracay.com/build/assets/app-CE-q-u3R.js"></script>
187 188 189 <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.2/css/all.min.css" crossorigin="anonymous" referrerpolicy="no-referrer" /> 190 <link rel="stylesheet" href="https://unpkg.com/swiper/swiper-bundle.min.css" /> 191 192 193 <style> 194 /* Global font */ 195 html, body { font-family: var(--ahr-font); } 196 [x-cloak]{ display:none!important; } 197 198 /* Hide Google Website Translator banner (cover both old & new selectors) */ 199 iframe.goog-te-banner-frame { display:none !important; } 200 .goog-te-banner-frame { display:none !important; } 201 .goog-te-banner { display:none !important; } 202 .VIpgJd-ZVi9od-ORHb-OEVmcd { display:none !important; } /* new banner container */ 203 .VIpgJd-ZVi9od-aZ2wEe-wOHMyf { display:none !important; } /* top-offset shim */ 204 .VIpgJd-ZVi9od-xl07Ob-OEVmcd { display:none !important; } /* overlay holder */ 205 206 /* Undo any injected top offset on body */ 207 body { top: 0 !important; position: static !important; } 208 body[style*="top:"] { top:0 !important; } 209 210 /* Keep the widget functional but invisible */ 211 #google_translate_element { position:fixed; left:-9999px; bottom:-9999px; } 212 .goog-logo-link, .goog-te-gadget span { display:none !important; } 213 .goog-te-gadget { height:0 !important; overflow:hidden !important; } 214 215 /* Optional: hide tooltip + highlights */ 216 #goog-gt-tt { display:none !important; } 217 .goog-text-highlight { background:none !important; box-shadow:none !important; } 218 </style> 219 220 221 222 223 224 225<link rel="alternate icon" href="https://astoriaboracay.com/favicon.ico"> 226</head> 227<body class="antialiased"> 228 <!-- Google Tag Manager (noscript) -->
vendor: 68 bytes, lines 228-229
228 229<noscript><iframe src="https://www.googletagmanager.com/ns.html?id=
229GTM-PT73L2P
vendor: 83 bytes, lines 229-230
229" 230height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
231<!-- End Google Tag Manager (noscript) --> 232<style> 233 [x-cloak]{display:none!important} 234 235 @keyframes nbTabFloat { 236 0%, 100% { transform: translateY(0); } 237 50% { transform: translateY(-1px); } 238 } 239 240 .nb-tab-float { 241 animation: nbTabFloat 3.2s ease-in-out infinite; 242 -webkit-backface-visibility:hidden; 243 backface-visibility:hidden; 244 } 245 246 .nb-vert-text{ 247 writing-mode: vertical-rl; 248 text-orientation: mixed; 249 transform: rotate(360deg); 250 letter-spacing: .18em; 251 display: inline-block; 252 line-height: 1; 253 white-space: nowrap; 254 } 255 256 .nb-room-link{ 257 -webkit-transform:translateZ(0); 258 transform:translateZ(0); 259 } 260 261 .nb-room-image{ 262 -webkit-transform:scale(1.01); 263 transform:scale(1.01); 264 } 265 266 .nb-room-desc{ 267 display:-webkit-box; 268 -webkit-line-clamp:2; 269 -webkit-box-orient:vertical; 270 overflow:hidden; 271 } 272 273 @media (hover:hover) and (pointer:fine){ 274 .nb-room-link:hover .nb-room-image{ 275 -webkit-transform:scale(1.07); 276 transform:scale(1.07); 277 } 278 } 279 280 @media (prefers-reduced-motion: reduce){ 281 .nb-tab-float{ animation: none !important; } 282 .nb-room-image{ transition:none !important; } 283 } 284 285 /* The body-level layer escapes transformed/clipped header and page wrappers. */ 286 [data-nav-booking-layer]{ 287 display:contents; 288 pointer-events:none; 289 } 290 291 [data-nav-booking-layer] > [data-nb-surface]{ 292 pointer-events:auto; 293 } 294 295 /* Keep the tab at its normal level and the dialog above the header, even on exit. */ 296 [data-nav-booking-layer] > [data-nb-surface="tab"]{ 297 z-index:70 !important; 298 } 299 300 [data-nav-booking-layer] > [data-nb-surface="overlay"]{ 301 z-index:2147483000 !important; 302 } 303 304 [data-nav-booking-layer] > [data-nb-surface="drawer"]{ 305 z-index:2147483001 !important; 306 } 307 308 /* Hide immediately, including during Alpine's leave transitions. */ 309 html.ahr-mobile-nav-open [data-nav-booking-layer], 310 html.ahr-mobile-open [data-nav-booking-layer], 311 body.ahr-mobile-nav-open [data-nav-booking-layer], 312 body.ahr-mobile-open [data-nav-booking-layer], 313 [data-nav-booking-layer][data-nb-menu-hidden="true"]{ 314 display:none !important; 315 visibility:hidden !important; 316 pointer-events:none !important; 317 } 318 </style> 319 320 321<div 322 data-nav-booking-root 323 x-data="navBookingDrawerBoracay()" 324 x-cloak 325 @nav-booking-close.window="closeBookingPanel()" 326 data-nb-line="0.10" 327 data-nb-offset="0" 328 data-nb-hyst="190" 329 330> 331 332 <template x-teleport="body"> 333 <div 334 data-nav-booking-layer 335 :data-nb-menu-hidden="navMenuOpen ? 'true' : 'false'" 336 x-cloak 337 > 338 339 <div 340 data-nb-surface="tab" 341 class="fixed left-0 top-1/2 -translate-y-1/2 z-[70]" 342 x-show="tabVisible && !showBooking && !navMenuOpen" 343 x-transition:enter="transition ease-out duration-250" 344 x-transition:enter-start="-translate-x-3 opacity-0" 345 x-transition:enter-end="translate-x-0 opacity-100" 346 x-transition:leave="transition ease-in duration-180" 347 x-transition:leave-start="translate-x-0 opacity-100" 348 x-transition:leave-end="-translate-x-3 opacity-0" 349 x-cloak 350 > 351 <button 352 type="button" 353 @click="openBookingPanel()" 354 class="nb-tab-float group relative inline-flex flex-col items-center justify-center gap-1 355 rounded-r-2xl bg-[#0047BB] text-white shadow-2xl backdrop-blur 356 w-3 lg:w-6 px-2 py-2 357 hover:bg-[#63666A] hover:text-white hover:border-black/10 358 transition-all duration-200 will-change-transform hover:-translate-y-0.5 359 focus:outline-none focus-visible:ring-2 focus-visible:ring-white/70" 360 aria-label="Book Now" 361 :aria-expanded="showBooking ? 'true' : 'false'" 362 aria-controls="nav-booking-drawer" 363 > 364 <span class="inline-flex h-3 w-3 items-center justify-center rounded-xl bg-white/15 group-hover:bg-white/20 transition"> 365 <i class="fa-solid fa-calendar-check text-[9px] lg:text-xs"></i> 366 </span> 367 368 <span class="nb-vert-text font-semibold uppercase text-[7px] lg:text-xs leading-none"> 369 BOOK NOW 370 </span> 371
372 <span 373 class="pointer-events-none absolute inset-0 rounded-r-2xl opacity-0 group-hover:opacity-10 transition-opacity duration-200" 374 style="background: radial-gradient(220px 220px at 50% 35%, #fff 0, transparent 70%);" 375 ></span> 376 </button> 377 </div> 378 379 380 <div 381 data-nb-surface="overlay" 382 x-show="showBooking && !navMenuOpen" 383 x-transition.opacity.duration.200ms 384 class="fixed inset-0 z-[75] bg-black/70 backdrop-blur-[2px]" 385 @click="closeBookingPanel()" 386 @keydown.escape.window="closeBookingPanel()" 387 x-cloak 388 ></div> 389 390 391 <aside 392 data-nb-surface="drawer" 393 id="nav-booking-drawer" 394 class="fixed left-0 top-0 z-[80] h-screen h-dvh w-[96vw] max-w-[560px]" 395 x-show="showBooking && !navMenuOpen" 396 x-transition:enter="transition ease-out duration-250" 397 x-transition:enter-start="-translate-x-full opacity-0" 398 x-transition:enter-end="translate-x-0 opacity-100" 399 x-transition:leave="transition ease-in duration-180" 400 x-transition:leave-start="translate-x-0 opacity-100" 401 x-transition:leave-end="-translate-x-full opacity-0" 402 x-cloak 403 @click.stop 404 role="dialog" 405 aria-modal="true" 406 aria-label="Astoria Boracay booking panel" 407 > 408 <div class="h-full bg-white/95 text-[#25282a] shadow-2xl border-r border-white/40 backdrop-blur-sm flex flex-col"> 409 410 <div class="shrink-0 px-5 sm:px-6 pt-5 pb-4 flex items-start justify-between gap-3 border-b border-black/10"> 411 <div> 412 <p class="text-[11px] font-semibold uppercase tracking-[0.22em] text-gray-500"> 413 Quick Booking 414 </p> 415 416 <h3 class="mt-1 text-lg sm:text-2xl font-semibold text-[#25282a]"> 417 Astoria Boracay 418 </h3> 419 420 <p class="mt-1 text-sm sm:text-base font-medium text-gray-600"> 421 Select your dates and guests to continue to our booking engine. 422 </p> 423 </div> 424 425 <button 426 type="button" 427 @click="closeBookingPanel()" 428 class="shrink-0 inline-flex h-10 w-10 items-center justify-center rounded-full bg-black/5 hover:bg-black/10 transition" 429 aria-label="Close booking panel" 430 > 431 <i class="fa-solid fa-xmark"></i> 432 </button> 433 </div> 434 435 436 <div class="flex-1 px-5 sm:px-6 py-5 overflow-y-auto"> 437 <form 438 x-ref="bookForm" 439 :action="bookingAction" 440 method="GET" 441 target="_blank" 442 @submit.prevent="submitBooking()" 443 class="space-y-4" 444 > 445 <div class="grid grid-cols-1 sm:grid-cols-2 gap-4"> 446 <div class="flex flex-col"> 447 <label for="nb_check_in" class="text-xs font-semibold mb-1 uppercase tracking-wide"> 448 Check In 449 </label> 450 451 <input 452 id="nb_check_in" 453 name="check_in_date" 454 type="date" 455 x-model="checkIn" 456 :min="today" 457 class="w-full rounded-xl border border-gray-300 focus:border-[#0047BB] focus:ring-[#0047BB] 458 px-3 py-2.5 text-sm bg-white shadow-sm" 459 required 460 /> 461 </div> 462 463 <div class="flex flex-col"> 464 <label for="nb_nights" class="text-xs font-semibold mb-1 uppercase tracking-wide"> 465 Nights 466 </label> 467 468 <input 469 id="nb_nights" 470 name="number_nights" 471 type="number" 472 min="1" 473 value="1" 474 class="w-full rounded-xl border border-gray-300 focus:border-[#0047BB] focus:ring-[#0047BB] 475 px-3 py-2.5 text-sm bg-white shadow-sm" 476 required 477 /> 478 </div> 479 </div> 480 481 <div class="flex flex-col"> 482 <label for="nb_guests" class="text-xs font-semibold mb-1 uppercase tracking-wide"> 483 Guest/s 484 </label> 485 486 <input 487 id="nb_guests" 488 name="number_adults" 489 type="number" 490 min="1" 491 max="10" 492 value="1" 493 class="w-full rounded-xl border border-gray-300 focus:border-[#0047BB] focus:ring-[#0047BB] 494 px-3 py-2.5 text-sm bg-white shadow-sm" 495 required 496 /> 497 </div> 498 499 <div class="pt-2"> 500 <button 501 type="submit" 502 class="w-full bg-[#0047BB] hover:bg-[#63666A] text-white font-bold 503 px-6 py-3 rounded-xl shadow transition text-[12px] uppercase tracking-[.18em]" 504 > 505 Book Astoria Boracay 506 </button> 507 508 <p class="mt-3 text-xs text-gray-500"> 509 Opens in a new tab. 510 </p> 511 </div> 512 </form> 513 514 515 <section class="mt-6 border-t border-black/10 pt-5 pb-1" aria-labelledby="nav-booking-rooms-title"> 516 <div class="flex items-end justify-between gap-4"> 517 <div> 518 <p class="text-[10px] font-semibold uppercase tracking-[0.22em] text-[#0047BB]"> 519 Accommodations 520 </p> 521 522 <h4 id="nav-booking-rooms-title" class="mt-1 text-base sm:text-lg font-semibold text-[#25282a
522]"> 523 Room Types 524 </h4> 525 </div> 526 527 <a 528 href="https://astoriaboracay.com/accommodations" 529 class="shrink-0 inline-flex items-center gap-1 rounded-full border border-[#0047BB]/30 bg-[#0047BB]/10 px-3 py-1.5 530 text-[10px] font-bold uppercase tracking-[.16em] text-[#0047BB] hover:bg-[#0047BB] hover:text-white transition" 531 aria-label="View accommodations page" 532 > 533 View page 534 <svg class="h-3.5 w-3.5" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" aria-hidden="true"> 535 <path stroke-linecap="round" stroke-linejoin="round" d="M9 5l7 7-7 7"/> 536 </svg> 537 </a> 538 </div> 539 540 <div class="mt-4 grid grid-cols-2 gap-3"> 541 <a 542 href="https://astoriaboracay.com/accommodations/deluxe-room" 543 class="nb-room-link group overflow-hidden rounded-2xl bg-white shadow-sm ring-1 ring-black/10 transition 544 hover:-translate-y-0.5 hover:shadow-lg focus:outline-none focus-visible:ring-2 focus-visible:ring-[#0047BB]" 545 aria-label="Learn more about Deluxe Rooms" 546 > 547 <span class="relative block aspect-[4/3] overflow-hidden bg-[#edf1f3]"> 548 <img 549 src="https://astoriaboracay.com/images/Rooms/deluxe.webp" 550 alt="Deluxe Rooms" 551 class="nb-room-image absolute inset-0 h-full w-full object-cover transition-transform duration-500" 552 loading="lazy" 553 decoding="async" 554 > 555 556 <span class="pointer-events-none absolute inset-0 bg-gradient-to-b from-black/5 via-transparent to-black/40"></span> 557 </span> 558 559 <span class="block px-3 py-3"> 560 <span class="block text-sm sm:text-base font-semibold leading-tight text-[#25282a]"> 561 Deluxe Rooms 562 </span> 563 564 <span class="nb-room-desc mt-1 block text-[11px] sm:text-xs leading-snug text-gray-600"> 565 Our Deluxe Rooms are perfect for small groups looking for chic hotel accommodation in the island. 566 </span> 567 568 <span class="mt-2 inline-flex items-center gap-1 text-[10px] font-bold uppercase tracking-[.16em] text-[#0047BB] group-hover:text-[#63666A] transition-colors"> 569 Learn more 570 <svg class="h-3.5 w-3.5" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" aria-hidden="true"> 571 <path stroke-linecap="round" stroke-linejoin="round" d="M9 5l7 7-7 7"/> 572 </svg> 573 </span> 574 </span> 575 </a> 576 <a 577 href="https://astoriaboracay.com/accommodations/deluxe-room#deluxe-pool-side" 578 class="nb-room-link group overflow-hidden rounded-2xl bg-white shadow-sm ring-1 ring-black/10 transition 579 hover:-translate-y-0.5 hover:shadow-lg focus:outline-none focus-visible:ring-2 focus-visible:ring-[#0047BB]" 580 aria-label="Learn more about Deluxe Pool Access Rooms" 581 > 582 <span class="relative block aspect-[4/3] overflow-hidden bg-[#edf1f3]"> 583 <img 584 src="https://astoriaboracay.com/images/Rooms/deluxe-pool-access.webp" 585 alt="Deluxe Pool Access Rooms" 586 class="nb-room-image absolute inset-0 h-full w-full object-cover transition-transform duration-500" 587 loading="lazy" 588 decoding="async" 589 > 590 591 <span class="pointer-events-none absolute inset-0 bg-gradient-to-b from-black/5 via-transparent to-black/40"></span> 592 </span> 593 594 <span class="block px-3 py-3"> 595 <span class="block text-sm sm:text-base font-semibold leading-tight text-[#25282a]"> 596 Deluxe Pool Access Rooms 597 </span> 598
599 <span class="nb-room-desc mt-1 block text-[11px] sm:text-xs leading-snug text-gray-600"> 600 A step away from some fun under the sun, our Deluxe Pool Room comes with a balcony that offers guests direct access to a relaxing swim. 601 </span> 602 603 <span class="mt-2 inline-flex items-center gap-1 text-[10px] font-bold uppercase tracking-[.16em] text-[#0047BB] group-hover:text-[#63666A] transition-colors"> 604 Learn more 605 <svg class="h-3.5 w-3.5" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" aria-hidden="true"> 606 <path stroke-linecap="round" stroke-linejoin="round" d="M9 5l7 7-7 7"/> 607 </svg> 608 </span> 609 </span> 610 </a> 611 <a 612 href="https://astoriaboracay.com/accommodations/premier" 613 class="nb-room-link group overflow-hidden rounded-2xl bg-white shadow-sm ring-1 ring-black/10 transition 614 hover:-translate-y-0.5 hover:shadow-lg focus:outline-none focus-visible:ring-2 focus-visible:ring-[#0047BB]" 615 aria-label="Learn more about Premier Rooms" 616 > 617 <span class="relative block aspect-[4/3] overflow-hidden bg-[#edf1f3]"> 618 <img 619 src="https://astoriaboracay.com/images/Rooms/premier.webp" 620 alt="Premier Rooms" 621 class="nb-room-image absolute inset-0 h-full w-full object-cover transition-transform duration-500" 622 loading="lazy" 623 decoding="async" 624 > 625 626 <span class="pointer-events-none absolute inset-0 bg-gradient-to-b from-black/5 via-transparent to-black/40"></span> 627 </span> 628 629 <span class="block px-3 py-3"> 630 <span class="block text-sm sm:text-base font-semibold leading-tight text-[#25282a]"> 631 Premier Rooms 632 </span> 633 634 <span class="nb-room-desc mt-1 block text-[11px] sm:text-xs leading-snug text-gray-600"> 635 Our Premier Rooms boasts of chic and spacious interiors furnished with a private veranda that opens to a stunning garden view of our swimming pool. 636 </span> 637 638 <span class="mt-2 inline-flex items-center gap-1 text-[10px] font-bold uppercase tracking-[.16em] text-[#0047BB] group-hover:text-[#63666A] transition-colors"> 639 Learn more 640 <svg class="h-3.5 w-3.5" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" aria-hidden="true"> 641 <path stroke-linecap="round" stroke-linejoin="round" d="M9 5l7 7-7 7"/> 642 </svg> 643 </span> 644 </span> 645 </a> 646 <a 647 href="https://astoriaboracay.com/accommodations/luxury-room" 648 class="nb-room-link group overflow-hidden rounded-2xl bg-white shadow-sm ring-1 ring-black/10 transition 649 hover:-translate-y-0.5 hover:shadow-lg focus:outline-none focus-visible:ring-2 focus-visible:ring-[#0047BB]" 650 aria-label="Learn more about Luxury Rooms" 651 > 652 <span class="relative block aspect-[4/3] overflow-hidden bg-[#edf1f3]"> 653 <img 654 src="https://astoriaboracay.com/images/Rooms/luxury.webp" 655 alt="Luxury Rooms" 656 class="nb-room-image absolute inset-0 h-full w-full object-cover transition-transform duration-500" 657 loading="lazy" 658 decoding="async" 659 > 660 661 <span class="pointer-events-none absolute inset-0 bg-gradient-to-b from-black/5 via-transparent to-black/40"></span> 662 </span> 663 664 <span class="block px-3 py-3"> 665 <span class="block text-sm sm:text-base font-semibold leading-tight text-[#25282a]"> 666 Luxury Rooms 667 </span> 668
669 <span class="nb-room-desc mt-1 block text-[11px] sm:text-xs leading-snug text-gray-600"> 670 Strikingly gorgeous with a contemporary finish, our Luxury Rooms bridge the gap between adventure and relaxation in a setting that marries leisure with style. 671 </span> 672 673 <span class="mt-2 inline-flex items-center gap-1 text-[10px] font-bold uppercase tracking-[.16em] text-[#0047BB] group-hover:text-[#63666A] transition-colors"> 674 Learn more 675 <svg class="h-3.5 w-3.5" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" aria-hidden="true"> 676 <path stroke-linecap="round" stroke-linejoin="round" d="M9 5l7 7-7 7"/> 677 </svg> 678 </span> 679 </span> 680 </a> 681 <a 682 href="https://astoriaboracay.com/accommodations/honeymoon-suite" 683 class="nb-room-link group overflow-hidden rounded-2xl bg-white shadow-sm ring-1 ring-black/10 transition 684 hover:-translate-y-0.5 hover:shadow-lg focus:outline-none focus-visible:ring-2 focus-visible:ring-[#0047BB]" 685 aria-label="Learn more about Honeymoon Suite" 686 > 687 <span class="relative block aspect-[4/3] overflow-hidden bg-[#edf1f3]"> 688 <img 689 src="https://astoriaboracay.com/images/Rooms/honeymoon.webp" 690 alt="Honeymoon Suite" 691 class="nb-room-image absolute inset-0 h-full w-full object-cover transition-transform duration-500" 692 loading="lazy" 693 decoding="async" 694 > 695 696 <span class="pointer-events-none absolute inset-0 bg-gradient-to-b from-black/5 via-transparent to-black/40"></span> 697 </span> 698 699 <span class="block px-3 py-3"> 700 <span class="block text-sm sm:text-base font-semibold leading-tight text-[#25282a]"> 701 Honeymoon Suite 702 </span> 703 704 <span class="nb-room-desc mt-1 block text-[11px] sm:text-xs leading-snug text-gray-600"> 705 Complemented by the luxury services and amenities of our resort, what awaits lovebirds is a magnificent Boracay island honeymoon that is to be cherished forever. 706 </span> 707 708 <span class="mt-2 inline-flex items-center gap-1 text-[10px] font-bold uppercase tracking-[.16em] text-[#0047BB] group-hover:text-[#63666A] transition-colors"> 709 Learn more 710 <svg class="h-3.5 w-3.5" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" aria-hidden="true"> 711 <path stroke-linecap="round" stroke-linejoin="round" d="M9 5l7 7-7 7"/> 712 </svg> 713 </span> 714 </span> 715 </a> 716 </div> 717 </section> 718 </div> 719 </div> 720 </aside> 721 </div> 722 </template> 723</div> 724 725 726 <style> 727 [x-cloak]{ display:none !important; } 728 729 /* Prevent horizontal scroll leaks globally */ 730 html, body { overflow-x: hidden; overscroll-behavior-x: none; } 731 @supports (scrollbar-gutter: stable) { 732 html { scrollbar-gutter: stable; } /* avoid extra right gap */ 733 } 734 735 /* ======= BASE HEADER ======= */ 736 .ahr-header{ 737 background:#E6E7E8; /* default */ 738 color:#ffffff; 739 border-bottom:1px solid rgba(255,255,255,0.15); 740 min-height:4rem; /* base */ 741 width:100%; 742 max-width:100vw; /* clamp to viewport */ 743 /* Keep dropdowns above the hero without clipping them at the header edge. */ 744 z-index:1000; 745 overflow:visible; 746 /* REMOVED: contain: paint; (clips fixed children like mobile menu) */ 747 } 748 /* Both axes must stay visible: overflow-x:hidden also clips vertical dropdowns. */ 749 .ahr-header #ahr-nav { overflow:visible; } 750 751 /* ======= SCROLLED COLOR STATE ======= */ 752 .ahr-header[data-ready="true"][data-scrolled="true"]{ 753 background:#0047BB; /* scrolled */ 754 color:#ffffff; 755 border-color:transparent; 756 } 757 758 /* Keep the header stable during the first paint, before Alpine initializes. */ 759 .ahr-desktop-nav { display:none; } 760 .ahr-mobile-topbar { 761 display:flex; 762 align-items:center; 763 justify-content:space-between; 764 gap:1rem; 765 } 766 .ahr-mobile-actions { 767 display:flex; 768 align-items:center; 769 flex-shrink:0; 770 gap:.25rem; 771 } 772 .mobile-nav-icon { color:#25282a; } 773 .ahr-header[data-ready="true"][data-scrolled="true"] .mobile-nav-icon, 774 html.ahr-nav-firstpaint-scrolled .ahr-header[data-ready="false"] .mobile-nav-icon { 775 color:#ffffff; 776 } 777 html.ahr-nav-firstpaint-scrolled .ahr-header[data-ready="false"] { 778 background:#0047BB; 779 color:#ffffff; 780 border-color:transparent; 781 } 782 .ahr-header.ahr-initializing, 783 .ahr-header.ahr-initializing * { 784 transition:none !important; 785 animation:none !important; 786 } 787 788 @media (min-width:1280px){ 789 .ahr-desktop-nav { display:flex; } 790 .ahr-mobile-topbar { display:none; } 791 } 792 793 /* ======= MOBILE/TABLET HEIGHTS (portrait by default) ======= */ 794 @media (max-width:1279px){ 795 .ahr-header{ min-height:3.25rem; } /* ~52px default */ 796 .ahr-header[data-ready="true"][data-scrolled="true"]{ min-height:3rem; } /* ~48px scrolled */ 797 .topbar-mobile{ height:3.25rem; } 798 .ahr-header[data-scrolled="true"] .topbar-mobile{ height:3rem; } 799 html.ahr-nav-firstpaint-scrolled .ahr-header[data-ready="false"]{ min-height:3rem; } 800 html.ahr-nav-firstpaint-scrolled .ahr-header[data-ready="false"] .topbar-mobile{ height:3rem; } 801 } 802 803 /* Landscape phones & tablets: adjusted paddings + bigger logo */ 804 @media (max-width:1279px) and (orientation: landscape){ 805 .ahr-header{ min-height:2.75rem; } /* ~44px default */ 806 .ahr-header[data-ready="true"][data-scrolled="true"]{ min-height:2.5rem; } /* ~40px scrolled */ 807 .topbar-mobile{ height:2.75rem; } 808 .ahr-header[data-scrolled="true"] .topbar-mobile{ height:2.5rem; } 809 html.ahr-nav-firstpaint-scrolled .ahr-header[data-ready="false"]{ min-height:2.5rem; } 810 html.ahr-nav-firstpaint-scrolled .ahr-header[data-ready="false"] .topbar-mobile{ height:2.5rem; } 811 #ahr-nav{ padding-left:clamp(12px,3vw,24px) !important; padding-right:clamp(12px,3vw,24px) !important; } 812 .topbar-mobile svg{ width:24px; height:24px; } 813 } 814 815 /* ======= SPECIAL TIGHT BAND: 1024â1279px ======= */ 816 @media (min-width:1024px) and (max-width:1279px){ 817 .ahr-header{ min-height:2.75rem; } /* ~44px default */ 818 .ahr-header[data-ready="true"][data-scrolled="true"]{ min-height:2.5rem; } /* ~40px scrolled */ 819 .topbar-mobile{ height:2.75rem; } 820 .ahr-header[data-scrolled="true"] .topbar-mobile{ height:2.5rem; } 821 html.ahr-nav-firstpaint-scrolled .ahr-header[data-ready="false"]{ min-height:2.5rem; } 822 html.ahr-nav-firstpaint-scrolled .ahr-header[data-ready="false"] .topbar-mobile{ height:2.5rem; } 823 #ahr-nav{ padding-top:0.25rem !important; padding-bottom:0.25rem !important; } 824 .topbar-mobile svg{ width:22px; height:22px; } 825 } 826 827 /* ======= DESKTOP (xl and up) ======= */ 828 @media (min-width:1280px){ .ahr-header{ min-height:5rem; } } /* h-20 for desktop */ 829 830 /* ======= MICRO UX HELPERS ======= */ 831 .logo-smooth { transition: transform 280ms cubic-bezier(.22,1,.36,1); will-change: transform; transform: translateZ(0); } 832 .fade-img { transition: opacity 220ms ease; will-change: opacity; } 833 834 /* Logo swap states */ 835 .logo-wrap, .m-logo-wrap { position: relative; } 836 .ahr-mobile-topbar .m-logo-wrap { width:11rem; height:3.5rem; } 837 .ahr-mobile-topbar .m-logo-wrap .logo-scaler { 838 position:relative; 839 display:flex; 840 align-items:center; 841 justify-content:flex-start; 842 width:100%; 843 height:100%; 844 } 845 .ahr-mobile-topbar .m-logo-wrap .logo-default, 846 .ahr-mobile-topbar .m-logo-wrap .logo-scrolled { 847 position:absolute; 848 inset:0; 849 width:100%; 850 height:100%; 851 object-fit:contain; 852 } 853 @media (min-width:768px) and (max-width:1279px){ 854 .ahr-mobile-topbar .m-logo-wrap { width:13rem; height:4rem; } 855 } 856 .logo-default { opacity: 1; } 857 .logo-scrolled { opacity: 0; } 858 .logo-wrap[data-scrolled="true"] .logo-default, 859 .m-logo-wrap[data-scrolled="true"] .logo-default { opacity: 0; } 860 .logo-wrap[data-scrolled="true"] .logo-scrolled, 861 .m-logo-wrap[data-scrolled="true"] .logo-scrolled { opacity: 1; } 862 html.ahr-nav-firstpaint-scrolled .ahr-header[data-ready="false"] .m-logo-wrap .logo-default { opacity:0; } 863 html.ahr-nav-firstpaint-scrolled .ahr-header[data-ready="false"] .m-logo-wrap .logo-scrolled { opacity:1; } 864 html.ahr-nav-firstpaint-scrolled .ahr-header[data-ready="false"] .m-logo-wrap .logo-scaler { transform:scale(.98); } 865 866 /* Slight scale change on mobile when scrolled (kept larger than before) */ 867 .m-logo-wrap[data-scrolled="false"] .logo-scaler { transform: scale(1.06); } 868 .m-logo-wrap[data-scrolled="true"] .logo-scaler { transform: scale(0.98); } 869 870 /* ======= NAV TYPOGRAPHY ======= */ 871 :root { --ahr-font: "Whitney", "Open Sans", sans-serif; } 872 .ahr-nav, .ahr-nav a, .ahr-nav button { font-family: var(--ahr-font); font-weight:600; letter-spacing:.01em; } 873 .ahr-nav { font-size: 1.0625rem; } 874 @media (max-width:1279px){ .ahr-nav { font-size: 1rem; } } 875 .ahr-mobile, .ahr-mobile a, .ahr-mobile button { font-family: var(--ahr-font); font-weight: 600; letter-spacing:.01em; font-size:1rem; } 876 877 /* ======= DESKTOP DROPDOWNS ======= */ 878 .menu-wrap { position: relative; } 879 /* Padding keeps the trigger-to-panel gap inside the hoverable dropdown layer. */ 880 .menu-layer { position:absolute; top:100%; max-width:100vw; padding-top:.35rem; } 881 .menu-panel { margin-top:0; } 882 883 /* ======= BOOKING DARK (desktop) ======= */ 884 .booking-dark label { color: #fff !important; } 885 .booking-dark select, 886 .booking-dark input[type="date"], 887 .booking-dark input[type="number"] { 888 background: rgba(255,255,255,.08) !important; 889 color: #fff !important; 890 border-color: rgba(255,255,255,.28) !important; 891 } 892 .booking-dark select:focus, 893 .booking-dark input:focus { 894 outline: none; 895 box-shadow: 0 0 0 3px rgba(255,255,255,.20); 896 border-color: rgba(255,255,255,.5) !important; 897 } 898 .booking-dark .chev { color: rgba(255,255,255,.65) !important; } 899 900 /* Native option text readable */ 901 .ahr-header select option { color:#111; } 902 903 /* Tap highlight removal */ 904 .ahr-header a, .ahr-header button { -webkit-tap-highlight-color: transparent; } 905 906 /* Desktop drawer (no backdrop) */ 907 .drawer-shell { position: fixed; inset: 0; z-index: 1200; pointer-events: none; overflow:hidden; } 908 .drawer-panel { pointer-events: auto; will-change: transform; } 909 910 /* Kill transitions on desktop only (â¥1280px) */ 911 @media (min-width:1280px){ 912 .ahr-header.no-animate, .ahr-header.no-animate *{ 913 transition:none !important; 914 animation:none !important; 915 } 916 } 917 918 /* Bold form UI in header */ 919 .ahr-header label, 920 .ahr-header input, 921 .ahr-header select, 922 .ahr-header textarea,
923 .ahr-header option { font-weight: 700 !important; } 924 .ahr-header input::placeholder, 925 .ahr-header textarea::placeholder { font-weight: 700; opacity: 1; } 926 927 /* iPad/similar width & overflow safety */ 928 @media (min-width:740px) and (max-width:1368px){ 929 .ahr-header, .ahr-header * { box-sizing: border-box; } 930 .ahr-header { width:100% !important; max-width:100% !important; margin-left:0 !important; margin-right:0 !important; } 931 #ahr-nav{ padding-left:clamp(16px,4vw,32px) !important; padding-right:clamp(16px,4vw,32px) !important; max-width:100% !important; } 932 } 933 934 935 /* ======= NAV SEARCH ======= */ 936 .ab1-nav-search-overlay{ 937 position:fixed; 938 inset:0; 939 z-index:10000; 940 display:flex; 941 align-items:flex-start; 942 justify-content:center; 943 padding:clamp(5.5rem, 12vh, 8rem) 1rem 1.5rem; 944 background:rgba(37,40,42,.42); 945 backdrop-filter:blur(10px); 946 -webkit-backdrop-filter:blur(10px); 947 } 948 .ab1-nav-search-card{ 949 width:min(100%, 640px); 950 border-radius:1.5rem; 951 border:1px solid rgba(255,255,255,.22); 952 background:#ffffff; 953 color:#25282a; 954 box-shadow:0 28px 90px rgba(37,40,42,.24); 955 } 956 .ab1-nav-search-field:focus{ outline:none; box-shadow:none; } 957</style> 958 959 960
961<script> 962 // Match a restored scroll position before Alpine takes ownership of the header state. 963 document.documentElement.classList.toggle('ahr-nav-firstpaint-scrolled', window.scrollY > 10); 964</script>
964 965 966<header 967 class="ahr-header ahr-initializing fixed top-0 w-full transition-colors duration-300 border-b" 968 data-ready="false" 969 data-scrolled="false" 970 x-data="{ 971 scrolled: false, 972 openMenu: null, 973 searchOpen: false, 974 searchQuery: 'accommodations', 975 activeDropdown: null, 976 showBooking: false, // DESKTOP (xl) booking strip visibility 977 mobileBookingOpen: false, 978 ticking: false, 979 logoDefault: 'https://astoriaboracay.com/images/ab1-logo.webp', 980 logoOnDark: 'https://astoriaboracay.com/images/ab1-logo-white.webp', 981 langs: [ 982 { flag: 'https://astoriaboracay.com/images/Flags/united-kingdom.webp', name: 'English', abbr: 'EN', code: 'en' }, 983 { flag: 'https://astoriaboracay.com/images/Flags/korea.webp', name: 'Korean', abbr: 'KO', code: 'ko' }, 984 { flag: 'https://astoriaboracay.com/images/Flags/china (1).webp', name: 'Traditional Chinese', abbr: 'ZH', code: 'zh-TW' }, 985 { flag: 'https://astoriaboracay.com/images/Flags/japan.webp', name: 'Japanese', abbr: 'JA', code: 'ja' }, 986 { flag: 'https://astoriaboracay.com/images/Flags/french.webp', name: 'French', abbr: 'FR', code: 'fr' }, 987 { flag: 'https://astoriaboracay.com/images/Flags/german.webp', name: 'German', abbr: 'DE', code: 'de' }, 988 { flag: 'https://astoriaboracay.com/images/Flags/spanish.webp', name: 'Spanish', abbr: 'ES', code: 'es' }, 989 { flag: 'https://astoriaboracay.com/images/Flags/arabic.webp', name: 'Arabic', abbr: 'AR', code: 'ar' } 990 ], 991 selectedLang: { flag: 'https://astoriaboracay.com/images/Flags/united-kingdom.webp', name: 'English', abbr: 'EN', code: 'en' }, 992 993readCookie(name){ 994 const found = document.cookie 995 .split(';') 996 .map(c => c.trim()) 997 .find(c => c.startsWith(name + '=')); 998 999 return found ? decodeURIComponent(found.substring(name.length + 1)) : ''; 1000 }, 1001
1002 normalizeLangCode(code){ 1003 const raw = String(code || '').trim(); 1004 if (!raw) return 'en'; 1005 1006 const lower = raw.toLowerCase(); 1007 1008 const aliases = { 1009 'zh-tw': 'zh-TW', 1010 'zh-cn': 'zh-CN', 1011 'in': 'id', // old/invalid Indonesian alias guard 1012 'iw': 'he', 1013 }; 1014 1015 return aliases[lower] 1016 || this.langs.find(l => String(l.code).toLowerCase() === lower)?.code 1017 || raw; 1018 }, 1019 1020 googleTranslateDomains(){ 1021 const host = window.location.hostname; 1022 const parts = host.split('.').filter(Boolean); 1023 1024 const domains = ['', host, '.' + host]; 1025 1026 if (parts.length >= 2) { 1027 domains.push('.' + parts.slice(-2).join('.')); 1028 } 1029 1030 return [...new Set(domains.filter(Boolean))]; 1031 }, 1032 1033 clearGoogleTranslateCookies(){ 1034 const expired = 'expires=Thu, 01 Jan 1970 00:00:00 GMT'; 1035 1036 document.cookie = 'googtrans=;' + expired + ';path=/'; 1037 1038 this.googleTranslateDomains().forEach(domain => { 1039 document.cookie = 'googtrans=;' + expired + ';path=/;domain=' + domain; 1040 }); 1041 }, 1042 1043 writeGoogleTranslateCookie(code){ 1044 const value = '/en/' + code; 1045 1046 document.cookie = 'googtrans=' + encodeURIComponent(value) + ';path=/;SameSite=Lax'; 1047 1048 this.googleTranslateDomains().forEach(domain => { 1049 document.cookie = 'googtrans=' + encodeURIComponent(value) + ';path=/;domain=' + domain + ';SameSite=Lax'; 1050 }); 1051 }, 1052 1053 getSavedLangCode(){ 1054 const googtrans = this.readCookie('googtrans'); 1055 const target = googtrans 1056 ? googtrans.split('/').filter(Boolean).pop() 1057 : ''; 1058
1059 return this.normalizeLangCode(target || localStorage.getItem('preferred_lang') || 'en'); 1060 }, 1061 1062 setSelectedFromCode(code){ 1063 const normalized = this.normalizeLangCode(code); 1064 const found = this.langs.find(l => String(l.code).toLowerCase() === String(normalized).toLowerCase()); 1065 this.selectedLang = found || this.langs[0]; 1066 }, 1067 1068 setSelectedFromCookie(){ 1069 this.setSelectedFromCode(this.getSavedLangCode()); 1070 }, 1071 1072 setLanguage(code){ 1073 const normalized = this.normalizeLangCode(code); 1074 1075 localStorage.setItem('preferred_lang', normalized); 1076 this.setSelectedFromCode(normalized); 1077 1078 /* 1079 English is the original page language. 1080 Do not save /en/en, because Google Translate may leave the DOM in a translated state. 1081 Clear the cookie and reload the original page. 1082 */ 1083 if (normalized === 'en') { 1084 this.clearGoogleTranslateCookies(); 1085 1086 const loader = document.getElementById('ab1-translate-loader'); 1087 if (loader) loader.classList.add('is-visible'); 1088 1089 window.setTimeout(() => { 1090 window.location.reload(); 1091 }, 250); 1092 1093 return; 1094 } 1095 1096 this.writeGoogleTranslateCookie(normalized); 1097 1098 if (window.ab1RunTranslateWithLoader) { 1099 window.ab1RunTranslateWithLoader(normalized); 1100 } else if (window.applyTranslation) { 1101 window.applyTranslation(normalized); 1102 } 1103 }, 1104 1105 openSearch(){ 1106 this.openMenu = null; 1107 this.showBooking = false; 1108 this.mobileBookingOpen = false; 1109 this.searchOpen = true; 1110 this.$nextTick(() => document.getElementById('ab1-nav-search-input')?.focus()); 1111 }, 1112 closeSearch(){ this.searchOpen = false; }, 1113 1114 openHover(id){ this.openMenu = id; }, 1115 closeHover(id){ if (this.openMenu === id) this.openMenu = null; }, 1116 1117 onScroll(){ const next = window.scrollY > 10; if (next !== this.scrolled) this.scrolled = next; }, 1118 1119 navClick(e){ 1120 const a = e.target.closest('a[href]'); 1121 if (!a) return; 1122 if (e.metaKey || e.ctrlKey || e.shiftKey || e.altKey || a.getAttribute('target') === '_blank' || e.button !== 0) return; 1123 if (window.matchMedia('(min-width: 1280px)').matches) { 1124 this.openMenu = null; 1125 this.$nextTick(() => this.$root.classList.add('no-animate')); 1126 } 1127 } 1128 }" 1129 x-init=" 1130 setSelectedFromCookie(); 1131 scrolled = window.scrollY > 10; 1132 $el.dataset.scrolled = scrolled ? 'true' : 'false'; 1133 $el.dataset.ready = 'true'; 1134 document.documentElement.classList.remove('ahr-nav-firstpaint-scrolled'); 1135 $nextTick(() => requestAnimationFrame(() => $el.classList.remove('ahr-initializing'))); 1136 1137 const handleScroll = () => { 1138 if (!ticking) { 1139 requestAnimationFrame(() => { onScroll(); ticking = false; }); 1140 ticking = true; 1141 } 1142 }; 1143 window.addEventListener('scroll', handleScroll, { passive: true }); 1144 " 1145 x-effect="document.body.classList.toggle('ahr-mobile-open', openMenu === 'mobile')" 1146 @click.away="openMenu = null" 1147 @click.capture="navClick($event)" 1148 :data-scrolled="scrolled" 1149> 1150 1151 1152 <img src="https://astoriaboracay.com/images/ab1-logo.webp" alt="" class="hidden" aria-hidden="true"> 1153 <img src="https://astoriaboracay.com/images/ab1-logo-white.webp" alt="" class="hidden" aria-hidden="true"> 1154 1155 <nav id="ahr-nav" class="relative mx-auto px-4 sm:px-6 lg:px-8 max-w-[min(1575px,100vw)]"> 1156 1157 1158 <div class="ahr-desktop-nav hidden xl:flex items-center justify-between h-16 md:h-20 gap-3" x-show="!scrolled" x-cloak> 1159 1160 <a href="https://astoriaboracay.com" aria-label="AHR Home" class="shrink-0"> 1161 <div class="logo-wrap w-56 md:w-72 h-12 md:h-16" data-scrolled="false" :data-scrolled="false"> 1162 <div class="logo-smooth logo-scaler h-full w-full relative flex items-center justify-start"> 1163 <img src="https://astoriaboracay.com/images/ab1-logo.webp" :src="logoDefault" 1164 onerror="this.onerror=null; this.src='https://astoriaboracay.com/images/ab1-logo.webp';" 1165 alt="Astoria Hotels and Resorts" 1166 class="fade-img absolute inset-0 h-full w-full object-contain logo-default"/> 1167 <img src="https://astoriaboracay.com/images/ab1-logo-white.webp" :src="logoOnDark" class="fade-img absolute inset-0 h-full w-full object-contain logo-scrolled" alt=""> 1168 </div> 1169 </div> 1170 </a> 1171 1172 1173 <div class="flex items-center gap-6 min-w-0"> 1174 <div class="ahr-nav flex items-center gap-5 2xl:gap-6 min-w-0"> 1175 <a href="https://astoriaboracay.com" class="hover:opacity-80 whitespace-nowrap text-[#63666a]">Home</a> 1176 1177 1178 <div class="menu-wrap" @mouseenter="openHover('about')" @mouseleave="closeHover('about')"> 1179 <div class="inline-flex items-center gap-1 text-[#63666A]"> 1180 <a href="https://astoriaboracay.com/about" class="hover:opacity-80 whitespace-nowrap text-[#63666a]">About</a> 1181 <button type="button" 1182 class="p-1 -mr-1 hover:opacity-80" 1183 :aria-expanded="openMenu==='about'" 1184 aria-controls="menu-about" 1185 @click.prevent="openMenu = openMenu==='about' ? null : 'about'"> 1186 <svg class="w-4 h-4" fill="none" stroke="currentColor" stroke-width="2" viewBox="0 0 24 24"> 1187 <path stroke-linecap="round" stroke-linejoin="round" d="M19 9l-7 7-7-7"/> 1188 </svg> 1189 </button> 1190 </div> 1191 <div class="menu-layer left-0 z-[900]"> 1192 <div id="menu-about" 1193 x-show="openMenu==='about'" 1194 x-transition.opacity.duration.120ms 1195 x-cloak 1196 class="menu-panel w-80 rounded-md shadow-lg bg-white text-[#63666a] ring-1 ring-black/5 overflow-hidden"> 1197 <a @click="openMenu=null" href="https://astoriaboracay.com/amenities" class="block px-4 py-2 hover:bg-gray-100">Amenities</a> 1198 <a @click="openMenu=null" href="https://astoriaboracay.com/csr" class="block px-4 py-2 hover:bg-gray-100">CSR</a> 1199 <a @click="openMenu=null" href="https://astoriaboracay.com/faqs" class="block px-4 py-2 hover:bg-gray-100">FAQs</a> 1200 <a @click="openMenu=null" href="https://astoriaboracay.com/blogs" class="block px-4 py-2 hover:bg-gray-100">Blogs</a> 1201 <a @click="openMenu=null" href="https://astoriaboracay.com/special-offers" class="block px-4 py-2 hover:bg-gray-100">Promos</a> 1202 </div> 1203 </div> 1204 </div> 1205 1206 1207 <div class="menu-wrap" @mouseenter="openHover('accommodations')" @mouseleave="closeHover('accommodations')"> 1208 <div class="inline-flex items-center gap-1 text-[#63666a]"> 1209 <a href="https://astoriaboracay.com/accommodations" class="hover:opacity-80 whitespace-nowrap"> 1210 Accommodations 1211 </a> 1212 <button type="button" 1213 class="p-1 -mr-1 hover:opacity-80" 1214 :aria-expanded="openMenu==='accommodations'" 1215 aria-controls="menu-accommodations" 1216 @click.prevent="openMenu = openMenu==='accommodations' ? null : 'accommodations'"> 1217 <svg class="w-4 h-4" fill="none" stroke="currentColor" stroke-width="2" viewBox="0 0 24 24"> 1218 <path stroke-linecap="round" stroke-linejoin="round" d="M19 9l-7 7-7-7"/> 1219 </svg> 1220 </button> 1221 </div> 1222 1223 <div class="menu-layer left-0 z-[900]"> 1224 <div id="menu-accommodations" 1225 x-show="openMenu==='accommodations'" 1226 x-transition.opacity.duration.120ms 1227 x-cloak 1228 class="menu-panel w-80 rounded-md shadow-lg bg-white text-[#63666A] ring-1 ring-black/5 overflow-hidden"> 1229 <a @click="openMenu=null" href="https://astoriaboracay.com/accommodations/deluxe-room" class="block px-4 py-2 hover:bg-gray-100">Deluxe Rooms</a> 1230 <a @click="openMenu=null" href="https://astoriaboracay.com/accommodations/premier" class="block px-4 py-2 hover:bg-gray-100">Premier Room</a> 1231 <a @click="openMenu=null" href="https://astoriaboracay.com/accommodations/luxury-room" class="block px-4 py-2 hover:bg-gray-100">Luxury Room</a> 1232 <a @click="openMenu=null" href="https://astoriaboracay.com/accommodations/honeymoon-suite" class="block px-4 py-2 hover:bg-gray-100">Honeymoon Suite</a> 1233 </div> 1234 </div> 1235 </div> 1236 1237 1238 <div class="menu-wrap z-[900] text-[#63666a]"> 1239 <a href="https://astoriaboracay.com/meetings-events" class="hover:opacity-80 whitespace-nowrap"> 1240 Meetings & Events 1241 </a> 1242 </div> 1243 1244 1245 <div> 1246 <a href="https://astoriaboracay.com/food-beverages" class="flex justify-between w-full py-2 font-semibold text-[#63666a]">
1247 <span>F&B</span> 1248 </a> 1249 </div> 1250 1251 <a href="https://astoriaboracay.com/contact-us" class="hover:opacity-80 whitespace-nowrap text-[#63666a]">Contact Us</a> 1252 </div> 1253 1254 1255 <div class="hidden xl:block relative z-[1000] shrink-0 text-[#63666a]"> 1256 <div class="menu-wrap" @mouseenter="openHover('language')" @mouseleave="closeHover('language')"> 1257 <button class="inline-flex items-center gap-2 hover:opacity-80 font-semibold" 1258 :aria-expanded="openMenu==='language'" 1259 @click="openMenu = openMenu==='language' ? null : 'language'"> 1260 <img :src="selectedLang.flag" class="w-5 h-5 rounded-sm" alt=""> 1261 <span class="hidden 2xl:inline" x-text="selectedLang.name"></span> 1262 <span class="2xl:hidden" x-text="selectedLang.abbr"></span> 1263 <svg class="w-4 h-4" fill="none" stroke="currentColor" stroke-width="2" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" d="M19 9l-7 7-7-7"/></svg> 1264 </button> 1265 <div class="menu-layer right-0 z-[1000]"> 1266 <div x-show="openMenu==='language'" x-transition.opacity.duration.120ms x-cloak 1267 class="menu-panel w-64 rounded-md shadow-xl bg-white text-[#25282a] ring-1 ring-black/5 overflow-hidden font-semibold"> 1268 <template x-for="lang in langs" :key="lang.code"> 1269 <a href="#" class="flex items-center gap-2 px-4 py-2 hover:bg-gray-100" 1270 @click.prevent="setLanguage(lang.code); openMenu=null;"> 1271 <img :src="lang.flag" class="w-5 h-5 rounded-sm" alt=""> 1272 <span x-text="lang.name"></span> 1273 <span class="ml-auto opacity-70" x-text="'(' + lang.abbr + ')'"></span> 1274 </a> 1275 </template> 1276 </div> 1277 </div> 1278 </div> 1279 </div> 1280 1281 1282 <button 1283 type="button" 1284 @click.stop="openSearch()" 1285 class="inline-flex h-10 w-10 shrink-0 items-center justify-center rounded-full border border-[#25282a]/20 text-[#25282a] transition hover:border-[#0047bb] hover:bg-[#0047bb] hover:text-white" 1286 aria-label="Search Astoria Palawan" 1287 > 1288 <svg class="h-5 w-5" fill="none" stroke="currentColor" stroke-width="2" viewBox="0 0 24 24" aria-hidden="true"> 1289 <path stroke-linecap="round" stroke-linejoin="round" d="m21 21-4.35-4.35M10.5 18a7.5 7.5 0 1 1 0-15 7.5 7.5 0 0 1 0 15Z"/> 1290 </svg> 1291 </button> 1292 1293 1294 <div class="hidden xl:block shrink-0" x-show="!showBooking" x-transition.opacity.duration.150ms x-cloak> 1295 <button 1296 @click.stop="showBooking = true" 1297 class="bg-[#0047BB] text-white hover:brightness-110 font-bold px-5 py-2.5 rounded-xl shadow transition text-sm uppercase tracking-widest"> 1298 Book Now 1299 </button> 1300 </div> 1301 1302 </div> 1303 </div> 1304 1305 1306 1307 <div class="ahr-desktop-nav hidden xl:flex items-center justify-between h-16 md:h-20 gap-3" x-show="scrolled" x-cloak> 1308 1309 <a href="https://astoriaboracay.com" aria-label="AHR Home" class="shrink-0"> 1310 <div class="logo-wrap w-56 md:w-72 h-12 md:h-16" data-scrolled="true" :data-scrolled="true"> 1311 <div class="logo-smooth logo-scaler h-full w-full relative flex items-center justify-start"> 1312 <img src="https://astoriaboracay.com/images/ab1-logo.webp" :src="logoDefault" 1313 onerror="this.onerror=null; this.src='https://astoriaboracay.com/images/ab1-logo.webp';" 1314 alt="" 1315 class="fade-img absolute inset-0 h-full w-full object-contain logo-default"/> 1316 <img src="https://astoriaboracay.com/images/ab1-logo-white.webp" :src="logoOnDark" 1317 class="fade-img absolute inset-0 h-full w-full object-contain logo-scrolled" 1318 alt="Astoria Hotels and Resorts"/> 1319 </div> 1320 </div> 1321 </a> 1322 1323 1324 <div class="flex items-center gap-6 min-w-0"> 1325 <div class="ahr-nav flex items-center gap-5 2xl:gap-6 min-w-0 text-white"> 1326 <a href="https://astoriaboracay.com" class="hover:opacity-80 whitespace-nowrap text-white">Home</a> 1327 1328 1329 <div class="menu-wrap" @mouseenter="openHover('about')" @mouseleave="closeHover('about')"> 1330 <div class="inline-flex items-center gap-1 text-white"> 1331 <a href="https://astoriaboracay.com/about" class="hover:opacity-80 whitespace-nowrap text-white">About</a> 1332 <button type="button" 1333 class="p-1 -mr-1 hover:opacity-80 text-white" 1334 :aria-expanded="openMenu==='about'" 1335 aria-controls="menu-about" 1336 @click.prevent="openMenu = openMenu==='about' ? null : 'about'"> 1337 <svg class="w-4 h-4" fill="none" stroke="currentColor" stroke-width="2" viewBox="0 0 24 24"> 1338 <path stroke-linecap="round" stroke-linejoin="round" d="M19 9l-7 7-7-7"/> 1339 </svg> 1340 </button> 1341 </div> 1342 <div class="menu-layer left-0 z-[900]"> 1343 <div id="menu-about" 1344 x-show="openMenu==='about'" 1345 x-transition.opacity.duration.120ms 1346 x-cloak 1347 class="menu-panel w-80 rounded-md shadow-lg bg-white text-[#63666a] ring-1 ring-black/5 overflow-hidden"> 1348 <a @click="openMenu=null" href="https://astoriaboracay.com/amenities" class="block px-4 py-2 hover:bg-gray-100">Amenities</a> 1349 <a @click="openMenu=null" href="https://astoriaboracay.com/csr" class="block px-4 py-2 hover:bg-gray-100">CSR</a> 1350 <a @click="openMenu=null" href="https://astoriaboracay.com/faqs" class="block px-4 py-2 hover:bg-gray-100">FAQs</a> 1351 <a @click="openMenu=null" href="https://astoriaboracay.com/blogs" class="block px-4 py-2 hover:bg-gray-100">Blogs</a> 1352 <a @click="openMenu=null" href="https://astoriaboracay.com/special-offers" class="block px-4 py-2 hover:bg-gray-100">Promos</a> 1353 </div> 1354 </div> 1355 </div> 1356 1357 1358 <div class="menu-wrap" @mouseenter="openHover('accommodations')" @mouseleave="closeHover('accommodations')"> 1359 <div class="inline-flex items-center gap-1 text-white"> 1360 <a href="https://astoriaboracay.com/accommodations" class="hover:opacity-80 whitespace-nowrap text-white"> 1361 Accommodations 1362 </a> 1363 <button type="button" 1364 class="p-1 -mr-1 hover:opacity-80 text-white" 1365 :aria-expanded="openMenu==='accommodations'" 1366 aria-controls="menu-accommodations" 1367 @click.prevent="openMenu = openMenu==='accommodations' ? null : 'accommodations'"> 1368 <svg class="w-4 h-4" fill="none" stroke="currentColor" stroke-width="2" viewBox="0 0 24 24"> 1369 <path stroke-linecap="round" stroke-linejoin="round" d="M19 9l-7 7-7-7"/> 1370 </svg> 1371 </button> 1372 </div> 1373 1374 <div class="menu-layer left-0 z-[900]"> 1375 <div id="menu-accommodations" 1376 x-show="openMenu==='accommodations'" 1377 x-transition.opacity.duration.120ms 1378 x-cloak 1379 class="menu-panel w-80 rounded-md shadow-lg bg-white text-[#63666A] ring-1 ring-black/5 overflow-hidden"> 1380 <a @click="openMenu=null" href="https://astoriaboracay.com/accommodations/deluxe-room" class="block px-4 py-2 hover:bg-gray-100">Deluxe Rooms</a> 1381 <a @click="openMenu=null" href="https://astoriaboracay.com/accommodations/premier" class="block px-4 py-2 hover:bg-gray-100">Premier Room</a> 1382 <a @click="openMenu=null" href="https://astoriaboracay.com/accommodations/luxury-room" class="block px-4 py-2 hover:bg-gray-100">Luxury Room</a> 1383 <a @click="openMenu=null" href="https://astoriaboracay.com/accommodations/honeymoon-suite" class="block px-4 py-2 hover:bg-gray-100">Honeymoon Suite</a> 1384 </div> 1385 </div> 1386 </div> 1387 1388 1389 <div class="menu-wrap z-[900]"> 1390 <a href="https://astoriaboracay.com/meetings-events" class="hover:opacity-80 whitespace-nowrap text-white"> 1391 Meetings & Events 1392 </a> 1393 </div> 1394 1395 1396 <div> 1397 <a href="https://astoriaboracay.com/food-beverages" class="flex justify-between w-full py-2 font-semibold text-white hover:opacity-80">
1398 <span>F&B</span> 1399 </a> 1400 </div> 1401 1402 <a href="https://astoriaboracay.com/contact-us" class="hover:opacity-80 whitespace-nowrap text-white">Contact Us</a> 1403 </div> 1404 1405 1406 <div class="hidden xl:block relative z-[1000] shrink-0 text-white"> 1407 <div class="menu-wrap" @mouseenter="openHover('language')" @mouseleave="closeHover('language')"> 1408 <button class="inline-flex items-center gap-2 hover:opacity-80 font-semibold text-white" 1409 :aria-expanded="openMenu==='language'" 1410 @click="openMenu = openMenu==='language' ? null : 'language'"> 1411 <img :src="selectedLang.flag" class="w-5 h-5 rounded-sm" alt=""> 1412 <span class="hidden 2xl:inline" x-text="selectedLang.name"></span> 1413 <span class="2xl:hidden" x-text="selectedLang.abbr"></span> 1414 <svg class="w-4 h-4" fill="none" stroke="currentColor" stroke-width="2" viewBox="0 0 24 24"> 1415 <path stroke-linecap="round" stroke-linejoin="round" d="M19 9l-7 7-7-7"/> 1416 </svg> 1417 </button> 1418 <div class="menu-layer right-0 z-[1000]"> 1419 <div x-show="openMenu==='language'" x-transition.opacity.duration.120ms x-cloak 1420 class="menu-panel w-64 rounded-md shadow-xl bg-white text-[#25282a] ring-1 ring-black/5 overflow-hidden font-semibold"> 1421 <template x-for="lang in langs" :key="lang.code"> 1422 <a href="#" class="flex items-center gap-2 px-4 py-2 hover:bg-gray-100" 1423 @click.prevent="setLanguage(lang.code); openMenu=null;"> 1424 <img :src="lang.flag" class="w-5 h-5 rounded-sm" alt=""> 1425 <span x-text="lang.name"></span> 1426 <span class="ml-auto opacity-70" x-text="'(' + lang.abbr + ')'"></span> 1427 </a> 1428 </template> 1429 </div> 1430 </div> 1431 </div> 1432 </div> 1433 1434 1435 <button 1436 type="button" 1437 @click.stop="openSearch()" 1438 class="inline-flex h-10 w-10 shrink-0 items-center justify-center rounded-full border border-white/35 text-white transition hover:border-white hover:bg-white hover:text-[#0047BB]" 1439 aria-label="Search Astoria Palawan" 1440 > 1441 <svg class="h-5 w-5" fill="none" stroke="currentColor" stroke-width="2" viewBox="0 0 24 24" aria-hidden="true"> 1442 <path stroke-linecap="round" stroke-linejoin="round" d="m21 21-4.35-4.35M10.5 18a7.5 7.5 0 1 1 0-15 7.5 7.5 0 0 1 0 15Z"/> 1443 </svg> 1444 </button> 1445 1446 1447 <div class="hidden xl:block shrink-0" x-show="!showBooking" x-transition.opacity.duration.150ms x-cloak> 1448 <button 1449 @click.stop="showBooking = true" 1450 class="bg-white border border-white/60 text-[#25282a] font-bold px-5 py-2.5 rounded-xl shadow transition text-sm uppercase tracking-widest"> 1451 Book Now 1452 </button> 1453 </div> 1454 </div> 1455 </div> 1456 1457 1458 <div 1459 class="hidden xl:block absolute left-1/2 top-full -translate-x-1/2 mt-2 z-[1000] w-[min(92vw,900px)]" 1460 x-show="showBooking" 1461 x-transition:enter="transition ease-out duration-200" 1462 x-transition:enter-start="opacity-0 -translate-y-2" 1463 x-transition:enter-end="opacity-100 translate-y-0" 1464 x-transition:leave="transition ease-in duration-150" 1465 x-transition:leave-start="opacity-100 translate-y-0" 1466 x-transition:leave-end="opacity-0 -translate-y-2" 1467 x-cloak 1468 @click.outside="showBooking = false" 1469 > 1470 <div class="relative rounded-2xl border border-black/10 bg-white text-[#25282a] shadow-2xl"> 1471 <button 1472 @click="showBooking = false" 1473 aria-label="Close booking form" 1474 class="absolute right-3 top-3 p-2 rounded-md hover:bg-gray-100 transition" 1475 > 1476 <svg class="w-5 h-5" fill="none" stroke="currentColor" stroke-width="2" viewBox="0 0 24 24"> 1477 <path stroke-linecap="round" stroke-linejoin="round" d="M6 18L18 6M6 6l12 12"/> 1478 </svg> 1479 </button> 1480 1481 <form 1482 x-data="{ 1483 actionCurrent: 'https://book-directonline.com/properties/AstoriaBoracaydirect?', 1484 today: (new Date(Date.now() - new Date().getTimezoneOffset()*60000)).toISOString().slice(0,10) 1485 }" 1486 :action="actionCurrent" 1487 method="GET" 1488 target="_blank" 1489 class="p-4 md:p-6" 1490 > 1491 <h3 class="text-base md:text-lg font-bold mb-3 pr-10">Quick Booking â Astoria Boracay</h3> 1492 1493 <div class="grid grid-cols-1 md:[grid-template-columns:1fr_.5fr_.5fr_auto] gap-3 items-end"> 1494 <div class="flex flex-col"> 1495 <label for="check_in_date_desk" class="text-xs font-semibold mb-2 uppercase tracking-wide">Check In</label> 1496 <input name="check_in_date" id="check_in_date_desk" type="date" 1497 :min="today" 1498 class="rounded-lg border border-gray-300 focus:border-[#25282a
1498] focus:ring-[#25282a] px-3 py-2 text-sm bg-white w-full shadow-sm" required /> 1499 </div> 1500 1501 <div class="flex flex-col"> 1502 <label for="number_nights_desk" class="text-xs font-semibold mb-2 uppercase tracking-wide">Nights</label> 1503 <input class="rounded-lg border border-gray-300 focus:border-[#25282a] focus:ring-[#25282a] px-3 py-2 text-sm bg-white w-full shadow-sm" 1504 name="number_nights" id="number_nights_desk" type="number" min="1" value="1" required /> 1505 </div> 1506 1507 <div class="flex flex-col"> 1508 <label for="number_adults_desk" class="text-xs font-semibold mb-2 uppercase tracking-wide">Guest/s</label> 1509 <input class="rounded-lg border border-gray-300 focus:border-[#25282a] focus:ring-[#25282a] px-3 py-2 text-sm bg-white w-full shadow-sm" 1510 name="number_adults" id="number_adults_desk" type="number" min="1" max="4" value="1" required /> 1511 </div> 1512 1513 <div class="flex items-end"> 1514 <button type="submit" 1515 class="w-full md:w-auto bg-[#0047BB] hover:bg-[#63666a] text-white font-bold px-8 py-3 rounded-xl shadow transition text-sm uppercase tracking-widest"> 1516 Book Now 1517 </button> 1518 </div> 1519 </div> 1520 </form> 1521 </div> 1522 </div> 1523 1524 1525 <div class="ahr-mobile-topbar topbar-mobile flex xl:hidden items-center justify-between gap-4"> 1526 <a href="https://astoriaboracay.com" aria-label="AHR Home" class="shrink-0"> 1527 1528 <div class="m-logo-wrap w-44 h-14 md:w-52 md:h-16" data-scrolled="false" :data-scrolled="scrolled"> 1529 <div class="logo-smooth logo-scaler h-full w-full relative flex items-center justify-start"> 1530 1531 <img 1532 src="https://astoriaboracay.com/images/ab1-logo.webp" 1533 :src="logoDefault" 1534 onerror="this.onerror=null; this.src='https://astoriaboracay.com/images/ab1-logo.webp';" 1535 class="fade-img absolute inset-0 h-full w-full object-contain logo-default" 1536 alt="Astoria Current" 1537 > 1538 1539 <img 1540 src="https://astoriaboracay.com/images/ab1-logo-white.webp" 1541 :src="logoOnDark" 1542 class="fade-img absolute inset-0 h-full w-full object-contain logo-scrolled" 1543 alt="Astoria Current" 1544 > 1545 </div> 1546 </div> 1547 </a> 1548 1549 <div class="ahr-mobile-actions flex shrink-0 items-center gap-1"> 1550 <button 1551 type="button" 1552 class="p-2 shrink-0" 1553 @click.stop="openSearch()" 1554 aria-label="Search Astoria Palawan" 1555 > 1556 <svg class="mobile-nav-icon w-6 h-6 transition-colors duration-200" 1557 fill="none" stroke="currentColor" stroke-width="2" viewBox="0 0 24 24" aria-hidden="true"> 1558 <path stroke-linecap="round" stroke-linejoin="round" d="m21 21-4.35-4.35M10.5 18a7.5 7.5 0 1 1 0-15 7.5 7.5 0 0 1 0 15Z"/> 1559 </svg> 1560 </button> 1561 1562 <button class="p-2 shrink-0" 1563 @click.stop=" 1564 openMenu = openMenu === 'mobile' ? null : 'mobile'; 1565 searchOpen = false; 1566 if (openMenu === 'mobile') { 1567 window.dispatchEvent(new CustomEvent('nav-booking-close')); 1568 } 1569 " 1570 aria-label="Open menu"> 1571 <svg class="mobile-nav-icon w-7 h-7 transition-colors duration-200" 1572 fill="none" stroke="currentColor" stroke-width="2" viewBox="0 0 24 24"> 1573 <path stroke-linecap="round" stroke-linejoin="round" d="M4 6h16M4 12h16M4 18h16"/> 1574 </svg> 1575 </button> 1576 </div> 1577 </div> 1578 1579 </nav> 1580 1581 1582 1583 1584 <div 1585 x-show="searchOpen" 1586 x-transition.opacity.duration.180ms 1587 x-cloak 1588 class="ab1-nav-search-overlay" 1589 @keydown.escape.window="closeSearch()" 1590 @click.self="closeSearch()" 1591 > 1592 <div class="ab1-nav-search-card" @click.outside="closeSearch()"> 1593 <div class="flex items-center justify-between gap-4 border-b border-[#0047BB]/15 px-5 py-4 sm:px-6"> 1594 <div> 1595 <p class="text-xs font-semibold uppercase tracking-[.22em] text-[#0047BB]">Search</p>
1596 <h2 class="mt-1 text-xl font-semibold text-[#25282a]">Find Astoria Boracay pages</h2> 1597 </div> 1598 1599 <button type="button" @click="closeSearch()" class="rounded-full p-2 text-[#25282a] transition hover:bg-[#0047BB]/10" aria-label="Close search"> 1600 <svg class="h-6 w-6" fill="none" stroke="currentColor" stroke-width="2" viewBox="0 0 24 24" aria-hidden="true"> 1601 <path stroke-linecap="round" stroke-linejoin="round" d="M6 18 18 6M6 6l12 12"/> 1602 </svg> 1603 </button> 1604 </div> 1605 1606 <form action="https://astoriaboracay.com/search" method="GET" role="search" class="p-5 sm:p-6"> 1607 <label for="ab1-nav-search-input" class="sr-only">Search Astoria Boracay</label> 1608 1609 <div class="flex flex-col gap-3 sm:flex-row sm:items-center"> 1610 <div class="flex min-w-0 flex-1 items-center gap-3 rounded-2xl border border-[#0047BB]/20 bg-[#fff7f1] px-4 py-3 text-[#25282a] focus-within:border-[#0047BB]"> 1611 <svg class="h-5 w-5 shrink-0 text-[#0047BB]" fill="none" stroke="currentColor" stroke-width="2" viewBox="0 0 24 24" aria-hidden="true"> 1612 <path stroke-linecap="round" stroke-linejoin="round" d="m21 21-4.35-4.35M10.5 18a7.5 7.5 0 1 1 0-15 7.5 7.5 0 0 1 0 15Z"/> 1613 </svg> 1614 1615 <input 1616 id="ab1-nav-search-input" 1617 name="q" 1618 type="search" 1619 x-model="searchQuery" 1620 placeholder="Search rooms, waterpark, amenities, promos..." 1621 autocomplete="off" 1622 class="ab1-nav-search-field w-full border-0 bg-transparent p-0 text-base font-medium text-[#25282a] placeholder:text-[#25282a]/45 focus:border-0 focus:outline-none focus:ring-0" 1623 required 1624 > 1625 </div> 1626 1627 <button type="submit" class="rounded-2xl bg-[#0047BB] px-6 py-3 text-sm font-semibold uppercase tracking-[.18em] text-white transition hover:bg-[#63666A]"> 1628 Search 1629 </button> 1630 </div> 1631 1632 <div class="mt-4 flex flex-wrap gap-2 text-sm font-semibold"> 1633 <a @click="closeSearch()" href="https://astoriaboracay.com/search?q=accommodations" class="rounded-full border border-[#0047BB]/20 px-3 py-1.5 text-[#25282a] transition hover:border-[#0047BB] hover:bg-[#0047BB] hover:text-white">Accommodations</a> 1634 <a @click="closeSearch()" href="https://astoriaboracay.com/search?q=meetings" class="rounded-full border border-[#0047BB]/20 px-3 py-1.5 text-[#25282a] transition hover:border-[#0047BB] hover:bg-[#0047BB] hover:text-white">Meetings & Events</a> 1635 <a @click="closeSearch()" href="https://astoriaboracay.com/search?q=amenities" class="rounded-full border border-[#0047BB]/20 px-3 py-1.5 text-[#25282a] transition hover:border-[#0047BB] hover:bg-[#0047BB] hover:text-white">Amenities</a> 1636 <a @click="closeSearch()" href="https://astoriaboracay.com/search?q=promos" class="rounded-full border border-[#0047BB]/20 px-3 py-1.5 text-[#25282a] transition hover:border-[#0047BB] hover:bg-[#0047BB] hover:text-white">Promos</a> 1637 </div> 1638 </form> 1639 </div> 1640 </div> 1641 1642<!--# 1643 1644 <div 1645 x-show="openMenu === 'desktop'" 1646 x-transition.opacity.duration.120ms 1647 x-cloak 1648 class="hidden xl:block drawer-shell" 1649 aria-modal="true" role="dialog" 1650 @keydown.escape.window="openMenu=null" 1651 @click="openMenu=null" 1652 > 1653 <aside 1654 class="drawer-panel absolute right-0 top-0 h-full w-[360px] bg-white text-[#25282a] shadow-xl overflow-y-auto 1655 transform transition-transform duration-200 z-[1300]" 1656 @click.stop 1657 x-show="openMenu==='desktop'" 1658 x-transition:enter-start="translate-x-full" 1659 x-transition:enter-end="translate-x-0" 1660 x-transition:leave-start="translate-x-0" 1661 x-transition:leave-end="translate-x-full" 1662 > 1663 <div class="px-5 py-5 flex items-center justify-between border-b"> 1664 <h3 class="text-lg font-semibold">Menu</h3> 1665 <button @click="openMenu=null" aria-label="Close menu" class="p-2 hover:opacity-80"> 1666 <svg class="w-7 h-7" fill="none" stroke="currentColor" stroke-width="2" viewBox="0 0 24 24"> 1667 <path stroke-linecap="round" stroke-linejoin="round" d="M6 18L18 6M6 6l12 12"/> 1668 </svg> 1669 </button> 1670 </div> 1671
1672 <div class="px-6 pb-12 space-y-4 mt-4"> 1673 1674 <a @click="openMenu = null" href="https://astoriaboracay.com" class="block font-bold py-2">Home</a> 1675 1676 1677 <div> 1678 <div class="flex items-center justify-between w-full py-2"> 1679 <a @click="openMenu=null" href="https://astoriaboracay.com/about" class="font-bold">About</a> 1680 <button @click="activeDropdown = activeDropdown==='about' ? null : 'about'" 1681 class="p-1" 1682 :aria-expanded="(activeDropdown==='about').toString()" 1683 aria-controls="drawer-about"> 1684 <svg :class="activeDropdown==='about' ? 'rotate-180' : ''" class="w-4 h-4 transition-transform " fill="none" stroke="currentColor" viewBox="0 0 24 24"> 1685 <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 9l-7 7-7-7"/> 1686 </svg> 1687 </button> 1688 </div> 1689 <div id="drawer-about" x-show="activeDropdown==='about'" x-transition x-cloak class="pl-4 font-semibold space-y-2"> 1690 <a @click="openMenu=null" href="https://astoriaboracay.com/csr" class="block py-1">CSR</a> 1691 <a @click="openMenu=null" href="https://astoriaboracay.com/faqs" class="block py-1">FAQs</a> 1692 <a @click="openMenu=null" href="https://astoriaboracay.com/blogs" class="block py-1">Blogs</a> 1693 <a @click="openMenu=null" href="https://astoriaboracay.com/special-offers" class="block py-1">Promos</a> 1694 </div> 1695 </div> 1696 1697 1698 <a href="https://astoriaboracay.com/amenities" class="flex justify-between w-full py-2 font-bold"> 1699 <span>Amenities</span> 1700 </a> 1701 1702 1703 <div> 1704 <div class="flex items-center justify-between w-full py-2"> 1705 <a @click="openMenu=null" href="https://astoriaboracay.com/accommodations" class="font-bold">Accommodations</a> 1706 <button @click="activeDropdown = activeDropdown==='accommodations' ? null : 'accommodations'" 1707 class="p-1" 1708 :aria-expanded="(activeDropdown==='accommodations').toString()" 1709 aria-controls="drawer-accommodations"> 1710 <svg :class="activeDropdown==='accommodations' ? 'rotate-180' : ''" class="w-4 h-4 transition-transform" fill="none" stroke="currentColor" viewBox="0 0 24 24"> 1711 <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 9l-7 7-7-7"/> 1712 </svg> 1713 </button> 1714 </div>
1715 <div id="drawer-accommodations" x-show="activeDropdown==='accommodations'" x-transition x-cloak class="pl-4 font-semibold space-y-2"> 1716 <a @click="openMenu=null" href="https://astoriaboracay.com/accommodations/deluxe-room" class="block py-1">Deluxe Rooms</a> 1717 <a @click="openMenu=null" href="https://astoriaboracay.com/accommodations/premier" class="block py-1">Premier Room</a> 1718 <a @click="openMenu=null" href="https://astoriaboracay.com/accommodations/luxury-room" class="block py-1">Luxury Room</a> 1719 <a @click="openMenu=null" href="https://astoriaboracay.com/accommodations/honeymoon-suite" class="block py-1">Honeymoon Suite</a> 1720 </div> 1721 </div> 1722 1723 1724 <a href="https://astoriaboracay.com/amenities" class="flex justify-between w-full py-2 font-bold"> 1725 <span>Amenities</span> 1726 </a> 1727 1728 <a href="https://astoriaboracay.com/food-beverages" class="flex justify-between w-full py-2 font-semibold"> 1729 <span>F&B</span> 1730 </a> 1731 1732 <a href="https://astoriaboracay.com/meetings-events" class="flex justify-between w-full py-2 font-semibold"> 1733 <span>Meetings & Events</span> 1734 </a> 1735 1736 <a @click="openMenu=null" href="https://astoriaboracay.com/contact-us" class="block py-2 font-semibold">Contact Us</a> 1737 1738 1739 <div> 1740 <button @click="activeDropdown = activeDropdown==='language' ? null : 'language'" 1741 class="flex justify-between w-full py-2 items-center gap-2 font-semibold" 1742 :aria-expanded="(activeDropdown==='language').toString()" 1743 aria-controls="drawer-language"> 1744 <span class="flex items-center gap-2"> 1745 <img :src="selectedLang.flag" class="w-5 h-5 rounded-sm" alt=""> 1746 <span x-text="selectedLang.name"></span> 1747 <span class="opacity-70" x-text="'(' + selectedLang.abbr + ')'"></span> 1748 </span> 1749 <svg :class="activeDropdown==='language' ? 'rotate-180' : ''" class="w-4 h-4 transition-transform" fill="none" stroke="currentColor" viewBox="0 0 24 24"> 1750 <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 9l-7 7-7-7"/> 1751 </svg> 1752 </button>
1753 <div id="drawer-language" x-show="activeDropdown==='language'" x-transition x-cloak class="pl-4 space-y-2"> 1754 <template x-for="lang in langs" :key="lang.code"> 1755 <a href="#" class="flex items-center font-semibold gap-2 py-1" 1756 @click.prevent="setLanguage(lang.code); activeDropdown=null; openMenu=null;"> 1757 <img :src="lang.flag" class="w-5 h-5 rounded-sm" alt=""> 1758 <span x-text="lang.name"></span> 1759 <span class="ml-auto font-semibold opacity-70" x-text="'(' + lang.abbr + ')'"></span> 1760 </a> 1761 </template> 1762 </div> 1763 </div> 1764 </div> 1765 </aside> 1766 </div>--> 1767 1768 1769 <div 1770 x-show="openMenu === 'mobile'" 1771 x-transition:enter="transition ease-out duration-200" 1772 x-transition:enter-start="opacity-0 scale-95" 1773 x-transition:enter-end="opacity-100 scale-100" 1774 x-transition:leave="transition ease-in duration-150" 1775 x-transition:leave-start="opacity-100 scale-100" 1776 x-transition:leave-end="opacity-0 scale-95" 1777 x-cloak 1778 class="ahr-mobile xl:hidden fixed inset-0 overflow-y-auto z-[9999] transition-colors duration-300" 1779 :class="scrolled ? 'bg-[#0047b3] text-white' : 'bg-[#0047b3] text-white'" 1780 @keydown.escape.window="openMenu = null" 1781 @click.self="openMenu = null" 1782 > 1783 <div class="px-5 py-5 flex items-center justify-between"> 1784 1785 <div class="m-logo-wrap w-44 h-12 md:w-52 md:h-14" :data-scrolled="scrolled"> 1786 <div class="logo-smooth logo-scaler h-full w-full relative flex items-center justify-start"> 1787 <img 1788 src="https://astoriaboracay.com/images/ab1-logo-white.webp" 1789 onerror="this.onerror=null; this.src='https://astoriaboracay.com/images/ab1-logo.webp';" 1790 class="fade-img h-full w-full object-contain" 1791 alt="Astoria Current" 1792 > 1793 </div> 1794 </div> 1795 <button @click="openMenu = null" aria-label="Close menu" class="p-2 hover:opacity-80"> 1796 <svg class="w-7 h-7" fill="none" stroke="currentColor" stroke-width="2" viewBox="0 0 24 24"> 1797 <path stroke-linecap="round" stroke-linejoin="round" d="M6 18L18 6M6 6l12 12"/> 1798 </svg> 1799 </button> 1800 </div> 1801 1802 <div class="px-6 pb-16 space-y-4"> 1803 1804 <form action="https://astoriaboracay.com/search" method="GET" role="search" class="rounded-2xl border border-white/20 bg-white/10 p-3 backdrop-blur"> 1805 <label for="ab1-mobile-menu-search" class="sr-only">Search Astoria Boracay</label> 1806 <div class="flex items-center gap-2 rounded-xl bg-white px-4 py-2.5 text-[#25282a]"> 1807 <svg class="h-5 w-5 shrink-0 text-[#0047BB]" fill="none" stroke="currentColor" stroke-width="2" viewBox="0 0 24 24" aria-hidden="true"> 1808 <path stroke-linecap="round" stroke-linejoin="round" d="m21 21-4.35-4.35M10.5 18a7.5 7.5 0 1 1 0-15 7.5 7.5 0 0 1 0 15Z"/> 1809 </svg> 1810 <input 1811 id="ab1-mobile-menu-search" 1812 name="q" 1813 type="search" 1814 value="accommodations" 1815 placeholder="Search Astoria Boracay" 1816 autocomplete="off" 1817 class="w-full border-0 bg-transparent p-0 text-base font-medium text-[#25282a] placeholder:text-[#25282a]/40 focus:border-0 focus:outline-none focus:ring-0" 1818 required 1819 > 1820 <button type="submit" class="rounded-lg bg-[#0047BB] px-3 py-2 text-[11px] font-bold uppercase tracking-[.14em] text-white">Go</button> 1821 </div> 1822 </form> 1823 1824 1825 <div class="pt-1"> 1826 <button 1827 @click.stop="mobileBookingOpen = !mobileBookingOpen; $nextTick(()=>{ if(mobileBookingOpen){ document.getElementById('m-booking-form')?.scrollIntoView({behavior:'smooth', block:'start'}); } });" 1828 :class="[ 1829 'w-full font-bold px-5 py-3 rounded-xl shadow transition text-sm uppercase tracking-widest flex items-center justify-center gap-2', 1830 scrolled ? 'bg-[#63666A] text-white' : 'bg-[#63666A] text-white' 1831 ].join(' ')" 1832 :aria-expanded="mobileBookingOpen" 1833 > 1834 <svg class="w-5 h-5" fill="currentColor" viewBox="0 0 20 20" aria-hidden="true"> 1835 <path d="M6 2a1 1 0 00-1 1v1H4a2 2 0 00-2 2v1h16V6a2 2 0 00-2-2h-1V3a1 1 0 10-2 0v1H7V3a1 1 0 00-1-1z"/> 1836 <path d="M18 8H2v8a2 2 0 002 2h12a2 2 0 002-2V8z"/> 1837 </svg>
1838 <span x-text="mobileBookingOpen ? 'Close Booking' : 'Book Now'"></span> 1839 </button> 1840 1841 <div 1842 id="m-booking-form" 1843 x-show="mobileBookingOpen" 1844 x-transition:enter="transition ease-out duration-200" 1845 x-transition:enter-start="opacity-0 translate-y-2" 1846 x-transition:enter-end="opacity-100 translate-y-0" 1847 x-transition:leave="transition ease-in duration-150" 1848 x-transition:leave-start="opacity-100 translate-y-0" 1849 x-transition:leave-end="opacity-0 translate-y-2" 1850 x-cloak 1851 class="mt-4 rounded-2xl border border-gray-200 bg-white text-[#25282a] shadow-2xl p-4" 1852 > 1853 <div class="flex items-center justify-between mb-2"> 1854 <h3 class="font-semibold text-base">Quick Booking â Astoria Boracay</h3> 1855 <button @click="mobileBookingOpen = false" aria-label="Close mobile booking" class="p-2 rounded-md hover:bg-gray-100"> 1856 <svg class="w-5 h-5" fill="none" stroke="currentColor" stroke-width="2" viewBox="0 0 24 24"> 1857 <path stroke-linecap="round" stroke-linejoin="round" d="M6 18L18 6M6 6l12 12"/> 1858 </svg> 1859 </button> 1860 </div> 1861 1862 <form 1863 x-data="{ 1864 actionCurrent: 'https://book-directonline.com/properties/AstoriaBoracaydirect?', 1865 today: (new Date(Date.now() - new Date().getTimezoneOffset()*60000)).toISOString().slice(0,10) 1866 }" 1867 :action="actionCurrent" 1868 method="GET" 1869 target="_blank" 1870 > 1871 <div class="grid grid-cols-1 gap-3"> 1872 <div class="grid grid-cols-2 gap-3"> 1873 <div class="flex flex-col"> 1874 <label for="check_in_date_m" class="text-xs font-semibold mb-1 uppercase tracking-wide">Check In</label> 1875 <input name="check_in_date" id="check_in_date_m" type="date" 1876 :min="today" 1877 class="rounded-lg border border-gray-300 focus:border-[#25282a] focus:ring-[#25282a] px-3 py-2 text-sm bg-white w-full shadow-sm" required /> 1878 </div> 1879 <div class="flex flex-col"> 1880 <label for="number_nights_m" class="text-xs font-semibold mb-1 uppercase tracking-wide">Nights</label> 1881 <input class="rounded-lg border border-gray-300 focus:border-[#25282a] focus:ring-[#25282a] px-3 py-2 text-sm bg-white w-full shadow-sm" 1882 name="number_nights" id="number_nights_m" type="number" min="1" value="1" required /> 1883 </div> 1884 </div> 1885 1886 <div class="grid grid-cols-2 gap-3"> 1887 <div class="flex flex-col"> 1888 <label for="number_adults_m" class="text-xs font-semibold mb-1 uppercase tracking-wide">Guest/s</label> 1889 <input class="rounded-lg border border-gray-300 focus:border-[#25282a] focus:ring-[#25282a] px-3 py-2 text-sm bg-white w-full shadow-sm" 1890 name="number_adults" id="number_adults_m" type="number" min="1" max="4" value="1" required /> 1891 </div> 1892 1893 <div class="flex items-end"> 1894 <button type="submit" 1895 class="w-full bg-[#18206B] hover:bg-[#141852] text-white font-bold px-4 py-2.5 rounded-lg shadow transition text-[12px] uppercase tracking-[.18em]"> 1896 Book Now 1897 </button> 1898 </div> 1899 </div> 1900 </div> 1901 </form> 1902 </div> 1903 </div> 1904 1905 1906 <nav class="space-y-2"> 1907 <a @click="openMenu = null" href="https://astoriaboracay.com" class="block py-2">Home</a> 1908 1909 1910 <div x-data="{ open:false }" class="border-y border-black/10/0"> 1911 <div class="flex justify-between w-full py-2 items-center"> 1912 <a @click="openMenu=null" href="https://astoriaboracay.com/about" class="font-semibold">About</a> 1913 <button @click="open = !open" class="p-1" :aria-expanded="open.toString()" aria-controls="m-about"> 1914 <svg :class="open ? 'rotate-180' : ''" class="w-4 h-4 transition-transform" fill="none" stroke="currentColor" viewBox="0 0 24 24"> 1915 <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 9l-7 7-7-7"/> 1916 </svg> 1917 </button> 1918 </div>
1919 <div id="m-about" x-show="open" x-transition x-cloak class="pl-4 space-y-2 font-semibold"> 1920 <a @click="openMenu=null" href="https://astoriaboracay.com/amenities" class="block py-1">Amenities</a> 1921 <a @click="openMenu=null" href="https://astoriaboracay.com/csr" class="block py-1">CSR</a> 1922 <a @click="openMenu=null" href="https://astoriaboracay.com/faqs" class="block py-1">FAQs</a> 1923 <a @click="openMenu=null" href="https://astoriaboracay.com/blogs" class="block py-1">Blogs</a> 1924 <a @click="openMenu=null" href="https://astoriaboracay.com/special-offers" class="block py-1">Promos</a> 1925 </div> 1926 </div> 1927 1928 1929 <div x-data="{ open:false }"> 1930 <div class="flex justify-between w-full py-2 items-center"> 1931 <a @click="openMenu=null" href="https://astoriaboracay.com/accommodations" class="font-semibold">Accommodations</a> 1932 <button @click="open = !open" class="p-1" :aria-expanded="open.toString()" aria-controls="m-accommodations"> 1933 <svg :class="open ? 'rotate-180' : ''" class="w-4 h-4 transition-transform" fill="none" stroke="currentColor" viewBox="0 0 24 24"> 1934 <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 9l-7 7-7-7"/> 1935 </svg> 1936 </button> 1937 </div> 1938 <div id="m-accommodations" x-show="open" x-transition x-cloak class="pl-4 space-y-2 font-semibold"> 1939 <a @click="openMenu=null" href="https://astoriaboracay.com/accommodations/deluxe-room" class="block py-1">Deluxe Rooms</a> 1940 <a @click="openMenu=null" href="https://astoriaboracay.com/accommodations/premier" class="block py-1">Premier Room</a> 1941 <a @click="openMenu=null" href="https://astoriaboracay.com/accommodations/luxury-room" class="block py-1">Luxury Room</a> 1942 <a @click="openMenu=null" href="https://astoriaboracay.com/accommodations/honeymoon-suite" class="block py-1">Honeymoon Suite</a> 1943 </div> 1944 </div> 1945 1946 <a href="https://astoriaboracay.com/food-beverages" class="block py-2 font-semibold">F&B</a> 1947 <a href="https://astoriaboracay.com/meetings-events" class="block py-2 font-semibold">Meetings & Events</a> 1948 <a @click="openMenu = null" href="https://astoriaboracay.com/contact-us" class="block py-2 font-semibold">Contact Us</a> 1949 1950 1951 <div x-data="{ open:false }" class="pt-2"> 1952 <div class="flex justify-between w-full py-2 items-center gap-2 font-semibold"> 1953 <span class="flex items-center gap-2"> 1954 <img :src="selectedLang.flag" class="w-5 h-5 rounded-sm" alt=""> 1955 <span x-text="selectedLang.name"></span> 1956 <span class="opacity-70" x-text="'(' + selectedLang.abbr + ')'"></span> 1957 </span> 1958 <button @click="open = !open" class="p-1" :aria-expanded="open.toString()" aria-controls="m-language"> 1959 <svg :class="open ? 'rotate-180' : ''" class="w-4 h-4 transition-transform" fill="none" stroke="currentColor" viewBox="0 0 24 24"> 1960 <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 9l-7 7-7-7"/> 1961 </svg> 1962 </button> 1963 </div> 1964 <div id="m-language" x-show="open" x-transition x-cloak class="pl-4 space-y-2"> 1965 <template x-for="lang in langs" :key="lang.code"> 1966 <a href="#" class="flex items-center font-semibold gap-2 py-1" 1967 @click.prevent="setLanguage(lang.code); openMenu=null;"> 1968 <img :src="lang.flag" class="w-5 h-5 rounded-sm" alt=""> 1969 <span x-text="lang.name"></span> 1970 <span class="ml-auto font-semibold opacity-70" x-text="'(' + lang.abbr + ')'"></span> 1971 </a> 1972 </template> 1973 </div> 1974 </div> 1975 </nav> 1976 1977 <div class="h-8"></div> 1978 </div> 1979 </div> 1980</header> 1981 1982 1983 1984<style> 1985 #ab1-translate-loader{ 1986 position: fixed; 1987 inset: 1rem 1rem auto 1rem; 1988 z-index: 2147483647; 1989 display: flex; 1990 justify-content: center; 1991 pointer-events: none; 1992 opacity: 0; 1993 visibility: hidden; 1994 transform: translateY(-10px); 1995 transition: 1996 opacity .35s ease, 1997 transform .35s ease, 1998 visibility 0s linear .35s; 1999 } 2000 2001 #ab1-translate-loader.is-visible{ 2002 opacity: 1; 2003 visibility: visible; 2004 transform: translateY(0); 2005 transition: 2006 opacity .35s ease, 2007 transform .35s ease, 2008 visibility 0s linear 0s; 2009 } 2010 2011 #ab1-translate-loader .ab1-translate-card{ 2012 width: min(100%, 560px); 2013 border-radius: 20px; 2014 background: rgba(37, 40, 42, 0.95); 2015 color: #fff; 2016 border: 1px solid rgba(255,255,255,0.12); 2017 box-shadow: 0 20px 50px rgba(15, 23, 42, 0.28); 2018 backdrop-filter: blur(10px); 2019 -webkit-backdrop-filter: blur(10px); 2020 } 2021 2022 #ab1-translate-loader .ab1-translate-inner{ 2023 display: flex; 2024 align-items: flex-start; 2025 gap: 1rem; 2026 padding: 1.05rem 1.15rem; 2027 } 2028 2029 #ab1-translate-loader .ab1-translate-spinner{ 2030 width: 1.3rem; 2031 height: 1.3rem; 2032 flex: none; 2033 margin-top: .2rem; 2034 border-radius: 9999px; 2035 border: 2px solid rgba(255,255,255,.22); 2036 border-top-color: #0047bb; 2037 animation: ab1TranslateSpin .8s linear infinite; 2038 } 2039 2040 #ab1-translate-loader .ab1-translate-title{ 2041 margin: 0; 2042 font-size: 1.12rem; 2043 font-weight: 800; 2044 line-height: 1.25; 2045 letter-spacing: .01em; 2046 } 2047 2048 #ab1-translate-loader .ab1-translate-copy{ 2049 margin: .28rem 0 0; 2050 font-size: .96rem; 2051 font-weight: 500; 2052 line-height: 1.45; 2053 color: rgba(255,255,255,.82); 2054 } 2055 2056 @keyframes ab1TranslateSpin{ 2057 to{ transform: rotate(360deg); } 2058 } 2059 2060 @media (max-width: 639px){ 2061 #ab1-translate-loader{ 2062 inset: .75rem .75rem auto .75rem; 2063 } 2064 2065 #ab1-translate-loader .ab1-translate-card{ 2066 width: 100%; 2067 border-radius: 18px; 2068 } 2069 2070 #ab1-translate-loader .ab1-translate-inner{ 2071 gap: .9rem; 2072 padding: 1rem 1rem; 2073 } 2074 2075 #ab1-translate-loader .ab1-translate-spinner{ 2076 width: 1.2rem; 2077 height: 1.2rem; 2078 } 2079 2080 #ab1-translate-loader .ab1-translate-title{ 2081 font-size: 1rem; 2082 } 2083 2084 #ab1-translate-loader .ab1-translate-copy{ 2085 font-size: .88rem; 2086 } 2087 } 2088 2089 @media (prefers-reduced-motion: reduce){ 2090 #ab1-translate-loader, 2091 #ab1-translate-loader.is-visible{ 2092 transition: none !important; 2093 } 2094 2095 #ab1-translate-loader .ab1-translate-spinner{ 2096 animation: none !important; 2097 } 2098 } 2099</style> 2100 2101<div id="ab1-translate-loader" aria-live="polite" aria-atomic="true"> 2102 <div class="ab1-translate-card"> 2103 <div class="ab1-translate-inner">
2104 <span class="ab1-translate-spinner" aria-hidden="true"></span> 2105 2106 <div> 2107 <p class="ab1-translate-title">Loading...</p> 2108 <p class="ab1-translate-copy">Translation is powered by Google Translate.</p> 2109 </div> 2110 </div> 2111 </div> 2112</div> 2113
2114<script> 2115 (function () { 2116 if (window.__ab1GoogleTranslateLoaderReady) return; 2117 window.__ab1GoogleTranslateLoaderReady = true; 2118 2119 const LOADER_ID = 'ab1-translate-loader'; 2120 const STORAGE_KEY = 'ab1_google_translate_loading'; 2121 const STORAGE_CODE_KEY = 'ab1_google_translate_loading_code'; 2122 const STORAGE_TS_KEY = 'ab1_google_translate_loading_ts'; 2123 const SUCCESS_HOLD_MS = 1300; // keep visible after success so users can see it 2124 const FAILSAFE_HOLD_MS = 1400; // keep visible a bit even on fallback 2125 2126 let hideTimer = null; 2127 2128 function getLoader() { 2129 return document.getElementById(LOADER_ID); 2130 } 2131 2132 function clearHideTimer() { 2133 if (hideTimer) { 2134 clearTimeout(hideTimer); 2135 hideTimer = null; 2136 } 2137 } 2138 2139 function showLoader() { 2140 clearHideTimer(); 2141 const el = getLoader(); 2142 if (el) el.classList.add('is-visible'); 2143 } 2144 2145 function hideLoader(delay = SUCCESS_HOLD_MS) { 2146 clearHideTimer(); 2147 hideTimer = window.setTimeout(() => { 2148 const el = getLoader(); 2149 if (el) el.classList.remove('is-visible'); 2150 }, delay); 2151 } 2152 2153 function rememberPending(code) { 2154 try { 2155 sessionStorage.setItem(STORAGE_KEY, '1'); 2156 sessionStorage.setItem(STORAGE_CODE_KEY, code || 'en'); 2157 sessionStorage.setItem(STORAGE_TS_KEY, String(Date.now())); 2158 } catch (_) {} 2159 } 2160 2161 function clearPending() { 2162 try { 2163 sessionStorage.removeItem(STORAGE_KEY); 2164 sessionStorage.removeItem(STORAGE_CODE_KEY); 2165 sessionStorage.removeItem(STORAGE_TS_KEY); 2166 } catch (_) {} 2167 } 2168 2169 function isTranslated() { 2170 return !!document.querySelector('iframe.goog-te-banner-frame') 2171 || document.body?.classList.contains('translated-ltr') 2172 || document.body?.classList.contains('translated-rtl'); 2173 } 2174 2175 function translationLooksReady(code) { 2176 const target = String(code || 'en').toLowerCase().split('-')[0]; 2177 const htmlLang = String(document.documentElement.getAttribute('lang') || '').toLowerCase(); 2178 2179 if (target === 'en') { 2180 return htmlLang.startsWith('en') || !isTranslated(); 2181 } 2182 2183 return htmlLang.startsWith(target) || isTranslated(); 2184 } 2185 2186 function watchUntilDone(code) { 2187 const startedAt = Date.now(); 2188 const maxWait = 8000; 2189 let finished = false; 2190 2191 const finish = () => { 2192 if (finished) return; 2193 finished = true; 2194 2195 clearInterval(intervalId); 2196 observer.disconnect(); 2197 clearPending(); 2198 hideLoader(SUCCESS_HOLD_MS); 2199 }; 2200 2201 const check = () => { 2202 if (translationLooksReady(code) || (Date.now() - startedAt) > maxWait) { 2203 finish(); 2204 } 2205 }; 2206 2207 const observer = new MutationObserver(check); 2208 const intervalId = window.setInterval(check, 150); 2209 2210 observer.observe(document.documentElement, { 2211 attributes: true, 2212 childList: true, 2213 subtree: true, 2214 }); 2215 2216 if (document.body) { 2217 observer.observe(document.body, { 2218 attributes: true, 2219 childList: true, 2220 subtree: true, 2221 }); 2222 } 2223 2224 check(); 2225 } 2226 2227 window.ab1RunTranslateWithLoader = function (code) { 2228 showLoader(); 2229 rememberPending(code); 2230 2231 if (typeof window.applyTranslation === 'function') { 2232 window.applyTranslation(code); 2233 watchUntilDone(code); 2234 return; 2235 } 2236 2237 clearPending(); 2238 hideLoader(FAILSAFE_HOLD_MS); 2239 }; 2240 2241 document.addEventListener('DOMContentLoaded', function () { 2242 try { 2243 const pending = sessionStorage.getItem(STORAGE_KEY) === '1'; 2244 const ts = Number(sessionStorage.getItem(STORAGE_TS_KEY) || 0); 2245 2246 if (pending && ts && (Date.now() - ts) < 10000) { 2247 showLoader(); 2248 watchUntilDone(sessionStorage.getItem(STORAGE_CODE_KEY) || 'en'); 2249 } else { 2250 clearPending(); 2251 } 2252 } catch (_) {} 2253 }); 2254 })(); 2255</script>
2255 2256 2257<main class="relative"> 2258 <div class="ab1-search-page mt-10 min-h-screen pb-20 text-[#25282a] lg:mt-10"> 2259 <section class="ab1-search-hero text-white"> 2260 <div class="relative mx-auto max-w-7xl px-5 py-16 sm:px-6 sm:py-20 lg:px-8 lg:pt-44"> 2261 <div class="max-w-4xl"> 2262 2263 <h1 class="mt-5 text-4xl font-semibold tracking-tight sm:text-5xl"> 2264 Search results 2265 </h1> 2266 2267 <p class="mt-4 text-base leading-8 text-white/85 sm:text-lg"> 2268 Search Astoria Boracay pages, blogs, promos, accommodations, amenities, gallery, dining, meetings, events, and guest information. 2269 </p> 2270 </div> 2271 2272 <form action="/search" method="GET" role="search" class="mt-9 max-w-4xl"> 2273 2274 <label for="site-search-main" class="sr-only">Search query</label> 2275 2276 <div class="ab1-search-card-shadow flex flex-col gap-3 rounded-3xl border border-white/20 bg-white/10 p-3 backdrop-blur-xl sm:flex-row sm:items-center"> 2277 <div class="flex min-w-0 flex-1 items-center gap-3 rounded-2xl bg-white px-6 py-3 text-[#25282a]"> 2278 <svg class="h-5 w-5 shrink-0 text-[#0047BB]/65" fill="none" stroke="currentColor" stroke-width="2" viewBox="0 0 24 24" aria-hidden="true"> 2279 <path stroke-linecap="round" stroke-linejoin="round" d="m21 21-4.35-4.35M10.5 18a7.5 7.5 0 1 1 0-15 7.5 7.5 0 0 1 0 15Z"/> 2280 </svg> 2281 2282 <input 2283 id="site-search-main" 2284 name="q" 2285 type="search" 2286 value="accommodations" 2287 placeholder="Search rooms, dining, promos..." 2288 autocomplete="off" 2289 class="ab1-search-input w-full border-0 bg-transparent p-0 text-base font-semibold text-[#25282a] placeholder:text-[#25282a]/40 focus:border-0 focus:outline-none focus:ring-0" 2290 required 2291 > 2292 </div> 2293 2294 <button type="submit" class="rounded-2xl border border-white bg-white px-7 py-3 text-sm font-semibold uppercase tracking-[.18em] text-[#0047BB] transition hover:bg-[#F05323] hover:text-white"> 2295 Search 2296 </button> 2297 </div> 2298 </form> 2299 </div> 2300 </section> 2301 2302 <section class="relative z-10 mx-auto -mt-8 max-w-7xl px-6 sm:px-6 lg:px-8"> 2303 <div class="ab1-search-card-shadow rounded-[2rem] border border-[#0047BB]/10 bg-white p-5 sm:p-7"> 2304 <div class="flex flex-col gap-5 lg:flex-row lg:items-start lg:justify-between"> 2305 <div class="max-w-2xl"> 2306 <p class="text-sm font-bold uppercase tracking-[.22em] text-[#25282a]/55"> 2307 19 results 2308 </p> 2309 2310 <h2 class="mt-2 text-2xl font-bold text-[#25282a] sm:text-3xl"> 2311 â<mark class="ab1-hit">accommodations</mark>â 2312 </h2> 2313 2314 <div class="mt-4 flex flex-wrap items-center gap-2"> 2315 <span class="text-xs font-bold uppercase tracking-[.18em] text-[#25282a]/45">Suggested searches</span> 2316 <a href="/search?q=deluxe+room" class="rounded-full border border-[#0047BB]/15 bg-[#eefbf8] px-3 py-1.5 text-xs font-bold text-[#0047BB] transition hover:border-[#0047BB] hover:bg-[#0047BB] hover:text-white"> 2317 Deluxe Room 2318 </a> 2319 <a href="/search?q=luxury+room" class="rounded-full border border-[#0047BB]/15 bg-[#eefbf8] px-3 py-1.5 text-xs font-bold text-[#0047BB] transition hover:border-[#0047BB] hover:bg-[#0047BB] hover:text-white"> 2320 Luxury Room 2321 </a> 2322 <a href="/search?q=honeymoon+suite" class="rounded-full border border-[#0047BB]/15 bg-[#eefbf8] px-3 py-1.5 text-xs font-bold text-[#0047BB] transition hover:border-[#0047BB] hover:bg-[#0047BB] hover:text-white"> 2323 Honeymoon Suite 2324 </a> 2325 <a href="/search?q=premier+room" class="rounded-full border border-[#0047BB]/15 bg-[#eefbf8] px-3 py-1.5 text-xs font-bold text-[#0047BB] transition hover:border-[#0047BB] hover:bg-[#0047BB] hover:text-white"> 2326 Premier Room 2327 </a> 2328 <a href="/search?q=amenities" class="rounded-full border border-[#0047BB]/15 bg-[#eefbf8] px-3 py-1.5 text-xs font-bold text-[#0047BB] transition hover:border-[#0047BB] hover:bg-[#0047BB] hover:text-white"> 2329 Amenities 2330 </a> 2331 </div> 2332 </div> 2333 2334 <div class="flex flex-wrap gap-2 lg:justify-end"> 2335 2336 <a 2337 href="/search?q=accommodations" 2338 aria-current="page" class="rounded-full border px-4 py-2 text-sm font-bold transition border-[#0047BB] bg-[#0047BB] text-white " 2339 > 2340 All
2341 <span class="ml-1 opacity-75">19</span> 2342 </a> 2343 2344 <a 2345 href="/search?q=accommodations&type=page" 2346 class="rounded-full border px-4 py-2 text-sm font-bold transition border-[#25282a]/15 bg-white text-[#25282a] hover:border-[#0047BB] hover:bg-[#0047BB] hover:text-white " 2347 > 2348 Pages 2349 <span class="ml-1 opacity-75">8</span> 2350 </a> 2351 2352 <a 2353 href="/search?q=accommodations&type=blog" 2354 class="rounded-full border px-4 py-2 text-sm font-bold transition border-[#25282a]/15 bg-white text-[#25282a] hover:border-[#0047BB] hover:bg-[#0047BB] hover:text-white " 2355 > 2356 Blogs 2357 <span class="ml-1 opacity-75">11</span> 2358 </a> 2359 2360 <a 2361 href="/search?q=accommodations&type=promo" 2362 class="rounded-full border px-4 py-2 text-sm font-bold transition border-[#25282a]/15 bg-white text-[#25282a] hover:border-[#0047BB] hover:bg-[#0047BB] hover:text-white opacity-50" 2363 > 2364 Promos 2365 <span class="ml-1 opacity-75">0</span> 2366 </a> 2367 </div> 2368 </div> 2369 </div> 2370 2371 <div class="mt-8 max-w-7xl"> 2372 2373 <article class="ab1-search-google-result border-b border-[#25282a]/10 px-0 py-6 first:pt-0 last:border-b-0 sm:px-4"> 2374 <a href="/accommodations" class="group block"> 2375 <div class="ab1-search-url flex flex-wrap items-center gap-x-2 gap-y-1 text-sm font-bold leading-6 text-[#228848]"> 2376 <span class="max-w-full break-all">astoriaboracay.com/<mark class="ab1-hit">accommodations</mark></span> 2377 2378 <span class="text-[#25282a]/30">·</span> 2379 2380 <span class="rounded-full bg-[#eefbf8] px-2.5 py-0.5 text-[11px] font-bold uppercase tracking-[.14em] text-[#0047BB]"> 2381 Page 2382 </span> 2383 2384 2385 </div> 2386 2387 <h3 class="ab1-search-line-clamp-2 mt-1 text-xl font-bold leading-snug text-[#1a0dab] transition group-hover:underline sm:text-2xl"> 2388 Accommodation | Astoria Boracay, Station 1 2389 </h3> 2390 2391 <p class="ab1-search-line-clamp-3 mt-2 text-sm font-semibold leading-7 text-[#25282a]/75 sm:text-base"> 2392 ⦠toria Boracay, Station 1 BOOK NOW Loading... Translation is powered by Google Translate. VIBRANCY IN YOUR VACATION <mark class="ab1-hit">ACCOMMODATIONS</mark> Sweet serenity in a tropical oasis Check Availability THE BEST <mark class="ab1-hit">ACCOMMODATIONS</mark> TO COMPLEMENT AN ISLAND VACATION ROOMS A precious time... 2393 </p> 2394 2395 <div class="mt-3 inline-flex items-center gap-2 rounded-full border border-[#000000]/30 bg-[#fff36a] px-3 py-1 text-[11px] font-bold uppercase tracking-[.16em] text-[#000000]"> 2396 Hit in Page Route 2397 </div> 2398 </a> 2399 </article> 2400 2401 <article class="ab1-search-google-result border-b border-[#25282a
2401]/10 px-0 py-6 first:pt-0 last:border-b-0 sm:px-4"> 2402 <a href="/faqs" class="group block"> 2403 <div class="ab1-search-url flex flex-wrap items-center gap-x-2 gap-y-1 text-sm font-bold leading-6 text-[#228848]"> 2404 <span class="max-w-full break-all">astoriaboracay.com/faqs</span> 2405 2406 <span class="text-[#25282a]/30">·</span> 2407 2408 <span class="rounded-full bg-[#eefbf8] px-2.5 py-0.5 text-[11px] font-bold uppercase tracking-[.14em] text-[#0047BB]"> 2409 Page 2410 </span> 2411 2412 2413 </div> 2414 2415 <h3 class="ab1-search-line-clamp-2 mt-1 text-xl font-bold leading-snug text-[#1a0dab] transition group-hover:underline sm:text-2xl"> 2416 FAQs | Astoria Boracay Station 1 2417 </h3> 2418 2419 <p class="ab1-search-line-clamp-3 mt-2 text-sm font-semibold leading-7 text-[#25282a]/75 sm:text-base"> 2420 View frequently asked questions about Astoria Boracay Station 1 <mark class="ab1-hit">accommodations</mark> and services. 2421 </p> 2422 2423 <div class="mt-3 inline-flex items-center gap-2 rounded-full border border-[#000000]/30 bg-[#fff36a] px-3 py-1 text-[11px] font-bold uppercase tracking-[.16em] text-[#000000]"> 2424 Hit in Meta Description 2425 </div> 2426 </a> 2427 </article> 2428 2429 <article class="ab1-search-google-result border-b border-[#25282a]/10 px-0 py-6 first:pt-0 last:border-b-0 sm:px-4"> 2430 <a href="/the-guide-to-hosting-corporate-retreats-at-the-1-resort-in-boracay" class="group block"> 2431 <div class="ab1-search-url flex flex-wrap items-center gap-x-2 gap-y-1 text-sm font-bold leading-6 text-[#228848]"> 2432 <span class="max-w-full break-all">astoriaboracay.com/the-guide-to-hosting-corporate-retreats-at-the-1-resort-in-boracay</span> 2433 2434 <span class="text-[#25282a]/30">·</span> 2435 2436 <span class="rounded-full bg-[#eefbf8] px-2.5 py-0.5 text-[11px] font-bold uppercase tracking-[.14em] text-[#0047BB]"> 2437 Blog 2438 </span> 2439 2440 2441 <span class="text-[#25282a]/30">·</span> 2442 <time datetime="2026-09-25 00:35:06" class="text-xs font-bold text-[#25282a]/55">Sep 25, 2026</time> 2443 </div> 2444 2445 <h3 class="ab1-search-line-clamp-2 mt-1 text-xl font-bold leading-snug text-[#1a0dab] transition group-hover:underline sm:text-2xl"> 2446 The Guide to Hosting Corporate Retreats at the #1 Resort in Boracay 2447 </h3> 2448 2449 <p class="ab1-search-line-clamp-3 mt-2 text-sm font-semibold leading-7 text-[#25282a]/75 sm:text-base"> 2450 ⦠cay the-guide-to-hosting-corporate-retreats-at-the-1-resort-in-boracay Astoria Boracay, one of the premier Boracay <mark class="ab1-hit">accommodations</mark> providers, stands out as the ideal venue to host corporate events. Read on to know more! Corporate retreats have become an in... 2451 </p> 2452 2453 <div class="mt-3 inline-flex items-center gap-2 rounded-full border border-[#000000]/30 bg-[#fff36a] px-3 py-1 text-[11px] font-bold uppercase tracking-[.16em] text-[#000000]"> 2454 Hit in Meta Description 2455 </div> 2456 </a> 2457 </article> 2458 2459 <article class="ab1-search-google-result border-b border-[#25282a
2459]/10 px-0 py-6 first:pt-0 last:border-b-0 sm:px-4"> 2460 <a href="/" class="group block"> 2461 <div class="ab1-search-url flex flex-wrap items-center gap-x-2 gap-y-1 text-sm font-bold leading-6 text-[#228848]"> 2462 <span class="max-w-full break-all">astoriaboracay.com/</span> 2463 2464 <span class="text-[#25282a]/30">·</span> 2465 2466 <span class="rounded-full bg-[#eefbf8] px-2.5 py-0.5 text-[11px] font-bold uppercase tracking-[.14em] text-[#0047BB]"> 2467 Page 2468 </span> 2469 2470 2471 </div> 2472 2473 <h3 class="ab1-search-line-clamp-2 mt-1 text-xl font-bold leading-snug text-[#1a0dab] transition group-hover:underline sm:text-2xl"> 2474 Astoria Boracay | Hotel in Boracay, Station 1 2475 </h3> 2476 2477 <p class="ab1-search-line-clamp-3 mt-2 text-sm font-semibold leading-7 text-[#25282a]/75 sm:text-base"> 2478 ⦠page landing page front page main page start page root ab1 astoria boracay station 1 beachfront beach resort hotel <mark class="ab1-hit">accommodations</mark> rooms booking stays dining meetings events promos contact 2479 </p> 2480 2481 <div class="mt-3 inline-flex items-center gap-2 rounded-full border border-[#000000]/30 bg-[#fff36a] px-3 py-1 text-[11px] font-bold uppercase tracking-[.16em] text-[#000000]"> 2482 Hit in Meta Keywords 2483 </div> 2484 </a> 2485 </article> 2486 2487 <article class="ab1-search-google-result border-b border-[#25282a]/10 px-0 py-6 first:pt-0 last:border-b-0 sm:px-4"> 2488 <a href="/accommodations/deluxe-room" class="group block"> 2489 <div class="ab1-search-url flex flex-wrap items-center gap-x-2 gap-y-1 text-sm font-bold leading-6 text-[#228848]"> 2490 <span class="max-w-full break-all">astoriaboracay.com/<mark class="ab1-hit">accommodations</mark>
2490/deluxe-room</span> 2491 2492 <span class="text-[#25282a]/30">·</span> 2493 2494 <span class="rounded-full bg-[#eefbf8] px-2.5 py-0.5 text-[11px] font-bold uppercase tracking-[.14em] text-[#0047BB]"> 2495 Page 2496 </span> 2497 2498 2499 </div> 2500 2501 <h3 class="ab1-search-line-clamp-2 mt-1 text-xl font-bold leading-snug text-[#1a0dab] transition group-hover:underline sm:text-2xl"> 2502 Deluxe Room | Astoria Boracay, Station 1 2503 </h3> 2504 2505 <p class="ab1-search-line-clamp-3 mt-2 text-sm font-semibold leading-7 text-[#25282a]/75 sm:text-base"> 2506 deluxe <mark class="ab1-hit">accommodations</mark>/deluxe-room rooms.deluxe Deluxe Room | Astoria Boracay, Station 1 Our Deluxe Rooms are perfect for small groups looking for chic hotel accommodation in the island. 2507 </p> 2508 2509 <div class="mt-3 inline-flex items-center gap-2 rounded-full border border-[#000000]/30 bg-[#fff36a] px-3 py-1 text-[11px] font-bold uppercase tracking-[.16em] text-[#000000]"> 2510 Hit in Meta Keywords 2511 </div> 2512 </a> 2513 </article> 2514 2515 <article class="ab1-search-google-result border-b border-[#25282a]/10 px-0 py-6 first:pt-0 last:border-b-0 sm:px-4"> 2516 <a href="/accommodations/luxury-room" class="group block"> 2517 <div class="ab1-search-url flex flex-wrap items-center gap-x-2 gap-y-1 text-sm font-bold leading-6 text-[#228848]"> 2518 <span class="max-w-full break-all">astoriaboracay.com/<mark class="ab1-hit">accommodations</mark>/luxury-room</span> 2519 2520 <span class="text-[#25282a]/30">·</span> 2521 2522 <span class="rounded-full bg-[#eefbf8] px-2.5 py-0.5 text-[11px] font-bold uppercase tracking-[.14em] text-[#0047BB]"> 2523 Page 2524 </span> 2525 2526 2527 </div> 2528 2529 <h3 class="ab1-search-line-clamp-2 mt-1 text-xl font-bold leading-snug text-[#1a0dab] transition group-hover:underline sm:text-2xl"> 2530 Luxury Room | Astoria Boracay, Station 1 2531 </h3> 2532 2533 <p class="ab1-search-line-clamp-3 mt-2 text-sm font-semibold leading-7 text-[#25282a]/75 sm:text-base"> 2534 luxury <mark class="ab1-hit">accommodations</mark>/luxury-room rooms.luxury Luxury Room | Astoria Boracay, Station 1 Strikingly gorgeous with a contemporary finish, our Luxury Room bridges the gap between adventure and relaxation in a setting that marries leisure with style. 2535 </p> 2536 2537 <div class="mt-3 inline-flex items-center gap-2 rounded-full border border-[#000000]/30 bg-[#fff36a] px-3 py-1 text-[11px] font-bold uppercase tracking-[.16em] text-[#000000]"> 2538 Hit in Meta Keywords 2539 </div> 2540 </a> 2541 </article> 2542 2543 <article class="ab1-search-google-result border-b border-[#25282a]/10 px-0 py-6 first:pt-0 last:border-b-0 sm:px-4"> 2544 <a href="/accommodations/honeymoon-suite" class="group block"> 2545 <div class="ab1-search-url flex flex-wrap items-center gap-x-2 gap-y-1 text-sm font-bold leading-6 text-[#228848]"> 2546 <sp
2546an class="max-w-full break-all">astoriaboracay.com/<mark class="ab1-hit">accommodations</mark>/honeymoon-suite</span> 2547 2548 <span class="text-[#25282a]/30">·</span> 2549 2550 <span class="rounded-full bg-[#eefbf8] px-2.5 py-0.5 text-[11px] font-bold uppercase tracking-[.14em] text-[#0047BB]"> 2551 Page 2552 </span> 2553 2554 2555 </div> 2556 2557 <h3 class="ab1-search-line-clamp-2 mt-1 text-xl font-bold leading-snug text-[#1a0dab] transition group-hover:underline sm:text-2xl"> 2558 Honeymoon Suite | Astoria Boracay, Station 1 2559 </h3> 2560 2561 <p class="ab1-search-line-clamp-3 mt-2 text-sm font-semibold leading-7 text-[#25282a]/75 sm:text-base"> 2562 honeymoon <mark class="ab1-hit">accommodations</mark>/honeymoon-suite rooms.honeymoon Honeymoon Suite | Astoria Boracay, Station 1 Our Honeymoon Suites offer you the most intimate setting that thrives on beauty and romance. 2563 </p> 2564 2565 <div class="mt-3 inline-flex items-center gap-2 rounded-full border border-[#000000]/30 bg-[#fff36a] px-3 py-1 text-[11px] font-bold uppercase tracking-[.16em] text-[#000000]"> 2566 Hit in Meta Keywords 2567 </div> 2568 </a> 2569 </article> 2570 2571 <article class="ab1-search-google-result border-b border-[#25282a]/10 px-0 py-6 first:pt-0 last:border-b-0 sm:px-4"> 2572 <a href="/accommodations/premier" class="group block"> 2573 <div class="ab1-search-url flex flex-wrap items-center gap-x-2 gap-y-1 text-sm font-bold leading-6 text-[#228848]"> 2574 <span class="max-w-full break-all">astoriaboracay.com/<mark class="ab1-hit">accommodations</mark>/premier</span> 2575 2576 <span class="text-[#25282a]/30">·</span> 2577 2578 <span class="rounded-full bg-[#eefbf8] px-2.5 py-0.5 text-[11px] font-bold uppercase tracking-[.14em] text-[#0047BB]"> 2579 Page 2580 </span> 2581 2582 2583 </div> 2584 2585 <h3 class="ab1-search-line-clamp-2 mt-1 text-xl font-bold leading-snug text-[#1a0dab] transition group-hover:underline sm:text-2xl"> 2586 Premier Room | Astoria Boracay, Station 1 2587 </h3> 2588 2589 <p class="ab1-search-line-clamp-3 mt-2 text-sm font-semibold leading-7 text-[#25282a]/75 sm:text-base"> 2590 premier <mark class="ab1-hit">accommodations</mark>/premier rooms.premier Premier Room | Astoria Boracay, Station 1 Our Premier rooms boast of chic and spacious interiors furnished with a private veranda. 2591 </p> 2592 2593 <div class="mt-3 inline-flex items-center gap-2 rounded-full border border-[#000000]/30 bg-[#fff36a] px-3 py-1 text-[11px] font-bold uppercase tracking-[.16em] text-[#000000]"> 2594 Hit in Meta Keywords 2595 </div> 2596 </a> 2597 </article> 2598 2599 <article class="ab1-search-google-result border-b border-[#25282a
2599]/10 px-0 py-6 first:pt-0 last:border-b-0 sm:px-4"> 2600 <a href="/https://localhost" class="group block"> 2601 <div class="ab1-search-url flex flex-wrap items-center gap-x-2 gap-y-1 text-sm font-bold leading-6 text-[#228848]"> 2602 <span class="max-w-full break-all">astoriaboracay.com/https://localhost</span> 2603 2604 <span class="text-[#25282a]/30">·</span> 2605 2606 <span class="rounded-full bg-[#eefbf8] px-2.5 py-0.5 text-[11px] font-bold uppercase tracking-[.14em] text-[#0047BB]"> 2607 Page 2608 </span> 2609 2610 2611 </div> 2612 2613 <h3 class="ab1-search-line-clamp-2 mt-1 text-xl font-bold leading-snug text-[#1a0dab] transition group-hover:underline sm:text-2xl"> 2614 Astoria Boracay | Hotel in Boracay, Station 1 2615 </h3> 2616 2617 <p class="ab1-search-line-clamp-3 mt-2 text-sm font-semibold leading-7 text-[#25282a]/75 sm:text-base"> 2618 ⦠0, Astoria Boracay is the first resort property from Astoria Hotels and Resorts. It offers unparalleled beachfront <mark class="ab1-hit">accommodations</mark> painted in a complementary mix of bright tropical and calming earth colors. Interiors and furnishings in all 71 rooms pay hom... 2619 </p> 2620 2621 <div class="mt-3 inline-flex items-center gap-2 rounded-full border border-[#000000]/30 bg-[#fff36a] px-3 py-1 text-[11px] font-bold uppercase tracking-[.16em] text-[#000000]"> 2622 Hit in Page Content 2623 </div> 2624 </a> 2625 </article> 2626 2627 <article class="ab1-search-google-result border-b border-[#25282a]/10 px-0 py-6 first:pt-0 last:border-b-0 sm:px-4"> 2628 <a href="/5-useful-tips-for-solo-travelers" class="group block"> 2629 <div class="ab1-search-url flex flex-wrap items-center gap-x-2 gap-y-1 text-sm font-bold leading-6 text-[#228848]"> 2630 <span class="max-w-full break-all">astoriaboracay.com/5-useful-tips-for-solo-travelers</span> 2631 2632 <span class="text-[#25282a]/30">·</span> 2633 2634 <span class="rounded-full bg-[#eefbf8] px-2.5 py-0.5 text-[11px] font-bold uppercase tracking-[.14em] text-[#0047BB]"> 2635 Blog 2636 </span> 2637 2638 2639 <span class="text-[#25282a]/30">·</span> 2640 <time datetime="2026-09-25 00:35:06" class="text-xs font-bold text-[#25282a]/55">Sep 25, 2026</time> 2641 </div> 2642 2643 <h3 class="ab1-search-line-clamp-2 mt-1 text-xl font-bold leading-snug text-[#1a0dab] transition group-hover:underline sm:text-2xl"> 2644 5 Useful Tips for Solo Travelers 2645 </h3> 2646 2647 <p class="ab1-search-line-clamp-3 mt-2 text-sm font-semibold leading-7 text-[#25282a]/75 sm:text-base"> 2648 ⦠. You should also consider your set budget, availability in schedule, and preferences when it comes to flights and <mark class="ab1-hit">accommodations</mark>. We highly suggest choosing a local destination first to test the waters. Most vacationers find being in their home country a... 2649 </p> 2650 2651 <div class="mt-3 inline-flex items-center gap-2 rounded-full border border-[#000000]/30 bg-[#fff36a] px-3 py-1 text-[11px] font-bold uppercase tracking-[.16em] text-[#000000]"> 2652 Hit in Page Content 2653 </div> 2654 </a> 2655 </article> 2656 2657 <article class="ab1-search-google-result border-b border-[#25282a
2657]/10 px-0 py-6 first:pt-0 last:border-b-0 sm:px-4"> 2658 <a href="/3-tips-to-choose-the-best-room-for-your-vacation-at-this-stunning-beachfront-hotel-in-station-1-boracay" class="group block"> 2659 <div class="ab1-search-url flex flex-wrap items-center gap-x-2 gap-y-1 text-sm font-bold leading-6 text-[#228848]"> 2660 <span class="max-w-full break-all">astoriaboracay.com/3-tips-to-choose-the-best-room-for-your-vacation-at-this-stunning-beachfront-hoteâ¦</span> 2661 2662 <span class="text-[#25282a]/30">·</span> 2663 2664 <span class="rounded-full bg-[#eefbf8] px-2.5 py-0.5 text-[11px] font-bold uppercase tracking-[.14em] text-[#0047BB]"> 2665 Blog 2666 </span> 2667 2668 2669 <span class="text-[#25282a]/30">·</span> 2670 <time datetime="2026-09-25 00:35:06" class="text-xs font-bold text-[#25282a]/55">Sep 25, 2026</time> 2671 </div> 2672 2673 <h3 class="ab1-search-line-clamp-2 mt-1 text-xl font-bold leading-snug text-[#1a0dab] transition group-hover:underline sm:text-2xl"> 2674 3 Tips to Choose the Best Room for Your Vacation at this Stunning Beachfront Hotel in Station 1, Boracay 2675 </h3> 2676 2677 <p class="ab1-search-line-clamp-3 mt-2 text-sm font-semibold leading-7 text-[#25282a]/75 sm:text-base"> 2678 ⦠s resort is the perfect destination for travelers seeking an unforgettable tropical getaway. It also offers modern <mark class="ab1-hit">accommodations</mark> and top-notch amenities, making it an ideal choice for couples, families, and even solo travelers. However, with various room... 2679 </p> 2680 2681 <div class="mt-3 inline-flex items-center gap-2 rounded-full border border-[#000000]/30 bg-[#fff36a] px-3 py-1 text-[11px] font-bold uppercase tracking-[.16em] text-[#000000]"> 2682 Hit in Page Content 2683 </div> 2684 </a> 2685 </article> 2686 2687 <article class="ab1-search-google-result border-b border-[#25282a]/10 px-0 py-6 first:pt-0 last:border-b-0 sm:px-4"> 2688 <a href="/ready-to-save-big-here-are-3-bank-promos-you-can-avail-of-for-your-next-astoria-boracay-getaway" class="group block"> 2689 <div class="ab1-search-url flex flex-wrap items-center gap-x-2 gap-y-1 text-sm font-bold leading-6 text-[#228848]"> 2690 <span class="max-w-full break-all">astoriaboracay.com/ready-to-save-big-here-are-3-bank-promos-you-can-avail-of-for-your-next-astoria-bâ¦</span> 2691 2692 <span class="text-[#25282a]/30">·</span> 2693 2694 <span class="rounded-full bg-[#eefbf8] px-2.5 py-0.5 text-[11px] font-bold uppercase tracking-[.14em] text-[#0047BB]"> 2695 Blog 2696 </span> 2697 2698 2699 <span class="text-[#25282a]/30">·</span> 2700 <time datetime="2026-09-25 00:35:06" class="text-xs font-bold text-[#25282a]/55">Sep 25, 2026</time> 2701 </div> 2702 2703 <h3 class="ab1-search-line-clamp-2 mt-1 text-xl font-bold leading-snug text-[#1a0dab] transition group-hover:underline sm:text-2xl"> 2704 Ready To Save Big? Here are 3 Bank Promos You Can Avail of for Your Next Astoria Boracay Getaway! 2705 </h3> 2706 2707 <p class="ab1-search-line-clamp-3 mt-2 text-sm font-semibold leading-7 text-[#25282a
2707]/75 sm:text-base"> 2708 ⦠Situated in the alluring stretch of Station 1, this stunning resort offers breathtaking views of the island, cozy <mark class="ab1-hit">accommodations</mark>, drool-worthy cuisine, world-class amenities, and unparalleled service, making it the perfect destination for your next vacat... ⦠2709 </p> 2710 2711 <div class="mt-3 inline-flex items-center gap-2 rounded-full border border-[#000000]/30 bg-[#fff36a] px-3 py-1 text-[11px] font-bold uppercase tracking-[.16em] text-[#000000]"> 2712 Hit in Page Content 2713 </div> 2714 </a> 2715 </article> 2716 2717 <div class="pt-4"> 2718 <nav role="navigation" aria-label="Pagination Navigation" class="flex items-center justify-between"> 2719 <div class="flex justify-between flex-1 sm:hidden"> 2720 <span class="relative inline-flex items-center px-4 py-2 text-sm font-medium text-gray-500 bg-white border border-gray-300 cursor-default leading-5 rounded-md dark:text-gray-600 dark:bg-gray-800 dark:border-gray-600"> 2721 « Previous 2722 </span> 2723 2724 <a href="https://astoriaboracay.com/search?q=accommodations&page=2" class="relative inline-flex items-center px-4 py-2 ml-3 text-sm font-medium text-gray-700 bg-white border border-gray-300 leading-5 rounded-md hover:text-gray-500 focus:outline-none focus:ring ring-gray-300 focus:border-blue-300 active:bg-gray-100 active:text-gray-700 transition ease-in-out duration-150 dark:bg-gray-800 dark:border-gray-600 dark:text-gray-300 dark:focus:border-blue-700 dark:active:bg-gray-700 dark:active:text-gray-300"> 2725 Next » 2726 </a> 2727 </div> 2728 2729 <div class="hidden sm:flex-1 sm:flex sm:items-center sm:justify-between"> 2730 <div> 2731 <p class="text-sm text-gray-700 leading-5 dark:text-gray-400"> 2732 Showing 2733 <span class="font-medium">1</span> 2734 to 2735 <span class="font-medium">12</span> 2736 of 2737 <span class="font-medium">19</span> 2738 results 2739 </p> 2740 </div> 2741 2742 <div> 2743 <span class="relative z-0 inline-flex rtl:flex-row-reverse shadow-sm rounded-md"> 2744 2745 <span aria-disabled="true" aria-label="&laquo; Previous"> 2746 <span class="relative inline-flex items-center px-2 py-2 text-sm font-medium text-gray-500 bg-white border border-gray-300 cursor-default rounded-l-md leading-5 dark:bg-gray-800 dark:border-gray-600" aria-hidden="true"> 2747 <svg class="w-5 h-5" fill="currentColor" viewBox="0 0 20 20"> 2748 <path fill-rule="evenodd" d="M12.707 5.293a1 1 0 010 1.414L9.414 10l3.293 3.293a1 1 0 01-1.414 1.414l-4-4a1 1 0 010-1.414l4-4a1 1 0 011.414 0z" clip-rule="evenodd" /> 2749 </svg> 2750 </span> 2751 </span> 2752 2753 2754 2755 2756 2757 <span aria-current="page"> 2758 <span class="relative inline-flex items-center px-4 py-2 -ml-px text-sm font-medium text-gray-500 bg-white border border-gray-300 cursor-default leading-5 dark:bg-gray-800 dark:border-gray-600">1</span> 2759 </span> 2760 <a href="https://astoriaboracay.com/search?q=accommodations&page=2" class="relative inline-flex items-center px-4 py-2 -ml-px text-sm font-medium text-gray-700 bg-white border border-gray-300 leading-5 hover:text-gray-500 focus:z-10 focus:outline-none focus:ring ring-gray-300 focus:border-blue-300 active:bg-gray-100 active:text-gray-700 transition ease-in-out duration-150 dark:bg-gray-800 dark:border-gray-600 dark:text-gray-400 dark:hover:text-gray-300 dark:active:bg-gray-700 dark:focus:border-blue-800" aria-label="Go to page 2"> 2761 2 2762 </a> 2763 2764 2765 <a href="https://astoriaboracay.com/search?q=accommodations&page=2" rel="next" class="relative inline-flex items-center px-2 py-2 -ml-px text-sm font-medium text-gray-500 bg-white border border-gray-300 rounded-r-md leading-5 hover:text-gray-400 focus:z-10 focus:outline-none focus:ring ring-gray-300 focus:border-blue-300 active:bg-gray-100 active:text-gray-500 transition ease-in-out duration-150 dark:bg-gray-800 dark:border-gray-600 dark:active:bg-gray-700 dark:focus:border-blue-800" aria-label="Next &raquo;"> 2766 <svg class="w-5 h-5" fill="currentColor" viewBox="0 0 20 20"> 2767 <path fill-rule="evenodd" d="M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z" clip-rule="evenodd" /> 2768 </svg> 2769 </a> 2770 </span> 2771 </div> 2772 </div> 2773 </nav> 2774 2775 </div> 2776 </div> 2777 </section> 2778 </div> 2779</main> 2780 2781 2782 2783
2784 <footer class="text-[#25282a]" role="contentinfo"> 2785 2786<style> 2787 #footer-properties-discover .filter-chip { 2788 transition: background-color 220ms ease, transform 220ms ease, box-shadow 220ms ease; 2789 } 2790 2791 #footer-properties-discover .stay-chip-bounce { 2792 animation: stayChipBounce 0.36s ease; 2793 } 2794 2795 #footer-properties-discover #stay-grid-shell { 2796 position: relative; 2797 isolation: isolate; 2798 } 2799 2800 #footer-properties-discover #stay-grid { 2801 transition: none !important; 2802 } 2803 2804 #footer-properties-discover #stay-grid.stay-grid-muted { 2805 display: none !important; 2806 pointer-events: none !important; 2807 } 2808 2809 #footer-properties-discover #stay-loading { 2810 position: relative; 2811 display: none; 2812 width: 100%; 2813 height: auto; 2814 min-height: 0; 2815 overflow: hidden; 2816 opacity: 0; 2817 visibility: hidden; 2818 pointer-events: none; 2819 background: transparent; 2820 transition: none !important; 2821 } 2822 2823 #footer-properties-discover #stay-loading.stay-loading-visible { 2824 display: block; 2825 opacity: 1; 2826 visibility: visible; 2827 } 2828 2829 #footer-properties-discover .stay-loading-pill { 2830 display: inline-flex; 2831 align-items: center; 2832 gap: 0.5rem; 2833 border-radius: 9999px; 2834 background: rgba(255, 255, 255, 0.08); 2835 padding: 0.5rem 0.875rem; 2836 font-size: 0.72rem; 2837 font-weight: 700; 2838 letter-spacing: 0.18em; 2839 text-transform: uppercase; 2840 color: rgba(255, 255, 255, 0.74); 2841 box-shadow: 0 12px 30px rgba(0, 0, 0, 0.2); 2842 ring: 1px solid rgba(255, 255, 255, 0.08); 2843 } 2844 2845 #footer-properties-discover .stay-loading-dot { 2846 height: 0.55rem; 2847 width: 0.55rem; 2848 border-radius: 9999px; 2849 background: rgba(255, 255, 255, 0.75); 2850 animation: stayPulse 1s ease-in-out infinite; 2851 } 2852 2853 #footer-properties-discover .stay-skeleton-card { 2854 position: relative; 2855 overflow: hidden; 2856 border-radius: 1rem; 2857 background: rgba(255, 255, 255, 0.05); 2858 box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.08); 2859 } 2860 2861 #footer-properties-discover .stay-skeleton-card::after { 2862 content: ""; 2863 position: absolute; 2864 inset: 0; 2865 transform: translateX(-100%); 2866 background: linear-gradient( 2867 90deg, 2868 transparent 0%, 2869 rgba(255, 255, 255, 0.08) 35%, 2870 rgba(255, 255, 255, 0.16) 50%, 2871 rgba(255, 255, 255, 0.08) 65%, 2872 transparent 100% 2873 ); 2874 animation: staySkeletonShimmer 1.4s linear infinite; 2875 } 2876 2877 #footer-properties-discover .stay-skeleton-block { 2878 position: relative; 2879 z-index: 1; 2880 border-radius: 9999px; 2881 background: rgba(255, 255, 255, 0.1); 2882 } 2883 2884 #footer-properties-discover .stay-skeleton-block.square { 2885 border-radius: 0.85rem; 2886 } 2887 2888 @keyframes staySkeletonShimmer { 2889 100% { 2890 transform: translateX(100%); 2891 } 2892 } 2893 2894 @keyframes stayChipBounce { 2895 0% { transform: scale(1); } 2896 50% { transform: scale(1.05); } 2897 100% { transform: scale(1); } 2898 } 2899 2900 @keyframes stayPulse { 2901 0%, 100% { opacity: 0.45; transform: scale(1); } 2902 50% { opacity: 1; transform: scale(1.12); } 2903 } 2904 2905 @media (prefers-reduced-motion: reduce) { 2906 #footer-properties-discover .filter-chip, 2907 #footer-properties-discover #stay-grid, 2908 #footer-properties-discover #stay-loading { 2909 transition: none !important; 2910 animation: none !important; 2911 } 2912 2913 #footer-properties-discover .stay-skeleton-card::after, 2914 #footer-properties-discover .stay-loading-dot, 2915 #footer-properties-discover .stay-chip-bounce { 2916 animation: none !important; 2917 } 2918 } 2919</style> 2920 2921<section id="footer-properties-discover" class="relative overflow-hidden bg-gradient-to-b from-[#0b1118] via-[#0b0f14] to-black py-24 text-white"> 2922 <span aria-hidden="true" class="pointer-events-none absolute -top-24 -left-24 h-80 w-80 rounded-full bg-cyan-400/10 blur-3xl"></span> 2923 <span aria-hidden="true" class="pointer-events-none absolute -bottom-24 -right-24 h-96 w-96 rounded-full bg-indigo-400/10 blur-3xl"></span> 2924 2925 <div class="mx-auto max-w-[1500px] px-6"> 2926 <header class="flex flex-col gap-6 md:flex-row md:items-end md:justify-between" data-aos="fade-up"> 2927 <div> 2928 <p class="text-xl font-semibold uppercase tracking-[.25em] text-white/70">Discover</p> 2929 <h2 class="mt-2 text-4xl font-semibold leading-tight text-white md:text-5xl">The Astoria Group</h2> 2930 <p class="mt-3 max-w-2xl text-lg text-white/80 sm:text-base lg:text-xl"> 2931 Browse and find The Astoria Group properties that fit your vibe. 2932 </p> 2933 </div> 2934 2935 <div class="w-full md:w-auto" data-aos="fade-up" data-aos-delay="100"> 2936 <div id="stay-filters" class="inline-flex flex-wrap items-center gap-2 rounded-2xl bg-white/5 p-2 ring-1 ring-white/10 backdrop-blur"> 2937 <button 2938 type="button" 2939 class="filter-chip rounded-full bg-white/20 px-4 py-2 text-sm font-semibold text-white shadow ring-1 ring-white/15" 2940 data-filter="all" 2941 aria-pressed="true" 2942 > 2943 All 2944 </button> 2945 <button 2946 type="button" 2947 class="filter-chip rounded-full px-4 py-2 text-sm font-semibold text-white hover:bg-white/10" 2948 data-filter="family" 2949 aria-pressed="false" 2950 > 2951 Family 2952 </button> 2953 <button 2954 type="button" 2955 class="filter-chip rounded-full px-4 py-2 text-sm font-semibold text-white hover:bg-white/10" 2956 data-filter="group" 2957 aria-pressed="false" 2958 > 2959 Group 2960 </button> 2961 <button 2962 type="button" 2963 class="filter-chip rounded-full px-4 py-2 text-sm font-semibold text-white hover:bg-white/10" 2964 data-filter="beach" 2965 aria-pressed="false" 2966 > 2967 Beach 2968 </button> 2969 <button 2970 type="button" 2971 class="filter-chip rounded-full px-4 py-2 text-sm font-semibold text-white hover:bg-white/10" 2972 data-filter="couple" 2973 aria-pressed="false" 2974 > 2975 Couple 2976 </button> 2977 <button 2978 type="button" 2979 class="filter-chip rounded-full px-4 py-2 text-sm font-semibold text-white hover:bg-white/10" 2980 data-filter="corporate" 2981 aria-pressed="false" 2982 > 2983 Corporate 2984 </button> 2985 </div> 2986 </div> 2987 </header> 2988 2989 <div class="mt-8 border-b border-white/10"></div> 2990 2991 2992 2993 <div id="stay-grid-shell" class="mt-10"> 2994 <div id="stay-grid" class="grid grid-cols-1 gap-6 md:grid-cols-2 lg:grid-cols-3"> 2995 <article 2996 class="cta-card group relative h-[460px] overflow-hidden rounded-2xl bg-white/5 ring-1 ring-white/10 md:h-[500px] lg:col-span-3" 2997 data-categories="corporate,beach,family,group,couple" 2998 data-default-fullwidth="true" 2999 data-aos="fade-up" 3000 data-aos-delay="0" 3001 > 3002 <img 3003 src="https://astoriaboracay.com/images/footer/apw2.webp" 3004 alt="Astoria Palawan" 3005 data-property-image 3006 data-image-all="https://astoriaboracay.com/images/footer/apw2.webp" 3007 data-image-family="https://astoriaboracay.com/images/footer/filters/astoria-palawan-family.webp" 3008 data-image-group="https://astoriaboracay.com/images/footer/filters/astoria-palawan-group.webp" 3009 data-image-beach="https://astoriaboracay.com/images/footer/filters/astoria-palawan-beach.webp" 3010 data-image-couple="https://astoriaboracay.com/images/footer/filters/astoria-palawan-couple.webp" 3011 data-image-corporate="https://astoriaboracay.com/images/footer/filters/astoria-palawan-corporate.webp" 3012 class="absolute inset-0 h-full w-full object-cover opacity-90 transition-transform duration-700 ease-out group-hover:scale-105" 3013 loading="lazy" 3014 decoding="async" 3015 onerror="this.onerror=null; this.src='https://astoriaboracay.com/images/footer/apw2.webp';" 3016 > 3017 3018 <div class="absolute inset-0 bg-gradient-to-t from-black/30 via-black/20 to-transparent"></div> 3019 3020 <div class="absolute left-4 top-4 flex flex-wrap gap-2">
3021 <span class="inline-flex items-center rounded-full bg-transparent px-3 py-1 text-xs font-semibold text-white ring-1 ring-white/20 backdrop-blur-sm"> 3022 Puerto Princesa 3023 </span> 3024 3025 <span class="inline-flex items-center rounded-full px-3 py-1 text-xs font-semibold bg-transparent text-white ring-1 ring-white/20"> 3026 Corporate 3027 </span> 3028 <span class="inline-flex items-center rounded-full px-3 py-1 text-xs font-semibold bg-transparent text-white ring-1 ring-white/20"> 3029 Beach 3030 </span> 3031 <span class="inline-flex items-center rounded-full px-3 py-1 text-xs font-semibold bg-transparent text-white ring-1 ring-white/20"> 3032 Family 3033 </span> 3034 <span class="inline-flex items-center rounded-full px-3 py-1 text-xs font-semibold bg-transparent text-white ring-1 ring-white/20"> 3035 Group 3036 </span> 3037 <span class="inline-flex items-center rounded-full px-3 py-1 text-xs font-semibold bg-transparent text-white ring-1 ring-white/20"> 3038 Couple 3039 </span> 3040 </div> 3041 3042 <div class="absolute inset-x-0 bottom-0 p-6"> 3043 <div class="lg:max-w-2xl"> 3044 <h3 class="text-2xl font-semibold">Astoria Palawan</h3> 3045 <p class="mt-1 text-base font-medium text-white/90">A family-centric, eco-friendly resort surrounded by lush landscapes.</p> 3046 </div> 3047 3048 <div class="mt-5 flex flex-col gap-4 sm:flex-row sm:items-center sm:justify-between"> 3049 <span class="text-base font-medium text-white/90">Puerto Princesa, Palawan</span> 3050 <a 3051 href="https://astoriapalawan.com/" 3052 target="_blank" 3053 rel="noopener" 3054 class="inline-flex items-center justify-center gap-2 rounded-full bg-white px-5 py-2 text-xs font-bold text-black shadow transition hover:translate-y-[-2px]" 3055 > 3056 Visit 3057 <svg class="h-3.5 w-3.5" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true"> 3058 <path d="M13 5l7 7-7 7v-4H4v-6h9V5z"/> 3059 </svg> 3060 </a> 3061 </div> 3062 </div> 3063 </article> 3064 <article 3065 class="cta-card group relative h-[460px] overflow-hidden rounded-2xl bg-white/5 ring-1 ring-white/10 md:h-[500px] " 3066 data-categories="beach,couple,family,group" 3067 data-default-fullwidth="false" 3068 data-aos="fade-up" 3069 data-aos-delay="100" 3070 > 3071 <img 3072 src="https://astoriaboracay.com/images/footer/ab1.webp" 3073 alt="Astoria Boracay" 3074 data-property-image 3075 data-image-all="https://astoriaboracay.com/images/footer/ab1.webp" 3076 data-image-family="https://astoriaboracay.com/images/footer/filters/astoria-boracay-family.webp" 3077 data-image-group="https://astoriaboracay.com/images/footer/filters/astoria-boracay-group.webp" 3078 data-image-beach="https://astoriaboracay.com/images/footer/filters/astoria-boracay-beach.webp" 3079 data-image-couple="https://astoriaboracay.com/images/footer/filters/astoria-boracay-couple.webp" 3080 data-image-corporate="https://astoriaboracay.com/images/footer/ab1.webp" 3081 class="absolute inset-0 h-full w-full object-cover opacity-90 transition-transform duration-700 ease-out group-hover:scale-105" 3082 loading="lazy" 3083 decoding="async" 3084 onerror="this.onerror=null; this.src='https://astoriaboracay.com/images/footer/ab1.webp';" 3085 > 3086 3087 <div class="absolute inset-0 bg-gradient-to-t from-black/30 via-black/20 to-transparent"></div> 3088 3089 <div class="absolute left-4 top-4 flex flex-wrap gap-2"> 3090 <span class="inline-flex items-center rounded-full bg-transparent px-3 py-1 text-xs font-semibold text-white ring-1 ring-white/20 backdrop-blur-sm"> 3091 Station 1 3092 </span> 3093
3094 <span class="inline-flex items-center rounded-full px-3 py-1 text-xs font-semibold bg-transparent text-white ring-1 ring-white/20"> 3095 Couple 3096 </span> 3097 <span class="inline-flex items-center rounded-full px-3 py-1 text-xs font-semibold bg-transparent text-white ring-1 ring-white/20"> 3098 Beach 3099 </span> 3100 <span class="inline-flex items-center rounded-full px-3 py-1 text-xs font-semibold bg-transparent text-white ring-1 ring-white/20"> 3101 Group 3102 </span> 3103 </div> 3104 3105 <div class="absolute inset-x-0 bottom-0 p-6"> 3106 <div class=""> 3107 <h3 class="text-2xl font-semibold">Astoria Boracay</h3> 3108 <p class="mt-1 text-base font-medium text-white/90">A luxury resort experience along the white sands of Station 1, Boracay.</p> 3109 </div> 3110 3111 <div class="mt-5 flex flex-col gap-4 sm:flex-row sm:items-center sm:justify-between"> 3112 <span class="text-base font-medium text-white/90">Station 1, Boracay</span> 3113 <a 3114 href="https://astoriaboracay.com/" 3115 target="_blank" 3116 rel="noopener" 3117 class="inline-flex items-center justify-center gap-2 rounded-full bg-white px-5 py-2 text-xs font-bold text-black shadow transition hover:translate-y-[-2px]" 3118 > 3119 Visit 3120 <svg class="h-3.5 w-3.5" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true"> 3121 <path d="M13 5l7 7-7 7v-4H4v-6h9V5z"/> 3122 </svg> 3123 </a> 3124 </div> 3125 </div> 3126 </article> 3127 <article 3128 class="cta-card group relative h-[460px] overflow-hidden rounded-2xl bg-white/5 ring-1 ring-white/10 md:h-[500px] " 3129 data-categories="family,beach,couple,group" 3130 data-default-fullwidth="false" 3131 data-aos="fade-up" 3132 data-aos-delay="200" 3133 > 3134 <img 3135 src="https://astoriaboracay.com/images/footer/ac3.webp" 3136 alt="Astoria Current" 3137 data-property-image 3138 data-image-all="https://astoriaboracay.com/images/footer/ac3.webp" 3139 data-image-family="https://astoriaboracay.com/images/footer/filters/astoria-current-family.webp" 3140 data-image-group="https://astoriaboracay.com/images/footer/filters/astoria-current-group.webp" 3141 data-image-beach="https://astoriaboracay.com/images/footer/filters/astoria-current-beach.webp" 3142 data-image-couple="https://astoriaboracay.com/images/footer/filters/astoria-current-couple.webp" 3143 data-image-corporate="https://astoriaboracay.com/images/footer/ac3.webp" 3144 class="absolute inset-0 h-full w-full object-cover opacity-90 transition-transform duration-700 ease-out group-hover:scale-105" 3145 loading="lazy" 3146 decoding="async" 3147 onerror="this.onerror=null; this.src='https://astoriaboracay.com/images/footer/ac3.webp';" 3148 > 3149 3150 <div class="absolute inset-0 bg-gradient-to-t from-black/30 via-black/10 to-transparent"></div> 3151 3152 <div class="absolute left-4 top-4 flex flex-wrap gap-2"> 3153 <span class="inline-flex items-center rounded-full bg-transparent px-3 py-1 text-xs font-semibold text-white ring-1 ring-white/20 backdrop-blur-sm"> 3154 Station 3 3155 </span> 3156 3157 <span class="inline-flex items-center rounded-full px-3 py-1 text-xs font-semibold bg-transparent text-white ring-1 ring-white/20"> 3158 Family 3159 </span> 3160 <span class="inline-flex items-center rounded-full px-3 py-1 text-xs font-semibold bg-transparent text-white ring-1 ring-white/20"> 3161 Beach 3162 </span> 3163 <span class="inline-flex items-center rounded-full px-3 py-1 text-xs font-semibold bg-transparent text-white ring-1 ring-white/20"> 3164 Couple 3165 </span>
3166 <span class="inline-flex items-center rounded-full px-3 py-1 text-xs font-semibold bg-transparent text-white ring-1 ring-white/20"> 3167 Group 3168 </span> 3169 </div> 3170 3171 <div class="absolute inset-x-0 bottom-0 p-6"> 3172 <div class=""> 3173 <h3 class="text-2xl font-semibold">Astoria Current</h3> 3174 <p class="mt-1 text-base font-medium text-white/90">A vibrant beachfront resort in Station 3, Boracay.</p> 3175 </div> 3176 3177 <div class="mt-5 flex flex-col gap-4 sm:flex-row sm:items-center sm:justify-between"> 3178 <span class="text-base font-medium text-white/90">Station 3, Boracay</span> 3179 <a 3180 href="https://astoriacurrent.com/" 3181 target="_blank" 3182 rel="noopener" 3183 class="inline-flex items-center justify-center gap-2 rounded-full bg-white px-5 py-2 text-xs font-bold text-black shadow transition hover:translate-y-[-2px]" 3184 > 3185 Visit 3186 <svg class="h-3.5 w-3.5" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true"> 3187 <path d="M13 5l7 7-7 7v-4H4v-6h9V5z"/> 3188 </svg> 3189 </a> 3190 </div> 3191 </div> 3192 </article> 3193 <article 3194 class="cta-card group relative h-[460px] overflow-hidden rounded-2xl bg-white/5 ring-1 ring-white/10 md:h-[500px] " 3195 data-categories="corporate,family,group,couple" 3196 data-default-fullwidth="false" 3197 data-aos="fade-up" 3198 data-aos-delay="0" 3199 > 3200 <img 3201 src="https://astoriaboracay.com/images/footer/apz.webp" 3202 alt="Astoria Plaza" 3203 data-property-image 3204 data-image-all="https://astoriaboracay.com/images/footer/apz.webp" 3205 data-image-family="https://astoriaboracay.com/images/footer/filters/astoria-plaza-family.webp" 3206 data-image-group="https://astoriaboracay.com/images/footer/filters/astoria-plaza-group.webp" 3207 data-image-beach="https://astoriaboracay.com/images/footer/apz.webp" 3208 data-image-couple="https://astoriaboracay.com/images/footer/filters/astoria-plaza-couple.webp" 3209 data-image-corporate="https://astoriaboracay.com/images/footer/filters/astoria-plaza-corporate.webp" 3210 class="absolute inset-0 h-full w-full object-cover opacity-90 transition-transform duration-700 ease-out group-hover:scale-105" 3211 loading="lazy" 3212 decoding="async" 3213 onerror="this.onerror=null; this.src='https://astoriaboracay.com/images/footer/apz.webp';" 3214 > 3215 3216 <div class="absolute inset-0 bg-gradient-to-t from-black/30 via-black/20 to-transparent"></div> 3217 3218 <div class="absolute left-4 top-4 flex flex-wrap gap-2"> 3219 <span class="inline-flex items-center rounded-full bg-transparent px-3 py-1 text-xs font-semibold text-white ring-1 ring-white/20 backdrop-blur-sm"> 3220 Ortigas, Pasig 3221 </span> 3222 3223 <span class="inline-flex items-center rounded-full px-3 py-1 text-xs font-semibold bg-transparent text-white ring-1 ring-white/20"> 3224 Corporate 3225 </span> 3226 <span class="inline-flex items-center rounded-full px-3 py-1 text-xs font-semibold bg-transparent text-white ring-1 ring-white/20"> 3227 Family 3228 </span> 3229 <span class="inline-flex items-center rounded-full px-3 py-1 text-xs font-semibold bg-transparent text-white ring-1 ring-white/20"> 3230 Group 3231 </span> 3232 <span class="inline-flex items-center rounded-full px-3 py-1 text-xs font-semibold bg-transparent text-white ring-1 ring-white/20"> 3233 Couple 3234 </span> 3235 </div> 3236 3237 <div class="absolute inset-x-0 bottom-0 p-6"> 3238 <div class=""> 3239 <h3 class="text-2xl font-semibold">Astoria Plaza</h3> 3240 <p class="mt-1 text-base font-medium text-white/90">Modern comfort in the heart of Ortigas Business District.</p> 3241 </div> 3242 3243 <div class="mt-5 flex flex-col gap-4 sm:flex-row sm:items-center sm:justify-between">
3244 <span class="text-base font-medium text-white/90">Pasig, Metro Manila</span> 3245 <a 3246 href="https://astoriaplaza.com/" 3247 target="_blank" 3248 rel="noopener" 3249 class="inline-flex items-center justify-center gap-2 rounded-full bg-white px-5 py-2 text-xs font-bold text-black shadow transition hover:translate-y-[-2px]" 3250 > 3251 Visit 3252 <svg class="h-3.5 w-3.5" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true"> 3253 <path d="M13 5l7 7-7 7v-4H4v-6h9V5z"/> 3254 </svg> 3255 </a> 3256 </div> 3257 </div> 3258 </article> 3259 <article 3260 class="cta-card group relative h-[460px] overflow-hidden rounded-2xl bg-white/5 ring-1 ring-white/10 md:h-[500px] " 3261 data-categories="beach" 3262 data-default-fullwidth="false" 3263 data-aos="fade-up" 3264 data-aos-delay="100" 3265 > 3266 <img 3267 src="https://astoriaboracay.com/images/footer/abh.webp" 3268 alt="Astoria Bohol" 3269 data-property-image 3270 data-image-all="https://astoriaboracay.com/images/footer/abh.webp" 3271 data-image-family="https://astoriaboracay.com/images/footer/abh.webp" 3272 data-image-group="https://astoriaboracay.com/images/footer/abh.webp" 3273 data-image-beach="https://astoriaboracay.com/images/footer/filters/astoria-bohol-beach.webp" 3274 data-image-couple="https://astoriaboracay.com/images/footer/abh.webp" 3275 data-image-corporate="https://astoriaboracay.com/images/footer/abh.webp" 3276 class="absolute inset-0 h-full w-full object-cover opacity-90 transition-transform duration-700 ease-out group-hover:scale-105" 3277 loading="lazy" 3278 decoding="async" 3279 onerror="this.onerror=null; this.src='https://astoriaboracay.com/images/footer/abh.webp';" 3280 > 3281 3282 <div class="absolute inset-0 bg-gradient-to-t from-black/30 via-black/20 to-transparent"></div> 3283 3284 <div class="absolute left-4 top-4 flex flex-wrap gap-2"> 3285 <span class="inline-flex items-center rounded-full bg-transparent px-3 py-1 text-xs font-semibold text-white ring-1 ring-white/20 backdrop-blur-sm"> 3286 Baclayon, Bohol 3287 </span> 3288 3289 <span class="inline-flex items-center rounded-full px-3 py-1 text-xs font-semibold bg-transparent text-white ring-1 ring-white/20"> 3290 Beach 3291 </span> 3292 </div> 3293 3294 <div class="absolute inset-x-0 bottom-0 p-6"> 3295 <div class=""> 3296 <h3 class="text-2xl font-semibold">Astoria Bohol</h3> 3297 <p class="mt-1 text-base font-medium text-white/90">An exclusive tropical escape in Baclayon.</p> 3298 </div> 3299 3300 <div class="mt-5 flex flex-col gap-4 sm:flex-row sm:items-center sm:justify-between"> 3301 <span class="text-base font-medium text-white/90">Baclayon, Bohol</span> 3302 <a 3303 href="https://astoriabohol.com/" 3304 target="_blank" 3305 rel="noopener" 3306 class="inline-flex items-center justify-center gap-2 rounded-full bg-white px-5 py-2 text-xs font-bold text-black shadow transition hover:translate-y-[-2px]" 3307 > 3308 Visit 3309 <svg class="h-3.5 w-3.5" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true"> 3310 <path d="M13 5l7 7-7 7v-4H4v-6h9V5z"/> 3311 </svg> 3312 </a> 3313 </div> 3314 </div> 3315 </article> 3316 <article 3317 class="cta-card group relative h-[460px] overflow-hidden rounded-2xl bg-white/5 ring-1 ring-white/10 md:h-[500px] " 3318 data-categories="family,couple" 3319 data-default-fullwidth="false" 3320 data-aos="fade-up" 3321 data-aos-delay="200" 3322 > 3323 <img 3324 src="https://astoriaboracay.com/images/footer/spo.webp" 3325 alt="Stellar Panglao" 3326 data-property-image 3327 data-image-all="https://astoriaboracay.com/images/footer/spo.webp" 3328 data-image-family="https://astoriaboracay.com/images/footer/filters/stellar-panglao-family.webp" 3329 data-image-group="https://astoriaboracay.com/images/footer/spo.webp" 3330 data-image-beach="https://astoriaboracay.com/images/footer/spo.webp" 3331 data-image-couple="https://astoriaboracay.com/images/footer/filters/stellar-panglao-couple.webp" 3332 data-image-corporate="https://astoriaboracay.com/images/footer/spo.webp" 3333 class="absolute inset-0 h-full w-full object-cover opacity-90 transition-transform duration-700 ease-out group-hover:scale-105" 3334 loading="lazy" 3335 decoding="async" 3336 onerror="this.onerror=null; this.src='https://astoriaboracay.com/images/footer/spo.webp';" 3337 > 3338 3339 <div class="absolute inset-0 bg-gradient-to-t from-black/30 via-black/20 to-transparent"></div> 3340 3341 <div class="absolute left-4 top-4 flex flex-wrap gap-2">
3342 <span class="inline-flex items-center rounded-full bg-transparent px-3 py-1 text-xs font-semibold text-white ring-1 ring-white/20 backdrop-blur-sm"> 3343 Panglao, Bohol 3344 </span> 3345 3346 <span class="inline-flex items-center rounded-full px-3 py-1 text-xs font-semibold bg-transparent text-white ring-1 ring-white/20"> 3347 Family 3348 </span> 3349 <span class="inline-flex items-center rounded-full px-3 py-1 text-xs font-semibold bg-transparent text-white ring-1 ring-white/20"> 3350 Couple 3351 </span> 3352 </div> 3353 3354 <div class="absolute inset-x-0 bottom-0 p-6"> 3355 <div class=""> 3356 <h3 class="text-2xl font-semibold">Stellar Panglao</h3> 3357 <p class="mt-1 text-base font-medium text-white/90">Sun-kissed stays along Panglaoâs shores.</p> 3358 </div> 3359 3360 <div class="mt-5 flex flex-col gap-4 sm:flex-row sm:items-center sm:justify-between"> 3361 <span class="text-base font-medium text-white/90">Panglao, Bohol</span> 3362 <a 3363 href="https://stellarpanglao.com/" 3364 target="_blank" 3365 rel="noopener" 3366 class="inline-flex items-center justify-center gap-2 rounded-full bg-white px-5 py-2 text-xs font-bold text-black shadow transition hover:translate-y-[-2px]" 3367 > 3368 Visit 3369 <svg class="h-3.5 w-3.5" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true"> 3370 <path d="M13 5l7 7-7 7v-4H4v-6h9V5z"/> 3371 </svg> 3372 </a> 3373 </div> 3374 </div> 3375 </article> 3376 <article 3377 class="cta-card group relative h-[460px] overflow-hidden rounded-2xl bg-white/5 ring-1 ring-white/10 md:h-[500px] " 3378 data-categories="family" 3379 data-default-fullwidth="false" 3380 data-aos="fade-up" 3381 data-aos-delay="0" 3382 > 3383 <img 3384 src="https://astoriaboracay.com/images/footer/spr.webp" 3385 alt="Stellar Potter's Ridge" 3386 data-property-image 3387 data-image-all="https://astoriaboracay.com/images/footer/spr.webp" 3388 data-image-family="https://astoriaboracay.com/images/footer/spr.webp" 3389 data-image-group="https://astoriaboracay.com/images/footer/spr.webp" 3390 data-image-beach="https://astoriaboracay.com/images/footer/spr.webp" 3391 data-image-couple="https://astoriaboracay.com/images/footer/spr.webp" 3392 data-image-corporate="https://astoriaboracay.com/images/footer/spr.webp" 3393 class="absolute inset-0 h-full w-full object-cover opacity-90 transition-transform duration-700 ease-out group-hover:scale-105" 3394 loading="lazy" 3395 decoding="async" 3396 onerror="this.onerror=null; this.src='https://astoriaboracay.com/images/footer/spr.webp';" 3397 > 3398 3399 <div class="absolute inset-0 bg-gradient-to-t from-black/30 via-black/20 to-transparent"></div> 3400 3401 <div class="absolute left-4 top-4 flex flex-wrap gap-2"> 3402 <span class="inline-flex items-center rounded-full bg-transparent px-3 py-1 text-xs font-semibold text-white ring-1 ring-white/20 backdrop-blur-sm"> 3403 Metro Tagaytay 3404 </span> 3405 3406 <span class="inline-flex items-center rounded-full px-3 py-1 text-xs font-semibold bg-transparent text-white ring-1 ring-white/20"> 3407 Family 3408 </span> 3409 </div> 3410 3411 <div class="absolute inset-x-0 bottom-0 p-6"> 3412 <div class=""> 3413 <h3 class="text-2xl font-semibold">Stellar Potter's Ridge</h3> 3414 <p class="mt-1 text-base font-medium text-white/90">Refreshing highland escapes with sweeping views.</p> 3415 </div> 3416 3417 <div class="mt-5 flex flex-col gap-4 sm:flex-row sm:items-center sm:justify-between">
3418 <span class="text-base font-medium text-white/90">Metro Tagaytay</span> 3419 <a 3420 href="https://stellarpottersridge.com/" 3421 target="_blank" 3422 rel="noopener" 3423 class="inline-flex items-center justify-center gap-2 rounded-full bg-white px-5 py-2 text-xs font-bold text-black shadow transition hover:translate-y-[-2px]" 3424 > 3425 Visit 3426 <svg class="h-3.5 w-3.5" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true"> 3427 <path d="M13 5l7 7-7 7v-4H4v-6h9V5z"/> 3428 </svg> 3429 </a> 3430 </div> 3431 </div> 3432 </article> 3433 </div> 3434 3435 <div id="stay-loading" aria-hidden="true"> 3436 <div id="stay-loading-grid" class="grid grid-cols-1 gap-6 md:grid-cols-2 lg:grid-cols-3"></div> 3437 </div> 3438 </div> 3439 </div> 3440</section> 3441
3442<script> 3443 document.addEventListener('DOMContentLoaded', () => { 3444 const discoverSection = document.getElementById('footer-properties-discover'); 3445 if (!discoverSection) return; 3446 3447 const gridShell = document.getElementById('stay-grid-shell'); 3448 const grid = document.getElementById('stay-grid'); 3449 const loadingOverlay = document.getElementById('stay-loading'); 3450 const loadingGrid = document.getElementById('stay-loading-grid'); 3451 const chips = Array.from(discoverSection.querySelectorAll('.filter-chip')); 3452 const cards = Array.from(discoverSection.querySelectorAll('.cta-card')); 3453 const prefersReducedMotion = window.matchMedia('(prefers-reduced-motion: reduce)'); 3454 let activeFilterRun = 0; 3455 3456 const wait = (ms) => new Promise((resolve) => window.setTimeout(resolve, ms)); 3457 3458 const preloadImage = (src) => new Promise((resolve) => { 3459 if (!src) { 3460 resolve(src); 3461 return; 3462 } 3463 3464 const img = new Image(); 3465 let done = false; 3466 3467 const finish = () => { 3468 if (done) return; 3469 done = true; 3470 resolve(src); 3471 }; 3472 3473 img.onload = finish; 3474 img.onerror = finish; 3475 img.src = src; 3476 3477 if (img.complete) { 3478 finish(); 3479 } 3480 }); 3481 3482 const setActiveChip = (activeChip) => { 3483 chips.forEach((chip) => { 3484 chip.classList.remove('bg-white/20', 'shadow', 'ring-1', 'ring-white/15', 'stay-chip-bounce'); 3485 chip.setAttribute('aria-pressed', chip === activeChip ? 'true' : 'false'); 3486 }); 3487 3488 activeChip.classList.add('bg-white/20', 'shadow', 'ring-1', 'ring-white/15'); 3489 }; 3490 3491 const animateSelectedChip = (chip) => { 3492 if (prefersReducedMotion.matches) return; 3493 3494 chip.classList.remove('stay-chip-bounce'); 3495 void chip.offsetWidth; 3496 chip.classList.add('stay-chip-bounce'); 3497 3498 window.setTimeout(() => { 3499 chip.classList.remove('stay-chip-bounce'); 3500 }, 380); 3501 }; 3502 3503 const setCardFullWidth = (card, enabled) => { 3504 card.classList.toggle('lg:col-span-3', enabled); 3505 }; 3506 3507 const getCardCategories = (card) => { 3508 return (card.getAttribute('data-categories') || '') 3509 .split(',') 3510 .map((value) => value.trim().toLowerCase()) 3511 .filter(Boolean); 3512 }; 3513 3514 const getMatchedCards = (filter) => { 3515 return cards.filter((card) => { 3516 const categories = getCardCategories(card); 3517 return filter === 'all' || categories.includes(filter); 3518 }); 3519 }; 3520 3521 const getTargetSrc = (image, filter) => { 3522 const fallbackSrc = image.getAttribute('data-image-all') || image.getAttribute('src'); 3523 3524 if (filter === 'all') { 3525 return fallbackSrc; 3526 } 3527 3528 return image.getAttribute(`data-image-${filter}`) || fallbackSrc; 3529 }; 3530 3531 const setPropertyImage = (image, filter) => { 3532 if (!image) return; 3533 3534 const nextSrc = getTargetSrc(image, filter); 3535 if (!nextSrc) return; 3536 3537 image.setAttribute('src', nextSrc); 3538 }; 3539 3540 const buildSkeletonCard = (isFullWidth = false) => { 3541 return ` 3542 <div class="stay-skeleton-card relative h-[460px] md:h-[500px] ${isFullWidth ? 'lg:col-span-3' : ''}"> 3543 <div class="absolute left-4 top-4 z-[1] flex flex-wrap gap-2"> 3544 <span class="stay-skeleton-block h-7 w-28"></span> 3545 <span class="stay-skeleton-block h-7 w-20"></span> 3546 <span class="stay-skeleton-block h-7 w-16"></span> 3547 </div> 3548 3549 <div class="absolute inset-x-0 bottom-0 z-[1] p-6"> 3550 <div class="${isFullWidth ? 'lg:max-w-2xl' : ''}"> 3551 <div class="stay-skeleton-block square h-8 w-56"></div> 3552 <div class="mt-3 stay-skeleton-block square h-4 w-full max-w-[28rem]"></div> 3553 <div class="mt-2 stay-skeleton-block square h-4 w-full max-w-[22rem]"></div> 3554 </div> 3555 3556 <div class="mt-6 flex flex-col gap-4 sm:flex-row sm:items-center sm:justify-between"> 3557 <div class="stay-skeleton-block square h-4 w-40"></div> 3558 <div class="stay-skeleton-block h-10 w-24"></div> 3559 </div> 3560 </div> 3561 </div> 3562 `; 3563 }; 3564 3565 const renderSkeletonGrid = (filter) => { 3566 const matchedCards = getMatchedCards(filter); 3567 3568 loadingGrid.innerHTML = matchedCards.map((card) => { 3569 const shouldSpan = filter === 'all' && card.getAttribute('data-default-fullwidth') === 'true'; 3570 return buildSkeletonCard(shouldSpan); 3571 }).join(''); 3572 }; 3573 3574 const applyFilterState = (filter) => { 3575 cards.forEach((card) => { 3576 const categories = getCardCategories(card); 3577 const matches = filter === 'all' || categories.includes(filter); 3578 3579 setCardFullWidth(card, false); 3580 card.classList.toggle('hidden', !matches); 3581 card.setAttribute('aria-hidden', matches ? 'false' : 'true'); 3582 3583 if (!matches) { 3584 return; 3585 } 3586 3587 const image = card.querySelector('[data-property-image]'); 3588 setPropertyImage(image, filter); 3589 }); 3590 3591 if (filter === 'all') { 3592 const defaultWideCard = cards.find((card) => card.getAttribute('data-default-fullwidth') === 'true'); 3593 3594 if (defaultWideCard && !defaultWideCard.classList.contains('hidden')) { 3595 setCardFullWidth(defaultWideCard, true); 3596 } 3597 } 3598 }; 3599
3600 const setLoadingState = (enabled, filter = 'all') => { 3601 if (enabled) { 3602 renderSkeletonGrid(filter); 3603 grid.classList.add('stay-grid-muted'); 3604 gridShell.setAttribute('aria-busy', 'true'); 3605 loadingOverlay.setAttribute('aria-hidden', 'false'); 3606 loadingOverlay.classList.add('stay-loading-visible'); 3607 } else { 3608 grid.classList.remove('stay-grid-muted'); 3609 gridShell.setAttribute('aria-busy', 'false'); 3610 loadingOverlay.classList.remove('stay-loading-visible'); 3611 loadingOverlay.setAttribute('aria-hidden', 'true'); 3612 loadingGrid.innerHTML = ''; 3613 } 3614 }; 3615 3616 const applyFilter = async (filter, options = {}) => { 3617 const { animate = true } = options; 3618 const runId = ++activeFilterRun; 3619 const matchedCards = getMatchedCards(filter); 3620 3621 const targetSources = matchedCards 3622 .map((card) => card.querySelector('[data-property-image]')) 3623 .filter(Boolean) 3624 .map((image) => getTargetSrc(image, filter)); 3625 3626 if (!animate || prefersReducedMotion.matches) { 3627 await Promise.all(targetSources.map((src) => preloadImage(src))); 3628 3629 if (runId !== activeFilterRun) return; 3630 3631 applyFilterState(filter); 3632 return; 3633 } 3634 3635 setLoadingState(true, filter); 3636 3637 const startTime = performance.now(); 3638 3639 await Promise.all(targetSources.map((src) => preloadImage(src))); 3640 3641 const elapsed = performance.now() - startTime; 3642 const remaining = Math.max(0, 500 - elapsed); 3643 3644 if (remaining > 0) { 3645 await wait(remaining); 3646 } 3647 3648 if (runId !== activeFilterRun) { 3649 return; 3650 } 3651 3652 applyFilterState(filter); 3653 3654 requestAnimationFrame(() => { 3655 setLoadingState(false); 3656 }); 3657 3658 if (window.AOS && typeof AOS.refreshHard === 'function') { 3659 AOS.refreshHard(); 3660 } 3661 }; 3662 3663 chips.forEach((chip) => { 3664 chip.addEventListener('click', () => {
3665 const filter = (chip.dataset.filter || 'all').toLowerCase(); 3666 setActiveChip(chip); 3667 animateSelectedChip(chip); 3668 applyFilter(filter, { animate: true }); 3669 }); 3670 }); 3671 3672 const defaultChip = chips.find((chip) => (chip.dataset.filter || '').toLowerCase() === 'all'); 3673 3674 if (defaultChip) { 3675 setActiveChip(defaultChip); 3676 applyFilter('all', { animate: false }); 3677 } 3678 }); 3679</script>
3679 3680 3681 3682 <section id="footer-property-logos" class="relative overflow-hidden bg-white py-12 sm:py-14 lg:py-16"> 3683 <span aria-hidden="true" class="pointer-events-none absolute inset-x-0 top-0 h-px bg-gradient-to-r from-transparent via-black/30 to-transparent"></span> 3684 <span aria-hidden="true" class="pointer-events-none absolute -left-24 top-10 h-64 w-64 rounded-full bg-gray-200/60 blur-3xl"></span> 3685 <span aria-hidden="true" class="pointer-events-none absolute -right-24 bottom-0 h-72 w-72 rounded-full bg-gray-300/50 blur-3xl"></span> 3686 3687 3688 3689 <div class="relative mx-auto max-w-[1400px] px-4 text-[#25282a] sm:px-6 lg:px-8"> 3690 <div 3691 class="mb-8 flex flex-col gap-4 md:flex-row md:items-end md:justify-between lg:mb-10" 3692 data-aos="fade-up" 3693 data-aos-duration="700" 3694 data-aos-once="true" 3695 > 3696 <div> 3697 <p class="text-sm font-semibold uppercase tracking-[0.28em] text-gray-500">The Astoria Group</p> 3698 <h2 class="mt-2 text-4xl font-semibold leading-tight tracking-tight text-[#25282a] md:text-5xl">Our Properties</h2> 3699 <span aria-hidden="true" class="mt-4 block h-1 w-20 rounded-full bg-gradient-to-r from-black via-gray-500 to-gray-300"></span> 3700 </div> 3701 3702 <p class="max-w-md text-sm leading-relaxed text-gray-600 md:text-right md:text-base"> 3703 Trusted destinations & experiences 3704 </p> 3705 </div> 3706 3707 3708 <div class="grid grid-cols-2 gap-3 sm:grid-cols-3 sm:gap-4 md:grid-cols-4 lg:grid-cols-6 xl:grid-cols-7"> 3709 <a 3710 href="https://astoriaplaza.com" 3711 target="_blank" 3712 rel="noopener" 3713 class="group relative grid h-28 min-w-0 place-items-center overflow-hidden rounded-2xl border border-gray-200/90 bg-white px-3 shadow-[0_10px_30px_-24px_rgba(15,23,42,.55)] transition duration-300 hover:-translate-y-1 hover:border-gray-400 hover:shadow-[0_18px_38px_-22px_rgba(15,23,42,.3)] focus:outline-none focus-visible:ring-2 focus-visible:ring-black sm:h-32 sm:px-4 lg:h-36" 3714 aria-label="Astoria Plaza" 3715 title="Astoria Plaza" 3716 data-aos="fade-up" 3717 data-aos-delay="0" 3718 data-aos-duration="650" 3719 data-aos-once="true" 3720 > 3721 <span aria-hidden="true" class="absolute inset-x-8 top-0 h-px bg-gradient-to-r from-transparent via-gray-500 to-transparent opacity-0 transition-opacity duration-300 group-hover:opacity-100"></span> 3722 <img 3723 src="https://astoriaboracay.com/images/footer/2026/astoria-plaza.webp" 3724 alt="Astoria Plaza" 3725 class="block h-14 w-full max-w-full object-contain opacity-100 transition duration-300 group-hover:scale-[1.04] sm:h-16 sm:max-w-[170px] lg:h-20" 3726 loading="lazy" 3727 decoding="async" 3728 > 3729 </a> 3730 <a 3731 href="https://astoriaboracay.com/" 3732 target="_blank" 3733 rel="noopener" 3734 class="group relative grid h-28 min-w-0 place-items-center overflow-hidden rounded-2xl border border-gray-200/90 bg-white px-3 shadow-[0_10px_30px_-24px_rgba(15,23,42,.55)] transition duration-300 hover:-translate-y-1 hover:border-gray-400 hover:shadow-[0_18px_38px_-22px_rgba(15,23,42,.3)] focus:outline-none focus-visible:ring-2 focus-visible:ring-black sm:h-32 sm:px-4 lg:h-36" 3735 aria-label="Astoria Boracay" 3736 title="Astoria Boracay" 3737 data-aos="fade-up" 3738 data-aos-delay="70" 3739 data-aos-duration="650" 3740 data-aos-once="true" 3741 > 3742 <span aria-hidden="true" class="absolute inset-x-8 top-0 h-px bg-gradient-to-r from-transparent via-gray-500 to-transparent opacity-0 transition-opacity duration-300 group-hover:opacity-100"></span> 3743 <img 3744 src="https://astoriaboracay.com/images/footer/2026/astoria-boracay.webp" 3745 alt="Astoria Boracay" 3746 class="block h-14 w-full max-w-full object-contain opacity-100 transition duration-300 group-hover:scale-[1.04] sm:h-16 sm:max-w-[170px] lg:h-20" 3747 loading="lazy" 3748 decoding="async" 3749 > 3750 </a> 3751 <a 3752 href="https://astoriacurrent.com/" 3753 target="_blank" 3754 rel="noopener" 3755 class="group relative grid h-28 min-w-0 place-items-center overflow-hidden rounded-2xl border border-gray-200/90 bg-white px-3 shadow-[0_10px_30px_-24px_rgba(15,23,42,.55)] transition duration-300 hover:-translate-y-1 hover:border-gray-400 hover:shadow-[0_18px_38px_-22px_rgba(15,23,42,.3)] focu
3755s:outline-none focus-visible:ring-2 focus-visible:ring-black sm:h-32 sm:px-4 lg:h-36" 3756 aria-label="Astoria Current" 3757 title="Astoria Current" 3758 data-aos="fade-up" 3759 data-aos-delay="140" 3760 data-aos-duration="650" 3761 data-aos-once="true" 3762 > 3763 <span aria-hidden="true" class="absolute inset-x-8 top-0 h-px bg-gradient-to-r from-transparent via-gray-500 to-transparent opacity-0 transition-opacity duration-300 group-hover:opacity-100"></span> 3764 <img 3765 src="https://astoriaboracay.com/images/footer/2026/astoria-current.webp" 3766 alt="Astoria Current" 3767 class="block h-14 w-full max-w-full object-contain opacity-100 transition duration-300 group-hover:scale-[1.04] sm:h-16 sm:max-w-[170px] lg:h-20" 3768 loading="lazy" 3769 decoding="async" 3770 > 3771 </a> 3772 <a 3773 href="https://astoriapalawan.com/" 3774 target="_blank" 3775 rel="noopener" 3776 class="group relative grid h-28 min-w-0 place-items-center overflow-hidden rounded-2xl border border-gray-200/90 bg-white px-3 shadow-[0_10px_30px_-24px_rgba(15,23,42,.55)] transition duration-300 hover:-translate-y-1 hover:border-gray-400 hover:shadow-[0_18px_38px_-22px_rgba(15,23,42,.3)] focus:outline-none focus-visible:ring-2 focus-visible:ring-black sm:h-32 sm:px-4 lg:h-36" 3777 aria-label="Astoria Palawan" 3778 title="Astoria Palawan" 3779 data-aos="fade-up" 3780 data-aos-delay="210" 3781 data-aos-duration="650" 3782 data-aos-once="true" 3783 > 3784 <span aria-hidden="true" class="absolute inset-x-8 top-0 h-px bg-gradient-to-r from-transparent via-gray-500 to-transparent opacity-0 transition-opacity duration-300 group-hover:opacity-100"></span> 3785 <img 3786 src="https://astoriaboracay.com/images/footer/2026/astoria-palawan.webp" 3787 alt="Astoria Palawan" 3788 class="block h-14 w-full max-w-full object-contain opacity-100 transition duration-300 group-hover:scale-[1.04] sm:h-16 sm:max-w-[170px] lg:h-20" 3789 loading="lazy" 3790 decoding="async" 3791 > 3792 </a> 3793 <a 3794 href="https://astoriabohol.com/" 3795 target="_blank" 3796 rel="noopener" 3797 class="group relative grid h-28 min-w-0 place-items-center overflow-hidden rounded-2xl border border-gray-200/90 bg-white px-3 shadow-[0_10px_30px_-24px_rgba(15,23,42,.55)] transition duration-300 hover:-translate-y-1 hover:border-gray-400 hover:shadow-[0_18px_38px_-22px_rgba(15,23,42,.3)] focus:outline-none focus-visible:ring-2 focus-visible:ring-black sm:h-32 sm:px-4 lg:h-36" 3798 aria-label="Astoria Bohol" 3799 title="Astoria Bohol" 3800 data-aos="fade-up" 3801 data-aos-delay="280" 3802 data-aos-duration="650" 3803 data-aos-once="true" 3804 > 3805 <span aria-hidden="true" class="absolute inset-x-8 top-0 h-px bg-gradient-to-r from-transparent via-gray-500 to-transparent opacity-0 transition-opacity duration-300 group-hover:opacity-100"></span> 3806 <img 3807 src="https://astoriaboracay.com/images/footer/2026/astoria-bohol.webp" 3808 alt="Astoria Bohol" 3809 class="block h-14 w-full max-w-full object-contain opacity-100 transition duration-300 group-hover:scale-[1.04] sm:h-16 sm:max-w-[170px] lg:h-20" 3810 loading="lazy" 3811 decoding="async" 3812 > 3813 </a> 3814 <a 3815 href="https://stellarpanglao.com/" 3816 target="_blank" 3817 rel="noopener" 3818 class="group relative grid h-28 min-w-0 place-items-center overflow-hidden rounded-2xl border border-gray-200/90 bg-white px-3 shadow-[0_10px_30px_-24px_rgba(15,23,42,.55)] transition duration-300 hover:-translate-y-1 hover:border-gray-400 hover:shadow-[0_18px_38px_-22px_rgba(15,23,42,.3)] focus:outline-none focus-visible:ring-2 focus-visible:ring-black sm:h-32 sm:px-4 lg:h-36" 3819 aria-label="Stellar Panglao" 3820 title="Stellar Panglao" 3821 data-aos="fade-up" 3822 data-aos-delay="350" 3823 data-aos-duration="650" 3824 data-aos-once="true" 3825 >
3826 <span aria-hidden="true" class="absolute inset-x-8 top-0 h-px bg-gradient-to-r from-transparent via-gray-500 to-transparent opacity-0 transition-opacity duration-300 group-hover:opacity-100"></span> 3827 <img 3828 src="https://astoriaboracay.com/images/footer/2026/stellar-panglao.webp" 3829 alt="Stellar Panglao" 3830 class="block h-14 w-full max-w-full object-contain opacity-100 transition duration-300 group-hover:scale-[1.04] sm:h-16 sm:max-w-[170px] lg:h-20" 3831 loading="lazy" 3832 decoding="async" 3833 > 3834 </a> 3835 <a 3836 href="https://stellarpottersridge.com/" 3837 target="_blank" 3838 rel="noopener" 3839 class="group relative grid h-28 min-w-0 place-items-center overflow-hidden rounded-2xl border border-gray-200/90 bg-white px-3 shadow-[0_10px_30px_-24px_rgba(15,23,42,.55)] transition duration-300 hover:-translate-y-1 hover:border-gray-400 hover:shadow-[0_18px_38px_-22px_rgba(15,23,42,.3)] focus:outline-none focus-visible:ring-2 focus-visible:ring-black sm:h-32 sm:px-4 lg:h-36" 3840 aria-label="Stellar Potter's Ridge" 3841 title="Stellar Potter's Ridge" 3842 data-aos="fade-up" 3843 data-aos-delay="420" 3844 data-aos-duration="650" 3845 data-aos-once="true" 3846 > 3847 <span aria-hidden="true" class="absolute inset-x-8 top-0 h-px bg-gradient-to-r from-transparent via-gray-500 to-transparent opacity-0 transition-opacity duration-300 group-hover:opacity-100"></span> 3848 <img 3849 src="https://astoriaboracay.com/images/footer/2026/stellar-potters-ridge.webp" 3850 alt="Stellar Potter's Ridge" 3851 class="block h-14 w-full max-w-full object-contain opacity-100 transition duration-300 group-hover:scale-[1.04] sm:h-16 sm:max-w-[170px] lg:h-20" 3852 loading="lazy" 3853 decoding="async" 3854 > 3855 </a> 3856 <a 3857 href="https://aglaundryspecialist.com/" 3858 target="_blank" 3859 rel="noopener" 3860 class="group relative grid h-28 min-w-0 place-items-center overflow-hidden rounded-2xl border border-gray-200/90 bg-white px-3 shadow-[0_10px_30px_-24px_rgba(15,23,42,.55)] transition duration-300 hover:-translate-y-1 hover:border-gray-400 hover:shadow-[0_18px_38px_-22px_rgba(15,23,42,.3)] focus:outline-none focus-visible:ring-2 focus-visible:ring-black sm:h-32 sm:px-4 lg:h-36" 3861 aria-label="AGLaundry Specialist" 3862 title="AGLaundry Specialist" 3863 data-aos="fade-up" 3864 data-aos-delay="0" 3865 data-aos-duration="650" 3866 data-aos-once="true" 3867 > 3868 <span aria-hidden="true" class="absolute inset-x-8 top-0 h-px bg-gradient-to-r from-transparent via-gray-500 to-transparent opacity-0 transition-opacity duration-300 group-hover:opacity-100"></span> 3869 <img 3870 src="https://astoriaboracay.com/images/footer/2026/aglaundryspecialist.webp" 3871 alt="AGLaundry Specialist" 3872 class="block h-14 w-full max-w-full object-contain opacity-100 transition duration-300 group-hover:scale-[1.04] sm:h-16 sm:max-w-[170px] lg:h-20" 3873 loading="lazy" 3874 decoding="async" 3875 > 3876 </a> 3877 <a 3878 href="https://astoriaculinaryandhospitalityinstitute.com/" 3879 target="_blank" 3880 rel="noopener" 3881 class="group relative grid h-28 min-w-0 place-items-center overflow-hidden rounded-2xl border border-gray-200/90 bg-white px-3 shadow-[0_10px_30px_-24px_rgba(15,23,42,.55)] transition duration-300 hover:-translate-y-1 hover:border-gray-400 hover:shadow-[0_18px_38px_-22px_rgba(15,23,42,.3)] focus:outline-none focus-visible:ring-2 focus-visible:ring-black sm:h-32 sm:px-4 lg:h-36" 3882 aria-label="Astoria Culinary & Hospitality Institute" 3883 title="Astoria Culinary & Hospitality Institute" 3884 data-aos="fade-up" 3885 data-aos-delay="70" 3886 data-aos-duration="650" 3887 data-aos-once="true" 3888 >
3889 <span aria-hidden="true" class="absolute inset-x-8 top-0 h-px bg-gradient-to-r from-transparent via-gray-500 to-transparent opacity-0 transition-opacity duration-300 group-hover:opacity-100"></span> 3890 <img 3891 src="https://astoriaboracay.com/images/footer/2026/astoria-achi.webp" 3892 alt="Astoria Culinary & Hospitality Institute" 3893 class="block h-14 w-full max-w-full object-contain opacity-100 transition duration-300 group-hover:scale-[1.04] sm:h-16 sm:max-w-[170px] lg:h-20" 3894 loading="lazy" 3895 decoding="async" 3896 > 3897 </a> 3898 <a 3899 href="https://astoria-aces.com/" 3900 target="_blank" 3901 rel="noopener" 3902 class="group relative grid h-28 min-w-0 place-items-center overflow-hidden rounded-2xl border border-gray-200/90 bg-white px-3 shadow-[0_10px_30px_-24px_rgba(15,23,42,.55)] transition duration-300 hover:-translate-y-1 hover:border-gray-400 hover:shadow-[0_18px_38px_-22px_rgba(15,23,42,.3)] focus:outline-none focus-visible:ring-2 focus-visible:ring-black sm:h-32 sm:px-4 lg:h-36" 3903 aria-label="Astoria ACES" 3904 title="Astoria ACES" 3905 data-aos="fade-up" 3906 data-aos-delay="140" 3907 data-aos-duration="650" 3908 data-aos-once="true" 3909 > 3910 <span aria-hidden="true" class="absolute inset-x-8 top-0 h-px bg-gradient-to-r from-transparent via-gray-500 to-transparent opacity-0 transition-opacity duration-300 group-hover:opacity-100"></span> 3911 <img 3912 src="https://astoriaboracay.com/images/footer/2026/astoria-aces.webp" 3913 alt="Astoria ACES" 3914 class="block h-14 w-full max-w-full object-contain opacity-100 transition duration-300 group-hover:scale-[1.04] sm:h-16 sm:max-w-[170px] lg:h-20" 3915 loading="lazy" 3916 decoding="async" 3917 > 3918 </a> 3919 <a 3920 href="https://astoriapalawan.com/waterpark/" 3921 target="_blank" 3922 rel="noopener" 3923 class="group relative grid h-28 min-w-0 place-items-center overflow-hidden rounded-2xl border border-gray-200/90 bg-white px-3 shadow-[0_10px_30px_-24px_rgba(15,23,42,.55)] transition duration-300 hover:-translate-y-1 hover:border-gray-400 hover:shadow-[0_18px_38px_-22px_rgba(15,23,42,.3)] focus:outline-none focus-visible:ring-2 focus-visible:ring-black sm:h-32 sm:px-4 lg:h-36" 3924 aria-label="Palawan Waterpark by Astoria" 3925 title="Palawan Waterpark by Astoria" 3926 data-aos="fade-up" 3927 data-aos-delay="210" 3928 data-aos-duration="650" 3929 data-aos-once="true" 3930 > 3931 <span aria-hidden="true" class="absolute inset-x-8 top-0 h-px bg-gradient-to-r from-transparent via-gray-500 to-transparent opacity-0 transition-opacity duration-300 group-hover:opacity-100"></span> 3932 <img 3933 src="https://astoriaboracay.com/images/footer/2026/palawan-waterpark-by-astoria.webp" 3934 alt="Palawan Waterpark by Astoria" 3935 class="block h-14 w-full max-w-full object-contain opacity-100 transition duration-300 group-hover:scale-[1.04] sm:h-16 sm:max-w-[170px] lg:h-20" 3936 loading="lazy" 3937 decoding="async" 3938 > 3939 </a> 3940 <a 3941 href="https://chardonnaybyastoria.com/" 3942 target="_blank" 3943 rel="noopener" 3944 class="group relative grid h-28 min-w-0 place-items-center overflow-hidden rounded-2xl border border-gray-200/90 bg-white px-3 shadow-[0_10px_30px_-24px_rgba(15,23,42,.55)] transition duration-300 hover:-translate-y-1 hover:border-gray-400 hover:shadow-[0_18px_38px_-22px_rgba(15,23,42,.3)] focus:outline-none focus-visible:ring-2 focus-visible:ring-black sm:h-32 sm:px-4 lg:h-36" 3945 aria-label="Chardonnay by Astoria" 3946 title="Chardonnay by Astoria" 3947 data-aos="fade-up" 3948 data-aos-delay="280" 3949 data-aos-duration="650" 3950 data-aos-once="true" 3951 >
3952 <span aria-hidden="true" class="absolute inset-x-8 top-0 h-px bg-gradient-to-r from-transparent via-gray-500 to-transparent opacity-0 transition-opacity duration-300 group-hover:opacity-100"></span> 3953 <img 3954 src="https://astoriaboracay.com/images/footer/2026/chardonnay-by-astoria.webp" 3955 alt="Chardonnay by Astoria" 3956 class="block h-14 w-full max-w-full object-contain opacity-100 transition duration-300 group-hover:scale-[1.04] sm:h-16 sm:max-w-[170px] lg:h-20" 3957 loading="lazy" 3958 decoding="async" 3959 > 3960 </a> 3961 <a 3962 href="https://minamisakibyastoria.com/" 3963 target="_blank" 3964 rel="noopener" 3965 class="group relative grid h-28 min-w-0 place-items-center overflow-hidden rounded-2xl border border-gray-200/90 bg-white px-3 shadow-[0_10px_30px_-24px_rgba(15,23,42,.55)] transition duration-300 hover:-translate-y-1 hover:border-gray-400 hover:shadow-[0_18px_38px_-22px_rgba(15,23,42,.3)] focus:outline-none focus-visible:ring-2 focus-visible:ring-black sm:h-32 sm:px-4 lg:h-36" 3966 aria-label="Minami Saki by Astoria" 3967 title="Minami Saki by Astoria" 3968 data-aos="fade-up" 3969 data-aos-delay="350" 3970 data-aos-duration="650" 3971 data-aos-once="true" 3972 > 3973 <span aria-hidden="true" class="absolute inset-x-8 top-0 h-px bg-gradient-to-r from-transparent via-gray-500 to-transparent opacity-0 transition-opacity duration-300 group-hover:opacity-100"></span> 3974 <img 3975 src="https://astoriaboracay.com/images/footer/2026/minamisaki-by-astoria.webp" 3976 alt="Minami Saki by Astoria" 3977 class="block h-14 w-full max-w-full object-contain opacity-100 transition duration-300 group-hover:scale-[1.04] sm:h-16 sm:max-w-[170px] lg:h-20" 3978 loading="lazy" 3979 decoding="async" 3980 > 3981 </a> 3982 <a 3983 href="https://astoriapalawan.com/meetings-events/" 3984 target="_blank" 3985 rel="noopener" 3986 class="group relative grid h-28 min-w-0 place-items-center overflow-hidden rounded-2xl border border-gray-200/90 bg-white px-3 shadow-[0_10px_30px_-24px_rgba(15,23,42,.55)] transition duration-300 hover:-translate-y-1 hover:border-gray-400 hover:shadow-[0_18px_38px_-22px_rgba(15,23,42,.3)] focus:outline-none focus-visible:ring-2 focus-visible:ring-black sm:h-32 sm:px-4 lg:h-36" 3987 aria-label="Mangrove Conference & Convention Center" 3988 title="Mangrove Conference & Convention Center" 3989 data-aos="fade-up" 3990 data-aos-delay="420" 3991 data-aos-duration="650" 3992 data-aos-once="true" 3993 > 3994 <span aria-hidden="true" class="absolute inset-x-8 top-0 h-px bg-gradient-to-r from-transparent via-gray-500 to-transparent opacity-0 transition-opacity duration-300 group-hover:opacity-100"></span> 3995 <img 3996 src="https://astoriaboracay.com/images/footer/2026/mangrove-by-astoria.webp" 3997 alt="Mangrove Conference & Convention Center" 3998 class="block h-14 w-full max-w-full object-contain opacity-100 transition duration-300 group-hover:scale-[1.04] sm:h-16 sm:max-w-[170px] lg:h-20" 3999 loading="lazy" 4000 decoding="async" 4001 > 4002 </a> 4003 </div> 4004 </div> 4005 </section> 4006 4007 4008 <section class="relative bg-white text-[#25282a]"> 4009 <div 4010 class="w-full max-w-[1600px] mx-auto px-6 sm:px-6 lg:px-8 py-12 md:py-14 lg:py-16 4011 grid grid-cols-1 md:grid-cols-2 xl:grid-cols-12 gap-6 md:gap-8 xl:gap-10"> 4012 4013 4014 <div class="md:col-span-1 xl:col-span-4"> 4015 <div class="rounded-2xl border border-gray-200 bg-white p-6 md:p-7 shadow-sm h-full"> 4016 <a href="https://astoriaboracay.com" aria-label="Astoria Home" class="inline-flex items-center gap-3 mb-5"> 4017 <img 4018 src="https://astoriaboracay.com/images/ab1-logo.webp" 4019 onerror="this.onerror=null; this.src='https://astoriaboracay.com/images/ac3-logo.webp';" 4020 alt="Astoria Hotels and Resorts" 4021 class="h-10 md:h-8 w-auto" 4022 decoding="async" loading="lazy" 4023 >
4024 <span class="sr-only">Astoria Boracay</span> 4025 </a> 4026 4027 <div class="mt-5 overflow-hidden rounded-xl border border-gray-200"> 4028 <iframe 4029 src="https://maps.google.com/maps?q=Astoria%20Boracay&output=embed&iWloc=near" 4030 class="w-full h-44 sm:h-48 md:h-56 xl:h-60 border-0" 4031 allowfullscreen loading="lazy" 4032 referrerpolicy="no-referrer-when-downgrade" title="Astoria Boracay Map"></iframe> 4033 </div> 4034 4035 <div class="mt-5 flex items-center gap-4 text-lg text-[#0047BB]"> 4036 <a href="https://www.facebook.com/astoriaboracay" target="_blank" rel="noopener" class="hover:opacity-80" aria-label="Facebook"><i class="fab fa-facebook-f"></i></a> 4037 <a href="https://www.instagram.com/astoriaboracay" target="_blank" rel="noopener" class="hover:opacity-80" aria-label="Instagram"><i class="fab fa-instagram"></i></a> 4038 <a href="https://www.youtube.com/c/AstoriaHotelsandResorts" target="_blank" rel="noopener" class="hover:opacity-80" aria-label="YouTube"><i class="fab fa-youtube"></i></a> 4039 <a href="https://www.tiktok.com/@theastoriagroup" target="_blank" rel="noopener" class="hover:opacity-80" aria-label="TikTok"><i class="fab fa-tiktok"></i></a> 4040 </div> 4041 </div> 4042 </div> 4043 4044 4045 <div class="md:col-span-1 xl:col-span-4 font-medium"> 4046 <div class="rounded-2xl border border-gray-200 bg-white p-6 md:p-7 shadow-sm h-full"> 4047 <h6 class="text-lg font-semibold mb-4 text-[#0047BB]">Site Menu</h6> 4048 4049 <div class="grid grid-cols-1 sm:grid-cols-2 gap-6"> 4050 4051 <div> 4052 <a href="https://astoriaboracay.com/about" class="inline-flex items-center gap-2 font-semibold hover:text-[#0047BB]"> 4053 <i class="fa-solid fa-circle-info text-[12px] text-[#0047BB]"></i> 4054 <span>About</span> 4055 </a> 4056 <ul class="mt-3 space-y-2 text-[15px]"> 4057 <li><a href="https://astoriaboracay.com/amenities" class="hover:text-[#0047BB]">Amenities</a></li> 4058 <li><a href="https://astoriaboracay.com/csr" class="hover:text-[#0047BB]">CSR</a></li> 4059 <li><a href="https://astoriaboracay.com/faqs" class="hover:text-[#0047BB]">FAQs</a></li> 4060 <li><a href="https://astoriaboracay.com/blogs" class="hover:text-[#0047BB]">Blogs</a></li> 4061 <li><a href="https://astoriaboracay.com/special-offers" class="hover:text-[#0047BB]">Promos</a></li> 4062 </ul> 4063 </div> 4064 4065 4066 <div> 4067 <a href="https://astoriaboracay.com/accommodations" class="inline-flex items-center gap-2 font-semibold hover:text-[#0047BB]"> 4068 <i class="fa-solid fa-bed text-[12px] text-[#0047BB]"></i> 4069 <span>Accommodations</span> 4070 </a> 4071 <ul class="mt-3 space-y-2 text-[15px]"> 4072 <li><a href="https://astoriaboracay.com/accommodations/deluxe-room" class="hover:text-[#0047BB]">Deluxe Rooms</a></li> 4073 <li><a href="https://astoriaboracay.com/accommodations/premier" class="hover:text-[#0047BB]">Premier</a></li> 4074 <li><a href="https://astoriaboracay.com/accommodations/luxury-room" class="hover:text-[#0047BB]">Luxury Room</a></li> 4075 <li><a href="https://astoriaboracay.com/accommodations/honeymoon-suite" class="hover:text-[#0047BB]">Honeymoon Suite</a></li> 4076 </ul> 4077 </div> 4078 </div> 4079 4080 4081 <div class="mt-6 grid grid-cols-1 sm:grid-cols-2 gap-3 text-[15px]"> 4082 <a href="https://astoriaboracay.com/food-beverages" class="inline-flex items-center gap-2 font-medium hover:text-[#0047BB]"> 4083 <i class="fa-solid fa-utensils text-[12px] text-[#0047BB]"></i> Dining 4084 </a> 4085 <a href="https://astoriaboracay.com/meetings-events" class="inline-flex items-center gap-2 font-medium hover:text-[#0047BB]"> 4086 <i class="fa-solid fa-calendar-days text-[12px] text-[#0047BB]"></i> Meetings & Events 4087 </a> 4088 <a href="https://astoriaboracay.com/contact-us" class="inline-flex items-center gap-2 font-medium hover:text-[#0047BB]"> 4089 <i class="fa-solid fa-envelope-open-text text-[12px] text-[#0047BB]"></i> Contact Us 4090 </a> 4091 <a href="https://astoriaboracay.com" class="inline-flex items-center gap-2 font-medium hover:text-[#0047BB]"> 4092 <i class="fa-solid fa-house text-[12px] text-[#0047BB]"></i> Home 4093 </a> 4094 </div> 4095 </div> 4096 </div> 4097 4098 4099 <div class="md:col-span-2 xl:col-span-4"> 4100 <div class="rounded-2xl border border-gray-200 bg-white p-6 md:p-7 shadow-sm h-full"> 4101 4102 <h6 class="text-lg font-semibold text-[#0047BB]">VISIT US</h6> 4103 <p class="mt-2 text-base leading-relaxed font-medium"> 4104 Station 1, Barangay Balabag, Boracay Island, Malay, Aklan, Philippines 5608 4105 </p> 4106 4107 4108 <h6 class="mt-6 text-lg font-semibold text-[#0047BB]">CONTACT US</h6> 4109 <p class="text-base font-medium"> 4110 <a href="mailto:[email protected]" class="underline hover:text-[#0047BB] text-base"> 4111 [email protected] 4112 </a><br> 4113 <strong>Reservations Office:</strong> 4114 <a href="tel:+63286871111" class="hover:text-[#0047BB]"> 4115 (+63 2) 8687-1111 4116 </a>
4117 <span class="opacity-70"> 4118 locals 8739, 8740, 8738, and 8737 4119 </span> 4120 <span class="hidden sm:inline"> | </span><br class="sm:hidden"> 4121 <a href="tel:+639088727922" class="hover:text-[#0047BB]"> 4122 (+63) 908-872-7922 4123 </a><br> 4124 <strong>Front Office:</strong> 4125 <a href="tel:+63362881111" class="hover:text-[#0047BB]"> 4126 (+63 36) 288-1111 4127 </a> 4128 <span class="hidden sm:inline"> | </span><br class="sm:hidden"> 4129 <a href="tel:+639692855611" class="hover:text-[#0047BB]"> 4130 (+63) 969-285-5611 4131 </a> 4132 </p> 4133 </div> 4134 </div> 4135 4136 </div> 4137 </section> 4138 4139 4140 <div class="relative bg-[#18206b] text-white"> 4141 <div class="max-w-[1600px] mx-auto px-4 sm:px-6 lg:px-8 py-4 text-center text-base md:text-[15px]"> 4142 Copyright © 2026 | Astoria Boracay 4143 <span class="mx-2 opacity-60">|</span> 4144 <a href="https://astoriaboracay.com/privacy-policy" class="underline underline-offset-4 hover:text-[#fff]">Privacy Policy</a> 4145 </div> 4146 <div class="absolute -top-px left-0 right-0 h-px bg-white/20"></div> 4147 </div> 4148</footer> 4149 4150 4151 4152 4153<div id="ab1-btt" 4154 x-data="backToTop()" 4155 x-init="init()" 4156 class="fixed right-3 bottom-3 sm:right-5 sm:bottom-5" 4157 style="z-index:2147483647;"> 4158 <button 4159 x-show="show" 4160 x-transition 4161 @click="scrollTop" 4162 aria-label="Back to top" 4163 class="group relative grid place-items-center 4164 w-11 h-11 sm:w-14 sm:h-14 4165 rounded-full bg-[#0047BB] text-white 4166 shadow-[0_8px_20px_rgba(99,102,106,.45)] sm:shadow-[0_10px_28px_rgba(99,102,106,.55)] 4167 hover:shadow-[0_12px_28px_rgba(99,102,106,.65)] sm:hover:shadow-[0_14px_36px_rgba(99,102,106,.7)] 4168 ring-2 ring-white/90 4169 focus:outline-none focus-visible:ring-4 focus-visible:ring-[#0047BB]/50 4170 transition"> 4171 4172 <!-- Subtle pulsing glow on hover/focus --> 4173 <span class="pointer-events-none absolute inset-0 rounded-full bg-[#0047BB]/45 4174 opacity-0 group-hover:opacity-100 group-focus:opacity-100 4175 animate-[ping_1.6s_ease-out_infinite]"></span> 4176 4177 <!-- Scroll progress ring --> 4178 <svg class="absolute -inset-1 w-[3.25rem] h-[3.25rem] sm:w-16 sm:h-16" viewBox="0 0 60 60" aria-hidden="true"> 4179 <!-- Track --> 4180 <circle cx="30" cy="30" r="26" stroke="rgba(99,102,106,.18)" stroke-width="4" fill="none"/> 4181 <!-- Progress --> 4182 <circle cx="30" cy="30" r="26" 4183 :stroke-dasharray="circumference" 4184 :stroke-dashoffset="circumference - (progress/100)*circumference" 4185 stroke="#63666A" stroke-width="4" stroke-linecap="round" fill="none"/> 4186 </svg> 4187 4188 <!-- Icon --> 4189 <i class="fa-solid fa-arrow-up text-base sm:text-xl relative z-10"></i> 4190 4191 <!-- Tiny label on hover --> 4192 <span class="pointer-events-none absolute right-full mr-2 top-1/2 -translate-y-1/2 4193 hidden sm:block 4194 px-2 py-1 rounded bg-[#0047BB] text-white text-[11px] 4195 opacity-0 group-hover:opacity-100 transition"> 4196 Top 4197 </span> 4198 </button> 4199</div> 4200
4201<script> 4202 function backToTop(){ 4203 return { 4204 show: false, 4205 progress: 0, 4206 circumference: 2 * Math.PI * 26, // r=26 from the SVG circle 4207 4208 onScroll(){ 4209 const scrolled = window.scrollY || document.documentElement.scrollTop; 4210 const max = document.documentElement.scrollHeight - window.innerHeight; 4211 this.progress = max > 0 ? Math.min(100, Math.max(0, (scrolled / max) * 100)) : 0; 4212 this.show = scrolled > 300; 4213 }, 4214 4215 scrollTop(){ window.scrollTo({ top: 0, behavior: 'smooth' }); }, 4216 4217 init(){ 4218 this.onScroll(); 4219 window.addEventListener('scroll', () => this.onScroll(), { passive: true }); 4220 } 4221 } 4222 } 4223</script>
4223 4224 4225<style> 4226 /* Respect users who prefer less motion */ 4227 @media (prefers-reduced-motion: reduce) { 4228 #ab1-btt .animate-\[ping_1\.6s_ease-out_infinite\] { animation: none !important; } 4229 #ab1-btt button { transition: none !important; } 4230 } 4231 4232 /* Donât print the FAB */ 4233 @media print { #ab1-btt { display: none !important; } } 4234</style> 4235 4236 4237 4238 4239
4239<script src="https://unpkg.com/swiper/swiper-bundle.min.js"></script>
4239 4240
4240<script defer src="https://unpkg.com/[email protected]/dist/cdn.min.js"></script>
4240 4241
4241<script defer src="https://unpkg.com/@alpinejs/[email protected]/dist/cdn.min.js"></script>
4241 4242
4242<script defer src="https://unpkg.com/@alpinejs/[email protected]/dist/cdn.min.js"></script>
4242 4243 4244 4245 <div id="google_translate_element" aria-hidden="true"></div> 4246
4246<script> 4247 /* Cross-browser event helper used by Googleâs typical doGTranslate flow */ 4248 function GTranslateFireEvent(el, eventName) { 4249 try { 4250 if (document.createEvent) { 4251 var evObj = document.createEvent('HTMLEvents'); 4252 evObj.initEvent(eventName, true, true); 4253 el.dispatchEvent(evObj); 4254 } else if (document.createEventObject) { // IE <= 8 fallback 4255 var evObj = document.createEventObject(); 4256 el.fireEvent('on' + eventName, evObj); 4257 } 4258 } catch (e) {} 4259 } 4260 4261 /* Reliable programmatic translate */ 4262 function doGTranslate(langPair) { 4263 if (!langPair) return; 4264 var lang = langPair.split('|')[1]; 4265 var combo = document.querySelector('.goog-te-combo'); 4266 if (!combo) return setTimeout(function(){ doGTranslate(langPair); }, 100); 4267 combo.value = lang; 4268 GTranslateFireEvent(combo, 'change'); 4269 } 4270 4271 // Public helper; call from nav: window.applyTranslation('ja'), etc. 4272 window.applyTranslation = function(code) { 4273 var v = '/en/' + code; 4274 document.cookie = 'googtrans=' + v + ';path=/'; 4275 document.cookie = 'googtrans=' + v + ';domain=' + location.hostname + ';path=/'; 4276 doGTranslate('en|' + code); 4277 }; 4278 4279 function googleTranslateElementInit() { 4280 new google.translate.TranslateElement({ 4281 pageLanguage: 'en', 4282 autoDisplay: false 4283 }, 'google_translate_element'); 4284 4285 // Apply cookie-selected language on load 4286 var m = document.cookie.match(/googtrans=\/en\/([a-zA-Z\-]+)/); 4287 var code = m && m[1]; 4288 if (code) doGTranslate('en|' + code); 4289 } 4290 4291 // Kill any injected banner/offset that slips through 4292 (function killGTranslateBar(){ 4293 function nuke() { 4294 var ifr = document.querySelector('iframe.goog-te-banner-frame'); 4295 if (ifr && ifr.parentNode) ifr.parentNode.removeChild(ifr); 4296 [ 4297 '.goog-te-banner', '.goog-te-banner-frame', 4298 '.VIpgJd-ZVi9od-ORHb-OEVmcd', '.VIpgJd-ZVi9od-aZ2wEe-wOHMyf', '.VIpgJd-ZVi9od-xl07Ob-OEVmcd' 4299 ].forEach(function(s){ 4300 document.querySelectorAll(s).forEach(function(el){ el.style.display='none'; }); 4301 }); 4302 document.body.style.top = '0px'; 4303 } 4304 window.addEventListener('load', nuke); 4305 document.addEventListener('DOMContentLoaded', nuke); 4306 var tries = 0, t = setInterval(function(){ nuke(); if (++tries > 240) clearInterval(t); }, 50); // ~12s 4307 })(); 4308 </script>
4308 4309
4309<script src="https://translate.google.com/translate_a/element.js?cb=googleTranslateElementInit"></script>
4309 4310 4311 4312
4312<script> 4313 document.addEventListener('alpine:init', () => { 4314 Alpine.data('navBookingDrawerBoracay', () => ({ 4315 // Reveal controls 4316 tabVisible: false, 4317 revealLine: 0.10, 4318 revealOffsetPx: 0, 4319 hysteresisPx: 190, 4320 4321 _revealTarget: null, 4322 _onScroll: null, 4323 _onLoad: null, 4324 _onMobileNav: null, 4325 _menuObserver: null, 4326 _mobileNavEventOpen: false, 4327 _navClassOpen: false, 4328 _scrollLockAdded: null, 4329 _raf: null, 4330 4331 // Drawer state 4332 showBooking: false, 4333 navMenuOpen: false, 4334 4335 // Astoria Boracay booking engine 4336 bookingAction: 'https://book-directonline.com/properties/AstoriaBoracaydirect', 4337 4338 // YYYY-MM-DD in local timezone 4339 today: new Date(Date.now() - new Date().getTimezoneOffset() * 60000).toISOString().slice(0, 10), 4340 checkIn: new Date(Date.now() - new Date().getTimezoneOffset() * 60000).toISOString().slice(0, 10), 4341 4342 init() { 4343 this.readRevealControls(); 4344 4345 this._onMobileNav = (e) => { 4346 const detail = e && e.detail; 4347 this._mobileNavEventOpen = typeof detail === 'boolean' ? detail : !!(detail && detail.open); 4348 this.syncMobileNav(); 4349 }; 4350 4351 window.addEventListener('ahr:mobile-nav', this._onMobileNav, { passive: true }); 4352 this._navClassOpen = this.mobileNavClassOpen(); 4353 this._menuObserver = new MutationObserver(() => { 4354 const classOpen = this.mobileNavClassOpen(); 4355 if (classOpen === this._navClassOpen) return; 4356 4357 // Class changes also work when the header's custom event is missed. 4358 this._navClassOpen = classOpen; 4359 this._mobileNavEventOpen = false; 4360 this.syncMobileNav(); 4361 }); 4362 [document.documentElement, document.body].forEach((el) => { 4363 this._menuObserver.observe(el, { attributes: true, attributeFilter: ['class'] }); 4364 }); 4365 4366 this.syncMobileNav(); 4367 this.setupRevealOnSecondBlock(); 4368 }, 4369 4370 destroy() { 4371 this.teardownReveal(); 4372 if (this._menuObserver) this._menuObserver.disconnect(); 4373 if (this._onMobileNav) window.removeEventListener('ahr:mobile-nav', this._onMobileNav); 4374 this.showBooking = false; 4375 this.lockScroll(false); 4376 }, 4377 4378 readRevealControls() { 4379 const ds = this.$el?.dataset || {}; 4380 const lineRaw = ds.nbLine ?? ds.nbRevealLine ?? '0.10'; 4381 const offRaw = ds.nbOffset ?? ds.nbRevealOffset ?? '0'; 4382 const hystRaw = ds.nbHyst ?? ds.nbHysteresis ?? '190'; 4383 4384 const line = parseFloat(lineRaw); 4385 const off = parseInt(offRaw, 10); 4386 const hyst = parseInt(hystRaw, 10); 4387 4388 this.revealLine = Number.isFinite(line) ? Math.max(0, Math.min(1.25, line)) : 0.10; 4389 this.revealOffsetPx = Number.isFinite(off) ? off : 0; 4390 this.hysteresisPx = Number.isFinite(hyst) ? Math.max(0, hyst) : 190; 4391 }, 4392 4393 pageSkeletonActive() { 4394 const html = document.documentElement; 4395 4396 return html.classList.contains('ap-skeleton-loading') && 4397 !html.classList.contains('ap-skeleton-loaded'); 4398 }, 4399 4400 mobileNavClassOpen() { 4401 return [document.documentElement, document.body].some((el) => 4402 el && (el.classList.contains('ahr-mobile-nav-open') || el.classList.contains('ahr-mobile-open')) 4403 ); 4404 }, 4405 4406 mobileNavOpen() { 4407 return this._mobileNavEventOpen || this.mobileNavClassOpen(); 4408 }, 4409 4410 syncMobileNav() { 4411 this.navMenuOpen = this.mobileNavOpen(); 4412 4413 if (this.navMenuOpen) { 4414 this.tabVisible = false; 4415 this.closeBookingPanel(); 4416 return; 4417 } 4418 4419 if (!this.showBooking) this.lockScroll(false); 4420 if (this._onScroll) this._onScroll(); 4421 }, 4422 4423 isIgnoredBlock(el) { 4424 if (!el) return true; 4425 4426 const tag = (el.tagName || '').toLowerCase(); 4427 4428 if (['script','style','template','header','nav','footer','link','meta'].includes(tag)) { 4429 return true; 4430 } 4431 4432 if ( 4433 el.id === 'ap-page-skeleton' || 4434 el.matches?.('[data-nav-booking-root], [data-nav-booking-layer], [data-nb-ignore], .ap-home-skeleton, .ap-skel-page, .ahr-bookbar, [aria-hidden="true"]') 4435 ) { 4436 return true; 4437 } 4438 4439 return false;
4440 }, 4441 4442 isUsableBlock(el) { 4443 if (!el || this.isIgnoredBlock(el)) return false; 4444 4445 const cs = window.getComputedStyle(el); 4446 4447 if (!cs || cs.display === 'none' || cs.visibility === 'hidden') { 4448 return false; 4449 } 4450 4451 const r = el.getBoundingClientRect(); 4452 4453 if ((r.height || 0) < 48) { 4454 return false; 4455 } 4456 4457 // Avoid choosing fixed overlays, drawers, and floating widgets as reveal targets. 4458 if (['fixed','sticky'].includes(cs.position) && (r.height || 0) < (window.innerHeight || 0) * 0.8) { 4459 return false; 4460 } 4461 4462 return true; 4463 }, 4464 4465 getExplicitTarget() { 4466 const explicit = 4467 document.querySelector('[data-nb-reveal]') || 4468 document.getElementById('nb-reveal'); 4469 4470 return explicit && this.isUsableBlock(explicit) ? explicit : null; 4471 }, 4472 4473 getSecondBlock() { 4474 const explicit = this.getExplicitTarget(); 4475 4476 if (explicit) return explicit; 4477 4478 const main = document.querySelector('main') || document.body; 4479 4480 const directChildren = Array.from(main.children || []) 4481 .filter(el => this.isUsableBlock(el)); 4482 4483 const withTop = directChildren.map(el => { 4484 const r = el.getBoundingClientRect(); 4485 4486 return { 4487 el, 4488 top: r.top + (window.scrollY || window.pageYOffset || 0), 4489 h: r.height || 0 4490 }; 4491 }).sort((a, b) => a.top - b.top); 4492 4493 const cleaned = []; 4494 4495 for (const item of withTop) { 4496 const last = cleaned[cleaned.length - 1]; 4497 4498 if (last && Math.abs(item.top - last.top) < 12) { 4499 if (item.h > last.h) { 4500 cleaned[cleaned.length - 1] = item; 4501 } 4502 4503 continue; 4504 } 4505 4506 cleaned.push(item); 4507 } 4508 4509 if (cleaned.length >= 2) { 4510 return cleaned[1].el; 4511 } 4512 4513 const sections = Array.from(main.querySelectorAll?.('section') || []) 4514 .filter(el => this.isUsableBlock(el)) 4515 .map(el => { 4516 const r = el.getBoundingClientRect(); 4517 4518 return { 4519 el, 4520 top: r.top + (window.scrollY || window.pageYOffset || 0), 4521 h: r.height || 0 4522 }; 4523 }) 4524 .sort((a, b) => a.top - b.top); 4525 4526 return sections[1]?.el || sections[0]?.el || cleaned[0]?.el || null; 4527 }, 4528 4529 teardownReveal() { 4530 if (this._onScroll) { 4531 window.removeEventListener('scroll', this._onScroll); 4532 window.removeEventListener('resize', this._onScroll); 4533 } 4534 4535 if (this._onLoad) { 4536 window.removeEventListener('load', this._onLoad); 4537 window.removeEventListener('pageshow', this._onLoad); 4538 } 4539 4540 this._onScroll = null; 4541 this._onLoad = null; 4542 4543 if (this._raf) { 4544 cancelAnimationFrame(this._raf); 4545 } 4546 4547 this._raf = null; 4548 }, 4549 4550 setupRevealOnSecondBlock() { 4551 this.teardownReveal(); 4552 4553 this.$nextTick(() => { 4554 const check = () => { 4555 if (this.pageSkeletonActive()) { 4556 this.tabVisible = false; 4557 return; 4558 } 4559 4560 // Never show while mobile/tablet menu is open. 4561 if (this.mobileNavOpen()) { 4562 this.syncMobileNav(); 4563 return; 4564 } 4565 4566 if ( 4567 !this._revealTarget || 4568 !document.documentElement.contains(this._revealTarget) || 4569 !this.isUsableBlock(this._revealTarget) 4570 ) { 4571 this._revealTarget = this.getSecondBlock(); 4572 } 4573 4574 // Fail closed so the tab does not appear immediately while the page is still settling. 4575 if (!this._revealTarget) { 4576 this.tabVisible = false;
4577 return; 4578 } 4579 4580 // The opener tab stays hidden while drawer is open. 4581 if (this.showBooking) { 4582 return; 4583 } 4584 4585 const r = this._revealTarget.getBoundingClientRect(); 4586 const vh = window.innerHeight || document.documentElement.clientHeight || 0; 4587 const triggerY = (vh * this.revealLine) + this.revealOffsetPx; 4588 4589 if (!this.tabVisible && r.top <= triggerY) { 4590 this.tabVisible = true; 4591 return; 4592 } 4593 4594 if (this.tabVisible && r.top > (triggerY + this.hysteresisPx)) { 4595 this.tabVisible = false; 4596 } 4597 }; 4598 4599 const scheduleCheck = () => { 4600 if (this._raf) return; 4601 4602 this._raf = requestAnimationFrame(() => { 4603 this._raf = null; 4604 check(); 4605 }); 4606 }; 4607 4608 this._onScroll = scheduleCheck; 4609 4610 this._onLoad = () => { 4611 this.syncMobileNav(); 4612 this._revealTarget = null; 4613 scheduleCheck(); 4614 window.setTimeout(scheduleCheck, 120); 4615 window.setTimeout(scheduleCheck, 420); 4616 }; 4617 4618 scheduleCheck(); 4619 4620 window.addEventListener('scroll', this._onScroll, { passive: true }); 4621 window.addEventListener('resize', this._onScroll, { passive: true }); 4622 window.addEventListener('load', this._onLoad, { passive: true }); 4623 window.addEventListener('pageshow', this._onLoad, { passive: true }); 4624 }); 4625 }, 4626 4627 lockScroll(lock) { 4628 if (lock) { 4629 if (this._scrollLockAdded) return; 4630 this._scrollLockAdded = [document.documentElement, document.body] 4631 .filter((el) => !el.classList.contains('overflow-hidden')); 4632 this._scrollLockAdded.forEach((el) => el.classList.add('overflow-hidden')); 4633 return; 4634 } 4635 4636 // Hand the scroll lock to an opening menu; release our additions after it closes. 4637 if (!this.mobileNavOpen() && this._scrollLockAdded) { 4638 this._scrollLockAdded.forEach((el) => el.classList.remove('overflow-hidden')); 4639 this._scrollLockAdded = null; 4640 } 4641 }, 4642 4643 openBookingPanel() { 4644 if (this.mobileNavOpen()) return; 4645 if (this.showBooking) return; 4646 4647 this.showBooking = true; 4648 this.lockScroll(true); 4649 }, 4650 4651 toggleBookingPanel() { 4652 this.showBooking ? this.closeBookingPanel() : this.openBookingPanel(); 4653 }, 4654 4655 closeBookingPanel() { 4656 if (!this.showBooking) return; 4657 4658 this.showBooking = false; 4659 this.lockScroll(false); 4660 4661 this.$nextTick(() => { 4662 if (this._onScroll) { 4663 this._onScroll(); 4664 } 4665 }); 4666 }, 4667 4668 submitBooking() { 4669 if (this.$refs.bookForm) { 4670 this.$refs.bookForm.submit(); 4671 this.closeBookingPanel(); 4672 } 4673 }, 4674 })); 4675 }); 4676 </script>
4676 4677 4678 4679 4680 4681 <style> 4682 [x-cloak]{display:none!important} 4683 4684 /* ===== Root overlay ===== */ 4685 .cc-root{ position:fixed; inset:0; z-index:9999; pointer-events:none; } 4686 4687 /* 4688 IMPORTANT FIX: 4689 Do NOT use !important on breakpoint display rules, 4690 because Alpine x-show toggles inline display:none; which must win. 4691 */ 4692 .cc-mobile { display:block; } /* default: mobile on */ 4693 .cc-desktop { display:none; } /* default: desktop off */ 4694 @media (min-width:768px){ 4695 .cc-mobile { display:none; } 4696 .cc-desktop { display:block; } 4697 } 4698 4699 /* ===== Shared card container ===== */ 4700 .cc-card{ 4701 border-radius:0.75rem; 4702 border:1px solid rgba(229,231,235,1); 4703 background:rgba(255,255,255,.95); 4704 backdrop-filter:blur(10px); 4705 box-shadow:0 20px 45px rgba(0,0,0,.18); 4706 pointer-events:auto; 4707 } 4708 4709 /* ===== Mobile popup sizing/position (half screen, left-aligned) ===== */ 4710 .cc-mobile-popup{ 4711 position:fixed; left:12px; bottom:16px; 4712 width:50vw !important; 4713 min-width:260px; max-width:420px; 4714 box-sizing:border-box; 4715 pointer-events:auto; 4716 } 4717 4718 /* Desktop card wrapper */ 4719 .cc-desktop-wrap{ position:fixed; left:16px; bottom:16px; pointer-events:auto; } 4720 4721 /* Settings modal */ 4722 .cc-modal{ 4723 position:fixed; inset:0; z-index:10000; 4724 display:flex; align-items:center; justify-content:center; 4725 pointer-events:auto; 4726 } 4727 .cc-modal-panel{ 4728 width:90vw; max-width:520px; 4729 border-radius:0.75rem; 4730 background:#fff; 4731 box-shadow:0 20px 40px rgba(0,0,0,.18); 4732 border:1px solid rgba(0,0,0,.06); 4733 padding:1.25rem; 4734 position:relative; 4735 } 4736 4737 /* Three equal buttons */ 4738 .cc-btn-row{ display:grid; grid-template-columns:repeat(3,1fr); gap:.5rem; } 4739 4740 /* Dimmer */ 4741 .cc-dim{ position:absolute; inset:0; background:rgba(0,0,0,.4); } 4742</style> 4743 4744<div 4745 x-data="{ 4746 storageKey: 'ab1_cc', 4747 open: false, 4748 showSettings: false, 4749 categories: { analytics:false, marketing:false, functional:false }, 4750 4751 init(){ 4752 const saved = this.getConsent(); 4753 if (!saved) { this.open = true; return; } 4754 this.dispatch(saved); 4755 }, 4756 4757 acceptAll(){ 4758 this.categories = { analytics:true, marketing:true, functional:true }; 4759 this.save(true); 4760 }, 4761 4762 rejectAll(){ 4763 this.categories = { analytics:false, marketing:false, functional:false }; 4764 this.save(false); 4765 }, 4766 4767 save(explicitAccepted = null){ 4768 const consent = { 4769 accepted: explicitAccepted ?? (this.categories.analytics || this.categories.marketing || this.categories.functional), 4770 categories: { ...this.categories }, 4771 updatedAt: new Date().toISOString() 4772 }; 4773 4774 // Close UI immediately (x-show must hide it) 4775 this.showSettings = false; 4776 this.open = false; 4777 4778 // Persist + dispatch safely (never block closing) 4779 this.setConsent(consent); 4780 this.dispatch(consent); 4781 }, 4782 4783 dispatch(consent){ 4784 try { window.dispatchEvent(new CustomEvent('cookie-consent', { detail: consent })); } catch (_) {} 4785 try { 4786 window.dataLayer = window.dataLayer || []; 4787 window.dataLayer.push({ event: 'cookie_consent_update', consent }); 4788 } catch (_) {} 4789 }, 4790 4791 getConsent(){ 4792 try { 4793 const raw = localStorage.getItem(this.storageKey); 4794 if (raw) return JSON.parse(raw); 4795 } catch (_) {} 4796 try { 4797 const raw = sessionStorage.getItem(this.storageKey); 4798 if (raw) return JSON.parse(raw); 4799 } catch (_) {} 4800 return null; 4801 }, 4802 4803 setConsent(obj){ 4804 const val = JSON.stringify(obj); 4805 try { localStorage.setItem(this.storageKey, val); return; } catch (_) {} 4806 try { sessionStorage.setItem(this.storageKey, val); return; } catch (_) {} 4807 }, 4808 }" 4809 x-init="init()" 4810 x-cloak 4811 class="cc-root" 4812 aria-live="polite" 4813> 4814 4815 4816 <div 4817 x-show="open" 4818 x-transition 4819 class="cc-mobile cc-mobile-popup" 4820 role="dialog" 4821 aria-modal="true" 4822 aria-labelledby="cc-mobile-title" 4823 > 4824 <div class="cc-card"> 4825 <div class="p-4"> 4826 <p id="cc-mobile-title" class="text-xs font-semibold tracking-widest text-[#0047BB]"> 4827 PRIVACY NOTICE 4828 </p> 4829 <p class="mt-1 text-sm leading-5 text-gray-700"> 4830 We use cookies to improve your experience. See our 4831 <a href="https://astoriaboracay.com/privacy-policy" class="underline font-medium hover:text-[#0047BB]">Privacy Policy</a>. 4832 </p> 4833
4834 <div class="mt-3 cc-btn-row"> 4835 <button type="button" 4836 @click.prevent.stop="showSettings = true" 4837 class="rounded-lg px-0 py-2 text-sm font-semibold ring-1 ring-gray-300 hover:bg-gray-50"> 4838 Settings 4839 </button> 4840 <button type="button" 4841 @click.prevent.stop="rejectAll()" 4842 class="rounded-lg px-0 py-2 text-sm font-semibold bg-gray-100 hover:bg-gray-200"> 4843 Reject 4844 </button> 4845 <button type="button" 4846 @click.prevent.stop="acceptAll()" 4847 class="rounded-lg px-0 py-2 text-sm font-semibold text-white bg-[#0047BB] hover:brightness-110"> 4848 Accept 4849 </button> 4850 </div> 4851 </div> 4852 </div> 4853 </div> 4854 4855 4856 <div 4857 x-show="open" 4858 x-transition 4859 class="cc-desktop cc-desktop-wrap" 4860 role="dialog" 4861 aria-modal="true" 4862 aria-labelledby="cc-desktop-title" 4863 > 4864 <div class="cc-card w-auto"> 4865 <div class="p-4" style="width: 28rem; max-width: 92vw;"> 4866 <p id="cc-desktop-title" class="text-[11px] lg:text-xs font-semibold tracking-widest text-[#0047BB]"> 4867 PRIVACY NOTICE 4868 </p> 4869 <p class="mt-1 text-[13px] lg:text-sm leading-5 text-gray-700"> 4870 We use cookies to improve your experience. See our 4871 <a href="https://astoriaboracay.com/privacy-policy" class="underline font-medium hover:text-[#0047BB]">Privacy Policy</a>. 4872 </p> 4873 4874 <div class="mt-3 cc-btn-row"> 4875 <button type="button" 4876 @click.prevent.stop="showSettings = true" 4877 class="rounded-lg px-0 py-2 text-[13px] lg:text-sm font-semibold ring-1 ring-gray-300 hover:bg-gray-50"> 4878 Settings 4879 </button> 4880 <button type="button" 4881 @click.prevent.stop="rejectAll()" 4882 class="rounded-lg px-0 py-2 text-[13px] lg:text-sm font-semibold bg-gray-100 hover:bg-gray-200"> 4883 Reject 4884 </button> 4885 <button type="button" 4886 @click.prevent.stop="acceptAll()" 4887 class="rounded-lg px-0 py-2 text-[13px] lg:text-sm font-semibold text-white bg-[#0047BB] hover:brightness-110"> 4888 Accept 4889 </button> 4890 </div> 4891 </div> 4892 </div> 4893 </div> 4894 4895 4896 <div 4897 x-show="showSettings" 4898 x-transition.opacity 4899 x-cloak 4900 class="cc-modal" 4901 @keydown.escape.window="showSettings = false" 4902 > 4903 <div class="cc-dim" @click="showSettings = false"></div> 4904 4905 <div x-show="showSettings" x-transition 4906 role="dialog" aria-modal="true" aria-labelledby="cookie-settings-title" 4907 class="cc-modal-panel"> 4908 <button type="button" 4909 @click="showSettings = false" 4910 class="absolute top-2.5 right-2.5 inline-flex items-center justify-center w-8 h-8 rounded-full bg-gray-100 text-gray-600 hover:bg-gray-200 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-[#0047BB]" 4911 aria-label="Close cookie settings"> 4912 <svg xmlns="http://www.w3.org/2000/svg" class="w-4 h-4" viewBox="0 0 20 20" fill="currentColor"> 4913 <path fill-rule="evenodd" d="M4.293 4.293a1 1 0 011.414 0L10 8.586l4.293-4.293a1 1 0 011.414 1.414L11.414 10l4.293 4.293a1 1 0 01-1.414 1.414L10 11.414l-4.293 4.293a1 1 0 01-1.414-1.414L8.586 10 4.293 5.707a1 1 0 010-1.414z" clip-rule="evenodd"/> 4914 </svg> 4915 </button> 4916 4917 <h2 id="cookie-settings-title" class="text-sm font-semibold text-gray-900">Cookie Settings</h2> 4918 <p class="mt-1 text-[13px] text-gray-600">Essential cookies are required and canât be turned off.</p> 4919 4920 <div class="mt-4 space-y-3"> 4921 <div class="flex items-start justify-between gap-3 rounded-lg border p-3"> 4922 <div> 4923 <div class="text-[13px] font-medium text-gray-900">Essential</div> 4924 <div class="text-[12px] text-gray-600">Required for basic site functionality.</div> 4925 </div> 4926 <div class="text-[11px] font-semibold px-2 py-0.5 rounded bg-gray-100 text-gray-700">ON</div> 4927 </div> 4928 4929 <div class="flex items-start justify-between gap-3 rounded-lg border p-3"> 4930 <div> 4931 <div class="text-[13px] font-medium text-gray-900">Functional</div> 4932 <div class="text-[12px] text-gray-600">Remembers preferences and enhances features.</div> 4933 </div> 4934 <label class="inline-flex items-center cursor-pointer"> 4935 <input type="checkbox" class="sr-only peer" x-model="categories.functional">
4936 <span class="relative w-10 h-5 rounded-full bg-gray-200 transition peer-checked:bg-[#0047BB] 4937 after:content-[''] after:absolute after:top-0.5 after:left-0.5 4938 after:w-4 after:h-4 after:bg-white after:rounded-full after:shadow after:transition 4939 peer-checked:after:translate-x-5"></span> 4940 </label> 4941 </div> 4942 4943 <div class="flex items-start justify-between gap-3 rounded-lg border p-3"> 4944 <div> 4945 <div class="text-[13px] font-medium text-gray-900">Analytics</div> 4946 <div class="text-[12px] text-gray-600">Helps us understand site usage.</div> 4947 </div> 4948 <label class="inline-flex items-center cursor-pointer"> 4949 <input type="checkbox" class="sr-only peer" x-model="categories.analytics"> 4950 <span class="relative w-10 h-5 rounded-full bg-gray-200 transition peer-checked:bg-[#0047BB] 4951 after:content-[''] after:absolute after:top-0.5 after:left-0.5 4952 after:w-4 after:h-4 after:bg-white after:rounded-full after:shadow after:transition 4953 peer-checked:after:translate-x-5"></span> 4954 </label> 4955 </div> 4956 4957 <div class="flex items-start justify-between gap-3 rounded-lg border p-3"> 4958 <div> 4959 <div class="text-[13px] font-medium text-gray-900">Marketing</div> 4960 <div class="text-[12px] text-gray-600">Personalized content and ads.</div> 4961 </div> 4962 <label class="inline-flex items-center cursor-pointer"> 4963 <input type="checkbox" class="sr-only peer" x-model="categories.marketing"> 4964 <span class="relative w-10 h-5 rounded-full bg-gray-200 transition peer-checked:bg-[#0047BB] 4965 after:content-[''] after:absolute after:top-0.5 after:left-0.5 4966 after:w-4 after:h-4 after:bg-white after:rounded-full after:shadow after:transition 4967 peer-checked:after:translate-x-5"></span> 4968 </label> 4969 </div> 4970 </div> 4971 4972 <div class="mt-5 flex flex-wrap justify-end gap-2"> 4973 <button type="button" 4974 @click.prevent.stop="rejectAll()" 4975 class="rounded-lg px-3 py-1.5 text-[13px] font-semibold bg-gray-100 hover:bg-gray-200"> 4976 Reject All 4977 </button> 4978 <button type="button" 4979 @click.prevent.stop="acceptAll()" 4980 class="rounded-lg px-4 py-2 text-[13px] font-semibold text-white bg-[#0047BB] hover:brightness-110"> 4981 Accept All 4982 </button> 4983 <button type="button" 4984 @click.prevent.stop="save()" 4985 class="rounded-lg px-3 py-1.5 text-[13px] font-semibold ring-1 ring-gray-300 hover:bg-gray-50"> 4986 Save Preferences 4987 </button> 4988 </div> 4989 </div> 4990 </div> 4991 4992</div> 4993</body> 4994</html>
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.