# 2026年新春富國島「珍珠綺夢」5日深度奢華行旅

- 連結：https://cloudsea35.com/phu-quoc-pearl-dream-2026/
- 發佈時間：2026-02-03T10:33:31+08:00
- 作者：David

2026年新春富國島「珍珠綺夢」5日深度奢華行旅 @import url('https://fonts.googleapis.com/css2?family=Noto+Sans+TC:wght@400;500;700;900&display=swap'); * { font-family: 'Noto Sans TC', sans-serif; } .no-scrollbar::-webkit-scrollbar { display: none; } .no-scrollbar { -ms-overflow-style: none; scrollbar-width: none; } @keyframes fadeIn { from { opacity: 0; transform: translateY(10px); } to { opacity: 1; transform: translateY(0); } } .animate-fade-in { animation: fadeIn 0.3s ease-out; } .snap-x { scroll-snap-type: x mandatory; } .snap-start { scroll-snap-align: start; } &lt;/style&gt; &lt;script&gt; // Tour Data const tourData = { title: "2026年新春富國島「珍珠綺夢」5日深度奢華行旅", subtitle: "星宇直飛・北島不夜城・南島跳島・海洋之吻煙火秀", guide: { name: "陳若穎 Mollie", avatar: "https://api.dicebear.com/7.x/avataaars/svg?seed=Mollie&backgroundColor=ffdfbf", phone: "0934389557", line: "joying517" }, flight: { outbound: { code: "JX705", route: "TPE-PQC", time: "14:40 - 17:40" }, inbound: { code: "JX1706", route: "PQC-TPE", time: "16:20 - 21:00" } }, importantInfo: [ { icon: "star", title: "資深導遊私房景點 (必收)", content: [ "指甲島鞦韆：椰林間面海鞦韆，背景是蒂芬妮藍海水的絕美角落，請導遊指引。", "日落小鎮「龍梯」：蜿蜒如龍的馬賽克拼貼樓梯，高第建築風格，位於小鎮角落易錯過。", "Grand World 泰迪熊博物館：外觀是一隻巨大的泰迪熊，不購票進場也要在門口合影。", "竹之傳奇 (Bamboo Legend)：由 4.2 萬根竹子打造，無釘子結構的工藝極致。" ] }, { icon: "utensils", title: "在地美食口袋名單", content: [ "建江米粉 (Bun Quay)：特色是現場自製魚漿、蝦漿，必體驗自調沾醬 (金桔+辣椒+鹽糖)。", "生鯡魚沙拉 (Goi Ca Trich)：富國島名菜，搭配椰絲、洋蔥用米紙捲起，完全無腥味。", "涵寧漁村花蟹 (Flower Crab)：個頭不大但肉質極其鮮甜緊實，簡單蒸煮沾胡椒鹽最美味。" ] }, { icon: "file-text", title: "簽證與入境 (30天免簽特區)", content: [ "政策：富國島是越南唯一免簽特區，必須「直飛」或轉機但不入境越南本土。", "護照效期：需 6 個月以上 (以 2026/02/06 起算)。", "必備文件：務必列印或截圖「30天內離境機票證明 (JX1706)」，移民官會檢查。" ] }, { icon: "cloud-sun", title: "2月黃金氣候與穿著", content: [ "氣候：2月是乾季，最舒適的月份。均溫 25-28°C，極少降雨。", "日落時間：約 18:08 - 18:14 (安排晚餐的關鍵錨點)。", "穿搭：建議白色/亮黃色洋裝拍照最美。早晚/車上有溫差，請帶薄外套。" ] }, { icon: "money-bill", title: "貨幣與小費攻略", content: [ "匯率心算：去掉三個零，再乘以 1.3 = 台幣概估 (例: 100k VND ≈ 130 TWD)。", "換匯：建議帶美金去當地銀樓 (Robinson Pearl) 換越盾。", "床頭小費：20,000 VND / 房 / 晚。", "按摩小費：50,000 - 100,000 VND / 人。" ] }, { icon: "triangle-exclamation", title: "醫療與行前打包 Check List", content: [ "保險：強烈建議加保「海外突發疾病」與「旅遊不便險」。", "藥品：暈船藥 (Day 3 出海必備)、腸胃藥、防蚊液 (含DEET)、蘆薈凝膠。", "電子：網卡建議買 Viettel 或 Vinaphone (離島訊號佳)。" ] } ], days: [ { date: "02/06", dayNum: "Day 1", theme: "初見珍珠・沉浸不夜城", locationQuery: "Grand World Phu Quoc", transport: "星宇航空 JX705 + 專屬包車", highlights: ["星宇直飛免簽", "竹之傳奇工藝", "威尼斯的顏色大秀"], meals: { b: "敬請自理", l: "機上套餐", d: "道地韓式燒烤自助餐" }, hotel: "Wyndham Garden Grand World", image: "https://images.unsplash.com/photo-1559592413-7cec4d0cae2b?q=80&w=1000&auto=format&fit=crop", schedule: [ { time: "14:40", activity: "星宇航空啟程", todo: "搭乘 JX705 直飛富國島 (17:40 抵達)", mapQuery: "Taoyuan Airport Terminal 2", travelAdvice: "建議在機上先整理隨身衣物，因下機後會立刻感受到熱帶濕熱空氣。導遊與司機將在出口舉牌等候。", referenceLinks: [{ label: "星宇航空官網", url: "https://www.starlux-airlines.com/" }] }, { time: "19:00", activity: "韓式燒烤晚餐", todo: "北島特色饗宴，生菜包肉解膩", mapQuery: "Grand World Phu Quoc", travelAdvice: "Grand World 韓國遊客多，韓式料理水準極高。導遊將協助示範正宗越式混搭韓式的沾醬調法。" }, { time: "20:30", activity: "Grand World 深度遊", todo: "竹之傳奇 &amp; 泰迪熊博物館", mapQuery: "Bamboo Legend Grand World", travelAdvice: "【必玩清單】竹之傳奇 (4.2萬根竹子無釘結構)、泰迪熊博物館 (外觀合影)、當代藝術公園。【演出】威尼斯運河迷你歌劇 (15:00-18:30 不定時)。", referenceLinks: [{ label: "Grand World 官網介紹", url: "https://vinwonders.com/vi/grand-world-phu-quoc/" }] }, { time: "21:30", activity: "《威尼斯的顏色》", todo: "壓軸水舞光雕秀 (Colors of Venice)", mapQuery: "Lake of Love Grand World", travelAdvice: "【表演時間】每日 21:30 - 22:00。【最佳觀賞點】愛情湖中央廣場橋上 (建議 21:10 卡位)。結合機械扇子、真人舞蹈與 3D 投影。" }, { time: "22:15", activity: "入住飯店", todo: "步行或接駁車回房，或續攤夜市", mapQuery: "Wyndham Garden Grand World Phu Quoc", travelAdvice: "Wyndham 位於核心區，若有餘力可步行前往園區內的 Indochine Night Market，無需受限團體車次。" } ] }, { date: "02/07", dayNum: "Day 2", theme: "野性呼喚・懸崖日落饗宴", locationQuery: "Vinpearl Safari Phu Quoc", transport: "園區接駁車 / 包車", highlights: ["Safari 猛獸巴士", "美人魚夢幻秀", "On The Rock 絕美夕陽"], meals: { b: "飯店豐盛自助餐 (推薦 7:00-8:00)", l: "園區自理 (推薦長頸鹿餐廳)", d: "Mango Bay On The Rock" }, hotel: "Wyndham Garden Grand World", image: "https://images.unsplash.com/photo-1540206351-d6465b3ac5c1?q=80&w=1000&auto=format&fit=crop", schedule: [ { time: "09:00", activity: "Safari 野生動物園", todo: "猛獸區巴士、環尾狐猴互動", mapQuery: "Vinpearl Safari Phu Quoc", drivingTime: "約 10 分鐘", travelAdvice: "【必看表演】Zulu 迎賓舞 (09:20/11:30/15:30)、鳥類飛行秀 (10:00/14:00)。【必玩】VIP 遊園車猛獸區 (人被關籠子)、環尾狐猴零距離接觸。" }, { time: "11:30", activity: "長頸鹿餐廳", todo: "親手餵食長頸鹿 (網紅照必拍)", mapQuery: "Giraffe Restaurant", travelAdvice: "【攻略】必買 30k VND 紅蘿蔔條，這是長頸鹿看鏡頭的唯一誘餌。請注意長頸鹿舌頭有黏性。" }, { time: "13:30", activity: "巨龜水族館", todo: "The Sea Shell 避暑 &amp; 美人魚秀", mapQuery: "The Sea Shell Aquarium", drivingTime: "約 10 分鐘 (園區接駁)", travelAdvice: "【表演時間】美人魚秀 (11:00 / 14:00)、餵食秀 (15:00)。外型像巨龜，冷氣強勁，是中午最佳避暑點。" }, { time: "15:00", activity: "VinWonders 樂園", todo: "宙斯之怒、水上樂園", mapQuery: "VinWonders Phu Quoc", travelAdvice: "【必玩清單】宙斯之怒 (世界級高速過山車)、Eagle Warrior (室內過山車)、Typhoon World (水上樂園)。" }, { time: "17:30", activity: "On The Rock 晚餐", todo: "富國島最美日落餐廳 (已預約)", mapQuery: "On The Rock Restaurant Mango Bay", drivingTime: "約 30 分鐘", travelAdvice: "【必點】鮮蝦柚子沙拉、羅望子蟹 (Tamarind Crab)。推薦點 Green Mango Daiquiri 佐夕陽。日落約 18:10。" } ] }, { date: "02/08", dayNum: "Day 3", theme: "南島跳島・異形海灘火舞", locationQuery: "An Thoi Port", transport: "專屬快艇 + 包車", highlights: ["指甲島蒂芬妮藍", "月亮海灣 SUP", "Sailing Club 火舞秀"], meals: { b: "飯店內用", l: "離島海鮮風味餐", d: "Sandals 西式融合料理" }, hotel: "Wyndham Garden Grand World", image: "https://images.unsplash.com/photo-1544644181-1484b3fdfc62?q=80&w=1000&auto=format&fit=crop", schedule: [ { time: "09:30", activity: "南島快艇出海", todo: "指甲島、野鴿島 (珊瑚公園)", mapQuery: "An Thoi Port", travelAdvice: "【指甲島】尋找椰林間的面海鞦韆拍照。【野鴿島】浮潛請穿涉水鞋防珊瑚刮傷。快艇較穩但易暈者仍建議吃藥。" }, { time: "11:30", activity: "月亮海灣 SUP", todo: "May Rut Island 立槳體驗 + 空拍美照", mapQuery: "May Rut Island", travelAdvice: "這裡水質最清澈，特別安排 SUP 體驗，並由工作人員協助「高空空拍」，建議穿亮色泳衣效果絕佳。" }, { time: "16:00", activity: "Sunset Sanato", todo: "異形沙灘：大象裝置藝術、精靈人頭", mapQuery: "Sunset Sanato Beach Club", travelAdvice: "Golden Hour (日落前一小時) 陽光灑在 Dali 風格雕塑上的剪影最美。可在沙灘懶骨頭小酌一杯。" }, { time: "18:30", activity: "Sandals 晚餐", todo: "Sailing Club 享用精緻晚餐", mapQuery: "Sailing Club Phu Quoc", travelAdvice: "推薦窯烤披薩 (Wood-fired Pizza) 與澳洲牛排。環境優雅，不同於夜市喧囂。" }, { time: "19:30", activity: "熱血火舞秀", todo: "觀賞 Fire Dance Show", mapQuery: "Sailing Club Phu Quoc", travelAdvice: "【表演時間】通常 19:30 或 20:00 開始。富國島夜生活標誌體驗！表演者在沙灘揮舞火球，氣氛極佳。" } ] }, { date: "02/09", dayNum: "Day 4", theme: "跨海飛越・海洋之吻大秀", locationQuery: "Sunset Town Phu Quoc", transport: "包車接送", highlights: ["世界最長纜車", "地中海日落小鎮", "Kiss of the Sea 煙火"], meals: { b: "飯店內用", l: "香島自助餐 (Mango)", d: "日落小鎮景觀餐廳" }, hotel: "Wyndham Garden Grand World", image: "https://images.unsplash.com/photo-1583207804784-198ba4353030?q=80&w=1000&auto=format&fit=crop", schedule: [ { time: "09:30", activity: "跨海纜車", todo: "安泰站 (羅馬競技場風格) 出發", mapQuery: "Hon Thom Cable Car", travelAdvice: "【重要】纜車午休時間為 11:30 - 13:30 停運。我們安排此時段在島上用餐與遊玩，完美避開。" }, { time: "10:00", activity: "香島自然公園", todo: "木造雲霄飛車、水上樂園", mapQuery: "Sun World Hon Thom Nature Park", travelAdvice: "【必玩清單】The Roaring Timbers (木造雲霄飛車)、Eagle's Eye (360度觀景塔)、Aquatopia 水樂園 (漂漂河/滑水道)。" }, { time: "15:00", activity: "地中海小鎮", todo: "打卡中央鐘樓、龍梯、龐貝遺跡", mapQuery: "Sunset Town Phu Quoc", travelAdvice: "還原義大利阿瑪菲海岸。必找隱藏景點「龍梯」，馬賽克拼貼非常有高第風格。適合穿長洋裝街拍。" }, { time: "17:30", activity: "親吻橋 (Kiss Bridge)", todo: "見證牛郎織女的距離", mapQuery: "Kiss Bridge Phu Quoc", travelAdvice: "兩橋中間僅隔 30 公分，是觀賞夕陽落入海平面的絕佳位置 (行程贈送門票)。" }, { time: "21:00", activity: "《海洋之吻》", todo: "Kiss of the Sea 多媒體煙火秀", mapQuery: "Kiss of The Sea Show", travelAdvice: "【表演時間】21:00 準時開演。世界最大海上劇場！結合水幕、雷射、火光。結尾有長達 7 分鐘的絢麗煙火。" } ] }, { date: "02/10", dayNum: "Day 5", theme: "山頂慢活・滿載而歸", locationQuery: "Chuon Chuon Bistro", transport: "包車 + 星宇航空 JX1706", highlights: ["百萬美金海景咖啡", "金剛超市最後衝刺", "溫暖的家"], meals: { b: "飯店內用", l: "Chuồn Chuồn Bistro", d: "機上套餐" }, hotel: "溫暖的家", image: "https://images.unsplash.com/photo-1507525428034-b723cf961d3e?q=80&w=1000&auto=format&fit=crop", schedule: [ { time: "10:00", activity: "慢活早晨 &amp; 退房", todo: "最後享受泳池，11:00 退房", mapQuery: "Wyndham Garden Grand World Phu Quoc", travelAdvice: "記得檢查隨身行李、充電器是否帶齊。房卡歸還櫃檯。" }, { time: "11:30", activity: "Chuồn Chuồn Bistro", todo: "山頂蜻蜓餐酒館享用午餐", mapQuery: "Chuon Chuon Bistro &amp; Bar", travelAdvice: "擁有俯瞰市區的百萬美金視野。推薦點 Coconut Coffee (椰子咖啡) 或酪梨吐司、招牌漢堡。" }, { time: "13:30", activity: "King Kong Mart", todo: "最大超市採買伴手禮", mapQuery: "Kingkong Mart Phu Quoc", travelAdvice: "【必買清單】富國島胡椒 (紅/白/黑)、腰果 (辣味/蒜味/蜂蜜)、Sim Wine (金孃酒)。注意魚露通常禁運。" }, { time: "14:30", activity: "前往機場", todo: "搭乘星宇航空 JX1706 (16:20 起飛)", mapQuery: "Phu Quoc International Airport", travelAdvice: "帶著滿滿的回憶與戰利品，平安返台。期待下次旅程！" } ] } ], dailyStrategies: [ { day: "Day 1", title: "星宇啟程・不夜城初體驗", items: [ { location: "韓式燒烤晚餐", description: [ "推薦菜色：厚切五花肉 (Pork Belly) 烤至金黃焦脆。", "推薦菜色：韓式醃牛排 (Marinated Beef Ribs) 甜鹹醬汁入味。", "小撇步：善用生菜包肉與蒜片解膩。" ] }, { time: "20:00 - 22:00", location: "Grand World 深度遊", description: [ "必玩：竹之傳奇 (Bamboo Legend)、當代藝術公園。", "水舞秀：Colors of Venice 於 21:30 開演。", "最佳觀賞點：愛情湖中央廣場正對面，建議 21:10 前卡位。" ] } ] }, { day: "Day 2", title: "Safari 猛獸與懸崖日落", items: [ { time: "09:00 - 12:00", location: "Vinpearl Safari", description: [ "必看：Bird Show (10:00)、Zulu 迎賓舞 (09:20)。", "午餐攻略：長頸鹿餐廳建議一人佔位、一人買紅蘿蔔 (30k VND)。", "餐點推薦：美式漢堡 (最安全)、炸雞腿飯 (適合亞洲胃)。" ], tips: "餐廳熱門時段為 11:30-12:30，務必分工合作。" }, { time: "14:00", location: "VinWonders", description: [ "必看：美人魚秀 (Mermaid Show) @ The Sea Shell 水族館。", "建議 13:00 先進水族館吹冷氣避暑，14:00 看秀。" ] }, { location: "Mango Bay - On The Rock", description: [ "前菜推薦：鮮蝦柚子沙拉 (Prawn &amp; Pomelo Salad)。", "主菜推薦：海鮮拼盤 (Seafood Board)、酥炸整隻魷魚。", "飲品：Passion Fruit Mojito 佐夕陽。" ], menuRecommendations: ["Prawn &amp; Pomelo Salad", "Mango Bay Seafood Board", "Crispy Squid"] } ] } ], expertTips: [ "Safari 午餐策略：長頸鹿餐廳人多，建議分工：一人找位、一人買紅蘿蔔餵食。", "纜車時間：務必注意 11:30 - 13:30 為停駛時間，行程請安排在此時段用餐或玩水樂園。", "防曬保濕：2月正午紫外線強，戶外活動務必帶墨鏡與補充水分。", "秀場卡位：所有大秀 (威尼斯、海洋之吻) 均建議提早 30 分鐘入場，視野才不會被遮擋。" ] }; // State Management let state = { activeTab: 'itinerary', activeDay: 0, activeLocationQuery: tourData.days[0].locationQuery, twdAmount: '100', vndAmount: '76000' }; // Helper Functions function getIcon(iconName, size = 20) { const iconMap = { 'star': 'fa-star', 'utensils': 'fa-utensils', 'file-text': 'fa-file-text', 'cloud-sun': 'fa-cloud-sun', 'money-bill': 'fa-money-bill', 'triangle-exclamation': 'fa-triangle-exclamation', 'clock': 'fa-clock', 'bed': 'fa-bed', 'sun': 'fa-sun', 'moon': 'fa-moon', 'plane': 'fa-plane', 'phone': 'fa-phone', 'calendar': 'fa-calendar', 'map': 'fa-map', 'navigation': 'fa-location-arrow', 'check-circle': 'fa-check-circle', 'info': 'fa-info-circle', 'car': 'fa-car', 'lightbulb': 'fa-lightbulb', 'external-link': 'fa-external-link-alt', 'thermometer': 'fa-thermometer-half', 'wind': 'fa-wind', 'droplets': 'fa-tint', 'refresh': 'fa-sync-alt', 'list': 'fa-list', 'chevron-down': 'fa-chevron-down', 'chevron-up': 'fa-chevron-up', 'bus': 'fa-bus' }; return `&lt;i class="fas ${iconMap[iconName] || 'fa-circle'}" style="font-size: ${size}px;"&gt;&lt;/i&gt;`; } function getMapLink(query) { return `https://www.google.com/maps/search/?api=1&query=${encodeURIComponent(query)}`; } // Render Functions function renderHeader() { return ` &lt;div class="bg-teal-900 text-white pt-6 pb-24 px-4 relative overflow-hidden"&gt; &lt;div class="absolute inset-0 opacity-20 z-0"&gt; &lt;img decoding="async" loading="lazy" src="https://images.unsplash.com/photo-1590523277543-a94d2e4eb00b?q=80&#038;w=2000&#038;auto=format&#038;fit=crop" class="w-full h-full object-cover" alt="Background" /&gt; &lt;/div&gt; &lt;div class="container mx-auto relative z-10"&gt; &lt;div class="flex justify-between items-center mb-6"&gt; &lt;div class="font-bold text-xl tracking-wider"&gt;PHU QUOC 2026&lt;/div&gt; &lt;div class="bg-white/20 backdrop-blur-sm px-4 py-1.5 rounded-full text-sm flex items-center gap-2"&gt; ${getIcon('phone', 14)} 導遊: ${tourData.guide.name} &lt;/div&gt; &lt;/div&gt; &lt;h1 class="text-3xl font-bold mb-2"&gt;&lt;span class="ez-toc-section" id="tourdatatitle"&gt;&lt;/span&gt;${tourData.title}&lt;span class="ez-toc-section-end"&gt;&lt;/span&gt;&lt;/h1&gt;&lt;div id="ez-toc-container" class="ez-toc-v2_0_82_2 ez-toc-wrap-left counter-hierarchy ez-toc-counter ez-toc-grey ez-toc-container-direction"&gt; 內容目錄 Toggle ${tourData.title} ${currentDay.theme} ${getIcon('star', 24)} 資深導遊的極致攻略 ${getIcon('list', 20)} 每日深度玩法與餐飲指南 &lt;p class="text-teal-100 opacity-90"&gt;${tourData.subtitle}&lt;/p&gt; &lt;div class="mt-6 inline-flex flex-wrap gap-2"&gt; &lt;div class="bg-white/10 backdrop-blur border border-white/20 px-3 py-1.5 rounded flex items-center gap-2 text-sm"&gt; ${getIcon('plane', 16)} &lt;span&gt;去: ${tourData.flight.outbound.code} (${tourData.flight.outbound.time})&lt;/span&gt; &lt;/div&gt; &lt;div class="bg-white/10 backdrop-blur border border-white/20 px-3 py-1.5 rounded flex items-center gap-2 text-sm"&gt; ${getIcon('plane', 16)} &lt;span&gt;回: ${tourData.flight.inbound.code} (${tourData.flight.inbound.time})&lt;/span&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; `; } function renderTabs() { return ` &lt;div class="container mx-auto px-4 -mt-16 relative z-20 mb-6"&gt; &lt;div class="bg-white rounded-xl shadow-lg p-2 flex gap-2 max-w-md mx-auto"&gt; &lt;button onclick="changeTab('itinerary')" class="flex-1 py-3 rounded-lg font-bold flex items-center justify-center gap-2 transition-all ${state.activeTab === 'itinerary' ? 'bg-teal-600 text-white shadow' : 'text-gray-500 hover:bg-gray-50'}" &gt; ${getIcon('calendar', 18)} 每日行程 &lt;/button&gt; &lt;button onclick="changeTab('info')" class="flex-1 py-3 rounded-lg font-bold flex items-center justify-center gap-2 transition-all ${state.activeTab === 'info' ? 'bg-orange-500 text-white shadow' : 'text-gray-500 hover:bg-gray-50'}" &gt; ${getIcon('info', 18)} 專業攻略 &lt;/button&gt; &lt;/div&gt; &lt;/div&gt; `; } function renderItinerary() { const currentDay = tourData.days[state.activeDay]; return ` &lt;div class="flex overflow-x-auto pb-4 gap-3 no-scrollbar snap-x mb-2"&gt; ${tourData.days.map((day, index) =&gt; ` &lt;button onclick="changeDay(${index})" class="flex-shrink-0 snap-start w-28 p-3 rounded-xl flex flex-col items-center justify-center transition-all duration-300 shadow-sm border ${ state.activeDay === index ? 'bg-teal-500 text-white border-teal-500 shadow-lg scale-105' : 'bg-white text-gray-500 border-gray-100 hover:border-teal-200' }" &gt; &lt;span class="text-xs font-medium opacity-80"&gt;${day.date}&lt;/span&gt; &lt;span class="text-lg font-bold"&gt;${day.dayNum}&lt;/span&gt; &lt;/button&gt; `).join('')} &lt;/div&gt; &lt;div class="bg-white rounded-2xl shadow-xl overflow-hidden min-h-[600px] transition-all duration-500"&gt; &lt;div class="h-48 relative"&gt; &lt;img decoding="async" loading="lazy" src="${currentDay.image}" alt="${currentDay.theme}" class="w-full h-full object-cover" /&gt; &lt;div class="absolute inset-0 bg-gradient-to-t from-black/70 to-transparent flex flex-col justify-end p-6"&gt; &lt;h2 class="text-white text-2xl font-bold"&gt;&lt;span class="ez-toc-section" id="currentdaytheme"&gt;&lt;/span&gt;${currentDay.theme}&lt;span class="ez-toc-section-end"&gt;&lt;/span&gt;&lt;/h2&gt; &lt;div class="flex items-center gap-2 text-teal-200 text-sm mt-1"&gt; ${getIcon('bus', 14)} ${currentDay.transport} &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;div class="p-6 md:p-8"&gt; &lt;div class="grid grid-cols-2 md:grid-cols-4 gap-4 mb-8 bg-slate-50 p-4 rounded-xl border border-slate-100"&gt; &lt;div class="col-span-2 md:col-span-1"&gt; &lt;div class="text-xs text-gray-500 mb-1 flex items-center gap-1"&gt;${getIcon('bed', 12)} 住宿&lt;/div&gt; &lt;div class="font-semibold text-sm truncate"&gt;${currentDay.hotel}&lt;/div&gt; &lt;/div&gt; &lt;div class="col-span-2 md:col-span-3 grid grid-cols-3 gap-2"&gt; &lt;div&gt; &lt;div class="text-xs text-gray-500 mb-1 flex items-center gap-1"&gt;${getIcon('sun', 12)} 早餐&lt;/div&gt; &lt;div class="font-medium text-sm text-teal-700"&gt;${currentDay.meals.b}&lt;/div&gt; &lt;/div&gt; &lt;div&gt; &lt;div class="text-xs text-gray-500 mb-1 flex items-center gap-1"&gt;${getIcon('utensils', 12)} 午餐&lt;/div&gt; &lt;div class="font-medium text-sm text-teal-700 truncate"&gt;${currentDay.meals.l}&lt;/div&gt; &lt;/div&gt; &lt;div&gt; &lt;div class="text-xs text-gray-500 mb-1 flex items-center gap-1"&gt;${getIcon('moon', 12)} 晚餐&lt;/div&gt; &lt;div class="font-medium text-sm text-teal-700 truncate"&gt;${currentDay.meals.d}&lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;div class="flex flex-col lg:flex-row gap-8"&gt; &lt;div class="lg:w-3/5"&gt; &lt;h3 class="text-lg font-bold text-gray-800 mb-6 flex items-center gap-2"&gt; ${getIcon('clock', 20)} 當日行程表 &lt;/h3&gt; &lt;div class="relative pl-4 space-y-10 before:absolute before:inset-y-0 before:left-[11px] before:w-0.5 before:bg-gray-200"&gt; ${currentDay.schedule.map((item, idx) =&gt; ` &lt;div class="relative pl-8 pr-2 py-2 -ml-2 rounded-xl transition-all duration-300 cursor-pointer ${ state.activeLocationQuery === item.mapQuery ? 'bg-teal-50 border border-teal-100 shadow-sm' : 'hover:bg-gray-50 border border-transparent' }" onclick="changeLocation('${item.mapQuery}')" &gt; &lt;div class="absolute left-2 top-3 w-6 h-6 bg-white rounded-full border-2 flex items-center justify-center z-10 transition-transform ${ state.activeLocationQuery === item.mapQuery ? 'scale-110 border-teal-600 shadow-md' : 'border-teal-500' }"&gt; &lt;div class="w-2 h-2 rounded-full ${state.activeLocationQuery === item.mapQuery ? 'bg-teal-600' : 'bg-teal-500'}"&gt;&lt;/div&gt; &lt;/div&gt; &lt;div class="flex flex-col sm:flex-row sm:items-start gap-1 sm:gap-4"&gt; &lt;span class="font-bold text-teal-600 w-14 flex-shrink-0 pt-1"&gt;${item.time}&lt;/span&gt; &lt;div class="flex-grow"&gt; ${item.drivingTime ? ` &lt;div class="inline-flex items-center gap-1.5 bg-slate-100 text-slate-500 px-2 py-0.5 rounded text-[10px] font-medium border border-slate-200 mb-2"&gt; ${getIcon('car', 10)} &lt;span&gt;${item.drivingTime}&lt;/span&gt; &lt;/div&gt; ` : ''} &lt;h4 class="font-bold text-gray-800 text-lg mb-2"&gt;${item.activity}&lt;/h4&gt; &lt;div class="bg-orange-50 border-l-4 border-orange-400 p-3 rounded-r-lg mb-2"&gt; &lt;div class="flex items-start gap-2"&gt; ${getIcon('check-circle', 16)} &lt;span class="text-sm text-gray-700 font-medium"&gt;${item.todo}&lt;/span&gt; &lt;/div&gt; &lt;/div&gt; ${item.travelAdvice ? ` &lt;div class="bg-yellow-50 border border-yellow-100 p-3 rounded-lg mb-3"&gt; &lt;div class="flex items-start gap-2"&gt; ${getIcon('lightbulb', 16)} &lt;span class="text-sm text-gray-600"&gt;${item.travelAdvice}&lt;/span&gt; &lt;/div&gt; &lt;/div&gt; ` : ''} ${item.referenceLinks ? ` &lt;div class="flex flex-wrap gap-2 mb-3"&gt; ${item.referenceLinks.map(link =&gt; ` &lt;a href="${link.url}" target="_blank" rel="noopener noreferrer" class="text-[10px] font-semibold flex items-center gap-1 bg-teal-50 text-teal-700 border border-teal-100 px-2.5 py-1 rounded hover:bg-teal-100 transition-colors" &gt; ${getIcon('external-link', 10)} ${link.label} &lt;/a&gt; `).join('')} &lt;/div&gt; ` : ''} &lt;a href="${getMapLink(item.mapQuery)}" target="_blank" rel="noopener noreferrer" class="mt-3 inline-flex items-center gap-1.5 text-xs font-semibold text-teal-600 bg-teal-50 hover:bg-teal-100 px-3 py-1.5 rounded-full transition-colors border border-teal-200" &gt; ${getIcon('navigation', 12)} Google Map 導航 &lt;/a&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; `).join('')} &lt;/div&gt; &lt;/div&gt; &lt;div class="lg:w-2/5"&gt; &lt;div class="sticky top-6 space-y-6"&gt; &lt;div&gt; &lt;h3 class="text-lg font-bold text-gray-800 mb-6 flex items-center gap-2"&gt; ${getIcon('map', 20)} 地理位置 &lt;/h3&gt; &lt;div class="bg-gray-100 rounded-xl overflow-hidden shadow-inner h-[300px] lg:h-[400px] relative"&gt; &lt;iframe loading="lazy" title="Google Map" width="100%" height="100%" style="border: 0" src="https://maps.google.com/maps?q=${encodeURIComponent(state.activeLocationQuery)}&#038;t=&#038;z=13&#038;ie=UTF8&#038;iwloc=&#038;output=embed" allowfullscreen &gt;&lt;/iframe&gt; &lt;div class="absolute bottom-0 inset-x-0 bg-white/90 backdrop-blur-sm p-3 text-xs text-center text-gray-500 truncate"&gt; 顯示位置：${state.activeLocationQuery} &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; ${renderWeatherWidget()} ${renderCurrencyConverter()} &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; `; } function renderWeatherWidget() { const forecast = [ { day: '02/06', temp: '28°C', icon: 'sun', desc: '舒適' }, { day: '02/07', temp: '29°C', icon: 'sun', desc: '晴朗' }, { day: '02/08', temp: '30°C', icon: 'cloud-sun', desc: '多雲' }, { day: '02/09', temp: '29°C', icon: 'sun', desc: '晴朗' }, { day: '02/10', temp: '28°C', icon: 'sun', desc: '溫暖' } ]; return ` &lt;div class="bg-gradient-to-br from-blue-50 to-white rounded-2xl shadow-sm border border-blue-100 p-6"&gt; &lt;div class="flex items-center justify-between mb-6"&gt; &lt;h3 class="font-bold text-slate-800 flex items-center gap-2"&gt; ${getIcon('cloud-sun', 18)} 2月天氣預報 (乾季) &lt;/h3&gt; &lt;div class="flex items-center gap-1 text-blue-600 font-bold text-lg"&gt; ${getIcon('thermometer', 18)} 28°C &lt;/div&gt; &lt;/div&gt; &lt;div class="grid grid-cols-5 gap-2 mb-6"&gt; ${forecast.map(f =&gt; ` &lt;div class="flex flex-col items-center gap-2"&gt; &lt;span class="text-[10px] text-slate-400 font-medium"&gt;${f.day}&lt;/span&gt; &lt;div class="p-2 bg-white rounded-lg shadow-sm"&gt; ${getIcon(f.icon, 20)} &lt;/div&gt; &lt;span class="text-xs font-bold text-slate-700"&gt;${f.temp}&lt;/span&gt; &lt;/div&gt; `).join('')} &lt;/div&gt; &lt;div class="grid grid-cols-2 gap-4"&gt; &lt;div class="bg-white/60 p-3 rounded-xl flex items-center gap-3"&gt; ${getIcon('wind', 16)} &lt;div&gt; &lt;div class="text-[10px] text-slate-400"&gt;海風&lt;/div&gt; &lt;div class="text-xs font-bold"&gt;舒爽&lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;div class="bg-white/60 p-3 rounded-xl flex items-center gap-3"&gt; ${getIcon('droplets', 16)} &lt;div&gt; &lt;div class="text-[10px] text-slate-400"&gt;降雨機率&lt;/div&gt; &lt;div class="text-xs font-bold"&gt;極低&lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;div class="mt-4 bg-orange-50 border border-orange-100 p-3 rounded-xl flex items-start gap-2"&gt; ${getIcon('triangle-exclamation', 14)} &lt;p class="text-[10px] text-orange-700 leading-tight font-medium"&gt; 乾季天氣極佳，但正午紫外線強，務必做好防曬與保濕。 &lt;/p&gt; &lt;/div&gt; &lt;/div&gt; `; } function renderCurrencyConverter() { return ` &lt;div class="bg-white rounded-2xl shadow-sm border border-slate-100 p-6"&gt; &lt;div class="flex items-center justify-between mb-4"&gt; &lt;h3 class="font-bold text-slate-800 flex items-center gap-2"&gt; ${getIcon('money-bill', 18)} 匯率小計算 &lt;/h3&gt; &lt;span class="text-[10px] bg-teal-50 text-teal-700 px-2 py-0.5 rounded-full font-bold"&gt; 1 TWD = 760 VND &lt;/span&gt; &lt;/div&gt; &lt;div class="space-y-4"&gt; &lt;div&gt; &lt;label class="text-xs text-slate-400 mb-1 block"&gt;台幣 (TWD)&lt;/label&gt; &lt;div class="relative"&gt; &lt;input type="text" id="twd-input" value="${state.twdAmount}" oninput="updateCurrency('twd', this.value)" class="w-full bg-slate-50 border-none rounded-xl py-3 px-4 focus:ring-2 focus:ring-teal-500 font-bold text-slate-700" placeholder="輸入金額" /&gt; &lt;span class="absolute right-4 top-3.5 text-slate-400 font-medium text-sm"&gt;TWD&lt;/span&gt; &lt;/div&gt; &lt;/div&gt; &lt;div class="flex justify-center"&gt; ${getIcon('refresh', 16)} &lt;/div&gt; &lt;div&gt; &lt;label class="text-xs text-slate-400 mb-1 block"&gt;越南盾 (VND)&lt;/label&gt; &lt;div class="relative"&gt; &lt;input type="text" id="vnd-input" value="${state.vndAmount}" oninput="updateCurrency('vnd', this.value)" class="w-full bg-slate-50 border-none rounded-xl py-3 px-4 focus:ring-2 focus:ring-teal-500 font-bold text-slate-700" placeholder="換算結果" /&gt; &lt;span class="absolute right-4 top-3.5 text-slate-400 font-medium text-sm"&gt;VND&lt;/span&gt; &lt;/div&gt; &lt;/div&gt; &lt;p class="text-[10px] text-slate-400 text-center italic"&gt; *心算密技：去掉三個 0，再乘以 1.3 &lt;/p&gt; &lt;/div&gt; &lt;/div&gt; `; } function renderInfo() { return ` &lt;div class="bg-white rounded-2xl shadow-xl p-6 md:p-8 min-h-[600px] animate-fade-in"&gt; &lt;h2 class="text-2xl font-bold text-gray-800 mb-8 border-b pb-4 flex items-center gap-3"&gt;&lt;span class="ez-toc-section" id="geticonstar_24_%e8%b3%87%e6%b7%b1%e5%b0%8e%e9%81%8a%e7%9a%84%e6%a5%b5%e8%87%b4%e6%94%bb%e7%95%a5"&gt;&lt;/span&gt; ${getIcon('star', 24)} 資深導遊的極致攻略 &lt;span class="ez-toc-section-end"&gt;&lt;/span&gt;&lt;/h2&gt; &lt;div class="grid md:grid-cols-2 gap-6"&gt; ${tourData.importantInfo.map(info =&gt; ` &lt;div class="bg-slate-50 rounded-xl p-6 border border-slate-100 hover:border-teal-200 transition-colors"&gt; &lt;div class="flex items-center gap-3 mb-4"&gt; &lt;div class="w-10 h-10 bg-white rounded-full shadow-sm flex items-center justify-center text-teal-600"&gt; ${getIcon(info.icon, 20)} &lt;/div&gt; &lt;h3 class="text-lg font-bold text-slate-700"&gt;${info.title}&lt;/h3&gt; &lt;/div&gt; &lt;ul class="space-y-2"&gt; ${info.content.map(item =&gt; ` &lt;li class="flex items-start gap-2 text-slate-600 text-sm"&gt; &lt;span class="mt-1.5 w-1.5 h-1.5 bg-teal-400 rounded-full flex-shrink-0"&gt;&lt;/span&gt; &lt;span&gt;${item}&lt;/span&gt; &lt;/li&gt; `).join('')} &lt;/ul&gt; &lt;/div&gt; `).join('')} &lt;/div&gt; ${renderDailyStrategies()} &lt;div class="mt-8 bg-gradient-to-r from-teal-50 to-blue-50 rounded-xl p-6 border border-teal-100"&gt; &lt;div class="flex items-center gap-4 mb-4"&gt; &lt;img decoding="async" loading="lazy" src="${tourData.guide.avatar}" alt="Guide" class="w-16 h-16 rounded-full border-4 border-white shadow" /&gt; &lt;div&gt; &lt;h3 class="text-lg font-bold text-teal-900"&gt;規劃師：${tourData.guide.name}&lt;/h3&gt; &lt;p class="text-teal-700 text-sm"&gt;任何問題請隨時聯繫，祝您在 2026 新春擁有一段難忘的珍珠島假期！&lt;/p&gt; &lt;/div&gt; &lt;/div&gt; &lt;div class="flex flex-wrap gap-4"&gt; &lt;a href="tel:${tourData.guide.phone}" class="flex items-center gap-2 bg-white px-4 py-2 rounded-lg shadow-sm text-sm font-semibold text-gray-700 hover:text-teal-600"&gt; ${getIcon('phone', 16)} ${tourData.guide.phone} &lt;/a&gt; &lt;div class="flex items-center gap-2 bg-[#00B900] text-white px-4 py-2 rounded-lg shadow-sm text-sm font-semibold"&gt; &lt;span&gt;LINE ID: ${tourData.guide.line}&lt;/span&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; `; } function renderDailyStrategies() { return ` &lt;div class="mt-8"&gt; &lt;h2 class="text-xl font-bold text-slate-800 mb-6 flex items-center gap-2 border-b border-slate-200 pb-3"&gt;&lt;span class="ez-toc-section" id="geticonlist_20_%e6%af%8f%e6%97%a5%e6%b7%b1%e5%ba%a6%e7%8e%a9%e6%b3%95%e8%88%87%e9%a4%90%e9%a3%b2%e6%8c%87%e5%8d%97"&gt;&lt;/span&gt; ${getIcon('list', 20)} 每日深度玩法與餐飲指南 &lt;span class="ez-toc-section-end"&gt;&lt;/span&gt;&lt;/h2&gt; &lt;div class="bg-yellow-50 border border-yellow-200 rounded-xl p-5 mb-8"&gt; &lt;h3 class="font-bold text-yellow-800 flex items-center gap-2 mb-3"&gt; ${getIcon('lightbulb', 18)} 導遊特別叮嚀 (必讀) &lt;/h3&gt; &lt;ul class="space-y-2"&gt; ${tourData.expertTips.map(tip =&gt; ` &lt;li class="flex items-start gap-2 text-sm text-yellow-900"&gt; ${getIcon('check-circle', 14)} &lt;span&gt;${tip}&lt;/span&gt; &lt;/li&gt; `).join('')} &lt;/ul&gt; &lt;/div&gt; &lt;div class="space-y-6"&gt; ${tourData.dailyStrategies.map(day =&gt; ` &lt;div class="bg-white border border-slate-100 rounded-xl shadow-sm overflow-hidden"&gt; &lt;div class="bg-slate-50 px-5 py-3 border-b border-slate-100 flex justify-between items-center"&gt; &lt;span class="font-bold text-teal-700"&gt;${day.day}&lt;/span&gt; &lt;span class="text-sm font-medium text-slate-500"&gt;${day.title}&lt;/span&gt; &lt;/div&gt; &lt;div class="p-5 space-y-5"&gt; ${day.items.map(item =&gt; ` &lt;div class="relative pl-4 border-l-2 border-slate-200"&gt; &lt;div class="flex items-center gap-2 mb-1"&gt; ${item.time ? `&lt;span class="text-xs font-bold bg-slate-100 text-slate-600 px-1.5 py-0.5 rounded"&gt;${item.time}&lt;/span&gt;` : ''} &lt;h4 class="font-bold text-slate-800"&gt;${item.location}&lt;/h4&gt; &lt;/div&gt; &lt;ul class="text-sm text-slate-600 space-y-1 mb-2"&gt; ${item.description.map(desc =&gt; `&lt;li&gt;• ${desc}&lt;/li&gt;`).join('')} &lt;/ul&gt; ${item.menuRecommendations ? ` &lt;div class="flex items-start gap-1.5 mt-2 bg-orange-50 p-2 rounded-lg"&gt; ${getIcon('utensils', 12)} &lt;div class="text-xs text-orange-800"&gt; &lt;span class="font-bold"&gt;必點推薦：&lt;/span&gt; ${item.menuRecommendations.join("、")} &lt;/div&gt; &lt;/div&gt; ` : ''} ${item.tips ? ` &lt;div class="flex items-start gap-1.5 mt-2 bg-blue-50 p-2 rounded-lg"&gt; ${getIcon('info', 12)} &lt;p class="text-xs text-blue-800"&gt;${item.tips}&lt;/p&gt; &lt;/div&gt; ` : ''} &lt;/div&gt; `).join('')} &lt;/div&gt; &lt;/div&gt; `).join('')} &lt;/div&gt; &lt;/div&gt; `; } function renderFooter() { return ` &lt;footer class="container mx-auto px-4 mt-12 mb-8"&gt; &lt;div class="text-center text-gray-400 text-xs"&gt; © 2026 Professional Phu Quoc Guide Service | 資料來源：資深嚮導 Mollie 極致規劃報告 &lt;/div&gt; &lt;/footer&gt; `; } // Event Handlers function changeTab(tab) { state.activeTab = tab; render(); } function changeDay(day) { state.activeDay = day; state.activeLocationQuery = tourData.days[day].locationQuery; render(); } function changeLocation(query) { state.activeLocationQuery = query; render(); } function updateCurrency(type, value) { const rate = 760; if (type === 'twd') { state.twdAmount = value; if (value === '') { state.vndAmount = ''; } else { const num = parseFloat(value); if (!isNaN(num)) { state.vndAmount = Math.round(num * rate).toLocaleString(); } } } else { const rawVal = value.replace(/,/g, ''); state.vndAmount = value; if (rawVal === '') { state.twdAmount = ''; } else { const num = parseFloat(rawVal); if (!isNaN(num)) { state.twdAmount = (num / rate).toFixed(0); } } } // Update inputs without full render const twdInput = document.getElementById('twd-input'); const vndInput = document.getElementById('vnd-input'); if (twdInput) twdInput.value = state.twdAmount; if (vndInput) vndInput.value = state.vndAmount; } // Main Render Function function render() { const app = document.getElementById('app'); app.innerHTML = ` ${renderHeader()} ${renderTabs()} &lt;div class="container mx-auto px-4"&gt; ${state.activeTab === 'itinerary' ? renderItinerary() : renderInfo()} &lt;/div&gt; ${renderFooter()} `; } // Initialize document.addEventListener('DOMContentLoaded', () =&gt; { render(); }); &lt;/script&gt; 相關閱讀 未來的行銷，不是學更多工具，而是建立一套會自己運轉的內容系統 【為什麼你一定要學如何使用openclaw?】 2026年世界經濟論壇（WEF）達沃斯年會：地緣政治重構、中等強國崛起與全球經濟的新現實 請按讚：喜歡 正在載入... 相關
