{"id":1437,"date":"2026-08-14T08:20:50","date_gmt":"2026-08-14T08:20:50","guid":{"rendered":"https:\/\/geminia.co.ke\/dev\/?page_id=1437"},"modified":"2026-08-26T07:37:40","modified_gmt":"2026-08-26T07:37:40","slug":"travel-insurance-form","status":"publish","type":"page","link":"https:\/\/geminia.co.ke\/dev\/travel-insurance-form\/","title":{"rendered":"Travel Insurance Form"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"1437\" class=\"elementor elementor-1437\">\n\t\t\t\t<div class=\"elementor-element elementor-element-dfb360b e-con-full e-flex e-con e-parent\" data-id=\"dfb360b\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-fbc13cb elementor-widget elementor-widget-html\" data-id=\"fbc13cb\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<div id=\"gti\"\r\n     data-endpoint=\"https:\/\/script.google.com\/macros\/s\/AKfycbzga0qKM9IT7pCd7qa0sWscXP4D9aOmvGSETB16_Q8rwbM_kf7_yNh32uwZpvhgyb7k\/exec\">\r\n\r\n<style>\r\n\/* ---- Fonts & tokens ------------------------------------------------ *\/\r\n@import url('https:\/\/fonts.googleapis.com\/css2?family=Inter:wght@400;500;600;700&family=Poppins:wght@500;600;700&display=swap');\r\n\r\n#gti{\r\n  --primary:#3fa6dd;\r\n  --accent:#393680;\r\n  --grad:#3fa6dd;\r\n  --bg:#F8F9FB;\r\n  --card:#FFFFFF;\r\n  --ink:#16283D;\r\n  --muted:#65758B;\r\n  --line:#E6EAF0;\r\n  --line-2:#EDF0F5;\r\n  --ok:#16A34A;\r\n  --err:#E5484D;\r\n  --radius:16px;\r\n  --radius-in:12px;\r\n  --shadow-s:0 1px 2px rgba(16,24,40,.05);\r\n  --shadow-m:0 8px 30px rgba(16,24,40,.08);\r\n  --shadow-btn:0 8px 20px rgba(57,54,128,.28);\r\n\r\n  all:initial;\r\n  display:block;\r\n  box-sizing:border-box;\r\n  font-family:'Inter',system-ui,-apple-system,Segoe UI,Roboto,sans-serif;\r\n  color:var(--ink);\r\n  background:var(--bg);\r\n  padding:28px 16px 48px;\r\n  -webkit-font-smoothing:antialiased;\r\n  line-height:1.55;\r\n}\r\n#gti *,#gti *::before,#gti *::after{box-sizing:border-box;margin:0;padding:0;}\r\n#gti button{font-family:inherit;}\r\n\r\n\/* ---- Shell --------------------------------------------------------- *\/\r\n#gti .gti-shell{max-width:760px;margin:0 auto;}\r\n\r\n\/* ---- Progress ------------------------------------------------------ *\/\r\n#gti .gti-progress{margin:0 4px 22px;opacity:0;transform:translateY(-6px);\r\n  transition:opacity .4s ease,transform .4s ease;}\r\n#gti .gti-progress.on{opacity:1;transform:none;}\r\n#gti .gti-progress-top{display:flex;justify-content:space-between;align-items:baseline;\r\n  margin-bottom:10px;}\r\n#gti .gti-step-label{font-size:13px;font-weight:600;color:var(--muted);letter-spacing:.01em;}\r\n#gti .gti-step-name{font-size:13px;font-weight:600;color:var(--primary);}\r\n#gti .gti-track{height:7px;background:#E9EEF4;border-radius:99px;overflow:hidden;}\r\n#gti .gti-fill{height:100%;width:0;border-radius:99px;background:var(--grad);\r\n  transition:width .5s cubic-bezier(.4,0,.2,1);}\r\n\r\n\/* ---- Card \/ steps -------------------------------------------------- *\/\r\n#gti .gti-card{background:var(--card);border:1px solid var(--line-2);\r\n  border-radius:var(--radius);box-shadow:var(--shadow-m);\r\n  padding:36px 34px;position:relative;overflow:hidden;}\r\n#gti .gti-card::before{content:\"\";position:absolute;top:0;left:0;right:0;height:3px;\r\n  background:var(--grad);z-index:5;}\r\n#gti .gti-step{display:none;}\r\n#gti .gti-step.active{display:block;animation:gtiIn .42s cubic-bezier(.22,.61,.36,1);}\r\n#gti .gti-step.leaving{animation:gtiOut .28s ease forwards;}\r\n@keyframes gtiIn{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}\r\n@keyframes gtiOut{to{opacity:0;transform:translateY(-10px)}}\r\n\r\n#gti .gti-eyebrow{display:inline-flex;align-items:center;gap:7px;font-size:12px;\r\n  font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--accent);\r\n  background:rgba(63,166,221,.09);padding:6px 12px;border-radius:99px;margin-bottom:16px;}\r\n#gti h2.gti-h{font-family:'Poppins',sans-serif;font-weight:600;font-size:25px;\r\n  line-height:1.25;letter-spacing:-.01em;color:var(--ink);margin-bottom:8px;}\r\n#gti .gti-sub{color:var(--muted);font-size:15px;margin-bottom:26px;max-width:56ch;}\r\n#gti .gti-sec{font-family:'Poppins',sans-serif;font-size:12.5px;font-weight:600;\r\n  color:var(--primary);letter-spacing:.03em;text-transform:uppercase;\r\n  margin:26px 0 14px;padding-top:18px;border-top:1px dashed var(--line);}\r\n#gti .gti-sec:first-of-type{margin-top:0;padding-top:0;border-top:0;}\r\n\r\n\/* ---- Fields -------------------------------------------------------- *\/\r\n#gti .gti-field{margin-bottom:20px;}\r\n#gti .gti-grid-2{display:grid;grid-template-columns:1fr 1fr;gap:16px;}\r\n#gti label.gti-lab{display:block;font-size:13.5px;font-weight:600;color:var(--ink);\r\n  margin-bottom:8px;}\r\n#gti .gti-req{color:var(--accent);}\r\n#gti .gti-hint{font-size:12.5px;color:var(--muted);margin-top:6px;}\r\n#gti .gti-input,#gti .gti-select,#gti .gti-area{\r\n  width:100%;font-family:inherit;font-size:15px;color:var(--ink);\r\n  background:#fff;border:1.5px solid var(--line);border-radius:var(--radius-in);\r\n  padding:13px 15px;transition:border-color .2s,box-shadow .2s,background .2s;}\r\n#gti .gti-area{resize:vertical;min-height:88px;}\r\n#gti .gti-input::placeholder,#gti .gti-area::placeholder{color:#9AA7B7;}\r\n#gti .gti-input:focus,#gti .gti-select:focus,#gti .gti-area:focus{\r\n  outline:none;border-color:var(--accent);box-shadow:0 0 0 4px rgba(63,166,221,.14);}\r\n#gti .gti-input.err,#gti .gti-select.err,#gti .gti-area.err{border-color:var(--err);\r\n  box-shadow:0 0 0 4px rgba(229,72,77,.12);}\r\n#gti .gti-err{display:none;color:var(--err);font-size:12.5px;font-weight:500;margin-top:7px;}\r\n#gti .gti-err.show{display:block;animation:gtiShakeIn .3s ease;}\r\n@keyframes gtiShakeIn{0%{opacity:0;transform:translateX(-4px)}100%{opacity:1;transform:none}}\r\n\r\n\/* ---- Radio \/ choice rows ------------------------------------------ *\/\r\n#gti .gti-choices{display:grid;gap:10px;}\r\n#gti .gti-choices.row{grid-template-columns:1fr 1fr;}\r\n#gti .gti-choices.row3{grid-template-columns:repeat(3,1fr);}\r\n#gti .gti-choice{display:flex;align-items:center;gap:12px;cursor:pointer;\r\n  border:1.5px solid var(--line);border-radius:var(--radius-in);padding:13px 15px;\r\n  transition:border-color .18s,background .18s,box-shadow .18s;user-select:none;}\r\n#gti .gti-choice:hover{border-color:#C7D6E6;background:#FBFDFF;}\r\n#gti .gti-choice input{position:absolute;opacity:0;width:0;height:0;}\r\n#gti .gti-dot{width:20px;height:20px;border-radius:50%;border:2px solid #C4D0DE;\r\n  flex:none;position:relative;transition:border-color .18s;}\r\n#gti .gti-dot::after{content:\"\";position:absolute;inset:3px;border-radius:50%;\r\n  background:var(--grad);transform:scale(0);transition:transform .18s;}\r\n#gti .gti-box{width:20px;height:20px;border-radius:6px;border:2px solid #C4D0DE;\r\n  flex:none;position:relative;transition:border-color .18s,background .18s;}\r\n#gti .gti-box::after{content:\"\";position:absolute;left:5px;top:1.5px;width:6px;height:11px;\r\n  border:solid #fff;border-width:0 2.5px 2.5px 0;transform:rotate(45deg) scale(0);\r\n  transition:transform .18s;}\r\n#gti .gti-choice .gti-ctxt{font-size:14.5px;font-weight:500;}\r\n#gti .gti-choice.sel{border-color:var(--accent);background:rgba(63,166,221,.06);\r\n  box-shadow:0 0 0 3px rgba(63,166,221,.10);}\r\n#gti .gti-choice.sel .gti-dot{border-color:var(--accent);}\r\n#gti .gti-choice.sel .gti-dot::after{transform:scale(1);}\r\n#gti .gti-choice.sel .gti-box{border-color:var(--accent);background:var(--grad);}\r\n#gti .gti-choice.sel .gti-box::after{transform:rotate(45deg) scale(1);}\r\n\r\n\/* ---- Review -------------------------------------------------------- *\/\r\n#gti .gti-summary{display:grid;gap:14px;}\r\n#gti .gti-sblock{border:1px solid var(--line-2);border-radius:var(--radius-in);\r\n  padding:16px 18px;background:#FCFDFE;}\r\n#gti .gti-sblock h4{font-family:'Poppins',sans-serif;font-size:13px;font-weight:600;\r\n  color:var(--primary);letter-spacing:.02em;margin-bottom:12px;display:flex;\r\n  align-items:center;gap:8px;text-transform:uppercase;}\r\n#gti .gti-srow{display:flex;justify-content:space-between;gap:16px;font-size:14px;\r\n  padding:6px 0;border-top:1px dashed var(--line);}\r\n#gti .gti-srow:first-of-type{border-top:0;}\r\n#gti .gti-srow .k{color:var(--muted);}\r\n#gti .gti-srow .v{color:var(--ink);font-weight:600;text-align:right;}\r\n#gti .gti-tags{display:flex;flex-wrap:wrap;gap:8px;}\r\n#gti .gti-tag{font-size:12.5px;font-weight:600;color:var(--primary);\r\n  background:rgba(57,54,128,.09);border:1px solid rgba(57,54,128,.15);\r\n  padding:6px 11px;border-radius:99px;}\r\n\r\n\/* ---- Plan selection (trip type + tier cards + premium) ------------ *\/\r\n#gti .gti-plancards{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-bottom:6px;}\r\n#gti .gti-plancard{position:relative;text-align:left;cursor:pointer;\r\n  border:1.5px solid var(--line);border-radius:var(--radius-in);padding:16px 16px 15px;\r\n  background:#fff;transition:border-color .18s,background .18s,box-shadow .18s;}\r\n#gti .gti-plancard:hover{border-color:#C7D6E6;background:#FBFDFF;}\r\n#gti .gti-plancard.sel{border-color:var(--accent);background:rgba(63,166,221,.06);\r\n  box-shadow:0 0 0 3px rgba(63,166,221,.10);}\r\n#gti .gti-plancard.reco::before{content:\"Recommended\";position:absolute;top:-10px;left:14px;\r\n  font-size:10.5px;font-weight:700;letter-spacing:.03em;text-transform:uppercase;color:#fff;\r\n  background:var(--accent);padding:3px 9px;border-radius:99px;}\r\n#gti .gti-plancard .tier-name{font-family:'Poppins',sans-serif;font-weight:600;font-size:15px;\r\n  color:var(--ink);margin-bottom:3px;}\r\n#gti .gti-plancard .tier-desc{font-size:12px;color:var(--muted);margin-bottom:10px;line-height:1.4;\r\n  min-height:32px;}\r\n#gti .gti-plancard .tier-price{font-family:'Poppins',sans-serif;font-weight:700;font-size:19px;\r\n  color:var(--accent);}\r\n#gti .gti-plancard .tier-price .cur{font-size:12px;font-weight:600;margin-right:2px;}\r\n#gti .gti-plancard .tier-note{font-size:11px;color:var(--muted);margin-top:2px;}\r\n#gti .gti-premiumbox{border:1.5px solid rgba(63,166,221,.35);background:rgba(63,166,221,.05);\r\n  border-radius:var(--radius-in);padding:16px 18px;margin:18px 0;}\r\n#gti .gti-premiumbox .pb-top{display:flex;justify-content:space-between;align-items:baseline;\r\n  margin-bottom:8px;}\r\n#gti .gti-premiumbox .pb-label{font-size:13px;font-weight:600;color:var(--ink);}\r\n#gti .gti-premiumbox .pb-total{font-family:'Poppins',sans-serif;font-weight:700;font-size:22px;\r\n  color:var(--accent);}\r\n#gti .gti-premiumbox .pb-rows{display:grid;gap:4px;margin-top:6px;}\r\n#gti .gti-premiumbox .pb-row{display:flex;justify-content:space-between;font-size:12.5px;\r\n  color:var(--muted);}\r\n#gti .gti-premiumbox .pb-row b{color:var(--ink);font-weight:600;}\r\n#gti .gti-plan-empty{font-size:13.5px;color:var(--muted);padding:14px 16px;border:1.5px dashed var(--line);\r\n  border-radius:var(--radius-in);background:#FBFDFF;}\r\n#gti .gti-inline-toggle{display:flex;align-items:center;gap:10px;padding:12px 14px;\r\n  border:1.5px solid var(--line);border-radius:var(--radius-in);cursor:pointer;user-select:none;\r\n  margin-top:10px;}\r\n#gti .gti-inline-toggle input{position:absolute;opacity:0;width:0;height:0;}\r\n#gti .gti-inline-toggle .gti-box{width:18px;height:18px;}\r\n#gti .gti-inline-toggle.sel{border-color:var(--accent);background:rgba(63,166,221,.06);}\r\n#gti .gti-inline-toggle .tt-txt{font-size:13.5px;font-weight:500;}\r\n#gti .gti-inline-toggle .tt-sub{font-size:11.5px;color:var(--muted);}\r\n@media(max-width:560px){\r\n  #gti .gti-plancards{grid-template-columns:1fr;}\r\n}\r\n\r\n\/* ---- Notice \/ reassurance ----------------------------------------- *\/\r\n#gti .gti-note{display:flex;gap:11px;align-items:flex-start;font-size:13px;\r\n  color:var(--muted);background:#F3F4FB;border:1px solid #E2E4F3;\r\n  border-radius:var(--radius-in);padding:13px 15px;margin-top:4px;}\r\n#gti .gti-note svg{flex:none;width:17px;height:17px;stroke:var(--primary);margin-top:1px;}\r\n\r\n\/* ---- Signature pad -------------------------------------------------- *\/\r\n#gti .gti-sigwrap{position:relative;border:1.5px solid var(--line);border-radius:var(--radius-in);\r\n  background:#fff;overflow:hidden;transition:border-color .2s,box-shadow .2s;}\r\n#gti .gti-sigwrap.focus{border-color:var(--accent);box-shadow:0 0 0 4px rgba(63,166,221,.14);}\r\n#gti .gti-sigcanvas{display:block;width:100%;height:170px;touch-action:none;cursor:crosshair;}\r\n#gti .gti-sig-placeholder{position:absolute;left:16px;bottom:12px;color:#B7C1D1;\r\n  font-size:13px;pointer-events:none;transition:opacity .15s;}\r\n#gti .gti-sig-placeholder.hide{opacity:0;}\r\n#gti .gti-sig-actions{display:flex;justify-content:flex-end;margin-top:8px;}\r\n#gti .gti-sig-actions .gti-btn{padding:8px 16px;font-size:13px;}\r\n\r\n\/* ---- Footer \/ buttons --------------------------------------------- *\/\r\n#gti .gti-foot{display:flex;justify-content:space-between;align-items:center;gap:14px;\r\n  margin-top:30px;}\r\n#gti .gti-btn{position:relative;font-size:15px;font-weight:600;border-radius:var(--radius-in);\r\n  padding:14px 26px;border:none;cursor:pointer;display:inline-flex;align-items:center;\r\n  justify-content:center;gap:9px;transition:transform .16s,box-shadow .2s,background .2s;\r\n  overflow:hidden;}\r\n#gti .gti-btn:active{transform:translateY(1px);}\r\n#gti .gti-btn:focus-visible{outline:3px solid rgba(63,166,221,.4);outline-offset:2px;}\r\n#gti .gti-primary{background:var(--grad);color:#fff;box-shadow:var(--shadow-btn);}\r\n#gti .gti-primary:hover{transform:translateY(-2px);box-shadow:0 12px 26px rgba(57,54,128,.36);}\r\n#gti .gti-ghost{background:#fff;color:var(--muted);border:1.5px solid var(--line);}\r\n#gti .gti-ghost:hover{border-color:#C7D6E6;color:var(--ink);background:#FBFDFF;}\r\n#gti .gti-btn.wide{width:100%;}\r\n#gti .gti-btn .gti-spin{width:18px;height:18px;border:2.5px solid rgba(255,255,255,.45);\r\n  border-top-color:#fff;border-radius:50%;display:none;animation:gtiSpin .7s linear infinite;}\r\n#gti .gti-ghost .gti-spin{border-color:rgba(101,117,139,.4);border-top-color:var(--muted);}\r\n#gti .gti-btn.loading .gti-spin{display:block;}\r\n#gti .gti-btn.loading .gti-btxt{opacity:.7;}\r\n#gti .gti-btn[disabled]{opacity:.6;cursor:not-allowed;}\r\n@keyframes gtiSpin{to{transform:rotate(360deg)}}\r\n\r\n\/* ---- Exit control + leave confirmation ----------------------------- *\/\r\n#gti .gti-exit{position:absolute;top:14px;right:14px;width:34px;height:34px;border-radius:50%;\r\n  border:1.5px solid var(--line);background:#fff;color:var(--muted);display:flex;align-items:center;\r\n  justify-content:center;cursor:pointer;transition:border-color .18s,color .18s,background .18s,transform .3s;z-index:6;}\r\n#gti .gti-exit:hover{border-color:#C7D6E6;color:var(--ink);background:#FBFDFF;transform:rotate(90deg);}\r\n#gti .gti-exit:focus-visible{outline:3px solid rgba(63,166,221,.4);outline-offset:2px;}\r\n#gti .gti-exit svg{width:15px;height:15px;stroke:currentColor;stroke-width:2.2;fill:none;stroke-linecap:round;stroke-linejoin:round;}\r\n#gti .gti-confirm{position:absolute;inset:0;background:rgba(248,249,251,.88);backdrop-filter:blur(3px);\r\n  -webkit-backdrop-filter:blur(3px);display:flex;align-items:center;justify-content:center;\r\n  z-index:12;padding:24px;animation:gtiFade .2s ease;}\r\n#gti .gti-confirm[hidden]{display:none;}\r\n@keyframes gtiFade{from{opacity:0}to{opacity:1}}\r\n#gti .gti-confirm-box{background:#fff;border:1px solid var(--line-2);border-radius:16px;\r\n  box-shadow:var(--shadow-m);padding:28px 26px;max-width:360px;width:100%;text-align:center;\r\n  animation:gtiIn .28s cubic-bezier(.22,.61,.36,1);}\r\n#gti .gti-confirm-ic{width:52px;height:52px;border-radius:50%;background:rgba(63,166,221,.10);\r\n  display:flex;align-items:center;justify-content:center;margin:0 auto 14px;}\r\n#gti .gti-confirm-ic svg{width:24px;height:24px;stroke:var(--primary);fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;}\r\n#gti .gti-confirm-box h3{font-family:'Poppins',sans-serif;font-size:18px;font-weight:600;color:var(--ink);margin-bottom:6px;}\r\n#gti .gti-confirm-box p{color:var(--muted);font-size:14px;margin-bottom:20px;}\r\n#gti .gti-confirm-actions{display:flex;gap:10px;}\r\n#gti .gti-confirm-actions .gti-btn{flex:1;padding:12px 16px;}\r\n\r\n\/* ---- Welcome (photo + content split hero) --------------------------- *\/\r\n#gti .gti-card.gti-card--hero::before{display:none;}\r\n#gti .gti-hero{display:flex;align-items:stretch;gap:32px;min-height:360px;}\r\n#gti .gti-hero-media{flex:1 1 44%;border-radius:28px;overflow:hidden;background:#DCE3EC;\r\n  box-shadow:0 20px 45px rgba(57,54,128,.16);position:relative;}\r\n#gti .gti-hero-media img{width:100%;height:100%;min-height:360px;object-fit:cover;display:block;}\r\n#gti .gti-hero-content{flex:1 1 56%;display:flex;flex-direction:column;justify-content:center;\r\n  padding:16px 12px 16px 4px;}\r\n#gti .gti-hero-content h1{font-family:'Poppins',sans-serif;font-weight:700;\r\n  font-size:clamp(26px,3.6vw,36px);line-height:1.2;letter-spacing:-.02em;\r\n  color:var(--ink);margin-bottom:16px;}\r\n#gti .gti-hero-content h1 .hl{color:var(--primary);}\r\n#gti .gti-hero-content p{color:var(--muted);font-size:15.5px;line-height:1.65;\r\n  max-width:42ch;margin-bottom:26px;}\r\n#gti .gti-hero-content .gti-btn{align-self:flex-start;padding:13px 24px;font-size:14.5px;}\r\n@media(max-width:680px){\r\n  #gti .gti-hero{flex-direction:column;min-height:0;}\r\n  #gti .gti-hero-media{flex:none;width:100%;aspect-ratio:16\/11;}\r\n  #gti .gti-hero-media img{min-height:0;}\r\n  #gti .gti-hero-content{padding:22px 4px 4px;}\r\n}\r\n\r\n\/* ---- Success ------------------------------------------------------- *\/\r\n#gti .gti-success{text-align:center;padding:18px 6px;}\r\n#gti .gti-scheck{width:104px;height:104px;margin:6px auto 26px;position:relative;}\r\n#gti .gti-scheck .disc{position:absolute;inset:0;border-radius:50%;background:var(--grad);\r\n  box-shadow:0 18px 40px rgba(57,54,128,.34);animation:gtiPop .55s cubic-bezier(.2,.8,.3,1.4);}\r\n#gti .gti-scheck svg{position:absolute;inset:0;margin:auto;width:52px;height:52px;\r\n  stroke:#fff;fill:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;}\r\n#gti .gti-scheck svg path{stroke-dasharray:48;stroke-dashoffset:48;\r\n  animation:gtiDraw .5s .35s forwards cubic-bezier(.65,0,.35,1);}\r\n@keyframes gtiPop{0%{transform:scale(0)}70%{transform:scale(1.06)}100%{transform:scale(1)}}\r\n@keyframes gtiDraw{to{stroke-dashoffset:0}}\r\n#gti .gti-success h1{font-family:'Poppins',sans-serif;font-weight:700;font-size:29px;\r\n  margin-bottom:14px;color:var(--ink);}\r\n#gti .gti-success p{color:var(--muted);font-size:15.5px;max-width:44ch;margin:0 auto 12px;}\r\n#gti .gti-success .gti-btn{margin-top:22px;padding:15px 32px;}\r\n#gti .gti-success .gti-paynote{max-width:44ch;margin:16px auto 0;text-align:left;}\r\n\r\n\/* ---- Responsive ---------------------------------------------------- *\/\r\n@media(max-width:560px){\r\n  #gti{padding:16px 10px 36px;}\r\n  #gti .gti-card{padding:26px 20px;border-radius:14px;}\r\n  #gti .gti-grid-2{grid-template-columns:1fr;}\r\n  #gti .gti-choices.row,#gti .gti-choices.row3{grid-template-columns:1fr;}\r\n  #gti h2.gti-h{font-size:22px;}\r\n  #gti .gti-foot .gti-btn{padding:13px 18px;font-size:14.5px;}\r\n}\r\n@media(prefers-reduced-motion:reduce){\r\n  #gti *{animation:none!important;transition:none!important;}\r\n}\r\n<\/style>\r\n\r\n<div class=\"gti-shell\">\r\n\r\n  <!-- Progress -->\r\n  <div class=\"gti-progress\" id=\"gtiProgress\">\r\n    <div class=\"gti-progress-top\">\r\n      <span class=\"gti-step-label\">Step <b id=\"gtiStepNo\">1<\/b> of 11<\/span>\r\n      <span class=\"gti-step-name\" id=\"gtiStepName\">Welcome<\/span>\r\n    <\/div>\r\n    <div class=\"gti-track\"><div class=\"gti-fill\" id=\"gtiFill\"><\/div><\/div>\r\n  <\/div>\r\n\r\n  <div class=\"gti-card\">\r\n\r\n    <!-- ===================== STEP 1 \u2014 WELCOME ===================== -->\r\n    <section class=\"gti-step active\" data-step=\"1\">\r\n      <div class=\"gti-hero\">\r\n        <div class=\"gti-hero-media\">\r\n          <!-- REPLACE: swap for your own photography, uploaded to the WP media library -->\r\n          <img decoding=\"async\" src=\"https:\/\/geminia.co.ke\/dev\/wp-content\/uploads\/2026\/08\/Travel-Insurance.jpg\" alt=\"Traveller with luggage at the airport\" loading=\"lazy\">\r\n        <\/div>\r\n        <div class=\"gti-hero-content\">\r\n          <h1>Travel With <span class=\"hl\">Confidence<\/span><\/h1>\r\n          <p>Answer a few simple questions and we'll prepare your Travel Insurance proposal for a Geminia advisor to quote \u2014 before you set off.<\/p>\r\n          <button class=\"gti-btn gti-primary\" data-cta=\"start\">\r\n            <span class=\"gti-spin\"><\/span><span class=\"gti-btxt\">Get Started \u2192<\/span>\r\n          <\/button>\r\n        <\/div>\r\n      <\/div>\r\n    <\/section>\r\n\r\n    <!-- ===================== STEP 2 \u2014 PERSON TO BE INSURED ===================== -->\r\n    <section class=\"gti-step\" data-step=\"2\">\r\n      <span class=\"gti-eyebrow\">About you<\/span>\r\n      <h2 class=\"gti-h\">Tell us about the traveller<\/h2>\r\n      <p class=\"gti-sub\">This is Part 1 of the official Geminia Travel Insurance proposal form.<\/p>\r\n\r\n      <div class=\"gti-field\">\r\n        <label class=\"gti-lab\">Title<\/label>\r\n        <div class=\"gti-choices row3\" data-radio=\"title\">\r\n          <label class=\"gti-choice\"><input type=\"radio\" name=\"title\" value=\"Mr.\"><span class=\"gti-dot\"><\/span><span class=\"gti-ctxt\">Mr.<\/span><\/label>\r\n          <label class=\"gti-choice\"><input type=\"radio\" name=\"title\" value=\"Mrs.\"><span class=\"gti-dot\"><\/span><span class=\"gti-ctxt\">Mrs.<\/span><\/label>\r\n          <label class=\"gti-choice\"><input type=\"radio\" name=\"title\" value=\"Miss\"><span class=\"gti-dot\"><\/span><span class=\"gti-ctxt\">Miss<\/span><\/label>\r\n        <\/div>\r\n      <\/div>\r\n\r\n      <div class=\"gti-field\">\r\n        <label class=\"gti-lab\" for=\"fullName\">Full name <span class=\"gti-req\">*<\/span><\/label>\r\n        <input class=\"gti-input\" id=\"fullName\" type=\"text\" placeholder=\"e.g. Jane Wanjiru\" autocomplete=\"name\">\r\n        <div class=\"gti-err\" data-err=\"fullName\">Please enter your full name.<\/div>\r\n      <\/div>\r\n\r\n      <div class=\"gti-grid-2\">\r\n        <div class=\"gti-field\">\r\n          <label class=\"gti-lab\" for=\"mobile\">Mobile number <span class=\"gti-req\">*<\/span><\/label>\r\n          <input class=\"gti-input\" id=\"mobile\" type=\"tel\" placeholder=\"07XX XXX XXX\" autocomplete=\"tel\" inputmode=\"tel\">\r\n          <div class=\"gti-err\" data-err=\"mobile\">Enter a valid Kenyan phone number.<\/div>\r\n        <\/div>\r\n        <div class=\"gti-field\">\r\n          <label class=\"gti-lab\" for=\"dob\">Date of birth <span class=\"gti-req\">*<\/span><\/label>\r\n          <input class=\"gti-input\" id=\"dob\" type=\"date\">\r\n          <div class=\"gti-err\" data-err=\"dob\">Please enter your date of birth.<\/div>\r\n        <\/div>\r\n      <\/div>\r\n\r\n      <div class=\"gti-grid-2\">\r\n        <div class=\"gti-field\">\r\n          <label class=\"gti-lab\" for=\"passportNo\">Passport No <span class=\"gti-req\">*<\/span><\/label>\r\n          <input class=\"gti-input\" id=\"passportNo\" type=\"text\" placeholder=\"e.g. A1234567\">\r\n          <div class=\"gti-err\" data-err=\"passportNo\">Please enter your passport number.<\/div>\r\n        <\/div>\r\n        <div class=\"gti-field\">\r\n          <label class=\"gti-lab\" for=\"citizenship\">Citizenship <span style=\"font-weight:400;color:var(--muted);\">(optional)<\/span><\/label>\r\n          <input class=\"gti-input\" id=\"citizenship\" type=\"text\" placeholder=\"e.g. Kenyan\">\r\n        <\/div>\r\n      <\/div>\r\n\r\n      <div class=\"gti-grid-2\">\r\n        <div class=\"gti-field\">\r\n          <label class=\"gti-lab\" for=\"postalAddress\">Postal address <span style=\"font-weight:400;color:var(--muted);\">(optional)<\/span><\/label>\r\n          <input class=\"gti-input\" id=\"postalAddress\" type=\"text\" placeholder=\"e.g. P.O. Box 1234-00100\">\r\n        <\/div>\r\n        <div class=\"gti-field\">\r\n          <label class=\"gti-lab\" for=\"postalCode\">Postal code <span style=\"font-weight:400;color:var(--muted);\">(optional)<\/span><\/label>\r\n          <input class=\"gti-input\" id=\"postalCode\" type=\"text\" placeholder=\"e.g. 00100\">\r\n        <\/div>\r\n      <\/div>\r\n\r\n      <div class=\"gti-grid-2\">\r\n        <div class=\"gti-field\">\r\n          <label class=\"gti-lab\" for=\"town\">Town <span style=\"font-weight:400;color:var(--muted);\">(optional)<\/span><\/label>\r\n          <input class=\"gti-input\" id=\"town\" type=\"text\" placeholder=\"e.g. Nairobi\">\r\n        <\/div>\r\n        <div class=\"gti-field\">\r\n          <label class=\"gti-lab\" for=\"country\">Country <span style=\"font-weight:400;color:var(--muted);\">(optional)<\/span><\/label>\r\n          <input class=\"gti-input\" id=\"country\" type=\"text\" placeholder=\"e.g. Kenya\">\r\n        <\/div>\r\n      <\/div>\r\n\r\n      <div class=\"gti-field\">\r\n        <label class=\"gti-lab\" for=\"occupation\">Occupation <span class=\"gti-req\">*<\/span><\/label>\r\n        <input class=\"gti-input\" id=\"occupation\" type=\"text\" placeholder=\"e.g. Accountant, Student\">\r\n        <div class=\"gti-err\" data-err=\"occupation\">Please enter your occupation.<\/div>\r\n      <\/div>\r\n    <\/section>\r\n\r\n    <!-- ===================== STEP 3 \u2014 TRAVELLING DEPENDANTS ===================== -->\r\n    <section class=\"gti-step\" data-step=\"3\">\r\n      <span class=\"gti-eyebrow\">Dependants<\/span>\r\n      <h2 class=\"gti-h\">Any travelling dependants?<\/h2>\r\n      <p class=\"gti-sub\">List up to 4 people travelling with you. If there are more, your advisor will collect the rest separately.<\/p>\r\n\r\n      <div class=\"gti-field\">\r\n        <label class=\"gti-lab\">Are you travelling with any dependants? <span class=\"gti-req\">*<\/span><\/label>\r\n        <div class=\"gti-choices row\" data-radio=\"hasDependants\">\r\n          <label class=\"gti-choice\"><input type=\"radio\" name=\"hasDependants\" value=\"No\"><span class=\"gti-dot\"><\/span><span class=\"gti-ctxt\">No, travelling alone<\/span><\/label>\r\n          <label class=\"gti-choice\"><input type=\"radio\" name=\"hasDependants\" value=\"Yes\"><span class=\"gti-dot\"><\/span><span class=\"gti-ctxt\">Yes<\/span><\/label>\r\n        <\/div>\r\n        <div class=\"gti-err\" data-err=\"hasDependants\">Please let us know.<\/div>\r\n      <\/div>\r\n\r\n      <div id=\"gtiDependantsWrap\" style=\"display:none;\">\r\n        <div class=\"gti-sec\">Dependant 1<\/div>\r\n        <div class=\"gti-grid-2\">\r\n          <div class=\"gti-field\">\r\n            <label class=\"gti-lab\" for=\"dep1Name\">Full name <span class=\"gti-req\">*<\/span><\/label>\r\n            <input class=\"gti-input\" id=\"dep1Name\" type=\"text\" placeholder=\"e.g. John Wanjiru\">\r\n            <div class=\"gti-err\" data-err=\"dep1Name\">Please enter a name.<\/div>\r\n          <\/div>\r\n          <div class=\"gti-field\">\r\n            <label class=\"gti-lab\" for=\"dep1Passport\">Passport number <span class=\"gti-req\">*<\/span><\/label>\r\n            <input class=\"gti-input\" id=\"dep1Passport\" type=\"text\" placeholder=\"e.g. A7654321\">\r\n            <div class=\"gti-err\" data-err=\"dep1Passport\">Please enter a passport number.<\/div>\r\n          <\/div>\r\n        <\/div>\r\n        <div class=\"gti-grid-2\">\r\n          <div class=\"gti-field\">\r\n            <label class=\"gti-lab\" for=\"dep1Dob\">Date of birth<\/label>\r\n            <input class=\"gti-input\" id=\"dep1Dob\" type=\"date\">\r\n          <\/div>\r\n          <div class=\"gti-field\">\r\n            <label class=\"gti-lab\" for=\"dep1Rel\">Relationship with the insured<\/label>\r\n            <input class=\"gti-input\" id=\"dep1Rel\" type=\"text\" placeholder=\"e.g. Spouse, Child\">\r\n          <\/div>\r\n        <\/div>\r\n\r\n        <div class=\"gti-sec\">Dependant 2 <span style=\"font-weight:400;color:var(--muted);text-transform:none;letter-spacing:0;\">(optional)<\/span><\/div>\r\n        <div class=\"gti-grid-2\">\r\n          <div class=\"gti-field\"><label class=\"gti-lab\" for=\"dep2Name\">Full name<\/label><input class=\"gti-input\" id=\"dep2Name\" type=\"text\"><\/div>\r\n          <div class=\"gti-field\"><label class=\"gti-lab\" for=\"dep2Passport\">Passport number<\/label><input class=\"gti-input\" id=\"dep2Passport\" type=\"text\"><\/div>\r\n        <\/div>\r\n        <div class=\"gti-grid-2\">\r\n          <div class=\"gti-field\"><label class=\"gti-lab\" for=\"dep2Dob\">Date of birth<\/label><input class=\"gti-input\" id=\"dep2Dob\" type=\"date\"><\/div>\r\n          <div class=\"gti-field\"><label class=\"gti-lab\" for=\"dep2Rel\">Relationship with the insured<\/label><input class=\"gti-input\" id=\"dep2Rel\" type=\"text\"><\/div>\r\n        <\/div>\r\n\r\n        <div class=\"gti-sec\">Dependant 3 <span style=\"font-weight:400;color:var(--muted);text-transform:none;letter-spacing:0;\">(optional)<\/span><\/div>\r\n        <div class=\"gti-grid-2\">\r\n          <div class=\"gti-field\"><label class=\"gti-lab\" for=\"dep3Name\">Full name<\/label><input class=\"gti-input\" id=\"dep3Name\" type=\"text\"><\/div>\r\n          <div class=\"gti-field\"><label class=\"gti-lab\" for=\"dep3Passport\">Passport number<\/label><input class=\"gti-input\" id=\"dep3Passport\" type=\"text\"><\/div>\r\n        <\/div>\r\n        <div class=\"gti-grid-2\">\r\n          <div class=\"gti-field\"><label class=\"gti-lab\" for=\"dep3Dob\">Date of birth<\/label><input class=\"gti-input\" id=\"dep3Dob\" type=\"date\"><\/div>\r\n          <div class=\"gti-field\"><label class=\"gti-lab\" for=\"dep3Rel\">Relationship with the insured<\/label><input class=\"gti-input\" id=\"dep3Rel\" type=\"text\"><\/div>\r\n        <\/div>\r\n\r\n        <div class=\"gti-sec\">Dependant 4 <span style=\"font-weight:400;color:var(--muted);text-transform:none;letter-spacing:0;\">(optional)<\/span><\/div>\r\n        <div class=\"gti-grid-2\">\r\n          <div class=\"gti-field\"><label class=\"gti-lab\" for=\"dep4Name\">Full name<\/label><input class=\"gti-input\" id=\"dep4Name\" type=\"text\"><\/div>\r\n          <div class=\"gti-field\"><label class=\"gti-lab\" for=\"dep4Passport\">Passport number<\/label><input class=\"gti-input\" id=\"dep4Passport\" type=\"text\"><\/div>\r\n        <\/div>\r\n        <div class=\"gti-grid-2\">\r\n          <div class=\"gti-field\"><label class=\"gti-lab\" for=\"dep4Dob\">Date of birth<\/label><input class=\"gti-input\" id=\"dep4Dob\" type=\"date\"><\/div>\r\n          <div class=\"gti-field\"><label class=\"gti-lab\" for=\"dep4Rel\">Relationship with the insured<\/label><input class=\"gti-input\" id=\"dep4Rel\" type=\"text\"><\/div>\r\n        <\/div>\r\n\r\n        <div class=\"gti-hint\">More than 4 dependants? Just list the first 4 here \u2014 your advisor will collect the rest.<\/div>\r\n      <\/div>\r\n    <\/section>\r\n\r\n    <!-- ===================== STEP 4 \u2014 CONTACT & JOURNEY ===================== -->\r\n    <section class=\"gti-step\" data-step=\"4\">\r\n      <span class=\"gti-eyebrow\">Your journey<\/span>\r\n      <h2 class=\"gti-h\">Contact details &amp; journey<\/h2>\r\n      <p class=\"gti-sub\">Parts 2 &amp; 3 of the form.<\/p>\r\n\r\n      <div class=\"gti-grid-2\">\r\n        <div class=\"gti-field\">\r\n          <label class=\"gti-lab\" for=\"permanentAddress\">Permanent address <span style=\"font-weight:400;color:var(--muted);\">(optional)<\/span><\/label>\r\n          <input class=\"gti-input\" id=\"permanentAddress\" type=\"text\" placeholder=\"e.g. Kilimani, Nairobi\">\r\n        <\/div>\r\n        <div class=\"gti-field\">\r\n          <label class=\"gti-lab\" for=\"telephone\">Telephone number <span style=\"font-weight:400;color:var(--muted);\">(optional)<\/span><\/label>\r\n          <input class=\"gti-input\" id=\"telephone\" type=\"tel\" placeholder=\"07XX XXX XXX\">\r\n        <\/div>\r\n      <\/div>\r\n\r\n      <div class=\"gti-grid-2\">\r\n        <div class=\"gti-field\">\r\n          <label class=\"gti-lab\" for=\"destination\">Destination \u2014 country of visit <span class=\"gti-req\">*<\/span><\/label>\r\n          <input class=\"gti-input\" id=\"destination\" type=\"text\" placeholder=\"e.g. United Kingdom\">\r\n          <div class=\"gti-err\" data-err=\"destination\">Please enter your destination.<\/div>\r\n        <\/div>\r\n        <div class=\"gti-field\">\r\n          <label class=\"gti-lab\" for=\"airline\">Travel airline company <span style=\"font-weight:400;color:var(--muted);\">(optional)<\/span><\/label>\r\n          <input class=\"gti-input\" id=\"airline\" type=\"text\" placeholder=\"e.g. Kenya Airways\">\r\n        <\/div>\r\n      <\/div>\r\n    <\/section>\r\n\r\n    <!-- ===================== STEP 5 \u2014 PURPOSE & DATES ===================== -->\r\n    <section class=\"gti-step\" data-step=\"5\">\r\n      <span class=\"gti-eyebrow\">Purpose &amp; dates<\/span>\r\n      <h2 class=\"gti-h\">Why are you travelling, and when?<\/h2>\r\n      <p class=\"gti-sub\">Part 4 &amp; 5 of the form.<\/p>\r\n\r\n      <div class=\"gti-field\">\r\n        <label class=\"gti-lab\">Purpose of journey <span style=\"font-weight:400;color:var(--muted);\">(tick as appropriate)<\/span><\/label>\r\n        <div class=\"gti-choices row\" data-check=\"purposes\">\r\n          <label class=\"gti-choice\"><input type=\"checkbox\" value=\"Holiday\/Leisure\"><span class=\"gti-box\"><\/span><span class=\"gti-ctxt\">Holiday\/Leisure<\/span><\/label>\r\n          <label class=\"gti-choice\"><input type=\"checkbox\" value=\"Conference\/Seminar\"><span class=\"gti-box\"><\/span><span class=\"gti-ctxt\">Conference\/Seminar<\/span><\/label>\r\n          <label class=\"gti-choice\"><input type=\"checkbox\" value=\"Exhibitions\/Trade Fair\"><span class=\"gti-box\"><\/span><span class=\"gti-ctxt\">Exhibitions\/Trade Fair<\/span><\/label>\r\n          <label class=\"gti-choice\"><input type=\"checkbox\" value=\"Study\"><span class=\"gti-box\"><\/span><span class=\"gti-ctxt\">Study<\/span><\/label>\r\n          <label class=\"gti-choice\"><input type=\"checkbox\" value=\"Training\"><span class=\"gti-box\"><\/span><span class=\"gti-ctxt\">Training<\/span><\/label>\r\n          <label class=\"gti-choice\"><input type=\"checkbox\" value=\"Business\"><span class=\"gti-box\"><\/span><span class=\"gti-ctxt\">Business<\/span><\/label>\r\n          <label class=\"gti-choice\"><input type=\"checkbox\" value=\"Pilgrimage\"><span class=\"gti-box\"><\/span><span class=\"gti-ctxt\">Pilgrimage<\/span><\/label>\r\n        <\/div>\r\n        <div class=\"gti-err\" data-err=\"purposes\">Please select at least one purpose.<\/div>\r\n      <\/div>\r\n      <div class=\"gti-field\">\r\n        <label class=\"gti-lab\" for=\"purposeOther\">Others, please advise <span style=\"font-weight:400;color:var(--muted);\">(optional)<\/span><\/label>\r\n        <input class=\"gti-input\" id=\"purposeOther\" type=\"text\" placeholder=\"Briefly describe\">\r\n      <\/div>\r\n\r\n      <div class=\"gti-grid-2\">\r\n        <div class=\"gti-field\">\r\n          <label class=\"gti-lab\" for=\"departureDate\">Departure date <span class=\"gti-req\">*<\/span><\/label>\r\n          <input class=\"gti-input\" id=\"departureDate\" type=\"date\">\r\n          <div class=\"gti-err\" data-err=\"departureDate\">Please enter a departure date.<\/div>\r\n        <\/div>\r\n        <div class=\"gti-field\">\r\n          <label class=\"gti-lab\" for=\"returnDate\">Return date <span class=\"gti-req\">*<\/span><\/label>\r\n          <input class=\"gti-input\" id=\"returnDate\" type=\"date\">\r\n          <div class=\"gti-err\" data-err=\"returnDate\">Please enter a return date.<\/div>\r\n        <\/div>\r\n      <\/div>\r\n    <\/section>\r\n\r\n    <!-- ===================== STEP 6 \u2014 CHOOSE YOUR PLAN ===================== -->\r\n    <section class=\"gti-step\" data-step=\"6\">\r\n      <span class=\"gti-eyebrow\">Your plan<\/span>\r\n      <h2 class=\"gti-h\">Choose your travel insurance plan<\/h2>\r\n      <p class=\"gti-sub\">Based on what you've told us, here's an indicative premium from Geminia's current rate card. Your advisor confirms the final figure.<\/p>\r\n\r\n      <div class=\"gti-field\">\r\n        <label class=\"gti-lab\">Type of cover <span style=\"font-weight:400;color:var(--muted);\">(we've pre-selected one based on your answers \u2014 change it if it's wrong)<\/span><\/label>\r\n        <div class=\"gti-choices\" data-radio=\"tripType\">\r\n          <label class=\"gti-choice\"><input type=\"radio\" name=\"tripType\" value=\"travelprotect\"><span class=\"gti-dot\"><\/span><span class=\"gti-ctxt\">Travelling abroad \u2014 leisure, business, conference or training<\/span><\/label>\r\n          <label class=\"gti-choice\"><input type=\"radio\" name=\"tripType\" value=\"student\"><span class=\"gti-dot\"><\/span><span class=\"gti-ctxt\">Studying abroad \u2014 student cover<\/span><\/label>\r\n          <label class=\"gti-choice\"><input type=\"radio\" name=\"tripType\" value=\"pilgrimage\"><span class=\"gti-dot\"><\/span><span class=\"gti-ctxt\">Pilgrimage<\/span><\/label>\r\n          <label class=\"gti-choice\"><input type=\"radio\" name=\"tripType\" value=\"domestic\"><span class=\"gti-dot\"><\/span><span class=\"gti-ctxt\">Travelling within Kenya (100km+ from home)<\/span><\/label>\r\n          <label class=\"gti-choice\"><input type=\"radio\" name=\"tripType\" value=\"inbound\"><span class=\"gti-dot\"><\/span><span class=\"gti-ctxt\">Visiting Kenya from abroad<\/span><\/label>\r\n          <label class=\"gti-choice\"><input type=\"radio\" name=\"tripType\" value=\"corporate\"><span class=\"gti-dot\"><\/span><span class=\"gti-ctxt\">Staff \/ corporate travel policy<\/span><\/label>\r\n        <\/div>\r\n        <div class=\"gti-err\" data-err=\"tripType\">Please choose a type of cover.<\/div>\r\n      <\/div>\r\n\r\n      <div id=\"gtiCorpWrap\" style=\"display:none;\">\r\n        <div class=\"gti-grid-2\">\r\n          <div class=\"gti-field\">\r\n            <label class=\"gti-lab\" for=\"corpEmployees\">Employees to cover <span class=\"gti-req\">*<\/span><\/label>\r\n            <input class=\"gti-input\" id=\"corpEmployees\" type=\"number\" min=\"1\" placeholder=\"e.g. 25\">\r\n            <div class=\"gti-err\" data-err=\"corpEmployees\">Please enter the number of employees.<\/div>\r\n          <\/div>\r\n          <div class=\"gti-field\">\r\n            <label class=\"gti-lab\" for=\"corpDays\">Total travel man-days needed per year <span class=\"gti-req\">*<\/span><\/label>\r\n            <input class=\"gti-input\" id=\"corpDays\" type=\"number\" min=\"1\" placeholder=\"e.g. 600\">\r\n            <div class=\"gti-err\" data-err=\"corpDays\">Please enter estimated man-days per year.<\/div>\r\n          <\/div>\r\n        <\/div>\r\n        <div class=\"gti-hint\">Corporate policies are priced on total travel man-days across the year for the whole team, not per single trip.<\/div>\r\n      <\/div>\r\n\r\n      <div id=\"gtiPlanTierWrap\">\r\n        <div class=\"gti-field\">\r\n          <label class=\"gti-lab\">Select a plan<\/label>\r\n          <div class=\"gti-plancards\" id=\"gtiPlanCards\"><!-- injected --><\/div>\r\n          <div class=\"gti-err\" data-err=\"planTier\">Please choose a plan.<\/div>\r\n          <div class=\"gti-hint\" id=\"gtiTripHint\" style=\"display:none;\"><\/div>\r\n        <\/div>\r\n\r\n        <div id=\"gtiWinterWrap\" style=\"display:none;\">\r\n          <label class=\"gti-inline-toggle\" id=\"gtiWinterToggle\">\r\n            <input type=\"checkbox\" id=\"gtiWinterSports\">\r\n            <span class=\"gti-box\"><\/span>\r\n            <span>\r\n              <span class=\"tt-txt\">Add winter sports cover<\/span><br>\r\n              <span class=\"tt-sub\">+100% on the premium for this plan<\/span>\r\n            <\/span>\r\n          <\/label>\r\n        <\/div>\r\n\r\n        <div class=\"gti-premiumbox\" id=\"gtiPremiumBox\" style=\"display:none;\">\r\n          <div class=\"pb-top\">\r\n            <span class=\"pb-label\" id=\"gtiPremiumLabel\">Estimated total premium<\/span>\r\n            <span class=\"pb-total\" id=\"gtiPremiumTotal\">KES 0<\/span>\r\n          <\/div>\r\n          <div class=\"pb-rows\" id=\"gtiPremiumRows\"><\/div>\r\n        <\/div>\r\n\r\n        <div class=\"gti-plan-empty\" id=\"gtiPlanEmpty\" style=\"display:none;\"><\/div>\r\n      <\/div>\r\n\r\n      <div class=\"gti-note\">\r\n        <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><circle cx=\"12\" cy=\"12\" r=\"9\"\/><path d=\"M12 8v5\"\/><path d=\"M12 16h.01\"\/><\/svg>\r\n        <span>This is an indicative premium from Geminia's published rate card \u2014 not a binding quote. Ages 66+ and trips outside the listed bands need your advisor's confirmation.<\/span>\r\n      <\/div>\r\n    <\/section>\r\n\r\n    <!-- ===================== STEP 7 \u2014 EMERGENCY CONTACTS ===================== -->\r\n    <section class=\"gti-step\" data-step=\"7\">\r\n      <span class=\"gti-eyebrow\">In case of emergency<\/span>\r\n      <h2 class=\"gti-h\">Emergency contacts<\/h2>\r\n      <p class=\"gti-sub\">Part 6 of the form.<\/p>\r\n\r\n      <div class=\"gti-sec\">Local contact (Kenya)<\/div>\r\n      <div class=\"gti-grid-2\">\r\n        <div class=\"gti-field\">\r\n          <label class=\"gti-lab\" for=\"localName\">Name <span class=\"gti-req\">*<\/span><\/label>\r\n          <input class=\"gti-input\" id=\"localName\" type=\"text\" placeholder=\"e.g. Mary Wanjiru\">\r\n          <div class=\"gti-err\" data-err=\"localName\">Please enter a name.<\/div>\r\n        <\/div>\r\n        <div class=\"gti-field\">\r\n          <label class=\"gti-lab\" for=\"localContact\">Contact number <span class=\"gti-req\">*<\/span><\/label>\r\n          <input class=\"gti-input\" id=\"localContact\" type=\"tel\" placeholder=\"07XX XXX XXX\">\r\n          <div class=\"gti-err\" data-err=\"localContact\">Please enter a contact number.<\/div>\r\n        <\/div>\r\n      <\/div>\r\n\r\n      <div class=\"gti-sec\">Contact at country of visit <span style=\"font-weight:400;color:var(--muted);text-transform:none;letter-spacing:0;\">(optional, if arranged)<\/span><\/div>\r\n      <div class=\"gti-grid-2\">\r\n        <div class=\"gti-field\">\r\n          <label class=\"gti-lab\" for=\"visitName\">Name<\/label>\r\n          <input class=\"gti-input\" id=\"visitName\" type=\"text\" placeholder=\"e.g. Hotel or host name\">\r\n        <\/div>\r\n        <div class=\"gti-field\">\r\n          <label class=\"gti-lab\" for=\"visitContact\">Contact number<\/label>\r\n          <input class=\"gti-input\" id=\"visitContact\" type=\"tel\" placeholder=\"+XX XXX XXX XXX\">\r\n        <\/div>\r\n      <\/div>\r\n    <\/section>\r\n\r\n    <!-- ===================== STEP 8 \u2014 MEDICAL ===================== -->\r\n    <section class=\"gti-step\" data-step=\"8\">\r\n      <span class=\"gti-eyebrow\">Medical<\/span>\r\n      <h2 class=\"gti-h\">Medical information<\/h2>\r\n      <p class=\"gti-sub\">Part 7 of the form. Benefits may not be payable if material facts aren't fully disclosed \u2014 if in doubt, please disclose.<\/p>\r\n\r\n      <div class=\"gti-field\">\r\n        <label class=\"gti-lab\">In the last two years, have you or any travelling dependant taken medication, had treatment, or sought medical advice for any condition? <span class=\"gti-req\">*<\/span><\/label>\r\n        <div class=\"gti-choices row\" data-radio=\"priorCondition\">\r\n          <label class=\"gti-choice\"><input type=\"radio\" name=\"priorCondition\" value=\"No\"><span class=\"gti-dot\"><\/span><span class=\"gti-ctxt\">No<\/span><\/label>\r\n          <label class=\"gti-choice\"><input type=\"radio\" name=\"priorCondition\" value=\"Yes\"><span class=\"gti-dot\"><\/span><span class=\"gti-ctxt\">Yes<\/span><\/label>\r\n        <\/div>\r\n        <div class=\"gti-err\" data-err=\"priorCondition\">Please let us know.<\/div>\r\n      <\/div>\r\n      <div class=\"gti-field\" id=\"gtiConditionWrap\" style=\"display:none;\">\r\n        <label class=\"gti-lab\" for=\"conditionDetail\">Please give details<\/label>\r\n        <textarea class=\"gti-area\" id=\"conditionDetail\" placeholder=\"Briefly describe the condition, medication or treatment\"><\/textarea>\r\n      <\/div>\r\n\r\n      <div class=\"gti-sec\">Regular doctor <span style=\"font-weight:400;color:var(--muted);text-transform:none;letter-spacing:0;\">(or the last doctor you saw, if you don't have a regular one)<\/span><\/div>\r\n      <div class=\"gti-grid-2\">\r\n        <div class=\"gti-field\">\r\n          <label class=\"gti-lab\" for=\"doctorName\">Name <span style=\"font-weight:400;color:var(--muted);\">(optional)<\/span><\/label>\r\n          <input class=\"gti-input\" id=\"doctorName\" type=\"text\" placeholder=\"e.g. Dr. Otieno\">\r\n        <\/div>\r\n        <div class=\"gti-field\">\r\n          <label class=\"gti-lab\" for=\"doctorPhone\">Telephone number <span style=\"font-weight:400;color:var(--muted);\">(optional)<\/span><\/label>\r\n          <input class=\"gti-input\" id=\"doctorPhone\" type=\"tel\" placeholder=\"07XX XXX XXX\">\r\n        <\/div>\r\n      <\/div>\r\n      <div class=\"gti-field\">\r\n        <label class=\"gti-lab\" for=\"doctorAddress\">Address <span style=\"font-weight:400;color:var(--muted);\">(optional)<\/span><\/label>\r\n        <input class=\"gti-input\" id=\"doctorAddress\" type=\"text\" placeholder=\"e.g. Clinic name, town\">\r\n      <\/div>\r\n    <\/section>\r\n\r\n    <!-- ===================== STEP 9 \u2014 INSURANCE HISTORY ===================== -->\r\n    <section class=\"gti-step\" data-step=\"9\">\r\n      <span class=\"gti-eyebrow\">Quick check<\/span>\r\n      <h2 class=\"gti-h\">Insurance history<\/h2>\r\n      <p class=\"gti-sub\">Part 8 of the form.<\/p>\r\n\r\n      <div class=\"gti-field\">\r\n        <label class=\"gti-lab\">Have you or any travelling dependant made a claim, been refused cover, or had an insurer decline or impose special conditions in respect of Life, Accident, Sickness, Hospital Expenses or Travel Insurance in the last 5 years? <span class=\"gti-req\">*<\/span><\/label>\r\n        <div class=\"gti-choices row\" data-radio=\"priorClaim\">\r\n          <label class=\"gti-choice\"><input type=\"radio\" name=\"priorClaim\" value=\"No\"><span class=\"gti-dot\"><\/span><span class=\"gti-ctxt\">No<\/span><\/label>\r\n          <label class=\"gti-choice\"><input type=\"radio\" name=\"priorClaim\" value=\"Yes\"><span class=\"gti-dot\"><\/span><span class=\"gti-ctxt\">Yes<\/span><\/label>\r\n        <\/div>\r\n        <div class=\"gti-err\" data-err=\"priorClaim\">Please let us know.<\/div>\r\n      <\/div>\r\n      <div class=\"gti-field\" id=\"gtiClaimDetailWrap\" style=\"display:none;\">\r\n        <label class=\"gti-lab\" for=\"claimDetail\">Please provide details<\/label>\r\n        <textarea class=\"gti-area\" id=\"claimDetail\" placeholder=\"A short description helps your advisor prepare an accurate quote.\"><\/textarea>\r\n      <\/div>\r\n    <\/section>\r\n\r\n    <!-- ===================== STEP 10 \u2014 DECLARATION ===================== -->\r\n    <section class=\"gti-step\" data-step=\"10\">\r\n      <span class=\"gti-eyebrow\">Almost done<\/span>\r\n      <h2 class=\"gti-h\">Declaration<\/h2>\r\n      <p class=\"gti-sub\">Part 10 of the form.<\/p>\r\n\r\n      <div class=\"gti-field\">\r\n        <label class=\"gti-lab\" for=\"intermediary\">Name of intermediary, if any <span style=\"font-weight:400;color:var(--muted);\">(optional)<\/span><\/label>\r\n        <input class=\"gti-input\" id=\"intermediary\" type=\"text\" placeholder=\"e.g. your agent or broker's name\">\r\n      <\/div>\r\n\r\n      <div class=\"gti-field\">\r\n        <label class=\"gti-lab\">Your signature <span class=\"gti-req\">*<\/span><\/label>\r\n        <div class=\"gti-sigwrap\">\r\n          <canvas id=\"gtiSigCanvas\" class=\"gti-sigcanvas\" width=\"700\" height=\"220\" aria-label=\"Draw your signature here with mouse or finger\"><\/canvas>\r\n          <span class=\"gti-sig-placeholder\" id=\"gtiSigPlaceholder\">Sign here<\/span>\r\n        <\/div>\r\n        <div class=\"gti-sig-actions\">\r\n          <button type=\"button\" class=\"gti-btn gti-ghost\" id=\"gtiSigClear\"><span class=\"gti-btxt\">Clear<\/span><\/button>\r\n        <\/div>\r\n        <div class=\"gti-hint\">Draw with your mouse, or your finger on a touchscreen. This is embedded into your proposal PDF.<\/div>\r\n        <div class=\"gti-err\" data-err=\"signature\">Please sign before submitting.<\/div>\r\n      <\/div>\r\n\r\n      <div class=\"gti-note\">\r\n        <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><rect x=\"3\" y=\"11\" width=\"18\" height=\"11\" rx=\"2\"\/><path d=\"M7 11V7a5 5 0 0 1 10 0v4\"\/><\/svg>\r\n        <span>By signing and submitting, you declare that the above answers are true and complete and that you have withheld no information, and consent to Geminia contacting you about this proposal.<\/span>\r\n      <\/div>\r\n    <\/section>\r\n\r\n    <!-- ===================== STEP 11 \u2014 REVIEW ===================== -->\r\n    <section class=\"gti-step\" data-step=\"11\">\r\n      <span class=\"gti-eyebrow\">Review<\/span>\r\n      <h2 class=\"gti-h\">Does everything look right?<\/h2>\r\n      <p class=\"gti-sub\">Take a quick look before we prepare your quotation.<\/p>\r\n      <div class=\"gti-summary\" id=\"gtiSummary\"><!-- injected --><\/div>\r\n    <\/section>\r\n\r\n    <!-- ===================== SUCCESS ===================== -->\r\n    <section class=\"gti-step\" data-step=\"done\">\r\n      <div class=\"gti-success\">\r\n        <div class=\"gti-scheck\">\r\n          <div class=\"disc\"><\/div>\r\n          <svg viewBox=\"0 0 24 24\"><path d=\"M20 6 9 17l-5-5\"\/><\/svg>\r\n        <\/div>\r\n        <h1>Thank You! \ud83c\udf89<\/h1>\r\n        <p>We've received your request. A Geminia Insurance advisor will prepare your quotation and contact you shortly.<\/p>\r\n        <p>If we need any additional information, we'll reach out to you.<\/p>\r\n        <div class=\"gti-note gti-paynote\">\r\n          <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><rect x=\"3\" y=\"11\" width=\"18\" height=\"11\" rx=\"2\"\/><path d=\"M7 11V7a5 5 0 0 1 10 0v4\"\/><\/svg>\r\n          <span>Premiums can be paid via Geminia's M-Pesa Paybill 553201, using your name as the account number. Cover only begins once your proposal is accepted, premium received, and policy issued.<\/span>\r\n        <\/div>\r\n        <button class=\"gti-btn gti-primary\" data-cta=\"return\">\r\n          <span class=\"gti-spin\"><\/span><span class=\"gti-btxt\">Return to Website<\/span>\r\n        <\/button>\r\n      <\/div>\r\n    <\/section>\r\n\r\n    <!-- Footer nav (hidden on welcome + success) -->\r\n    <div class=\"gti-foot\" id=\"gtiFoot\" style=\"display:none;\">\r\n      <button class=\"gti-btn gti-ghost\" id=\"gtiPrev\">\r\n        <span class=\"gti-spin\"><\/span><span class=\"gti-btxt\">\u2190 Previous<\/span>\r\n      <\/button>\r\n      <button class=\"gti-btn gti-primary\" id=\"gtiNext\">\r\n        <span class=\"gti-spin\"><\/span><span class=\"gti-btxt\">Next \u2192<\/span>\r\n      <\/button>\r\n    <\/div>\r\n\r\n    <!-- Exit control (shown on form steps) + leave confirmation -->\r\n    <button class=\"gti-exit\" id=\"gtiExit\" type=\"button\" aria-label=\"Return to website\" title=\"Return to website\" style=\"display:none;\">\r\n      <svg viewBox=\"0 0 24 24\"><path d=\"M18 6 6 18M6 6l12 12\"\/><\/svg>\r\n    <\/button>\r\n    <div class=\"gti-confirm\" id=\"gtiConfirm\" hidden role=\"dialog\" aria-modal=\"true\" aria-labelledby=\"gtiConfirmTitle\">\r\n      <div class=\"gti-confirm-box\">\r\n        <div class=\"gti-confirm-ic\">\r\n          <svg viewBox=\"0 0 24 24\"><path d=\"M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4\"\/><path d=\"m16 17 5-5-5-5\"\/><path d=\"M21 12H9\"\/><\/svg>\r\n        <\/div>\r\n        <h3 id=\"gtiConfirmTitle\">Leave and return to the site?<\/h3>\r\n        <p>Your answers so far won't be saved.<\/p>\r\n        <div class=\"gti-confirm-actions\">\r\n          <button class=\"gti-btn gti-ghost\" id=\"gtiStay\"><span class=\"gti-btxt\">Keep going<\/span><\/button>\r\n          <button class=\"gti-btn gti-primary\" id=\"gtiLeave\"><span class=\"gti-spin\"><\/span><span class=\"gti-btxt\">Return to site<\/span><\/button>\r\n        <\/div>\r\n      <\/div>\r\n    <\/div>\r\n\r\n  <\/div><!-- \/card -->\r\n<\/div><!-- \/shell -->\r\n\r\n<!-- pdf-lib: generates the summary proposal PDF in the browser before submit -->\r\n<script src=\"https:\/\/cdn.jsdelivr.net\/npm\/pdf-lib@1.17.1\/dist\/pdf-lib.min.js\"><\/script>\r\n<script>\r\n(function(){\r\n  const root = document.getElementById('gti');\r\n  const ENDPOINT = (root.getAttribute('data-endpoint')||'').trim();\r\n  const RETURN_URL = 'https:\/\/geminia.co.ke';   \/\/ <-- change if needed\r\n\r\n  \/* ---- State ------------------------------------------------------ *\/\r\n  const S = {step:1, purposes:new Set(), values:{}, tripType:null, tripTypeTouched:false, selectedTier:null};\r\n  let hasSignature=false;\r\n  const TOTAL = 11;\r\n  const STEP_NAMES = {1:'Welcome',2:'About you',3:'Dependants',4:'Contact & journey',5:'Purpose & dates',6:'Your plan',7:'Emergency',8:'Medical',9:'History',10:'Declaration',11:'Review'};\r\n\r\n  \/* ---- Rate card (Geminia Travel Insurance brochure, KES) ---------- *\/\r\n  const RATES = {\r\n    travelprotect:{\r\n      bands:[\r\n        {max:4,label:'up to 4 days'},{max:7,label:'up to 7 days'},{max:10,label:'up to 10 days'},\r\n        {max:15,label:'up to 15 days'},{max:21,label:'up to 21 days'},{max:30,label:'up to 30 days'},\r\n        {max:60,label:'up to 60 days'},{max:90,label:'up to 90 days'},{max:180,label:'up to 180 days'},\r\n        {max:365,label:'1-year multi-trip'}\r\n      ],\r\n      tiers:{\r\n        africa_asia:{name:'Africa \/ Asia',desc:'Value offer for travel within Africa or Asia.',regions:['africa_asia'],\r\n          prices:[1274.94,1606.58,2150.69,2295.78,2395.97,3584.36,5334.13,6817.89,7398.27,9479.68]},\r\n        europe:{name:'Europe',desc:'Value offer for travel to Europe.',regions:['europe'],\r\n          prices:[1518.49,1929.59,2606.70,2786.34,2912.43,4389.29,6565.70,8412.20,9116.95,11688.92]},\r\n        europe_plus:{name:'Europe Plus',desc:'Richer worldwide-style cover for travel to Europe.',regions:['europe'],\r\n          prices:[2109.23,2732.79,3886.64,4304.65,4340.92,6386.06,10015.15,12903.22,13974.16,17724.16]},\r\n        worldwide_basic:{name:'Worldwide Basic',desc:'Basic cover valid anywhere in the world.',regions:['africa_asia','europe','worldwide'],\r\n          prices:[2566.97,3328.72,4581.02,4912.66,5144.12,7876.74,11899.65,15312.83,16558.22,21258.24]},\r\n        worldwide_plus:{name:'Worldwide Plus',desc:'Comprehensive cover valid anywhere in the world.',regions:['africa_asia','europe','worldwide'],\r\n          prices:[2902.07,3774.36,5209.76,5589.77,5855.78,8989.13,13601.06,17511.70,18929.82,24306.95]},\r\n        worldwide_extra:{name:'Worldwide Extra',desc:'Extra protection, valid anywhere in the world.',regions:['africa_asia','europe','worldwide'],\r\n          prices:[3271.71,4270.10,5905.87,6341.15,6643.43,10218.98,15485.56,19947.21,21557.07,27685.58]}\r\n      },\r\n      winterTiers:['europe_plus','worldwide_basic','worldwide_plus','worldwide_extra']\r\n    },\r\n    domestic:{\r\n      perDay:[\r\n        {max:8,label:'1\u20138 days',rate:199.20},{max:14,label:'9\u201314 days',rate:186.77},\r\n        {max:21,label:'15\u201321 days',rate:174.33},{max:32,label:'22\u201332 days',rate:163.97},\r\n        {max:49,label:'33\u201349 days',rate:151.53},{max:62,label:'50\u201362 days',rate:139.09},\r\n        {max:92,label:'63\u201392 days',rate:126.66}\r\n      ]\r\n    },\r\n    inbound:{\r\n      bands:[\r\n        {max:7,label:'up to 7 days',price:3563.63},{max:10,label:'up to 10 days',price:5018.03},\r\n        {max:15,label:'up to 15 days',price:5366.95},{max:21,label:'up to 21 days',price:5589.77},\r\n        {max:31,label:'up to 31 days',price:8840.58},{max:62,label:'up to 62 days',price:13226.23},\r\n        {max:92,label:'up to 92 days',price:16939.96},{max:180,label:'up to 180 days',price:19012.73},\r\n        {max:365,label:'1-year multi-trip',price:24431.32}\r\n      ]\r\n    },\r\n    pilgrimage:{\r\n      bands:[{max:15,label:'1\u201315 days'},{max:25,label:'16\u201325 days'},{max:45,label:'26\u201345 days'}],\r\n      tiers:{\r\n        basic:{name:'Pilgrimage Basic',desc:'USD 10,000 medical \u00b7 USD 5,000 repatriation.',prices:[2470.24,3161.17,4024.82]},\r\n        plus:{name:'Pilgrimage Plus',desc:'USD 15,000 medical \u00b7 USD 10,000 repatriation.',prices:[2815.70,3852.09,4715.75]},\r\n        extra:{name:'Pilgrimage Extra',desc:'USD 25,000 medical \u00b7 USD 15,000 repatriation.',prices:[3679.36,4543.02,6443.06]}\r\n      }\r\n    },\r\n    student:{\r\n      bands:[{max:180,label:'up to 6 months'},{max:270,label:'up to 9 months'},{max:365,label:'up to 1 year'}],\r\n      tiers:{\r\n        classic:{name:'Students Classic',desc:'USD 60,000 medical cover abroad.',prices:[49910.94,56072.27,63074.81]},\r\n        premium:{name:'Students Premium',desc:'USD 100,000 medical cover abroad.',prices:[61236.95,69761.24,79185.47]}\r\n      }\r\n    },\r\n    corporate:{\r\n      bands:[\r\n        {max:200,label:'200 man-days\/yr',annual:179511.37,excessDay:960.57},\r\n        {max:500,label:'500 man-days\/yr',annual:305513.81,excessDay:779.20},\r\n        {max:600,label:'600 man-days\/yr',annual:410244.36,excessDay:779.20},\r\n        {max:800,label:'800 man-days\/yr',annual:515883.48,excessDay:779.20},\r\n        {max:1000,label:'1,000 man-days\/yr',annual:572247.49,excessDay:597.83},\r\n        {max:1500,label:'1,500 man-days\/yr',annual:836436.83,excessDay:597.83},\r\n        {max:2000,label:'2,000 man-days\/yr',annual:857411.62,excessDay:594.38},\r\n        {max:5000,label:'5,000 man-days\/yr',annual:913775.63,excessDay:551.19}\r\n      ]\r\n    }\r\n  };\r\n\r\n  const EUROPE_COUNTRIES=['albania','andorra','austria','belarus','belgium','bosnia','bulgaria','croatia','cyprus','czech','denmark','estonia','finland','france','germany','greece','hungary','iceland','ireland','italy','kosovo','latvia','liechtenstein','lithuania','luxembourg','malta','moldova','monaco','montenegro','netherlands','holland','macedonia','norway','poland','portugal','romania','russia','san marino','serbia','slovakia','slovenia','spain','sweden','switzerland','ukraine','united kingdom','britain','england','scotland','wales','vatican','schengen'];\r\n  const AFRICA_ASIA_COUNTRIES=['south africa','nigeria','ghana','egypt','morocco','tunisia','algeria','ethiopia','tanzania','uganda','rwanda','zambia','zimbabwe','botswana','namibia','mozambique','malawi','senegal','ivory coast',\"cote d'ivoire\",'cameroon','congo','sudan','somalia','mauritius','seychelles','madagascar','angola','gabon','burundi','djibouti','eritrea','libya','mali','niger','chad','benin','togo','sierra leone','liberia','guinea','gambia','lesotho','eswatini','swaziland','china','japan','korea','india','pakistan','bangladesh','sri lanka','nepal','thailand','vietnam','cambodia','laos','myanmar','malaysia','singapore','indonesia','philippines','uae','dubai','abu dhabi','emirates','saudi','qatar','kuwait','bahrain','oman','jordan','lebanon','israel','turkey','iraq','iran','afghanistan','kazakhstan','uzbekistan','hong kong','taiwan','mongolia','brunei','maldives','yemen'];\r\n  const KENYA_PLACES=['kenya','nairobi','mombasa','kisumu','nakuru','eldoret','malindi','naivasha','kakamega','nyeri','machakos','meru','thika','kericho','kitale','garissa','kisii','lamu','diani','watamu','nanyuki','kilifi','kitui','embu','bungoma','busia','kajiado','kiambu','muranga',\"murang'a\",'kirinyaga','laikipia','samburu','turkana','marsabit','isiolo','wajir','mandera','taita','voi','narok','bomet','vihiga','siaya','homa bay','migori','nyamira','tharaka','makueni'];\r\n\r\n  function fmt(n){ return Number(n||0).toLocaleString('en-KE',{minimumFractionDigits:2,maximumFractionDigits:2}); }\r\n\r\n  function classifyDestination(text){\r\n    const t=(text||'').toLowerCase();\r\n    if(!t) return 'worldwide';\r\n    for(const c of EUROPE_COUNTRIES){ if(t.includes(c)) return 'europe'; }\r\n    for(const c of AFRICA_ASIA_COUNTRIES){ if(t.includes(c)) return 'africa_asia'; }\r\n    return 'worldwide';\r\n  }\r\n\r\n  function tripDays(){\r\n    const dep=$('#departureDate')?.value, ret=$('#returnDate')?.value;\r\n    if(!dep||!ret) return null;\r\n    const d1=new Date(dep+'T00:00:00'), d2=new Date(ret+'T00:00:00');\r\n    const diff=Math.round((d2-d1)\/86400000);\r\n    return diff>=0 ? diff+1 : null;\r\n  }\r\n\r\n  function ageOn(dobStr, refStr){\r\n    if(!dobStr) return null;\r\n    const dob=new Date(dobStr+'T00:00:00');\r\n    if(isNaN(dob)) return null;\r\n    const ref = refStr ? new Date(refStr+'T00:00:00') : new Date();\r\n    let age=ref.getFullYear()-dob.getFullYear();\r\n    const m=ref.getMonth()-dob.getMonth();\r\n    if(m<0 || (m===0 && ref.getDate()<dob.getDate())) age--;\r\n    return age>=0 ? age : null;\r\n  }\r\n  function ageLoadingFactor(age){\r\n    if(age==null) return 1;\r\n    if(age<18) return 0.5;\r\n    if(age<=65) return 1;\r\n    if(age<=75) return 1.5;\r\n    if(age<=80) return 2;\r\n    return 4;\r\n  }\r\n\r\n  function insuredPersons(){\r\n    const g=id=>{const el=$('#'+id); return el? el.value.trim() : '';};\r\n    const list=[{label:'Traveller', dob:g('dob')}];\r\n    for(let i=1;i<=4;i++){\r\n      const name=g('dep'+i+'Name');\r\n      if(name) list.push({label:'Dependant \u2014 '+name, dob:g('dep'+i+'Dob')});\r\n    }\r\n    return list;\r\n  }\r\n\r\n  function detectTripType(){\r\n    const g=id=>{const el=$('#'+id); return el? el.value.trim().toLowerCase() : '';};\r\n    const dest=g('destination');\r\n    const residence=g('country')||'kenya';\r\n    const destIsKenya = KENYA_PLACES.some(p=>dest.includes(p));\r\n    if(destIsKenya) return residence.includes('kenya') ? 'domestic' : 'inbound';\r\n    if(S.purposes.has('Pilgrimage')) return 'pilgrimage';\r\n    if(S.purposes.has('Study')) return 'student';\r\n    return 'travelprotect';\r\n  }\r\n\r\n  function tiersForType(type){\r\n    if(type==='travelprotect'){\r\n      const g=id=>{const el=$('#'+id); return el? el.value.trim() : '';};\r\n      const region=classifyDestination(g('destination'));\r\n      return Object.entries(RATES.travelprotect.tiers)\r\n        .filter(([k,t])=>t.regions.includes(region))\r\n        .map(([k,t])=>({key:k,...t}));\r\n    }\r\n    if(type==='pilgrimage') return Object.entries(RATES.pilgrimage.tiers).map(([k,t])=>({key:k,...t}));\r\n    if(type==='student') return Object.entries(RATES.student.tiers).map(([k,t])=>({key:k,...t}));\r\n    return null;\r\n  }\r\n\r\n  function bandsForType(type){\r\n    if(type==='travelprotect') return RATES.travelprotect.bands;\r\n    if(type==='pilgrimage') return RATES.pilgrimage.bands;\r\n    if(type==='student') return RATES.student.bands;\r\n    return null;\r\n  }\r\n\r\n  function contextHint(type,days){\r\n    if(type==='student' && days && days<150) return 'Short study trip? Standard \"Travelling abroad\" cover is often more cost-effective for study trips under about 6 months \u2014 ask your advisor.';\r\n    if(type==='pilgrimage' && days && days>45) return 'This trip is longer than our standard pilgrimage bands (max 45 days) \u2014 your advisor will confirm pricing.';\r\n    if(type==='domestic' && days && days>92) return 'Trips longer than 92 days need a custom quote \u2014 your advisor will follow up.';\r\n    if((type==='travelprotect'||type==='inbound') && days && days>365) return 'For trips over a year, your advisor will confirm multi-year\/custom pricing.';\r\n    return '';\r\n  }\r\n\r\n  function computePremium(){\r\n    const g=id=>{const el=$('#'+id); return el? el.value.trim() : '';};\r\n    const type=($('input[name=\"tripType\"]:checked')||{}).value || S.tripType || 'travelprotect';\r\n    const refDate=g('departureDate');\r\n    const persons=insuredPersons();\r\n\r\n    if(type==='corporate'){\r\n      const mandays=parseInt(g('corpDays'))||0;\r\n      if(!mandays) return {type};\r\n      const band=RATES.corporate.bands.find(b=>mandays<=b.max) || RATES.corporate.bands[RATES.corporate.bands.length-1];\r\n      return {type, band, total:band.annual, rows:[{label:'Annual premium ('+band.label+')', amount:band.annual}],\r\n        excessNote:'Extra man-day beyond the package: KES '+fmt(band.excessDay)+'\/day'};\r\n    }\r\n\r\n    const days=tripDays();\r\n    if(!days) return {type};\r\n\r\n    if(type==='domestic'){\r\n      const band=RATES.domestic.perDay.find(b=>days<=b.max);\r\n      if(!band) return {type, overMax:true, days};\r\n      let total=0; const rows=[];\r\n      persons.forEach(p=>{\r\n        const age=ageOn(p.dob, refDate); const factor=ageLoadingFactor(age);\r\n        const amt=band.rate*days*factor; total+=amt;\r\n        rows.push({label:p.label+(age!=null?' (age '+age+')':''), amount:amt});\r\n      });\r\n      return {type, band, total, rows, days};\r\n    }\r\n\r\n    if(type==='inbound'){\r\n      const band=RATES.inbound.bands.find(b=>days<=b.max);\r\n      if(!band) return {type, overMax:true, days};\r\n      let total=0; const rows=[];\r\n      persons.forEach(p=>{\r\n        const age=ageOn(p.dob, refDate); const factor=ageLoadingFactor(age);\r\n        const amt=band.price*factor; total+=amt;\r\n        rows.push({label:p.label+(age!=null?' (age '+age+')':''), amount:amt});\r\n      });\r\n      return {type, band, total, rows, days};\r\n    }\r\n\r\n    if(type==='pilgrimage' || type==='student' || type==='travelprotect'){\r\n      const bands=bandsForType(type);\r\n      const band=bands.find(b=>days<=b.max);\r\n      if(!band) return {type, overMax:true, days};\r\n      const idx=bands.indexOf(band);\r\n      const tierKey=S.selectedTier;\r\n      if(!tierKey) return {type, band, needsTier:true, days};\r\n      const tierMap = type==='pilgrimage'?RATES.pilgrimage.tiers:type==='student'?RATES.student.tiers:RATES.travelprotect.tiers;\r\n      const tier=tierMap[tierKey];\r\n      if(!tier) return {type, band, needsTier:true, days};\r\n      const winter = type==='travelprotect' && $('#gtiWinterSports') && $('#gtiWinterSports').checked;\r\n      if(type==='student'){\r\n        const total=tier.prices[idx];\r\n        return {type, band, tier, tierKey, total, rows:[{label:tier.name+' ('+band.label+')', amount:total}], days};\r\n      }\r\n      let total=0; const rows=[];\r\n      persons.forEach(p=>{\r\n        const age=ageOn(p.dob, refDate); const factor=ageLoadingFactor(age);\r\n        let amt=tier.prices[idx]*factor;\r\n        if(winter) amt*=2;\r\n        total+=amt;\r\n        rows.push({label:p.label+(age!=null?' (age '+age+')':''), amount:amt});\r\n      });\r\n      return {type, band, tier, tierKey, total, rows, days, winter};\r\n    }\r\n    return {type};\r\n  }\r\n\r\n  const $  = (s,c=root)=>c.querySelector(s);\r\n  const $$ = (s,c=root)=>Array.from(c.querySelectorAll(s));\r\n  const stepEl = n => $('.gti-step[data-step=\"'+n+'\"]');\r\n\r\n  \/* ---- Choice rows (radio\/checkbox visual state) ------------------- *\/\r\n  function wireChoice(ch){\r\n    const input=ch.querySelector('input');\r\n    if(input.dataset.wired) return; input.dataset.wired='1';\r\n    input.addEventListener('change',()=>{\r\n      if(input.type==='radio'){\r\n        $$('input[name=\"'+input.name+'\"]').forEach(r=>r.closest('.gti-choice').classList.remove('sel'));\r\n        ch.classList.add('sel');\r\n        const wrap=ch.closest('[data-radio]');\r\n        if(wrap) clearErr(wrap.dataset.radio);\r\n        onRadioChange(input.name,input.value);\r\n      }else{\r\n        const group=ch.closest('[data-check]');\r\n        ch.classList.toggle('sel',input.checked);\r\n        onCheckChange(group);\r\n      }\r\n    });\r\n  }\r\n  $$('.gti-choice').forEach(wireChoice);\r\n\r\n  \/* ---- Signature pad ------------------------------------------------ *\/\r\n  (function initSignaturePad(){\r\n    const canvas=$('#gtiSigCanvas'); if(!canvas) return;\r\n    const wrap=canvas.closest('.gti-sigwrap');\r\n    const placeholder=$('#gtiSigPlaceholder');\r\n    const ctx=canvas.getContext('2d');\r\n    ctx.lineWidth=3; ctx.lineCap='round'; ctx.lineJoin='round'; ctx.strokeStyle='#16283D';\r\n    let drawing=false, lastX=0, lastY=0;\r\n\r\n    function pos(e){\r\n      const rect=canvas.getBoundingClientRect();\r\n      const scaleX=canvas.width\/rect.width, scaleY=canvas.height\/rect.height;\r\n      return {x:(e.clientX-rect.left)*scaleX, y:(e.clientY-rect.top)*scaleY};\r\n    }\r\n    function start(e){\r\n      drawing=true; hasSignature=true;\r\n      placeholder.classList.add('hide'); wrap.classList.add('focus');\r\n      clearErr('signature');\r\n      try{ canvas.setPointerCapture(e.pointerId); }catch(_){}\r\n      const p=pos(e); lastX=p.x; lastY=p.y;\r\n      e.preventDefault();\r\n    }\r\n    function move(e){\r\n      if(!drawing) return;\r\n      const p=pos(e);\r\n      ctx.beginPath(); ctx.moveTo(lastX,lastY); ctx.lineTo(p.x,p.y); ctx.stroke();\r\n      lastX=p.x; lastY=p.y;\r\n      e.preventDefault();\r\n    }\r\n    function end(){ drawing=false; wrap.classList.remove('focus'); }\r\n\r\n    canvas.addEventListener('pointerdown',start);\r\n    canvas.addEventListener('pointermove',move);\r\n    canvas.addEventListener('pointerup',end);\r\n    canvas.addEventListener('pointerleave',()=>{ if(!drawing) wrap.classList.remove('focus'); });\r\n\r\n    $('#gtiSigClear').addEventListener('click',()=>{\r\n      ctx.clearRect(0,0,canvas.width,canvas.height);\r\n      hasSignature=false;\r\n      placeholder.classList.remove('hide');\r\n    });\r\n  })();\r\n\r\n  function onRadioChange(name,value){\r\n    if(name==='hasDependants') $('#gtiDependantsWrap').style.display = value==='Yes' ? 'block':'none';\r\n    if(name==='priorCondition') $('#gtiConditionWrap').style.display = value==='Yes' ? 'block':'none';\r\n    if(name==='priorClaim') $('#gtiClaimDetailWrap').style.display = value==='Yes' ? 'block':'none';\r\n    if(name==='tripType'){\r\n      S.tripType=value; S.tripTypeTouched=true; S.selectedTier=null;\r\n      renderPlanStep(false);\r\n    }\r\n  }\r\n\r\n  \/* ---- Plan step rendering ------------------------------------------ *\/\r\n  function renderPlanStep(auto){\r\n    if(auto){\r\n      const detected=detectTripType();\r\n      S.tripType=detected; S.selectedTier=null;\r\n      const r=$('input[name=\"tripType\"][value=\"'+detected+'\"]');\r\n      if(r){\r\n        r.checked=true;\r\n        $$('input[name=\"tripType\"]').forEach(x=>x.closest('.gti-choice').classList.toggle('sel', x===r));\r\n      }\r\n    }\r\n    const type=($('input[name=\"tripType\"]:checked')||{}).value || S.tripType || 'travelprotect';\r\n    S.tripType=type;\r\n\r\n    $('#gtiCorpWrap').style.display = type==='corporate' ? 'block' : 'none';\r\n    const tierWrapField = $('#gtiPlanCards').closest('.gti-field');\r\n    const winterWrap=$('#gtiWinterWrap');\r\n    const emptyEl=$('#gtiPlanEmpty');\r\n    const hintEl=$('#gtiTripHint');\r\n    const cardsEl=$('#gtiPlanCards');\r\n    const days=tripDays();\r\n\r\n    winterWrap.style.display='none';\r\n    emptyEl.style.display='none';\r\n    hintEl.style.display='none';\r\n\r\n    if(type==='corporate'){\r\n      tierWrapField.style.display='none';\r\n    } else if(type==='domestic' || type==='inbound'){\r\n      tierWrapField.style.display='none';\r\n      if(!days){ emptyEl.style.display='block'; emptyEl.textContent='Add your departure and return dates on the previous step to see a price.'; }\r\n    } else {\r\n      tierWrapField.style.display='block';\r\n      const tiers=tiersForType(type);\r\n      if(!days){\r\n        cardsEl.innerHTML='';\r\n        emptyEl.style.display='block';\r\n        emptyEl.textContent='Add your departure and return dates on the previous step to see prices.';\r\n      } else if(!tiers.length){\r\n        cardsEl.innerHTML='';\r\n        emptyEl.style.display='block';\r\n        emptyEl.textContent=\"No matching plan tier for this destination \u2014 your advisor will help you pick the right cover.\";\r\n      } else {\r\n        const bands=bandsForType(type);\r\n        const band=bands.find(b=>days<=b.max);\r\n        if(!band){\r\n          cardsEl.innerHTML='';\r\n          emptyEl.style.display='block';\r\n          emptyEl.textContent='This trip is longer than our standard bands \u2014 your advisor will confirm annual\/custom pricing.';\r\n        } else {\r\n          const idx=bands.indexOf(band);\r\n          if(!S.selectedTier || !tiers.find(t=>t.key===S.selectedTier)) S.selectedTier=tiers[0].key;\r\n          cardsEl.innerHTML=tiers.map((t,i)=>{\r\n            const price=t.prices[idx];\r\n            const sel=t.key===S.selectedTier;\r\n            return '<button type=\"button\" class=\"gti-plancard'+(sel?' sel':'')+(i===0?' reco':'')+'\" data-tier=\"'+t.key+'\">'\r\n              +'<div class=\"tier-name\">'+t.name+'<\/div>'\r\n              +'<div class=\"tier-desc\">'+t.desc+'<\/div>'\r\n              +'<div class=\"tier-price\"><span class=\"cur\">KES<\/span>'+fmt(price)+'<\/div>'\r\n              +'<div class=\"tier-note\">per traveller \u00b7 '+band.label+'<\/div>'\r\n              +'<\/button>';\r\n          }).join('');\r\n          if(type==='travelprotect' && RATES.travelprotect.winterTiers.includes(S.selectedTier)){\r\n            winterWrap.style.display='block';\r\n          } else {\r\n            const cb=$('#gtiWinterSports');\r\n            if(cb){ cb.checked=false; $('#gtiWinterToggle').classList.remove('sel'); }\r\n          }\r\n        }\r\n      }\r\n    }\r\n\r\n    const hint=contextHint(type,days);\r\n    if(hint){ hintEl.style.display='block'; hintEl.textContent=hint; }\r\n\r\n    updatePremiumBox();\r\n  }\r\n\r\n  function updatePremiumBox(){\r\n    const box=$('#gtiPremiumBox');\r\n    const result=computePremium();\r\n    if(!result || result.overMax || result.needsTier || !result.total){\r\n      box.style.display='none';\r\n      return;\r\n    }\r\n    box.style.display='block';\r\n    $('#gtiPremiumLabel').textContent = result.type==='corporate' ? 'Estimated annual premium' : 'Estimated total premium';\r\n    $('#gtiPremiumTotal').textContent = 'KES '+fmt(result.total);\r\n    $('#gtiPremiumRows').innerHTML = (result.rows||[]).map(r=>\r\n      '<div class=\"pb-row\"><span>'+escapeHtml(r.label)+'<\/span><b>KES '+fmt(r.amount)+'<\/b><\/div>'\r\n    ).join('') + (result.excessNote ? '<div class=\"pb-row\"><span>'+escapeHtml(result.excessNote)+'<\/span><\/div>' : '');\r\n  }\r\n  function onCheckChange(group){\r\n    if(group.dataset.check==='purposes'){\r\n      S.purposes.clear();\r\n      group.querySelectorAll('input:checked').forEach(i=>S.purposes.add(i.value));\r\n      clearErr('purposes');\r\n    }\r\n  }\r\n\r\n  function tripTypeLabel(type){\r\n    return {travelprotect:'Travelling abroad',domestic:'Within Kenya',inbound:'Visiting Kenya',\r\n      student:'Student cover',pilgrimage:'Pilgrimage',corporate:'Corporate \/ staff policy'}[type] || '\u2014';\r\n  }\r\n  function planReviewPairs(){\r\n    const type=S.tripType || ($('input[name=\"tripType\"]:checked')||{}).value;\r\n    if(!type) return [['Type of cover','\u2014']];\r\n    const result=computePremium();\r\n    const pairs=[['Type of cover', tripTypeLabel(type)]];\r\n    if(result && result.tier) pairs.push(['Plan', result.tier.name]);\r\n    if(result && result.band) pairs.push(['Duration band', result.band.label]);\r\n    if(result && result.winter) pairs.push(['Winter sports','Added (+100%)']);\r\n    if(type==='corporate'){\r\n      pairs.push(['Employees to cover', ($('#corpEmployees')||{}).value || '\u2014']);\r\n      pairs.push(['Man-days\/year', ($('#corpDays')||{}).value || '\u2014']);\r\n    }\r\n    if(result && result.total){\r\n      pairs.push([type==='corporate'?'Estimated annual premium':'Estimated total premium', 'KES '+fmt(result.total)]);\r\n    } else {\r\n      pairs.push(['Estimated premium','To be confirmed by your advisor']);\r\n    }\r\n    return pairs;\r\n  }\r\n\r\n  \/* ---- Errors ----------------------------------------------------- *\/\r\n  function showErr(key,inputEl){\r\n    const e=$('.gti-err[data-err=\"'+key+'\"]');\r\n    if(e) e.classList.add('show');\r\n    if(inputEl) inputEl.classList.add('err');\r\n  }\r\n  function clearErr(key){\r\n    const e=$('.gti-err[data-err=\"'+key+'\"]');\r\n    if(e) e.classList.remove('show');\r\n  }\r\n\r\n  \/* ---- Validation per step --------------------------------------- *\/\r\n  function validate(step){\r\n    let ok=true; const fail=el=>{ok=false; return el;};\r\n    if(step===2){\r\n      const n=$('#fullName'); if(!n.value.trim()){showErr('fullName',fail(n));} else clearErr('fullName');\r\n      const p=$('#mobile'); const pv=p.value.replace(\/\\s\/g,'');\r\n      if(!\/^(?:\\+?254|0)(?:7|1)\\d{8}$\/.test(pv)){showErr('mobile',fail(p));} else clearErr('mobile');\r\n      const dob=$('#dob'); if(!dob.value){showErr('dob',fail(dob));} else clearErr('dob');\r\n      const pp=$('#passportNo'); if(!pp.value.trim()){showErr('passportNo',fail(pp));} else clearErr('passportNo');\r\n      const occ=$('#occupation'); if(!occ.value.trim()){showErr('occupation',fail(occ));} else clearErr('occupation');\r\n    }\r\n    if(step===3){\r\n      if(!$('input[name=\"hasDependants\"]:checked')){showErr('hasDependants');ok=false;} else clearErr('hasDependants');\r\n      const hd=$('input[name=\"hasDependants\"]:checked');\r\n      if(hd && hd.value==='Yes'){\r\n        const n=$('#dep1Name'); if(!n.value.trim()){showErr('dep1Name',fail(n));} else clearErr('dep1Name');\r\n        const pp=$('#dep1Passport'); if(!pp.value.trim()){showErr('dep1Passport',fail(pp));} else clearErr('dep1Passport');\r\n      }\r\n    }\r\n    if(step===4){\r\n      const d=$('#destination'); if(!d.value.trim()){showErr('destination',fail(d));} else clearErr('destination');\r\n    }\r\n    if(step===5){\r\n      if(S.purposes.size===0){showErr('purposes');ok=false;} else clearErr('purposes');\r\n      const dd=$('#departureDate'); if(!dd.value){showErr('departureDate',fail(dd));} else clearErr('departureDate');\r\n      const rd=$('#returnDate'); if(!rd.value){showErr('returnDate',fail(rd));} else clearErr('returnDate');\r\n    }\r\n    if(step===6){\r\n      const type=($('input[name=\"tripType\"]:checked')||{}).value;\r\n      if(!type){ showErr('tripType'); ok=false; } else clearErr('tripType');\r\n      if(type==='corporate'){\r\n        const emp=$('#corpEmployees'); if(!emp.value || parseInt(emp.value)<1){showErr('corpEmployees',fail(emp));} else clearErr('corpEmployees');\r\n        const md=$('#corpDays'); if(!md.value || parseInt(md.value)<1){showErr('corpDays',fail(md));} else clearErr('corpDays');\r\n      } else if(type==='travelprotect' || type==='pilgrimage' || type==='student'){\r\n        if(!S.selectedTier){ showErr('planTier'); ok=false; } else clearErr('planTier');\r\n      }\r\n    }\r\n    if(step===7){\r\n      const n=$('#localName'); if(!n.value.trim()){showErr('localName',fail(n));} else clearErr('localName');\r\n      const c=$('#localContact'); if(!c.value.trim()){showErr('localContact',fail(c));} else clearErr('localContact');\r\n    }\r\n    if(step===8){\r\n      if(!$('input[name=\"priorCondition\"]:checked')){showErr('priorCondition');ok=false;} else clearErr('priorCondition');\r\n    }\r\n    if(step===9){\r\n      if(!$('input[name=\"priorClaim\"]:checked')){showErr('priorClaim');ok=false;} else clearErr('priorClaim');\r\n    }\r\n    if(step===10){\r\n      if(!hasSignature){ showErr('signature'); ok=false; } else clearErr('signature');\r\n    }\r\n    if(!ok){\r\n      const firstErr=$('.gti-err.show');\r\n      if(firstErr) firstErr.closest('.gti-field, .gti-step').scrollIntoView({behavior:'smooth',block:'center'});\r\n    }\r\n    return ok;\r\n  }\r\n\r\n  \/* ---- Build review ---------------------------------------------- *\/\r\n  function escapeHtml(s){return String(s).replace(\/[&<>\"]\/g,c=>({'&':'&amp;','<':'&lt;','>':'&gt;','\"':'&quot;'}[c]));}\r\n  function buildReview(){\r\n    const g=$('#gtiSummary');\r\n    const title=$('input[name=\"title\"]:checked');\r\n    const hasDep=$('input[name=\"hasDependants\"]:checked');\r\n    const priorCond=$('input[name=\"priorCondition\"]:checked');\r\n    const priorClaim=$('input[name=\"priorClaim\"]:checked');\r\n    const purposes=S.purposes.size?[...S.purposes].join(', '):'\u2014';\r\n    const depNames=[$('#dep1Name').value,$('#dep2Name').value,$('#dep3Name').value,$('#dep4Name').value].filter(Boolean);\r\n\r\n    g.innerHTML=\r\n      block('\ud83d\udc64 Traveller',[\r\n        row('Name',((title?title.value+' ':'')+($('#fullName').value||'\u2014'))),\r\n        row('Mobile',$('#mobile').value||'\u2014'),\r\n        row('Date of birth',$('#dob').value||'\u2014'),\r\n        row('Passport No',$('#passportNo').value||'\u2014'),\r\n        row('Occupation',$('#occupation').value||'\u2014')\r\n      ])\r\n      +block('\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc67 Dependants',[\r\n        row('Travelling with dependants',hasDep?hasDep.value:'\u2014'),\r\n        depNames.length?row('Names',depNames.join(', ')):''\r\n      ])\r\n      +block('\u2708\ufe0f Journey',[\r\n        row('Destination',$('#destination').value||'\u2014'),\r\n        row('Airline',$('#airline').value||'\u2014'),\r\n        row('Purpose',purposes),\r\n        row('Departure',$('#departureDate').value||'\u2014'),\r\n        row('Return',$('#returnDate').value||'\u2014')\r\n      ])\r\n      +block('\ud83d\udcb3 Plan & estimated premium',planReviewPairs().map(pair=>row(pair[0],pair[1])))\r\n      +block('\ud83d\udea8 Emergency contact',[\r\n        row('Local',($('#localName').value||'\u2014')+' \u2014 '+($('#localContact').value||'\u2014')),\r\n        row('Country of visit',$('#visitName').value?(($('#visitName').value)+' \u2014 '+($('#visitContact').value||'\u2014')):'\u2014')\r\n      ])\r\n      +block('\ud83e\ude7a Medical & history',[\r\n        row('Prior condition\/treatment (2yr)',priorCond?priorCond.value:'\u2014'),\r\n        row('Prior claim\/decline (5yr)',priorClaim?priorClaim.value:'\u2014')\r\n      ])\r\n      +block('\u270d\ufe0f Declaration',[\r\n        row('Intermediary',$('#intermediary').value||'\u2014'),\r\n        row('Signature',hasSignature?'\u2713 Captured':'Not captured')\r\n      ]);\r\n\r\n    function block(title,rows){return '<div class=\"gti-sblock\"><h4>'+title+'<\/h4>'+rows.filter(Boolean).join('')+'<\/div>';}\r\n    function row(k,v){return '<div class=\"gti-srow\"><span class=\"k\">'+k+'<\/span><span class=\"v\">'+escapeHtml(v)+'<\/span><\/div>';}\r\n  }\r\n\r\n  \/* ---- Render \/ navigation --------------------------------------- *\/\r\n  function render(){\r\n    const cur=$('.gti-step.active');\r\n    const next=stepEl(S.step);\r\n    if(cur && cur!==next){\r\n      cur.classList.add('leaving');\r\n      setTimeout(()=>{cur.classList.remove('active','leaving');next.classList.add('active');},260);\r\n    }else{\r\n      $$('.gti-step').forEach(s=>s.classList.remove('active'));\r\n      next.classList.add('active');\r\n    }\r\n\r\n    const isWelcome=S.step===1, isDone=S.step==='done';\r\n    const showChrome = !isWelcome && !isDone;\r\n    $('.gti-card').classList.toggle('gti-card--hero',isWelcome);\r\n    $('#gtiProgress').classList.toggle('on',showChrome);\r\n    $('#gtiFoot').style.display = showChrome ? 'flex' : 'none';\r\n    $('#gtiExit').style.display = showChrome ? 'flex' : 'none';\r\n    $('#gtiConfirm').hidden = true;\r\n\r\n    if(S.step===6){ renderPlanStep(!S.tripTypeTouched); }\r\n\r\n    if(showChrome){\r\n      $('#gtiStepNo').textContent=S.step;\r\n      $('#gtiStepName').textContent=STEP_NAMES[S.step];\r\n      $('#gtiFill').style.width=((S.step-1)\/(TOTAL-1))*100+'%';\r\n      const nextBtn=$('#gtiNext');\r\n      nextBtn.querySelector('.gti-btxt').textContent = S.step===11 ? 'Get My Quote' : 'Next \u2192';\r\n      nextBtn.classList.toggle('wide', S.step===1);\r\n    }\r\n    root.scrollIntoView({behavior:'smooth',block:'start'});\r\n  }\r\n\r\n  function goTo(step){ S.step=step; render(); }\r\n\r\n  function next(){\r\n    if(typeof S.step==='number' && !validate(S.step)) return;\r\n    if(S.step===11){ submit(); return; }\r\n    if(S.step===10) buildReview();\r\n    goTo(S.step+1);\r\n  }\r\n  function prev(){ if(typeof S.step==='number' && S.step>2) goTo(S.step-1); }\r\n\r\n  \/* ---- Button loading helper ------------------------------------- *\/\r\n  function withLoading(btn,fn,delay=380){\r\n    btn.classList.add('loading');btn.disabled=true;\r\n    setTimeout(()=>{ try{fn();}finally{btn.classList.remove('loading');btn.disabled=false;} },delay);\r\n  }\r\n\r\n  \/* ---- Submit ------------------------------------------------------ *\/\r\n  function buildPayload(){\r\n    const g=id=>{const el=$('#'+id); return el? el.value.trim() : '';};\r\n    const radio=name=>{const el=$('input[name=\"'+name+'\"]:checked'); return el? el.value : '';};\r\n\r\n    const dependants=[];\r\n    for(let i=1;i<=4;i++){\r\n      const name=g('dep'+i+'Name');\r\n      if(name) dependants.push({name, passport:g('dep'+i+'Passport'), dob:g('dep'+i+'Dob'), relationship:g('dep'+i+'Rel')});\r\n    }\r\n\r\n    const planResult=computePremium();\r\n    const plan={\r\n      tripType:S.tripType, tripTypeLabel:tripTypeLabel(S.tripType),\r\n      tier: planResult && planResult.tier ? planResult.tier.name : null,\r\n      durationBand: planResult && planResult.band ? planResult.band.label : null,\r\n      winterSports: !!(planResult && planResult.winter),\r\n      corpEmployees: S.tripType==='corporate' ? g('corpEmployees') : null,\r\n      corpManDays: S.tripType==='corporate' ? g('corpDays') : null,\r\n      estimatedPremiumKES: planResult && planResult.total ? Math.round(planResult.total*100)\/100 : null,\r\n      premiumBreakdown: planResult && planResult.rows ? planResult.rows.map(r=>({label:r.label, amountKES:Math.round(r.amount*100)\/100})) : []\r\n    };\r\n\r\n    return {\r\n      product_line:'Travel Insurance',\r\n      submitted_at:new Date().toISOString(),\r\n      plan,\r\n      traveller:{\r\n        title:radio('title'), fullName:g('fullName'), mobile:g('mobile'), dob:g('dob'), passportNo:g('passportNo'),\r\n        citizenship:g('citizenship'), postalAddress:g('postalAddress'), postalCode:g('postalCode'),\r\n        town:g('town'), country:g('country'), occupation:g('occupation')\r\n      },\r\n      dependants,\r\n      contact:{ permanentAddress:g('permanentAddress'), telephone:g('telephone') },\r\n      journey:{\r\n        destination:g('destination'), airline:g('airline'), purposes:[...S.purposes], purposeOther:g('purposeOther'),\r\n        departureDate:g('departureDate'), returnDate:g('returnDate')\r\n      },\r\n      emergency:{\r\n        localName:g('localName'), localContact:g('localContact'),\r\n        visitName:g('visitName'), visitContact:g('visitContact')\r\n      },\r\n      medical:{\r\n        priorCondition:radio('priorCondition'), conditionDetail:g('conditionDetail'),\r\n        doctorName:g('doctorName'), doctorAddress:g('doctorAddress'), doctorPhone:g('doctorPhone')\r\n      },\r\n      risk:{ priorClaim:radio('priorClaim'), claimDetail:g('claimDetail') },\r\n      declaration:{ intermediary:g('intermediary'), signed:hasSignature }\r\n    };\r\n  }\r\n\r\n  \/\/ ---- Build a standalone, branded summary PDF in the browser (pdf-lib) --\r\n  async function buildSummaryPdf(p, sigDataUrl){\r\n    if(!window.PDFLib) return null;\r\n    const {PDFDocument, StandardFonts, rgb}=window.PDFLib;\r\n    const pdf=await PDFDocument.create();\r\n    const font=await pdf.embedFont(StandardFonts.Helvetica);\r\n    const bold=await pdf.embedFont(StandardFonts.HelveticaBold);\r\n    const W=595.28, H=841.89, margin=40, bottom=48;\r\n    const navy=rgb(0.224,0.212,0.502), acc=rgb(0.247,0.651,0.867), white=rgb(1,1,1),\r\n          mut=rgb(0.4,0.46,0.55), ink=rgb(0.086,0.157,0.239);\r\n    let pg, y;\r\n\r\n    function newPage(continued){\r\n      pg=pdf.addPage([W,H]);\r\n      pg.drawRectangle({x:0,y:H-34,width:W,height:34,color:navy});\r\n      pg.drawRectangle({x:0,y:H-36.4,width:W,height:2.4,color:acc});\r\n      pg.drawText('GEMINIA INSURANCE',{x:margin,y:H-22,size:15,font:bold,color:white});\r\n      pg.drawText('Travel Insurance \u2014 Applicant Summary'+(continued?' (continued)':''),\r\n        {x:margin,y:H-31,size:9,font,color:white});\r\n      y=H-58;\r\n    }\r\n    function ensureSpace(need){ if(y-need<bottom) newPage(true); }\r\n    function head(t){\r\n      ensureSpace(26);\r\n      pg.drawText(t.toUpperCase(),{x:margin,y,size:10,font:bold,color:navy});\r\n      pg.drawLine({start:{x:margin,y:y-4},end:{x:W-margin,y:y-4},thickness:1,color:acc});\r\n      y-=18;\r\n    }\r\n    function kv(k,v){\r\n      ensureSpace(15);\r\n      pg.drawText(k,{x:margin+2,y,size:9,font,color:mut});\r\n      pg.drawText(String(v||'\u2014'),{x:230,y,size:9.5,font:bold,color:ink,maxWidth:W-230-margin});\r\n      y-=15;\r\n    }\r\n    function para(t,size=9){\r\n      const words=String(t).split(' '); const maxW=W-2*margin; let line='';\r\n      words.forEach(w=>{\r\n        const test=line?line+' '+w:w;\r\n        if(font.widthOfTextAtSize(test,size)>maxW){\r\n          ensureSpace(13); pg.drawText(line,{x:margin,y,size,font,color:mut}); y-=13; line=w;\r\n        }else line=test;\r\n      });\r\n      if(line){ ensureSpace(13); pg.drawText(line,{x:margin,y,size,font,color:mut}); y-=13; }\r\n    }\r\n\r\n    newPage(false);\r\n\r\n    head('Traveller');\r\n    kv('Name',(p.traveller.title?p.traveller.title+' ':'')+p.traveller.fullName);\r\n    kv('Mobile',p.traveller.mobile); kv('Date of birth',p.traveller.dob); kv('Passport No',p.traveller.passportNo);\r\n    kv('Citizenship',p.traveller.citizenship);\r\n    kv('Postal address',(p.traveller.postalAddress||'\u2014')+(p.traveller.postalCode?(', '+p.traveller.postalCode):''));\r\n    kv('Town \/ Country',(p.traveller.town||'\u2014')+' \/ '+(p.traveller.country||'\u2014'));\r\n    kv('Occupation',p.traveller.occupation);\r\n\r\n    if((p.dependants||[]).length){\r\n      y-=6; head('Travelling dependants');\r\n      p.dependants.forEach((d,i)=>{\r\n        kv('Dependant '+(i+1),(d.name||'\u2014')+' \u00b7 '+(d.relationship||'\u2014')+' \u00b7 Passport '+(d.passport||'\u2014')+(d.dob?(' \u00b7 DOB '+d.dob):''));\r\n      });\r\n    }\r\n\r\n    y-=6; head('Plan & estimated premium');\r\n    kv('Type of cover',p.plan.tripTypeLabel);\r\n    if(p.plan.tier) kv('Plan',p.plan.tier);\r\n    if(p.plan.durationBand) kv('Duration band',p.plan.durationBand);\r\n    if(p.plan.winterSports) kv('Winter sports','Added (+100%)');\r\n    if(p.plan.tripType==='corporate'){\r\n      kv('Employees to cover',p.plan.corpEmployees);\r\n      kv('Man-days\/year',p.plan.corpManDays);\r\n    }\r\n    kv(p.plan.tripType==='corporate'?'Estimated annual premium':'Estimated total premium',\r\n      p.plan.estimatedPremiumKES!=null ? ('KES '+p.plan.estimatedPremiumKES.toLocaleString('en-KE',{minimumFractionDigits:2,maximumFractionDigits:2})) : 'To be confirmed by advisor');\r\n    para('This premium is an indicative estimate from Geminia\\'s published rate card and is not a binding quote. Final premium, eligibility and any age-related loading will be confirmed by your Geminia advisor.',8);\r\n\r\n    y-=6; head('Contact');\r\n    kv('Permanent address',p.contact.permanentAddress); kv('Telephone',p.contact.telephone);\r\n\r\n    y-=6; head('Journey');\r\n    kv('Destination',p.journey.destination); kv('Airline',p.journey.airline);\r\n    kv('Purpose',(p.journey.purposes||[]).join(', ')+(p.journey.purposeOther?(' \u2014 '+p.journey.purposeOther):''));\r\n    kv('Departure',p.journey.departureDate); kv('Return',p.journey.returnDate);\r\n\r\n    y-=6; head('Emergency contacts');\r\n    kv('Local',(p.emergency.localName||'\u2014')+' \u2014 '+(p.emergency.localContact||'\u2014'));\r\n    if(p.emergency.visitName) kv('Country of visit',p.emergency.visitName+' \u2014 '+(p.emergency.visitContact||'\u2014'));\r\n\r\n    y-=6; head('Medical');\r\n    kv('Prior condition\/treatment (2yr)',p.medical.priorCondition+(p.medical.conditionDetail?(' \u2014 '+p.medical.conditionDetail):''));\r\n    if(p.medical.doctorName||p.medical.doctorPhone) kv('Regular doctor',(p.medical.doctorName||'\u2014')+' \u00b7 '+(p.medical.doctorPhone||'\u2014')+(p.medical.doctorAddress?(' \u00b7 '+p.medical.doctorAddress):''));\r\n\r\n    y-=6; head('Insurance history');\r\n    kv('Prior claim\/decline\/special conditions (5yr)',p.risk.priorClaim+(p.risk.claimDetail?(' \u2014 '+p.risk.claimDetail):''));\r\n\r\n    y-=6; head('Declaration');\r\n    para('I hereby declare that the above answers are true and complete and that I have withheld no information. I agree that this proposal and declaration and the truth and completeness of the answers herein shall be the basis of the contract between all insured persons and Geminia Insurance Company Ltd.');\r\n    kv('Intermediary',p.declaration.intermediary);\r\n    y-=8;\r\n    ensureSpace(64);\r\n    pg.drawText('Signature:',{x:margin,y,size:9,font,color:mut});\r\n    if(sigDataUrl){\r\n      try{\r\n        const sigBytes=await fetch(sigDataUrl).then(r=>r.arrayBuffer());\r\n        const sigImg=await pdf.embedPng(sigBytes);\r\n        const dims=sigImg.scaleToFit(170,54);\r\n        pg.drawImage(sigImg,{x:margin+68,y:y-dims.height+9,width:dims.width,height:dims.height});\r\n        y-=(dims.height+16);\r\n      }catch(err){\r\n        pg.drawText('(signature image could not be embedded)',{x:margin+68,y,size:8.5,font,color:mut}); y-=16;\r\n      }\r\n    }else{\r\n      pg.drawText('Not captured online',{x:margin+68,y,size:9.5,font,color:ink}); y-=16;\r\n    }\r\n    kv('Date',new Date().toLocaleDateString('en-GB'));\r\n\r\n    pg.drawText('Liability does not commence until the proposal is accepted, premium received and policy issued.',\r\n      {x:margin,y:30,size:8,font,color:mut});\r\n\r\n    return await pdf.saveAsBase64();\r\n  }\r\n\r\n  async function submit(){\r\n    const btn=$('#gtiNext');\r\n    btn.classList.add('loading');btn.disabled=true;$('#gtiPrev').disabled=true;\r\n    const finish=()=>{ btn.classList.remove('loading');btn.disabled=false;$('#gtiPrev').disabled=false; goTo('done'); };\r\n    const p=buildPayload();\r\n    const sigCanvas=$('#gtiSigCanvas');\r\n    const sigDataUrl = hasSignature && sigCanvas ? sigCanvas.toDataURL('image\/png') : '';\r\n    let pdfBase64=null;\r\n    try{ pdfBase64=await buildSummaryPdf(p, sigDataUrl); }\r\n    catch(err){ console.warn('PDF build skipped:',err); } \/\/ never block the customer\r\n    const body={ lead:p, pdfBase64,\r\n      filename:'Travel_Insurance_'+((p.traveller.fullName||'Proposal').replace(\/[^\\w]+\/g,'_').slice(0,40))+'.pdf' };\r\n    if(!ENDPOINT){ setTimeout(finish,1200); return; } \/\/ demo mode\r\n    fetch(ENDPOINT,{\r\n      method:'POST',\r\n      headers:{'Content-Type':'text\/plain;charset=utf-8'}, \/\/ avoids Apps Script CORS preflight\r\n      body:JSON.stringify(body)\r\n    }).then(finish).catch(finish); \/\/ advisor still gets the lead; never block the user\r\n  }\r\n\r\n  \/* ---- Wire up ---------------------------------------------------- *\/\r\n  $('[data-cta=\"start\"]').addEventListener('click',function(){ withLoading(this,()=>goTo(2),420); });\r\n\r\n  \/\/ ---- Exit to website (available mid-journey) --------------------\r\n  const confirmEl=$('#gtiConfirm');\r\n  $('#gtiExit').addEventListener('click',()=>{ confirmEl.hidden=false; $('#gtiStay').focus(); });\r\n  $('#gtiStay').addEventListener('click',()=>{ confirmEl.hidden=true; $('#gtiExit').focus(); });\r\n  $('#gtiLeave').addEventListener('click',function(){ withLoading(this,()=>{ window.top.location.href=RETURN_URL; },500); });\r\n  root.addEventListener('keydown',e=>{ if(e.key==='Escape' && !confirmEl.hidden){ confirmEl.hidden=true; $('#gtiExit').focus(); } });\r\n  $('[data-cta=\"return\"]').addEventListener('click',function(){ withLoading(this,()=>{ window.top.location.href=RETURN_URL; },500); });\r\n  $('#gtiNext').addEventListener('click',next);\r\n  $('#gtiPrev').addEventListener('click',prev);\r\n\r\n  \/\/ ---- Plan step interactions --------------------------------------\r\n  $('#gtiPlanCards').addEventListener('click',e=>{\r\n    const card=e.target.closest('.gti-plancard');\r\n    if(!card) return;\r\n    S.selectedTier=card.dataset.tier;\r\n    clearErr('planTier');\r\n    renderPlanStep(false);\r\n  });\r\n  const winterCb=$('#gtiWinterSports');\r\n  if(winterCb){\r\n    winterCb.addEventListener('change',()=>{\r\n      $('#gtiWinterToggle').classList.toggle('sel',winterCb.checked);\r\n      updatePremiumBox();\r\n    });\r\n  }\r\n  ['corpEmployees','corpDays'].forEach(id=>{\r\n    const el=$('#'+id);\r\n    if(el) el.addEventListener('input',()=>{ clearErr(id); updatePremiumBox(); });\r\n  });\r\n\r\n  render();\r\n})();\r\n<\/script>\r\n<\/div>\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>Step 1 of 11 Welcome Travel With Confidence Answer a few simple questions and we&#8217;ll prepare your Travel Insurance proposal for a Geminia advisor to quote \u2014 before you set off. Get Started \u2192 About you Tell us about the traveller This is Part 1 of the official Geminia Travel Insurance proposal form. Title Mr. [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-1437","page","type-page","status-publish","hentry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.0 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Travel Insurance Form - Geminia Insurance<\/title>\n<meta name=\"robots\" content=\"noindex, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Travel Insurance Form - Geminia Insurance\" \/>\n<meta property=\"og:description\" content=\"Step 1 of 11 Welcome Travel With Confidence Answer a few simple questions and we&#8217;ll prepare your Travel Insurance proposal for a Geminia advisor to quote \u2014 before you set off. Get Started \u2192 About you Tell us about the traveller This is Part 1 of the official Geminia Travel Insurance proposal form. Title Mr. [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/geminia.co.ke\/dev\/travel-insurance-form\/\" \/>\n<meta property=\"og:site_name\" content=\"Geminia Insurance\" \/>\n<meta property=\"article:modified_time\" content=\"2026-08-26T07:37:40+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/geminia.co.ke\/dev\/wp-content\/uploads\/2026\/08\/Travel-Insurance.jpg\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"4 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/geminia.co.ke\\\/dev\\\/travel-insurance-form\\\/\",\"url\":\"https:\\\/\\\/geminia.co.ke\\\/dev\\\/travel-insurance-form\\\/\",\"name\":\"Travel Insurance Form - Geminia Insurance\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/geminia.co.ke\\\/dev\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/geminia.co.ke\\\/dev\\\/travel-insurance-form\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/geminia.co.ke\\\/dev\\\/travel-insurance-form\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/geminia.co.ke\\\/dev\\\/wp-content\\\/uploads\\\/2026\\\/08\\\/Travel-Insurance.jpg\",\"datePublished\":\"2026-08-14T08:20:50+00:00\",\"dateModified\":\"2026-08-26T07:37:40+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/geminia.co.ke\\\/dev\\\/travel-insurance-form\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/geminia.co.ke\\\/dev\\\/travel-insurance-form\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/geminia.co.ke\\\/dev\\\/travel-insurance-form\\\/#primaryimage\",\"url\":\"https:\\\/\\\/geminia.co.ke\\\/dev\\\/wp-content\\\/uploads\\\/2026\\\/08\\\/Travel-Insurance.jpg\",\"contentUrl\":\"https:\\\/\\\/geminia.co.ke\\\/dev\\\/wp-content\\\/uploads\\\/2026\\\/08\\\/Travel-Insurance.jpg\",\"width\":1600,\"height\":2000},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/geminia.co.ke\\\/dev\\\/travel-insurance-form\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/geminia.co.ke\\\/dev\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Travel Insurance Form\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/geminia.co.ke\\\/dev\\\/#website\",\"url\":\"https:\\\/\\\/geminia.co.ke\\\/dev\\\/\",\"name\":\"Geminia Insurance\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/geminia.co.ke\\\/dev\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/geminia.co.ke\\\/dev\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/geminia.co.ke\\\/dev\\\/#organization\",\"name\":\"Geminia Insurance\",\"url\":\"https:\\\/\\\/geminia.co.ke\\\/dev\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/geminia.co.ke\\\/dev\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/geminia.co.ke\\\/dev\\\/wp-content\\\/uploads\\\/2026\\\/04\\\/Geminia-Insurance-Logo.png\",\"contentUrl\":\"https:\\\/\\\/geminia.co.ke\\\/dev\\\/wp-content\\\/uploads\\\/2026\\\/04\\\/Geminia-Insurance-Logo.png\",\"width\":250,\"height\":245,\"caption\":\"Geminia Insurance\"},\"image\":{\"@id\":\"https:\\\/\\\/geminia.co.ke\\\/dev\\\/#\\\/schema\\\/logo\\\/image\\\/\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Travel Insurance Form - Geminia Insurance","robots":{"index":"noindex","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"og_locale":"en_US","og_type":"article","og_title":"Travel Insurance Form - Geminia Insurance","og_description":"Step 1 of 11 Welcome Travel With Confidence Answer a few simple questions and we&#8217;ll prepare your Travel Insurance proposal for a Geminia advisor to quote \u2014 before you set off. Get Started \u2192 About you Tell us about the traveller This is Part 1 of the official Geminia Travel Insurance proposal form. Title Mr. [&hellip;]","og_url":"https:\/\/geminia.co.ke\/dev\/travel-insurance-form\/","og_site_name":"Geminia Insurance","article_modified_time":"2026-08-26T07:37:40+00:00","og_image":[{"url":"https:\/\/geminia.co.ke\/dev\/wp-content\/uploads\/2026\/08\/Travel-Insurance.jpg","type":"","width":"","height":""}],"twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/geminia.co.ke\/dev\/travel-insurance-form\/","url":"https:\/\/geminia.co.ke\/dev\/travel-insurance-form\/","name":"Travel Insurance Form - Geminia Insurance","isPartOf":{"@id":"https:\/\/geminia.co.ke\/dev\/#website"},"primaryImageOfPage":{"@id":"https:\/\/geminia.co.ke\/dev\/travel-insurance-form\/#primaryimage"},"image":{"@id":"https:\/\/geminia.co.ke\/dev\/travel-insurance-form\/#primaryimage"},"thumbnailUrl":"https:\/\/geminia.co.ke\/dev\/wp-content\/uploads\/2026\/08\/Travel-Insurance.jpg","datePublished":"2026-08-14T08:20:50+00:00","dateModified":"2026-08-26T07:37:40+00:00","breadcrumb":{"@id":"https:\/\/geminia.co.ke\/dev\/travel-insurance-form\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/geminia.co.ke\/dev\/travel-insurance-form\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/geminia.co.ke\/dev\/travel-insurance-form\/#primaryimage","url":"https:\/\/geminia.co.ke\/dev\/wp-content\/uploads\/2026\/08\/Travel-Insurance.jpg","contentUrl":"https:\/\/geminia.co.ke\/dev\/wp-content\/uploads\/2026\/08\/Travel-Insurance.jpg","width":1600,"height":2000},{"@type":"BreadcrumbList","@id":"https:\/\/geminia.co.ke\/dev\/travel-insurance-form\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/geminia.co.ke\/dev\/"},{"@type":"ListItem","position":2,"name":"Travel Insurance Form"}]},{"@type":"WebSite","@id":"https:\/\/geminia.co.ke\/dev\/#website","url":"https:\/\/geminia.co.ke\/dev\/","name":"Geminia Insurance","description":"","publisher":{"@id":"https:\/\/geminia.co.ke\/dev\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/geminia.co.ke\/dev\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/geminia.co.ke\/dev\/#organization","name":"Geminia Insurance","url":"https:\/\/geminia.co.ke\/dev\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/geminia.co.ke\/dev\/#\/schema\/logo\/image\/","url":"https:\/\/geminia.co.ke\/dev\/wp-content\/uploads\/2026\/04\/Geminia-Insurance-Logo.png","contentUrl":"https:\/\/geminia.co.ke\/dev\/wp-content\/uploads\/2026\/04\/Geminia-Insurance-Logo.png","width":250,"height":245,"caption":"Geminia Insurance"},"image":{"@id":"https:\/\/geminia.co.ke\/dev\/#\/schema\/logo\/image\/"}}]}},"_links":{"self":[{"href":"https:\/\/geminia.co.ke\/dev\/wp-json\/wp\/v2\/pages\/1437","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/geminia.co.ke\/dev\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/geminia.co.ke\/dev\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/geminia.co.ke\/dev\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/geminia.co.ke\/dev\/wp-json\/wp\/v2\/comments?post=1437"}],"version-history":[{"count":7,"href":"https:\/\/geminia.co.ke\/dev\/wp-json\/wp\/v2\/pages\/1437\/revisions"}],"predecessor-version":[{"id":1855,"href":"https:\/\/geminia.co.ke\/dev\/wp-json\/wp\/v2\/pages\/1437\/revisions\/1855"}],"wp:attachment":[{"href":"https:\/\/geminia.co.ke\/dev\/wp-json\/wp\/v2\/media?parent=1437"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}