PageSourceSearch

https://astoriaboracay.com/search?q=accommodations

html astoriaboracay.com collected 2026-09-25 20:58:38 UTC 239,655 bytes, 4,994 lines download raw bytes

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 &amp; 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&amp;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 &amp; 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&amp;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&amp;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 &amp; 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&amp;B</a>
1947        <a href="https://astoriaboracay.com/meetings-events" class="block py-2 font-semibold">Meetings &amp; 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&amp;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&amp;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&amp;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                    &laquo; Previous
2722                </span>
2723            
2724                            <a href="https://astoriaboracay.com/search?q=accommodations&amp;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 &raquo;
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="&amp;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&amp;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&amp;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 &amp;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&#039;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&#039;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 &amp; 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&#039;s Ridge"
3841            title="Stellar Potter&#039;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&#039;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 &amp; Hospitality Institute"
3883            title="Astoria Culinary &amp; 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 &amp; 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 &amp; Convention Center"
3988            title="Mangrove Conference &amp; 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 &amp; 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 &amp; 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              &nbsp;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 | &nbsp;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.