{"id":10607,"date":"2026-04-20T07:19:24","date_gmt":"2026-04-20T07:19:24","guid":{"rendered":"https:\/\/komodoislandtour.id\/?post_type=boat-type&#038;p=10607"},"modified":"2026-05-24T08:34:44","modified_gmt":"2026-05-24T08:34:44","slug":"armada-mulia-boat","status":"publish","type":"boat-type","link":"https:\/\/komodoislandtour.id\/fr\/boat-type\/armada-mulia-boat\/","title":{"rendered":"Armada Mulia Boat"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-post\" data-elementor-id=\"10607\" class=\"elementor elementor-10607\" data-elementor-post-type=\"boat-type\">\n\t\t\t\t<div class=\"elementor-element elementor-element-a3d3da5 e-flex e-con-boxed e-con e-parent\" data-id=\"a3d3da5\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-67ccebb elementor-widget elementor-widget-html\" data-id=\"67ccebb\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div class=\"kk-simple-note\">\n  <p>\n    Komodo Tour Indonesia acts as an official agent connecting travelers with selected boat operators.\n  <\/p>\n\n  <p>\n    <strong>Armada Mulia<\/strong> is operated by <strong>Golden Island Cruises<\/strong>, with all onboard services and vessel operations fully managed by the operator.\n  <\/p>\n\n  <p>\n    Komodo Tour Indonesia is not involved in onboard operations and is responsible for booking arrangements and pre-departure coordination only.\n  <\/p>\n<\/div>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-322e75e elementor-widget elementor-widget-heading\" data-id=\"322e75e\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Cabin Prices<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-9b2a067 elementor-widget elementor-widget-heading\" data-id=\"9b2a067\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h3 class=\"elementor-heading-title elementor-size-default\">lombok to labuan bajo<\/h3>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-c9968f2 elementor-widget elementor-widget-html\" data-id=\"c9968f2\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div style=\"overflow-x:auto;\">\n  <table border=\"1\" cellspacing=\"0\" cellpadding=\"10\" style=\"width:100%; border-collapse: collapse; text-align:center; min-width:500px;\">\n    <thead style=\"background:#f2f2f2;\">\n      <tr>\n        <th>Cabin Type<\/th>\n        <th>Price (IDR)<\/th>\n      <\/tr>\n    <\/thead>\n    <tbody>\n      <tr>\n        <td>Private Cabin<\/td>\n        <td>4,700,000 \/ Person<\/td>\n      <\/tr>\n      <tr>\n        <td>Shared \/ Sharing Cabin<\/td>\n        <td>3,800,000 \/ Person<\/td>\n      <\/tr>\n\n    <\/tbody>\n  <\/table>\n<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-dc5ce29 e-con-full e-flex e-con e-child\" data-id=\"dc5ce29\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-78f6bfd elementor-align-justify elementor-mobile-align-justify elementor-widget__width-initial elementor-widget-mobile__width-inherit elementor-widget elementor-widget-button\" data-id=\"78f6bfd\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"button.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<div class=\"elementor-button-wrapper\">\n\t\t\t\t\t<a class=\"elementor-button elementor-button-link elementor-size-sm\" href=\"https:\/\/drive.google.com\/file\/d\/1SxiqGTE89_yyCwArUmWpc3ZQPDvjPhGX\/view\" rel=\"nofollow noopener\" target=\"_blank\">\n\t\t\t\t\t\t<span class=\"elementor-button-content-wrapper\">\n\t\t\t\t\t\t\t\t\t<span class=\"elementor-button-text\">Download Flyer<\/span>\n\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/a>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-85aeea0 elementor-align-justify elementor-widget__width-initial elementor-widget-mobile__width-inherit elementor-mobile-align-justify elementor-widget elementor-widget-button\" data-id=\"85aeea0\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"button.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<div class=\"elementor-button-wrapper\">\n\t\t\t\t\t<a class=\"elementor-button elementor-button-link elementor-size-sm\" href=\"https:\/\/bes.hybridbooking.com\/komodotourindonesia\/booking\/rsv\/detail\/KTI8327\/ARMADA-MULIA-STANDARD-BOAT-KOMODO-ISLAND-TOUR-FROM-LOMBOK\/\" rel=\"nofollow noopener\" target=\"_blank\">\n\t\t\t\t\t\t<span class=\"elementor-button-content-wrapper\">\n\t\t\t\t\t\t\t\t\t<span class=\"elementor-button-text\">enquiry<\/span>\n\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/a>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-0a577f8 elementor-widget elementor-widget-heading\" data-id=\"0a577f8\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h3 class=\"elementor-heading-title elementor-size-default\">labuan bajo to lombok<\/h3>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-69d17e7 elementor-widget elementor-widget-html\" data-id=\"69d17e7\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div style=\"overflow-x:auto;\">\n  <table border=\"1\" cellspacing=\"0\" cellpadding=\"10\" style=\"width:100%; border-collapse: collapse; text-align:center; min-width:500px;\">\n    <thead style=\"background:#f2f2f2;\">\n      <tr>\n        <th>Cabin Type<\/th>\n        <th>Price (IDR)<\/th>\n      <\/tr>\n    <\/thead>\n    <tbody>\n      <tr>\n        <td>Private Cabin<\/td>\n        <td>4,000,000 \/ Person<\/td>\n      <\/tr>\n      <tr>\n        <td>Shared \/ Sharing Cabin<\/td>\n        <td>3,300,000 \/ Person<\/td>\n      <\/tr>\n\n    <\/tbody>\n  <\/table>\n<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-7b6a699 e-con-full e-flex e-con e-child\" data-id=\"7b6a699\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-3d1ef6a elementor-align-justify elementor-mobile-align-justify elementor-widget__width-initial elementor-widget-mobile__width-inherit elementor-widget elementor-widget-button\" data-id=\"3d1ef6a\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"button.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<div class=\"elementor-button-wrapper\">\n\t\t\t\t\t<a class=\"elementor-button elementor-button-link elementor-size-sm\" href=\"https:\/\/drive.google.com\/file\/d\/1LbX-_XKHmvo06CWfRubQhRak23JSyMdc\/view\" rel=\"nofollow noopener\" target=\"_blank\">\n\t\t\t\t\t\t<span class=\"elementor-button-content-wrapper\">\n\t\t\t\t\t\t\t\t\t<span class=\"elementor-button-text\">Download Flyer<\/span>\n\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/a>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-1d2a804 elementor-align-justify elementor-widget__width-initial elementor-widget-mobile__width-inherit elementor-mobile-align-justify elementor-widget elementor-widget-button\" data-id=\"1d2a804\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"button.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<div class=\"elementor-button-wrapper\">\n\t\t\t\t\t<a class=\"elementor-button elementor-button-link elementor-size-sm\" href=\"https:\/\/bes.hybridbooking.com\/komodotourindonesia\/booking\/rsv\/detail\/KTI5196\/ARMADA-MULIA-STANDARD-BOAT-KOMODO-TOUR-FROM-LABUAN-BAJO-FINISH-LOMBOK\/\" rel=\"nofollow noopener\" target=\"_blank\">\n\t\t\t\t\t\t<span class=\"elementor-button-content-wrapper\">\n\t\t\t\t\t\t\t\t\t<span class=\"elementor-button-text\">enquiry<\/span>\n\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/a>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-cf9aed5 elementor-widget elementor-widget-html\" data-id=\"cf9aed5\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<style>\n.inc-section{\n  max-width:1000px;\n  margin:auto;\n  display:grid;\n  grid-template-columns:1fr 1fr;\n  gap:30px;\n  font-family:inherit;\n}\n\n\/* card *\/\n.inc-card{\n  background:#fff;\n  padding:25px;\n  border-radius:12px;\n  border:1px solid #f1f1f1;\n}\n\n\/* title *\/\n.inc-title{\n  font-size:18px;\n  font-weight:700;\n  margin-bottom:18px;\n  display:flex;\n  align-items:center;\n  gap:10px;\n}\n\n\/* list *\/\n.inc-list{\n  list-style:none;\n  padding:0;\n  margin:0;\n}\n\n.inc-list li{\n  display:flex;\n  align-items:flex-start;\n  gap:10px;\n  margin-bottom:12px;\n  line-height:1.6;\n  color:#555;\n  font-size:14px;\n}\n\n\/* icons *\/\n.icon-check{\n  color:#22c55e;\n  font-size:14px;\n  margin-top:3px;\n}\n\n.icon-cross{\n  color:#ef4444;\n  font-size:14px;\n  margin-top:3px;\n}\n\n\/* mobile *\/\n@media(max-width:768px){\n  .inc-section{\n    grid-template-columns:1fr;\n  }\n}\n<\/style>\n<div class=\"inc-section\">\n\n  <!-- INCLUDED -->\n  <div class=\"inc-card\">\n\n    <div class=\"inc-title\">\n      <span class=\"icon-check\">\u2713<\/span> WHAT INCLUDED\n    <\/div>\n\n    <ul class=\"inc-list\">\n\n      <li><span class=\"icon-check\">\u2713<\/span>\n      Pick up service at Gili T, Gili Meno, Gili Air, Senggigi, Mataram, Kuta, Tetebatu, Senaru (for Lombok to Labuan Bajo)\n      <\/li>\n\n      <li><span class=\"icon-check\">\u2713<\/span>\n      Meals on board\n      <\/li>\n\n      <li><span class=\"icon-check\">\u2713<\/span>\n      Snack, coffee, tea, and fruits\n      <\/li>\n\n      <li><span class=\"icon-check\">\u2713<\/span>\n      Snorkeling equipment (mask and snorkel only)\n      <\/li>\n\n      <li><span class=\"icon-check\">\u2713<\/span>\n      Safety equipment, First aid box\n      <\/li>\n\n      <li><span class=\"icon-check\">\u2713<\/span>\n      Government tax, Entrance fee, Insurance fee\n      <\/li>\n\n      <li><span class=\"icon-check\">\u2713<\/span>\n      English speaking Guide\n      <\/li>\n\n    <\/ul>\n\n  <\/div>\n\n\n  <!-- EXCLUDED -->\n  <div class=\"inc-card\">\n\n    <div class=\"inc-title\">\n      <span class=\"icon-cross\">\u2715<\/span> FACILITY EXCLUDE\n    <\/div>\n\n    <ul class=\"inc-list\">\n\n      <li><span class=\"icon-cross\">\u2715<\/span>\n      Flight Ticket\n      <\/li>\n\n      <li><span class=\"icon-cross\">\u2715<\/span>\n      Snorkeling suit, and fins\n      <\/li>\n\n      <li><span class=\"icon-cross\">\u2715<\/span>\n      Towel\n      <\/li>\n\n    <\/ul>\n\n  <\/div>\n\n<\/div>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-dd4666b elementor-widget elementor-widget-heading\" data-id=\"dd4666b\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Itinerary and Schedules<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-1839cad elementor-widget elementor-widget-heading\" data-id=\"1839cad\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h4 class=\"elementor-heading-title elementor-size-default\">Lombok to Labuan Bajo<\/h4>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-cdd396c elementor-widget elementor-widget-html\" data-id=\"cdd396c\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<style>\n.itinerary-wrap {\n  max-width: 1000px;\n  margin: 4px auto;\n  font-family: Arial, sans-serif;\n}\n\n.itinerary-table {\n  width: 100%;\n  border-collapse: collapse;\n  border-radius: 1px;\n  overflow: hidden;\n}\n\n.itinerary-table th {\n  background: #355A35;\n  color: #ffffff;\n  padding: 14px;\n  text-align: left;\n  font-size: 14px;\n}\n\n.itinerary-table td {\n  padding: 14px;\n  border-bottom: 1px solid #e5e7eb;\n  vertical-align: top;\n  font-size: 14px;\n  line-height: 1.6;\n}\n\n.itinerary-day {\n  font-weight: 800;\n  color: #355A35;\n  width: 120px;\n}\n\n.itinerary-table tr:nth-child(even) {\n  background: #f8faf8;\n}\n\n.itinerary-note {\n  margin-top: 16px;\n  padding: 10px;\n  background: #f0f7f0;\n  border-left: 4px solid #355A35;\n  font-size: 13px;\n  color: #374151;\n}\n<\/style>\n\n<div class=\"itinerary-wrap\">\n\n  <table class=\"itinerary-table\">\n    <thead>\n      <tr>\n        <th>Day<\/th>\n        <th>Activities<\/th>\n      <\/tr>\n    <\/thead>\n\n    <tbody>\n      <tr>\n        <td class=\"itinerary-day\">DAY 1<\/td>\n        <td>\n          Meeting point at restaurant in Bangsal & Golden Island Cruises Head Office in Kopang and Bus to Kayangan Port, boat continue to Kenawa Island.\n        <\/td>\n      <\/tr>\n\n      <tr>\n        <td class=\"itinerary-day\">DAY 2<\/td>\n        <td>\n          Saleh Bay for swimming and seeing the Whale Shark, jump off the boat at Tambora\u2019s Sea.\n        <\/td>\n      <\/tr>\n\n      <tr>\n        <td class=\"itinerary-day\">DAY 3<\/td>\n        <td>\n          Komodo National Park, Pink Beach and Padar Island.\n        <\/td>\n      <\/tr>\n\n      <tr>\n        <td class=\"itinerary-day\">DAY 4<\/td>\n        <td>\n          Manjarite Beach Island, Kelor Island, Labuan Bajo Flores end of the trip.\n        <\/td>\n      <\/tr>\n    <\/tbody>\n  <\/table>\n\n  <div class=\"itinerary-note\">\n    <strong>Notes:<\/strong><br><br>\n    \n    \u2022 For guests staying on the three Gili islands, Bangsal, or Senggigi, the meeting point will be at Pandu Restaurant Bangsal, and from there you will be transferred to Kayangan Port.<br><br>\n    \n    \u2022 For guests staying in Kuta and Mataram, the meeting point will be at the Head Office of Golden Island Cruises in Kopang. Central Lombok. For guests staying in Senggigi, the nearest pick-up location from your accommodation will be shared one day before departure.<br><br>\n    \n    \u2022 With this method, we aim to shorten travel time by bus and avoid traffic congestion.\n  <\/div>\n\n<\/div>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-5d5cb22 elementor-widget elementor-widget-heading\" data-id=\"5d5cb22\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h4 class=\"elementor-heading-title elementor-size-default\">Labuan Bajo to Lombok<\/h4>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-2672500 elementor-widget elementor-widget-html\" data-id=\"2672500\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<style>\n.itinerary-wrap {\n  max-width: 1000px;\n  margin: 4px auto;\n  font-family: Arial, sans-serif;\n}\n\n.itinerary-table {\n  width: 100%;\n  border-collapse: collapse;\n  border-radius: 1px;\n  overflow: hidden;\n}\n\n.itinerary-table th {\n  background: #355A35;\n  color: #ffffff;\n  padding: 14px;\n  text-align: left;\n  font-size: 14px;\n}\n\n.itinerary-table td {\n  padding: 14px;\n  border-bottom: 1px solid #e5e7eb;\n  vertical-align: top;\n  font-size: 14px;\n  line-height: 1.6;\n}\n\n.itinerary-day {\n  font-weight: 800;\n  color: #355A35;\n  width: 120px;\n}\n\n.itinerary-table tr:nth-child(even) {\n  background: #f8faf8;\n}\n<\/style>\n\n<div class=\"itinerary-wrap\">\n\n  <table class=\"itinerary-table\">\n    <thead>\n      <tr>\n        <th>Day<\/th>\n        <th>Activities<\/th>\n      <\/tr>\n    <\/thead>\n\n    <tbody>\n      <tr>\n        <td class=\"itinerary-day\">NIGHT 1<\/td>\n        <td>\n          Meeting point at Cristoper Komodo Office, 2 PM \u2013 Overnight sailing to Padar Island.\n        <\/td>\n      <\/tr>\n\n      <tr>\n        <td class=\"itinerary-day\">DAY 1<\/td>\n        <td>\n          Sunrise trek at Padar Island, visit Loh Liang \u2013 Komodo National Park to see Komodo dragons, snorkel at Pink Beach.\n        <\/td>\n      <\/tr>\n\n      <tr>\n        <td class=\"itinerary-day\">DAY 2<\/td>\n        <td>\n          An unforgettable experience swimming with Whale Sharks in the waters of Tambora.\n        <\/td>\n      <\/tr>\n\n      <tr>\n        <td class=\"itinerary-day\">DAY 3<\/td>\n        <td>\n          Explore the pristine beauty of Kenawa Island, known for its rolling hills, white sandy beaches, and crystal-clear waters, before returning to Lombok.\n        <\/td>\n      <\/tr>\n    <\/tbody>\n  <\/table>\n\n<\/div>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-360f92b elementor-widget elementor-widget-html\" data-id=\"360f92b\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<style>\r\n  * {\r\n    box-sizing: border-box;\r\n    margin: 0;\r\n    padding: 0;\r\n  }\r\n  body {\r\n    font-family: sans-serif;\r\n  }\r\n  .landing {\r\n    padding: 0px;\r\n    text-align: center;\r\n  }\r\n  .landing h1 {\r\n    font-size: 26px;\r\n    font-weight: 700;\r\n    color: #111827;\r\n    margin-bottom: 8px;\r\n  }\r\n  .landing p {\r\n    font-size: 14px;\r\n    color: #6b7280;\r\n    margin-bottom: 28px;\r\n    line-height: 1.6;\r\n  }\r\n  .btn-book {\r\n    display: inline-block;\r\n    padding: 13px 32px;\r\n    background: #25d366;\r\n    color: #fff;\r\n    border: none;\r\n    border-radius: 10px;\r\n    font-size: 15px;\r\n    font-weight: 700;\r\n    cursor: pointer;\r\n    transition: background 0.2s;\r\n  }\r\n  .btn-book:hover {\r\n    background: #1ebe5d;\r\n  }\r\n  .overlay {\r\n    display: none;\r\n    position: fixed;\r\n    inset: 0;\r\n    background: rgba(0, 0, 0, 0.45);\r\n    z-index: 100;\r\n    align-items: center;\r\n    justify-content: center;\r\n    padding: 16px;\r\n  }\r\n  .overlay.show {\r\n    display: flex;\r\n  }\r\n  .modal {\r\n    background: #fff;\r\n    border-radius: 16px;\r\n    width: 100%;\r\n    max-width: 520px;\r\n    max-height: 90vh;\r\n    overflow-y: auto;\r\n    padding: 28px 24px 24px;\r\n    position: relative;\r\n  }\r\n  .modal-close {\r\n    position: absolute;\r\n    top: 16px;\r\n    right: 18px;\r\n    background: none;\r\n    border: none;\r\n    font-size: 20px;\r\n    color: #9ca3af;\r\n    cursor: pointer;\r\n    line-height: 1;\r\n  }\r\n  .modal h2 {\r\n    font-size: 18px;\r\n    font-weight: 700;\r\n    color: #111827;\r\n    margin-bottom: 6px;\r\n  }\r\n  .modal-desc {\r\n    font-size: 13px;\r\n    color: #6b7280;\r\n    margin-bottom: 20px;\r\n    line-height: 1.5;\r\n  }\r\n  .form-group {\r\n    margin-bottom: 14px;\r\n  }\r\n  .form-group label {\r\n    display: block;\r\n    font-size: 13px;\r\n    font-weight: 600;\r\n    margin-bottom: 6px;\r\n    color: #374151;\r\n  }\r\n  .modal input[type=\"text\"],\r\n  .modal input[type=\"date\"] {\r\n    width: 100%;\r\n    padding: 10px;\r\n    border: 1px solid #e5e7eb;\r\n    border-radius: 8px;\r\n    font-size: 14px;\r\n  }\r\n  .modal input[type=\"text\"]:focus,\r\n  .modal input[type=\"date\"]:focus {\r\n    outline: none;\r\n    border-color: #25d366;\r\n  }\r\n  .cabin-card {\r\n    border: 1px solid #e5e7eb;\r\n    border-radius: 12px;\r\n    padding: 14px;\r\n    margin-bottom: 12px;\r\n    position: relative;\r\n    transition:\r\n      border-color 0.2s,\r\n      background 0.2s;\r\n  }\r\n  .cabin-card.active {\r\n    border-color: #25d366;\r\n    background: #f0fdf4;\r\n  }\r\n  .cabin-option {\r\n    display: block;\r\n    cursor: pointer;\r\n    padding-right: 34px;\r\n  }\r\n  .cabin-name {\r\n    display: block;\r\n    font-weight: 700;\r\n    margin-bottom: 4px;\r\n    font-size: 14px;\r\n    color: #111827;\r\n  }\r\n  .cabin-meta {\r\n    display: block;\r\n    font-size: 13px;\r\n    color: #6b7280;\r\n    line-height: 1.5;\r\n  }\r\n  .cabin-check-wrap {\r\n    position: absolute;\r\n    top: 14px;\r\n    right: 14px;\r\n  }\r\n  .cabin-check {\r\n    width: 18px !important;\r\n    height: 18px !important;\r\n    accent-color: #25d366;\r\n    cursor: pointer;\r\n  }\r\n  .pax-input {\r\n    margin-top: 12px;\r\n    display: none;\r\n  }\r\n  .pax-input.show {\r\n    display: block;\r\n  }\r\n  .pax-stepper {\r\n    display: inline-flex;\r\n    align-items: center;\r\n    gap: 8px;\r\n    margin-top: 4px;\r\n  }\r\n  .pax-btn {\r\n    width: 34px;\r\n    height: 34px;\r\n    border-radius: 8px;\r\n    border: 1px solid #e5e7eb;\r\n    background: #f9fafb;\r\n    color: #111827;\r\n    font-size: 18px;\r\n    font-weight: 700;\r\n    cursor: pointer;\r\n  }\r\n  .pax-number {\r\n    width: 52px;\r\n    height: 34px;\r\n    border: 1px solid #e5e7eb;\r\n    border-radius: 8px;\r\n    background: #fff;\r\n    text-align: center;\r\n    font-weight: 700;\r\n    color: #111827;\r\n  }\r\n  .field-warning {\r\n    color: #ef4444;\r\n    font-size: 12px;\r\n    margin-top: 6px;\r\n    display: none;\r\n  }\r\n  .extra-bed-section {\r\n    margin-top: 10px;\r\n    padding-top: 10px;\r\n    border-top: 1px dashed #e5e7eb;\r\n    display: none;\r\n  }\r\n  .extra-bed-section.show {\r\n    display: block;\r\n  }\r\n  .extra-bed-label {\r\n    font-size: 13px;\r\n    font-weight: 600;\r\n    color: #374151;\r\n    margin-bottom: 4px;\r\n    display: flex;\r\n    align-items: center;\r\n    gap: 6px;\r\n  }\r\n  .extra-bed-meta {\r\n    font-size: 12px;\r\n    color: #6b7280;\r\n    margin-bottom: 6px;\r\n    display: block;\r\n  }\r\n  .extra-bed-toggle {\r\n    display: inline-flex;\r\n    align-items: center;\r\n    gap: 8px;\r\n    cursor: pointer;\r\n    font-size: 13px;\r\n    color: #374151;\r\n    user-select: none;\r\n  }\r\n  .extra-bed-toggle input[type=\"checkbox\"] {\r\n    width: 15px !important;\r\n    height: 15px !important;\r\n    accent-color: #25d366;\r\n    cursor: pointer;\r\n    margin: 0;\r\n  }\r\n  .extra-bed-qty {\r\n    margin-top: 6px;\r\n    display: none;\r\n  }\r\n  .extra-bed-qty.show {\r\n    display: block;\r\n  }\r\n  .total-box {\r\n    padding: 13px 16px;\r\n    margin: 16px 0;\r\n    font-weight: 700;\r\n    background: #f9fafb;\r\n    border: 1px solid #e5e7eb;\r\n    border-radius: 10px;\r\n    display: flex;\r\n    justify-content: space-between;\r\n    align-items: center;\r\n  }\r\n  .total-box div:first-child {\r\n    color: #374151;\r\n    font-size: 14px;\r\n  }\r\n  #totalPrice {\r\n    color: #111827;\r\n    font-size: 16px;\r\n  }\r\n  .btn-submit {\r\n    width: 100%;\r\n    padding: 12px;\r\n    background: #25d366;\r\n    color: #fff;\r\n    border: none;\r\n    border-radius: 8px;\r\n    font-size: 15px;\r\n    font-weight: 700;\r\n    cursor: pointer;\r\n    transition: background 0.2s;\r\n  }\r\n  .btn-submit:hover {\r\n    background: #1ebe5d;\r\n  }\r\n  .confirm-overlay {\r\n    display: none;\r\n    position: fixed;\r\n    inset: 0;\r\n    background: rgba(0, 0, 0, 0.5);\r\n    z-index: 200;\r\n    align-items: center;\r\n    justify-content: center;\r\n    padding: 16px;\r\n  }\r\n  .confirm-overlay.show {\r\n    display: flex;\r\n  }\r\n  .confirm-box {\r\n    background: #fff;\r\n    border-radius: 16px;\r\n    padding: 24px;\r\n    max-width: 420px;\r\n    width: 100%;\r\n  }\r\n  .confirm-title {\r\n    font-size: 16px;\r\n    font-weight: 700;\r\n    color: #111827;\r\n    margin-bottom: 4px;\r\n  }\r\n  .confirm-sub {\r\n    font-size: 13px;\r\n    color: #6b7280;\r\n    margin-bottom: 16px;\r\n  }\r\n  .confirm-row {\r\n    display: flex;\r\n    justify-content: space-between;\r\n    font-size: 13px;\r\n    padding: 6px 0;\r\n    border-bottom: 1px solid #f3f4f6;\r\n  }\r\n  .confirm-row:last-of-type {\r\n    border-bottom: none;\r\n  }\r\n  .confirm-row span:first-child {\r\n    color: #6b7280;\r\n  }\r\n  .confirm-row span:last-child {\r\n    font-weight: 600;\r\n    color: #111827;\r\n    text-align: right;\r\n    max-width: 60%;\r\n  }\r\n  .confirm-total {\r\n    display: flex;\r\n    justify-content: space-between;\r\n    font-size: 14px;\r\n    font-weight: 700;\r\n    padding: 12px 0 0;\r\n    margin-top: 8px;\r\n    border-top: 2px solid #e5e7eb;\r\n  }\r\n  .confirm-total span:last-child {\r\n    color: #25d366;\r\n  }\r\n  .confirm-actions {\r\n    display: flex;\r\n    gap: 10px;\r\n    margin-top: 18px;\r\n  }\r\n  .btn-edit {\r\n    flex: 1;\r\n    padding: 10px;\r\n    border: 1px solid #e5e7eb;\r\n    border-radius: 8px;\r\n    background: #fff;\r\n    color: #374151;\r\n    font-weight: 600;\r\n    cursor: pointer;\r\n    font-size: 13px;\r\n  }\r\n  .btn-send {\r\n    flex: 2;\r\n    padding: 10px;\r\n    background: #25d366;\r\n    color: #fff;\r\n    border: none;\r\n    border-radius: 8px;\r\n    font-weight: 600;\r\n    cursor: pointer;\r\n    font-size: 13px;\r\n  }\r\n  .btn-edit:hover {\r\n    background: #f3f4f6;\r\n  }\r\n  .btn-send:hover {\r\n    background: #1ebe5d;\r\n  }\r\n\r\n  \/* Package picker overlay *\/\r\n  .pkg-overlay {\r\n    display: none;\r\n    position: fixed;\r\n    inset: 0;\r\n    background: rgba(0, 0, 0, 0.45);\r\n    z-index: 100;\r\n    align-items: center;\r\n    justify-content: center;\r\n    padding: 16px;\r\n  }\r\n  .pkg-overlay.show {\r\n    display: flex;\r\n  }\r\n  .pkg-modal {\r\n    background: #fff;\r\n    border-radius: 16px;\r\n    width: 100%;\r\n    max-width: 480px;\r\n    padding: 28px 24px 24px;\r\n    position: relative;\r\n  }\r\n  .pkg-modal h2 {\r\n    font-size: 18px;\r\n    font-weight: 700;\r\n    color: #111827;\r\n    margin-bottom: 6px;\r\n  }\r\n  .pkg-modal p {\r\n    font-size: 13px;\r\n    color: #6b7280;\r\n    margin-bottom: 20px;\r\n    line-height: 1.5;\r\n  }\r\n  .pkg-card {\r\n    border: 1px solid #e5e7eb;\r\n    border-radius: 12px;\r\n    padding: 18px;\r\n    margin-bottom: 12px;\r\n    cursor: pointer;\r\n    transition:\r\n      border-color 0.2s,\r\n      background 0.2s;\r\n  }\r\n  .pkg-card:hover {\r\n    border-color: #25d366;\r\n    background: #f0fdf4;\r\n  }\r\n  .pkg-card:last-child {\r\n    margin-bottom: 0;\r\n  }\r\n  .pkg-card-title {\r\n    font-size: 15px;\r\n    font-weight: 700;\r\n    color: #111827;\r\n    margin-bottom: 4px;\r\n  }\r\n  .pkg-card-desc {\r\n    font-size: 13px;\r\n    color: #6b7280;\r\n    line-height: 1.5;\r\n  }\r\n  .pkg-badge {\r\n    display: inline-block;\r\n    padding: 2px 10px;\r\n    border-radius: 20px;\r\n    font-size: 11px;\r\n    font-weight: 700;\r\n    margin-bottom: 8px;\r\n  }\r\n  .pkg-badge-2d {\r\n    background: #e0f2fe;\r\n    color: #0369a1;\r\n  }\r\n  .pkg-badge-3d {\r\n    background: #dcfce7;\r\n    color: #15803d;\r\n  }\r\n  .pkg-back {\r\n    position: absolute;\r\n    top: 16px;\r\n    right: 18px;\r\n    background: none;\r\n    border: none;\r\n    font-size: 20px;\r\n    color: #9ca3af;\r\n    cursor: pointer;\r\n    line-height: 1;\r\n  }\r\n  .booking-pkg-badge {\r\n    display: inline-block;\r\n    padding: 3px 10px;\r\n    border-radius: 20px;\r\n    font-size: 12px;\r\n    font-weight: 700;\r\n    margin-bottom: 14px;\r\n  }\r\n\r\n  \/* Guest type badges *\/\r\n  .badge-adult {\r\n    display: inline-block;\r\n    padding: 2px 8px;\r\n    border-radius: 20px;\r\n    font-size: 11px;\r\n    font-weight: 700;\r\n    background: #dbeafe;\r\n    color: #1d4ed8;\r\n    vertical-align: middle;\r\n  }\r\n  .badge-child {\r\n    display: inline-block;\r\n    padding: 2px 8px;\r\n    border-radius: 20px;\r\n    font-size: 11px;\r\n    font-weight: 700;\r\n    background: #fef9c3;\r\n    color: #92400e;\r\n    vertical-align: middle;\r\n  }\r\n  .pax-label-row {\r\n    display: flex;\r\n    align-items: center;\r\n    gap: 6px;\r\n    margin-bottom: 4px;\r\n    font-size: 12px;\r\n    color: #6b7280;\r\n  }\r\n<\/style>\r\n\r\n<div class=\"landing\">\r\n  <button class=\"btn-book\" id=\"openPkg\">Book via WhatsApp<\/button>\r\n<\/div>\r\n\r\n<!-- Package picker -->\r\n<div class=\"pkg-overlay\" id=\"pkgOverlay\">\r\n  <div class=\"pkg-modal\">\r\n    <button class=\"pkg-back\" id=\"closePkg\">&#x2715;<\/button>\r\n    <h2>Choose Your Package<\/h2>\r\n    <p>Select the trip duration that works best for you.<\/p>\r\n    <div class=\"pkg-card\" id=\"pkg3d3n\">\r\n      <span class=\"pkg-badge pkg-badge-3d\">Open Trip<\/span>\r\n      <div class=\"pkg-card-title\">3 Days 3 Nights From Labuan Bajo to Lombok<\/div>\r\n      <div class=\"pkg-card-desc\">Enjoy Komodo adventure with more time to explore, relax, and discover hidden gems.<\/div>\r\n    <\/div>\r\n    <div class=\"pkg-card\" id=\"pkg4d3n\">\r\n      <span class=\"pkg-badge pkg-badge-3d\">Open Trip<\/span>\r\n      <div class=\"pkg-card-title\">4 Days 3 Nights From Lombok to Labuan Bajo<\/div>\r\n      <div class=\"pkg-card-desc\">Discover Komodo and experience swimming with whale sharks.<\/div>\r\n    <\/div>\r\n  <\/div>\r\n<\/div>\r\n\r\n<!-- Booking form -->\r\n<div class=\"overlay\" id=\"bookingOverlay\">\r\n  <div class=\"modal\">\r\n    <button class=\"modal-close\" id=\"closeBooking\">&#x2715;<\/button>\r\n    <h2 id=\"modalTitle\">Book Cabin<\/h2>\r\n    <div id=\"modalBadge\"><\/div>\r\n    <p class=\"modal-desc\">Please fill in the form below to request your booking. Our team will confirm availability via WhatsApp.<\/p>\r\n    <form id=\"bookingForm\">\r\n      <div class=\"form-group\">\r\n        <label for=\"bookingName\">Name<\/label>\r\n        <input id=\"bookingName\" type=\"text\" name=\"name\" placeholder=\"Enter your name\" required \/>\r\n      <\/div>\r\n      <div class=\"form-group\">\r\n        <label for=\"bookingDate\">Departure Date <span id=\"availableDaysLabel\" style=\"font-weight: 400; color: #6b7280; font-size: 12px\"><\/span><\/label>\r\n        <input id=\"bookingDate\" type=\"date\" name=\"date\" required \/>\r\n      <\/div>\r\n      <div class=\"form-group\">\r\n        <label id=\"cabinLabel\">Select Cabin & Number of Guests<\/label>\r\n        <div id=\"cabinList\"><\/div>\r\n      <\/div>\r\n      <div class=\"total-box\">\r\n        <div>Total Price<\/div>\r\n        <span id=\"totalPrice\">IDR 0<\/span>\r\n      <\/div>\r\n      <button type=\"submit\" class=\"btn-submit\">Chat via WhatsApp<\/button>\r\n    <\/form>\r\n  <\/div>\r\n<\/div>\r\n\r\n<!-- Confirm overlay -->\r\n<div class=\"confirm-overlay\" id=\"confirmOverlay\">\r\n  <div class=\"confirm-box\">\r\n    <div class=\"confirm-title\">Confirm Booking<\/div>\r\n    <div class=\"confirm-sub\">Please review your booking details before proceeding.<\/div>\r\n    <div id=\"confirmContent\"><\/div>\r\n    <div class=\"confirm-actions\">\r\n      <button class=\"btn-edit\" id=\"btnEdit\">Edit<\/button>\r\n      <button class=\"btn-send\" id=\"btnSend\">Send via WhatsApp<\/button>\r\n    <\/div>\r\n  <\/div>\r\n<\/div>\r\n\r\n<script>\r\n  const whatsappNumber = \"6281944221717\";\r\n\r\n  const boatName = \"Armada Mulia\";\r\n\r\n  const packages = {\r\n    \"4d3n\": {\r\n      label: \"4D3N\",\r\n      badgeClass: \"pkg-badge-3d\",\r\n      \/\/ adjust availableDays as needed; defaulting to Friday availability\r\n      availableDays: [3],\r\n      cabins: [\r\n        { name: \"Private Cabin\", price: 4300000, max: 2, extraBed: { allowed: false } },\r\n        { name: \"Shared \/ Sharing Cabin\", price: 3600000, max: 30, extraBed: { allowed: false } },\r\n      ],\r\n    },\r\n    \"3d3n\": {\r\n      label: \"3D3N\",\r\n      badgeClass: \"pkg-badge-3d\",\r\n      availableDays: [6],\r\n      cabins: [\r\n        { name: \"Private Cabin\", price: 4000000, max: 2, extraBed: { allowed: false } },\r\n        { name: \"Shared \/ Sharing Cabin\", price: 3300000, max: 30, extraBed: { allowed: false } },\r\n      ],\r\n    },\r\n  };\r\n\r\n  let selectedPkg = null;\r\n\r\n  const pkgOverlay = document.getElementById(\"pkgOverlay\");\r\n  const bookingOverlay = document.getElementById(\"bookingOverlay\");\r\n  const confirmOverlay = document.getElementById(\"confirmOverlay\");\r\n  const cabinList = document.getElementById(\"cabinList\");\r\n  const totalEl = document.getElementById(\"totalPrice\");\r\n  const bookingForm = document.getElementById(\"bookingForm\");\r\n  const dateInput = bookingForm.elements[\"date\"];\r\n  const modalTitle = document.getElementById(\"modalTitle\");\r\n  const modalBadge = document.getElementById(\"modalBadge\");\r\n  let pendingUrl = \"\";\r\n\r\n  function formatRupiah(n) {\r\n    return \"IDR \" + Number(n).toLocaleString(\"id-ID\");\r\n  }\r\n  function formatDatePretty(d) {\r\n    return new Date(d).toLocaleDateString(\"en-GB\", { day: \"numeric\", month: \"long\", year: \"numeric\" });\r\n  }\r\n  function getDayName(d) {\r\n    return [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"][d];\r\n  }\r\n  function isAllowedDate(ds) {\r\n    if (!ds || !selectedPkg) return false;\r\n    return selectedPkg.availableDays.includes(new Date(ds).getDay());\r\n  }\r\n  function getAllowedDaysText() {\r\n    if (!selectedPkg) return \"\";\r\n    const days = selectedPkg.availableDays.slice().sort();\r\n    \/\/ if package is available every day, show shorthand\r\n    if (days.length === 7 || (days.length === 7 && days.every((v, i) => v === i))) return \"Every day\";\r\n    \/\/ otherwise show day names\r\n    return selectedPkg.availableDays.map(getDayName).join(\", \");\r\n  }\r\n  function setMinDateToday() {\r\n    const t = new Date();\r\n    dateInput.min = `${t.getFullYear()}-${String(t.getMonth() + 1).padStart(2, \"0\")}-${String(t.getDate()).padStart(2, \"0\")}`;\r\n  }\r\n\r\n  function openPackagePicker() {\r\n    pkgOverlay.classList.add(\"show\");\r\n  }\r\n  function closePackagePicker() {\r\n    pkgOverlay.classList.remove(\"show\");\r\n  }\r\n\r\n  function openBookingForm(pkgKey) {\r\n    selectedPkg = packages[pkgKey];\r\n    dateInput.value = \"\";\r\n    if (selectedPkg && selectedPkg.durations) modalTitle.textContent = selectedPkg.label;\r\n    else modalTitle.textContent = \"Book Cabin \u2014 \" + (pkgKey === \"3d2n\" ? \"3d2n\" : selectedPkg.label);\r\n    modalBadge.innerHTML = `<span class=\"booking-pkg-badge ${selectedPkg.badgeClass}\">${selectedPkg.label} \u00b7 ${boatName}<\/span>`;\r\n    document.getElementById(\"availableDaysLabel\").textContent = \"(\" + getAllowedDaysText() + \")\";\r\n    const cabinLabelEl = document.getElementById(\"cabinLabel\");\r\n    if (cabinLabelEl) {\r\n      if (selectedPkg && selectedPkg.durations) {\r\n        cabinLabelEl.style.display = \"none\";\r\n      } else {\r\n        cabinLabelEl.style.display = \"block\";\r\n      }\r\n    }\r\n    const extraBedNote = document.getElementById(\"extraBedNote\");\r\n    if (extraBedNote) {\r\n      if (selectedPkg && selectedPkg.durations) extraBedNote.style.display = \"none\";\r\n      else extraBedNote.style.display = \"inline\";\r\n    }\r\n    closePackagePicker();\r\n    renderCabins();\r\n    bookingOverlay.classList.add(\"show\");\r\n  }\r\n\r\n  function updateTotal() {\r\n    \/\/ If package uses durations (private trip), show selected duration price plus additional pax\r\n    if (selectedPkg && selectedPkg.durations) {\r\n      const sel = document.querySelector(\".private-duration:checked\");\r\n      const addInput = document.getElementById(\"privateAddCount\");\r\n      const addCount = addInput ? Number(addInput.value) : 0;\r\n      const base = sel ? Number(sel.dataset.price) : 0;\r\n      const addPer = sel ? Number(sel.dataset.add || 0) : 0;\r\n      const total = base + addCount * addPer;\r\n      totalEl.textContent = formatRupiah(total);\r\n      return;\r\n    }\r\n    let total = 0;\r\n    document.querySelectorAll(\".cabin-check\").forEach((check) => {\r\n      if (check.checked) {\r\n        const card = check.closest(\".cabin-card\");\r\n        total += Number(check.dataset.price) * (Number(card.querySelector(\".pax\").value) || 0);\r\n        const ebCheck = card.querySelector(\".eb-check\");\r\n        if (ebCheck && ebCheck.checked) total += Number(check.dataset.ebPrice) * (Number(card.querySelector(\".eb-qty\")?.value) || 1);\r\n      }\r\n    });\r\n    totalEl.textContent = formatRupiah(total);\r\n  }\r\n\r\n  function renderCabins() {\r\n    cabinList.innerHTML = \"\";\r\n    \/\/ support packages that define durations (private trip)\r\n    if (selectedPkg.durations) {\r\n      const card = document.createElement(\"div\");\r\n      card.className = \"cabin-card\";\r\n      const capacity = selectedPkg.durations[0] ? selectedPkg.durations[0].capacity : 12;\r\n      let inner = `<div class=\"cabin-option\"><div><span class=\"cabin-name\">Private Trip<\/span><span class=\"cabin-meta\">Choose your charter duration<\/span><\/div><\/div>`;\r\n      inner += `<div style=\"margin-top:10px\">`;\r\n      selectedPkg.durations.forEach((d) => {\r\n        inner += `<label style=\"display:block;margin-bottom:8px;\"><input type=\"radio\" name=\"privateDuration\" class=\"private-duration\" data-price=\"${d.price}\" data-add=\"${d.additionalPerPax}\" value=\"${d.key}\"> ${d.label} \u2014 ${formatRupiah(d.price)} <span style=\"color:#6b7280;font-size:13px\">(Additional per pax: ${formatRupiah(d.additionalPerPax)})<\/span><\/label>`;\r\n      });\r\n      inner += `<\/div>`;\r\n      inner += `<div id=\"privateAddWrap\" style=\"margin-top:12px;display:none;\">\r\n        <div style=\"font-weight:600;margin-bottom:6px;\">Additional Pax<\/div>\r\n        <div class=\"pax-stepper\">\r\n          <button type=\"button\" class=\"pax-btn add-minus\">-<\/button>\r\n          <input type=\"text\" id=\"privateAddCount\" class=\"pax-number\" value=\"0\" readonly>\r\n          <button type=\"button\" class=\"pax-btn add-plus\">+<\/button>\r\n        <\/div>\r\n        <div style=\"font-size:12px;color:#6b7280;margin-top:6px;\">Additional pax charged per person as listed above.<\/div>\r\n      <\/div>`;\r\n      card.innerHTML = inner;\r\n      cabinList.appendChild(card);\r\n      \/\/ listeners\r\n      const radios = card.querySelectorAll(\".private-duration\");\r\n      const addWrap = card.querySelector(\"#privateAddWrap\");\r\n      const addInput = card.querySelector(\"#privateAddCount\");\r\n      radios.forEach((r) => {\r\n        r.addEventListener(\"change\", function () {\r\n          addWrap.style.display = \"block\";\r\n          addInput.value = 0;\r\n          updateTotal();\r\n        });\r\n      });\r\n      const plus = card.querySelector(\".add-plus\");\r\n      const minus = card.querySelector(\".add-minus\");\r\n      plus.addEventListener(\"click\", function () {\r\n        let v = Number(addInput.value) || 0;\r\n        if (v < 100) addInput.value = v + 1;\r\n        updateTotal();\r\n      });\r\n      minus.addEventListener(\"click\", function () {\r\n        let v = Number(addInput.value) || 0;\r\n        if (v > 0) addInput.value = v - 1;\r\n        updateTotal();\r\n      });\r\n      updateTotal();\r\n      return;\r\n    }\r\n    selectedPkg.cabins.forEach((cabin) => {\r\n      const card = document.createElement(\"div\");\r\n      card.className = \"cabin-card\";\r\n      const ebAllowed = cabin.extraBed && cabin.extraBed.allowed;\r\n      const ebPrice = ebAllowed ? cabin.extraBed.price : 0;\r\n      const ebMax = ebAllowed ? cabin.extraBed.maxBeds : 0;\r\n      card.innerHTML = `\r\n    <label class=\"cabin-option\">\r\n      <div><span class=\"cabin-name\">${cabin.name}<\/span><span class=\"cabin-meta\">Max ${cabin.max} Pax \u2022 ${formatRupiah(cabin.price)} \/ pax${ebAllowed ? \" \u2022 Extra bed available\" : \"\"}<\/span><\/div>\r\n    <\/label>\r\n    <div class=\"cabin-check-wrap\">\r\n      <input type=\"checkbox\" class=\"cabin-check\" data-name=\"${cabin.name}\" data-price=\"${cabin.price}\" data-max=\"${cabin.max}\" data-eb-price=\"${ebPrice}\" data-eb-max=\"${ebMax}\">\r\n    <\/div>\r\n    <div class=\"pax-input\">\r\n      <div class=\"pax-label-row\">\r\n        Number of Guests\r\n        <span class=\"badge-adult\">Pax<\/span>\r\n      <\/div>\r\n      <div class=\"pax-stepper\">\r\n        <button type=\"button\" class=\"pax-btn minus\">-<\/button>\r\n        <input type=\"text\" class=\"pax pax-number\" value=\"1\" readonly>\r\n        <button type=\"button\" class=\"pax-btn plus\">+<\/button>\r\n      <\/div>\r\n      <div class=\"field-warning\">Exceeds cabin capacity<\/div>\r\n      ${\r\n        ebAllowed\r\n          ? `\r\n      <div class=\"extra-bed-section show\">\r\n        <span class=\"extra-bed-label\">\r\n          Extra Bed\r\n        <\/span>\r\n        <span class=\"extra-bed-meta\">${formatRupiah(ebPrice)} \/ bed \u2022 Max ${ebMax} bed(s)<\/span>\r\n        <label class=\"extra-bed-toggle\">\r\n          <input type=\"checkbox\" class=\"eb-check\"> Add extra bed for extra guest\r\n        <\/label>\r\n        <div class=\"extra-bed-qty\">\r\n          <div class=\"pax-label-row\" style=\"margin-top:6px;\">\r\n            Number of Extra Beds\r\n            <span class=\"badge-child\">Children<\/span>\r\n          <\/div>\r\n          <div class=\"pax-stepper\">\r\n            <button type=\"button\" class=\"pax-btn eb-minus\">-<\/button>\r\n            <input type=\"text\" class=\"eb-qty pax-number\" value=\"1\" readonly>\r\n            <button type=\"button\" class=\"pax-btn eb-plus\">+<\/button>\r\n          <\/div>\r\n          <div class=\"eb-warning field-warning\">Exceeds maximum extra beds<\/div>\r\n        <\/div>\r\n      <\/div>`\r\n          : \"\"\r\n      }\r\n    <\/div>`;\r\n      cabinList.appendChild(card);\r\n    });\r\n    bindCabinEvents();\r\n    updateTotal();\r\n  }\r\n\r\n  function bindCabinEvents() {\r\n    document.querySelectorAll(\".cabin-check\").forEach((check) => {\r\n      check.addEventListener(\"change\", function () {\r\n        const card = this.closest(\".cabin-card\");\r\n        const paxBox = card.querySelector(\".pax-input\");\r\n        const paxInput = card.querySelector(\".pax\");\r\n        const ebCheck = card.querySelector(\".eb-check\");\r\n        const ebQtyBox = card.querySelector(\".extra-bed-qty\");\r\n        const ebQty = card.querySelector(\".eb-qty\");\r\n        if (this.checked) {\r\n          card.classList.add(\"active\");\r\n          paxBox.classList.add(\"show\");\r\n          if (Number(paxInput.value) < 1) paxInput.value = 1;\r\n        } else {\r\n          card.classList.remove(\"active\");\r\n          paxBox.classList.remove(\"show\");\r\n          paxInput.value = 1;\r\n          if (ebCheck) {\r\n            ebCheck.checked = false;\r\n            if (ebQtyBox) ebQtyBox.classList.remove(\"show\");\r\n            if (ebQty) ebQty.value = 1;\r\n          }\r\n        }\r\n        updateTotal();\r\n      });\r\n    });\r\n    document.querySelectorAll(\".plus\").forEach((btn) => {\r\n      btn.addEventListener(\"click\", function () {\r\n        const card = this.closest(\".cabin-card\");\r\n        const check = card.querySelector(\".cabin-check\");\r\n        const input = card.querySelector(\".pax\");\r\n        const warning = card.querySelector(\".field-warning\");\r\n        const max = Number(check.dataset.max);\r\n        let val = Number(input.value) || 1;\r\n        if (!check.checked) {\r\n          check.checked = true;\r\n          check.dispatchEvent(new Event(\"change\"));\r\n          val = Number(input.value) || 1;\r\n        }\r\n        if (val < max) {\r\n          input.value = val + 1;\r\n          warning.style.display = \"none\";\r\n        } else {\r\n          warning.style.display = \"block\";\r\n        }\r\n        updateTotal();\r\n      });\r\n    });\r\n    document.querySelectorAll(\".minus\").forEach((btn) => {\r\n      btn.addEventListener(\"click\", function () {\r\n        const card = this.closest(\".cabin-card\");\r\n        const check = card.querySelector(\".cabin-check\");\r\n        const input = card.querySelector(\".pax\");\r\n        const warning = card.querySelector(\".field-warning\");\r\n        let val = Number(input.value) || 1;\r\n        if (!check.checked) return;\r\n        if (val > 1) {\r\n          input.value = val - 1;\r\n          warning.style.display = \"none\";\r\n        } else {\r\n          check.checked = false;\r\n          check.dispatchEvent(new Event(\"change\"));\r\n        }\r\n        updateTotal();\r\n      });\r\n    });\r\n    document.querySelectorAll(\".cabin-option\").forEach((option) => {\r\n      option.addEventListener(\"click\", function (e) {\r\n        if (e.target.closest(\".pax-stepper\") || e.target.closest(\".extra-bed-section\")) return;\r\n        const card = this.closest(\".cabin-card\");\r\n        const check = card.querySelector(\".cabin-check\");\r\n        check.checked = !check.checked;\r\n        check.dispatchEvent(new Event(\"change\"));\r\n      });\r\n    });\r\n    document.querySelectorAll(\".eb-check\").forEach((ebCheck) => {\r\n      ebCheck.addEventListener(\"change\", function () {\r\n        const card = this.closest(\".cabin-card\");\r\n        const ebQtyBox = card.querySelector(\".extra-bed-qty\");\r\n        const ebQty = card.querySelector(\".eb-qty\");\r\n        if (this.checked) {\r\n          ebQtyBox.classList.add(\"show\");\r\n          if (Number(ebQty.value) < 1) ebQty.value = 1;\r\n        } else {\r\n          ebQtyBox.classList.remove(\"show\");\r\n          ebQty.value = 1;\r\n        }\r\n        updateTotal();\r\n      });\r\n    });\r\n    document.querySelectorAll(\".eb-plus\").forEach((btn) => {\r\n      btn.addEventListener(\"click\", function () {\r\n        const card = this.closest(\".cabin-card\");\r\n        const check = card.querySelector(\".cabin-check\");\r\n        const ebMax = Number(check.dataset.ebMax);\r\n        const ebQty = card.querySelector(\".eb-qty\");\r\n        const ebWarning = card.querySelector(\".eb-warning\");\r\n        let val = Number(ebQty.value) || 1;\r\n        if (val < ebMax) {\r\n          ebQty.value = val + 1;\r\n          ebWarning.style.display = \"none\";\r\n        } else {\r\n          ebWarning.style.display = \"block\";\r\n        }\r\n        updateTotal();\r\n      });\r\n    });\r\n    document.querySelectorAll(\".eb-minus\").forEach((btn) => {\r\n      btn.addEventListener(\"click\", function () {\r\n        const card = this.closest(\".cabin-card\");\r\n        const ebQty = card.querySelector(\".eb-qty\");\r\n        const ebCheck = card.querySelector(\".eb-check\");\r\n        const ebWarning = card.querySelector(\".eb-warning\");\r\n        const ebQtyBox = card.querySelector(\".extra-bed-qty\");\r\n        let val = Number(ebQty.value) || 1;\r\n        if (val > 1) {\r\n          ebQty.value = val - 1;\r\n          ebWarning.style.display = \"none\";\r\n        } else {\r\n          ebCheck.checked = false;\r\n          ebQtyBox.classList.remove(\"show\");\r\n          ebQty.value = 1;\r\n        }\r\n        updateTotal();\r\n      });\r\n    });\r\n  }\r\n\r\n  dateInput.addEventListener(\"change\", function () {\r\n    if (!this.value) return;\r\n    if (!isAllowedDate(this.value)) {\r\n      alert(\"This Trip is only available on \" + getAllowedDaysText() + \".\");\r\n      this.value = \"\";\r\n    }\r\n  });\r\n\r\n  document.getElementById(\"openPkg\").addEventListener(\"click\", openPackagePicker);\r\n  document.getElementById(\"closePkg\").addEventListener(\"click\", closePackagePicker);\r\n  pkgOverlay.addEventListener(\"click\", (e) => {\r\n    if (e.target === pkgOverlay) closePackagePicker();\r\n  });\r\n\r\n  \/\/ 4D3N and 3D3N open trips\r\n  const pkg4d3nEl = document.getElementById(\"pkg4d3n\");\r\n  if (pkg4d3nEl) pkg4d3nEl.addEventListener(\"click\", () => openBookingForm(\"4d3n\"));\r\n  const pkg3d3nEl = document.getElementById(\"pkg3d3n\");\r\n  if (pkg3d3nEl) pkg3d3nEl.addEventListener(\"click\", () => openBookingForm(\"3d3n\"));\r\n\r\n  document.getElementById(\"closeBooking\").addEventListener(\"click\", function () {\r\n    bookingOverlay.classList.remove(\"show\");\r\n    pkgOverlay.classList.add(\"show\");\r\n  });\r\n  bookingOverlay.addEventListener(\"click\", (e) => {\r\n    if (e.target === bookingOverlay) bookingOverlay.classList.remove(\"show\");\r\n  });\r\n\r\n  bookingForm.addEventListener(\"submit\", function (e) {\r\n    e.preventDefault();\r\n    const name = this.elements[\"name\"].value.trim();\r\n    const date = this.elements[\"date\"].value;\r\n    if (name.length < 2) {\r\n      alert(\"Please enter a valid full name.\");\r\n      this.elements[\"name\"].focus();\r\n      return;\r\n    }\r\n    if (!date) {\r\n      alert(\"Please choose your departure date.\");\r\n      dateInput.focus();\r\n      return;\r\n    }\r\n    if (!isAllowedDate(date)) {\r\n      alert(\"Please choose a valid departure day. Available: \" + getAllowedDaysText() + \".\");\r\n      return;\r\n    }\r\n    let total = 0,\r\n      hasSelection = false;\r\n    const selections = [];\r\n    const lines = [\r\n      \"Hi Komodo Tour Indonesia\",\r\n      \"\",\r\n      \"I'm \" + name + \".\",\r\n      \"\",\r\n      \"I'm interested in booking the *\" + boatName + \" \" + selectedPkg.label + \"* trip.\",\r\n      \"Departure Date: *\" + formatDatePretty(date) + \"*.\",\r\n      \"Could you please confirm availability?\",\r\n      \"\",\r\n      \"Here are my selections:\",\r\n      \"\",\r\n    ];\r\n    \/\/ handle private trip durations\r\n    if (selectedPkg && selectedPkg.durations) {\r\n      const sel = document.querySelector(\".private-duration:checked\");\r\n      if (!sel) {\r\n        alert(\"Please choose a duration for Private Trip.\");\r\n        return;\r\n      }\r\n      const durKey = sel.value;\r\n      const dur = selectedPkg.durations.find((d) => d.key === durKey) || { label: durKey, price: Number(sel.dataset.price) };\r\n      const price = Number(sel.dataset.price) || dur.price || 0;\r\n      const addCount = Number(document.getElementById(\"privateAddCount\")?.value) || 0;\r\n      const addPer = Number(sel.dataset.add || 0);\r\n      const totalPrice = price + addCount * addPer;\r\n      \/\/ Build WhatsApp message (omit price per requirement), include duration and additional pax\r\n      const waLines = lines.concat([\"*Private Trip* - \" + dur.label, addCount > 0 ? \"Additional pax: \" + addCount + \" pax\" : \"\"]).filter(Boolean);\r\n      pendingUrl = \"https:\/\/wa.me\/\" + whatsappNumber + \"?text=\" + encodeURIComponent(waLines.join(\"\\n\"));\r\n      let html = `<div class=\"confirm-row\"><span>Name<\/span><span>${name}<\/span><\/div>`;\r\n      html += `<div class=\"confirm-row\"><span>Package<\/span><span>${boatName} ${selectedPkg.label}<\/span><\/div>`;\r\n      html += `<div class=\"confirm-row\"><span>Duration<\/span><span>${dur.label}<\/span><\/div>`;\r\n      if (addCount > 0) html += `<div class=\"confirm-row\"><span>Additional pax<\/span><span>${addCount} pax \u2014 ${formatRupiah(addCount * addPer)}<\/span><\/div>`;\r\n      html += `<div class=\"confirm-total\"><span>Total<\/span><span>${formatRupiah(totalPrice)}<\/span><\/div>`;\r\n      document.getElementById(\"confirmContent\").innerHTML = html;\r\n      bookingOverlay.classList.remove(\"show\");\r\n      confirmOverlay.classList.add(\"show\");\r\n      return;\r\n    }\r\n    document.querySelectorAll(\".cabin-check\").forEach((check) => {\r\n      if (check.checked) {\r\n        const card = check.closest(\".cabin-card\");\r\n        const pax = Number(card.querySelector(\".pax\").value) || 0;\r\n        if (pax < 1) return;\r\n        hasSelection = true;\r\n        const cabinTotal = Number(check.dataset.price) * pax;\r\n        total += cabinTotal;\r\n        let ebQtyVal = 0,\r\n          ebTotal = 0;\r\n        const ebCheck = card.querySelector(\".eb-check\");\r\n        if (ebCheck && ebCheck.checked) {\r\n          ebQtyVal = Number(card.querySelector(\".eb-qty\")?.value) || 1;\r\n          ebTotal = Number(check.dataset.ebPrice) * ebQtyVal;\r\n          total += ebTotal;\r\n        }\r\n        selections.push({ name: check.dataset.name, pax, cabinTotal, ebQtyVal, ebTotal });\r\n        lines.push(\"*\" + check.dataset.name + \"*\", \"- Guests: \" + pax + \" pax\");\r\n        if (ebQtyVal > 0) lines.push(\"- Extra bed (extra guests): \" + ebQtyVal + \" pax\");\r\n        lines.push(\"\");\r\n      }\r\n    });\r\n    if (!hasSelection) {\r\n      alert(\"Please select at least one cabin.\");\r\n      return;\r\n    }\r\n    pendingUrl = \"https:\/\/wa.me\/\" + whatsappNumber + \"?text=\" + encodeURIComponent(lines.join(\"\\n\"));\r\n    let html = `<div class=\"confirm-row\"><span>Name<\/span><span>${name}<\/span><\/div>`;\r\n    html += `<div class=\"confirm-row\"><span>Package<\/span><span>${boatName} ${selectedPkg.label}<\/span><\/div>`;\r\n    html += `<div class=\"confirm-row\"><span>Departure<\/span><span>${formatDatePretty(date)}<\/span><\/div>`;\r\n    selections.forEach((s) => {\r\n      html += `<div class=\"confirm-row\"><span>${s.name}<\/span><span>${s.pax} pax \u2014 ${formatRupiah(s.cabinTotal)}<\/span><\/div>`;\r\n      if (s.ebQtyVal > 0) html += `<div class=\"confirm-row\"><span style=\"padding-left:10px\">+ Extra bed (extra guests)<\/span><span>${s.ebQtyVal} pax \u2014 ${formatRupiah(s.ebTotal)}<\/span><\/div>`;\r\n    });\r\n    html += `<div class=\"confirm-total\"><span>Total<\/span><span>${formatRupiah(total)}<\/span><\/div>`;\r\n    document.getElementById(\"confirmContent\").innerHTML = html;\r\n    bookingOverlay.classList.remove(\"show\");\r\n    confirmOverlay.classList.add(\"show\");\r\n  });\r\n\r\n  document.getElementById(\"btnEdit\").addEventListener(\"click\", function () {\r\n    confirmOverlay.classList.remove(\"show\");\r\n    bookingOverlay.classList.add(\"show\");\r\n  });\r\n  document.getElementById(\"btnSend\").addEventListener(\"click\", function () {\r\n    confirmOverlay.classList.remove(\"show\");\r\n    window.open(pendingUrl, \"_blank\");\r\n    bookingForm.reset();\r\n    renderCabins();\r\n    updateTotal();\r\n  });\r\n  confirmOverlay.addEventListener(\"click\", (e) => {\r\n    if (e.target === confirmOverlay) confirmOverlay.classList.remove(\"show\");\r\n  });\r\n\r\n  setMinDateToday();\r\n<\/script>\r\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"featured_media":10142,"menu_order":0,"template":"","meta":{"_angie_page":false,"site-sidebar-layout":"no-sidebar","site-content-layout":"page-builder","ast-site-content-layout":"full-width-container","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"disabled","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"default","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"set","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}}},"tour-package":[372,374],"tour-type":[365],"boat-category":[376],"trip-duration":[375],"class_list":["post-10607","boat-type","type-boat-type","status-publish","has-post-thumbnail","hentry","tour-package-komodo-tour-from-lombok","tour-package-komodo-tour-labuan-bajo-to-lombok","tour-type-open-trip","boat-category-standard","trip-duration-4d3n"],"_links":{"self":[{"href":"https:\/\/komodoislandtour.id\/fr\/wp-json\/wp\/v2\/boat-type\/10607","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/komodoislandtour.id\/fr\/wp-json\/wp\/v2\/boat-type"}],"about":[{"href":"https:\/\/komodoislandtour.id\/fr\/wp-json\/wp\/v2\/types\/boat-type"}],"version-history":[{"count":41,"href":"https:\/\/komodoislandtour.id\/fr\/wp-json\/wp\/v2\/boat-type\/10607\/revisions"}],"predecessor-version":[{"id":11847,"href":"https:\/\/komodoislandtour.id\/fr\/wp-json\/wp\/v2\/boat-type\/10607\/revisions\/11847"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/komodoislandtour.id\/fr\/wp-json\/wp\/v2\/media\/10142"}],"wp:attachment":[{"href":"https:\/\/komodoislandtour.id\/fr\/wp-json\/wp\/v2\/media?parent=10607"}],"wp:term":[{"taxonomy":"tour-package","embeddable":true,"href":"https:\/\/komodoislandtour.id\/fr\/wp-json\/wp\/v2\/tour-package?post=10607"},{"taxonomy":"tour-type","embeddable":true,"href":"https:\/\/komodoislandtour.id\/fr\/wp-json\/wp\/v2\/tour-type?post=10607"},{"taxonomy":"boat-category","embeddable":true,"href":"https:\/\/komodoislandtour.id\/fr\/wp-json\/wp\/v2\/boat-category?post=10607"},{"taxonomy":"trip-duration","embeddable":true,"href":"https:\/\/komodoislandtour.id\/fr\/wp-json\/wp\/v2\/trip-duration?post=10607"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}