{"product_id":"rusutsu-cts","title":"留壽都⇒新千歳空港（北海道滑雪巴士2026-2027）","description":"\u003cdiv class=\"tour-pricing-info\" style=\"font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif; line-height: 1.6; color: #333;\"\u003e\n\u003ch3 style=\"font-size: 1.25rem; font-weight: bold; margin-bottom: 12px; color: #000;\"\u003e【旅遊費用 每人／單程價格】\u003c\/h3\u003e\n\u003c!-- 留壽都 --\u003e\n\u003cdiv style=\"margin-bottom: 16px;\"\u003e\n\u003cdiv style=\"font-size: 0.95rem; color: #666;\"\u003e留壽都\u003c\/div\u003e\n\u003cdiv style=\"font-size: 1.1rem; color: #b81c1c; font-weight: bold;\"\u003e大人 7,000日圓 \u003cspan style=\"margin-left: 15px;\"\u003e兒童 6,000日圓\u003c\/span\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c!-- 二世谷 --\u003e\u003c!-- 年齡說明 --\u003e\n\u003cdiv style=\"font-size: 0.875rem; color: #555; margin-bottom: 15px;\"\u003e［大人］12歲以上  ［兒童］3歲以上～11歲以下  ［幼兒］2歲以下 ※免費、無座位\u003c\/div\u003e\n\u003c!-- 備註框 --\u003e\n\u003cdiv style=\"border: 2px solid #000; padding: 10px 15px; font-size: 0.875rem; background-color: #fff;\"\u003e■ 最少成行人數：1名   ■ 無隨車人員（領隊）   ■ 無導遊\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cp\u003e \u003c\/p\u003e\n\u003cp\u003e \u003c\/p\u003e\n\u003cdiv class=\"route-info\" style=\"font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif; line-height: 1.6; color: #333;\"\u003e\n\u003ch2 style=\"font-size: 1.75rem; font-weight: bold; margin-bottom: 20px; color: #000;\"\u003e留壽都 ⇒ 新千歲機場\u003c\/h2\u003e\n\u003cdiv style=\"font-size: 1rem; color: #333; margin-bottom: 8px;\"\u003e■ 運行期間：2026年12月2日～2027年3月31日\u003cbr\u003e※102B班次僅於 2026年12月15日～2027年3月15日 期間運行。\u003cbr\u003e■ 運行日：每日發車\u003c\/div\u003e\n\u003cdiv style=\"font-size: 1rem; color: #333;\"\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cp\u003e \u003c\/p\u003e\n\u003cstyle\u003e\n    \/* 外層滑動容器優化 *\/\n    .responsive-table-wrapper {\n      width: 100%;\n      overflow-x: auto;\n      -webkit-overflow-scrolling: touch; \/* iOS 順暢滑動 *\/\n      border: 1px solid #e2e8f0;\n      border-radius: 10px;\n      box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.05);\n      background-color: #fff;\n    }\n    \n    .custom-table {\n      width: 100%;\n      border-collapse: separate;\n      border-spacing: 0;\n      text-align: center;\n      font-size: 0.8rem; \/* 適合手機閱讀的小字體 *\/\n      white-space: nowrap;\n    }\n    \n    .custom-table th, \n    .custom-table td {\n      padding: 8px 10px;\n      border-bottom: 1px solid #edf2f7;\n      border-right: 1px solid #edf2f7;\n    }\n\n    \/* 凍結首欄 (站名) 極致修復 *\/\n    .sticky-col {\n      position: sticky;\n      left: 0;\n      background-color: #ffffff;\n      z-index: 2;\n      text-align: left !important;\n      min-width: 140px;\n      max-width: 160px;\n      white-space: normal !important;\n      word-break: break-word;\n      \/* 陰影分隔線，替代 border 避免滾動透出 *\/\n      box-shadow: 3px 0 5px -2px rgba(0, 0, 0, 0.12);\n    }\n    \n    \/* 表頭凍結欄 (最高層級) *\/\n    th.sticky-col {\n      background-color: #c2185b !important;\n      color: #ffffff !important;\n      z-index: 3;\n    }\n    \n    \/* 分隔區塊標頭 *\/\n    .section-header td {\n      background-color: #f1f5f9;\n      color: #334155;\n      font-weight: bold;\n      text-align: left;\n      font-size: 0.78rem;\n      padding: 6px 10px;\n    }\n    \n    \/* 休息站列 *\/\n    .rest-row {\n      background-color: #fff1f2;\n    }\n    \n    .jp-name {\n      display: block;\n      font-size: 0.7rem;\n      color: #64748b;\n      margin-top: 1px;\n      font-weight: normal;\n    }\n    \n    th.sticky-col .jp-name {\n      color: #f1f5f9;\n    }\n  \u003c\/style\u003e\n\u003cdiv class=\"timetable-container\" style=\"max-width: 100%; margin: 0 auto; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; color: #333; line-height: 1.4;\"\u003e\n\u003c!-- 手機滑動提示 --\u003e\n\u003cdiv style=\"font-size: 0.75rem; color: #64748b; margin-bottom: 6px; display: flex; align-items: center; justify-content: space-between;\"\u003e\n\u003cspan\u003e左右滑動檢視完整班次\u003c\/span\u003e \u003cspan style=\"font-weight: bold; color: #c2185b;\"\u003e◄ 左右滑動 ►\u003c\/span\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"responsive-table-wrapper\"\u003e\n\u003ctable class=\"custom-table\"\u003e\n\u003cthead\u003e\n\u003ctr style=\"background-color: #c2185b; color: #ffffff;\"\u003e\n\u003cth class=\"sticky-col\"\u003e公車站 \/ 班次 \u003cspan class=\"jp-name\"\u003eBUSSTOP \/ 便名\u003c\/span\u003e\n\u003c\/th\u003e\n\u003cth style=\"padding: 10px 12px;\"\u003e102A\u003c\/th\u003e\n\u003cth style=\"padding: 10px 12px;\"\u003e102B\u003c\/th\u003e\n\u003cth style=\"padding: 10px 12px;\"\u003e104\u003c\/th\u003e\n\u003cth style=\"padding: 10px 12px;\"\u003e106\u003c\/th\u003e\n\u003cth style=\"padding: 10px 12px;\"\u003e108\u003c\/th\u003e\n\u003cth style=\"padding: 10px 12px;\"\u003e110\u003c\/th\u003e\n\u003cth style=\"padding: 10px 12px;\"\u003e112\u003c\/th\u003e\n\u003c\/tr\u003e\n\u003c\/thead\u003e\n\u003ctbody\u003e\n\u003c!-- 上車區塊 --\u003e\n\u003ctr class=\"section-header\"\u003e\n\u003ctd colspan=\"9\" class=\"sticky-col\" style=\"min-width: 100%; max-width: none;\"\u003e▲ 上車地點 (乗車)\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd class=\"sticky-col\"\u003e留壽都度假酒店及會議中心 \u003cspan class=\"jp-name\"\u003eルスツリゾートホテル＆コンベンション\u003c\/span\u003e\n\u003c\/td\u003e\n\u003ctd\u003e8:35\u003c\/td\u003e\n\u003ctd\u003e8:35\u003c\/td\u003e\n\u003ctd\u003e10:35\u003c\/td\u003e\n\u003ctd\u003e12:25\u003c\/td\u003e\n\u003ctd\u003e14:35\u003c\/td\u003e\n\u003ctd\u003e15:25\u003c\/td\u003e\n\u003ctd\u003e16:35\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd class=\"sticky-col\"\u003e威斯汀留壽都度假酒店 \u003cspan class=\"jp-name\"\u003eウェスティンルスツリゾート\u003c\/span\u003e\n\u003c\/td\u003e\n\u003ctd\u003e8:40\u003c\/td\u003e\n\u003ctd\u003e8:40\u003c\/td\u003e\n\u003ctd\u003e10:40\u003c\/td\u003e\n\u003ctd\u003e12:30\u003c\/td\u003e\n\u003ctd\u003e14:40\u003c\/td\u003e\n\u003ctd\u003e15:30\u003c\/td\u003e\n\u003ctd\u003e16:40\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003c!-- 休息區塊 --\u003e\n\u003ctr class=\"rest-row\"\u003e\n\u003ctd class=\"sticky-col\" style=\"background-color: #fff1f2; color: #be123c; font-weight: bold;\"\u003e美笛峠（休息站） \u003cspan class=\"jp-name\" style=\"color: #e11d48;\"\u003e美笛峠（休憩）\u003c\/span\u003e\n\u003c\/td\u003e\n\u003ctd style=\"color: #be123c;\"\u003e有\u003c\/td\u003e\n\u003ctd style=\"color: #be123c;\"\u003e有\u003c\/td\u003e\n\u003ctd style=\"color: #be123c;\"\u003e有\u003c\/td\u003e\n\u003ctd style=\"color: #be123c;\"\u003e有\u003c\/td\u003e\n\u003ctd style=\"color: #be123c;\"\u003e有\u003c\/td\u003e\n\u003ctd style=\"color: #be123c;\"\u003e有\u003c\/td\u003e\n\u003ctd style=\"color: #be123c;\"\u003e有\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003c!-- 下車區塊 --\u003e\n\u003ctr class=\"section-header\"\u003e\n\u003ctd colspan=\"9\" class=\"sticky-col\" style=\"min-width: 100%; max-width: none;\"\u003e▼ 下車地點 (降車)\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd class=\"sticky-col\"\u003e新千歲機場（國內線航廈） \u003cspan class=\"jp-name\"\u003e新千歳空港（国内線ターミナル）\u003c\/span\u003e\n\u003c\/td\u003e\n\u003ctd\u003e10:40\u003c\/td\u003e\n\u003ctd\u003e10:40\u003c\/td\u003e\n\u003ctd\u003e12:40\u003c\/td\u003e\n\u003ctd\u003e14:30\u003c\/td\u003e\n\u003ctd\u003e16:40\u003c\/td\u003e\n\u003ctd\u003e17:30\u003c\/td\u003e\n\u003ctd\u003e18:40\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd class=\"sticky-col\"\u003e新千歲機場（國際線航廈） \u003cspan class=\"jp-name\"\u003e新千歳空港（国際線ターミナル）\u003c\/span\u003e\n\u003c\/td\u003e\n\u003ctd\u003e10:45\u003c\/td\u003e\n\u003ctd\u003e10:45\u003c\/td\u003e\n\u003ctd\u003e12:45\u003c\/td\u003e\n\u003ctd\u003e14:35\u003c\/td\u003e\n\u003ctd\u003e16:45\u003c\/td\u003e\n\u003ctd\u003e17:35\u003c\/td\u003e\n\u003ctd\u003e18:45\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003c\/tbody\u003e\n\u003c\/table\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cp\u003e \u003c\/p\u003e\n\u003cdiv class=\"notice-box\" style=\"border: 2px dotted #4b5563; padding: 12px 16px; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif; font-size: 0.875rem; line-height: 1.6; color: #333333; background-color: #ffffff; border-radius: 4px;\"\u003e\n\u003cdiv style=\"margin-bottom: 6px;\"\u003e※甘露之森飯店的集合地點與往年不同，調整為本館2樓大廳主入口附近。請務必事先進行確認。\u003c\/div\u003e\n\u003cdiv style=\"color: #e11d48;\"\u003e※102班次可能會要求您在比羅夫第一停車場進行換乘。\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cp\u003e \u003c\/p\u003e\n\u003cstyle\u003e\n  .product-layout-container {\n    width: 100%;\n    max-width: 600px;\n    margin: 20px auto;\n    font-family: 'PingFang TC', 'Microsoft JhengHei', sans-serif;\n  }\n  \n  .selection-box { \n    width: 100%; \n    display: flex;\n    flex-direction: column;\n    align-items: center; \n  }\n\n  .spec-row {\n    display: flex; \n    align-items: center; \n    justify-content: center; \n    margin-bottom: 12px; \n    gap: 15px;\n    width: 100%;\n  }\n\n  .spec-title {\n    width: 110px; \n    font-weight: bold; \n    flex-shrink: 0; \n    font-size: 1.6rem; \n    color: #333;\n    line-height: 1.2;\n    text-align: right; \n  }\n\n  .spec-title-sub {\n    font-size: 11px;\n    font-weight: normal;\n    color: #666;\n    display: block;\n  }\n\n  .spec-input {\n    width: 100%; \n    max-width: 320px; \n    border: 1px solid #000; \n    padding: 8px 10px;\n    background: #fff; \n    font-size: 13px; \n    height: 42px; \n    outline: none; \n    box-sizing: border-box;\n    text-align: center; \n  }\n\n  .custom-submit-btn {\n    width: 100%;\n    max-width: 320px;\n    height: 45px;\n    background-color: #000;\n    color: #fff;\n    border: none;\n    font-size: 16px;\n    font-weight: bold;\n    cursor: pointer;\n    margin-top: 10px;\n  }\n\n  @media screen and (max-width: 767px) {\n    .spec-row { \n      justify-content: center !important; \n      gap: 10px; \n    }\n    .spec-title { \n      width: 100px !important; \n      text-align: right !important;\n    }\n    .spec-input { \n      flex: 1 !important; \n      max-width: 220px !important; \n    }\n  }\n\u003c\/style\u003e\n\n\u003cdiv class=\"product-layout-container\"\u003e\n  \u003cdiv class=\"selection-box\"\u003e\n    \u003c!-- 運行期間提示 --\u003e\n    \u003cp style=\"font-size: 12px; color: #d9534f; margin-bottom: 15px; border-left: 3px solid #d9534f; padding-left: 8px; font-weight: bold; text-align: center;\"\u003e\n      ※ 運行期間：2026年12月2日～2027年3月31日（每日運行）\u003cbr\u003e\n      ※ 102B班次運行期間為：2026年12月15日～2027年3月15日\n    \u003c\/p\u003e\n\n    \u003cform id=\"custom-booking-form\" style=\"width: 100%; display: flex; flex-direction: column; align-items: center;\"\u003e\n      \n      \u003c!-- 1. 乘車地點 --\u003e\n      \u003cdiv class=\"spec-row\"\u003e\n        \u003clabel class=\"spec-title\"\u003e乘車地點\u003c\/label\u003e\n        \u003cselect id=\"prop-pickup\" class=\"spec-input\" required=\"\"\u003e\n          \u003coption value=\"\" disabled selected\u003e請選擇乘車地點\u003c\/option\u003e\n          \u003coption value=\"留壽都度假酒店及會議中心（ルスツリゾートホテル＆コンベンション）\"\u003e留壽都度假酒店及會議中心（ルスツリゾートホテル＆コンベンション）\u003c\/option\u003e\n          \u003coption value=\"威斯汀留壽都度假酒店（ウェスティンルスツリゾート）\"\u003e威斯汀留壽都度假酒店（ウェスティンルスツリゾート）\u003c\/option\u003e\n        \u003c\/select\u003e\n      \u003c\/div\u003e\n\n      \u003c!-- 2. 乘車班次（HTML 預設寫死發車時間） --\u003e\n      \u003cdiv class=\"spec-row\"\u003e\n        \u003clabel class=\"spec-title\"\u003e乘車班次\u003c\/label\u003e\n        \u003cselect id=\"prop-bus\" class=\"spec-input\" required=\"\"\u003e\n          \u003coption value=\"\" disabled selected id=\"bus-placeholder\"\u003e請先選擇乘車地點\u003c\/option\u003e\n          \u003coption value=\"102A班次\" data-bus=\"102A\" data-time-rusutsu=\"08:35\" data-time-westin=\"08:40\"\u003e102A班次 (08:35發車)\u003c\/option\u003e\n          \u003coption value=\"102B班次\" data-bus=\"102B\" data-time-rusutsu=\"08:35\" data-time-westin=\"08:40\"\u003e102B班次 (08:35發車) (12\/15~3\/15)\u003c\/option\u003e\n          \u003coption value=\"104班次\" data-bus=\"104\" data-time-rusutsu=\"10:35\" data-time-westin=\"10:40\"\u003e104班次 (10:35發車)\u003c\/option\u003e\n          \u003coption value=\"106班次\" data-bus=\"106\" data-time-rusutsu=\"12:25\" data-time-westin=\"12:30\"\u003e106班次 (12:25發車)\u003c\/option\u003e\n          \u003coption value=\"108班次\" data-bus=\"108\" data-time-rusutsu=\"14:35\" data-time-westin=\"14:40\"\u003e108班次 (14:35發車)\u003c\/option\u003e\n          \u003coption value=\"110班次\" data-bus=\"110\" data-time-rusutsu=\"15:25\" data-time-westin=\"15:30\"\u003e110班次 (15:25發車)\u003c\/option\u003e\n          \u003coption value=\"112班次\" data-bus=\"112\" data-time-rusutsu=\"16:35\" data-time-westin=\"16:40\"\u003e112班次 (16:35發車)\u003c\/option\u003e\n        \u003c\/select\u003e\n      \u003c\/div\u003e\n\n      \u003c!-- 3. 乘車日 --\u003e\n      \u003cdiv class=\"spec-row\"\u003e\n        \u003clabel class=\"spec-title\"\u003e乘車日\u003c\/label\u003e \n        \u003cinput type=\"date\" class=\"spec-input\" id=\"prop-date\" min=\"2026-12-02\" max=\"2027-03-31\" required=\"\"\u003e\n      \u003c\/div\u003e\n\n      \u003c!-- 4. 下車地點 --\u003e\n      \u003cdiv class=\"spec-row\"\u003e\n        \u003clabel class=\"spec-title\"\u003e下車地點\u003c\/label\u003e\n        \u003cselect id=\"prop-dropoff\" class=\"spec-input\" required=\"\"\u003e\n          \u003coption value=\"\" disabled selected\u003e請選擇下車地點\u003c\/option\u003e\n          \u003coption value=\"新千歲機場（國內線航廈）\"\u003e新千歲機場（國內線航廈）\u003c\/option\u003e\n          \u003coption value=\"新千歲機場（國際線航廈）\"\u003e新千歲機場（國際線航廈）\u003c\/option\u003e\n        \u003c\/select\u003e\n      \u003c\/div\u003e\n\n      \u003cdiv class=\"spec-row\"\u003e\n        \u003clabel class=\"spec-title\"\u003e成人人數 \u003cspan class=\"spec-title-sub\"\u003e(12歳～)\u003c\/span\u003e\u003c\/label\u003e\n        \u003cinput type=\"number\" class=\"spec-input passenger-count\" id=\"count-adult\" data-type=\"adult\" data-variant-id=\"51418338885855\" data-price=\"7000\" min=\"0\" value=\"1\" required\u003e\n      \u003c\/div\u003e\n\n      \u003cdiv class=\"spec-row\"\u003e\n        \u003clabel class=\"spec-title\"\u003e兒童人數 \u003cspan class=\"spec-title-sub\"\u003e(3歳～11歳)\u003c\/span\u003e\u003c\/label\u003e\n        \u003cinput type=\"number\" class=\"spec-input passenger-count\" id=\"count-child\" data-type=\"child\" data-variant-id=\"51418338918623\" data-price=\"6000\" min=\"0\" value=\"0\" required\u003e\n      \u003c\/div\u003e\n\n      \u003cdiv class=\"spec-row\"\u003e\n        \u003clabel class=\"spec-title\"\u003e嬰幼兒人數 \u003cspan class=\"spec-title-sub\"\u003e(0歳～2歳)\u003c\/span\u003e\u003c\/label\u003e\n        \u003cinput type=\"number\" class=\"spec-input passenger-count\" id=\"count-infant\" data-type=\"infant\" data-variant-id=\"51418338951391\" data-price=\"0\" min=\"0\" value=\"0\" required\u003e\n      \u003c\/div\u003e\n\n      \u003cdiv class=\"spec-row\"\u003e\n        \u003clabel class=\"spec-title\"\u003e航班資訊\u003c\/label\u003e \n        \u003cinput type=\"text\" class=\"spec-input\" id=\"prop-flight\" placeholder=\"例：長榮航空 BR116\" required=\"\"\u003e\n      \u003c\/div\u003e\n\n      \u003cdiv class=\"spec-row\"\u003e\n        \u003clabel class=\"spec-title\"\u003e預計起飛\/到達時間\u003c\/label\u003e \n        \u003cinput type=\"time\" class=\"spec-input\" id=\"prop-flight-time\" required=\"\"\u003e\n      \u003c\/div\u003e\n\n      \u003cdiv class=\"spec-row\"\u003e\n        \u003clabel class=\"spec-title\"\u003e全部乘車人姓名及年齡\u003c\/label\u003e \n        \u003cinput type=\"text\" class=\"spec-input\" id=\"prop-names\" placeholder=\"例：王小明 35歲, 張小華 8歲\" required=\"\"\u003e\n      \u003c\/div\u003e\n\n      \u003cdiv class=\"spec-row\"\u003e\n        \u003clabel class=\"spec-title\"\u003e當日聯繫人\u003c\/label\u003e \n        \u003cinput type=\"text\" class=\"spec-input\" id=\"prop-contact\" placeholder=\"例：王小明\" required=\"\"\u003e\n      \u003c\/div\u003e\n\n      \u003cdiv class=\"spec-row\"\u003e\n        \u003clabel class=\"spec-title\"\u003e聯絡電話\u003c\/label\u003e \n        \u003cinput type=\"tel\" class=\"spec-input\" id=\"prop-phone\" placeholder=\"例：+886 912345678\" required=\"\"\u003e\n      \u003c\/div\u003e\n\n      \u003cdiv class=\"spec-row\"\u003e\n        \u003clabel class=\"spec-title\"\u003e通訊軟體 ID\u003c\/label\u003e \n        \u003cinput type=\"text\" class=\"spec-input\" id=\"prop-line-wechat\" placeholder=\"例：LINE ID: abc1234 或 WeChat: myid\" required=\"\"\u003e\n      \u003c\/div\u003e\n\n      \u003cbutton type=\"submit\" class=\"custom-submit-btn\"\u003e加入購物車 \/ 預約\u003c\/button\u003e\n    \u003c\/form\u003e\n  \u003c\/div\u003e\n\u003c\/div\u003e\n\n\u003cscript\u003e\n  document.addEventListener('DOMContentLoaded', function() {\n    const pickupSelect = document.getElementById('prop-pickup');\n    const busSelect = document.getElementById('prop-bus');\n    const busPlaceholder = document.getElementById('bus-placeholder');\n    const dateInput = document.getElementById('prop-date');\n\n    \/\/ 核心：日期跳轉與範圍設定\n    function updateDateLimits() {\n      if (!busSelect || !dateInput) return;\n\n      const val = busSelect.value || '';\n      let targetMin = '2026-12-02';\n      let targetMax = '2027-03-31';\n\n      if (val.indexOf('102B') !== -1) {\n        targetMin = '2026-12-15';\n        targetMax = '2027-03-15';\n      }\n\n      dateInput.min = targetMin;\n      dateInput.max = targetMax;\n      dateInput.value = targetMin;\n\n      \/\/ 觸發多個事件確保 UI 日期組件即時刷新\n      dateInput.dispatchEvent(new Event('change', { bubbles: true }));\n      dateInput.dispatchEvent(new Event('input', { bubbles: true }));\n    }\n\n    \/\/ 選擇地點時，動態刷新選單發車時間\n    if (pickupSelect) {\n      pickupSelect.addEventListener('change', function() {\n        const isWestin = this.value.indexOf(\"威斯汀\") !== -1;\n        if (busPlaceholder) busPlaceholder.textContent = \"請選擇乘車班次\";\n\n        const options = busSelect.querySelectorAll('option');\n        options.forEach(opt =\u003e {\n          if (opt.disabled) return;\n          const code = opt.getAttribute('data-bus');\n          const time = isWestin ? opt.getAttribute('data-time-westin') : opt.getAttribute('data-time-rusutsu');\n          \n          if (code === '102B') {\n            opt.textContent = `${code}班次 (${time}發車) (12\/15~3\/15)`;\n          } else if (code) {\n            opt.textContent = `${code}班次 (${time}發車)`;\n          }\n        });\n\n        \/\/ 重置班次與日期\n        busSelect.value = \"\";\n        dateInput.min = '2026-12-02';\n        dateInput.max = '2027-03-31';\n        dateInput.value = '2026-12-02';\n        dateInput.dispatchEvent(new Event('change', { bubbles: true }));\n      });\n    }\n\n    \/\/ 綁定班次切換的多重監聽事件，解決部分瀏覽器不觸發 change 的問題\n    if (busSelect) {\n      ['change', 'input', 'blur'].forEach(eventName =\u003e {\n        busSelect.addEventListener(eventName, updateDateLimits);\n      });\n    }\n  });\n\u003c\/script\u003e\n\u003cp\u003e \u003c\/p\u003e\n\u003cp\u003e \u003c\/p\u003e\n\u003cdiv class=\"route-info\" style=\"font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif; line-height: 1.6; color: #333333;\"\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003cp\u003e \u003c\/p\u003e\n\u003cstyle\u003e\n    .notice-table-wrapper {\n      width: 100%;\n      overflow-x: auto;\n      margin: 15px 0;\n    }\n\n    .notice-table {\n      width: 100%;\n      border-collapse: collapse;\n      text-align: center;\n      font-size: 0.9rem;\n      border: 1px solid #cbd5e1;\n    }\n\n    .notice-table th {\n      background-color: #e6f0ec;\n      color: #1e293b;\n      font-weight: bold;\n      padding: 10px 12px;\n      border: 1px solid #cbd5e1;\n    }\n\n    .notice-table td {\n      padding: 10px 12px;\n      border: 1px solid #cbd5e1;\n    }\n\n    .notice-table td.header-cell {\n      background-color: #e6f0ec;\n      font-weight: bold;\n      color: #1e293b;\n    }\n  \u003c\/style\u003e\n\u003cdiv class=\"notice-container\" style=\"max-width: 100%; margin: 0 auto; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; color: #333333; line-height: 1.6;\"\u003e\n\u003ch2 style=\"font-size: 1.5rem; font-weight: bold; margin-bottom: 4px; color: #000000;\"\u003e全路線共通注意事項\u003c\/h2\u003e\n\u003cp style=\"font-size: 0.875rem; color: #4b5563; margin-top: 0; margin-bottom: 24px;\"\u003e※預訂前請務必閱讀。\u003c\/p\u003e\n\u003ch3 style=\"font-size: 1.1rem; font-weight: bold; margin-bottom: 12px; color: #000000;\"\u003e飛機・巴士轉乘時間\u003c\/h3\u003e\n\u003cdiv class=\"notice-table-wrapper\"\u003e\n\u003ctable class=\"notice-table\"\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth style=\"width: 20%;\"\u003e\u003c\/th\u003e\n\u003cth style=\"width: 40%;\"\u003e飛機 → 巴士\u003c\/th\u003e\n\u003cth style=\"width: 40%;\"\u003e巴士 → 飛機\u003c\/th\u003e\n\u003c\/tr\u003e\n\u003c\/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd class=\"header-cell\"\u003e國內線\u003c\/td\u003e\n\u003ctd\u003e45分鐘以上\u003c\/td\u003e\n\u003ctd\u003e60分鐘以上\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd class=\"header-cell\"\u003e國際線\u003c\/td\u003e\n\u003ctd\u003e90分鐘以上\u003c\/td\u003e\n\u003ctd\u003e120分鐘以上\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003c\/tbody\u003e\n\u003c\/table\u003e\n\u003c\/div\u003e\n\u003cdiv style=\"font-size: 0.85rem; color: #333333; margin-top: 12px; line-height: 1.5;\"\u003e※ 本公司不進行轉乘時間的確認。\u003cbr\u003e若無法順利轉乘，本公司概不承擔任何責任，敬請見諒。\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cp\u003e \u003c\/p\u003e\n\u003cstyle\u003e\n    .cancel-table-wrapper {\n      width: 100%;\n      overflow-x: auto;\n      margin: 15px 0;\n    }\n\n    .cancel-table {\n      width: 100%;\n      border-collapse: collapse;\n      text-align: center;\n      font-size: 0.85rem;\n      border: 1px solid #cbd5e1;\n    }\n\n    .cancel-table th {\n      background-color: #e6f0ec;\n      color: #1e293b;\n      font-weight: bold;\n      padding: 10px 8px;\n      border: 1px solid #cbd5e1;\n    }\n\n    .cancel-table td {\n      padding: 10px 8px;\n      border: 1px solid #cbd5e1;\n    }\n\n    .cancel-table td.header-cell {\n      background-color: #e6f0ec;\n      font-weight: bold;\n      color: #1e293b;\n    }\n\n    a.custom-link {\n      color: #1e293b;\n      text-decoration: underline;\n    }\n\n    a.custom-link:hover {\n      color: #000000;\n    }\n  \u003c\/style\u003e\n\u003cdiv class=\"notice-container\" style=\"max-width: 100%; margin: 0 auto; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; color: #333333; line-height: 1.6;\"\u003e\n\u003c!-- 集合時間區塊 --\u003e\n\u003ch2 style=\"font-size: 1.25rem; font-weight: bold; margin-bottom: 12px; color: #000000;\"\u003e集合時間\u003c\/h2\u003e\n\u003cp style=\"margin-bottom: 12px;\"\u003e請於下列時間前抵達指定的集合地點。\u003c\/p\u003e\n\u003cp style=\"margin-bottom: 4px;\"\u003e各機場：巴士發車時刻前 15 分鐘\u003c\/p\u003e\n\u003cp style=\"margin-bottom: 12px;\"\u003e上述以外的出發地點：巴士發車時刻前 10 分鐘\u003c\/p\u003e\n\u003cp style=\"margin-bottom: 12px;\"\u003e若超過發車時間仍未集合，原則上將不再等候旅客。此種情況將視為「未聯絡放棄參加」。\u003c\/p\u003e\n\u003cp style=\"margin-bottom: 4px;\"\u003e※ 全路線皆為預約制，無人預約的上車地（集合地點）與下車地將不停靠，敬請注意。\u003c\/p\u003e\n\u003cp style=\"margin-bottom: 12px;\"\u003e※ 請事先確認集合地點。\u003c\/p\u003e\n\u003cp style=\"margin-bottom: 28px;\"\u003e\u003ca href=\"#\" class=\"custom-link\"\u003e集合地點一覽請點此\u003c\/a\u003e\u003c\/p\u003e\n\u003c!-- 取消手續費區塊 --\u003e\n\u003ch2 style=\"font-size: 1.25rem; font-weight: bold; margin-bottom: 12px; color: #000000;\"\u003e取消手續費\u003c\/h2\u003e\n\u003cp style=\"margin-bottom: 8px;\"\u003e若變更或取消，可透過電子郵件或電話進行申請。\u003c\/p\u003e\n\u003cp style=\"margin-bottom: 8px;\"\u003e另以電話受理取消申請僅限營業時間內。（營業時間 9:00～18:00 全年無休）\u003c\/p\u003e\n\u003cp style=\"margin-bottom: 8px;\"\u003e透過電子郵件取消者，將以收到信件的日期作為取消日。\u003c\/p\u003e\n\u003cp style=\"margin-bottom: 16px;\"\u003e此外，前一日及當日的變更或取消，請務必透過電話與我們聯絡。\u003c\/p\u003e\n\u003cp style=\"margin-bottom: 16px;\"\u003e若產生退款，匯款手續費將由顧客自行負擔，敬請事先見諒。\u003c\/p\u003e\n\u003cp style=\"margin-bottom: 16px;\"\u003e於使用日 7 天前（含）欲變更班次或上車地點時，需先取消原預約後再重新進行預約。\u003c\/p\u003e\n\u003cp style=\"margin-bottom: 16px;\"\u003e因此，將產生下表之取消手續費及新行程之費用，敬請事先見諒。\u003c\/p\u003e\n\u003c!-- 取消手續費表格 --\u003e\n\u003cdiv class=\"cancel-table-wrapper\"\u003e\n\u003ctable class=\"cancel-table\"\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth class=\"header-cell\" style=\"width: 15%;\"\u003e取消日\u003c\/th\u003e\n\u003cth style=\"width: 30%;\"\u003e行程開始日的前一日起倒數 7 天～2 天前\u003c\/th\u003e\n\u003cth style=\"width: 20%;\"\u003e行程開始日的前一日\u003c\/th\u003e\n\u003cth style=\"width: 17.5%;\"\u003e行程開始日當天\u003cbr\u003e（行程開始前）\u003c\/th\u003e\n\u003cth style=\"width: 17.5%;\"\u003e行程開始後解除\u003cbr\u003e或未聯絡放棄參加\u003c\/th\u003e\n\u003c\/tr\u003e\n\u003c\/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd class=\"header-cell\"\u003e取消手續費率\u003c\/td\u003e\n\u003ctd\u003e40%\u003c\/td\u003e\n\u003ctd\u003e80%\u003c\/td\u003e\n\u003ctd\u003e100%\u003c\/td\u003e\n\u003ctd\u003e100%\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003c\/tbody\u003e\n\u003c\/table\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cp\u003e \u003c\/p\u003e\n\u003cstyle\u003e\n    .section-title {\n      font-size: 1.15rem;\n      font-weight: bold;\n      color: #000000;\n      margin-top: 24px;\n      margin-bottom: 12px;\n    }\n    \n    .divider {\n      border: none;\n      border-top: 1px solid #4b5563;\n      margin-bottom: 16px;\n    }\n\n    .item-list {\n      margin: 0;\n      padding: 0;\n      list-style: none;\n    }\n\n    .item-list li {\n      margin-bottom: 10px;\n      position: relative;\n      padding-left: 1.2em;\n      text-indent: -1.2em;\n    }\n\n    .sub-item {\n      text-indent: 0 !important;\n      padding-left: 1.2em !important;\n      margin-top: 4px;\n    }\n  \u003c\/style\u003e\n\u003cdiv class=\"notice-container\" style=\"max-width: 100%; margin: 0 auto; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; color: #333333; line-height: 1.6;\"\u003e\n\u003cul class=\"item-list\"\u003e\n\u003cli class=\"sub-item\"\u003e\n\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cbr\u003e\n\u003c\/div\u003e\n\u003cp\u003e \u003c\/p\u003e\n\u003cstyle\u003e\n    .section-title {\n      font-size: 1.15rem;\n      font-weight: bold;\n      color: #000000;\n      margin-top: 24px;\n      margin-bottom: 12px;\n    }\n    \n    .divider {\n      border: none;\n      border-top: 1px solid #4b5563;\n      margin-bottom: 16px;\n    }\n\n    .item-list {\n      margin: 0;\n      padding: 0;\n      list-style: none;\n    }\n\n    .item-list li {\n      margin-bottom: 10px;\n      position: relative;\n      padding-left: 1.2em;\n      text-indent: -1.2em;\n    }\n\n    .sub-item {\n      text-indent: 0 !important;\n      padding-left: 1.2em !important;\n      margin-top: 4px;\n    }\n  \u003c\/style\u003e\n\u003cdiv class=\"notice-container\" style=\"max-width: 100%; margin: 0 auto; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; color: #333333; line-height: 1.6;\"\u003e\n\u003ch2 style=\"font-size: 1.35rem; font-weight: bold; margin-bottom: 16px; color: #000000;\"\u003e運行・乘車\u003c\/h2\u003e\n\u003c!-- 區塊 1 --\u003e\n\u003cdiv class=\"section-title\"\u003e惡劣天氣・道路狀況等影響下之運行及因應\u003c\/div\u003e\n\u003chr class=\"divider\"\u003e\n\u003cul class=\"item-list\"\u003e\n\u003cli\u003e■ 發生航班延誤、取消等情況時，作為緊急因應，可能會調整巴士發車時間後進行運行。此外，若因航班延誤或取消導致旅客無法於預定當日乘車，可能會為您引導至次日以後的班次或其他交通工具（所產生的費用由旅客自行負擔）。但在此類情況下，本公司並不承擔確保替代班次或替代交通工具的責任，敬請事先見諒。\u003c\/li\u003e\n\u003cli\u003e■ 若評估恐將影響接駁飛機時，可能會為您引導轉往最近的 JR 車站等其他交通工具。此外，隨之產生的費用將由旅客自行負擔，敬請事先見諒。\u003c\/li\u003e\n\u003cli\u003e■ 若無法預期正常運行，可能會進行行程中止、路線變更、延誤，或縮減觀光景點時間等狀況。此外，亦可能會為您引導至其他交通工具，但隨之產生的費用等將由旅客自行負擔。另若因不可抗力之狀況導致抵達機場時間無法趕上飛機發車時間，本公司概不承擔責任，敬請事先見諒。\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003c!-- 區塊 2 --\u003e\n\u003cdiv class=\"section-title\"\u003e運行車輛\u003c\/div\u003e\n\u003chr class=\"divider\"\u003e\n\u003cul class=\"item-list\"\u003e\n\u003cli\u003e■ 將根據預約人數安排計程車或巴士運行。\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003c!-- 區塊 3 --\u003e\n\u003cdiv class=\"section-title\"\u003e乘車時注意事項\u003c\/div\u003e\n\u003chr class=\"divider\"\u003e\n\u003cul class=\"item-list\"\u003e\n\u003cli\u003e■ 車廂內全面禁菸。\u003c\/li\u003e\n\u003cli\u003e■ 座位為自由座。但因客滿等理由，可能會為您指定座位，敬請事先見諒。\u003c\/li\u003e\n\u003cli\u003e■ 車內使用行動電話請設定為靜音模式，並請勿通話。\u003c\/li\u003e\n\u003cli\u003e■ 請配合繫好安全帶。\u003c\/li\u003e\n\u003cli\u003e■ 請勿穿著滑雪靴、雪板靴乘車。\u003c\/li\u003e\n\u003cli\u003e■ 車廂行李箱可託運的行李為滑雪用具 1 件，以及滑雪用具以外的行李 1 件。\u003c\/li\u003e\n\u003cli\u003e■ 攜帶雙板滑雪板或單板滑雪板時，請裝入專用袋或專用盒內攜帶。於搬上下巴士或行駛中的行李箱內，可能會成為造成行李破損或損壞的原因，敬請協助配合。\u003c\/li\u003e\n\u003cli\u003e■ 請勿做出其他造成周遭旅客困擾之行為。\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003c!-- 區塊 4 --\u003e\n\u003cdiv class=\"section-title\"\u003e其他\u003c\/div\u003e\n\u003chr class=\"divider\"\u003e\n\u003cul class=\"item-list\"\u003e\n\u003cli\u003e■ 若休息設施因營業期間、營業時間等因素無法使用時，可能會直接通過或變更為替代設施。\u003c\/li\u003e\n\u003cli\u003e■ 若參觀設施因休館等原因無法觀光，可能會為您引導至替代觀光景點。\u003c\/li\u003e\n\u003cli\u003e■ 滑雪巴士原則上僅限於上落車地區飯店入住之旅客利用。\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003c!-- 區塊 5 --\u003e\n\u003cdiv class=\"section-title\"\u003e關於旅行契約\u003c\/div\u003e\n\u003chr class=\"divider\"\u003e\n\u003cul class=\"item-list\"\u003e\n\u003cli\u003e■ 與旅客之間成立的旅行契約，係以本公司之行程代碼或班次代碼為單位。\u003c\/li\u003e\n\u003cli class=\"sub-item\"\u003e即使一次報名多個行程（班次），於您所利用的行程至下一個利用行程之間，或利用班次至下一個利用班次之間，旅行契約並不延續。旅客遭受損害等之保障將以此契約為單位，敬請事先見諒。\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003c\/div\u003e","brand":"桜縁旅行","offers":[{"title":"成人","offer_id":51418338885855,"sku":null,"price":7000.0,"currency_code":"JPY","in_stock":true},{"title":"儿童","offer_id":51418338918623,"sku":null,"price":6000.0,"currency_code":"JPY","in_stock":true},{"title":"婴幼儿","offer_id":51418338951391,"sku":null,"price":0.0,"currency_code":"JPY","in_stock":true}],"url":"https:\/\/sakuratrip.com.co\/products\/rusutsu-cts","provider":"桜縁旅行","version":"1.0","type":"link"}