{"id":33,"date":"2026-05-25T11:22:29","date_gmt":"2026-05-25T11:22:29","guid":{"rendered":"https:\/\/napinthai.com\/?page_id=33"},"modified":"2026-05-25T11:38:05","modified_gmt":"2026-05-25T11:38:05","slug":"voyage-expert","status":"publish","type":"page","link":"https:\/\/napinthai.com\/","title":{"rendered":"VoyageExpert Portal"},"content":{"rendered":"\n<!-- Design System --> <!DOCTYPE html> <html lang=\"en\" class=\"light\"> <head>     <meta charset=\"utf-8\"\/>     <meta content=\"width=device-width, initial-scale=1.0\" name=\"viewport\"\/>     <title>VoyageExpert &#8211; Premium Travel Deals<\/title>     <script src=\"https:\/\/cdn.tailwindcss.com?plugins=forms,container-queries\"><\/script>     <link href=\"https:\/\/fonts.googleapis.com\/css2?family=Material+Symbols+Outlined:wght,FILL@100..700,0..1&#038;display=swap\" rel=\"stylesheet\"\/>     <link href=\"https:\/\/fonts.googleapis.com\/css2?family=Inter:wght@400;500;600&#038;family=Montserrat:wght@600;700&#038;display=swap\" rel=\"stylesheet\"\/>     <script id=\"tailwind-config\">         tailwind.config = {           darkMode: \"class\",           theme: {             extend: {               \"colors\": {                       \"surface-container-low\": \"#f6f3f2\",                       \"outline\": \"#747782\",                       \"on-background\": \"#1c1b1b\",                       \"on-tertiary-fixed\": \"#171c1f\",                       \"primary-fixed\": \"#d9e2ff\",                       \"on-primary\": \"#ffffff\",                       \"surface-variant\": \"#e5e2e1\",                       \"on-error-container\": \"#93000a\",                       \"secondary-container\": \"#ffb700\",                       \"outline-variant\": \"#c4c6d3\",                       \"surface\": \"#fcf9f8\",                       \"secondary-fixed-dim\": \"#ffba26\",                       \"on-tertiary\": \"#ffffff\",                       \"tertiary-fixed-dim\": \"#c3c7cb\",                       \"on-secondary-fixed-variant\": \"#5e4100\",                       \"on-surface-variant\": \"#434651\",                       \"on-primary-container\": \"#7fa1f2\",                       \"surface-container-lowest\": \"#ffffff\",                       \"on-secondary-fixed\": \"#271900\",                       \"surface-container\": \"#f0eded\",                       \"primary-container\": \"#003580\",                       \"surface-tint\": \"#375ca8\",                       \"error\": \"#ba1a1a\",                       \"secondary\": \"#7d5800\",                       \"tertiary-fixed\": \"#dfe3e7\",                       \"on-secondary-container\": \"#6b4b00\",                       \"on-secondary\": \"#ffffff\",                       \"on-primary-fixed\": \"#001945\",                       \"surface-dim\": \"#dcd9d9\",                       \"on-primary-fixed-variant\": \"#1a438e\",                       \"primary\": \"#002155\",                       \"on-tertiary-fixed-variant\": \"#43474b\",                       \"surface-container-highest\": \"#e5e2e1\",                       \"secondary-fixed\": \"#ffdea9\",                       \"inverse-on-surface\": \"#f3f0ef\",                       \"on-error\": \"#ffffff\",                       \"error-container\": \"#ffdad6\",                       \"background\": \"#fcf9f8\",                       \"inverse-surface\": \"#313030\",                       \"on-tertiary-container\": \"#9fa4a7\",                       \"inverse-primary\": \"#b0c6ff\",                       \"on-surface\": \"#1c1b1b\",                       \"surface-container-high\": \"#eae7e7\",                       \"primary-fixed-dim\": \"#b0c6ff\",                       \"tertiary\": \"#202428\",                       \"tertiary-container\": \"#353a3d\",                       \"surface-bright\": \"#fcf9f8\"               },               \"borderRadius\": {                       \"DEFAULT\": \"0.25rem\",                       \"lg\": \"0.5rem\",                       \"xl\": \"0.75rem\",                       \"full\": \"9999px\"               },               \"spacing\": {                       \"gutter\": \"24px\",                       \"stack-lg\": \"24px\",                       \"margin-desktop\": \"64px\",                       \"base\": \"8px\",                       \"container-max\": \"1280px\",                       \"margin-mobile\": \"16px\",                       \"stack-sm\": \"4px\",                       \"stack-md\": \"12px\"               },               \"fontFamily\": {                       \"headline-sm\": [\"Montserrat\"],                       \"label-bold\": [\"Inter\"],                       \"display-lg-mobile\": [\"Montserrat\"],                       \"body-sm\": [\"Inter\"],                       \"label-sm\": [\"Inter\"],                       \"body-md\": [\"Inter\"],                       \"display-lg\": [\"Montserrat\"],                       \"headline-md\": [\"Montserrat\"],                       \"body-lg\": [\"Inter\"]               },               \"fontSize\": {                       \"headline-sm\": [\"20px\", {\"lineHeight\": \"28px\", \"fontWeight\": \"600\"}],                       \"label-bold\": [\"14px\", {\"lineHeight\": \"20px\", \"fontWeight\": \"600\"}],                       \"display-lg-mobile\": [\"32px\", {\"lineHeight\": \"40px\", \"letterSpacing\": \"-0.01em\", \"fontWeight\": \"700\"}],                       \"body-sm\": [\"14px\", {\"lineHeight\": \"20px\", \"fontWeight\": \"400\"}],                       \"label-sm\": [\"12px\", {\"lineHeight\": \"16px\", \"fontWeight\": \"500\"}],                       \"body-md\": [\"16px\", {\"lineHeight\": \"24px\", \"fontWeight\": \"400\"}],                       \"display-lg\": [\"48px\", {\"lineHeight\": \"56px\", \"letterSpacing\": \"-0.02em\", \"fontWeight\": \"700\"}],                       \"headline-md\": [\"24px\", {\"lineHeight\": \"32px\", \"fontWeight\": \"600\"}],                       \"body-lg\": [\"18px\", {\"lineHeight\": \"28px\", \"fontWeight\": \"400\"}]               }             }           }         }     <\/script>     <style>         .material-symbols-outlined {             font-variation-settings: 'FILL' 0, 'wght' 400, 'GRAD' 0, 'opsz' 24;         }         .fill-icon {             font-variation-settings: 'FILL' 1, 'wght' 400, 'GRAD' 0, 'opsz' 24;         }                  \/* Hide default WordPress Block Theme layout elements *\/         header, footer, .entry-title, .wp-block-post-title, .wp-block-template-part, .site-header, .site-footer {             display: none !important;         }                  \/* FORCE COMPLETE BREAKOUT OF ALL WORDPRESS LAYOUT CONSTRAINT CONTAINERS *\/         body, .site, .site-content, .entry-content, .post-content, .wp-block-group, .entry, .wp-block-post-content, .is-layout-constrained {             margin: 0 !important;             padding: 0 !important;             max-width: 100% !important;             width: 100% !important;             background-color: #fcf9f8 !important;         }         .is-layout-constrained > *, .wp-block-post-content > * {             max-width: 100% !important;             width: 100% !important;             margin-left: 0 !important;             margin-right: 0 !important;         }         .site-inner, .site-inner .wrap {             max-width: 100% !important;             padding: 0 !important;         }                  \/* Enforce absolute container constraint within our custom VoyageExpert app grids *\/         .max-w-container-max {             max-width: 1280px !important;             width: 100% !important;             margin-left: auto !important;             margin-right: auto !important;             padding-left: 16px !important;             padding-right: 16px !important;         }         @media (min-width: 768px) {             .max-w-container-max {                 padding-left: 64px !important;                 padding-right: 64px !important;             }         }     <\/style> <\/head> <body class=\"bg-background text-on-background font-body-md antialiased selection:bg-primary-fixed selection:text-on-primary-fixed\">  <!-- TopNavBar Shared Component --> <nav class=\"bg-surface docked full-width top-0 z-50 shadow-sm shadow-primary\/15 sticky\">     <div class=\"max-w-container-max mx-auto px-margin-mobile md:px-margin-desktop flex justify-between items-center h-20 w-full\">         <div onclick=\"navigateTo('home')\" class=\"font-headline-md text-headline-md font-bold text-primary flex items-center gap-base cursor-pointer\">             <span class=\"material-symbols-outlined fill-icon text-secondary\" style=\"font-size: 28px;\">travel_explore<\/span>             VoyageExpert         <\/div>         <div class=\"hidden md:flex items-center gap-gutter\">             <a onclick=\"navigateToResults('Phuket')\" class=\"text-on-surface-variant font-label-bold hover:text-secondary cursor-pointer transition-colors duration-200\" data-translate=\"destinations\">Destinations<\/a>             <a onclick=\"navigateTo('home')\" class=\"text-on-surface-variant font-label-bold hover:text-secondary cursor-pointer transition-colors duration-200\" data-translate=\"deals\">Deals<\/a>             <a onclick=\"navigateTo('home')\" class=\"text-on-surface-variant font-label-bold hover:text-secondary cursor-pointer transition-colors duration-200\" data-translate=\"guides\">Guides<\/a>         <\/div>         <div class=\"flex items-center gap-stack-md text-primary\">             <!-- Dynamic Language Selector Switcher -->             <div class=\"flex items-center bg-surface-container rounded-full p-1 border border-outline-variant\/30\">                 <button onclick=\"switchLanguage('en')\" id=\"lang-btn-en\" class=\"px-3 py-1 text-xs font-bold rounded-full transition-all bg-primary text-on-primary shadow-sm\">EN<\/button>                 <button onclick=\"switchLanguage('th')\" id=\"lang-btn-th\" class=\"px-3 py-1 text-xs font-bold rounded-full transition-all text-on-surface-variant\">TH<\/button>             <\/div>             <button aria-label=\"Payments\" class=\"p-2 rounded-full hover:bg-surface-variant transition-colors\">                 <span class=\"material-symbols-outlined\">payments<\/span>             <\/button>             <button class=\"md:hidden p-2 rounded-full hover:bg-surface-variant transition-colors\">                 <span class=\"material-symbols-outlined\">menu<\/span>             <\/button>         <\/div>     <\/div> <\/nav>  <main class=\"w-full\">          <!-- HOME VIEW SECTION -->     <div id=\"home-view\" class=\"w-full transition-all duration-300\">                  <!-- Hero Section -->         <section class=\"relative w-full h-[580px] flex items-center justify-center\">             <div class=\"absolute inset-0 z-0 bg-primary\/35\">                 <img decoding=\"async\" alt=\"Travel Hero\" class=\"w-full h-full object-cover object-center mix-blend-overlay\" src=\"https:\/\/lh3.googleusercontent.com\/aida-public\/AB6AXuCoOQyr53h_UYowf4e6XRhte-napXfUFKdWEVgST-_xP_-lGYX0gFrDPZXKuEdReExqMmUX2cp1kdkj_9Zlwg2VoBo9e7WXv9YfVtktwgS_ytuak4cyx1kS_b2HLCgUxKjtblUVc0p4paAVyWW_I2Ni32e74qZo2vbA6EKsR_D_SNPddDohrxeGOv5PPQfgXjCQHljZ8e6BJH2uO-_ogKiV74FFMoyaIAYMPuv9BPdznUJmomyg9nl2lYuhk4E7CaMc5t6o7UOQAnI\"\/>             <\/div>             <div class=\"relative z-10 w-full max-w-4xl px-margin-mobile md:px-margin-desktop flex flex-col items-center text-center\">                 <h1 class=\"font-display-lg-mobile md:font-display-lg text-display-lg-mobile md:text-display-lg text-on-primary mb-stack-sm drop-shadow-md leading-tight\" data-translate=\"heroTitle\">                     Curated Stays. Unbeatable Value.                 <\/h1>                 <p class=\"font-body-lg text-body-lg text-on-primary mb-stack-lg max-w-2xl drop-shadow-md opacity-95\" data-translate=\"heroSubtitle\">                     We aggregate the finest luxury accommodations globally, ensuring you book the perfect retreat with confidence.                 <\/p>                                  <!-- Search Bar Module -->                 <div class=\"bg-surface-container-lowest p-2 rounded-xl shadow-xl shadow-primary\/20 flex flex-col md:flex-row items-center gap-stack-md w-full border border-outline-variant\/30\">                     <div class=\"flex-1 flex items-center bg-surface-container hover:bg-surface-variant transition-colors rounded-lg p-stack-md w-full relative\">                         <span class=\"material-symbols-outlined text-outline mr-base\">location_on<\/span>                         <div class=\"flex flex-col text-left w-full\">                             <span class=\"font-label-sm text-label-sm text-on-surface-variant\" data-translate=\"destination\">Destination<\/span>                             <select id=\"search-dest-select\" class=\"bg-transparent border-none p-0 focus:ring-0 font-body-md text-body-md text-on-surface font-semibold placeholder:text-outline\/70 w-full cursor-pointer\">                                 <option value=\"Tokyo\" data-translate-opt=\"Tokyo\">Tokyo, Japan<\/option>                                 <option value=\"London\" data-translate-opt=\"London\">London, UK<\/option>                                 <option value=\"Bali\" data-translate-opt=\"Bali\">Bali, Indonesia<\/option>                                 <option value=\"Kyoto\" data-translate-opt=\"Kyoto\">Kyoto, Japan<\/option>                                 <option value=\"Phuket\" data-translate-opt=\"Phuket\">Phuket, Thailand<\/option>                                 <option value=\"Bangkok\" data-translate-opt=\"Bangkok\">Bangkok, Thailand<\/option>                                 <option value=\"Chiang Mai\" data-translate-opt=\"ChiangMai\">Chiang Mai, Thailand<\/option>                             <\/select>                         <\/div>                     <\/div>                     <div class=\"w-full md:w-[1px] h-[1px] md:h-12 bg-outline-variant\/50 hidden md:block\"><\/div>                     <div class=\"flex-1 flex items-center bg-surface-container hover:bg-surface-variant transition-colors rounded-lg p-stack-md w-full cursor-pointer\">                         <span class=\"material-symbols-outlined text-outline mr-base\">calendar_month<\/span>                         <div class=\"flex flex-col text-left w-full\">                             <span class=\"font-label-sm text-label-sm text-on-surface-variant\" data-translate=\"dates\">Dates<\/span>                             <span class=\"font-body-md text-body-md text-on-surface font-semibold truncate\" id=\"dates-display\" data-translate=\"addDates\">Add dates<\/span>                         <\/div>                     <\/div>                     <div class=\"w-full md:w-[1px] h-[1px] md:h-12 bg-outline-variant\/50 hidden md:block\"><\/div>                     <div class=\"flex-1 flex items-center bg-surface-container hover:bg-surface-variant transition-colors rounded-lg p-stack-md w-full cursor-pointer\">                         <span class=\"material-symbols-outlined text-outline mr-base\">group<\/span>                         <div class=\"flex flex-col text-left w-full\">                             <span class=\"font-label-sm text-label-sm text-on-surface-variant\" data-translate=\"guests\">Guests<\/span>                             <span class=\"font-body-md text-body-md text-on-surface font-semibold truncate\" data-translate=\"guestsText\">2 Adults, 1 Room<\/span>                         <\/div>                     <\/div>                     <button onclick=\"triggerSearch()\" class=\"bg-secondary hover:bg-on-secondary-fixed-variant text-on-secondary font-label-bold text-label-bold h-full py-4 px-8 rounded-lg transition-all w-full md:w-auto flex items-center justify-center gap-base active:scale-[0.98]\">                         <span data-translate=\"search\">Search<\/span>                     <\/button>                 <\/div>             <\/div>         <\/section>                  <!-- Today's Top Deals -->         <section class=\"max-w-container-max mx-auto px-margin-mobile md:px-margin-desktop py-16\">             <div class=\"flex justify-between items-end mb-8\">                 <div>                     <h2 class=\"font-headline-md text-headline-md text-primary mb-2\" data-translate=\"todayDeals\">Today&#8217;s Top Deals<\/h2>                     <p class=\"font-body-md text-body-md text-on-surface-variant\" data-translate=\"todaySubtitle\">Exclusive rates handpicked from our premium partners.<\/p>                 <\/div>                 <a onclick=\"navigateToResults('Phuket')\" class=\"hidden md:flex items-center text-secondary font-label-bold text-label-bold hover:underline cursor-pointer\">                     <span data-translate=\"viewAllDeals\">View all deals<\/span> <span class=\"material-symbols-outlined ml-1 text-[20px]\">arrow_forward<\/span>                 <\/a>             <\/div>                          <div class=\"grid grid-cols-1 md:grid-cols-3 gap-gutter\">                 <!-- Deal Card 1 -->                 <div class=\"bg-surface-container-lowest rounded-xl border border-outline-variant\/60 shadow-sm shadow-primary\/15 overflow-hidden group hover:shadow-md hover:shadow-primary\/20 transition-all duration-300\">                     <div class=\"h-52 overflow-hidden relative\">                         <img decoding=\"async\" src=\"https:\/\/lh3.googleusercontent.com\/aida-public\/AB6AXuC34mFA7IlPBNC4nK6tc2tcX6HwD9cCiq3mLlOcmMbwW6WBzXUopGGeWvQnYXk8AX_gKFMM9iw6oq099PXZVjoiwlDGS7fDu8ahWRosF_1mYpGZKvVuUDVod7R4_hT9XTELOu5ufcSBBgujFcGUMn2YWJlt7-HZGQSi_zOoUbwC4xv7sg5fKSaIuo5unURBuAShJMPTTdzOxfmtX3P896q-ZJwLZRMsZRpLek3AZYcA-Sz3PSwiyvv86SjNxCNYls5F84U-81KN1T0\" alt=\"The Ritz-Carlton, Kyoto\" class=\"w-full h-full object-cover group-hover:scale-105 transition-transform duration-500\"\/>                         <div class=\"absolute top-3 right-3 bg-surface-container-lowest\/90 backdrop-blur-sm px-2.5 py-1 rounded text-primary font-label-bold text-[12px] flex items-center gap-1\">                             <span data-translate=\"bookingPlatform\">Via Booking.com<\/span>                         <\/div>                     <\/div>                     <div class=\"p-6 flex flex-col gap-4\">                         <div class=\"flex justify-between items-start\">                             <div>                                 <h3 class=\"font-headline-sm text-headline-sm text-on-surface\" id=\"deal-title-1\">The Ritz-Carlton, Kyoto<\/h3>                                 <p class=\"font-body-sm text-body-sm text-on-surface-variant flex items-center gap-1 mt-1\">                                     <span class=\"material-symbols-outlined text-[16px]\">location_on<\/span> <span id=\"deal-loc-1\">Kyoto, Japan<\/span>                                 <\/p>                             <\/div>                             <div class=\"flex flex-col items-end\">                                 <div class=\"bg-secondary text-on-secondary px-2 py-0.5 rounded flex items-center gap-1\">                                     <span class=\"font-label-bold text-label-bold\">9.4<\/span>                                     <span class=\"font-label-sm text-[10px]\" data-translate=\"superb\">Superb<\/span>                                 <\/div>                                 <span class=\"font-label-sm text-label-sm text-outline mt-1\">420 <span data-translate=\"reviews\">reviews<\/span><\/span>                             <\/div>                         <\/div>                         <div class=\"flex items-center gap-1 text-secondary\">                             <span class=\"material-symbols-outlined fill-icon text-[16px]\">star<\/span>                             <span class=\"material-symbols-outlined fill-icon text-[16px]\">star<\/span>                             <span class=\"material-symbols-outlined fill-icon text-[16px]\">star<\/span>                             <span class=\"material-symbols-outlined fill-icon text-[16px]\">star<\/span>                             <span class=\"material-symbols-outlined fill-icon text-[16px]\">star<\/span>                         <\/div>                         <div class=\"mt-auto pt-4 flex justify-between items-end border-t border-surface-variant\">                             <div>                                 <span class=\"font-label-sm text-label-sm text-error line-through block\">$850<\/span>                                 <span class=\"font-headline-sm text-headline-sm text-on-surface font-bold\">$680 <span class=\"font-body-sm text-body-sm font-normal text-on-surface-variant\">\/ <span data-translate=\"night\">night<\/span><\/span><\/span>                             <\/div>                             <button onclick=\"triggerSimulatedAffiliate('kyoto-1')\" class=\"bg-secondary hover:bg-on-secondary-fixed-variant text-on-secondary font-label-bold text-label-bold py-2.5 px-6 rounded-lg transition-all active:scale-95\" data-translate=\"viewDeal\">                                 View Deal                             <\/button>                         <\/div>                     <\/div>                 <\/div>                                  <!-- Deal Card 2 -->                 <div class=\"bg-surface-container-lowest rounded-xl border border-outline-variant\/60 shadow-sm shadow-primary\/15 overflow-hidden group hover:shadow-md hover:shadow-primary\/20 transition-all duration-300\">                     <div class=\"h-52 overflow-hidden relative\">                         <img decoding=\"async\" src=\"https:\/\/lh3.googleusercontent.com\/aida-public\/AB6AXuAM8F92FzYD9Kpw8voCepd5lQ0nxNcMhK1SqSMrjBCJd6TnK7HXGcc5ij9U8CjUzEV0uvu458EEI-vgjrV5xm4Jtx_eGaye_I4-YQtCT-pJYgD_AVQobLE8D2C0dzpZvBFtC0FkB4SVVEF1i24MziKlnziAjnXYIhio3Q_uu--1V_CGsUZjCvi9kY3vtWQ1OGKInUKn9SefSH2D-mUCX4hqxrcDI7GO8deyZrnxXor6Ewl0GXBTREzIwZ9LyKLoXXG-v6svb0algfg\" alt=\"The Savoy\" class=\"w-full h-full object-cover group-hover:scale-105 transition-transform duration-500\"\/>                         <div class=\"absolute top-3 right-3 bg-surface-container-lowest\/90 backdrop-blur-sm px-2.5 py-1 rounded text-primary font-label-bold text-[12px] flex items-center gap-1\">                             <span data-translate=\"agodaPlatform\">Via Agoda<\/span>                         <\/div>                     <\/div>                     <div class=\"p-6 flex flex-col gap-4\">                         <div class=\"flex justify-between items-start\">                             <div>                                 <h3 class=\"font-headline-sm text-headline-sm text-on-surface\" id=\"deal-title-2\">The Savoy<\/h3>                                 <p class=\"font-body-sm text-body-sm text-on-surface-variant flex items-center gap-1 mt-1\">                                     <span class=\"material-symbols-outlined text-[16px]\">location_on<\/span> <span id=\"deal-loc-2\">London, UK<\/span>                                 <\/p>                             <\/div>                             <div class=\"flex flex-col items-end\">                                 <div class=\"bg-secondary text-on-secondary px-2 py-0.5 rounded flex items-center gap-1\">                                     <span class=\"font-label-bold text-label-bold\">9.2<\/span>                                     <span class=\"font-label-sm text-[10px]\" data-translate=\"exceptional\">Exceptional<\/span>                                 <\/div>                                 <span class=\"font-label-sm text-label-sm text-outline mt-1\">815 <span data-translate=\"reviews\">reviews<\/span><\/span>                             <\/div>                         <\/div>                         <div class=\"flex items-center gap-1 text-secondary\">                             <span class=\"material-symbols-outlined fill-icon text-[16px]\">star<\/span>                             <span class=\"material-symbols-outlined fill-icon text-[16px]\">star<\/span>                             <span class=\"material-symbols-outlined fill-icon text-[16px]\">star<\/span>                             <span class=\"material-symbols-outlined fill-icon text-[16px]\">star<\/span>                             <span class=\"material-symbols-outlined fill-icon text-[16px]\">star<\/span>                         <\/div>                         <div class=\"mt-auto pt-4 flex justify-between items-end border-t border-surface-variant\">                             <div>                                 <span class=\"font-label-sm text-label-sm text-error line-through block\">$1,200<\/span>                                 <span class=\"font-headline-sm text-headline-sm text-on-surface font-bold\">$950 <span class=\"font-body-sm text-body-sm font-normal text-on-surface-variant\">\/ <span data-translate=\"night\">night<\/span><\/span><\/span>                             <\/div>                             <button onclick=\"triggerSimulatedAffiliate('london-1')\" class=\"bg-secondary hover:bg-on-secondary-fixed-variant text-on-secondary font-label-bold text-label-bold py-2.5 px-6 rounded-lg transition-all active:scale-95\" data-translate=\"viewDeal\">                                 View Deal                             <\/button>                         <\/div>                     <\/div>                 <\/div>                                  <!-- Deal Card 3 -->                 <div class=\"bg-surface-container-lowest rounded-xl border border-outline-variant\/60 shadow-sm shadow-primary\/15 overflow-hidden group hover:shadow-md hover:shadow-primary\/20 transition-all duration-300\">                     <div class=\"h-52 overflow-hidden relative\">                         <img decoding=\"async\" src=\"https:\/\/lh3.googleusercontent.com\/aida-public\/AB6AXuARPJAOPToaNdJK3-Mt4cSfojWEv6oaP3DD-McLDwoc8qkOri8rGWZYL2Jx4KuFISs_KAkJJ5V97tTdELSgE43nQ4xn8Cf4AZjkDU2HoMhkIGSsyuf_WmbzJJMBUnVNXiUYEvzeNYtYrNvrftoo_oQHziMmdog6FChV6T3WRmwldROvqgF9d8djjIgDwbRh5hAgyQFQhABPrCSD6eR3sv0vMCnJWWohHhYbiQ-jqCETUhRkrvLVaS-_JVGVnGVwKkmlPEHCpFwHHnQ\" alt=\"Amandari Resort\" class=\"w-full h-full object-cover group-hover:scale-105 transition-transform duration-500\"\/>                         <div class=\"absolute top-3 right-3 bg-surface-container-lowest\/90 backdrop-blur-sm px-2.5 py-1 rounded text-primary font-label-bold text-[12px] flex items-center gap-1\">                             <span data-translate=\"bookingPlatform\">Via Booking.com<\/span>                         <\/div>                     <\/div>                     <div class=\"p-6 flex flex-col gap-4\">                         <div class=\"flex justify-between items-start\">                             <div>                                 <h3 class=\"font-headline-sm text-headline-sm text-on-surface\" id=\"deal-title-3\">Amandari Resort<\/h3>                                 <p class=\"font-body-sm text-body-sm text-on-surface-variant flex items-center gap-1 mt-1\">                                     <span class=\"material-symbols-outlined text-[16px]\">location_on<\/span> <span id=\"deal-loc-3\">Bali, Indonesia<\/span>                                 <\/p>                             <\/div>                             <div class=\"flex flex-col items-end\">                                 <div class=\"bg-secondary text-on-secondary px-2 py-0.5 rounded flex items-center gap-1\">                                     <span class=\"font-label-bold text-label-bold\">9.8<\/span>                                     <span class=\"font-label-sm text-[10px]\" data-translate=\"exceptional\">Exceptional<\/span>                                 <\/div>                                 <span class=\"font-label-sm text-label-sm text-outline mt-1\">210 <span data-translate=\"reviews\">reviews<\/span><\/span>                             <\/div>                         <\/div>                         <div class=\"flex items-center gap-1 text-secondary\">                             <span class=\"material-symbols-outlined fill-icon text-[16px]\">star<\/span>                             <span class=\"material-symbols-outlined fill-icon text-[16px]\">star<\/span>                             <span class=\"material-symbols-outlined fill-icon text-[16px]\">star<\/span>                             <span class=\"material-symbols-outlined fill-icon text-[16px]\">star<\/span>                             <span class=\"material-symbols-outlined fill-icon text-[16px]\">star<\/span>                         <\/div>                         <div class=\"mt-auto pt-4 flex justify-between items-end border-t border-surface-variant\">                             <div>                                 <span class=\"font-label-sm text-label-sm text-error line-through block\">$1,100<\/span>                                 <span class=\"font-headline-sm text-headline-sm text-on-surface font-bold\">$890 <span class=\"font-body-sm text-body-sm font-normal text-on-surface-variant\">\/ <span data-translate=\"night\">night<\/span><\/span><\/span>                             <\/div>                             <button onclick=\"triggerSimulatedAffiliate('bali-1')\" class=\"bg-secondary hover:bg-on-secondary-fixed-variant text-on-secondary font-label-bold text-label-bold py-2.5 px-6 rounded-lg transition-all active:scale-95\" data-translate=\"viewDeal\">                                 View Deal                             <\/button>                         <\/div>                     <\/div>                 <\/div>             <\/div>         <\/section>                  <!-- Bento\/Asymmetric Grid Trending Destinations -->         <section class=\"bg-surface-container-low py-16\">             <div class=\"max-w-container-max mx-auto px-margin-mobile md:px-margin-desktop\">                 <h2 class=\"font-headline-md text-headline-md text-primary mb-8 text-center md:text-left\" data-translate=\"trendingDestinations\">Trending Destinations<\/h2>                 <div class=\"grid grid-cols-1 md:grid-cols-3 md:grid-rows-2 gap-stack-lg h-auto md:h-[500px]\">                     <!-- Tokyo, Japan (Large Card Spans 2 rows) -->                     <div onclick=\"navigateToResults('Tokyo')\" class=\"relative rounded-xl overflow-hidden group cursor-pointer md:row-span-2 md:col-span-2 shadow-sm shadow-primary\/15 h-[300px] md:h-full\">                         <img decoding=\"async\" src=\"https:\/\/lh3.googleusercontent.com\/aida-public\/AB6AXuA9v76RQahCUYBzB28wHPgZ55KLUboKn3jVI_ivKhUES8k22NV78o9rD2ZYg8LzRgNyyleXug5O-pt5uDHS6eVKYc4bd4_VP8z1ouELRqShQDGAQLZ8BW327skESkMfvcF51MYbPayVfgdaBVdI2h0IHStfN4-frBSzTsdpeS05mADPgxo8c2vGEAKw4gUc4ctcpR5wbdtNtqdJD3lzS3GD2sAMo100yyy4YMRGq10hc1-HkcDPpXEJqGBt9-wHzqXrnGdjUg1dgVU\" alt=\"Tokyo\" class=\"w-full h-full object-cover group-hover:scale-105 transition-transform duration-700\"\/>                         <div class=\"absolute inset-0 bg-gradient-to-t from-black\/85 via-black\/35 to-transparent\"><\/div>                         <div class=\"absolute bottom-6 left-6 text-on-primary\">                             <h3 class=\"font-headline-md text-headline-md font-bold mb-1\" id=\"dest-grid-tokyo\">Tokyo, Japan<\/h3>                             <p class=\"font-body-md text-body-md opacity-90\"><span class=\"properties-num\">1,240<\/span> <span data-translate=\"propertiesCount\">Premium Properties<\/span><\/p>                         <\/div>                     <\/div>                     <!-- London, UK -->                     <div onclick=\"navigateToResults('London')\" class=\"relative rounded-xl overflow-hidden group cursor-pointer shadow-sm shadow-primary\/15 h-[240px] md:h-full\">                         <img decoding=\"async\" src=\"https:\/\/lh3.googleusercontent.com\/aida-public\/AB6AXuA4tbmlTC-wfslyJhJfMMSPVDCj67TMpnrRh5hzFXlUShBsu4oPC0bCOyOEq1m4Sbzp_KXa5eTKkailcMHRdC8J8aCmctldV8CRaJFSSbsq5TYznAXOPT7oWUvqOHtkCzspPRC0qFPYoCNuU2_LZSdOuKYtoLqvYMZUs9I6BW0yRMGGGCkJ_QeY4PyH8DkaCFciEmDr-xevTTj28-biMSE_o-9QGqriIPqYtg6fE9rN-pe2PPMIgS7M83setl7lz7Sy76_P601XwHI\" alt=\"London\" class=\"w-full h-full object-cover group-hover:scale-105 transition-transform duration-700\"\/>                         <div class=\"absolute inset-0 bg-gradient-to-t from-black\/85 via-black\/35 to-transparent\"><\/div>                         <div class=\"absolute bottom-6 left-6 text-on-primary\">                             <h3 class=\"font-headline-sm text-headline-sm font-bold mb-1\" id=\"dest-grid-london\">London, UK<\/h3>                             <p class=\"font-body-sm text-body-sm opacity-90\"><span class=\"properties-num\">890<\/span> <span data-translate=\"propertiesCount\">Premium Properties<\/span><\/p>                         <\/div>                     <\/div>                     <!-- Bali, Indonesia -->                     <div onclick=\"navigateToResults('Bali')\" class=\"relative rounded-xl overflow-hidden group cursor-pointer shadow-sm shadow-primary\/15 h-[240px] md:h-full\">                         <img decoding=\"async\" src=\"https:\/\/lh3.googleusercontent.com\/aida-public\/AB6AXuBzwtlob0dBm58kcc3lfahXmOvYpNMhpx57vEbDSbhHPMzS1mXb4555lU_9qDw9c7bToC-Ubit_nzlpHCqAPhrS-SJ8_eo7VOwIq7mKXe7uIlpfBQSIgywJv41d7DBkuLXk3U4lB3g_uavqHq_0yv4CKo3cpIxuK9LhWN6VBNd1eF1O7agzKoksH1CtAyLlkLF44SFW6PolWR32TV4Ug5Yh6ajfbT1HlZORT8Vmngq_-oKGoU7WIA1p-YJM9Iz3j-ZZFYt62JaL89M\" alt=\"Bali\" class=\"w-full h-full object-cover group-hover:scale-105 transition-transform duration-700\"\/>                         <div class=\"absolute inset-0 bg-gradient-to-t from-black\/85 via-black\/35 to-transparent\"><\/div>                         <div class=\"absolute bottom-6 left-6 text-on-primary\">                             <h3 class=\"font-headline-sm text-headline-sm font-bold mb-1\" id=\"dest-grid-bali\">Bali, Indonesia<\/h3>                             <p class=\"font-body-sm text-body-sm opacity-90\"><span class=\"properties-num\">850<\/span> <span data-translate=\"propertiesCount\">Premium Properties<\/span><\/p>                         <\/div>                     <\/div>                 <\/div>             <\/div>         <\/section>                  <!-- Why Choose Us -->         <section class=\"max-w-container-max mx-auto px-margin-mobile md:px-margin-desktop py-20\">             <h2 class=\"font-headline-md text-headline-md text-primary text-center mb-16\" data-translate=\"whyChooseUs\">Why Choose Us<\/h2>             <div class=\"grid grid-cols-1 md:grid-cols-3 gap-margin-desktop text-center\">                 <div class=\"flex flex-col items-center\">                     <div class=\"w-20 h-20 rounded-full bg-primary-fixed flex items-center justify-center text-primary mb-6 shadow-sm\">                         <span class=\"material-symbols-outlined\" style=\"font-size: 38px;\">verified<\/span>                     <\/div>                     <h3 class=\"font-headline-sm text-headline-sm text-primary mb-3\" data-translate=\"verifiedExcellence\">Verified Excellence<\/h3>                     <p class=\"font-body-md text-body-md text-on-surface-variant max-w-sm\" data-translate=\"verifiedExcellenceDesc\">We only feature properties rated 8.0 and above by trusted platforms like Booking.com and Agoda.<\/p>                 <\/div>                 <div class=\"flex flex-col items-center\">                     <div class=\"w-20 h-20 rounded-full bg-secondary-fixed flex items-center justify-center text-secondary mb-6 shadow-sm\">                         <span class=\"material-symbols-outlined\" style=\"font-size: 38px;\">compare_arrows<\/span>                     <\/div>                     <h3 class=\"font-headline-sm text-headline-sm text-primary mb-3\" data-translate=\"unbiasedComparison\">Unbiased Comparison<\/h3>                     <p class=\"font-body-md text-body-md text-on-surface-variant max-w-sm\" data-translate=\"unbiasedComparisonDesc\">Instantly compare rates across top providers to ensure you secure the absolute best value for your stay.<\/p>                 <\/div>                 <div class=\"flex flex-col items-center\">                     <div class=\"w-20 h-20 rounded-full bg-surface-variant flex items-center justify-center text-primary mb-6 shadow-sm\">                         <span class=\"material-symbols-outlined\" style=\"font-size: 38px;\">support_agent<\/span>                     <\/div>                     <h3 class=\"font-headline-sm text-headline-sm text-primary mb-3\" data-translate=\"expertCuration\">Expert Curation<\/h3>                     <p class=\"font-body-md text-body-md text-on-surface-variant max-w-sm\" data-translate=\"expertCurationDesc\">Our team of travel experts hand-selects deals to ensure every listing meets our rigorous luxury standards.<\/p>                 <\/div>             <\/div>         <\/section>              <\/div>          <!-- SEARCH RESULTS VIEW SECTION -->     <div id=\"results-view\" class=\"w-full hidden transition-all duration-300\">                  <!-- Search Modification Bar -->         <div class=\"bg-surface-container-lowest border-b border-surface-variant shadow-sm shadow-primary\/5 py-4 z-40 sticky top-20\">             <div class=\"max-w-container-max mx-auto px-margin-mobile md:px-margin-desktop flex flex-col md:flex-row items-center gap-stack-md justify-between\">                 <div class=\"flex items-center gap-2 text-on-surface font-body-md text-body-md w-full md:w-auto overflow-hidden bg-surface-container px-4 py-2.5 rounded-lg border border-outline-variant\/30\">                     <span class=\"material-symbols-outlined text-outline text-xl\">location_on<\/span>                     <span class=\"font-label-bold text-label-bold truncate\" id=\"mod-dest-display\">Phuket, Thailand<\/span>                     <div class=\"w-px h-4 bg-outline-variant mx-2\"><\/div>                     <span class=\"material-symbols-outlined text-outline text-xl\">calendar_month<\/span>                     <span class=\"whitespace-nowrap\" id=\"mod-dates-display\">Oct 12 &#8211; Oct 19<\/span>                     <div class=\"w-px h-4 bg-outline-variant mx-2\"><\/div>                     <span class=\"material-symbols-outlined text-outline text-xl\">person<\/span>                     <span class=\"whitespace-nowrap\" data-translate=\"guestsText\">2 Guests, 1 Room<\/span>                 <\/div>                 <button onclick=\"navigateTo('home')\" class=\"w-full md:w-auto bg-primary text-on-primary font-label-bold text-label-bold px-6 py-2.5 rounded-lg hover:bg-primary-container active:scale-95 transition-all\" data-translate=\"modifySearch\">                     Modify Search                 <\/button>             <\/div>         <\/div>                  <!-- Main Content Grid -->         <div class=\"max-w-container-max w-full mx-auto px-margin-mobile md:px-margin-desktop py-8 grid grid-cols-1 md:grid-cols-12 gap-gutter\">                          <!-- Sidebar Filters -->             <aside class=\"md:col-span-3 space-y-6\">                                  <!-- Map Snippet Placeholder -->                 <div onclick=\"openMapModal()\" class=\"bg-surface-container-lowest rounded-xl border border-surface-variant overflow-hidden shadow-sm shadow-primary\/5 cursor-pointer hover:shadow-primary\/15 transition-shadow relative group\">                     <div class=\"h-32 bg-surface-container relative\">                         <div class=\"absolute inset-0 opacity-25\" style=\"background-image: radial-gradient(#002155 1.5px, transparent 1.5px); background-size: 12px 12px;\"><\/div>                         <div class=\"absolute inset-0 flex items-center justify-center\">                             <span class=\"bg-primary text-on-primary font-label-bold text-label-bold px-4 py-2 rounded-full shadow-md flex items-center gap-2 group-hover:scale-105 transition-transform\">                                 <span class=\"material-symbols-outlined text-sm\">map<\/span> <span data-translate=\"showOnMap\">Show on Map<\/span>                             <\/span>                         <\/div>                     <\/div>                 <\/div>                                  <!-- Filter Container -->                 <div class=\"bg-surface-container-lowest rounded-xl border border-surface-variant shadow-sm shadow-primary\/5 p-6\">                     <h3 class=\"font-headline-sm text-headline-sm text-on-surface mb-4\" data-translate=\"filterBy\">Filter by:<\/h3>                     <hr class=\"border-surface-variant my-4\"\/>                                          <!-- Price Filter -->                     <div class=\"space-y-3\">                         <h4 class=\"font-label-bold text-label-bold text-on-surface\" data-translate=\"budget\">Your budget (per night)<\/h4>                         <div class=\"pt-2 px-1\">                             <input oninput=\"updatePriceFilter(this.value)\" id=\"price-slider\" type=\"range\" min=\"100\" max=\"1000\" value=\"800\" class=\"w-full h-1.5 bg-surface-variant rounded-lg appearance-none cursor-pointer accent-primary\"\/>                             <div class=\"flex justify-between font-body-sm text-body-sm text-on-surface-variant mt-2 font-semibold\">                                 <span>$100<\/span>                                 <span class=\"text-secondary\" id=\"slider-val-display\">$800+<\/span>                             <\/div>                         <\/div>                     <\/div>                     <hr class=\"border-surface-variant my-4\"\/>                                          <!-- Star Rating Filter -->                     <div class=\"space-y-3\">                         <h4 class=\"font-label-bold text-label-bold text-on-surface\" data-translate=\"propertyRating\">Property Rating<\/h4>                         <div class=\"flex flex-col gap-2\">                             <label class=\"flex items-center gap-3 cursor-pointer group\">                                 <input checked onclick=\"filterHotels()\" id=\"star-5\" class=\"form-checkbox text-primary rounded border-outline-variant focus:ring-primary h-5 w-5 cursor-pointer\" type=\"checkbox\"\/>                                 <span class=\"flex items-center gap-0.5 text-secondary-container\">                                     <span class=\"material-symbols-outlined text-base fill-icon\">star<\/span>                                     <span class=\"material-symbols-outlined text-base fill-icon\">star<\/span>                                     <span class=\"material-symbols-outlined text-base fill-icon\">star<\/span>                                     <span class=\"material-symbols-outlined text-base fill-icon\">star<\/span>                                     <span class=\"material-symbols-outlined text-base fill-icon\">star<\/span>                                 <\/span>                             <\/label>                             <label class=\"flex items-center gap-3 cursor-pointer group\">                                 <input checked onclick=\"filterHotels()\" id=\"star-4\" class=\"form-checkbox text-primary rounded border-outline-variant focus:ring-primary h-5 w-5 cursor-pointer\" type=\"checkbox\"\/>                                 <span class=\"flex items-center gap-0.5 text-secondary-container\">                                     <span class=\"material-symbols-outlined text-base fill-icon\">star<\/span>                                     <span class=\"material-symbols-outlined text-base fill-icon\">star<\/span>                                     <span class=\"material-symbols-outlined text-base fill-icon\">star<\/span>                                     <span class=\"material-symbols-outlined text-base fill-icon\">star<\/span>                                 <\/span>                             <\/label>                         <\/div>                     <\/div>                     <hr class=\"border-surface-variant my-4\"\/>                                          <!-- Amenities Filter -->                     <div class=\"space-y-3\">                         <h4 class=\"font-label-bold text-label-bold text-on-surface\" data-translate=\"popularFilters\">Popular Filters<\/h4>                         <div class=\"flex flex-col gap-2.5\">                             <label class=\"flex items-center gap-3 cursor-pointer\">                                 <input onclick=\"filterHotels()\" id=\"amenity-beachfront\" class=\"form-checkbox text-primary rounded border-outline-variant focus:ring-primary h-5 w-5 cursor-pointer\" type=\"checkbox\"\/>                                 <span class=\"font-body-sm text-body-sm text-on-surface font-medium\" data-translate=\"beachfront\">Beachfront<\/span>                             <\/label>                             <label class=\"flex items-center gap-3 cursor-pointer\">                                 <input onclick=\"filterHotels()\" id=\"amenity-pool\" class=\"form-checkbox text-primary rounded border-outline-variant focus:ring-primary h-5 w-5 cursor-pointer\" type=\"checkbox\"\/>                                 <span class=\"font-body-sm text-body-sm text-on-surface font-medium\" data-translate=\"privatePool\">Private Pool<\/span>                             <\/label>                             <label class=\"flex items-center gap-3 cursor-pointer\">                                 <input onclick=\"filterHotels()\" id=\"amenity-breakfast\" class=\"form-checkbox text-primary rounded border-outline-variant focus:ring-primary h-5 w-5 cursor-pointer\" type=\"checkbox\"\/>                                 <span class=\"font-body-sm text-body-sm text-on-surface font-medium\" data-translate=\"freeBreakfast\">Free Breakfast<\/span>                             <\/label>                             <label class=\"flex items-center gap-3 cursor-pointer\">                                 <input onclick=\"filterHotels()\" id=\"amenity-spa\" class=\"form-checkbox text-primary rounded border-outline-variant focus:ring-primary h-5 w-5 cursor-pointer\" type=\"checkbox\"\/>                                 <span class=\"font-body-sm text-body-sm text-on-surface font-medium\" data-translate=\"spaAccess\">Spa Access<\/span>                             <\/label>                         <\/div>                     <\/div>                 <\/div>             <\/aside>                          <!-- Main Results List -->             <section class=\"col-span-1 md:col-span-9 flex flex-col gap-6\">                 <!-- Header & Sorting -->                 <div class=\"flex flex-col md:flex-row justify-between items-start md:items-center gap-4 mb-2\">                     <div>                         <h1 class=\"font-headline-md text-headline-md text-on-surface\" id=\"results-count-title\">Phuket, Thailand: 3 properties found<\/h1>                     <\/div>                     <div class=\"flex items-center gap-2 border border-surface-variant rounded-lg bg-surface-container-lowest px-3 py-1.5 shadow-sm shadow-primary\/5\">                         <label class=\"font-label-bold text-label-bold text-on-surface-variant\" for=\"sort\" data-translate=\"sortBy\">Sort by:<\/label>                         <select onchange=\"sortHotels(this.value)\" class=\"bg-transparent border-none font-body-sm text-body-sm text-on-surface focus:ring-0 py-1 pl-1 pr-8 cursor-pointer\" id=\"sort\">                             <option value=\"picks\" data-translate-opt=\"topPicks\">Top Picks for You<\/option>                             <option value=\"price\" data-translate-opt=\"priceLowest\">Price (lowest first)<\/option>                             <option value=\"stars\" data-translate-opt=\"ratingHighest\">Star rating (highest first)<\/option>                         <\/select>                     <\/div>                 <\/div>                                  <!-- Dynamic Hotel Cards Container -->                 <div id=\"hotel-list-container\" class=\"flex flex-col gap-6\">                     <!-- Loaded dynamically via JS -->                 <\/div>             <\/section>         <\/div>              <\/div>          <!-- COMPARISON & BOOKING MODAL -->     <div id=\"affiliate-modal\" class=\"fixed inset-0 z-50 flex items-center justify-center hidden\">         <div onclick=\"closeAffiliateModal()\" class=\"absolute inset-0 bg-black\/60 backdrop-blur-sm\"><\/div>         <div class=\"relative bg-surface rounded-2xl max-w-lg w-full p-6 shadow-2xl border border-outline-variant\/40 transform transition-all duration-300 scale-100 flex flex-col gap-6 mx-4\">             <button onclick=\"closeAffiliateModal()\" class=\"absolute top-4 right-4 text-on-surface-variant hover:text-primary\">                 <span class=\"material-symbols-outlined\">close<\/span>             <\/button>                          <div class=\"flex items-center gap-3\">                 <span class=\"material-symbols-outlined fill-icon text-secondary\" style=\"font-size: 32px;\">travel_explore<\/span>                 <div>                     <h3 class=\"font-headline-sm text-headline-sm text-primary\" id=\"modal-hotel-name\">Compare Best Prices<\/h3>                     <p class=\"font-body-sm text-body-sm text-on-surface-variant\" id=\"modal-hotel-loc\">Phuket, Thailand<\/p>                 <\/div>             <\/div>                          <div class=\"space-y-4\">                 <h4 class=\"font-label-bold text-label-bold text-on-surface border-b border-surface-variant pb-2\" data-translate=\"bestDealsComparison\">Best Deal Comparison:<\/h4>                 <div id=\"modal-deals-list\" class=\"flex flex-col gap-3\">                     <!-- Populated dynamically -->                 <\/div>             <\/div>         <\/div>     <\/div>          <!-- MAP MODAL -->     <div id=\"map-modal\" class=\"fixed inset-0 z-50 flex items-center justify-center hidden\">         <div onclick=\"closeMapModal()\" class=\"absolute inset-0 bg-black\/60 backdrop-blur-sm\"><\/div>         <div class=\"relative bg-surface rounded-2xl max-w-4xl w-full p-6 shadow-2xl border border-outline-variant\/40 mx-4 h-[600px] flex flex-col\">             <button onclick=\"closeMapModal()\" class=\"absolute top-4 right-4 text-on-surface-variant hover:text-primary z-10 bg-white rounded-full p-1 shadow\">                 <span class=\"material-symbols-outlined\">close<\/span>             <\/button>             <div class=\"flex-grow rounded-xl overflow-hidden bg-surface-container relative\">                 <!-- Grid Map Mockup with pins -->                 <div class=\"absolute inset-0\" style=\"background-image: radial-gradient(#002155 1.5px, transparent 1.5px); background-size: 15px 15px; opacity: 0.15;\"><\/div>                 <div class=\"absolute inset-0 flex items-center justify-center font-bold text-primary flex-col gap-2\">                     <span class=\"material-symbols-outlined text-4xl text-secondary animate-bounce\">location_on<\/span>                     <span class=\"font-headline-md text-headline-md\" id=\"map-title\">Interactive Destination Map<\/span>                     <span class=\"font-body-md text-body-md text-on-surface-variant\">Displaying pins for our premium vetted accommodations<\/span>                 <\/div>                                  <!-- Pins -->                 <div class=\"absolute top-1\/3 left-1\/4 bg-white px-3 py-1.5 rounded-full shadow-lg border border-secondary flex items-center gap-1 cursor-pointer hover:scale-105 transition-transform\">                     <span class=\"material-symbols-outlined text-sm text-secondary\">star<\/span>                     <span class=\"text-xs font-bold\" id=\"map-pin-1\">Nai Harn<\/span>                 <\/div>                 <div class=\"absolute top-1\/2 left-1\/2 bg-white px-3 py-1.5 rounded-full shadow-lg border border-secondary flex items-center gap-1 cursor-pointer hover:scale-105 transition-transform\">                     <span class=\"material-symbols-outlined text-sm text-secondary\">star<\/span>                     <span class=\"text-xs font-bold\" id=\"map-pin-2\">Keemala<\/span>                 <\/div>                 <div class=\"absolute top-2\/3 left-1\/3 bg-white px-3 py-1.5 rounded-full shadow-lg border border-secondary flex items-center gap-1 cursor-pointer hover:scale-105 transition-transform\">                     <span class=\"material-symbols-outlined text-sm text-secondary\">star<\/span>                     <span class=\"text-xs font-bold\" id=\"map-pin-3\">Trisara<\/span>                 <\/div>             <\/div>         <\/div>     <\/div>      <\/main>  <!-- Footer Component --> <footer class=\"bg-surface-container-lowest full-width border-t border-surface-variant py-10 mt-16\">     <div class=\"max-w-container-max mx-auto px-margin-mobile md:px-margin-desktop flex flex-col md:flex-row justify-between items-start gap-gutter\">         <div class=\"flex flex-col gap-stack-sm\">             <div class=\"font-headline-sm text-headline-sm font-bold text-primary flex items-center gap-base\">                 <span class=\"material-symbols-outlined fill-icon text-secondary\" style=\"font-size: 24px;\">travel_explore<\/span>                 VoyageExpert             <\/div>             <p class=\"text-on-surface-variant font-body-sm text-body-sm max-w-md mt-2\" data-translate=\"footerText\">                 \u00a9 2026 VoyageExpert. All rights reserved. Affiliate Disclosure: We may earn a commission for purchases made through our links.             <\/p>         <\/div>         <div class=\"flex flex-wrap gap-gutter md:gap-margin-desktop\">             <div class=\"flex flex-col gap-2\">                 <h4 class=\"font-label-bold text-label-bold text-primary mb-1\" data-translate=\"company\">Company<\/h4>                 <a class=\"text-outline font-label-sm text-label-sm hover:text-secondary cursor-pointer transition-all\" data-translate=\"aboutUs\">About Us<\/a>                 <a class=\"text-outline font-label-sm text-label-sm hover:text-secondary cursor-pointer transition-all\" data-translate=\"partners\">Partners<\/a>             <\/div>             <div class=\"flex flex-col gap-2\">                 <h4 class=\"font-label-bold text-label-bold text-primary mb-1\" data-translate=\"support\">Support<\/h4>                 <a class=\"text-outline font-label-sm text-label-sm hover:text-secondary cursor-pointer transition-all\" data-translate=\"contact\">Contact<\/a>                 <a class=\"text-outline font-label-sm text-label-sm hover:text-secondary cursor-pointer transition-all\" data-translate=\"privacyPolicy\">Privacy Policy<\/a>                 <a class=\"text-outline font-label-sm text-label-sm hover:text-secondary cursor-pointer transition-all\" data-translate=\"termsOfService\">Terms of Service<\/a>             <\/div>         <\/div>     <\/div> <\/footer>  <script>     \/\/ State variables     let currentLanguage = 'en';     let activeDestination = 'Tokyo';     let maxPriceFilter = 1500;          \/\/ Dataset definition matching mockup and expanding to have 3 hotels per destination     const hotelsDataset = [       \/\/ Kyoto (mockup Top Deal 1)       {         id: \"kyoto-1\",         destination: \"Kyoto\",         destinationTH: \"\u0e40\u0e01\u0e35\u0e22\u0e27\u0e42\u0e15\",         name: \"The Ritz-Carlton, Kyoto\",         nameTH: \"\u0e40\u0e14\u0e2d\u0e30 \u0e23\u0e34\u0e17\u0e0b\u0e4c-\u0e04\u0e32\u0e23\u0e4c\u0e25\u0e15\u0e31\u0e19 \u0e40\u0e01\u0e35\u0e22\u0e27\u0e42\u0e15\",         location: \"Kyoto, Japan\",         locationTH: \"\u0e40\u0e01\u0e35\u0e22\u0e27\u0e42\u0e15, \u0e1b\u0e23\u0e30\u0e40\u0e17\u0e28\u0e0d\u0e35\u0e48\u0e1b\u0e38\u0e48\u0e19\",         stars: 5,         rating: 9.4,         ratingTextEN: \"Superb\",         ratingTextTH: \"\u0e22\u0e2d\u0e14\u0e40\u0e22\u0e35\u0e48\u0e22\u0e21\u0e17\u0e35\u0e48\u0e2a\u0e38\u0e14\",         reviewsCount: 420,         price: 680,         originalPrice: 850,         image: \"https:\/\/lh3.googleusercontent.com\/aida-public\/AB6AXuC34mFA7IlPBNC4nK6tc2tcX6HwD9cCiq3mLlOcmMbwW6WBzXUopGGeWvQnYXk8AX_gKFMM9iw6oq099PXZVjoiwlDGS7fDu8ahWRosF_1mYpGZKvVuUDVod7R4_hT9XTELOu5ufcSBBgujFcGUMn2YWJlt7-HZGQSi_zOoUbwC4xv7sg5fKSaIuo5unURBuAShJMPTTdzOxfmtX3P896q-ZJwLZRMsZRpLek3AZYcA-Sz3PSwiyvv86SjNxCNYls5F84U-81KN1T0\",         preferredPlatform: \"Booking.com\",         tags: [\"Spa Access\", \"Free Breakfast\"],         tagsTH: [\"\u0e1a\u0e23\u0e34\u0e01\u0e32\u0e23\u0e2a\u0e1b\u0e32\", \"\u0e2d\u0e32\u0e2b\u0e32\u0e23\u0e40\u0e0a\u0e49\u0e32\u0e1f\u0e23\u0e35\"],         affiliates: [           { name: \"Booking.com\", price: 680, url: \"https:\/\/www.booking.com\/hotel\/jp\/the-ritz-carlton-kyoto.html\" },           { name: \"Agoda\", price: 690, url: \"https:\/\/www.agoda.com\/the-ritz-carlton-kyoto\/hotel\/kyoto-jp.html\" },           { name: \"Trip.com\", price: 705, url: \"https:\/\/www.trip.com\/hotels\/kyoto-hotel-detail-12345\" },           { name: \"Airbnb\", price: 750, url: \"https:\/\/www.airbnb.com\/rooms\/kyoto-ritz\" }         ]       },       {         id: \"kyoto-2\",         destination: \"Kyoto\",         destinationTH: \"\u0e40\u0e01\u0e35\u0e22\u0e27\u0e42\u0e15\",         name: \"Aman Kyoto\",         nameTH: \"\u0e2d\u0e21\u0e31\u0e19 \u0e40\u0e01\u0e35\u0e22\u0e27\u0e42\u0e15\",         location: \"Kyoto, Japan\",         locationTH: \"\u0e40\u0e01\u0e35\u0e22\u0e27\u0e42\u0e15, \u0e1b\u0e23\u0e30\u0e40\u0e17\u0e28\u0e0d\u0e35\u0e48\u0e1b\u0e38\u0e48\u0e19\",         stars: 5,         rating: 9.7,         ratingTextEN: \"Exceptional\",         ratingTextTH: \"\u0e14\u0e35\u0e40\u0e25\u0e34\u0e28\",         reviewsCount: 150,         price: 950,         originalPrice: 1200,         image: \"https:\/\/lh3.googleusercontent.com\/aida-public\/AB6AXuAM8F92FzYD9Kpw8voCepd5lQ0nxNcMhK1SqSMrjBCJd6TnK7HXGcc5ij9U8CjUzEV0uvu458EEI-vgjrV5xm4Jtx_eGaye_I4-YQtCT-pJYgD_AVQobLE8D2C0dzpZvBFtC0FkB4SVVEF1i24MziKlnziAjnXYIhio3Q_uu--1V_CGsUZjCvi9kY3vtWQ1OGKInUKn9SefSH2D-mUCX4hqxrcDI7GO8deyZrnxXor6Ewl0GXBTREzIwZ9LyKLoXXG-v6svb0algfg\",         preferredPlatform: \"Agoda\",         tags: [\"Private Pool\", \"Spa Access\"],         tagsTH: [\"\u0e2a\u0e23\u0e30\u0e27\u0e48\u0e32\u0e22\u0e19\u0e49\u0e33\u0e2a\u0e48\u0e27\u0e19\u0e15\u0e31\u0e27\", \"\u0e1a\u0e23\u0e34\u0e01\u0e32\u0e23\u0e2a\u0e1b\u0e32\"],         affiliates: [           { name: \"Agoda\", price: 950, url: \"https:\/\/www.agoda.com\/aman-kyoto\/hotel\/kyoto-jp.html\" },           { name: \"Booking.com\", price: 960, url: \"https:\/\/www.booking.com\/hotel\/jp\/aman-kyoto.html\" },           { name: \"Trip.com\", price: 980, url: \"https:\/\/www.trip.com\/hotels\/kyoto-hotel-detail-aman\" },           { name: \"Airbnb\", price: 1050, url: \"https:\/\/www.airbnb.com\/rooms\/aman-kyoto\" }         ]       },       {         id: \"kyoto-3\",         destination: \"Kyoto\",         destinationTH: \"\u0e40\u0e01\u0e35\u0e22\u0e27\u0e42\u0e15\",         name: \"Hoshinoya Kyoto\",         nameTH: \"\u0e42\u0e2e\u0e0a\u0e34\u0e42\u0e19\u0e22\u0e30 \u0e40\u0e01\u0e35\u0e22\u0e27\u0e42\u0e15\",         location: \"Kyoto, Japan\",         locationTH: \"\u0e40\u0e01\u0e35\u0e22\u0e27\u0e42\u0e15, \u0e1b\u0e23\u0e30\u0e40\u0e17\u0e28\u0e0d\u0e35\u0e48\u0e1b\u0e38\u0e48\u0e19\",         stars: 5,         rating: 9.3,         ratingTextEN: \"Superb\",         ratingTextTH: \"\u0e22\u0e2d\u0e14\u0e40\u0e22\u0e35\u0e48\u0e22\u0e21\u0e17\u0e35\u0e48\u0e2a\u0e38\u0e14\",         reviewsCount: 280,         price: 580,         originalPrice: 720,         image: \"https:\/\/lh3.googleusercontent.com\/aida-public\/AB6AXuBtF5k2yg-VwFyMe3CyDU3CScr_MWJE90j2Xc7JmJErHmfvX1MO6tuIFKBJuBMjglJNjBQyCILypyRQMwI4Nu8WRnbOhZvIXQzz7h0EfU7G9dvZLvEWPSW0KFyQvzch1R4g9wwtBood8N7Eva5WBKpuWcUZFQz5BAHkKcSihW2v0VFVfxfDJcPZX9MWgsiJcFyU7LKTGVHqBSeCGMrnPrTs0aRjdjoQEoGStqKFQr8obfQOPpvuyj2ZkCuKi-URBFM-EQTEqecEWCg\",         preferredPlatform: \"Booking.com\",         tags: [\"Free Breakfast\"],         tagsTH: [\"\u0e2d\u0e32\u0e2b\u0e32\u0e23\u0e40\u0e0a\u0e49\u0e32\u0e1f\u0e23\u0e35\"],         affiliates: [           { name: \"Booking.com\", price: 580, url: \"https:\/\/www.booking.com\/hotel\/jp\/hoshinoya-kyoto.html\" },           { name: \"Agoda\", price: 590, url: \"https:\/\/www.agoda.com\/hoshinoya-kyoto\/hotel\/kyoto-jp.html\" },           { name: \"Trip.com\", price: 605, url: \"https:\/\/www.trip.com\/hotels\/kyoto-hotel-detail-hoshinoya\" },           { name: \"Airbnb\", price: 650, url: \"https:\/\/www.airbnb.com\/rooms\/hoshinoya-kyoto\" }         ]       },              \/\/ London (mockup Top Deal 2)       {         id: \"london-1\",         destination: \"London\",         destinationTH: \"\u0e25\u0e2d\u0e19\u0e14\u0e2d\u0e19\",         name: \"The Savoy\",         nameTH: \"\u0e40\u0e14\u0e2d\u0e30 \u0e0b\u0e32\u0e27\u0e2d\u0e22\",         location: \"London, UK\",         locationTH: \"\u0e25\u0e2d\u0e19\u0e14\u0e2d\u0e19, \u0e2a\u0e2b\u0e23\u0e32\u0e0a\u0e2d\u0e32\u0e13\u0e32\u0e08\u0e31\u0e01\u0e23\",         stars: 5,         rating: 9.2,         ratingTextEN: \"Exceptional\",         ratingTextTH: \"\u0e14\u0e35\u0e40\u0e25\u0e34\u0e28\",         reviewsCount: 815,         price: 950,         originalPrice: 1200,         image: \"https:\/\/lh3.googleusercontent.com\/aida-public\/AB6AXuAM8F92FzYD9Kpw8voCepd5lQ0nxNcMhK1SqSMrjBCJd6TnK7HXGcc5ij9U8CjUzEV0uvu458EEI-vgjrV5xm4Jtx_eGaye_I4-YQtCT-pJYgD_AVQobLE8D2C0dzpZvBFtC0FkB4SVVEF1i24MziKlnziAjnXYIhio3Q_uu--1V_CGsUZjCvi9kY3vtWQ1OGKInUKn9SefSH2D-mUCX4hqxrcDI7GO8deyZrnxXor6Ewl0GXBTREzIwZ9LyKLoXXG-v6svb0algfg\",         preferredPlatform: \"Agoda\",         tags: [\"Spa Access\", \"Free Breakfast\"],         tagsTH: [\"\u0e1a\u0e23\u0e34\u0e01\u0e32\u0e23\u0e2a\u0e1b\u0e32\", \"\u0e2d\u0e32\u0e2b\u0e32\u0e23\u0e40\u0e0a\u0e49\u0e32\u0e1f\u0e23\u0e35\"],         affiliates: [           { name: \"Agoda\", price: 950, url: \"https:\/\/www.agoda.com\/the-savoy\/hotel\/london-gb.html\" },           { name: \"Booking.com\", price: 960, url: \"https:\/\/www.booking.com\/hotel\/gb\/the-savoy.html\" },           { name: \"Trip.com\", price: 980, url: \"https:\/\/www.trip.com\/hotels\/london-hotel-detail-savoy\" },           { name: \"Airbnb\", price: 1050, url: \"https:\/\/www.airbnb.com\/rooms\/savoy-suite\" }         ]       },       {         id: \"london-2\",         destination: \"London\",         destinationTH: \"\u0e25\u0e2d\u0e19\u0e14\u0e2d\u0e19\",         name: \"The Ritz London\",         nameTH: \"\u0e40\u0e14\u0e2d\u0e30 \u0e23\u0e34\u0e17\u0e0b\u0e4c \u0e25\u0e2d\u0e19\u0e14\u0e2d\u0e19\",         location: \"London, UK\",         locationTH: \"\u0e25\u0e2d\u0e19\u0e14\u0e2d\u0e19, \u0e2a\u0e2b\u0e23\u0e32\u0e0a\u0e2d\u0e32\u0e13\u0e32\u0e08\u0e31\u0e01\u0e23\",         stars: 5,         rating: 9.5,         ratingTextEN: \"Superb\",         ratingTextTH: \"\u0e22\u0e2d\u0e14\u0e40\u0e22\u0e35\u0e48\u0e22\u0e21\u0e17\u0e35\u0e48\u0e2a\u0e38\u0e14\",         reviewsCount: 640,         price: 820,         originalPrice: 990,         image: \"https:\/\/lh3.googleusercontent.com\/aida-public\/AB6AXuA4tbmlTC-wfslyJhJfMMSPVDCj67TMpnrRh5hzFXlUShBsu4oPC0bCOyOEq1m4Sbzp_KXa5eTKkailcMHRdC8J8aCmctldV8CRaJFSSbsq5TYznAXOPT7oWUvqOHtkCzspPRC0qFPYoCNuU2_LZSdOuKYtoLqvYMZUs9I6BW0yRMGGGCkJ_QeY4PyH8DkaCFciEmDr-xevTTj28-biMSE_o-9QGqriIPqYtg6fE9rN-pe2PPMIgS7M83setl7lz7Sy76_P601XwHI\",         preferredPlatform: \"Booking.com\",         tags: [\"Free Breakfast\"],         tagsTH: [\"\u0e2d\u0e32\u0e2b\u0e32\u0e23\u0e40\u0e0a\u0e49\u0e32\u0e1f\u0e23\u0e35\"],         affiliates: [           { name: \"Booking.com\", price: 820, url: \"https:\/\/www.booking.com\/hotel\/gb\/the-ritz-london.html\" },           { name: \"Agoda\", price: 830, url: \"https:\/\/www.agoda.com\/the-ritz-london-hotel\/hotel\/london-gb.html\" },           { name: \"Trip.com\", price: 845, url: \"https:\/\/www.trip.com\/hotels\/london-hotel-detail-ritz\" },           { name: \"Airbnb\", price: 900, url: \"https:\/\/www.airbnb.com\/rooms\/ritz-london\" }         ]       },       {         id: \"london-3\",         destination: \"London\",         destinationTH: \"\u0e25\u0e2d\u0e19\u0e14\u0e2d\u0e19\",         name: \"Shangri-La The Shard, London\",         nameTH: \"\u0e41\u0e0a\u0e07\u0e01\u0e23\u0e35-\u0e25\u0e32 \u0e40\u0e14\u0e2d\u0e30 \u0e0a\u0e32\u0e23\u0e4c\u0e14 \u0e25\u0e2d\u0e19\u0e14\u0e2d\u0e19\",         location: \"London, UK\",         locationTH: \"\u0e25\u0e2d\u0e19\u0e14\u0e2d\u0e19, \u0e2a\u0e2b\u0e23\u0e32\u0e0a\u0e2d\u0e32\u0e13\u0e32\u0e08\u0e31\u0e01\u0e23\",         stars: 5,         rating: 9.4,         ratingTextEN: \"Superb\",         ratingTextTH: \"\u0e22\u0e2d\u0e14\u0e40\u0e22\u0e35\u0e48\u0e22\u0e21\u0e17\u0e35\u0e48\u0e2a\u0e38\u0e14\",         reviewsCount: 1100,         price: 720,         originalPrice: 880,         image: \"https:\/\/lh3.googleusercontent.com\/aida-public\/AB6AXuBtF5k2yg-VwFyMe3CyDU3CScr_MWJE90j2Xc7JmJErHmfvX1MO6tuIFKBJuBMjglJNjBQyCILypyRQMwI4Nu8WRnbOhZvIXQzz7h0EfU7G9dvZLvEWPSW0KFyQvzch1R4g9wwtBood8N7Eva5WBKpuWcUZFQz5BAHkKcSihW2v0VFVfxfDJcPZX9MWgsiJcFyU7LKTGVHqBSeCGMrnPrTs0aRjdjoQEoGStqKFQr8obfQOPpvuyj2ZkCuKi-URBFM-EQTEqecEWCg\",         preferredPlatform: \"Trip.com\",         tags: [\"Spa Access\", \"Private Pool\"],         tagsTH: [\"\u0e1a\u0e23\u0e34\u0e01\u0e32\u0e23\u0e2a\u0e1b\u0e32\", \"\u0e2a\u0e23\u0e30\u0e27\u0e48\u0e32\u0e22\u0e19\u0e49\u0e33\u0e2a\u0e48\u0e27\u0e19\u0e15\u0e31\u0e27\"],         affiliates: [           { name: \"Trip.com\", price: 720, url: \"https:\/\/www.trip.com\/hotels\/london-hotel-detail-shangrila\" },           { name: \"Booking.com\", price: 730, url: \"https:\/\/www.booking.com\/hotel\/gb\/shangri-la-the-shard-london.html\" },           { name: \"Agoda\", price: 725, url: \"https:\/\/www.agoda.com\/shangri-la-hotel-at-the-shard-london\/hotel\/london-gb.html\" },           { name: \"Airbnb\", price: 800, url: \"https:\/\/www.airbnb.com\/rooms\/shangri-la-shard\" }         ]       },              \/\/ Bali (mockup Top Deal 3)       {         id: \"bali-1\",         destination: \"Bali\",         destinationTH: \"\u0e1a\u0e32\u0e2b\u0e25\u0e35\",         name: \"Amandari Resort\",         nameTH: \"\u0e2d\u0e32\u0e21\u0e31\u0e19\u0e14\u0e32\u0e23\u0e35 \u0e23\u0e35\u0e2a\u0e2d\u0e23\u0e4c\u0e17\",         location: \"Bali, Indonesia\",         locationTH: \"\u0e1a\u0e32\u0e2b\u0e25\u0e35, \u0e1b\u0e23\u0e30\u0e40\u0e17\u0e28\u0e2d\u0e34\u0e19\u0e42\u0e14\u0e19\u0e35\u0e40\u0e0b\u0e35\u0e22\",         stars: 5,         rating: 9.8,         ratingTextEN: \"Exceptional\",         ratingTextTH: \"\u0e14\u0e35\u0e40\u0e25\u0e34\u0e28\",         reviewsCount: 310,         price: 890,         originalPrice: 1100,         image: \"https:\/\/lh3.googleusercontent.com\/aida-public\/AB6AXuARPJAOPToaNdJK3-Mt4cSfojWEv6oaP3DD-McLDwoc8qkOri8rGWZYL2Jx4KuFISs_KAkJJ5V97tTdELSgE43nQ4xn8Cf4AZjkDU2HoMhkIGSsyuf_WmbzJJMBUnVNXiUYEvzeNYtYrNvrftoo_oQHziMmdog6FChV6T3WRmwldROvqgF9d8djjIgDwbRh5hAgyQFQhABPrCSD6eR3sv0vMCnJWWohHhYbiQ-jqCETUhRkrvLVaS-_JVGVnGVwKkmlPEHCpFwHHnQ\",         preferredPlatform: \"Booking.com\",         tags: [\"Private Pool\", \"Free Breakfast\"],         tagsTH: [\"\u0e2a\u0e23\u0e30\u0e27\u0e48\u0e32\u0e22\u0e19\u0e49\u0e33\u0e2a\u0e48\u0e27\u0e19\u0e15\u0e31\u0e27\", \"\u0e2d\u0e32\u0e2b\u0e32\u0e23\u0e40\u0e0a\u0e49\u0e32\u0e1f\u0e23\u0e35\"],         affiliates: [           { name: \"Booking.com\", price: 890, url: \"https:\/\/www.booking.com\/hotel\/id\/amandari.html\" },           { name: \"Agoda\", price: 895, url: \"https:\/\/www.agoda.com\/amandari-resort\/hotel\/bali-id.html\" },           { name: \"Trip.com\", price: 910, url: \"https:\/\/www.trip.com\/hotels\/bali-hotel-detail-amandari\" },           { name: \"Airbnb\", price: 950, url: \"https:\/\/www.airbnb.com\/rooms\/amandari-villa\" }         ]       },       {         id: \"bali-2\",         destination: \"Bali\",         destinationTH: \"\u0e1a\u0e32\u0e2b\u0e25\u0e35\",         name: \"Four Seasons Resort Bali at Sayan\",         nameTH: \"\u0e42\u0e1f\u0e23\u0e4c\u0e0b\u0e35\u0e0b\u0e31\u0e48\u0e19\u0e2a\u0e4c \u0e23\u0e35\u0e2a\u0e2d\u0e23\u0e4c\u0e17 \u0e1a\u0e32\u0e2b\u0e25\u0e35 \u0e41\u0e2d\u0e17 \u0e0b\u0e32\u0e22\u0e31\u0e19\",         location: \"Bali, Indonesia\",         locationTH: \"\u0e1a\u0e32\u0e2b\u0e25\u0e35, \u0e1b\u0e23\u0e30\u0e40\u0e17\u0e28\u0e2d\u0e34\u0e19\u0e42\u0e14\u0e19\u0e35\u0e40\u0e0b\u0e35\u0e22\",         stars: 5,         rating: 9.9,         ratingTextEN: \"Exceptional\",         ratingTextTH: \"\u0e14\u0e35\u0e40\u0e25\u0e34\u0e28\",         reviewsCount: 420,         price: 980,         originalPrice: 1250,         image: \"https:\/\/lh3.googleusercontent.com\/aida-public\/AB6AXuBzwtlob0dBm58kcc3lfahXmOvYpNMhpx57vEbDSbhHPMzS1mXb4555lU_9qDw9c7bToC-Ubit_nzlpHCqAPhrS-SJ8_eo7VOwIq7mKXe7uIlpfBQSIgywJv41d7DBkuLXk3U4lB3g_uavqHq_0yv4CKo3cpIxuK9LhWN6VBNd1eF1O7agzKoksH1CtAyLlkLF44SFW6PolWR32TV4Ug5Yh6ajfbT1HlZORT8Vmngq_-oKGoU7WIA1p-YJM9Iz3j-ZZFYt62JaL89M\",         preferredPlatform: \"Agoda\",         tags: [\"Private Pool\", \"Spa Access\", \"Free Breakfast\"],         tagsTH: [\"\u0e2a\u0e23\u0e30\u0e27\u0e48\u0e32\u0e22\u0e19\u0e49\u0e33\u0e2a\u0e48\u0e27\u0e19\u0e15\u0e31\u0e27\", \"\u0e1a\u0e23\u0e34\u0e01\u0e32\u0e23\u0e2a\u0e1b\u0e32\", \"\u0e2d\u0e32\u0e2b\u0e32\u0e23\u0e40\u0e0a\u0e49\u0e32\u0e1f\u0e23\u0e35\"],         affiliates: [           { name: \"Agoda\", price: 980, url: \"https:\/\/www.agoda.com\/four-seasons-resort-bali-at-sayan\/hotel\/bali-id.html\" },           { name: \"Booking.com\", price: 990, url: \"https:\/\/www.booking.com\/hotel\/id\/four-seasons-resort-bali-at-sayan.html\" },           { name: \"Trip.com\", price: 1010, url: \"https:\/\/www.trip.com\/hotels\/bali-hotel-detail-fourseasons\" },           { name: \"Airbnb\", price: 1100, url: \"https:\/\/www.airbnb.com\/rooms\/fourseasons-sayan\" }         ]       },       {         id: \"bali-3\",         destination: \"Bali\",         destinationTH: \"\u0e1a\u0e32\u0e2b\u0e25\u0e35\",         name: \"Mulia Villas, Nusa Dua\",         nameTH: \"\u0e21\u0e39\u0e40\u0e25\u0e35\u0e22 \u0e27\u0e34\u0e25\u0e25\u0e32 \u0e19\u0e39\u0e0b\u0e32\u0e14\u0e39\u0e2d\u0e32\",         location: \"Bali, Indonesia\",         locationTH: \"\u0e1a\u0e32\u0e2b\u0e25\u0e35, \u0e1b\u0e23\u0e30\u0e40\u0e17\u0e28\u0e2d\u0e34\u0e19\u0e42\u0e14\u0e19\u0e35\u0e40\u0e0b\u0e35\u0e22\",         stars: 5,         rating: 9.6,         ratingTextEN: \"Superb\",         ratingTextTH: \"\u0e22\u0e2d\u0e14\u0e40\u0e22\u0e35\u0e48\u0e22\u0e21\u0e17\u0e35\u0e48\u0e2a\u0e38\u0e14\",         reviewsCount: 580,         price: 650,         originalPrice: 790,         image: \"https:\/\/lh3.googleusercontent.com\/aida-public\/AB6AXuC34mFA7IlPBNC4nK6tc2tcX6HwD9cCiq3mLlOcmMbwW6WBzXUopGGeWvQnYXk8AX_gKFMM9iw6oq099PXZVjoiwlDGS7fDu8ahWRosF_1mYpGZKvVuUDVod7R4_hT9XTELOu5ufcSBBgujFcGUMn2YWJlt7-HZGQSi_zOoUbwC4xv7sg5fKSaIuo5unURBuAShJMPTTdzOxfmtX3P896q-ZJwLZRMsZRpLek3AZYcA-Sz3PSwiyvv86SjNxCNYls5F84U-81KN1T0\",         preferredPlatform: \"Booking.com\",         tags: [\"Beachfront\", \"Private Pool\"],         tagsTH: [\"\u0e15\u0e34\u0e14\u0e0a\u0e32\u0e22\u0e2b\u0e32\u0e14\", \"\u0e2a\u0e23\u0e30\u0e27\u0e48\u0e32\u0e22\u0e19\u0e49\u0e33\u0e2a\u0e48\u0e27\u0e19\u0e15\u0e31\u0e27\"],         affiliates: [           { name: \"Booking.com\", price: 650, url: \"https:\/\/www.booking.com\/hotel\/id\/mulia-villas.html\" },           { name: \"Agoda\", price: 655, url: \"https:\/\/www.agoda.com\/mulia-villas-nusa-dua\/hotel\/bali-id.html\" },           { name: \"Trip.com\", price: 670, url: \"https:\/\/www.trip.com\/hotels\/bali-hotel-detail-mulia\" },           { name: \"Airbnb\", price: 720, url: \"https:\/\/www.airbnb.com\/rooms\/mulia-villas\" }         ]       },              \/\/ Tokyo (mockup bento large)       {         id: \"tokyo-1\",         destination: \"Tokyo\",         destinationTH: \"\u0e42\u0e15\u0e40\u0e01\u0e35\u0e22\u0e27\",         name: \"Aman Tokyo\",         nameTH: \"\u0e2d\u0e21\u0e31\u0e19 \u0e42\u0e15\u0e40\u0e01\u0e35\u0e22\u0e27\",         location: \"Tokyo, Japan\",         locationTH: \"\u0e42\u0e15\u0e40\u0e01\u0e35\u0e22\u0e27, \u0e1b\u0e23\u0e30\u0e40\u0e17\u0e28\u0e0d\u0e35\u0e48\u0e1b\u0e38\u0e48\u0e19\",         stars: 5,         rating: 9.8,         ratingTextEN: \"Exceptional\",         ratingTextTH: \"\u0e14\u0e35\u0e40\u0e25\u0e34\u0e28\",         reviewsCount: 320,         price: 1100,         originalPrice: 1400,         image: \"https:\/\/lh3.googleusercontent.com\/aida-public\/AB6AXuA9v76RQahCUYBzB28wHPgZ55KLUboKn3jVI_ivKhUES8k22NV78o9rD2ZYg8LzRgNyyleXug5O-pt5uDHS6eVKYc4bd4_VP8z1ouELRqShQDGAQLZ8BW327skESkMfvcF51MYbPayVfgdaBVdI2h0IHStfN4-frBSzTsdpeS05mADPgxo8c2vGEAKw4gUc4ctcpR5wbdtNtqdJD3lzS3GD2sAMo100yyy4YMRGq10hc1-HkcDPpXEJqGBt9-wHzqXrnGdjUg1dgVU\",         preferredPlatform: \"Booking.com\",         tags: [\"Spa Access\", \"Free Breakfast\"],         tagsTH: [\"\u0e1a\u0e23\u0e34\u0e01\u0e32\u0e23\u0e2a\u0e1b\u0e32\", \"\u0e2d\u0e32\u0e2b\u0e32\u0e23\u0e40\u0e0a\u0e49\u0e32\u0e1f\u0e23\u0e35\"],         affiliates: [           { name: \"Booking.com\", price: 1100, url: \"https:\/\/www.booking.com\/hotel\/jp\/aman-tokyo.html\" },           { name: \"Agoda\", price: 1120, url: \"https:\/\/www.agoda.com\/aman-tokyo\/hotel\/tokyo-jp.html\" },           { name: \"Trip.com\", price: 1150, url: \"https:\/\/www.trip.com\/hotels\/tokyo-hotel-detail-aman\" },           { name: \"Airbnb\", price: 1300, url: \"https:\/\/www.airbnb.com\/rooms\/aman-tokyo\" }         ]       },       {         id: \"tokyo-2\",         destination: \"Tokyo\",         destinationTH: \"\u0e42\u0e15\u0e40\u0e01\u0e35\u0e22\u0e27\",         name: \"Park Hyatt Tokyo\",         nameTH: \"\u0e1e\u0e32\u0e23\u0e4c\u0e04 \u0e44\u0e2e\u0e41\u0e2d\u0e17 \u0e42\u0e15\u0e40\u0e01\u0e35\u0e22\u0e27\",         location: \"Tokyo, Japan\",         locationTH: \"\u0e42\u0e15\u0e40\u0e01\u0e35\u0e22\u0e27, \u0e1b\u0e23\u0e30\u0e40\u0e17\u0e28\u0e0d\u0e35\u0e48\u0e1b\u0e38\u0e48\u0e19\",         stars: 5,         rating: 9.5,         ratingTextEN: \"Superb\",         ratingTextTH: \"\u0e22\u0e2d\u0e14\u0e40\u0e22\u0e35\u0e48\u0e22\u0e21\u0e17\u0e35\u0e48\u0e2a\u0e38\u0e14\",         reviewsCount: 750,         price: 780,         originalPrice: 950,         image: \"https:\/\/lh3.googleusercontent.com\/aida-public\/AB6AXuAM8F92FzYD9Kpw8voCepd5lQ0nxNcMhK1SqSMrjBCJd6TnK7HXGcc5ij9U8CjUzEV0uvu458EEI-vgjrV5xm4Jtx_eGaye_I4-YQtCT-pJYgD_AVQobLE8D2C0dzpZvBFtC0FkB4SVVEF1i24MziKlnziAjnXYIhio3Q_uu--1V_CGsUZjCvi9kY3vtWQ1OGKInUKn9SefSH2D-mUCX4hqxrcDI7GO8deyZrnxXor6Ewl0GXBTREzIwZ9LyKLoXXG-v6svb0algfg\",         preferredPlatform: \"Agoda\",         tags: [\"Spa Access\", \"Free Breakfast\"],         tagsTH: [\"\u0e1a\u0e23\u0e34\u0e01\u0e32\u0e23\u0e2a\u0e1b\u0e32\", \"\u0e2d\u0e32\u0e2b\u0e32\u0e23\u0e40\u0e0a\u0e49\u0e32\u0e1f\u0e23\u0e35\"],         affiliates: [           { name: \"Agoda\", price: 780, url: \"https:\/\/www.agoda.com\/park-hyatt-tokyo\/hotel\/tokyo-jp.html\" },           { name: \"Booking.com\", price: 795, url: \"https:\/\/www.booking.com\/hotel\/jp\/park-hyatt-tokyo.html\" },           { name: \"Trip.com\", price: 810, url: \"https:\/\/www.trip.com\/hotels\/tokyo-hotel-detail-parkhyatt\" },           { name: \"Airbnb\", price: 900, url: \"https:\/\/www.airbnb.com\/rooms\/parkhyatt-suite\" }         ]       },       {         id: \"tokyo-3\",         destination: \"Tokyo\",         destinationTH: \"\u0e42\u0e15\u0e40\u0e01\u0e35\u0e22\u0e27\",         name: \"The Ritz-Carlton, Tokyo\",         nameTH: \"\u0e40\u0e14\u0e2d\u0e30 \u0e23\u0e34\u0e17\u0e0b\u0e4c-\u0e04\u0e32\u0e23\u0e4c\u0e25\u0e15\u0e31\u0e19 \u0e42\u0e15\u0e40\u0e01\u0e35\u0e22\u0e27\",         location: \"Tokyo, Japan\",         locationTH: \"\u0e42\u0e15\u0e40\u0e01\u0e35\u0e22\u0e27, \u0e1b\u0e23\u0e30\u0e40\u0e17\u0e28\u0e0d\u0e35\u0e48\u0e1b\u0e38\u0e48\u0e19\",         stars: 5,         rating: 9.6,         ratingTextEN: \"Superb\",         ratingTextTH: \"\u0e22\u0e2d\u0e14\u0e40\u0e22\u0e35\u0e48\u0e22\u0e21\u0e17\u0e35\u0e48\u0e2a\u0e38\u0e14\",         reviewsCount: 510,         price: 850,         originalPrice: 1050,         image: \"https:\/\/lh3.googleusercontent.com\/aida-public\/AB6AXuBtF5k2yg-VwFyMe3CyDU3CScr_MWJE90j2Xc7JmJErHmfvX1MO6tuIFKBJuBMjglJNjBQyCILypyRQMwI4Nu8WRnbOhZvIXQzz7h0EfU7G9dvZLvEWPSW0KFyQvzch1R4g9wwtBood8N7Eva5WBKpuWcUZFQz5BAHkKcSihW2v0VFVfxfDJcPZX9MWgsiJcFyU7LKTGVHqBSeCGMrnPrTs0aRjdjoQEoGStqKFQr8obfQOPpvuyj2ZkCuKi-URBFM-EQTEqecEWCg\",         preferredPlatform: \"Booking.com\",         tags: [\"Spa Access\", \"Free Breakfast\"],         tagsTH: [\"\u0e1a\u0e23\u0e34\u0e01\u0e32\u0e23\u0e2a\u0e1b\u0e32\", \"\u0e2d\u0e32\u0e2b\u0e32\u0e23\u0e40\u0e0a\u0e49\u0e32\u0e1f\u0e23\u0e35\"],         affiliates: [           { name: \"Booking.com\", price: 850, url: \"https:\/\/www.booking.com\/hotel\/jp\/the-ritz-carlton-tokyo.html\" },           { name: \"Agoda\", price: 860, url: \"https:\/\/www.agoda.com\/the-ritz-carlton-tokyo\/hotel\/tokyo-jp.html\" },           { name: \"Trip.com\", price: 880, url: \"https:\/\/www.trip.com\/hotels\/tokyo-hotel-detail-ritzcarlton\" },           { name: \"Airbnb\", price: 950, url: \"https:\/\/www.airbnb.com\/rooms\/ritzcarlton-tokyo\" }         ]       }     ];      \/\/ Perfect bilingual translation database mapping EN\/TH locales for all cities     const destInfo = {       Phuket: { en: \"Phuket, Thailand\", th: \"\u0e20\u0e39\u0e40\u0e01\u0e47\u0e15, \u0e1b\u0e23\u0e30\u0e40\u0e17\u0e28\u0e44\u0e17\u0e22\" },       Bangkok: { en: \"Bangkok, Thailand\", th: \"\u0e01\u0e23\u0e38\u0e07\u0e40\u0e17\u0e1e\u0e2f, \u0e1b\u0e23\u0e30\u0e40\u0e17\u0e28\u0e44\u0e17\u0e22\" },       ChiangMai: { en: \"Chiang Mai, Thailand\", th: \"\u0e40\u0e0a\u0e35\u0e22\u0e07\u0e43\u0e2b\u0e21\u0e48, \u0e1b\u0e23\u0e30\u0e40\u0e17\u0e28\u0e44\u0e17\u0e22\" },       Kyoto: { en: \"Kyoto, Japan\", th: \"\u0e40\u0e01\u0e35\u0e22\u0e27\u0e42\u0e15, \u0e1b\u0e23\u0e30\u0e40\u0e17\u0e28\u0e0d\u0e35\u0e48\u0e1b\u0e38\u0e48\u0e19\" },       Tokyo: { en: \"Tokyo, Japan\", th: \"\u0e42\u0e15\u0e40\u0e01\u0e35\u0e22\u0e27, \u0e1b\u0e23\u0e30\u0e40\u0e17\u0e28\u0e0d\u0e35\u0e48\u0e1b\u0e38\u0e48\u0e19\" },       London: { en: \"London, UK\", th: \"\u0e25\u0e2d\u0e19\u0e14\u0e2d\u0e19, \u0e2a\u0e2b\u0e23\u0e32\u0e0a\u0e2d\u0e32\u0e13\u0e32\u0e08\u0e31\u0e01\u0e23\" },       Bali: { en: \"Bali, Indonesia\", th: \"\u0e1a\u0e32\u0e2b\u0e25\u0e35, \u0e1b\u0e23\u0e30\u0e40\u0e17\u0e28\u0e2d\u0e34\u0e19\u0e42\u0e14\u0e19\u0e35\u0e40\u0e0b\u0e35\u0e22\" }     };      \/\/ Language Dictionary     const translations = {       en: {         destinations: \"Destinations\",         deals: \"Deals\",         guides: \"Guides\",         heroTitle: \"Curated Stays. Unbeatable Value.\",         heroSubtitle: \"We aggregate the finest luxury accommodations globally, ensuring you book the perfect retreat with confidence.\",         search: \"Search\",         addDates: \"Add dates\",         destination: \"Destination\",         dates: \"Dates\",         guests: \"Guests\",         todayDeals: \"Today's Top Deals\",         todaySubtitle: \"Exclusive rates handpicked from our premium partners.\",         viewAllDeals: \"View all deals\",         trendingDestinations: \"Trending Destinations\",         propertiesCount: \"Premium Properties\",         whyChooseUs: \"Why Choose Us\",         verifiedExcellence: \"Verified Excellence\",         verifiedExcellenceDesc: \"We only feature properties rated 8.0 and above by trusted platforms like Booking.com and Agoda.\",         unbiasedComparison: \"Unbiased Comparison\",         unbiasedComparisonDesc: \"Instantly compare rates across top providers to ensure you secure the absolute best value for your stay.\",         expertCuration: \"Expert Curation\",         expertCurationDesc: \"Our team of travel experts hand-selects deals to ensure every listing meets our rigorous luxury standards.\",         footerText: \"\u00a9 2024 VoyageExpert. All rights reserved. Affiliate Disclosure: We may earn a commission for purchases made through our links.\",         company: \"Company\",         support: \"Support\",         aboutUs: \"About Us\",         partners: \"Partners\",         contact: \"Contact\",         privacyPolicy: \"Privacy Policy\",         termsOfService: \"Terms of Service\",                  \/\/ Results View         guestsText: \"2 Guests, 1 Room\",         modifySearch: \"Modify Search\",         filterBy: \"Filter by:\",         budget: \"Your budget (per night)\",         propertyRating: \"Property Rating\",         popularFilters: \"Popular Filters\",         beachfront: \"Beachfront\",         privatePool: \"Private Pool\",         freeBreakfast: \"Free Breakfast\",         spaAccess: \"Spa Access\",         propertiesFound: \"properties found\",         sortBy: \"Sort by:\",         topPicks: \"Top Picks for You\",         priceLowest: \"Price (lowest first)\",         ratingHighest: \"Star rating (highest first)\",         viewDeal: \"View Deal\",         topPickBadge: \"Top Pick\",         superb: \"Superb\",         exceptional: \"Exceptional\",         reviews: \"reviews\",         night: \"night\",         bookingPlatform: \"Via Booking.com\",         agodaPlatform: \"Via Agoda\",         bestDealsComparison: \"Best Deal Comparison:\",         showOnMap: \"Show on Map\",                  \/\/ Options in search select         Phuket: \"Phuket, Thailand\",         Bangkok: \"Bangkok, Thailand\",         ChiangMai: \"Chiang Mai, Thailand\",         Kyoto: \"Kyoto, Japan\",         Tokyo: \"Tokyo, Japan\",         London: \"London, UK\",         Bali: \"Bali, Indonesia\"       },       th: {         destinations: \"\u0e08\u0e38\u0e14\u0e2b\u0e21\u0e32\u0e22\u0e1b\u0e25\u0e32\u0e22\u0e17\u0e32\u0e07\",         deals: \"\u0e14\u0e35\u0e25\u0e1e\u0e34\u0e40\u0e28\u0e29\",         guides: \"\u0e04\u0e39\u0e48\u0e21\u0e37\u0e2d\u0e17\u0e48\u0e2d\u0e07\u0e40\u0e17\u0e35\u0e48\u0e22\u0e27\",         heroTitle: \"\u0e17\u0e35\u0e48\u0e1e\u0e31\u0e01\u0e04\u0e31\u0e14\u0e2a\u0e23\u0e23\u0e1e\u0e34\u0e40\u0e28\u0e29 \u0e04\u0e38\u0e49\u0e21\u0e23\u0e32\u0e04\u0e32\u0e17\u0e35\u0e48\u0e2a\u0e38\u0e14\",         heroSubtitle: \"\u0e40\u0e23\u0e32\u0e23\u0e27\u0e1a\u0e23\u0e27\u0e21\u0e17\u0e35\u0e48\u0e1e\u0e31\u0e01\u0e2a\u0e38\u0e14\u0e2b\u0e23\u0e39\u0e17\u0e35\u0e48\u0e14\u0e35\u0e17\u0e35\u0e48\u0e2a\u0e38\u0e14\u0e08\u0e32\u0e01\u0e17\u0e31\u0e48\u0e27\u0e42\u0e25\u0e01 \u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e43\u0e2b\u0e49\u0e04\u0e38\u0e13\u0e08\u0e2d\u0e07\u0e17\u0e23\u0e34\u0e1b\u0e1e\u0e31\u0e01\u0e1c\u0e48\u0e2d\u0e19\u0e17\u0e35\u0e48\u0e2a\u0e21\u0e1a\u0e39\u0e23\u0e13\u0e4c\u0e41\u0e1a\u0e1a\u0e44\u0e14\u0e49\u0e2d\u0e22\u0e48\u0e32\u0e07\u0e21\u0e31\u0e48\u0e19\u0e43\u0e08\",         search: \"\u0e04\u0e49\u0e19\u0e2b\u0e32\",         addDates: \"\u0e40\u0e1e\u0e34\u0e48\u0e21\u0e27\u0e31\u0e19\u0e17\u0e35\u0e48\",         destination: \"\u0e08\u0e38\u0e14\u0e2b\u0e21\u0e32\u0e22\u0e1b\u0e25\u0e32\u0e22\u0e17\u0e32\u0e07\",         dates: \"\u0e27\u0e31\u0e19\u0e17\u0e35\u0e48\",         guests: \"\u0e1c\u0e39\u0e49\u0e40\u0e02\u0e49\u0e32\u0e1e\u0e31\u0e01\",         todayDeals: \"\u0e14\u0e35\u0e25\u0e2a\u0e38\u0e14\u0e1e\u0e34\u0e40\u0e28\u0e29\u0e27\u0e31\u0e19\u0e19\u0e35\u0e49\",         todaySubtitle: \"\u0e2d\u0e31\u0e15\u0e23\u0e32\u0e04\u0e48\u0e32\u0e40\u0e02\u0e49\u0e32\u0e1e\u0e31\u0e01\u0e2a\u0e38\u0e14\u0e1e\u0e34\u0e40\u0e28\u0e29\u0e17\u0e35\u0e48\u0e40\u0e23\u0e32\u0e04\u0e31\u0e14\u0e2a\u0e23\u0e23\u0e42\u0e14\u0e22\u0e15\u0e23\u0e07\u0e08\u0e32\u0e01\u0e1e\u0e31\u0e19\u0e18\u0e21\u0e34\u0e15\u0e23\u0e0a\u0e31\u0e49\u0e19\u0e19\u0e33\",         viewAllDeals: \"\u0e14\u0e39\u0e14\u0e35\u0e25\u0e17\u0e31\u0e49\u0e07\u0e2b\u0e21\u0e14\",         trendingDestinations: \"\u0e08\u0e38\u0e14\u0e2b\u0e21\u0e32\u0e22\u0e1b\u0e25\u0e32\u0e22\u0e17\u0e32\u0e07\u0e22\u0e2d\u0e14\u0e19\u0e34\u0e22\u0e21\",         propertiesCount: \"\u0e17\u0e35\u0e48\u0e1e\u0e31\u0e01\u0e23\u0e30\u0e14\u0e31\u0e1a\u0e1e\u0e23\u0e35\u0e40\u0e21\u0e35\u0e22\u0e21\",         whyChooseUs: \"\u0e01\u0e32\u0e23\u0e04\u0e31\u0e14\u0e2a\u0e23\u0e23\u0e0a\u0e31\u0e49\u0e19\u0e40\u0e25\u0e34\u0e28\",         verifiedExcellenceDesc: \"\u0e40\u0e23\u0e32\u0e41\u0e19\u0e30\u0e19\u0e33\u0e40\u0e09\u0e1e\u0e32\u0e30\u0e17\u0e35\u0e48\u0e1e\u0e31\u0e01\u0e17\u0e35\u0e48\u0e44\u0e14\u0e49\u0e23\u0e31\u0e1a\u0e04\u0e30\u0e41\u0e19\u0e19\u0e23\u0e35\u0e27\u0e34\u0e27 8.0 \u0e02\u0e36\u0e49\u0e19\u0e44\u0e1b\u0e08\u0e32\u0e01\u0e41\u0e1e\u0e25\u0e15\u0e1f\u0e2d\u0e23\u0e4c\u0e21\u0e17\u0e35\u0e48\u0e19\u0e48\u0e32\u0e40\u0e0a\u0e37\u0e48\u0e2d\u0e16\u0e37\u0e2d \u0e40\u0e0a\u0e48\u0e19 Booking.com \u0e41\u0e25\u0e30 Agoda\",         unbiasedComparison: \"\u0e40\u0e1b\u0e23\u0e35\u0e22\u0e1a\u0e40\u0e17\u0e35\u0e22\u0e1a\u0e44\u0e23\u0e49\u0e2d\u0e04\u0e15\u0e34\",         unbiasedComparisonDesc: \"\u0e40\u0e1b\u0e23\u0e35\u0e22\u0e1a\u0e40\u0e17\u0e35\u0e22\u0e1a\u0e23\u0e32\u0e04\u0e32\u0e08\u0e32\u0e01\u0e1c\u0e39\u0e49\u0e43\u0e2b\u0e49\u0e1a\u0e23\u0e34\u0e01\u0e32\u0e23\u0e0a\u0e31\u0e49\u0e19\u0e19\u0e33\u0e17\u0e31\u0e19\u0e17\u0e35\u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e43\u0e2b\u0e49\u0e41\u0e19\u0e48\u0e43\u0e08\u0e27\u0e48\u0e32\u0e04\u0e38\u0e13\u0e44\u0e14\u0e49\u0e23\u0e31\u0e1a\u0e04\u0e27\u0e32\u0e21\u0e04\u0e38\u0e49\u0e21\u0e04\u0e48\u0e32\u0e2a\u0e39\u0e07\u0e2a\u0e38\u0e14\u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a\u0e01\u0e32\u0e23\u0e40\u0e02\u0e49\u0e32\u0e1e\u0e31\u0e01\",         expertCuration: \"\u0e14\u0e39\u0e41\u0e25\u0e42\u0e14\u0e22\u0e1c\u0e39\u0e49\u0e40\u0e0a\u0e35\u0e48\u0e22\u0e27\u0e0a\u0e32\u0e0d\",         expertCurationDesc: \"\u0e17\u0e35\u0e21\u0e07\u0e32\u0e19\u0e1c\u0e39\u0e49\u0e40\u0e0a\u0e35\u0e48\u0e22\u0e27\u0e0a\u0e32\u0e0d\u0e14\u0e49\u0e32\u0e19\u0e01\u0e32\u0e23\u0e17\u0e48\u0e2d\u0e07\u0e40\u0e17\u0e35\u0e48\u0e22\u0e27\u0e02\u0e2d\u0e07\u0e40\u0e23\u0e32\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e2a\u0e23\u0e23\u0e14\u0e35\u0e25\u0e14\u0e49\u0e27\u0e22\u0e15\u0e19\u0e40\u0e2d\u0e07\u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e43\u0e2b\u0e49\u0e21\u0e31\u0e48\u0e19\u0e43\u0e08\u0e27\u0e48\u0e32\u0e44\u0e14\u0e49\u0e21\u0e32\u0e15\u0e23\u0e10\u0e32\u0e19\u0e04\u0e27\u0e32\u0e21\u0e2b\u0e23\u0e39\u0e2b\u0e23\u0e32\",         footerText: \"\u00a9 2024 VoyageExpert. \u0e2a\u0e07\u0e27\u0e19\u0e25\u0e34\u0e02\u0e2a\u0e34\u0e17\u0e18\u0e34\u0e4c. \u0e01\u0e32\u0e23\u0e40\u0e1b\u0e34\u0e14\u0e40\u0e1c\u0e22\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e25\u0e34\u0e07\u0e01\u0e4c\u0e1e\u0e31\u0e19\u0e18\u0e21\u0e34\u0e15\u0e23: \u0e40\u0e23\u0e32\u0e2d\u0e32\u0e08\u0e44\u0e14\u0e49\u0e23\u0e31\u0e1a\u0e04\u0e48\u0e32\u0e04\u0e2d\u0e21\u0e21\u0e34\u0e0a\u0e0a\u0e31\u0e48\u0e19\u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a\u0e01\u0e32\u0e23\u0e0b\u0e37\u0e49\u0e2d\u0e1c\u0e48\u0e32\u0e19\u0e25\u0e34\u0e07\u0e01\u0e4c\u0e02\u0e2d\u0e07\u0e40\u0e23\u0e32\",         company: \"\u0e1a\u0e23\u0e34\u0e29\u0e31\u0e17\",         support: \"\u0e1d\u0e48\u0e32\u0e22\u0e0a\u0e48\u0e27\u0e22\u0e40\u0e2b\u0e25\u0e37\u0e2d\",         aboutUs: \"\u0e40\u0e01\u0e35\u0e48\u0e22\u0e27\u0e01\u0e31\u0e1a\u0e40\u0e23\u0e32\",         partners: \"\u0e1e\u0e31\u0e19\u0e18\u0e21\u0e34\u0e15\u0e23\",         contact: \"\u0e15\u0e34\u0e14\u0e15\u0e48\u0e2d\u0e40\u0e23\u0e32\",         privacyPolicy: \"\u0e19\u0e42\u0e22\u0e1a\u0e32\u0e22\u0e04\u0e27\u0e32\u0e21\u0e40\u0e1b\u0e47\u0e19\u0e2a\u0e48\u0e27\u0e19\u0e15\u0e31\u0e27\",         termsOfService: \"\u0e40\u0e07\u0e37\u0e48\u0e2d\u0e19\u0e44\u0e02\u0e01\u0e32\u0e23\u0e43\u0e2b\u0e49\u0e1a\u0e23\u0e34\u0e01\u0e32\u0e23\",                  \/\/ Results View         guestsText: \"\u0e1c\u0e39\u0e49\u0e43\u0e2b\u0e0d\u0e48 2 \u0e04\u0e19, 1 \u0e2b\u0e49\u0e2d\u0e07\",         modifySearch: \"\u0e41\u0e01\u0e49\u0e44\u0e02\u0e01\u0e32\u0e23\u0e04\u0e49\u0e19\u0e2b\u0e32\",         filterBy: \"\u0e01\u0e23\u0e2d\u0e07\u0e42\u0e14\u0e22:\",         budget: \"\u0e07\u0e1a\u0e1b\u0e23\u0e30\u0e21\u0e32\u0e13\u0e02\u0e2d\u0e07\u0e04\u0e38\u0e13 (\u0e15\u0e48\u0e2d\u0e04\u0e37\u0e19)\",         propertyRating: \"\u0e23\u0e30\u0e14\u0e31\u0e1a\u0e14\u0e32\u0e27\u0e02\u0e2d\u0e07\u0e17\u0e35\u0e48\u0e1e\u0e31\u0e01\",         popularFilters: \"\u0e15\u0e31\u0e27\u0e01\u0e23\u0e2d\u0e07\u0e22\u0e2d\u0e14\u0e19\u0e34\u0e22\u0e21\",         beachfront: \"\u0e15\u0e34\u0e14\u0e0a\u0e32\u0e22\u0e2b\u0e32\u0e14\",         privatePool: \"\u0e2a\u0e23\u0e30\u0e27\u0e48\u0e32\u0e22\u0e19\u0e49\u0e33\u0e2a\u0e48\u0e27\u0e19\u0e15\u0e31\u0e27\",         freeBreakfast: \"\u0e2d\u0e32\u0e2b\u0e32\u0e23\u0e40\u0e0a\u0e49\u0e32\u0e1f\u0e23\u0e35\",         spaAccess: \"\u0e1a\u0e23\u0e34\u0e01\u0e32\u0e23\u0e2a\u0e1b\u0e32\",         propertiesFound: \"\u0e23\u0e32\u0e22\u0e01\u0e32\u0e23\u0e17\u0e35\u0e48\u0e1e\u0e31\u0e01\u0e17\u0e35\u0e48\u0e1e\u0e1a\",         sortBy: \"\u0e08\u0e31\u0e14\u0e40\u0e23\u0e35\u0e22\u0e07\u0e15\u0e32\u0e21:\",         topPicks: \"\u0e41\u0e19\u0e30\u0e19\u0e33\u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a\u0e04\u0e38\u0e13\",         priceLowest: \"\u0e23\u0e32\u0e04\u0e32 (\u0e16\u0e39\u0e01\u0e17\u0e35\u0e48\u0e2a\u0e38\u0e14\u0e01\u0e48\u0e2d\u0e19)\",         ratingHighest: \"\u0e23\u0e30\u0e14\u0e31\u0e1a\u0e14\u0e32\u0e27 (\u0e2a\u0e39\u0e07\u0e2a\u0e38\u0e14\u0e01\u0e48\u0e2d\u0e19)\",         viewDeal: \"\u0e14\u0e39\u0e14\u0e35\u0e25\u0e1e\u0e34\u0e40\u0e28\u0e29\",         topPickBadge: \"\u0e41\u0e19\u0e30\u0e19\u0e33\u0e1e\u0e34\u0e40\u0e28\u0e29\",         superb: \"\u0e22\u0e2d\u0e14\u0e40\u0e22\u0e35\u0e48\u0e22\u0e21\u0e17\u0e35\u0e48\u0e2a\u0e38\u0e14\",         exceptional: \"\u0e14\u0e35\u0e40\u0e25\u0e34\u0e28\",         reviews: \"\u0e23\u0e35\u0e27\u0e34\u0e27\",         night: \"\u0e04\u0e37\u0e19\",         bookingPlatform: \"\u0e42\u0e14\u0e22 Booking.com\",         agodaPlatform: \"\u0e42\u0e14\u0e22 Agoda\",         bestDealsComparison: \"\u0e40\u0e1b\u0e23\u0e35\u0e22\u0e1a\u0e40\u0e17\u0e35\u0e22\u0e1a\u0e23\u0e32\u0e04\u0e32\u0e14\u0e35\u0e25\u0e17\u0e35\u0e48\u0e14\u0e35\u0e17\u0e35\u0e48\u0e2a\u0e38\u0e14:\",         showOnMap: \"\u0e41\u0e2a\u0e14\u0e07\u0e1a\u0e19\u0e41\u0e1c\u0e19\u0e17\u0e35\u0e48\",                  \/\/ Options in search select         Phuket: \"\u0e20\u0e39\u0e40\u0e01\u0e47\u0e15, \u0e1b\u0e23\u0e30\u0e40\u0e17\u0e28\u0e44\u0e17\u0e22\",         Bangkok: \"\u0e01\u0e23\u0e38\u0e07\u0e40\u0e17\u0e1e\u0e2f, \u0e1b\u0e23\u0e30\u0e40\u0e17\u0e28\u0e44\u0e17\u0e22\",         ChiangMai: \"\u0e40\u0e0a\u0e35\u0e22\u0e07\u0e43\u0e2b\u0e21\u0e48, \u0e1b\u0e23\u0e30\u0e40\u0e17\u0e28\u0e44\u0e17\u0e22\",         Kyoto: \"\u0e40\u0e01\u0e35\u0e22\u0e27\u0e42\u0e15, \u0e1b\u0e23\u0e30\u0e40\u0e17\u0e28\u0e0d\u0e35\u0e48\u0e1b\u0e38\u0e48\u0e19\",         Tokyo: \"\u0e42\u0e15\u0e40\u0e01\u0e35\u0e22\u0e27, \u0e1b\u0e23\u0e30\u0e40\u0e17\u0e28\u0e0d\u0e35\u0e48\u0e1b\u0e38\u0e48\u0e19\",         London: \"\u0e25\u0e2d\u0e19\u0e14\u0e2d\u0e19, \u0e2a\u0e2b\u0e23\u0e32\u0e0a\u0e2d\u0e32\u0e13\u0e32\u0e08\u0e31\u0e01\u0e23\",         Bali: \"\u0e1a\u0e32\u0e2b\u0e25\u0e35, \u0e1b\u0e23\u0e30\u0e40\u0e17\u0e28\u0e2d\u0e34\u0e19\u0e42\u0e14\u0e19\u0e35\u0e40\u0e0b\u0e35\u0e22\"       }     };      \/\/ Navigation trigger     function navigateTo(viewId) {         if (viewId === 'home') {             document.getElementById('home-view').classList.remove('hidden');             document.getElementById('results-view').classList.add('hidden');             window.scrollTo({ top: 0, behavior: 'smooth' });         }     }      \/\/ Trigger Search     function triggerSearch() {         const selectedDest = document.getElementById('search-dest-select').value;         navigateToResults(selectedDest);     }      \/\/ Navigate directly to destination results     function navigateToResults(destName) {         activeDestination = destName;         document.getElementById('home-view').classList.add('hidden');         document.getElementById('results-view').classList.remove('hidden');                  \/\/ Update Search Bar Displays with correct translation mapping to prevent bugs         const info = destInfo[destName] || { en: `${destName}, Travel`, th: `${destName}` };         const localizedDest = currentLanguage === 'th' ? info.th : info.en;                      document.getElementById('mod-dest-display').innerText = localizedDest;                  \/\/ Setup Date Display Mockup         const datesText = currentLanguage === 'th' ? \"12 \u0e15.\u0e04. - 19 \u0e15.\u0e04.\" : \"Oct 12 - Oct 19\";         document.getElementById('mod-dates-display').innerText = datesText;                  \/\/ Reset inputs         document.getElementById('price-slider').value = 1500;         maxPriceFilter = 1500;         document.getElementById('slider-val-display').innerText = `$1500+`;                  \/\/ Reset checkboxes         document.getElementById('star-5').checked = true;         document.getElementById('star-4').checked = true;         document.getElementById('amenity-beachfront').checked = false;         document.getElementById('amenity-pool').checked = false;         document.getElementById('amenity-breakfast').checked = false;         document.getElementById('amenity-spa').checked = false;                  \/\/ Render         filterHotels();                  window.scrollTo({ top: 0, behavior: 'smooth' });     }      \/\/ Dynamic filtering and rendering     function filterHotels() {         const isStar5 = document.getElementById('star-5').checked;         const isStar4 = document.getElementById('star-4').checked;         const isBeach = document.getElementById('amenity-beachfront').checked;         const isPool = document.getElementById('amenity-pool').checked;         const isBreakfast = document.getElementById('amenity-breakfast').checked;         const isSpa = document.getElementById('amenity-spa').checked;         const sortVal = document.getElementById('sort').value;                  let filtered = hotelsDataset.filter(hotel => hotel.destination === activeDestination);                  \/\/ Price Filter         filtered = filtered.filter(hotel => hotel.price <= maxPriceFilter);                  \/\/ Star Filter         filtered = filtered.filter(hotel => {             if (hotel.stars === 5 && !isStar5) return false;             if (hotel.stars === 4 && !isStar4) return false;             return true;         });                  \/\/ Amenities Filter         filtered = filtered.filter(hotel => {             if (isBeach && !hotel.tags.includes('Beachfront')) return false;             if (isPool && !hotel.tags.includes('Private Pool')) return false;             if (isBreakfast && !hotel.tags.includes('Free Breakfast')) return false;             if (isSpa && !hotel.tags.includes('Spa Access')) return false;             return true;         });                  \/\/ Sorting         if (sortVal === 'price') {             filtered.sort((a, b) => a.price - b.price);         } else if (sortVal === 'stars') {             filtered.sort((a, b) => b.stars - a.stars);         } else {             \/\/ Default top picks \/ high rating             filtered.sort((a, b) => b.rating - a.rating);         }                  \/\/ Update header count with perfect bilingual names         const info = destInfo[activeDestination] || { en: `${activeDestination}, Travel`, th: `${activeDestination}` };         const localizedDest = currentLanguage === 'th' ? info.th : info.en;                      const foundText = currentLanguage === 'th' ? '\u0e23\u0e32\u0e22\u0e01\u0e32\u0e23\u0e17\u0e35\u0e48\u0e1e\u0e31\u0e01\u0e17\u0e35\u0e48\u0e1e\u0e1a' : 'properties found';         document.getElementById('results-count-title').innerText = `${localizedDest}: ${filtered.length} ${foundText}`;                  renderHotelList(filtered);     }      \/\/ Render hotel list markup     function renderHotelList(hotels) {         const container = document.getElementById('hotel-list-container');         container.innerHTML = '';                  if (hotels.length === 0) {             container.innerHTML = `                 <div class=\"bg-surface-container-lowest border border-surface-variant p-10 rounded-xl text-center\">                     <span class=\"material-symbols-outlined text-outline text-5xl mb-3\">search_off<\/span>                     <p class=\"font-headline-sm text-headline-sm text-primary mb-1\">No accommodations matched your filter<\/p>                     <p class=\"font-body-md text-body-md text-on-surface-variant\">Try expanding your price range or clearing check filters.<\/p>                 <\/div>             `;             return;         }                  hotels.forEach(hotel => {             const hotelName = currentLanguage === 'th' ? hotel.nameTH : hotel.name;             const hotelLoc = currentLanguage === 'th' ? hotel.locationTH : hotel.location;             const ratingText = currentLanguage === 'th' ? hotel.ratingTextTH : hotel.ratingTextEN;             const nightText = currentLanguage === 'th' ? '\u0e04\u0e37\u0e19' : 'night';             const viewDealText = currentLanguage === 'th' ? '\u0e14\u0e39\u0e14\u0e35\u0e25\u0e1e\u0e34\u0e40\u0e28\u0e29' : 'View Deal';             const topBadgeText = currentLanguage === 'th' ? '\u0e41\u0e19\u0e30\u0e19\u0e33\u0e1e\u0e34\u0e40\u0e28\u0e29' : 'Top Pick';             const viaText = currentLanguage === 'th' ? `\u0e42\u0e14\u0e22 ${hotel.preferredPlatform}` : `Via ${hotel.preferredPlatform}`;                          \/\/ Build Stars Markup             let starsMarkup = '';             for (let i = 0; i < hotel.stars; i++) {                 starsMarkup += `<span class=\"material-symbols-outlined text-sm fill-icon\">star<\/span>`;             }                          \/\/ Build Tags Markup             const tagsSource = currentLanguage === 'th' ? hotel.tagsTH : hotel.tags;             let tagsMarkup = '';             tagsSource.forEach(tag => {                 tagsMarkup += `<span class=\"bg-surface-container text-primary text-[11px] font-bold px-2.5 py-1 rounded-md border border-outline-variant\/30\">${tag}<\/span>`;             });                          const card = document.createElement('div');             card.className = \"flex flex-col md:flex-row bg-surface-container-lowest rounded-xl border border-surface-variant shadow-sm shadow-primary\/15 hover:shadow-primary\/30 transition-all duration-300 overflow-hidden group\";             card.innerHTML = `                 <!-- Image Section -->                 <div class=\"w-full md:w-[35%] relative h-56 md:h-auto overflow-hidden\">                     <img decoding=\"async\" src=\"${hotel.image}\" alt=\"${hotel.name}\" class=\"w-full h-full object-cover transition-transform duration-700 group-hover:scale-105\" \/>                     <button class=\"absolute top-4 right-4 bg-surface-container-lowest\/80 backdrop-blur-sm p-2 rounded-full text-on-surface hover:text-error transition-all hover:scale-105 active:scale-95\">                         <span class=\"material-symbols-outlined\">favorite<\/span>                     <\/button>                     <!-- Preferred Badge -->                     <div class=\"absolute top-4 left-4 bg-secondary text-on-secondary font-label-bold text-[11px] px-2.5 py-1 rounded shadow-sm flex items-center gap-1\">                         <span class=\"material-symbols-outlined text-[14px]\">thumb_up<\/span> ${topBadgeText}                     <\/div>                 <\/div>                 <!-- Content Section -->                 <div class=\"w-full md:w-[65%] p-6 flex flex-col justify-between gap-4\">                     <div>                         <div class=\"flex justify-between items-start gap-4\">                             <div>                                 <div class=\"flex items-center gap-2 mb-1\">                                     <h2 class=\"font-headline-sm text-headline-sm text-on-surface\">${hotelName}<\/h2>                                     <span class=\"flex items-center text-secondary-container\">                                         ${starsMarkup}                                     <\/span>                                 <\/div>                                 <p class=\"font-body-sm text-body-sm text-on-surface-variant flex items-center gap-1\">                                     <span class=\"material-symbols-outlined text-[16px] text-outline\">location_on<\/span> ${hotelLoc}                                 <\/p>                             <\/div>                             <div class=\"flex flex-col items-end\">                                 <div class=\"bg-secondary text-on-secondary px-2.5 py-0.5 rounded flex items-center gap-1 shadow-sm\">                                     <span class=\"font-label-bold text-label-bold\">${hotel.rating}<\/span>                                     <span class=\"font-label-sm text-[10px] font-semibold\">${ratingText}<\/span>                                 <\/div>                                 <span class=\"font-label-sm text-label-sm text-outline mt-1\">${hotel.reviewsCount} ${currentLanguage === 'th' ? '\u0e23\u0e35\u0e27\u0e34\u0e27' : 'reviews'}<\/span>                             <\/div>                         <\/div>                                                  <!-- Tags -->                         <div class=\"flex flex-wrap gap-2 mt-3\">                             ${tagsMarkup}                         <\/div>                     <\/div>                                          <div class=\"pt-4 flex justify-between items-end border-t border-surface-variant mt-auto\">                         <div>                             <span class=\"font-label-sm text-label-sm text-error line-through block font-semibold\">$${hotel.originalPrice}<\/span>                             <span class=\"font-headline-sm text-headline-sm text-on-surface font-bold\">$${hotel.price} <span class=\"font-body-sm text-body-sm font-normal text-on-surface-variant\">\/ ${nightText}<\/span><\/span>                             <span class=\"font-body-sm text-[11px] font-bold text-outline block mt-0.5\">${viaText}<\/span>                         <\/div>                         <button onclick=\"triggerSimulatedAffiliate('${hotel.id}')\" class=\"bg-secondary hover:bg-on-secondary-fixed-variant text-on-secondary font-label-bold text-label-bold py-2.5 px-6 rounded-lg transition-all active:scale-95 flex items-center gap-1 shadow\">                             ${viewDealText} <span class=\"material-symbols-outlined text-sm\">open_in_new<\/span>                         <\/button>                     <\/div>                 <\/div>             `;             container.appendChild(card);         });     }      \/\/ Dynamic interactive budget filter     function updatePriceFilter(val) {         maxPriceFilter = parseInt(val);         document.getElementById('slider-val-display').innerText = `$${val}+`;         filterHotels();     }      \/\/ Sort trigger     function sortHotels(val) {         filterHotels();     }      \/\/ Interactive Affiliate Modal comparisons     function triggerSimulatedAffiliate(hotelId) {         const hotel = hotelsDataset.find(h => h.id === hotelId);         if (!hotel) return;                  const localizedName = currentLanguage === 'th' ? hotel.nameTH : hotel.name;         const localizedLoc = currentLanguage === 'th' ? hotel.locationTH : hotel.location;                  document.getElementById('modal-hotel-name').innerText = localizedName;         document.getElementById('modal-hotel-loc').innerText = localizedLoc;                  const listContainer = document.getElementById('modal-deals-list');         listContainer.innerHTML = '';                  hotel.affiliates.forEach(aff => {             const item = document.createElement('div');             item.className = \"flex justify-between items-center bg-surface-container hover:bg-surface-variant border border-outline-variant\/30 p-4 rounded-xl transition-all shadow-sm\";             item.innerHTML = `                 <div class=\"flex items-center gap-3\">                     <span class=\"material-symbols-outlined text-primary font-bold\">verified_user<\/span>                     <span class=\"font-label-bold text-label-bold text-primary text-base\">${aff.name}<\/span>                 <\/div>                 <div class=\"flex items-center gap-4\">                     <span class=\"font-headline-sm text-headline-sm text-on-surface font-bold\">$${aff.price}<\/span>                     <a href=\"${aff.url}\" target=\"_blank\" class=\"bg-primary hover:bg-primary-container text-on-primary font-bold text-xs py-2 px-4 rounded-lg shadow transition-all active:scale-95 flex items-center gap-1\">                         ${currentLanguage === 'th' ? '\u0e08\u0e2d\u0e07\u0e40\u0e25\u0e22' : 'Book'} <span class=\"material-symbols-outlined text-xs\">arrow_forward<\/span>                     <\/a>                 <\/div>             `;             listContainer.appendChild(item);         });                  document.getElementById('affiliate-modal').classList.remove('hidden');     }      function closeAffiliateModal() {         document.getElementById('affiliate-modal').classList.add('hidden');     }      \/\/ Interactive Maps     function openMapModal() {         const localizedTitle = currentLanguage === 'th' ? `\u0e41\u0e1c\u0e19\u0e17\u0e35\u0e48\u0e42\u0e23\u0e07\u0e41\u0e23\u0e21\u0e41\u0e19\u0e30\u0e19\u0e33\u0e43\u0e19 ${activeDestination}` : `Interactive Map: Vetted Hotels in ${activeDestination}`;         document.getElementById('map-title').innerText = localizedTitle;                  \/\/ Update pin names based on active destination         const filtered = hotelsDataset.filter(hotel => hotel.destination === activeDestination);                  if (filtered.length >= 3) {             document.getElementById('map-pin-1').innerText = currentLanguage === 'th' ? filtered[0].nameTH.substring(0, 10) + '...' : filtered[0].name.substring(0, 10) + '...';             document.getElementById('map-pin-2').innerText = currentLanguage === 'th' ? filtered[1].nameTH.substring(0, 10) + '...' : filtered[1].name.substring(0, 10) + '...';             document.getElementById('map-pin-3').innerText = currentLanguage === 'th' ? filtered[2].nameTH.substring(0, 10) + '...' : filtered[2].name.substring(0, 10) + '...';         }                  document.getElementById('map-modal').classList.remove('hidden');     }      function closeMapModal() {         document.getElementById('map-modal').classList.add('hidden');     }      \/\/ Bilingual instant translator logic     function switchLanguage(langCode) {         currentLanguage = langCode;                  \/\/ Set buttons active state         const btnEn = document.getElementById('lang-btn-en');         const btnTh = document.getElementById('lang-btn-th');                  if (langCode === 'en') {             btnEn.className = \"px-3 py-1 text-xs font-bold rounded-full transition-all bg-primary text-on-primary shadow-sm\";             btnTh.className = \"px-3 py-1 text-xs font-bold rounded-full transition-all text-on-surface-variant\";         } else {             btnTh.className = \"px-3 py-1 text-xs font-bold rounded-full transition-all bg-primary text-on-primary shadow-sm\";             btnEn.className = \"px-3 py-1 text-xs font-bold rounded-full transition-all text-on-surface-variant\";         }                  \/\/ 1. Translate elements with data-translate attribute         document.querySelectorAll('[data-translate]').forEach(el => {             const key = el.getAttribute('data-translate');             if (translations[langCode][key]) {                 el.innerText = translations[langCode][key];             }         });                  \/\/ 2. Translate options with data-translate-opt attribute         document.querySelectorAll('[data-translate-opt]').forEach(el => {             const key = el.getAttribute('data-translate-opt');             if (translations[langCode][key]) {                 el.text = translations[langCode][key];             }         });                  \/\/ 3. Update active elements and re-filter         if (!document.getElementById('home-view').classList.contains('hidden')) {             \/\/ In Homepage, translate static deals titles and locations             document.getElementById('deal-title-1').innerText = langCode === 'th' ? \"\u0e40\u0e14\u0e2d\u0e30 \u0e23\u0e34\u0e17\u0e0b\u0e4c-\u0e04\u0e32\u0e23\u0e4c\u0e25\u0e15\u0e31\u0e19 \u0e40\u0e01\u0e35\u0e22\u0e27\u0e42\u0e15\" : \"The Ritz-Carlton, Kyoto\";             document.getElementById('deal-loc-1').innerText = langCode === 'th' ? \"\u0e40\u0e01\u0e35\u0e22\u0e27\u0e42\u0e15, \u0e1b\u0e23\u0e30\u0e40\u0e17\u0e28\u0e0d\u0e35\u0e48\u0e1b\u0e38\u0e48\u0e19\" : \"Kyoto, Japan\";                          document.getElementById('deal-title-2').innerText = langCode === 'th' ? \"\u0e40\u0e14\u0e2d\u0e30 \u0e0b\u0e32\u0e27\u0e2d\u0e22\" : \"The Savoy\";             document.getElementById('deal-loc-2').innerText = langCode === 'th' ? \"\u0e25\u0e2d\u0e19\u0e14\u0e2d\u0e19, \u0e2a\u0e2b\u0e23\u0e32\u0e0a\u0e2d\u0e32\u0e13\u0e32\u0e08\u0e31\u0e01\u0e23\" : \"London, UK\";                          document.getElementById('deal-title-3').innerText = langCode === 'th' ? \"\u0e2d\u0e32\u0e21\u0e31\u0e19\u0e14\u0e32\u0e23\u0e35 \u0e23\u0e35\u0e2a\u0e2d\u0e23\u0e4c\u0e17\" : \"Amandari Resort\";             document.getElementById('deal-loc-3').innerText = langCode === 'th' ? \"\u0e1a\u0e32\u0e2b\u0e25\u0e35, \u0e1b\u0e23\u0e30\u0e40\u0e17\u0e28\u0e2d\u0e34\u0e19\u0e42\u0e14\u0e19\u0e35\u0e40\u0e0b\u0e35\u0e22\" : \"Bali, Indonesia\";                          \/\/ Translate Bento Grid Destinations matching mockup elements perfectly             document.getElementById('dest-grid-tokyo').innerText = langCode === 'th' ? \"\u0e42\u0e15\u0e40\u0e01\u0e35\u0e22\u0e27, \u0e1b\u0e23\u0e30\u0e40\u0e17\u0e28\u0e0d\u0e35\u0e48\u0e1b\u0e38\u0e48\u0e19\" : \"Tokyo, Japan\";             document.getElementById('dest-grid-london').innerText = langCode === 'th' ? \"\u0e25\u0e2d\u0e19\u0e14\u0e2d\u0e19, \u0e2a\u0e2b\u0e23\u0e32\u0e0a\u0e2d\u0e32\u0e13\u0e32\u0e08\u0e31\u0e01\u0e23\" : \"London, UK\";             document.getElementById('dest-grid-bali').innerText = langCode === 'th' ? \"\u0e1a\u0e32\u0e2b\u0e25\u0e35, \u0e1b\u0e23\u0e30\u0e40\u0e17\u0e28\u0e2d\u0e34\u0e19\u0e42\u0e14\u0e19\u0e35\u0e40\u0e0b\u0e35\u0e22\" : \"Bali, Indonesia\";         } else {             \/\/ In results view, re-filter to refresh language instantly             navigateToResults(activeDestination);         }     }          \/\/ Auto initialize on load     window.addEventListener('DOMContentLoaded', () => {         \/\/ Preload first view         navigateTo('home');     }); <\/script> <\/body> <\/html> \n","protected":false},"excerpt":{"rendered":"<p>VoyageExpert &#8211; Premium Travel Deals travel_explore VoyageExpert Destinations Deals Guides EN TH payments menu Curated Stays. Unbeatable Value. We aggregate the finest luxury accommodations globally, ensuring you book the perfect retreat with confidence. location_on Destination Tokyo, JapanLondon, UKBali, IndonesiaKyoto, JapanPhuket, ThailandBangkok, ThailandChiang Mai, Thailand calendar_month Dates Add dates group Guests 2 Adults, 1 Room Search [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"page-no-title","meta":{"footnotes":""},"class_list":["post-33","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/napinthai.com\/index.php?rest_route=\/wp\/v2\/pages\/33","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/napinthai.com\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/napinthai.com\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/napinthai.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/napinthai.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=33"}],"version-history":[{"count":3,"href":"https:\/\/napinthai.com\/index.php?rest_route=\/wp\/v2\/pages\/33\/revisions"}],"predecessor-version":[{"id":36,"href":"https:\/\/napinthai.com\/index.php?rest_route=\/wp\/v2\/pages\/33\/revisions\/36"}],"wp:attachment":[{"href":"https:\/\/napinthai.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=33"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}