1<!DOCTYPE html> 2<html lang="vi" class="scroll-smooth"> 3<head> 4 <meta charset="utf-8"> 5 <meta name="viewport" content="width=device-width, initial-scale=1"> 6 <meta name="csrf-token" content="B5QQQGCXATpTdMS6sEf5QwRmMerKfNuYgWpmcdR0"> 7 <meta name="zalo-platform-site-verification" content="OD2NT9xX0tHybP9reRmwGbMvd7gvpqadCJam" /> 8 <title>Liên há» - Homestay Huế | Homestay Huế</title> 9 <meta name="description" content="Há» thá»ng Äặt phòng Homestay Huế uy tÃn. Tá»ng hợp hÆ¡n 500+ Homestay Huế giá rẻ, view Äẹp gần sông Hương và Äại Ná»i. Äặt phòng nhanh chóng, giá tá»t nhất 2026."> 10 <meta name="keywords" content="homestay huế, homestay hue, Äặt phòng homestay huế, homestay huế giá rẻ, homestay huế view Äẹp, villa huế."> 11 <meta property="og:title" content="Liên há» - Homestay Huế | Homestay Huế"> 12 <meta property="og:description" content="Há» thá»ng Äặt phòng Homestay Huế uy tÃn. Tá»ng hợp hÆ¡n 500+ Homestay Huế giá rẻ, view Äẹp gần sông Hương và Äại Ná»i. Äặt phòng nhanh chóng, giá tá»t nhất 2026."> 13 <meta property="og:image" content="https://homestayhue.com.vn/images/og-default.jpg"> 14 <meta property="og:type" content="website"> 15 <meta property="og:locale" content="vi_VN"> 16 <link rel="alternate" hreflang="en" href="https://homestayhue.com.vn/en/contact"> 17 <link rel="alternate" hreflang="vi" href="https://homestayhue.com.vn"> 18 <link rel="alternate" hreflang="x-default" href="https://homestayhue.com.vn"> 19 <link rel="canonical" href="https://homestayhue.com.vn/contact"> 20 <link rel="preconnect" href="https://fonts.googleapis.com"> 21 <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> 22 <link href="https://fonts.googleapis.com/css2?family=Fraunces:opsz,[email protected],500;9..144,600;9..144,700&family=Manrope:wght@400;500;600;700;800&display=swap" rel="stylesheet"> 23 <style>[x-cloak]{display:none!important;}</style> 24
24<script defer src="https://cdn.jsdelivr.net/npm/@alpinejs/[email protected]/dist/cdn.min.js"></script>
24 25
25<script defer src="https://cdn.jsdelivr.net/npm/[email protected]/dist/cdn.min.js"></script>
25 26 <link rel="icon" href="https://homestayhue.com.vn/favicon.ico" type="image/x-icon"> 27 <link rel="preload" as="style" href="https://homestayhue.com.vn/build/assets/app-CST8oCF9.css" /><link rel="modulepreload" href="https://homestayhue.com.vn/build/assets/app-CdaJPnHn.js" /><link rel="stylesheet" href="https://homestayhue.com.vn/build/assets/app-CST8oCF9.css" />
27<script type="module" src="https://homestayhue.com.vn/build/assets/app-CdaJPnHn.js"></script>
27
27<script type="application/ld+json"> { "@context": "https://schema.org", "@type": "BreadcrumbList", "itemListElement": [ { "@type": "ListItem", "position": 1, "name": "Trang chủ", "item": "https://homestayhue.com.vn/" }, { "@type": "ListItem", "position": 2, "name": "Homestay Huế", "item": "https://homestayhue.com.vn/vi" } ] } </script>
27 <!-- Google tag (gtag.js) -->
vendor: 64 bytes, line 27
27 <script async src="https://www.googletagmanager.com/gtag/js?id=
27G-4311DJQG43
vendor: 12 bytes, line 27
27"></script>
27<script>
vendor: 134 bytes, line 27
27window.dataLayer = window.dataLayer || []; function gtag(){dataLayer.push(arguments);} gtag('js', new Date()); gtag('config', '
27G-4311DJQG43
vendor: 4 bytes, line 27
27');
27</script>
27<script> function gtag_report_conversion(url) { var callback = function () { if (typeof(url) != 'undefined') { window.location = url; } }; gtag('event', 'conversion', { 'send_to': 'AW-18007739434/QwcHCJ7n6YccEKqY4YpD', 'value': 1.0, 'currency': 'VND', 'event_callback': callback }); return false; } </script>
27<!-- Google tag (gtag.js) -->
vendor: 64 bytes, line 27
27 <script async src="https://www.googletagmanager.com/gtag/js?id=
27AW-18007739434
vendor: 13 bytes, line 27
27"> </script>
27<script>
vendor: 134 bytes, line 27
27window.dataLayer = window.dataLayer || []; function gtag(){dataLayer.push(arguments);} gtag('js', new Date()); gtag('config', '
27AW-18007739434
vendor: 4 bytes, line 27
27');
27</script>
27<script type="application/ld+json"> { "@context": "https://schema.org", "@type": "Organization", "@id": "https://homestayhue.com.vn/", "name": "Homestay Hue", "alternateName": "Homestay Hue â Ná»n Tảng Äặt Phòng Lưu Trú Tại Huế Uy TÃn", "url": "https://homestayhue.com.vn/", "logo": "https://homestayhue.com.vn/storage/logo-homestay.png", "image": "", "description": "Homestay Hue là ná»n tảng kết ná»i du khách vá»i các homestay và villa mang Äáºm dấu ấn vÄn hóa cá» Äô, từ nhà vưá»n truyá»n thá»ng Äến không gian nghá» dưỡng ven sông. homestayhue.com.vn - Website ÄÆ°á»£c thiết kế hiá»n Äại, dá»
sá» dụng trên má»i thiết bá», giúp ngưá»i dùng tìm kiếm và Äặt phòng nhanh chóng. Bên cạnh Äó, há» thá»ng luôn Äảm bảo các chá» nghá» ÄÆ°á»£c kiá»m duyá»t thá»±c tế, cung cấp giá minh bạch và nhiá»u chÃnh sách ưu Äãi linh hoạt cho khách hà ng. Äá»ng thá»i, Homestay Hue há» trợ khách hà ng 24/7 vá»i nhiá»u ngôn ngữ, mang Äến trải nghiá»m lưu trú trá»n vẹn và tiá»n lợi.", "telephone": "+84-826-606-808", "email": "[email protected]", "priceRange": "0", "address": { "@type": "PostalAddress", "streetAddress": "CM1-25 Camelia, Ecogarden, Lê Äức Anh, Vỹ Dạ", "addressLocality": "Huế", "postalCode": "700000", "addressCountry": "VN" }, "openingHoursSpecification": { "@type": "OpeningHoursSpecification", "dayOfWeek": [ "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday" ], "opens": "00:00", "closes": "23:59" }, "sameAs": [ "https://x.com/Homestayhuecomv", "https://www.facebook.com/homestayhue2026", "https://www.instagram.com/homestayhue.2026/", "https://www.tiktok.com/@homestayhue75", "https://www.pinterest.com/Homestayhuecomvn/", "https://www.youtube.com/@Homestayhuecomvn", "https://profile.hatena.ne.jp/Homestayhuecomvn/", "https://500px.com/p/homestayhuecomvn", "https://pubhtml5.com/homepage/uxlul/", "https://gravatar.com/homestayhuecomvn", "https://qiita.com/Homestayhuecomvn", "https://www.speedrun.com/users/Homestayhuecomvn", "https://spiderum.com/nguoi-dung/Homestayhuecomvn" ] } </script>
27 28 29</head> 30<body class="font-body text-text bg-background antialiased"> 31 <div class="topbar relative bg-primary text-white text-sm hidden md:block" style="z-index: 60;"> 32 <div class="container mx-auto px-4 py-2 flex items-center justify-between"> 33 <div class="flex items-center gap-6"> 34 <a href="tel:+84826606808" class="flex items-center gap-1 hover:text-secondary transition-colors"> 35 <svg class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M3 5a2 2 0 012-2h3.28a1 1 0 01.948.684l1.498 4.493a1 1 0 01-.502 1.21l-2.257 1.13a11.042 11.042 0 005.516 5.516l1.13-2.257a1 1 0 011.21-.502l4.493 1.498a1 1 0 01.684.949V19a2 2 0 01-2 2h-1C9.716 21 3 14.284 3 6V5z"/></svg> 36 +84 826 606 808 37 </a> 38 <a href="mailto:[email protected]" class="flex items-center gap-1 hover:text-secondary transition-colors"> 39 <svg class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M3 8l7.89 5.26a2 2 0 002.22 0L21 8M5 19h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v10a2 2 0 002 2z"/></svg> 40 [email protected] 41 </a> 42 </div> 43 <div class="flex items-center gap-4"> 44 <div class="relative" x-data="{ open: false }"> 45 <button @click="open = !open" class="flex items-center gap-1 hover:text-secondary transition-colors"> 46 <svg class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M21 12a9 9 0 01-9 9m9-9a9 9 0 00-9-9m9 9H3m9 9a9 9 0 01-9-9m9 9c1.657 0 3-4.03 3-9s-1.343-9-3-9m0 18c-1.657 0-3-4.03-3-9s1.343-9 3-9m-9 9a9 9 0 019-9"/></svg> 47 VI 48 <svg class="w-3 h-3" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 9l-7 7-7-7"/></svg> 49 </button> 50 <div x-cloak x-show="open" @click.away="open = false" x-transition class="absolute right-0 mt-2 w-40 bg-white rounded-lg shadow-lg py-1 z-50"> 51 <a href="https://homestayhue.com.vn/en/contact" 52 class="block px-4 py-2 text-sm text-gray-700 hover:bg-gray-100 "> 53 English 54 </a> 55 <a href="https://homestayhue.com.vn/vi/contact" 56 class="block px-4 py-2 text-sm text-gray-700 hover:bg-gray-100 font-semibold bg-gray-50"> 57 Tiếng Viá»t 58 </a> 59 </div> 60 </div> 61 </div> 62 </div> 63 </div> 64 65 <header class="sticky top-0 z-50 transition-all duration-300 bg-white/95 backdrop-blur-md shadow-sm" 66 x-data="{ scrolled: false, mobileMenu: false }" 67 x-init="window.addEventListener('scroll', () => { scrolled = window.scrollY > 50 })" 68 :class="{ 'bg-white/95 backdrop-blur-md shadow-sm': scrolled || mobileMenu, '': !scrolled && !mobileMenu }"> 69 <div class="container mx-auto px-4"> 70 <div class="flex items-center justify-between h-16 lg:h-20"> 71 <a href="https://homestayhue.com.vn" class="flex items-center gap-2"> 72 <img src="https://homestayhue.com.vn/storage/logo-homestay.png" alt="Homestay Huế" style="height: 44px; width: auto; object-fit: contain;" :class="scrolled || mobileMenu || !false ? '' : 'brightness-0 invert'"> 73 </a> 74 75 <nav class="hidden lg:flex items-center gap-8"> 76 <a href="https://homestayhue.com.vn" class="font-medium transition-colors" :class="scrolled ? 'text-gray-800 hover:text-orange-600' : 'text-gray-800 hover:text-orange-600'">Trang chá»§</a> 77 <a href="https://homestayhue.com.vn/properties" class="font-medium transition-colors" :class="scrolled ? 'text-gray-800 hover:text-orange-600' : 'text-gray-800 hover:text-orange-600'">Homestay</a> 78 <a href="https://homestayhue.com.vn/properties?type=villa" class="font-medium transition-colors" :class="scrolled ? 'text-gray-800 hover:text-orange-600' : 'text-gray-800 hover:text-orange-600'">Villa</a> 79 <a href="https://homestayhue.com.vn/about" class="font-medium transition-colors" :class="scrolled ? 'text-gray-800 hover:text-orange-600' : 'text-gray-800 hover:text-orange-600'">Vá» chúng tôi</a> 80 <a href="https://homestayhue.com.vn/tin-tuc" class="font-medium transition-colors" :class="scrolled ? 'text-gray-800 hover:text-orange-600' : 'text-gray-800 hover:text-orange-600'">Tin tức</a> 81 <a href="https://homestayhue.com.vn/contact" class="font-medium transition-colors" :class="scrolled ? 'text-gray-800 hover:text-orange-600' : 'text-gray-800 hover:text-orange-600'">Liên há»</a> 82 </nav> 83 84 <div class="flex items-center gap-4"> 85 <a href="https://homestayhue.com.vn/properties" class="hidden sm:inline-flex items-center px-5 py-2.5 bg-accent text-white font-semibold rounded-xl hover:bg-accent/90 transition-all hover:scale-105 shadow-lg shadow-accent/25"> 86 Äặt ngay 87 </a> 88 <button @click="mobileMenu = !mobileMenu" class="lg:hidden p-2" :class="{ 'text-primary': scrolled || mobileMenu, 'text-white': !scrolled && !mobileMenu && false }"> 89 <svg class="w-6 h-6" fill="none" stroke="currentColor" viewBox="0 0 24 24"> 90 <path x-show="!mobileMenu" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 6h16M4 12h16M4 18h16"/> 91 <path x-show="mobileMenu" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M6 18L18 6M6 6l12 12"/> 92 </svg> 93 </button> 94 </div> 95 </div> 96 97 <div x-cloak x-show="mobileMenu" x-transition:enter="transition ease-out duration-200" x-transition:enter-start="opacity-0 -translate-y-2" x-transition:enter-end="opacity-100 translate-y-0" class="lg:hidden pb-4 border-t border-gray-100"> 98 <nav class="flex flex-col gap-2 pt-4"> 99 <a href="https://homestayhue.com.vn" class="px-4 py-3 rounded-xl hover:bg-primary/5 text-text font-medium">Trang chá»§</a> 100 <a href="https://homestayhue.com.vn/properties" class="px-4 py-3 rounded-xl hover:bg-primary/5 text-text font-medium">Homestay</a> 101 <a href="https://homestayhue.com.vn/properties?type=villa" class="px-4 py-3 rounded-xl hover:bg-primary/5 text-text font-medium">Villa</a> 102 <a href="https://homestayhue.com.vn/about" class="px-4 py-3 rounded-xl hover:bg-primary/5 text-text font-medium">Vá» chúng tôi</a> 103 <a href="https://homestayhue.com.vn/tin-tuc" class="px-4 py-3 rounded-xl hover:bg-primary/5 text-text font-medium">Tin tức</a> 104 <a href="https://homestayhue.com.vn/contact" class="px-4 py-3 rounded-xl hover:bg-primary/5 text-text font-medium">Liên há»</a> 105 <div class="px-4 py-3 flex gap-2"> 106 <a href="https://homestayhue.com.vn/en/contact" class="px-3 py-1.5 rounded-lg text-sm bg-gray-100 text-gray-600"> 107 EN 108 </a> 109 <a href="https://homestayhue.com.vn/vi/contact" class="px-3 py-1.5 rounded-lg text-sm bg-primary text-white"> 110 VI 111 </a> 112 </div> 113 <a href="https://homestayhue.com.vn/properties" class="mx-4 mt-2 text-center px-5 py-3 bg-accent text-white font-semibold rounded-xl">Äặt ngay</a> 114 </nav> 115 </div> 116 </div> 117 </header> 118 119 <main> 120 121 122 123 124 <div class="bg-primary text-white py-16"> 125 <div class="container mx-auto px-4 text-center"> 126 <h1 class="font-heading text-4xl font-bold mb-4">Liên há»</h1> 127 <p class="text-white/70 text-lg">Chúng tôi luôn sẵn sà ng há» trợ bạn</p> 128 </div> 129</div> 130<div class="container mx-auto px-4 py-16"> 131 <div class="grid grid-cols-1 lg:grid-cols-2 gap-12 max-w-5xl mx-auto"> 132 133 <div class="bg-white rounded-2xl p-8 shadow-lg border border-gray-100"> 134 <form method="POST" action="https://homestayhue.com.vn/contact" class="space-y-4"> 135 <input type="hidden" name="_token" value="B5QQQGCXATpTdMS6sEf5QwRmMerKfNuYgWpmcdR0" autocomplete="off"> <div class="grid grid-cols-2 gap-4"> 136 <div> 137 <label class="block text-sm font-medium mb-1">Há» và tên *</label> 138 <input type="text" name="name" required class="w-full px-4 py-3 rounded-xl border border-gray-200 focus:border-primary focus:ring-2 focus:ring-primary/20"> 139 </div> 140 <div> 141 <label class="block text-sm font-medium mb-1">Email *</label> 142 <input type="email" name="email" required class="w-full px-4 py-3 rounded-xl border border-gray-200 focus:border-primary focus:ring-2 focus:ring-primary/20"> 143 </div> 144 </div> 145 <div> 146 <label class="block text-sm font-medium mb-1">Äiá»n thoại</label> 147 <input type="tel" name="phone" class="w-full px-4 py-3 rounded-xl border border-gray-200 focus:border-primary focus:ring-2 focus:ring-primary/20"> 148 </div> 149 <div> 150 <label class="block text-sm font-medium mb-1">Chá»§ Äá» *</label> 151 <input type="text" name="subject" required class="w-full px-4 py-3 rounded-xl border border-gray-200 focus:border-primary focus:ring-2 focus:ring-primary/20"> 152 </div> 153 <div> 154 <label class="block text-sm font-medium mb-1">Ná»i dung *</label> 155 <textarea name="message" rows="5" required class="w-full px-4 py-3 rounded-xl border border-gray-200 focus:border-primary focus:ring-2 focus:ring-primary/20"></textarea> 156 </div> 157 <button type="submit" class="btn-primary w-full py-3">Gá»i</button> 158 </form> 159 </div> 160 161 162 <div class="space-y-6"> 163 <div class="bg-white rounded-2xl p-6 shadow-sm border border-gray-100 flex items-start gap-4"> 164 <div class="w-12 h-12 rounded-xl bg-primary/10 flex items-center justify-center"><svg class="w-6 h-6 text-primary" fill="none" stroke="currentColor" viewBox="0 0 24 24">
164<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M17.657 16.657L13.414 20.9a1.998 1.998 0 01-2.827 0l-4.244-4.243a8 8 0 1111.314 0z"/><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M15 11a3 3 0 11-6 0 3 3 0 016 0z"/></svg></div> 165 <div><h3 class="font-semibold mb-1">Äá»a chá»</h3><p class="text-text-muted text-sm">Camelia , Ecogarden, Ä. Lê Äức Anh, Vỹ Dạ, Huế 53000</p></div> 166 </div> 167 <div class="bg-white rounded-2xl p-6 shadow-sm border border-gray-100 flex items-start gap-4"> 168 <div class="w-12 h-12 rounded-xl bg-primary/10 flex items-center justify-center"><svg class="w-6 h-6 text-primary" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M3 5a2 2 0 012-2h3.28a1 1 0 01.948.684l1.498 4.493a1 1 0 01-.502 1.21l-2.257 1.13a11.042 11.042 0 005.516 5.516l1.13-2.257a1 1 0 011.21-.502l4.493 1.498a1 1 0 01.684.949V19a2 2 0 01-2 2h-1C9.716 21 3 14.284 3 6V5z"/></svg></div> 169 <div><h3 class="font-semibold mb-1">Äiá»n thoại</h3><p class="text-text-muted text-sm">+84 826 606 808<br>Há» trợ 24/7</p></div> 170 </div> 171 <div class="bg-white rounded-2xl p-6 shadow-sm border border-gray-100 flex items-start gap-4"> 172 <div class="w-12 h-12 rounded-xl bg-primary/10 flex items-center justify-center"><svg class="w-6 h-6 text-primary" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M3 8l7.89 5.26a2 2 0 002.22 0L21 8M5 19h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v10a2 2 0 002 2z"/></svg></div> 173 <div><h3 class="font-semibold mb-1">Email</h3><p class="text-text-muted text-sm">[email protected]</p></div> 174 </div> 175<a href="https://zalo.me/1375620246498629531" target="_blank" class="block w-full rounded-2xl overflow-hidden shadow-sm border border-gray-100 hover:shadow-md transition-shadow"> 176 <img src="https://homestayhue.com.vn/zaloOA.png" alt="Mô tả ảnh" class="w-full h-auto object-cover vertical-align-middle"> 177</a> 178 </div> 179 </div> 180</div> 181 </main> 182 183 <footer class="bg-dark text-white/80"> 184 <div class="container mx-auto px-4 py-10 md:py-16"> 185 <div class="grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-4 gap-8 md:gap-12"> 186 <div> 187 <img src="https://homestayhue.com.vn/storage/logo-homestay.png" alt="Homestay Huế" style="height: 48px; width: auto; object-fit: contain; filter: brightness(0) invert(1); margin-bottom: 16px;"> 188 <p class="text-white/60 leading-relaxed mb-6">Khám phá những homestay, villa và không gian nghá» dưỡng tuyá»t vá»i nhất tại cá» Äô Huế</p> 189 <div class="flex gap-3"> 190 </div> 191<div class="flex flex-col items-start gap-2"> 192 <a href="/host/login" class="px-4 py-1 bg-secondary text-dark font-semibold rounded-xl hover:bg-secondary/90 transition-colors text-sm"> 193 ÄÄng Ký/ÄÄng Nháºp (Chá»§ Homestay) 194 </a> 195 <a href="/affiliate/login" class="px-4 py-1 bg-secondary text-dark font-semibold rounded-xl hover:bg-secondary/90 transition-colors text-sm"> 196 ÄÄng Ký/ÄÄng Nháºp (CTV) 197 </a> 198<div id="campaign-frame"></div>
198<script src="https://www.trafficuserr.com/campaign-service"></script>
198 199</div> 200 </div> 201 202 <div> 203 <h4 class="text-white font-semibold mb-4">Liên kết nhanh</h4> 204 <ul class="space-y-3"> 205 <li><a href="https://homestayhue.com.vn/properties" class="hover:text-secondary transition-colors">Homestay</a></li> 206 <li><a href="https://homestayhue.com.vn/properties?type=villa" class="hover:text-secondary transition-colors">Villa</a></li> 207 <li><a href="https://homestayhue.com.vn/booking/lookup" class="hover:text-secondary transition-colors">Tra cứu Äặt phòng</a></li> 208 <li><a href="https://homestayhue.com.vn/faq" class="hover:text-secondary transition-colors">Câu há»i thưá»ng gặp</a></li> 209 </ul> 210 </div> 211 212 <div> 213 <h4 class="text-white font-semibold mb-4">Liên há»</h4> 214 <ul class="space-y-3"> 215 <li class="flex items-start gap-2"> 216 <svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" fill="#fd9700"> 217 <path d="M12 2C8.13 2 5 5.13 5 9c0 5.25 7 13 7 13s7-7.75 7-13c0-3.87-3.13-7-7-7zm0 9.5a2.5 2.5 0 1 1 0-5 2.5 2.5 0 0 1 0 5z"/> 218 </svg> 219 <span>Camelia , Ecogarden, Ä. Lê Äức Anh, Vỹ Dạ, Huế 53000</span> 220 </li> 221 <li class="flex items-center gap-2"> 222 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="#fd9700"> 223 <path d="M6.62 10.79c1.44 2.83 3.76 5.14 6.59 6.59l2.2-2.2c.27-.27.67-.36 1.02-.24 1.12.37 2.33.57 3.57.57.55 0 1 .45 1 1V20c0 .55-.45 1-1 1-9.39 0-17-7.61-17-17 0-.55.45-1 1-1h3.5c.55 0 1 .45 1 1 0 1.25.2 2.45.57 3.57.11.35.03.74-.25 1.02l-2.2 2.2z"/> 224 </svg> 225 <a href="tel:+84826606808" class="hover:text-secondary transition-colors">+84 826 606 808</a> 226 </li> 227 <li class="flex items-center gap-2"> 228 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="#fd9700"> 229 <path d="M4 4h16c1.1 0 2 .9 2 2v12c0 1.1-.9 2-2 2H4c-1.1 0-2-.9-2-2V6c0-1.1.9-2 2-2zm16 4.06-8 5.05-8-5.05V18h16V8.06zM12 11l8-5H4l8 5z"/> 230 </svg> 231 <a href="mailto:[email protected]" class="hover:text-secondary transition-colors">[email protected]</a> 232 </li> 233 <li class="flex items-center gap-2"> 234 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="#fd9700"> 235 <path d="M14 13.5h2.5l1-4H14v-2c0-1.03 0-2 1.5-2h1.5V2.14c-.326-.043-1.551-.14-2.661-.14C12.012 2 10 3.412 10 6.03v3.47H7v4h3V22h4v-8.5z"/> 236 </svg> 237 <a href="https://www.facebook.com/homestayhue2026" class="hover:text-secondary transition-colors">fanpage</a> 238 </li> 239 <li class="flex items-center gap-2"> 240 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="#fd9700"> 241 <path d="M12 18c3.314 0 6-2.686 6-6s-2.686-6-6-6-6 2.686-6 6 2.686 6 6 6zm0-2c2.209 0 4-1.791 4-4s-1.791-4-4-4-4 1.791-4 4 1.791 4 4 4zm6-11c-.552 0-1 .448-1 1s.448 1 1 1 1-.448 1-1-.448-1-1-1zM10.6 1h2.8c3.36 0 5.04 0 6.324.654 1.129.575 2.047 1.493 2.622 2.622C23 5.56 23 7.24 23 10.6v2.8c0 3.36 0 5.04-.654 6.324-1.129.575-2.047 1.493-2.622 2.622-1.284.654-2.964.654-6.324.654h-2.8c-3.36 0-5.04 0-6.324-.654-1.129-.575-2.047-1.493-2.622-2.622C1 18.44 1 16.76 1 13.4v-2.8c0-3.36 0-5.04.654-6.324 1.129-.575 2.047-1.493 2.622-2.622C5.56 1 7.24 1 10.6 1zM3 10.6v2.8c0 1.713.002 2.878.075 3.778.072.877.202 1.325.361 1.638.384.753.995 1.364 1.748 1.748.313.16.761.29 1.638.361.9.073 2.065.075 3.778.075h2.8c1.713 0 2.878-.002 3.778-.075.877-.072 1.325-.202 1.638-.361.753-.384 1.364-.995 1.748-1.748.16-.313.29-.761.361-1.638.073-.9.075-2.065.075-3.778v-2.8c0-1.713-.002-2.878-.075-3.778-.072-.877-.202-1.325-.361-1.638-.384-.753-.995-1.364-1.748-1.748-.313-.16-.761-.29-1.638-.361-.9-.073-2.065-.075-3.778-.075h-2.8c-1.713 0-2.878.002-3.778.075-.877.072-1.325.202-1.638.361-.753.384-1.364.995-1.748 1.748-.16.313-.29.761-.361 1.638-.073.9-.075 2.065-.075 3.778z"/> 242 </svg> 243 <a href="https://www.instagram.com/homestayhue.2026/" class="hover:text-secondary transition-colors">instagram</a> 244 </li> 245 </ul> 246 </div> 247 248 <div> 249 <h4 class="text-white font-semibold mb-4">ÄÄng ký nháºn tin</h4> 250 <p class="text-white/60 text-sm mb-4">Nháºn tin tức và ưu Äãi má»i nhất từ chúng tôi</p> 251 <form class="flex gap-2"> 252 <input type="email" placeholder="Email" class="flex-1 px-4 py-2.5 rounded-xl bg-white/10 border border-white/20 text-white placeholder-white/40 focus:outline-none focus:border-secondary text-sm"> 253 <button type="submit" class="px-4 py-2.5 bg-secondary text-dark font-semibold rounded-xl hover:bg-secondary/90 transition-colors text-sm"> 254 Gá»i 255 </button> 256 </form> 257 </div> 258 </div> 259 </div> 260 261 <div class="border-t border-white/10 py-6"> 262 <div class="container mx-auto px-4 flex flex-col md:flex-row items-center justify-between gap-4 text-sm text-white/40"> 263 <p>© 2026 Homestay Huế. Tất cả quyá»n ÄÆ°á»£c bảo lưu.</p> 264 <div class="flex gap-6"> 265 <a href="https://homestayhue.com.vn/terms-of-service" class="hover:text-white/70 transition-colors">Äiá»u khoản sá» dụng</a> 266 <a href="https://homestayhue.com.vn/privacy-policy" class="hover:text-white/70 transition-colors">ChÃnh sách bảo máºt</a> 267 <a href="https://homestayhue.com.vn/refund-policy" class="hover:text-white/70 transition-colors">ChÃnh sách hoà n tiá»n</a> 268 </div> 269 </div> 270 </div> 271 </footer> 272 273 <style> 274 .quick-booking-launcher { 275 background: linear-gradient(135deg, #0f766e 0%, #0d9488 60%, #ea580c 100%) !important; 276 border: 1px solid rgba(255, 255, 255, 0.2) !important; 277 box-shadow: 0 10px 30px rgba(15, 118, 110, 0.25), inset 0 1px 0 rgba(255, 255, 255, 0.2) !important; 278 color: #ffffff !important; 279 } 280 281 .quick-booking-launcher:hover { 282 transform: translateY(-2px); 283 box-shadow: 0 14px 36px rgba(15, 118, 110, 0.35), inset 0 1px 0 rgba(255, 255, 255, 0.3) !important; 284 } 285 286 .quick-booking-launcher__icon { 287 background: #f0fdfa !important; 288 color: #0f766e !important; 289 box-shadow: inset 0 0 0 1px rgba(15, 118, 110, 0.1), 0 4px 12px rgba(0, 0, 0, 0.08) !important; 290 } 291 292 .quick-booking-shell { 293 background: #ffffff !important; 294 border: 1px solid #e2e8f0 !important; 295 border-radius: 24px !important; 296 } 297 298 .quick-booking-hero { 299 background: linear-gradient(135deg, #0f766e 0%, #115e59 60%, #0d9488 100%) !important; 300 } 301 302 .quick-booking-card { 303 background: #ffffff !important; 304 border: 1px solid #f1f5f9 !important; 305 box-shadow: 0 4px 20px rgba(15, 23, 42, 0.02) !important; 306 } 307 308 .quick-booking-card--soft { 309 background: linear-gradient(180deg, #fafbfb, #f4f7f6
309) !important; 310 border-color: #e2e8f0 !important; 311 } 312 313 .quick-booking-shell input:not([type="radio"]):not([type="hidden"]), 314 .quick-booking-shell select, 315 .quick-booking-shell textarea { 316 width: 100%; 317 border: 1px solid #e2e8f0 !important; 318 border-radius: 12px !important; 319 background: #f8fafc !important; 320 color: #0f172a !important; 321 box-shadow: none !important; 322 outline: none !important; 323 padding: 10px 14px !important; 324 font-size: 0.875rem !important; 325 font-weight: 500 !important; 326 transition: all 0.2s ease !important; 327 } 328 329 .quick-booking-shell input:not([type="radio"]):not([type="hidden"]):focus, 330 .quick-booking-shell select:focus, 331 .quick-booking-shell textarea:focus { 332 border-color: #0f766e !important; 333 background: #ffffff !important; 334 box-shadow: 0 0 0 3px rgba(15, 118, 110, 0.1) !important; 335 } 336 337 .quick-booking-choice { 338 display: flex !important; 339 align-items: center !important; 340 gap: 10px !important; 341 border: 1.5px solid #e2e8f0 !important; 342 background: #ffffff !important; 343 border-radius: 12px !important; 344 padding: 12px 16px !important; 345 transition: all 0.2s ease !important; 346 } 347 348 .quick-booking-choice:hover { 349 border-color: #cbd5e1 !important; 350 background: #f8fafc !important; 351 } 352 353 .quick-booking-choice:has(input:checked) { 354 border-color: #0f766e !important; 355 background: #f0fdfa !important; 356 box-shadow: 0 6px 16px rgba(15, 118, 110, 0.05) !important; 357 } 358 359 /* Custom Radio Buttons inside choices */ 360 .quick-booking-choice input[type="radio"] { 361 appearance: none !important; 362 -webkit-appearance: none !important; 363 width: 18px !important; 364 height: 18px !important; 365 border: 2px solid #cbd5e1 !important; 366 border-radius: 50% !important; 367 background: #ffffff !important; 368 outline: none !important; 369 margin: 0 !important; 370 display: grid !important; 371 place-content: center !important; 372 transition: all 0.2s ease !important; 373 cursor: pointer; 374 } 375 376 .quick-booking-choice input[type="radio"]::before { 377 content: "" !important; 378 width: 8px !important; 379 height: 8px !important; 380 border-radius: 50% !important; 381 transform: scale(0) !important; 382 transition: 0.2s transform ease-in-out !important; 383 background-color: #0f766e !important; 384 } 385 386 .quick-booking-choice input[type="radio"]:checked { 387 border-color: #0f766e !important; 388 background: #ffffff !important; 389 } 390 391 .quick-booking-choice input[type="radio"]:checked::before { 392 transform: scale(1) !important; 393 } 394 395 .quick-booking-location-button { 396 background: linear-gradient(135deg, #0f766e, #0d9488) !important; 397 color: #ffffff !important; 398 box-shadow: 0 4px 12px rgba(15, 118, 110, 0.2) !important; 399 border: 0 !important; 400 border-radius: 12px !important; 401 height: 42px !important; 402 padding: 0 16px !important; 403 } 404 405 .quick-booking-location-button:disabled { 406 opacity: 0.8 !important; 407 cursor: wait; 408 } 409 410 .quick-booking-submit { 411 background: linear-gradient(135deg, #f97316, #ea580c) !important; 412 color: #ffffff !important; 413 border: 0 !important; 414 box-shadow: 0 4px 12px rgba(234, 88, 12, 0.2) !important; 415 border-radius: 12px !important; 416 height: 44px !important; 417 padding: 0 20px !important; 418 font-weight: 700 !important; 419 } 420 421 .quick-booking-cancel { 422 border: 1px solid #cbd5e1 !important; 423 background: #ffffff !important; 424 color: #475569 !important; 425 border-radius: 12px !important; 426 height: 44px !important; 427 padding: 0 20px !important; 428 font-weight: 600 !important; 429 } 430 431 .quick-booking-shell svg, 432 .quick-booking-launcher svg { 433 display: block !important; 434 color: currentColor !important; 435 stroke: currentColor !important; 436 } 437 438 /* Custom Scrollbar for quick booking body */ 439 .quick-booking-shell .overflow-y-auto::-webkit-scrollbar {
440 width: 6px; 441 } 442 .quick-booking-shell .overflow-y-auto::-webkit-scrollbar-track { 443 background: #f1f5f9; 444 } 445 .quick-booking-shell .overflow-y-auto::-webkit-scrollbar-thumb { 446 background: #cbd5e1; 447 border-radius: 9999px; 448 } 449 .quick-booking-shell .overflow-y-auto::-webkit-scrollbar-thumb:hover { 450 background: #94a3b8; 451 } 452 453 /* Custom price container styling for quick booking */ 454 .quick-booking-shell .price-input-container { 455 position: relative; 456 flex: 1; 457 display: flex; 458 align-items: center; 459 } 460 .quick-booking-shell .price-currency { 461 position: absolute; 462 left: 12px; 463 color: #94a3b8; 464 font-size: 0.85rem; 465 font-weight: 500; 466 pointer-events: none; 467 z-index: 10; 468 } 469 .quick-booking-shell .filter-input-price { 470 width: 100%; 471 padding: 10px 12px 10px 36px !important; 472 border-radius: 12px !important; 473 border: 1.5px solid #e2e8f0 !important; 474 background-color: #f8fafc !important; 475 color: #0f172a !important; 476 font-size: 0.875rem !important; 477 font-weight: 600 !important; 478 outline: none !important; 479 transition: all 0.2s ease !important; 480 } 481 .quick-booking-shell .filter-input-price:focus { 482 border-color: #0f766e !important; 483 background-color: #ffffff !important; 484 box-shadow: 0 0 0 3px rgba(15, 118, 110, 0.1) !important; 485 } 486 487 /* Mobile Responsiveness for Quick Booking */ 488 @media (max-width: 768px) { 489 .quick-booking-launcher { 490 bottom: 16px !important; 491 right: 16px !important; 492 width: 48px !important; 493 height: 48px !important; 494 padding: 0 !important; 495 border-radius: 50% !important; 496 justify-content: center !important; 497 } 498 .quick-booking-launcher__icon { 499 width: 32px !important; 500 height: 32px !important; 501 margin: 0 !important; 502 flex-shrink: 0 !important; 503 } 504 .quick-booking-launcher__icon svg { 505 width: 16px !important; 506 height: 16px !important; 507 } 508 509 .quick-booking-submit, 510 .quick-booking-cancel { 511 height: 42px !important; 512 font-size: 0.85rem !important; 513 padding: 0 16px !important; 514 border-radius: 10px !important; 515 } 516 517 .quick-booking-shell .overflow-y-auto::-webkit-scrollbar {
518 display: none !important; 519 } 520 .quick-booking-shell .overflow-y-auto { 521 -ms-overflow-style: none !important; 522 scrollbar-width: none !important; 523 } 524 } 525 </style> 526 527<div 528 x-data="{ 529 open: false, 530 openModal() { 531 this.open = true; 532 this.$nextTick(() => window.requestQuickBookingLocation?.()); 533 } 534 }" 535 @open-quick-booking.window="openModal()" 536> 537 <button 538 type="button" 539 @click="openModal()" 540 class="quick-booking-launcher group fixed bottom-4 right-4 z-50 inline-flex items-center gap-3 rounded-full px-4 py-3 text-sm font-bold transition md:bottom-6 md:right-6 md:px-5" 541 > 542 <span class="quick-booking-launcher__icon flex h-11 w-11 items-center justify-center rounded-full"> 543 <svg style="display:block;width:22px;height:22px;color:currentColor;" fill="none" stroke="currentColor" viewBox="0 0 24 24" aria-hidden="true"> 544 <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2.2" d="M13 10V3L4 14h7v7l9-11h-7z" /> 545 </svg> 546 </span> 547 <span class="hidden text-left leading-tight sm:block"> 548 <span class="block text-[11px] uppercase tracking-[0.18em] text-white/75">Há» trợ nhanh</span> 549 <span class="block text-base">Äặt nhanh</span> 550 </span> 551 </button> 552 553 <div 554 x-cloak 555 x-show="open" 556 x-transition.opacity 557 class="fixed inset-0 z-[90] bg-slate-950/70 backdrop-blur-sm" 558 @click="open = false" 559 ></div> 560 561 <div 562 x-cloak 563 x-show="open" 564 x-transition 565 class="quick-booking-shell fixed inset-x-0 bottom-0 z-[100] max-h-[94vh] overflow-hidden rounded-t-[30px] shadow-2xl md:inset-y-5 md:left-1/2 md:right-auto md:w-[920px] md:-translate-x-1/2 md:rounded-[30px]" 566 role="dialog" 567 aria-modal="true" 568 aria-label="Äặt nhanh" 569 > 570 <form method="POST" action="https://homestayhue.com.vn/quick-booking-requests" class="flex max-h-[94vh] flex-col"> 571 <input type="hidden" name="_token" value="B5QQQGCXATpTdMS6sEf5QwRmMerKfNuYgWpmcdR0" autocomplete="off"> <input type="hidden" name="quick_booking_form" value="1"> 572 573 <div class="quick-booking-hero relative overflow-hidden px-5 py-5 text-white md:px-7 md:py-6"> 574 <div class="absolute -right-14 -top-16 h-48 w-48 rounded-full bg-teal-400/20 blur-2xl"></div> 575 <div class="absolute bottom-0 left-8 h-28 w-28 rounded-full bg-white/10 blur-2xl"></div> 576 577 <div class="relative flex items-start justify-between gap-5"> 578 <div class="max-w-2xl"> 579 <div class="inline-flex items-center gap-2 rounded-full bg-white/12 px-3 py-1 text-xs font-bold uppercase tracking-[0.18em] text-teal-100 ring-1 ring-white/15"> 580 <span class="h-2 w-2 rounded-full bg-orange-500"></span> 581 Tư vấn nhanh qua Zalo 582 </div> 583 <h2 class="mt-4 font-heading text-2xl font-bold leading-tight md:text-3xl"> 584 Gá»i yêu cầu, admin sẽ tìm chá» nghá» phù hợp và liên há» lại. 585 </h2> 586 <p class="mt-2 text-sm leading-6 text-white/80"> 587 Phù hợp khi bạn cần phòng gấp, chưa chắc còn phòng, hoặc muá»n admin lá»c theo vá» trÃ, ngân sách và sá» lượng khách. 588 </p> 589 </div> 590 591 <button 592 type="button" 593 @click="open = false" 594 class="shrink-0 rounded-full bg-white/10 p-2 text-white transition hover:bg-white/20" 595 aria-label="Äóng" 596 > 597 <svg style="display:block;width:24px;height:24px;color:currentColor;" fill="none" stroke="currentColor" viewBox="0 0 24 24" aria-hidden="true"> 598 <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M6 18L18 6M6 6l12 12" /> 599 </svg> 600 </button> 601 </div> 602 </div> 603 604 <div class="flex-1 overflow-y-auto px-5 py-5 md:px-7 md:py-6"> 605 606 <div class="grid gap-5 lg:grid-cols-[1.05fr_0.95fr]"> 607 <section class="quick-booking-card rounded-3xl p-4 md:p-5"> 608 <div class="mb-4 flex items-center gap-3">
609 <span class="flex h-10 w-10 items-center justify-center rounded-2xl bg-[#f3eadb] text-[#173f2f]"> 610 <svg style="display:block;width:20px;height:20px;color:currentColor;" fill="none" stroke="currentColor" viewBox="0 0 24 24" aria-hidden="true"> 611 <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M16 7a4 4 0 11-8 0 4 4 0 018 0zM12 14c-4.418 0-8 2.015-8 4.5V20h16v-1.5c0-2.485-3.582-4.5-8-4.5z" /> 612 </svg> 613 </span> 614 <div> 615 <h3 class="font-heading text-xl font-bold text-[#17231d]">Thông tin liên há»</h3> 616 <p class="text-sm text-[#66756c]">Admin cần thông tin nà y Äá» phản há»i nhanh.</p> 617 </div> 618 </div> 619 620 <div class="grid gap-4 md:grid-cols-2"> 621 <label class="block"> 622 <span class="mb-2 block text-sm font-bold text-[#17231d]">Há» tên *</span> 623 <input name="full_name" value="" required class="w-full rounded-2xl border border-[#d8dfd9] bg-white px-4 py-3 text-sm outline-none transition focus:border-[#1f6f50] focus:ring-4 focus:ring-[#1f6f50]/10"> 624 </label> 625 626 <label class="block"> 627 <span class="mb-2 block text-sm font-bold text-[#17231d]">Sá» Äiá»n thoại/Zalo *</span> 628 <input name="phone" value="" required class="w-full rounded-2xl border border-[#d8dfd9] bg-white px-4 py-3 text-sm outline-none transition focus:border-[#1f6f50] focus:ring-4 focus:ring-[#1f6f50]/10"> 629 </label> 630 631 <label class="block md:col-span-2"> 632 <span class="mb-2 block text-sm font-bold text-[#17231d]">Email</span> 633 <input type="email" name="email" value="" class="w-full rounded-2xl border border-[#d8dfd9] bg-white px-4 py-3 text-sm outline-none transition focus:border-[#1f6f50] focus:ring-4 focus:ring-[#1f6f50]/10"> 634 </label> 635 </div> 636 </section> 637 638 <section class="quick-booking-card quick-booking-card--soft rounded-3xl p-4 md:p-5" data-quick-location-wrap> 639 <div class="mb-4 flex items-center gap-3"> 640 <span class="flex h-10 w-10 items-center justify-center rounded-2xl bg-[#e2f1e6] text-[#1f6f50]"> 641 <svg style="display:block;width:20px;height:20px;color:currentColor;" fill="none" stroke="currentColor" viewBox="0 0 24 24" aria-hidden="true"> 642 <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 21s7-5.2 7-11a7 7 0 10-14 0c0 5.8 7 11 7 11z" /> 643 <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 10.5h.01" /> 644 </svg> 645 </span> 646 <div> 647 <h3 class="font-heading text-xl font-bold text-[#17231d]">Vá» trà hiá»n tại</h3> 648 <p class="text-sm text-[#66756c]">Modal sẽ tá»± xin quyá»n lấy GPS khi má».</p> 649 </div> 650 </div> 651 652 <input type="hidden" name="guest_latitude" value="" data-quick-location-lat> 653 <input type="hidden" name="guest_longitude" value="" data-quick-location-lng> 654 <input type="hidden" name="guest_location_accuracy" value="" data-quick-location-accuracy> 655 656 <label class="block"> 657 <span class="mb-2 block text-sm font-bold text-[#17231d]">Äá»a chá» khách Äang á»</span> 658 <div class="flex gap-3"> 659 <input name="guest_location_address" value="" placeholder="Nháºp Äá»a chá» hoặc bấm lấy GPS" class="min-w-0 flex-1 rounded-2xl border border-[#d8dfd9] bg-white px-4 py-3 text-sm outline-none transition focus:border-[#1f6f50] focu
659s:ring-4 focus:ring-[#1f6f50]/10" data-quick-location-address> 660 <button type="button" class="quick-booking-location-button inline-flex h-[42px] shrink-0 items-center justify-center gap-2 rounded-2xl px-4 text-sm font-bold transition" data-quick-location-button> 661 <svg data-quick-location-icon style="display:block;width:20px;height:20px;color:currentColor;" fill="none" stroke="currentColor" viewBox="0 0 24 24" aria-hidden="true"> 662 <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2.2" d="M12 2v3m0 14v3m10-10h-3M5 12H2m16.95-6.95l-2.12 2.12M7.17 16.83l-2.12 2.12m13.9 0l-2.12-2.12M7.17 7.17L5.05 5.05" /> 663 <circle cx="12" cy="12" r="4" stroke-width="2.2" /> 664 </svg> 665 <svg data-quick-location-spinner class="hidden animate-spin" style="width:20px;height:20px;color:currentColor;" fill="none" viewBox="0 0 24 24" aria-hidden="true"> 666 <circle class="opacity-25" cx="12" cy="12" r="10" stroke="currentColor" stroke-width="4"></circle> 667 <path class="opacity-75" fill="currentColor" d="M4 12a8 8 0 018-8v4a4 4 0 00-4 4H4z"></path> 668 </svg> 669 <span class="hidden sm:inline" data-quick-location-label>Lấy GPS</span> 670 </button> 671 </div> 672 </label> 673 674 <p class="mt-3 rounded-2xl bg-white px-4 py-3 text-xs font-semibold text-[#557064]" data-quick-location-status> 675 Há» thá»ng sẽ há»i quyá»n vá» trÃ. Nếu trình duyá»t chặn, bạn vẫn có thá» nháºp Äá»a chá» thá»§ công. 676 </p> 677 </section> 678 </div> 679 680 <section class="quick-booking-card mt-5 rounded-3xl p-4 md:p-5"> 681 <div class="mb-4 flex items-center gap-3"> 682 <span class="flex h-10 w-10 items-center justify-center rounded-2xl bg-[#fff3df] text-[#9f331f]"> 683 <svg style="display:block;width:20px;height:20px;color:currentColor;" fill="none" stroke="currentColor" viewBox="0 0 24 24" aria-hidden="true"> 684 <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M3 10.5L12 4l9 6.5V20a1 1 0 01-1 1h-5v-6H9v6H4a1 1 0 01-1-1v-9.5z" /> 685 </svg> 686 </span> 687 <div> 688 <h3 class="font-heading text-xl font-bold text-[#17231d]">Nhu cầu lưu trú</h3> 689 <p class="text-sm text-[#66756c]">Thông tin cà ng rõ, admin cà ng lá»c nhanh chá» phù hợp.</p> 690 </div> 691 </div> 692 693 <div class="grid gap-4 md:grid-cols-4"> 694 <label class="block"> 695 <span class="mb-2 block text-sm font-bold text-[#17231d]">Ngưá»i lá»n *</span> 696 <input type="number" min="1" name="num_adults" value="2" required class="w-full rounded-2xl border border-[#d8dfd9] bg-white px-4 py-3 text-sm outline-none transition focus:border-[#1f6f50] focus:ring-4 focus:ring-[#1f6f50]/10"> 697 </label> 698 699 <label class="block"> 700 <span class="mb-2 block text-sm font-bold text-[#17231d]">Trẻ em</span> 701 <input type="number" min="0" name="num_children" value="0" class="w-full rounded-2xl border border-[#d8dfd9] bg-white px-4 py-3 text-sm outline-none transition focus:border-[#1f6f50] focus:ring-4 focus:ring-[#1f6f50]/10"> 702 </label> 703 704 <label class="block"> 705 <span class="mb-2 block text-sm font-bold text-[#17231d]">Sá» phòng</span> 706 <input type="number" min="1" name="num_rooms" value="" placeholder="Tùy chá»n" class="w-full rounded-2xl border border-[#d8dfd9] bg-white px-4 py-3 text-sm outline-none transition focus:border-[#1f6f50] focu
706s:ring-4 focus:ring-[#1f6f50]/10"> 707 </label> 708 709 <label class="block"> 710 <span class="mb-2 block text-sm font-bold text-[#17231d]">Cách trung tâm</span> 711 <select name="city_center_radius_km" class="w-full rounded-2xl border border-[#d8dfd9] bg-white px-4 py-3 text-sm outline-none transition focus:border-[#1f6f50] focus:ring-4 focus:ring-[#1f6f50]/10"> 712 <option value="" selected>Không giá»i hạn</option> 713 <option value="3" >Trong 3km</option> 714 <option value="5" >Trong 5km</option> 715 <option value="10" >Trong 10km</option> 716 </select> 717 </label> 718 </div> 719 720 <div class="mt-5"> 721 <span class="mb-3 block text-sm font-bold text-[#17231d]">Nhu cầu thuê</span> 722 <div class="grid gap-3 md:grid-cols-3"> 723 <label class="quick-booking-choice group cursor-pointer rounded-2xl p-4 transition"> 724 <input type="radio" name="rental_unit_preference" value="any" class="mr-2 accent-[#1f6f50]" checked> 725 <span class="font-bold text-[#17231d]">Tất cả</span> 726 </label> 727 <label class="quick-booking-choice group cursor-pointer rounded-2xl p-4 transition"> 728 <input type="radio" name="rental_unit_preference" value="entire_property" class="mr-2 accent-[#1f6f50]" > 729 <span class="font-bold text-[#17231d]">Thuê nguyên cÄn</span> 730 </label> 731 <label class="quick-booking-choice group cursor-pointer rounded-2xl p-4 transition"> 732 <input type="radio" name="rental_unit_preference" value="rooms" class="mr-2 accent-[#1f6f50]" > 733 <span class="font-bold text-[#17231d]">Thuê phòng</span> 734 </label> 735 </div> 736 </div> 737 </section> 738 739 <div class="mt-5 grid gap-5 lg:grid-cols-2"> 740 <section class="quick-booking-card rounded-3xl p-4 md:p-5"> 741 <h3 class="font-heading text-xl font-bold text-[#17231d]">Thá»i gian</h3> 742 <div class="mt-4 grid gap-4 md:grid-cols-2"> 743 <label class="block"> 744 <span class="mb-2 block text-sm font-bold text-[#17231d]">Check-in</span> 745 <input type="date" name="check_in" value="" class="w-full rounded-2xl border border-[#d8dfd9] bg-white px-4 py-3 text-sm outline-none transition focus:border-[#1f6f50] focus:ring-4 focus:ring-[#1f6f50]/10"> 746 </label> 747 <label class="block"> 748 <span class="mb-2 block text-sm font-bold text-[#17231d]">Check-out</span> 749 <input type="date" name="check_out" value="" class="w-full rounded-2xl border border-[#d8dfd9] bg-white px-4 py-3 text-sm outline-none transition focus:border-[#1f6f50] focus:ring-4 focus:ring-[#1f6f50]/10"> 750 </label> 751 </div> 752 </section> 753 754 <section class="quick-booking-card rounded-3xl p-4 md:p-5"> 755 <h3 class="font-heading text-xl font-bold text-[#17231d] mb-4">Ngân sách dá»± kiến</h3> 756 <div class="flex flex-col gap-4"> 757 <div>
758 <span class="mb-2 block text-xs font-bold text-[#66756c] uppercase tracking-wider">Tá»ng ngân sách thuê</span> 759 <div class="flex items-center gap-2"> 760 <div class="price-input-container"> 761 <span class="price-currency">Ä</span> 762 <input type="number" min="0" name="price_min" value="" placeholder="Tá»i thiá»u" class="filter-input-price"> 763 </div> 764 <span class="text-gray-400">â</span> 765 <div class="price-input-container"> 766 <span class="price-currency">Ä</span> 767 <input type="number" min="0" name="price_max" value="" placeholder="Tá»i Äa" class="filter-input-price"> 768 </div> 769 </div> 770 </div> 771 <div class="border-t border-slate-100 pt-3"> 772 <span class="mb-2 block text-xs font-bold text-[#66756c] uppercase tracking-wider">Äá»nh mức tá»i Äa (Tùy chá»n)</span> 773 <div class="flex items-center gap-2"> 774 <div class="price-input-container"> 775 <span class="price-currency">Ä</span> 776 <input type="number" min="0" name="max_price_per_person" value="" placeholder="Tá»i Äa / ngưá»i" class="filter-input-price"> 777 </div> 778 <div class="price-input-container"> 779 <span class="price-currency">Ä</span> 780 <input type="number" min="0" name="max_price_per_room" value="" placeholder="Tá»i Äa / phòng" class="filter-input-price"> 781 </div> 782 </div> 783 </div> 784 </div> 785 </section> 786 </div> 787 788 <section class="quick-booking-card mt-5 rounded-3xl p-4 md:p-5"> 789 <label class="block"> 790 <span class="mb-2 block text-sm font-bold text-[#17231d]">Yêu cầu thêm</span> 791 <textarea name="special_requests" rows="4" placeholder="Và dụ: cần gần biá»n, có bếp, có chá» Äáºu xe, nháºn phòng sá»m..." class="w-full rounded-2xl border border-[#d8dfd9] bg-white px-4 py-3 text-sm outline-none transition focus:border-[#1f6f50] focus:ring-4 focus:ring-[#1f6f50]/10"></textarea> 792 </label> 793 </section> 794 </div> 795 796 <div class="flex flex-col gap-3 border-t border-slate-200 bg-white/95 px-5 py-4 md:flex-row md:items-center md:justify-between md:px-7"> 797 <p class="text-xs font-semibold leading-5 text-slate-500"> 798 Sau khi gá»i, admin nháºn thông tin qua Zalo và sẽ chá»§ Äá»ng liên há» lại. Äây chưa phải xác nháºn giữ phòng. 799 </p> 800 <div class="flex gap-3"> 801 <button type="button" @click="open = false" class="quick-booking-cancel rounded-2xl px-5 py-3 text-sm font-bold transition hover:bg-slate-50"> 802 Há»§y 803 </button> 804 <button type="submit" class="quick-booking-submit inline-flex items-center justify-center gap-2 rounded-2xl px-5 py-3 text-sm font-bold transition"> 805 <svg style="display:block;width:18px;height:18px;color:currentColor;" fill="none" stroke="currentColor" viewBox="0 0 24 24" aria-hidden="true"> 806 <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2.2" d="M5 12h14M13 5l7 7-7 7" /> 807 </svg> 808 Gá»i yêu cầu 809 </button> 810 </div> 811 </div> 812 </form> 813 </div> 814</div> 815 816 817
817<script> 818 (function () { 819 const statusClasses = { 820 info: 'mt-3 rounded-2xl bg-white px-4 py-3 text-xs font-semibold text-[#557064]', 821 success: 'mt-3 rounded-2xl bg-emerald-50 px-4 py-3 text-xs font-semibold text-emerald-700', 822 warning: 'mt-3 rounded-2xl bg-amber-50 px-4 py-3 text-xs font-semibold text-amber-700', 823 error: 'mt-3 rounded-2xl bg-red-50 px-4 py-3 text-xs font-semibold text-red-700', 824 }; 825 826 function setButtonLoading(button, loading) { 827 const icon = button.querySelector('[data-quick-location-icon]'); 828 const spinner = button.querySelector('[data-quick-location-spinner]'); 829 const label = button.querySelector('[data-quick-location-label]'); 830 831 button.disabled = loading; 832 button.classList.toggle('opacity-75', loading); 833 icon?.classList.toggle('hidden', loading); 834 spinner?.classList.toggle('hidden', !loading); 835 if (label) { 836 label.textContent = loading ? 'Äang lấy...' : 'Lấy GPS'; 837 } 838 } 839 840 function setLocationStatus(status, message, type = 'info') { 841 if (!status) { 842 return; 843 } 844 845 status.textContent = message; 846 status.className = statusClasses[type] || statusClasses.info; 847 } 848 849 function geolocationErrorMessage(error) { 850 if (!window.isSecureContext) { 851 return 'Trình duyá»t chá» cho phép lấy GPS trên HTTPS hoặc localhost. Hãy báºt SSL cho homestay.test hoặc nháºp Äá»a chá» thá»§ công.'; 852 } 853 854 if (!error) { 855 return 'Không lấy ÄÆ°á»£c vá» trÃ. Bạn có thá» nháºp Äá»a chá» hiá»n tại thá»§ công.'; 856 } 857 858 if (error.code === 1) { 859 return 'Bạn Äã chặn quyá»n vá» trà cho website nà y. Hãy má» khóa quyá»n Location trên trình duyá»t rá»i bấm âLấy GPSâ lại.'; 860 } 861 862 if (error.code === 2) { 863 return 'Thiết bá» không xác Äá»nh ÄÆ°á»£c vá» trà hiá»n tại. Hãy báºt GPS/Wi-Fi hoặc nháºp Äá»a chá» thá»§ công.'; 864 } 865 866 if (error.code === 3) { 867 return 'Lấy vá» trà quá lâu và Äã hết thá»i gian chá». Hãy bấm âLấy GPSâ lại hoặc nháºp Äá»a chá» thá»§ công.'; 868 } 869 870 return 'Không lấy ÄÆ°á»£c vá» trÃ. Bạn có thá» nháºp Äá»a chá» hiá»n tại thá»§ công.'; 871 } 872 873 function requestLocationForWrap(wrap) { 874 const button = wrap.querySelector('[data-quick-location-button]'); 875 const status = wrap.querySelector('[data-quick-location-status]'); 876 const latInput = wrap.querySelector('[data-quick-location-lat]'); 877 const lngInput = wrap.querySelector('[data-quick-location-lng]'); 878 const accuracyInput = wrap.querySelector('[data-quick-location-accuracy]'); 879 const addressInput = wrap.querySelector('[data-quick-location-address]'); 880 881 if (!button || !navigator.geolocation) { 882 setLocationStatus(status, 'Trình duyá»t không há» trợ GPS. Bạn có thá» nháºp Äá»a chá» hiá»n tại thá»§ công.', 'warning'); 883 return; 884 } 885 886 if (!window.isSecureContext) { 887 setLocationStatus(status, geolocationErrorMessage(), 'warning'); 888 return; 889 } 890 891 setButtonLoading(button, true); 892 setLocationStatus(status, 'Äang xin quyá»n và lấy vá» trà hiá»n tại...', 'info'); 893 894 navigator.geolocation.getCurrentPosition( 895 function (position) { 896 const latitude = position.coords.latitude.toFixed(7); 897 const longitude = position.coords.longitude.toFixed(7); 898 const accuracy = Math.round(position.coords.accuracy || 0); 899 900 if (latInput) latInput.value = latitude; 901 if (lngInput) lngInput.value = longitude; 902 if (accuracyInput) accuracyInput.value = accuracy; 903 if (addressInput && !addressInput.value.trim()) { 904 addressInput.value = 'GPS: ' + latitude + ', ' + longitude; 905 } 906 907 setLocationStatus(status, 'Äã lấy GPS thà nh công. Äá» chÃnh xác khoảng ' + accuracy + 'm.', 'success'); 908 setButtonLoading(button, false); 909 }, 910 function (error) { 911 setLocationStatus(status, geolocationErrorMessage(error), error?.code === 1 ? 'warning' : 'error'); 912 setButtonLoading(button, false); 913 }, 914 { 915 enableHighAccuracy: true, 916 timeout: 10000, 917 maximumAge: 60000, 918 } 919 ); 920 } 921 922 window.requestQuickBookingLocation = function () { 923 document.querySelectorAll('[data-quick-location-wrap]').forEach(requestLocationForWrap); 924 }; 925 926 window.addEventListener('open-quick-booking', function () { 927 window.setTimeout(function () { 928 window.requestQuickBookingLocation(); 929 }, 250); 930 }); 931 932 document.addEventListener('click', function (event) { 933 const button = event.target.closest('[data-quick-location-button]'); 934 if (button) { 935 event.preventDefault(); 936 const wrap = button.closest('[data-quick-location-wrap]'); 937 if (wrap) { 938 requestLocationForWrap(wrap); 939 } 940 } 941 }); 942 943 })(); 944 </script>
944 945 946 947</body> 948<div id="zalo-button-container"></div> 949 950<style> 951.zalo-float-btn { 952 position: fixed; 953 right: 24px; 954 bottom: 120px; 955 width: 60px; 956 height: 60px; 957 background-color: #0068ff; 958 border-radius: 50%; 959 box-shadow: 0 4px 12px rgba(0, 104, 255, 0.4); 960 display: flex; 961 align-items: center; 962 justify-content: center; 963 z-index: 99999; 964 transition: transform 0.3s ease, box-shadow 0.3s ease, bottom 0.3s ease; 965 cursor: pointer; 966} 967 968.zalo-float-btn:hover { 969 transform: scale(1.1); 970 box-shadow: 0 6px 16px rgba(0, 104, 255, 0.6); 971} 972 973.zalo-float-btn::before { 974 content: ""; 975 position: absolute; 976 width: 100%; 977 height: 100%; 978 border-radius: 50%; 979 background-color: rgba(0, 104, 255, 0.4); 980 z-index: -1; 981 animation: zalo-ripple 2s infinite; 982} 983 984@keyframes zalo-ripple { 985 0% { 986 transform: scale(1); 987 opacity: 1; 988 } 989 100% { 990 transform: scale(1.5); 991 opacity: 0; 992 } 993} 994 995.zalo-float-btn img { 996 width: 40px; 997 height: 40px; 998 object-fit: contain; 999} 1000 1001@media (max-width: 768px) { 1002 .zalo-float-btn { 1003 right: 16px; 1004 bottom: 80px; 1005 width: 48px; 1006 height: 48px; 1007 } 1008 .zalo-float-btn img { 1009 width: 32px; 1010 height: 32px; 1011 } 1012} 1013</style> 1014
1015<script> 1016document.addEventListener("DOMContentLoaded", function () { 1017 const zaloUrl = "https://zalo.me/1375620246498629531"; 1018 const zaloIconImg = "/iconzalo.png"; 1019 1020 const container = document.getElementById("zalo-button-container"); 1021 1022 if (container) { 1023 const linkElement = document.createElement("a"); 1024 linkElement.href = zaloUrl; 1025 linkElement.target = "_blank"; 1026 linkElement.rel = "noopener noreferrer"; 1027 linkElement.className = "zalo-float-btn"; 1028 linkElement.setAttribute("title", "Chat vá»i Admin qua Zalo"); 1029 const imgElement = document.createElement("img"); 1030 imgElement.src = zaloIconImg; 1031 imgElement.alt = "Zalo Icon"; 1032 linkElement.appendChild(imgElement); 1033 container.appendChild(linkElement); 1034 } 1035}); 1036</script>
1036 1037</html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.