{"id":6764,"date":"2026-01-15T13:52:01","date_gmt":"2026-01-15T13:52:01","guid":{"rendered":"https:\/\/hillsometrails.com\/?page_id=6764"},"modified":"2026-03-10T18:11:36","modified_gmt":"2026-03-10T18:11:36","slug":"rising-above-the-storm-rwanda-trip","status":"publish","type":"page","link":"https:\/\/hillsometrails.com\/index.php\/rising-above-the-storm-rwanda-trip\/","title":{"rendered":"Rising above the storm Rwanda Trip"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"6764\" class=\"elementor elementor-6764\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-176f0813 e-con-full e-flex e-con e-parent\" data-id=\"176f0813\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t<div class=\"elementor-element elementor-element-474fe19 e-flex e-con-boxed e-con e-child\" data-id=\"474fe19\" 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-473c063 elementor-widget elementor-widget-heading\" data-id=\"473c063\" 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<h1 class=\"elementor-heading-title elementor-size-default\">Rising above the storm Rwanda trip.<\/h1>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-1c62804 elementor-widget elementor-widget-heading\" data-id=\"1c62804\" 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<h1 class=\"elementor-heading-title elementor-size-default\">We do <em data-start=\"523\" data-end=\"531\">Rwanda<\/em> better than anyone. Authentic Rwanda, heart of the wild.<\/h1>\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<div class=\"elementor-element elementor-element-875a137 e-flex e-con-boxed e-con e-parent\" data-id=\"875a137\" 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-c08a006 elementor-widget elementor-widget-hillsome_fp_v10\" data-id=\"c08a006\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"hillsome_fp_v10.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<link rel=\"preconnect\" href=\"https:\/\/fonts.googleapis.com\">\n<link href=\"https:\/\/fonts.googleapis.com\/css2?family=Cormorant+Garamond:ital,wght@0,400;0,600;0,700;1,400;1,600&family=DM+Sans:wght@300;400;500;600&display=swap\" rel=\"stylesheet\">\n<style>\n.hbc08a006{\n  --lime:#ccff33;\n  --forest:#0D2B1D;\n  --forest2:#163D2A;\n  --gold:#C9A84C;\n  --ivory:#F7F3EC;\n  --cream:#EDE8DF;\n  --ink:#1A1A1A;\n  --mist:#8A8A7A;\n  --r:4px;\n  --r2:12px;\n  font-family:'DM Sans',sans-serif;\n  color:var(--ink);\n  background:var(--ivory);\n}\n.hbc08a006 .hb-wrap{\n  background:var(--ivory);max-width:980px;margin:0 auto;padding:0;border-radius:20px;overflow:hidden;\n  box-shadow:0 32px 80px rgba(13,43,29,.18),0 8px 24px rgba(0,0,0,.06);position:relative;\n}\n.hbc08a006 .hb-wrap::before{\n  content:'';position:absolute;inset:0;\n  background-image:url(\"data:image\/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http:\/\/www.w3.org\/2000\/svg'%3E%3Cfilter id='noise'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='4' stitchTiles='stitch'\/%3E%3C\/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23noise)' opacity='0.03'\/%3E%3C\/svg%3E\");\n  pointer-events:none;z-index:0;border-radius:20px;\n}\n.hb-header{background:var(--forest);padding:36px 52px 32px;position:relative;overflow:hidden;}\n.hb-header::after{content:'';position:absolute;right:-60px;top:-60px;width:260px;height:260px;border-radius:50%;background:radial-gradient(circle,rgba(201,168,76,.15) 0%,transparent 70%);}\n.hb-header-eyebrow{font-size:10px;letter-spacing:3px;text-transform:uppercase;color:var(--lime);font-weight:600;margin-bottom:8px;}\n.hb-header-title{font-family:'Cormorant Garamond',serif;font-size:32px;font-weight:600;color:#fff;margin:0 0 4px;line-height:1.1;}\n.hb-header-sub{font-size:13px;color:rgba(255,255,255,.5);font-weight:300;}\n.hb-prog{display:flex;background:var(--forest2);padding:0 52px;border-bottom:1px solid rgba(255,255,255,.06);}\n.hb-prog-step{flex:1;padding:16px 0;font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:1.5px;color:rgba(255,255,255,.3);border-bottom:2px solid transparent;transition:all .3s;cursor:default;display:flex;align-items:center;gap:8px;}\n.hb-prog-step span{display:inline-flex;width:20px;height:20px;border-radius:50%;background:rgba(255,255,255,.1);color:rgba(255,255,255,.4);align-items:center;justify-content:center;font-size:10px;font-weight:700;transition:all .3s;flex-shrink:0;}\n.hb-prog-step.active{color:#fff;border-bottom-color:var(--lime);}\n.hb-prog-step.active span{background:var(--lime);color:var(--forest);}\n.hb-prog-step.done{color:rgba(255,255,255,.5);}\n.hb-prog-step.done span{background:rgba(201,168,76,.3);color:var(--gold);}\n.hb-body{padding:44px 52px 52px;position:relative;z-index:1;}\n.hb-sec{font-family:'Cormorant Garamond',serif;font-size:26px;font-weight:600;font-style:italic;color:var(--forest);margin:0 0 28px;padding-bottom:16px;border-bottom:1px solid var(--cream);display:flex;align-items:baseline;gap:12px;}\n.hb-sec::after{content:'';flex:1;height:1px;background:linear-gradient(to right,var(--cream),transparent);}\n.hb-g2{display:grid;grid-template-columns:1fr 1fr;gap:20px;}\n.hb-group{display:flex;flex-direction:column;gap:0;position:relative;}\n.hb-lbl{font-size:9px;font-weight:600;text-transform:uppercase;letter-spacing:2px;color:var(--mist);margin-bottom:6px;display:block;}\n.hb-inp,.hb-sel,.hb-ta{padding:14px 16px;border:1.5px solid var(--cream);border-radius:var(--r2);font-family:'DM Sans',sans-serif;font-size:16px;color:var(--ink);background:#fff;transition:border-color .2s,box-shadow .2s;width:100%;box-sizing:border-box;}\n.hb-inp:focus,.hb-sel:focus,.hb-ta:focus{outline:none;border-color:var(--forest);box-shadow:0 0 0 3px rgba(13,43,29,.08);}\n.hb-inp.err,.hb-sel.err{border-color:#dc2626;background:#fff8f8;}\n.hb-err-txt{font-size:11px;color:#dc2626;display:none;margin-top:5px;padding-left:2px;}\n.hb-inp.err~.hb-err-txt,.hb-sel.err~.hb-err-txt{display:block;}\n.hb-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:12px;margin-bottom:8px;}\n.hb-card{border:1.5px solid var(--cream);border-radius:var(--r2);padding:20px 18px 18px;cursor:pointer;transition:all .25s;background:#fff;position:relative;overflow:hidden;}\n.hb-card::before{content:'';position:absolute;left:0;top:0;width:3px;height:100%;background:var(--forest);transform:scaleY(0);transform-origin:bottom;transition:transform .25s;}\n.hb-card:hover{border-color:rgba(13,43,29,.2);transform:translateY(-2px);box-shadow:0 8px 24px rgba(13,43,29,.1);}\n.hb-card:hover::before,.hb-card.sel::before{transform:scaleY(1);}\n.hb-card.sel{border-color:var(--forest);background:linear-gradient(135deg,rgba(13,43,29,.04) 0%,#fff 100%);box-shadow:0 8px 28px rgba(13,43,29,.12);}\n.hb-card .ct{font-weight:600;font-size:14px;margin-bottom:3px;color:var(--forest);line-height:1.3;}\n.hb-card .cn{font-size:11px;color:var(--mist);letter-spacing:.3px;}\n.hb-card .cp{font-size:12px;font-weight:600;color:var(--gold);margin-top:10px;letter-spacing:.3px;}\n.hb-chk{position:absolute;top:12px;right:12px;width:20px;height:20px;border-radius:50%;background:var(--forest);color:#fff;display:none;align-items:center;justify-content:center;font-size:9px;font-weight:900;box-shadow:0 2px 8px rgba(13,43,29,.3);}\n.hb-card.sel .hb-chk{display:flex;}\n.hb-tinfo{background:var(--forest);color:#fff;padding:24px 28px;border-radius:var(--r2);display:none;font-size:13px;line-height:1.8;margin:16px 0 8px;position:relative;overflow:hidden;}\n.hb-tinfo::after{content:'';position:absolute;right:-40px;bottom:-40px;width:180px;height:180px;border-radius:50%;background:radial-gradient(circle,rgba(201,168,76,.12) 0%,transparent 70%);}\n.hb-tinfo h4{font-family:'Cormorant Garamond',serif;font-size:20px;font-weight:600;color:#fff;margin:0 0 12px;font-style:italic;}\n.hb-tinfo p,.hb-tinfo div{color:rgba(255,255,255,.75);}\n.hb-tinfo strong{color:var(--lime);}\n.hb-tinfo details summary{cursor:pointer;font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:2px;color:var(--lime);margin-top:14px;list-style:none;}\n.hb-tinfo details summary::-webkit-details-marker{display:none;}\n.hb-rcard{border:1.5px solid var(--cream);border-radius:var(--r2);padding:24px 20px;text-align:center;background:#fff;transition:border-color .2s;}\n.hb-rcard:hover{border-color:rgba(13,43,29,.2);}\n.hb-rcard label{display:block;font-size:9px;font-weight:600;text-transform:uppercase;letter-spacing:2px;color:var(--mist);margin-bottom:4px;}\n.hb-rcard small{display:block;font-size:12px;color:var(--gold);margin-top:3px;font-weight:500;}\n.hb-qty{display:flex;align-items:center;justify-content:center;gap:14px;margin-top:14px;}\n.hb-qb{width:34px;height:34px;border:1.5px solid var(--cream);background:#fff;border-radius:50%;font-size:16px;cursor:pointer;display:flex;align-items:center;justify-content:center;font-weight:500;transition:all .2s;line-height:1;padding:0;color:var(--ink);}\n.hb-qb:hover{border-color:var(--forest);background:var(--forest);color:#fff;}\n.hb-qn{font-size:22px;font-weight:600;min-width:28px;text-align:center;font-family:'Cormorant Garamond',serif;}\n.hb-sum{background:var(--forest);color:#fff;padding:28px 32px;border-radius:var(--r2);margin-top:28px;display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:16px;position:relative;overflow:hidden;}\n.hb-sm{font-size:12px;color:rgba(255,255,255,.5);line-height:2;}\n.hb-sm strong{color:#fff;font-size:13px;font-weight:500;}\n.hb-tl{font-size:9px;text-transform:uppercase;letter-spacing:2px;color:rgba(255,255,255,.4);margin-bottom:4px;}\n.hb-ta-amt{font-family:'Cormorant Garamond',serif;font-size:42px;font-weight:700;color:var(--lime);line-height:1;}\n.hb-tb{font-size:11px;color:rgba(255,255,255,.4);margin-top:4px;}\n.hb-btn{flex:1;padding:17px 24px;background:var(--lime);color:var(--forest);border:none;border-radius:var(--r2);font-family:'DM Sans',sans-serif;font-size:13px;font-weight:700;text-transform:uppercase;letter-spacing:1.5px;cursor:pointer;transition:all .25s;margin-top:20px;position:relative;overflow:hidden;display:inline-flex;align-items:center;justify-content:center;z-index:0;}\n.hb-btn::after{content:'';position:absolute;inset:0;background:linear-gradient(135deg,rgba(255,255,255,.18) 0%,transparent 60%);pointer-events:none;z-index:1;}\n.hb-btn > *,.hb-btn{text-shadow:none;}\n.hb-mft .hb-btn,.hb-body .hb-btn{isolation:isolate;}\n.hb-btn:hover{background:#d4ff3a;transform:translateY(-2px);box-shadow:0 12px 32px rgba(13,43,29,.2);}\n.hb-btn:active{transform:translateY(0);}\n.hb-btn:disabled{opacity:.45;cursor:not-allowed;transform:none;box-shadow:none;}\n.hb-btn-g{background:var(--cream);color:var(--ink);opacity:1;}\n.hb-btn-g:hover{background:#ddd8ce;box-shadow:0 4px 12px rgba(0,0,0,.08);transform:translateY(-1px);}\n.hb-btn-g::after{display:none;}\n.hb-btn-row{display:flex;gap:10px;margin-top:20px;}\n.hb-btn-row .hb-btn{margin-top:0;flex:1;}\n@media(max-width:720px){.hb-btn-row{flex-direction:column;gap:10px;}.hb-btn-row .hb-btn{width:100%;flex:unset;}}\n.hb-ab{padding:14px 18px;border-radius:var(--r2);font-size:13px;margin-bottom:20px;display:none;font-weight:500;}\n.hb-ab.err{background:#fff0f0;border-left:3px solid #dc2626;color:#991b1b;}\n.hb-ab.ok{background:rgba(13,43,29,.06);border-left:3px solid var(--forest);color:var(--forest);}\n.hb-ov{position:fixed;inset:0;background:rgba(5,12,8,.94);display:none;justify-content:center;align-items:center;z-index:99999;padding:20px;backdrop-filter:blur(12px);}\n.hb-modal{background:var(--ivory);width:100%;max-width:520px;border-radius:24px;overflow:hidden;box-shadow:0 48px 120px rgba(0,0,0,.6),0 0 0 1px rgba(255,255,255,.06);animation:hb-pop .35s cubic-bezier(.34,1.4,.64,1);}\n@keyframes hb-pop{from{transform:scale(.84) translateY(28px);opacity:0}to{transform:scale(1) translateY(0);opacity:1}}\n.hb-mhd{background:#0D2B1D;padding:28px 32px;position:relative;overflow:hidden;}\n.hb-mhd::before{content:'';position:absolute;right:-40px;bottom:-40px;width:200px;height:200px;border-radius:50%;background:radial-gradient(circle,rgba(201,168,76,.13),transparent 65%);}\n.hb-mhd-eyebrow{font-size:9px;letter-spacing:3px;text-transform:uppercase;color:#C9A84C;font-weight:600;margin-bottom:8px;position:relative;z-index:1;}\n.hb-mhd h3{margin:0 0 16px;color:#fff;font-family:'Cormorant Garamond',serif;font-size:26px;font-weight:600;font-style:italic;line-height:1.1;position:relative;z-index:1;}\n.hb-mhd-price{display:flex;align-items:flex-end;justify-content:space-between;flex-wrap:wrap;gap:8px;position:relative;z-index:1;padding-top:16px;border-top:1px solid rgba(255,255,255,.1);}\n.hb-mhd-usd{font-family:'Cormorant Garamond',serif;font-size:42px;font-weight:700;line-height:1;color:#ccff33;}\n.hb-mhd-usd small{font-size:20px;font-weight:400;opacity:.8;}\n.hb-mhd-rwf{text-align:right;}\n.hb-mhd-rwf-num{font-size:15px;font-weight:600;color:rgba(255,255,255,.85);font-family:'Cormorant Garamond',serif;}\n.hb-mhd-rwf-lbl{font-size:9px;letter-spacing:2px;text-transform:uppercase;color:rgba(255,255,255,.35);display:block;margin-bottom:2px;}\n.hb-mbd{padding:0;background:#fff;max-height:55vh;overflow-y:auto;}\n.hb-mbd::-webkit-scrollbar{width:3px;}\n.hb-mbd::-webkit-scrollbar-track{background:#f5f5f0;}\n.hb-mbd::-webkit-scrollbar-thumb{background:#e0dbd2;border-radius:3px;}\n.hb-mdetails{padding:22px 32px 0;background:#fff;}\n.hb-mdetails-title{font-size:9px;letter-spacing:2.5px;text-transform:uppercase;color:#8A8A7A;font-weight:600;margin-bottom:12px;}\n.hb-mrow{display:flex;justify-content:space-between;align-items:baseline;padding:9px 0;border-bottom:1px solid #F0EDE7;gap:12px;}\n.hb-mrow:last-child{border-bottom:none;}\n.hb-mrow-label{font-size:11px;color:#8A8A7A;flex-shrink:0;}\n.hb-mrow-val{font-size:13px;font-weight:500;color:#1A1A1A;text-align:right;}\n.hb-msection{padding:16px 32px 8px;background:#fff;}\n.hb-msection-divider{height:1px;background:#F0EDE7;margin:4px 32px 16px;}\n.hb-mft{padding:12px 32px 24px;display:flex;gap:10px;background:#fff;border-top:1px solid #F0EDE7;}\n.hb-mft .hb-btn{margin:0;}\n.hb-sbox{text-align:center;padding:36px 32px 24px;background:#fff;}\n.hb-sicon{font-size:52px;margin-bottom:16px;display:block;line-height:1;}\n.hb-sbox h4{font-family:'Cormorant Garamond',serif;font-size:28px;font-weight:600;font-style:italic;margin:0 0 12px;color:#0D2B1D;line-height:1.2;}\n.hb-sbox p{font-size:13px;color:#8A8A7A;line-height:1.8;margin:0;}\n.hb-sbox strong{color:#0D2B1D;}\n.hb-ref{display:inline-block;margin-top:16px;padding:6px 16px;border-radius:20px;background:#EDE8DF;font-size:11px;letter-spacing:1.5px;text-transform:uppercase;color:#0D2B1D;font-weight:600;}\n.hb-countdown{display:inline-flex;align-items:center;gap:8px;margin-top:16px;padding:8px 16px;border-radius:20px;background:#F0EDE7;font-size:12px;color:#8A8A7A;}\n.hb-countdown span{font-weight:700;color:#0D2B1D;}\n.hb-loader{width:40px;height:40px;border-radius:50%;border:2px solid #EDE8DF;border-top:2px solid #0D2B1D;animation:hb-spin .9s linear infinite;margin:20px auto 0;}\n@keyframes hb-spin{to{transform:rotate(360deg)}}\n.hb-pulse{display:inline-block;animation:hb-pulse 2s ease-in-out infinite;}\n@keyframes hb-pulse{0%,100%{opacity:1;transform:scale(1)}50%{opacity:.5;transform:scale(.92)}}\n.hb-wa{display:inline-flex;align-items:center;gap:10px;background:#25D366;color:#fff;padding:14px 22px;border-radius:12px;font-weight:600;font-size:13px;text-decoration:none;margin-top:16px;width:100%;justify-content:center;box-sizing:border-box;transition:all .2s;letter-spacing:.3px;}\n.hb-wa:hover{background:#1dba5a;transform:translateY(-1px);}\n@media(max-width:560px){\n  .hb-mhd{padding:22px 20px 20px;}.hb-mhd-price{flex-direction:column;gap:4px;}.hb-mhd-usd{font-size:34px;}.hb-mhd-rwf{text-align:left;}\n  .hb-mdetails{padding:16px 20px 0;}.hb-msection{padding:12px 20px 8px;}.hb-msection-divider{margin:4px 20px 14px;}\n  .hb-mft{padding:10px 20px 20px;flex-direction:column;}.hb-mft .hb-btn{flex:unset;width:100%;}.hb-sbox{padding:28px 20px 20px;}\n}\n@media(max-width:720px){\n  .hbc08a006 .hb-wrap{border-radius:0;}.hbc08a006{padding:0;}\n  .hb-header{padding:24px 20px 20px;}.hb-header-title{font-size:26px;}.hb-header-sub{font-size:12px;}\n  .hb-prog{padding:0;overflow-x:auto;-webkit-overflow-scrolling:touch;}.hb-prog-step{padding:14px 8px;font-size:0;gap:0;justify-content:center;}.hb-prog-step span{margin:0;width:26px;height:26px;font-size:11px;}\n}\n@media(min-width:400px) and (max-width:720px){.hb-prog-step{font-size:9px;gap:6px;padding:14px 6px;}}\n@media(max-width:720px){\n  .hb-body{padding:24px 20px 36px;}.hb-sec{font-size:22px;margin-bottom:20px;}.hb-g2{grid-template-columns:1fr;gap:14px;}\n  .hb-cards{grid-template-columns:1fr;gap:10px;}.hb-card{padding:16px 14px;}.hb-tinfo{padding:18px 18px;}.hb-rcard{padding:20px 16px;}\n  .hb-sum{flex-direction:column;align-items:flex-start;padding:20px 20px;gap:12px;}.hb-sm{line-height:1.9;}.hb-ta-amt{font-size:36px;}\n  .hb-sum > div:last-child{text-align:left;width:100%;border-top:1px solid rgba(255,255,255,.1);padding-top:12px;}\n  div[style*=\"display:flex\"][style*=\"gap\"]{flex-direction:column !important;gap:10px !important;}\n  .hb-btn{width:100%;margin-top:0;}.hb-btn-g{width:100%;}\n  p[style*=\"font-size:11px\"]{font-size:11px !important;margin-top:6px;}\n}\n@media(max-width:360px){.hb-header{padding:20px 16px 18px;}.hb-body{padding:20px 16px 30px;}.hb-header-title{font-size:23px;}.hb-ta-amt{font-size:30px;}}\n<\/style>\n\n<div class=\"hbc08a006\" id=\"hb-root-c08a006\">\n<div class=\"hb-wrap\">\n  <div class=\"hb-header\">\n    <div class=\"hb-header-eyebrow\">Hillsome Trails \u00b7 Rwanda<\/div>\n    <div class=\"hb-header-title\">Book Your Journey<\/div>\n    <div class=\"hb-header-sub\">Secure booking \u00b7 Instant MoMo payment \u00b7 Confirmation within minutes<\/div>\n  <\/div>\n  <div class=\"hb-prog\">\n    <div class=\"hb-prog-step active\" id=\"hb-ps1-c08a006\"><span>1<\/span>Contact<\/div>\n    <div class=\"hb-prog-step\"        id=\"hb-ps2-c08a006\"><span>2<\/span>Journey<\/div>\n    <div class=\"hb-prog-step\"        id=\"hb-ps3-c08a006\"><span>3<\/span>Rooms<\/div>\n    <div class=\"hb-prog-step\"        id=\"hb-ps4-c08a006\"><span>4<\/span>Review &amp; Pay<\/div>\n  <\/div>\n  <div class=\"hb-body\">\n    <div class=\"hb-ab err\" id=\"hb-alert-c08a006\"><\/div>\n    <form id=\"hb-form-c08a006\" novalidate>\n      <!-- STEP 1 -->\n      <div id=\"hb-step1-c08a006\">\n        <div class=\"hb-sec\">Contact Information<\/div>\n        <div class=\"hb-g2\">\n          <div class=\"hb-group\"><label class=\"hb-lbl\">Full Name *<\/label><input class=\"hb-inp\" id=\"hb-name-c08a006\" type=\"text\" placeholder=\"Jane Doe\" autocomplete=\"name\"><span class=\"hb-err-txt\">Please enter your full name.<\/span><\/div>\n          <div class=\"hb-group\"><label class=\"hb-lbl\">Email Address *<\/label><input class=\"hb-inp\" id=\"hb-email-c08a006\" type=\"email\" placeholder=\"jane@example.com\" autocomplete=\"email\"><span class=\"hb-err-txt\">Please enter a valid email.<\/span><\/div>\n          <div class=\"hb-group\"><label class=\"hb-lbl\">Phone Number *<\/label><input class=\"hb-inp\" id=\"hb-phone-c08a006\" type=\"tel\" placeholder=\"+250 7XX XXX XXX\" autocomplete=\"tel\"><span class=\"hb-err-txt\">Please enter a phone number.<\/span><\/div>\n          <div class=\"hb-group\"><label class=\"hb-lbl\">Number of Travelers *<\/label><input class=\"hb-inp\" id=\"hb-pax-c08a006\" type=\"number\" min=\"1\" max=\"50\" value=\"1\"><span class=\"hb-err-txt\">At least 1 required.<\/span><\/div>\n        <\/div>\n        <button class=\"hb-btn hb-btn-solo\" type=\"button\" id=\"hb-next1-c08a006\">Continue to Journey \u2192<\/button>\n      <\/div>\n      <!-- STEP 2 -->\n      <div id=\"hb-step2-c08a006\" style=\"display:none\">\n        <div class=\"hb-sec\">Select Your Journey<\/div>\n        <div class=\"hb-cards\" id=\"hb-cards-c08a006\">\n                    <div class=\"hb-card\" data-slug=\"ras-rwanda-immersion-trip\" tabindex=\"0\" role=\"radio\" aria-checked=\"false\">\n            <div class=\"hb-chk\">\u2713<\/div>\n            <div class=\"ct\">RAS Rwanda immersion Trip<\/div>\n            <div class=\"cn\">5 nights<\/div>\n            <div class=\"cp\">From $943 \/ person<\/div>\n          <\/div>\n                  <\/div>\n        <input type=\"hidden\" id=\"hb-trip-c08a006\">\n        <span class=\"hb-err-txt\" id=\"hb-trip-err-c08a006\" style=\"display:none\">Please select a trip.<\/span>\n        <div class=\"hb-tinfo\" id=\"hb-tinfo-c08a006\">\n          <h4 id=\"hb-tinfo-title-c08a006\"><\/h4>\n          <div id=\"hb-tinfo-desc-c08a006\"><\/div>\n          <p style=\"margin:10px 0 0\"><strong>Accommodation:<\/strong> <span id=\"hb-tinfo-accom-c08a006\"><\/span><\/p>\n          <details style=\"margin-top:12px\"><summary>What's included<\/summary><div id=\"hb-tinfo-inc-c08a006\" style=\"margin-top:10px\"><\/div><\/details>\n        <\/div>\n        <div class=\"hb-g2\" style=\"margin-top:24px\">\n          <div class=\"hb-group\"><label class=\"hb-lbl\">Start Date *<\/label><input class=\"hb-inp\" id=\"hb-start-c08a006\" type=\"date\"><span class=\"hb-err-txt\">Please pick a valid start date.<\/span><\/div>\n          <div class=\"hb-group\"><label class=\"hb-lbl\">End Date<\/label><input class=\"hb-inp\" id=\"hb-end-c08a006\" type=\"date\"><span class=\"hb-err-txt\">End date must be after start date.<\/span><\/div>\n        <\/div>\n        <p style=\"font-size:11px;color:var(--mist);margin-top:8px;letter-spacing:.2px;\">End date auto-fills based on trip length \u2014 you may adjust it.<\/p>\n        <div class=\"hb-btn-row\">\n          <button class=\"hb-btn hb-btn-g\" type=\"button\" id=\"hb-back1-c08a006\">\u2190 Back<\/button>\n          <button class=\"hb-btn\" type=\"button\" id=\"hb-next2-c08a006\">Continue to Rooms \u2192<\/button>\n        <\/div>\n      <\/div>\n      <!-- STEP 3 -->\n      <div id=\"hb-step3-c08a006\" style=\"display:none\">\n        <div class=\"hb-sec\">Accommodation<\/div>\n        <p style=\"font-size:13px;color:var(--mist);margin-bottom:24px;line-height:1.7;\">Room prices are charged per night. Leave at 0 if accommodation is already included in your package.<\/p>\n        <div class=\"hb-g2\">\n          <div class=\"hb-rcard\">\n            <label>Single Room<\/label>\n            <small id=\"hb-sp-c08a006\">$\u2014 \/ night<\/small>\n            <div class=\"hb-qty\">\n              <button class=\"hb-qb\" type=\"button\" data-type=\"single\" data-op=\"-\">\u2212<\/button>\n              <span class=\"hb-qn\" id=\"hb-sv-c08a006\">0<\/span>\n              <button class=\"hb-qb\" type=\"button\" data-type=\"single\" data-op=\"+\">+<\/button>\n            <\/div>\n          <\/div>\n          <div class=\"hb-rcard\">\n            <label>Double Room<\/label>\n            <small id=\"hb-dp-c08a006\">$\u2014 \/ night<\/small>\n            <div class=\"hb-qty\">\n              <button class=\"hb-qb\" type=\"button\" data-type=\"double\" data-op=\"-\">\u2212<\/button>\n              <span class=\"hb-qn\" id=\"hb-dv-c08a006\">0<\/span>\n              <button class=\"hb-qb\" type=\"button\" data-type=\"double\" data-op=\"+\">+<\/button>\n            <\/div>\n          <\/div>\n        <\/div>\n        <div class=\"hb-sum\">\n          <div class=\"hb-sm\" id=\"hb-sm-c08a006\">\u2014<\/div>\n          <div style=\"text-align:right\">\n            <div class=\"hb-tl\">Estimated Total<\/div>\n            <div class=\"hb-ta-amt\">$<span id=\"hb-total-c08a006\">0<\/span><\/div>\n            <div class=\"hb-tb\" id=\"hb-tb-c08a006\"><\/div>\n          <\/div>\n        <\/div>\n        <div class=\"hb-btn-row\">\n          <button class=\"hb-btn hb-btn-g\" type=\"button\" id=\"hb-back2-c08a006\">\u2190 Back<\/button>\n          <button class=\"hb-btn\" type=\"button\" id=\"hb-next3-c08a006\">Review &amp; Pay \u2192<\/button>\n        <\/div>\n      <\/div>\n    <\/form>\n  <\/div>\n<\/div>\n<\/div>\n\n<div class=\"hb-ov\" id=\"hb-ov-c08a006\" role=\"dialog\" aria-modal=\"true\">\n  <div class=\"hb-modal\">\n    <div class=\"hb-mhd\">\n      <div class=\"hb-mhd-eyebrow\">Hillsome Trails \u00b7 Secure Checkout<\/div>\n      <h3 id=\"hb-mh-c08a006\">Review &amp; Pay<\/h3>\n      <div class=\"hb-mhd-price\" id=\"hb-mhd-price-c08a006\"><\/div>\n    <\/div>\n    <div class=\"hb-mbd\" id=\"hb-mb-c08a006\"><\/div>\n    <div class=\"hb-mft\" id=\"hb-mft-c08a006\"><\/div>\n  <\/div>\n<\/div>\n\n<script>\n(function($){\n  'use strict';\n  var uid  = 'c08a006';\n  var DATA = {\"ras-rwanda-immersion-trip\":{\"title\":\"RAS Rwanda immersion Trip\",\"nights\":5,\"desc\":\"<p><strong>Overview<\\\/strong><\\\/p><p>This 6-day Kigali experience blends Rwanda\\u2019s culture, history, community impact, and natural beauty. Guests will visit Kigali Genocide memorial to have a brief over view about the coutry\\u2019s history, after they will explore Kigali\\u2019s vibrant art and lifestyle, visit other significant historical sites, spend three meaningful days serving and learning at Rising Above the Storms in Kabeza and wrap up with local markets &amp; crafts shop visits. This itinerary offers the perfect balance of purpose, culture and all while staying in Kigali.<\\\/p><p><strong>Day 1: Arrival &amp; Welcome to Kigali<\\\/strong><\\\/p><p>Upon arrival at Kigali International Airport, you will be warmly welcomed and transferred to the Hotel. The rest of the day is dedicated to rest and relaxation after your journey. Basing on the arrival time you may choose to dine in the city, getting your first feel of Kigali\\u2019s calm and welcoming atmosphere. Overnight at <strong>Four Points by Sheraton<\\\/strong> (5 Nights).<\\\/p><p><strong>Day 2: Brief overview of the country through Kigali city tour<\\\/strong><\\\/p><p>The day begins with a guided orientation tour about the country and its capital city, offering insight into the city\\u2019s history, development, and daily life and culture. You will visit the Kigali genocide memorial vibrant local Market to experience local commerce and culture, followed by a meaningful journey to Ntarama and Nyamata Church Memorials, powerful sites that deepen understanding of Rwanda\\u2019s past, enroute for lunch in town, the afternoon introduces Rwanda\\u2019s creative side with a visit to Inema Arts Center or Niyo Arts Gallery. You will return to the hotel in the evening for rest and relaxation.<\\\/p><p><strong>Day 3: Rising Above the Storms \\u2013 Full Impact Day<\\\/strong><\\\/p><p>After breakfast, you will transfer to Rising Above the Storms in Kabeza for a full day of meaningful engagement. You will participate in scheduled programs and community-based activities, interacting with beneficiaries and gaining firsthand insight into the organization\\u2019s impactful work, after you will return to the hotel in the evening for Diner and Overnight.<\\\/p><p><strong>Day 4: Rising Above the Storms \\u2013 Continued Engagement<\\\/strong><\\\/p><p>This second day allows for deeper involvement with Rising Above the Storms, building stronger connections through ongoing programs and hands-on participation, you drive back to the hotel to refresh as you prepare for dinner at a local restaurant after dinner you drive back to the hotel for a overnight.<\\\/p><p><strong>Day 5: Rising Above the Storms \\u2013 Continued Engagement<\\\/strong><\\\/p><p>This is a 3rd day with Rising above the Storm programs and hands-on participation, after you drive back to the hotel to refresh Dinner &amp; Overnight.<\\\/p><p><strong>Day 6: Ishobe Cultural Experience &amp; Departure<\\\/strong><\\\/p><p>On your final day, enjoy an immersive cultural experience at Ishobe, where traditional music, dance, storytelling, and crafts provide a lively introduction to Rwanda\\u2019s heritage. This interactive visit allows for cultural exchange, farm tour, and a deeper appreciation of local traditions. This is followed by time for optional shopping for locally made souvenirs before a drop off at the airport in the evening marking the end of the trip.<\\\/p>\",\"inc\":\"<ul><li>Ground Transportation in a comfortable safari vehicle<\\\/li><li>Services of a professional English\\\/French-speaking driver-guide<\\\/li><li>All listed activities and site entry fees<\\\/li><li>5 nights\\u2019 Accommodation <strong>(Four points by Sheraton Full board<\\\/strong>)<\\\/li><li>Ishobe cultural experience<\\\/li><li>Meals as per itinerary (lunches, dinners, and breakfasts soft drink per meal)<\\\/li><li>Bottled drinking water during the trip<\\\/li><li>Full time WIFI in the car<\\\/li><li>Government Tax and service Charges<\\\/li><\\\/ul>\",\"accom\":\"Four points by Sheraton\",\"pricing\":{\"1\":2310,\"2\":1485,\"3\":1210,\"4\":1155,\"5\":1056,\"6\":990,\"7\":943},\"rooms\":{\"single\":195,\"double\":215}}};\n  var WA   = '250788320805';\n\n  function cfg() {\n    return window.HB_CONFIG || { ajaxUrl: '\/wp-admin\/admin-ajax.php', nonce: '' };\n  }\n\n  var S = { pax:1, tripSlug:'', single:0, double:0, grandTotal:0, rwfAmount:0, refId:'', bookingId:0, pollTimer:null, pollCount:0 };\n  var G = function(id){ return document.getElementById(id); };\n  var U = function(s){ return G('hb-'+s+'-'+uid); };\n  var today = function(){ return new Date().toISOString().split('T')[0]; };\n  var fmt   = function(n){ return Number(n).toLocaleString('en-US'); };\n  \/\/ Escape HTML to prevent XSS when inserting user input into innerHTML\n  var esc = function(s){ var d=document.createElement('div'); d.appendChild(document.createTextNode(s)); return d.innerHTML; };\n\n  function updateCardPrices(){\n    var pax = parseInt(G('hb-pax-'+uid).value)||1;\n    document.querySelectorAll('#hb-cards-'+uid+' .hb-card').forEach(function(card){\n      var slug = card.dataset.slug;\n      var trip = DATA[slug];\n      if(trip){\n        var pp = trip.pricing[pax>=7?7:pax]||trip.pricing[1];\n        card.querySelector('.cp').textContent = '$'+fmt(pp)+' \/ person';\n      }\n    });\n  }\n\n  function showStep(n){\n    [1,2,3].forEach(function(i){ G('hb-step'+i+'-'+uid).style.display=i===n?'':'none'; });\n    [1,2,3,4].forEach(function(i){\n      var ps=G('hb-ps'+i+'-'+uid);\n      ps.className='hb-prog-step'+(i<n?' done':i===n?' active':'');\n    });\n    clearAlert();\n    if(n===2) updateCardPrices();\n    var root=G('hb-root-'+uid);\n    if(root) window.scrollTo({top:root.getBoundingClientRect().top+window.scrollY-20,behavior:'smooth'});\n  }\n  function showAlert(msg){ var a=U('alert'); a.textContent=msg; a.style.display='block'; }\n  function clearAlert(){ U('alert').style.display='none'; }\n  function markErr(inp,ok){ inp.classList.toggle('err',!ok); return ok; }\n\n  function calc(){\n    var trip=DATA[S.tripSlug]; if(!trip){ U('total').textContent='0'; return; }\n    var pax=parseInt(G('hb-pax-'+uid).value)||1;\n    var pp=trip.pricing[pax>=7?7:pax]||trip.pricing[1];\n    var nights=trip.nights||1;\n    var rc=S.single*(trip.rooms.single||0)*nights+S.double*(trip.rooms.double||0)*nights;\n    var grand=pp*pax+rc;\n    S.grandTotal=grand;\n    U('total').textContent=fmt(grand);\n    U('tb').textContent='$'+fmt(pp)+'\/person \u00d7 '+pax+(rc?' + $'+fmt(rc)+' rooms':'');\n    U('sm').innerHTML='<strong>'+trip.title+'<\/strong><br>'+(G('hb-start-'+uid).value||'\u2014')+' \u2192 '+(G('hb-end-'+uid).value||'\u2014')+'<br>'+pax+' traveler'+(pax>1?'s':'');\n    G('hb-sp-'+uid).textContent=trip.rooms.single?'$'+trip.rooms.single+' \/ night':'Included';\n    G('hb-dp-'+uid).textContent=trip.rooms.double?'$'+trip.rooms.double+' \/ night':'Included';\n  }\n\n  document.querySelectorAll('#hb-cards-'+uid+' .hb-card').forEach(function(card){\n    function pick(){\n      document.querySelectorAll('#hb-cards-'+uid+' .hb-card').forEach(function(c){ c.classList.remove('sel'); c.setAttribute('aria-checked','false'); });\n      card.classList.add('sel'); card.setAttribute('aria-checked','true');\n      var slug=card.dataset.slug; S.tripSlug=slug; G('hb-trip-'+uid).value=slug;\n      G('hb-trip-err-'+uid).style.display='none';\n      var trip=DATA[slug];\n      if(trip){ G('hb-tinfo-'+uid).style.display='block'; G('hb-tinfo-title-'+uid).textContent=trip.title; G('hb-tinfo-desc-'+uid).innerHTML=trip.desc; G('hb-tinfo-inc-'+uid).innerHTML=trip.inc; G('hb-tinfo-accom-'+uid).textContent=trip.accom; }\n      if(G('hb-start-'+uid).value&&trip){ var d=new Date(G('hb-start-'+uid).value); d.setDate(d.getDate()+trip.nights); G('hb-end-'+uid).value=d.toISOString().split('T')[0]; }\n      calc();\n    }\n    card.addEventListener('click',pick);\n    card.addEventListener('keydown',function(e){ if(e.key===' '||e.key==='Enter'){e.preventDefault();pick();} });\n  });\n\n  G('hb-start-'+uid).addEventListener('change',function(){\n    var trip=DATA[S.tripSlug]; if(trip&&this.value){ var d=new Date(this.value); d.setDate(d.getDate()+trip.nights); G('hb-end-'+uid).value=d.toISOString().split('T')[0]; } calc();\n  });\n  G('hb-end-'+uid).addEventListener('change',calc);\n  G('hb-pax-'+uid).addEventListener('input',function(){ updateCardPrices(); calc(); });\n  G('hb-start-'+uid).setAttribute('min',today());\n  G('hb-end-'+uid).setAttribute('min',today());\n\n  document.querySelectorAll('#hb-root-'+uid+' .hb-qb').forEach(function(btn){\n    btn.addEventListener('click',function(){\n      var t=this.dataset.type,op=this.dataset.op;\n      if(t==='single'){ S.single=Math.max(0,S.single+(op==='+'?1:-1)); G('hb-sv-'+uid).textContent=S.single; }\n      if(t==='double'){ S.double=Math.max(0,S.double+(op==='+'?1:-1)); G('hb-dv-'+uid).textContent=S.double; }\n      calc();\n    });\n  });\n\n  G('hb-next1-'+uid).addEventListener('click',function(){\n    var ok=true;\n    ok&=markErr(G('hb-name-'+uid),  G('hb-name-'+uid).value.trim().length>=2);\n    ok&=markErr(G('hb-email-'+uid), \/^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$\/.test(G('hb-email-'+uid).value.trim()));\n    ok&=markErr(G('hb-phone-'+uid), G('hb-phone-'+uid).value.trim().length>=6);\n    ok&=markErr(G('hb-pax-'+uid),   parseInt(G('hb-pax-'+uid).value)>=1);\n    if(ok) showStep(2); else showAlert('Please fix the highlighted fields before continuing.');\n  });\n  G('hb-next2-'+uid).addEventListener('click',function(){\n    var ok=true;\n    if(!S.tripSlug){ G('hb-trip-err-'+uid).style.display='block'; ok=false; }\n    ok&=markErr(G('hb-start-'+uid), !!G('hb-start-'+uid).value&&G('hb-start-'+uid).value>=today());\n    ok&=markErr(G('hb-end-'+uid),   !!G('hb-end-'+uid).value&&G('hb-end-'+uid).value>G('hb-start-'+uid).value);\n    if(ok){ calc(); showStep(3); } else showAlert('Please fix the highlighted fields before continuing.');\n  });\n  G('hb-back1-'+uid).addEventListener('click',function(){ showStep(1); });\n  G('hb-back2-'+uid).addEventListener('click',function(){ showStep(2); });\n\n  G('hb-next3-'+uid).addEventListener('click',function(){\n    calc();\n    var trip=DATA[S.tripSlug]; var pax=parseInt(G('hb-pax-'+uid).value)||1;\n    var c=cfg();\n\n    $.post(c.ajaxUrl,{action:'hb_get_rate',security:c.nonce},function(r){\n      var rate = (r.success && r.data.rate) ? r.data.rate : 0;\n      S.liveRate = rate;\n      var rwf = rate ? Math.round(S.grandTotal * rate) : 0;\n      var rwfHtml = rate\n        ? '<div class=\"hb-mhd-rwf\"><span class=\"hb-mhd-rwf-lbl\">Via MoMo (RWF)<\/span><div class=\"hb-mhd-rwf-num\">'+Number(rwf).toLocaleString('en-US')+' RWF<\/div><\/div>'\n        : '';\n      document.getElementById('hb-mhd-price-'+uid).innerHTML=\n        '<div class=\"hb-mhd-usd\"><small>$<\/small>'+fmt(S.grandTotal)+'<\/div>'+rwfHtml;\n      buildReviewBody();\n      var payLabel = rate ? 'Pay $'+fmt(S.grandTotal)+' \u00b7 '+Number(rwf).toLocaleString('en-US')+' RWF' : 'Pay $'+fmt(S.grandTotal);\n      G('hb-mft-'+uid).innerHTML=\n        '<button class=\"hb-btn hb-btn-g\" type=\"button\" style=\"flex:0 0 100px\" id=\"hb-mback-'+uid+'\">\u2190 Edit<\/button>'+\n        '<button class=\"hb-btn\" type=\"button\" style=\"flex:1\" id=\"hb-pay-'+uid+'\">'+payLabel+'<\/button>';\n      G('hb-mback-'+uid).addEventListener('click',function(){ G('hb-ov-'+uid).style.display='none'; });\n      G('hb-pay-'+uid).addEventListener('click',submitPayment);\n      G('hb-ov-'+uid).style.display='flex';\n      setTimeout(function(){ var m=G('hb-momo-'+uid); if(m) m.focus(); },200);\n    }).fail(function(){\n      S.liveRate = 0;\n      document.getElementById('hb-mhd-price-'+uid).innerHTML=\n        '<div class=\"hb-mhd-usd\"><small>$<\/small>'+fmt(S.grandTotal)+'<\/div>';\n      buildReviewBody();\n      G('hb-mft-'+uid).innerHTML=\n        '<button class=\"hb-btn hb-btn-g\" type=\"button\" style=\"flex:0 0 100px\" id=\"hb-mback-'+uid+'\">\u2190 Edit<\/button>'+\n        '<button class=\"hb-btn\" type=\"button\" style=\"flex:1\" id=\"hb-pay-'+uid+'\">Pay $'+fmt(S.grandTotal)+'<\/button>';\n      G('hb-mback-'+uid).addEventListener('click',function(){ G('hb-ov-'+uid).style.display='none'; });\n      G('hb-pay-'+uid).addEventListener('click',submitPayment);\n      G('hb-ov-'+uid).style.display='flex';\n      setTimeout(function(){ var m=G('hb-momo-'+uid); if(m) m.focus(); },200);\n    });\n\n    function buildReviewBody(){\n      G('hb-mb-'+uid).innerHTML=\n        '<div class=\"hb-mdetails\">'+\n          '<div class=\"hb-mdetails-title\">Booking Summary<\/div>'+\n          '<div class=\"hb-mrow\"><span class=\"hb-mrow-label\">Guest<\/span><span class=\"hb-mrow-val\" style=\"font-weight:600\">'+esc(G('hb-name-'+uid).value)+'<\/span><\/div>'+\n          '<div class=\"hb-mrow\"><span class=\"hb-mrow-label\">Email<\/span><span class=\"hb-mrow-val\">'+esc(G('hb-email-'+uid).value)+'<\/span><\/div>'+\n          '<div class=\"hb-mrow\"><span class=\"hb-mrow-label\">Journey<\/span><span class=\"hb-mrow-val\" style=\"font-weight:600;color:#0D2B1D\">'+(trip?trip.title:'\u2014')+'<\/span><\/div>'+\n          '<div class=\"hb-mrow\"><span class=\"hb-mrow-label\">Dates<\/span><span class=\"hb-mrow-val\">'+esc(G('hb-start-'+uid).value)+' \u2192 '+esc(G('hb-end-'+uid).value)+'<\/span><\/div>'+\n          '<div class=\"hb-mrow\"><span class=\"hb-mrow-label\">Travelers<\/span><span class=\"hb-mrow-val\">'+pax+' '+(pax===1?'person':'people')+'<\/span><\/div>'+\n          '<div class=\"hb-mrow\"><span class=\"hb-mrow-label\">Rooms<\/span><span class=\"hb-mrow-val\">'+(S.single?S.single+'\u00d7 Single ':'')+(S.double?S.double+'\u00d7 Double':'')+((!S.single&&!S.double)?'None':'')+'<\/span><\/div>'+\n        '<\/div>'+\n        '<div class=\"hb-msection-divider\"><\/div>'+\n        '<div class=\"hb-msection\">'+\n          '<div class=\"hb-group\" style=\"margin-bottom:16px\">'+\n            '<label class=\"hb-lbl\">MTN MoMo Number *<\/label>'+\n            '<input class=\"hb-inp\" id=\"hb-momo-'+uid+'\" type=\"tel\" placeholder=\"e.g. 25078XXXXXXX\" style=\"background:#fff;\">'+\n            '<span class=\"hb-err-txt\" id=\"hb-merr-'+uid+'\" style=\"display:none\">Please enter a valid MoMo number (9\u201315 digits).<\/span>'+\n          '<\/div>'+\n          '<div class=\"hb-group\" style=\"padding-bottom:20px\">'+\n            '<label class=\"hb-lbl\">Special Requests<\/label>'+\n            '<textarea class=\"hb-ta\" id=\"hb-notes-'+uid+'\" rows=\"2\" placeholder=\"Dietary needs, special occasions\u2026\" style=\"background:#fff;\"><\/textarea>'+\n          '<\/div>'+\n        '<\/div>';\n    }\n  });\n\n  G('hb-ov-'+uid).addEventListener('click',function(e){ if(e.target===this) this.style.display='none'; });\n  G('hb-ov-'+uid).addEventListener('keydown',function(e){ if(e.key==='Escape') this.style.display='none'; });\n\n  function submitPayment(){\n    var momoEl=G('hb-momo-'+uid); var momoErr=G('hb-merr-'+uid);\n    var momo=momoEl?momoEl.value.replace(\/\\D\/g,''):'';\n    if(momo.length<9||momo.length>15){ momoEl.classList.add('err'); momoErr.style.display='block'; return; }\n\n    var payBtn=G('hb-pay-'+uid); payBtn.disabled=true; payBtn.textContent='Processing\u2026';\n    var rooms=[]; if(S.single) rooms.push(S.single+'x single'); if(S.double) rooms.push(S.double+'x double');\n    var trip=DATA[S.tripSlug];\n    var c=cfg();\n\n    $.ajax({\n      url:  c.ajaxUrl,\n      type: 'POST',\n      data: {\n        action:    'hillsome_fp_send',\n        security:  c.nonce,\n        name:      G('hb-name-'+uid).value.trim(),\n        email:     G('hb-email-'+uid).value.trim(),\n        phone:     G('hb-phone-'+uid).value.trim(),\n        momo:      momo,\n        travelers: G('hb-pax-'+uid).value,\n        trip:      trip?trip.title:S.tripSlug,\n        start:     G('hb-start-'+uid).value,\n        end:       G('hb-end-'+uid).value,\n        rooms:     rooms.join(', ')||'none',\n        total:     S.grandTotal,\n        notes:     (G('hb-notes-'+uid)||{value:''}).value.trim()\n      },\n      success: function(res){\n        if(!res.success){\n          showMErr(res.data&&res.data.msg?res.data.msg:'Submission failed. Please try again.');\n          payBtn.disabled=false; payBtn.textContent='Retry'; return;\n        }\n        S.refId=res.data.ref_id; S.bookingId=res.data.booking_id; S.rwfAmount=res.data.rwf_amount||0; S.momoError=res.data.momo_error||'';\n        if(res.data.momo_sent){ showPending(); startPoll(); } else { showFallback(); }\n      },\n      error: function(xhr){\n        var raw=xhr.responseText||'';\n        var clean=raw.replace(\/<[^>]+>\/g,' ').replace(\/\\s+\/g,' ').trim().substring(0,300);\n        showMErr('Server error (HTTP '+xhr.status+'). Response: '+clean);\n        payBtn.disabled=false; payBtn.textContent='Retry';\n      }\n    });\n  }\n\n  function showPending(){\n    G('hb-mh-'+uid).textContent='Confirm on Your Phone';\n    var rwfLine = S.rwfAmount\n      ? '<div style=\"display:inline-flex;align-items:center;gap:8px;background:rgba(13,43,29,.07);padding:8px 16px;border-radius:20px;margin:12px 0 0;font-size:12px;color:var(--forest);font-weight:600;\">\ud83d\udcf2 '+Number(S.rwfAmount).toLocaleString('en-US')+' RWF being charged<\/div>'\n      : '';\n    G('hb-mb-'+uid).innerHTML=\n      '<div class=\"hb-sbox\">'+\n        '<div class=\"hb-pulse hb-sicon\">\ud83d\udcf1<\/div>'+\n        '<h4>Check Your Phone<\/h4>'+\n        '<p>A push request for <strong>$'+fmt(S.grandTotal)+'<\/strong> was sent to your MoMo number.<br>Open the prompt and enter your PIN.<\/p>'+\n        rwfLine+\n        '<div class=\"hb-loader\"><\/div>'+\n        '<div class=\"hb-countdown\">Checking status \u00b7 <span id=\"hb-ct-'+uid+'\">90<\/span>s remaining<\/div>'+\n      '<\/div>';\n    G('hb-mft-'+uid).innerHTML='';\n  }\n  function showSuccess(){\n    G('hb-mh-'+uid).textContent='Journey Confirmed';\n    G('hb-mb-'+uid).innerHTML=\n      '<div class=\"hb-sbox\">'+\n        '<div class=\"hb-sicon\">\ud83c\udf3f<\/div>'+\n        '<h4>You\\'re All Set!<\/h4>'+\n        '<p>Payment of <strong>$'+fmt(S.grandTotal)+'<\/strong> received.<br>A confirmation has been sent to<br><strong>'+esc(G('hb-email-'+uid).value)+'<\/strong><\/p>'+\n        '<div class=\"hb-ref\">Ref \u00b7 '+S.refId.split('-')[0].toUpperCase()+'<\/div>'+\n      '<\/div>';\n    G('hb-mft-'+uid).innerHTML=\n      '<button class=\"hb-btn\" type=\"button\" onclick=\"location.reload()\" style=\"flex:1;\">Done<\/button>';\n  }\n  function showFailure(reason){\n    var isTimeout = reason==='TIMEOUT';\n    G('hb-mh-'+uid).textContent = isTimeout ? 'Request Timed Out' : 'Payment Declined';\n    G('hb-mb-'+uid).innerHTML=\n      '<div class=\"hb-sbox\">'+\n        '<div class=\"hb-sicon\">'+(isTimeout?'\u23f1':'\u2717')+'<\/div>'+\n        '<h4>'+(isTimeout?'No Response Received':'Payment Failed')+'<\/h4>'+\n        '<p>'+(isTimeout\n          ? 'We didn\\'t receive a confirmation in time. <strong>Don\\'t worry<\/strong> \u2014 if you complete the payment on your phone, we\\'ll still receive it and send your confirmation automatically.'\n          : 'Your payment was declined or cancelled. You can retry or complete the booking via WhatsApp.')+'<\/p>'+\n        waBtn()+\n      '<\/div>';\n    G('hb-mft-'+uid).innerHTML=\n      '<button class=\"hb-btn hb-btn-g\" type=\"button\" onclick=\"document.getElementById(\\'hb-ov-'+uid+'\\').style.display=\\'none\\'\" style=\"flex:1\">Close<\/button>'+\n      '<button class=\"hb-btn\" type=\"button\" id=\"hb-retry-'+uid+'\" style=\"flex:1\">Try Again<\/button>';\n    var rb=G('hb-retry-'+uid); if(rb) rb.addEventListener('click',function(){ G('hb-ov-'+uid).style.display='none'; showStep(3); });\n  }\n  function showFallback(){\n    G('hb-mh-'+uid).textContent='Almost There';\n    var diagHtml = '';\n    if(S.momoError){\n      \/\/ Show diagnostic to help admin troubleshoot (visible on-screen)\n      var reason = S.momoError;\n      var friendly = '';\n      if(reason.indexOf('missing_creds')!==-1 || reason.indexOf('missing_subscription_key')!==-1){\n        friendly = 'MoMo API credentials are not configured. Go to WP Admin \u2192 Hillsome Bookings \u2192 MoMo Settings and save your Subscription Key, then generate API credentials.';\n      } else if(reason.indexOf('token_error')!==-1){\n        friendly = 'Could not authenticate with MTN MoMo. Check that your Subscription Key and API credentials are correct in MoMo Settings.';\n      } else if(reason.indexOf('http_')!==-1){\n        friendly = 'MTN MoMo rejected the payment request. Technical detail: '+esc(reason);\n      } else if(reason.indexOf('request_error')!==-1){\n        friendly = 'Could not reach MTN MoMo servers. Check your server\\'s outbound internet access. Detail: '+esc(reason);\n      } else {\n        friendly = 'MoMo push failed: '+esc(reason);\n      }\n      diagHtml = '<div style=\"margin-top:16px;padding:12px 16px;background:#FEF3C7;border-radius:8px;border-left:3px solid #F59E0B;font-size:12px;color:#92400E;text-align:left;line-height:1.6;\">\u26a0\ufe0f <strong>Admin note:<\/strong> '+friendly+'<\/div>';\n    }\n    G('hb-mb-'+uid).innerHTML=\n      '<div class=\"hb-sbox\">'+\n        '<div class=\"hb-sicon\">\ud83d\uddfa\ufe0f<\/div>'+\n        '<h4>Details Saved<\/h4>'+\n        '<p>Your booking details are saved. Complete your payment via WhatsApp and our team will confirm everything promptly.<\/p>'+\n        diagHtml+\n        waBtn()+\n      '<\/div>';\n    G('hb-mft-'+uid).innerHTML=\n      '<button class=\"hb-btn hb-btn-g\" type=\"button\" onclick=\"location.reload()\" style=\"flex:1\">Close<\/button>';\n  }\n  function waBtn(){\n    var txt=encodeURIComponent('Hi, I submitted a booking for '+(DATA[S.tripSlug]?DATA[S.tripSlug].title:S.tripSlug)+' and need to complete payment.');\n    return '<a href=\"https:\/\/wa.me\/'+WA+'?text='+txt+'\" target=\"_blank\" class=\"hb-wa\"><svg width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"currentColor\"><path d=\"M17.472 14.382c-.297-.149-1.758-.867-2.03-.967-.273-.099-.471-.148-.67.15-.197.297-.767.966-.94 1.164-.173.199-.347.223-.644.075-.297-.15-1.255-.463-2.39-1.475-.883-.788-1.48-1.761-1.653-2.059-.173-.297-.018-.458.13-.606.134-.133.298-.347.446-.52.149-.174.198-.298.298-.497.099-.198.05-.371-.025-.52-.075-.149-.669-1.612-.916-2.207-.242-.579-.487-.5-.669-.51-.173-.008-.371-.01-.57-.01-.198 0-.52.074-.792.372-.272.297-1.04 1.016-1.04 2.479 0 1.462 1.065 2.875 1.213 3.074.149.198 2.096 3.2 5.077 4.487.709.306 1.262.489 1.694.625.712.227 1.36.195 1.871.118.571-.085 1.758-.719 2.006-1.413.248-.694.248-1.289.173-1.413-.074-.124-.272-.198-.57-.347m-5.421 7.403h-.004a9.87 9.87 0 01-5.031-1.378l-.361-.214-3.741.982.998-3.648-.235-.374a9.86 9.86 0 01-1.51-5.26c.001-5.45 4.436-9.884 9.888-9.884 2.64 0 5.122 1.03 6.988 2.898a9.825 9.825 0 012.893 6.994c-.003 5.45-4.437 9.884-9.885 9.884m8.413-18.297A11.815 11.815 0 0012.05 0C5.495 0 .16 5.335.157 11.892c0 2.096.547 4.142 1.588 5.945L.057 24l6.305-1.654a11.882 11.882 0 005.683 1.448h.005c6.554 0 11.89-5.335 11.893-11.893a11.821 11.821 0 00-3.48-8.413z\"\/><\/svg>Complete via WhatsApp<\/a>';\n  }\n  function showMErr(msg){\n    var ex=G('hb-mb-'+uid).querySelector('.hb-ab.err');\n    if(ex){ ex.textContent=msg; return; }\n    var d=document.createElement('div'); d.className='hb-ab err'; d.style.display='block'; d.textContent=msg;\n    G('hb-mb-'+uid).prepend(d);\n  }\n\n  \/\/ FIX #7: Extended polling \u2014 18 polls \u00d7 5s = 90 seconds\n  \/\/ Also checks DB status first (catches callback-settled bookings)\n  function startPoll(){\n    S.pollCount=0;\n    var maxPolls = 18; \/\/ 90 seconds total\n    S.pollTimer=setInterval(function(){\n      S.pollCount++;\n      var ct=G('hb-ct-'+uid); if(ct) ct.textContent=Math.max(0,(maxPolls-S.pollCount)*5);\n      if(S.pollCount>maxPolls){ clearInterval(S.pollTimer); showFailure('TIMEOUT'); return; }\n      var c=cfg();\n      $.post(c.ajaxUrl,{action:'hillsome_fp_verify',security:c.nonce,ref_id:S.refId,booking_id:S.bookingId},function(r){\n        if(!r.success){ return; } \/\/ network error on this poll, keep trying\n        var st = r.data && r.data.status ? r.data.status : r.data;\n        if(st==='PAID'){ clearInterval(S.pollTimer); showSuccess(); }\n        else if(st==='FAILED'){ clearInterval(S.pollTimer); showFailure('FAILED'); }\n        \/\/ else PENDING \u2014 keep polling\n      });\n    },5000);\n  }\n\n})(jQuery);\n<\/script>\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},"excerpt":{"rendered":"<p>Rising above the storm Rwanda trip. We do Rwanda better than anyone. Authentic Rwanda, heart of the wild. Hillsome Trails \u00b7 Rwanda Book Your Journey Secure booking \u00b7 Instant MoMo payment \u00b7 Confirmation within minutes 1Contact 2Journey 3Rooms 4Review &amp; Pay Contact Information Full Name *Please enter your full name. Email Address *Please enter a [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"inline_featured_image":false,"footnotes":""},"class_list":["post-6764","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/hillsometrails.com\/index.php\/wp-json\/wp\/v2\/pages\/6764","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/hillsometrails.com\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/hillsometrails.com\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/hillsometrails.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/hillsometrails.com\/index.php\/wp-json\/wp\/v2\/comments?post=6764"}],"version-history":[{"count":52,"href":"https:\/\/hillsometrails.com\/index.php\/wp-json\/wp\/v2\/pages\/6764\/revisions"}],"predecessor-version":[{"id":7307,"href":"https:\/\/hillsometrails.com\/index.php\/wp-json\/wp\/v2\/pages\/6764\/revisions\/7307"}],"wp:attachment":[{"href":"https:\/\/hillsometrails.com\/index.php\/wp-json\/wp\/v2\/media?parent=6764"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}