{"id":898,"date":"2026-04-12T10:35:38","date_gmt":"2026-04-12T10:35:38","guid":{"rendered":"https:\/\/tourvill.com\/?page_id=898"},"modified":"2026-04-15T07:26:57","modified_gmt":"2026-04-15T07:26:57","slug":"josna-valley-booking","status":"publish","type":"page","link":"https:\/\/tourvill.com\/index.php\/josna-valley-booking\/","title":{"rendered":"Josna Valley Eco Resort"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"898\" class=\"elementor elementor-898\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-20d6acc e-con-full e-flex e-con e-parent\" data-id=\"20d6acc\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-756173c elementor-widget elementor-widget-html\" data-id=\"756173c\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<!DOCTYPE html>\r\n<html lang=\"en\">\r\n<head>\r\n<meta charset=\"UTF-8\">\r\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\r\n<title>Josna Valley Eco Resort \u2014 Book Now<\/title>\r\n<link href=\"https:\/\/fonts.googleapis.com\/css2?family=Outfit:wght@300;400;500;600;700&display=swap\" rel=\"stylesheet\">\r\n<style>\r\n*{margin:0;padding:0;box-sizing:border-box}\r\n:root{\r\n  --green:#2d6a4f;--green2:#1b4332;--green-light:#d8f3dc;--green-mid:#52b788;\r\n  --orange:#e76f51;--orange2:#c1440e;--orange-light:#fde8e1;\r\n  --white:#fff;--bg:#f4f9f4;--surface:#eef5ee;\r\n  --text:#1a2e1a;--muted:#5a7a5a;--border:#cce3cc;\r\n  --r:10px;--r-sm:7px;--r-lg:16px;\r\n  --shadow:0 2px 12px rgba(45,106,79,0.08);\r\n  --shadow-md:0 8px 30px rgba(45,106,79,0.13);\r\n}\r\nbody{font-family:'Outfit',sans-serif;background:var(--bg);color:var(--text);line-height:1.6;min-height:100vh}\r\n\r\n\/* HEADER *\/\r\n.header{background:var(--green2);padding:18px 20px;text-align:center}\r\n.header-top{font-size:11px;color:rgba(255,255,255,0.5);letter-spacing:.06em;text-transform:uppercase;margin-bottom:6px}\r\n.header h1{font-size:clamp(18px,4vw,26px);color:#fff;font-weight:700;margin-bottom:4px}\r\n.header-contact{font-size:13px;color:var(--green-light);font-weight:500}\r\n.header-contact span{margin:0 8px;opacity:.4}\r\n\r\n\/* MAIN *\/\r\n.main{max-width:820px;margin:0 auto;padding:28px 16px 40px}\r\n\r\n\/* SECTION CARD *\/\r\n.card{background:var(--white);border:1px solid var(--border);border-radius:var(--r-lg);padding:22px;margin-bottom:16px;box-shadow:var(--shadow)}\r\n.card-title{font-size:14px;font-weight:700;color:var(--green2);text-transform:uppercase;letter-spacing:.05em;margin-bottom:16px;padding-bottom:10px;border-bottom:2px solid var(--green-light);display:flex;align-items:center;gap:8px}\r\n.step-num{width:24px;height:24px;background:var(--green);color:#fff;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:700;flex-shrink:0}\r\n\r\n\/* PACKAGE SELECTOR *\/\r\n.pkg-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}\r\n.pkg-opt{border:2px solid var(--border);border-radius:var(--r);padding:14px;cursor:pointer;transition:all .2s;position:relative}\r\n.pkg-opt:hover{border-color:var(--green-mid)}\r\n.pkg-opt.selected{border-color:var(--green);background:var(--green-light)}\r\n.pkg-opt input[type=radio]{position:absolute;opacity:0;width:0;height:0}\r\n.pkg-name{font-size:14px;font-weight:600;color:var(--text);margin-bottom:3px}\r\n.pkg-desc{font-size:11px;color:var(--muted);line-height:1.5}\r\n.pkg-badge{display:inline-block;background:var(--orange-light);color:var(--orange2);font-size:10px;font-weight:700;padding:2px 8px;border-radius:10px;margin-top:5px}\r\n.pkg-check{position:absolute;top:10px;right:10px;width:18px;height:18px;border:2px solid var(--border);border-radius:50%;display:flex;align-items:center;justify-content:center;transition:all .2s}\r\n.pkg-opt.selected .pkg-check{background:var(--green);border-color:var(--green)}\r\n.pkg-opt.selected .pkg-check::after{content:'\u2713';color:#fff;font-size:10px;font-weight:700}\r\n\r\n\/* PERSONS *\/\r\n.persons-row{display:flex;align-items:center;gap:12px;flex-wrap:wrap}\r\n.persons-label{font-size:13px;color:var(--muted);min-width:120px}\r\n.counter{display:flex;align-items:center;gap:0;border:1.5px solid var(--border);border-radius:var(--r-sm);overflow:hidden}\r\n.counter-btn{background:var(--surface);border:none;width:38px;height:38px;font-size:18px;cursor:pointer;color:var(--green2);font-weight:700;transition:background .2s;display:flex;align-items:center;justify-content:center}\r\n.counter-btn:hover{background:var(--green-light)}\r\n.counter-val{width:44px;height:38px;text-align:center;font-size:16px;font-weight:700;color:var(--green2);border:none;border-left:1px solid var(--border);border-right:1px solid var(--border);outline:none;background:var(--white)}\r\n\r\n\/* FORM FIELDS *\/\r\n.fg{margin-bottom:14px}\r\n.fg label{display:block;font-size:12px;font-weight:600;color:var(--green2);margin-bottom:5px;text-transform:uppercase;letter-spacing:.04em}\r\n.fg input,.fg select,.fg textarea{width:100%;border:1.5px solid var(--border);border-radius:var(--r-sm);padding:10px 13px;font-family:'Outfit',sans-serif;font-size:14px;color:var(--text);background:var(--white);outline:none;transition:border .2s}\r\n.fg input:focus,.fg select:focus,.fg textarea:focus{border-color:var(--green);box-shadow:0 0 0 3px rgba(45,106,79,0.08)}\r\n.fg textarea{resize:vertical;min-height:70px}\r\n.frow{display:grid;grid-template-columns:1fr 1fr;gap:12px}\r\n\r\n\/* ADDONS *\/\r\n.addon-list{display:flex;flex-direction:column;gap:8px}\r\n.addon-item{display:flex;align-items:center;justify-content:space-between;padding:11px 14px;border:1.5px solid var(--border);border-radius:var(--r-sm);cursor:pointer;transition:all .2s;gap:12px}\r\n.addon-item:hover{border-color:var(--green-mid)}\r\n.addon-item.selected{border-color:var(--green);background:var(--green-light)}\r\n.addon-item input[type=checkbox]{width:16px;height:16px;accent-color:var(--green);flex-shrink:0;cursor:pointer}\r\n.addon-info{flex:1}\r\n.addon-name{font-size:13px;font-weight:600;color:var(--text)}\r\n.addon-note{font-size:11px;color:var(--muted)}\r\n.addon-price{font-size:13px;font-weight:700;color:var(--green2);flex-shrink:0;white-space:nowrap}\r\n\r\n\/* RADIO GROUP (bus type) *\/\r\n.radio-group{display:flex;flex-direction:column;gap:8px;margin-top:10px}\r\n.radio-opt{display:flex;align-items:center;justify-content:space-between;padding:10px 14px;border:1.5px solid var(--border);border-radius:var(--r-sm);cursor:pointer;transition:all .2s}\r\n.radio-opt:hover{border-color:var(--green-mid)}\r\n.radio-opt.selected{border-color:var(--green);background:var(--green-light)}\r\n.radio-opt input[type=radio]{width:15px;height:15px;accent-color:var(--green);flex-shrink:0;cursor:pointer}\r\n.radio-left{display:flex;align-items:center;gap:8px}\r\n.radio-name{font-size:13px;font-weight:600;color:var(--text)}\r\n.radio-price{font-size:13px;font-weight:700;color:var(--green2)}\r\n.bus-section{display:none;margin-top:10px}\r\n.bus-section.show{display:block}\r\n\r\n\/* PRICE SUMMARY *\/\r\n.price-card{background:var(--green2);border-radius:var(--r-lg);padding:22px;color:#fff;margin-bottom:16px;box-shadow:var(--shadow-md)}\r\n.price-card-title{font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:rgba(255,255,255,0.6);margin-bottom:14px}\r\n.price-rows{display:flex;flex-direction:column;gap:8px;margin-bottom:16px}\r\n.price-row{display:flex;justify-content:space-between;align-items:center;font-size:13px}\r\n.price-row .pr-label{color:rgba(255,255,255,0.7)}\r\n.price-row .pr-val{font-weight:600;color:#fff}\r\n.price-divider{border:none;border-top:1px solid rgba(255,255,255,0.15);margin:12px 0}\r\n.price-total-row{display:flex;justify-content:space-between;align-items:center}\r\n.price-total-label{font-size:14px;font-weight:600;color:rgba(255,255,255,0.8)}\r\n.price-total-val{font-size:26px;font-weight:700;color:#fff}\r\n.price-per-person{font-size:11px;color:rgba(255,255,255,0.5);text-align:right;margin-top:2px}\r\n.price-empty{text-align:center;padding:16px;color:rgba(255,255,255,0.5);font-size:13px}\r\n\r\n\/* SUBMIT *\/\r\n.submit-btn{width:100%;background:var(--orange);color:#fff;border:none;padding:15px;border-radius:var(--r-sm);font-family:'Outfit',sans-serif;font-size:16px;font-weight:700;cursor:pointer;transition:all .2s;display:flex;align-items:center;justify-content:center;gap:10px;letter-spacing:.02em}\r\n.submit-btn:hover{background:var(--orange2)}\r\n.submit-btn:disabled{opacity:.6;cursor:not-allowed}\r\n.spin{width:18px;height:18px;border:2.5px solid rgba(255,255,255,0.35);border-top-color:#fff;border-radius:50%;animation:spin .7s linear infinite;display:none}\r\n.submit-btn.loading .spin{display:block}\r\n@keyframes spin{to{transform:rotate(360deg)}}\r\n.submit-note{font-size:12px;color:var(--muted);text-align:center;margin-top:10px}\r\n\r\n\/* SUCCESS *\/\r\n.success-wrap{display:none;text-align:center;padding:20px}\r\n.s-icon{width:70px;height:70px;background:var(--green-light);border-radius:50%;display:flex;align-items:center;justify-content:center;margin:0 auto 16px;font-size:32px;color:var(--green)}\r\n.success-wrap h2{font-size:22px;font-weight:700;color:var(--green2);margin-bottom:8px}\r\n.success-wrap p{color:var(--muted);font-size:14px;margin-bottom:20px;max-width:380px;margin-left:auto;margin-right:auto}\r\n.bid-box{background:var(--surface);border:1px solid var(--border);border-radius:var(--r);padding:14px;margin-bottom:20px;display:inline-block;min-width:220px}\r\n.bid-label{font-size:10px;color:var(--muted);text-transform:uppercase;letter-spacing:.06em}\r\n.bid-val{font-size:24px;font-weight:700;color:var(--green2);letter-spacing:2px;margin-top:4px}\r\n.new-book-btn{background:var(--green);color:#fff;border:none;padding:12px 28px;border-radius:var(--r-sm);font-family:'Outfit',sans-serif;font-size:14px;font-weight:600;cursor:pointer}\r\n\r\n\/* CONFLICT ERROR *\/\r\n.conflict-box{display:none;background:#fee2e2;border:1.5px solid #fca5a5;border-radius:var(--r);padding:16px 18px;margin-bottom:14px}\r\n.conflict-box-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:6px}\r\n.conflict-title{font-size:14px;font-weight:700;color:#991b1b;display:flex;align-items:center;gap:6px}\r\n.conflict-close{background:none;border:none;color:#991b1b;font-size:16px;cursor:pointer;line-height:1}\r\n.conflict-msg{font-size:13px;color:#7f1d1d}\r\n.conflict-dates{font-weight:700;color:#991b1b}\r\n.ref-toggle{font-size:12px;color:var(--green);cursor:pointer;font-weight:600;text-decoration:underline;display:inline-block;margin-bottom:10px}\r\n.ref-table-wrap{display:none;overflow-x:auto;margin-top:8px}\r\n.ref-table-wrap.show{display:block}\r\n.rtable{width:100%;border-collapse:collapse;font-size:12px}\r\n.rtable th{background:var(--green2);color:#fff;padding:7px 10px;text-align:center;font-weight:600;white-space:nowrap}\r\n.rtable th:first-child{text-align:left}\r\n.rtable td{padding:6px 10px;border-bottom:1px solid var(--border);text-align:center}\r\n.rtable td:first-child{text-align:left;font-weight:600;color:var(--green2)}\r\n.rtable tr:nth-child(even) td{background:var(--surface)}\r\n\r\n\/* FOOTER *\/\r\n.footer{background:var(--green2);color:rgba(255,255,255,0.45);text-align:center;padding:16px;font-size:12px;margin-top:20px}\r\n.footer strong{color:rgba(255,255,255,0.7)}\r\n\r\n\/* RESPONSIVE *\/\r\n@media(max-width:560px){\r\n  .pkg-grid{grid-template-columns:1fr}\r\n  .frow{grid-template-columns:1fr}\r\n  .main{padding:20px 12px 32px}\r\n  .card{padding:16px}\r\n}\r\n<\/style>\r\n<\/head>\r\n<body>\r\n\r\n\r\n\r\n<div class=\"main\" id=\"main-wrap\">\r\n\r\n  <!-- STEP 1: PACKAGE -->\r\n  <div class=\"card\">\r\n    <div class=\"card-title\"><div class=\"step-num\">1<\/div> Choose Your Package<\/div>\r\n    <div class=\"pkg-grid\">\r\n      <label class=\"pkg-opt selected\" onclick=\"selectPkg(this,'standard')\">\r\n        <input type=\"radio\" name=\"pkg\" value=\"standard\" checked>\r\n        <div class=\"pkg-check\"><\/div>\r\n        <div class=\"pkg-name\">Standard Package<\/div>\r\n        <div class=\"pkg-desc\">Room + Food per person<\/div>\r\n      <\/label>\r\n      <label class=\"pkg-opt\" onclick=\"selectPkg(this,'roomfood')\">\r\n        <input type=\"radio\" name=\"pkg\" value=\"roomfood\">\r\n        <div class=\"pkg-check\"><\/div>\r\n        <div class=\"pkg-name\">Room & Food Only<\/div>\r\n        <div class=\"pkg-desc\">Per person with 30% discount<\/div>\r\n        <span class=\"pkg-badge\">30% OFF<\/span>\r\n      <\/label>\r\n      <label class=\"pkg-opt\" onclick=\"selectPkg(this,'chokoria')\">\r\n        <input type=\"radio\" name=\"pkg\" value=\"chokoria\">\r\n        <div class=\"pkg-check\"><\/div>\r\n        <div class=\"pkg-name\">Chokoria Package<\/div>\r\n        <div class=\"pkg-desc\">Chokoria to Chokoria with 30% discount<\/div>\r\n        <span class=\"pkg-badge\">30% OFF<\/span>\r\n      <\/label>\r\n      <label class=\"pkg-opt\" onclick=\"selectPkg(this,'dhaka')\">\r\n        <input type=\"radio\" name=\"pkg\" value=\"dhaka\">\r\n        <div class=\"pkg-check\"><\/div>\r\n        <div class=\"pkg-name\">Dhaka Full Package<\/div>\r\n        <div class=\"pkg-desc\">Dhaka to Dhaka with 30% discount<\/div>\r\n        <span class=\"pkg-badge\">30% OFF<\/span>\r\n      <\/label>\r\n    <\/div>\r\n\r\n    <div style=\"margin-top:14px\">\r\n      <span class=\"ref-toggle\" onclick=\"toggleRefTable()\">View Full Price Chart \u25be<\/span>\r\n      <div class=\"ref-table-wrap\" id=\"ref-table\">\r\n        <table class=\"rtable\">\r\n          <thead>\r\n            <tr>\r\n              <th>Persons<\/th>\r\n              <th>Standard<\/th>\r\n              <th>Room & Food<\/th>\r\n              <th>Chokoria Pkg<\/th>\r\n              <th>Dhaka Pkg<\/th>\r\n            <\/tr>\r\n          <\/thead>\r\n          <tbody>\r\n            <tr><td>2<\/td><td>3,800<\/td><td>2,600<\/td><td>3,350<\/td><td>4,750<\/td><\/tr>\r\n            <tr><td>3<\/td><td>3,133<\/td><td>2,200<\/td><td>2,700<\/td><td>4,100<\/td><\/tr>\r\n            <tr><td>4<\/td><td>2,800<\/td><td>1,900<\/td><td>2,300<\/td><td>3,700<\/td><\/tr>\r\n            <tr><td>5<\/td><td>2,600<\/td><td>1,800<\/td><td>2,100<\/td><td>3,500<\/td><\/tr>\r\n            <tr><td>6<\/td><td>2,467<\/td><td>1,700<\/td><td>2,300<\/td><td>3,700<\/td><\/tr>\r\n            <tr><td>7<\/td><td>2,371<\/td><td>1,650<\/td><td>2,200<\/td><td>3,600<\/td><\/tr>\r\n            <tr><td>8<\/td><td>2,300<\/td><td>1,600<\/td><td>2,100<\/td><td>3,500<\/td><\/tr>\r\n            <tr><td>9<\/td><td>2,244<\/td><td>1,550<\/td><td>2,000<\/td><td>3,400<\/td><\/tr>\r\n            <tr><td>10<\/td><td>2,200<\/td><td>1,500<\/td><td>1,900<\/td><td>3,300<\/td><\/tr>\r\n          <\/tbody>\r\n        <\/table>\r\n        <div style=\"font-size:11px;color:var(--muted);margin-top:6px\">* Price per person \/ per night<\/div>\r\n      <\/div>\r\n    <\/div>\r\n  <\/div>\r\n\r\n  <!-- STEP 2: PERSONS & DATE -->\r\n  <div class=\"card\">\r\n    <div class=\"card-title\"><div class=\"step-num\">2<\/div> Group Size & Date<\/div>\r\n    <div style=\"margin-bottom:18px\">\r\n      <div class=\"fg\" style=\"margin-bottom:8px\"><label>Number of Persons<\/label><\/div>\r\n      <div class=\"persons-row\">\r\n        <div class=\"counter\">\r\n          <button class=\"counter-btn\" onclick=\"changePersons(-1)\">\u2212<\/button>\r\n          <input class=\"counter-val\" type=\"number\" id=\"persons-val\" value=\"2\" min=\"2\" max=\"10\" readonly>\r\n          <button class=\"counter-btn\" onclick=\"changePersons(1)\">+<\/button>\r\n        <\/div>\r\n        <div style=\"font-size:13px;color:var(--muted)\">Min 2 \u2014 Max 10 persons<\/div>\r\n      <\/div>\r\n    <\/div>\r\n    <div class=\"frow\">\r\n      <div class=\"fg\">\r\n        <label>Check-in Date<\/label>\r\n        <input type=\"date\" id=\"f-checkin\" onchange=\"calcTotal()\">\r\n      <\/div>\r\n      <div class=\"fg\">\r\n        <label>Check-out Date<\/label>\r\n        <input type=\"date\" id=\"f-checkout\" onchange=\"calcTotal()\">\r\n      <\/div>\r\n    <\/div>\r\n  <\/div>\r\n\r\n  <!-- STEP 3: ADD-ONS -->\r\n  <div class=\"card\">\r\n    <div class=\"card-title\"><div class=\"step-num\">3<\/div> Extra Services (Optional)<\/div>\r\n    <div class=\"addon-list\">\r\n      <label class=\"addon-item\" onclick=\"toggleAddon(this,'premium_food')\">\r\n        <input type=\"checkbox\" id=\"addon-premium\" onchange=\"calcTotal()\">\r\n        <div class=\"addon-info\">\r\n          <div class=\"addon-name\">Premium Food Upgrade<\/div>\r\n          <div class=\"addon-note\">Upgrade to premium food package<\/div>\r\n        <\/div>\r\n        <div class=\"addon-price\">+\u09f3200 \/ person<\/div>\r\n      <\/label>\r\n      <label class=\"addon-item\" onclick=\"toggleAddon(this,'bike')\">\r\n        <input type=\"checkbox\" id=\"addon-bike\" onchange=\"calcTotal()\">\r\n        <div class=\"addon-info\">\r\n          <div class=\"addon-name\">Bike \u2014 Hill Transport<\/div>\r\n          <div class=\"addon-note\">Per person (optional)<\/div>\r\n        <\/div>\r\n        <div class=\"addon-price\">+\u09f3200 \/ person<\/div>\r\n      <\/label>\r\n      <label class=\"addon-item\" id=\"bus-toggle-item\" onclick=\"toggleBus(this)\">\r\n        <input type=\"checkbox\" id=\"addon-bus\" onchange=\"calcTotal()\">\r\n        <div class=\"addon-info\">\r\n          <div class=\"addon-name\">Bus Upgrade (Dhaka \u2194 Chokoria)<\/div>\r\n          <div class=\"addon-note\">Only for Chokoria & Dhaka packages<\/div>\r\n        <\/div>\r\n        <div class=\"addon-price\">Select below<\/div>\r\n      <\/label>\r\n    <\/div>\r\n\r\n    <!-- BUS TYPE -->\r\n    <div class=\"bus-section\" id=\"bus-section\">\r\n      <div style=\"font-size:12px;font-weight:600;color:var(--muted);margin-bottom:8px;text-transform:uppercase;letter-spacing:.04em\">Select Bus Type<\/div>\r\n      <div class=\"radio-group\">\r\n        <label class=\"radio-opt\" onclick=\"selectBus(this,'economy',700)\">\r\n          <div class=\"radio-left\">\r\n            <input type=\"radio\" name=\"bus\" value=\"700\">\r\n            <span class=\"radio-name\">Non-AC Economy Bus<\/span>\r\n          <\/div>\r\n          <span class=\"radio-price\">+\u09f3700 \/ person<\/span>\r\n        <\/label>\r\n        <label class=\"radio-opt\" onclick=\"selectBus(this,'business',1000)\">\r\n          <div class=\"radio-left\">\r\n            <input type=\"radio\" name=\"bus\" value=\"1000\">\r\n            <span class=\"radio-name\">AC Business Class Bus<\/span>\r\n          <\/div>\r\n          <span class=\"radio-price\">+\u09f31,000 \/ person<\/span>\r\n        <\/label>\r\n        <label class=\"radio-opt\" onclick=\"selectBus(this,'sleeper',1200)\">\r\n          <div class=\"radio-left\">\r\n            <input type=\"radio\" name=\"bus\" value=\"1200\">\r\n            <span class=\"radio-name\">AC Sleeper Bus<\/span>\r\n          <\/div>\r\n          <span class=\"radio-price\">+\u09f31,200 \/ person<\/span>\r\n        <\/label>\r\n      <\/div>\r\n    <\/div>\r\n  <\/div>\r\n\r\n  <!-- STEP 4: CONTACT -->\r\n  <div class=\"card\">\r\n    <div class=\"card-title\"><div class=\"step-num\">4<\/div> Your Details<\/div>\r\n    <div class=\"frow\">\r\n      <div class=\"fg\">\r\n        <label>Full Name<\/label>\r\n        <input type=\"text\" id=\"f-name\" placeholder=\"Your full name\">\r\n      <\/div>\r\n      <div class=\"fg\">\r\n        <label>Phone Number<\/label>\r\n        <input type=\"tel\" id=\"f-phone\" placeholder=\"01XXXXXXXXX\">\r\n      <\/div>\r\n    <\/div>\r\n    <div class=\"fg\">\r\n      <label>Email (Optional)<\/label>\r\n      <input type=\"email\" id=\"f-email\" placeholder=\"email@example.com\">\r\n    <\/div>\r\n    <div class=\"fg\">\r\n      <label>Special Request<\/label>\r\n      <textarea id=\"f-notes\" placeholder=\"Any special request or message...\"><\/textarea>\r\n    <\/div>\r\n  <\/div>\r\n\r\n  <!-- PRICE SUMMARY -->\r\n  <div class=\"price-card\" id=\"price-card\">\r\n    <div class=\"price-card-title\">Price Summary<\/div>\r\n    <div id=\"price-body\">\r\n      <div class=\"price-empty\">Select package & dates to see total cost<\/div>\r\n    <\/div>\r\n  <\/div>\r\n\r\n  <!-- CONFLICT ERROR BOX -->\r\n  <div class=\"conflict-box\" id=\"conflict-box\">\r\n    <div class=\"conflict-box-header\">\r\n      <div class=\"conflict-title\">\u26a0 Date Already Booked!<\/div>\r\n      <button class=\"conflict-close\" onclick=\"hideConflict()\">\u2715<\/button>\r\n    <\/div>\r\n    <div class=\"conflict-msg\">\r\n      Sorry, these dates are not available. Already booked: \r\n      <span class=\"conflict-dates\" id=\"conflict-dates\"><\/span>\r\n      <br>Please choose different check-in and check-out dates.\r\n    <\/div>\r\n  <\/div>\r\n\r\n  <!-- SUBMIT -->\r\n  <button class=\"submit-btn\" id=\"submit-btn\" onclick=\"submitBooking()\">\r\n    <span class=\"btn-text\">Confirm Booking<\/span>\r\n    <div class=\"spin\"><\/div>\r\n  <\/button>\r\n  <div class=\"submit-note\">Our team will contact you after booking to confirm your slot.<\/div>\r\n\r\n  <!-- SUCCESS -->\r\n  <div class=\"success-wrap\" id=\"success-wrap\">\r\n    <div class=\"s-icon\">\u2713<\/div>\r\n    <h2>Booking Confirmed!<\/h2>\r\n    <p>Your booking has been submitted successfully. Our team will contact you shortly to confirm your slot.<\/p>\r\n    <div class=\"bid-box\">\r\n      <div class=\"bid-label\">Booking Reference<\/div>\r\n      <div class=\"bid-val\" id=\"success-bid\">\u2014<\/div>\r\n    <\/div>\r\n    <button class=\"new-book-btn\" onclick=\"resetForm()\">Make Another Booking<\/button>\r\n  <\/div>\r\n\r\n<\/div>\r\n\r\n\r\n\r\n<script>\r\n\/\/ ============================================================\r\nvar SCRIPT_URL = 'https:\/\/script.google.com\/macros\/s\/AKfycby-UL9ZJkv-bDQi3jcpuRmmLDD1ssj13HgvrhYgCcNFOdLk1UtmcHPOy0RnnU3FPUkT\/exec';\r\n\/\/ ============================================================\r\n\r\n\/\/ Price data (per person per night)\r\nvar PRICES = {\r\n  standard: {2:3800,3:3133,4:2800,5:2600,6:2467,7:2371,8:2300,9:2244,10:2200},\r\n  roomfood: {2:2600,3:2200,4:1900,5:1800,6:1700,7:1650,8:1600,9:1550,10:1500},\r\n  chokoria: {2:3350,3:2700,4:2300,5:2100,6:2300,7:2200,8:2100,9:2000,10:1900},\r\n  dhaka:    {2:4750,3:4100,4:3700,5:3500,6:3700,7:3600,8:3500,9:3400,10:3300}\r\n};\r\n\r\nvar PKG_NAMES = {\r\n  standard:'Standard Package',\r\n  roomfood:'Room & Food Only (30% off)',\r\n  chokoria:'Chokoria to Chokoria Package',\r\n  dhaka:'Dhaka to Dhaka Full Package'\r\n};\r\n\r\nvar currentPkg = 'standard';\r\nvar busPrice = 0;\r\n\r\nfunction selectPkg(el, val) {\r\n  document.querySelectorAll('.pkg-opt').forEach(function(o){o.classList.remove('selected')});\r\n  el.classList.add('selected');\r\n  currentPkg = val;\r\n  calcTotal();\r\n}\r\n\r\nfunction changePersons(delta) {\r\n  var inp = document.getElementById('persons-val');\r\n  var val = parseInt(inp.value) + delta;\r\n  if (val < 2) val = 2;\r\n  if (val > 10) val = 10;\r\n  inp.value = val;\r\n  calcTotal();\r\n}\r\n\r\nfunction toggleAddon(el, type) {\r\n  setTimeout(function(){\r\n    el.classList.toggle('selected', el.querySelector('input').checked);\r\n    calcTotal();\r\n  }, 0);\r\n}\r\n\r\nfunction toggleBus(el) {\r\n  setTimeout(function(){\r\n    var checked = document.getElementById('addon-bus').checked;\r\n    el.classList.toggle('selected', checked);\r\n    var section = document.getElementById('bus-section');\r\n    section.classList.toggle('show', checked);\r\n    if (!checked) { busPrice = 0; }\r\n    calcTotal();\r\n  }, 0);\r\n}\r\n\r\nfunction selectBus(el, type, price) {\r\n  document.querySelectorAll('.radio-opt').forEach(function(o){o.classList.remove('selected')});\r\n  el.classList.add('selected');\r\n  busPrice = price;\r\n  calcTotal();\r\n}\r\n\r\nfunction calcTotal() {\r\n  var persons = parseInt(document.getElementById('persons-val').value) || 2;\r\n  var ci = document.getElementById('f-checkin').value;\r\n  var co = document.getElementById('f-checkout').value;\r\n\r\n  var basePerPerson = PRICES[currentPkg][persons] || 0;\r\n\r\n  \/\/ addons\r\n  var premiumFood = document.getElementById('addon-premium').checked ? 200 : 0;\r\n  var bike = document.getElementById('addon-bike').checked ? 200 : 0;\r\n  var busAddon = document.getElementById('addon-bus').checked ? busPrice : 0;\r\n\r\n  var nights = 1;\r\n  if (ci && co) {\r\n    var n = Math.round((new Date(co) - new Date(ci)) \/ 86400000);\r\n    if (n > 0) nights = n;\r\n  }\r\n\r\n  var baseTotal = basePerPerson * persons * nights;\r\n  var addonPerPerson = premiumFood + bike + busAddon;\r\n  var addonTotal = addonPerPerson * persons;\r\n  var grandTotal = baseTotal + addonTotal;\r\n\r\n  var html = '<div class=\"price-rows\">';\r\n  html += '<div class=\"price-row\"><span class=\"pr-label\">Package<\/span><span class=\"pr-val\">' + PKG_NAMES[currentPkg] + '<\/span><\/div>';\r\n  html += '<div class=\"price-row\"><span class=\"pr-label\">Persons<\/span><span class=\"pr-val\">' + persons + ' people<\/span><\/div>';\r\n  html += '<div class=\"price-row\"><span class=\"pr-label\">Rate \/ person<\/span><span class=\"pr-val\">\u09f3' + basePerPerson.toLocaleString() + '<\/span><\/div>';\r\n  html += '<div class=\"price-row\"><span class=\"pr-label\">Nights<\/span><span class=\"pr-val\">' + nights + ' night' + (nights>1?'s':'') + '<\/span><\/div>';\r\n  html += '<div class=\"price-row\"><span class=\"pr-label\">Base Total<\/span><span class=\"pr-val\">\u09f3' + baseTotal.toLocaleString() + '<\/span><\/div>';\r\n  if (addonTotal > 0) {\r\n    if (premiumFood) html += '<div class=\"price-row\"><span class=\"pr-label\">Premium Food<\/span><span class=\"pr-val\">+\u09f3' + (premiumFood*persons).toLocaleString() + '<\/span><\/div>';\r\n    if (bike) html += '<div class=\"price-row\"><span class=\"pr-label\">Bike Transport<\/span><span class=\"pr-val\">+\u09f3' + (bike*persons).toLocaleString() + '<\/span><\/div>';\r\n    if (busAddon) html += '<div class=\"price-row\"><span class=\"pr-label\">Bus Upgrade<\/span><span class=\"pr-val\">+\u09f3' + (busAddon*persons).toLocaleString() + '<\/span><\/div>';\r\n  }\r\n  html += '<\/div>';\r\n  html += '<hr class=\"price-divider\">';\r\n  html += '<div class=\"price-total-row\"><span class=\"price-total-label\">Total Cost<\/span><span class=\"price-total-val\">\u09f3' + grandTotal.toLocaleString() + '<\/span><\/div>';\r\n  html += '<div class=\"price-per-person\">\u09f3' + Math.round(grandTotal\/persons).toLocaleString() + ' per person<\/div>';\r\n\r\n  document.getElementById('price-body').innerHTML = html;\r\n  return {persons, nights, basePerPerson, addonPerPerson, baseTotal, addonTotal, grandTotal};\r\n}\r\n\r\nfunction toggleRefTable() {\r\n  var el = document.getElementById('ref-table');\r\n  el.classList.toggle('show');\r\n}\r\n\r\nfunction generateBookingId() {\r\n  return 'JV-' + new Date().getFullYear() + '-' + (Math.floor(Math.random()*9000)+1000);\r\n}\r\n\r\nfunction submitBooking() {\r\n  var name = document.getElementById('f-name').value.trim();\r\n  var phone = document.getElementById('f-phone').value.trim();\r\n  var ci = document.getElementById('f-checkin').value;\r\n  var co = document.getElementById('f-checkout').value;\r\n\r\n  if (!name) { alert('Please enter your name'); return; }\r\n  if (!phone || phone.length < 10) { alert('Please enter a valid phone number'); return; }\r\n  if (!ci) { alert('Please select check-in date'); return; }\r\n  if (!co) { alert('Please select check-out date'); return; }\r\n\r\n  var p = calcTotal();\r\n  if (!p || p.grandTotal <= 0) { alert('Please check your selections'); return; }\r\n\r\n  var bid = generateBookingId();\r\n  var btn = document.getElementById('submit-btn');\r\n  btn.classList.add('loading'); btn.disabled = true;\r\n\r\n  \/\/ Addons summary\r\n  var addons = [];\r\n  if (document.getElementById('addon-premium').checked) addons.push('Premium Food');\r\n  if (document.getElementById('addon-bike').checked) addons.push('Bike Transport');\r\n  if (document.getElementById('addon-bus').checked) {\r\n    var btype = busPrice===700?'Non-AC Economy':busPrice===1000?'AC Business':'AC Sleeper';\r\n    addons.push('Bus: '+btype);\r\n  }\r\n\r\n  var payload = {\r\n    action: 'addBooking',\r\n    bookingId: bid,\r\n    timestamp: new Date().toISOString(),\r\n    guestName: name,\r\n    phone: phone,\r\n    email: document.getElementById('f-email').value || '',\r\n    packageType: PKG_NAMES[currentPkg],\r\n    checkIn: ci,\r\n    checkOut: co,\r\n    persons: p.persons,\r\n    nights: p.nights,\r\n    ratePerPerson: p.basePerPerson,\r\n    addons: addons.join(', '),\r\n    totalAmount: p.grandTotal,\r\n    status: 'Pending',\r\n    notes: document.getElementById('f-notes').value || ''\r\n  };\r\n\r\n  if (SCRIPT_URL === 'YOUR_APPS_SCRIPT_WEB_APP_URL_HERE') {\r\n    setTimeout(function(){\r\n      btn.classList.remove('loading'); btn.disabled = false;\r\n      showSuccess(bid);\r\n    }, 1200);\r\n    return;\r\n  }\r\n\r\n  var params = Object.keys(payload).map(function(k){\r\n    return encodeURIComponent(k)+'='+encodeURIComponent(payload[k]);\r\n  }).join('&');\r\n\r\n  fetch(SCRIPT_URL + '?' + params)\r\n    .then(function(r){return r.json()})\r\n    .then(function(data){\r\n      btn.classList.remove('loading'); btn.disabled = false;\r\n      if (data.conflict) {\r\n        showConflictError(data.bookedFrom, data.bookedTo);\r\n      } else if (data.success) {\r\n        showSuccess(bid);\r\n      } else {\r\n        alert('Something went wrong. Please try again.');\r\n      }\r\n    })\r\n    .catch(function(){btn.classList.remove('loading');btn.disabled=false;showSuccess(bid)});\r\n}\r\n\r\nfunction showSuccess(bid) {\r\n  document.getElementById('success-bid').textContent = bid;\r\n  document.getElementById('main-wrap').style.display = 'none';\r\n  document.getElementById('success-wrap').style.display = 'block';\r\n  window.scrollTo({top:0,behavior:'smooth'});\r\n}\r\n\r\nfunction showConflictError(from, to) {\r\n  var box = document.getElementById('conflict-box');\r\n  document.getElementById('conflict-dates').textContent = from + ' to ' + to;\r\n  box.style.display = 'block';\r\n  box.scrollIntoView({behavior:'smooth', block:'center'});\r\n}\r\n\r\nfunction hideConflict() {\r\n  document.getElementById('conflict-box').style.display = 'none';\r\n}\r\n\r\nfunction resetForm() {\r\n  document.getElementById('main-wrap').style.display = 'block';\r\n  document.getElementById('success-wrap').style.display = 'none';\r\n  document.getElementById('f-name').value = '';\r\n  document.getElementById('f-phone').value = '';\r\n  document.getElementById('f-email').value = '';\r\n  document.getElementById('f-notes').value = '';\r\n  document.getElementById('f-checkin').value = '';\r\n  document.getElementById('f-checkout').value = '';\r\n  document.getElementById('persons-val').value = 2;\r\n  currentPkg = 'standard';\r\n  busPrice = 0;\r\n  document.querySelectorAll('.pkg-opt').forEach(function(o,i){o.classList.toggle('selected',i===0)});\r\n  document.querySelectorAll('input[type=checkbox]').forEach(function(c){c.checked=false});\r\n  document.querySelectorAll('.addon-item').forEach(function(a){a.classList.remove('selected')});\r\n  document.getElementById('bus-section').classList.remove('show');\r\n  calcTotal();\r\n}\r\n\r\n\/\/ Init\r\nvar today = new Date();\r\nvar tomorrow = new Date(today); tomorrow.setDate(tomorrow.getDate()+1);\r\nvar dayAfter = new Date(today); dayAfter.setDate(dayAfter.getDate()+2);\r\ndocument.getElementById('f-checkin').value = tomorrow.toISOString().split('T')[0];\r\ndocument.getElementById('f-checkout').value = dayAfter.toISOString().split('T')[0];\r\ncalcTotal();\r\n<\/script>\r\n<\/body>\r\n<\/html>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Josna Valley Eco Resort \u2014 Book Now 1 Choose Your Package Standard Package Room + Food per person Room &#038; Food Only Per person with 30% discount 30% OFF Chokoria Package Chokoria to Chokoria with 30% discount 30% OFF Dhaka Full Package Dhaka to Dhaka with 30% discount 30% OFF View Full Price Chart \u25be [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"elementor_header_footer","meta":{"footnotes":""},"class_list":["post-898","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/tourvill.com\/index.php\/wp-json\/wp\/v2\/pages\/898","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/tourvill.com\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/tourvill.com\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/tourvill.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/tourvill.com\/index.php\/wp-json\/wp\/v2\/comments?post=898"}],"version-history":[{"count":14,"href":"https:\/\/tourvill.com\/index.php\/wp-json\/wp\/v2\/pages\/898\/revisions"}],"predecessor-version":[{"id":920,"href":"https:\/\/tourvill.com\/index.php\/wp-json\/wp\/v2\/pages\/898\/revisions\/920"}],"wp:attachment":[{"href":"https:\/\/tourvill.com\/index.php\/wp-json\/wp\/v2\/media?parent=898"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}