{"id":1381,"date":"2026-08-13T06:41:24","date_gmt":"2026-08-13T06:41:24","guid":{"rendered":"https:\/\/geminia.co.ke\/dev\/?page_id=1381"},"modified":"2026-08-13T12:05:23","modified_gmt":"2026-08-13T12:05:23","slug":"homepack-insurance-form","status":"publish","type":"page","link":"https:\/\/geminia.co.ke\/dev\/homepack-insurance-form\/","title":{"rendered":"Homepack Insurance Form"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"1381\" class=\"elementor elementor-1381\">\n\t\t\t\t<div class=\"elementor-element elementor-element-3b8e9b6 e-con-full e-flex e-con e-parent\" data-id=\"3b8e9b6\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-23fb3ca elementor-widget elementor-widget-html\" data-id=\"23fb3ca\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<div id=\"ghp\"\r\n     data-endpoint=\"https:\/\/script.google.com\/macros\/s\/AKfycbywbzZj0bp1uGDeoD9oL6cxBKKyAHF2OzMZ-xUv6PczHA2_fgX1IxhWV7Ws4Qwzoz7Mfg\/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#ghp{\r\n  --primary:#3fa6dd;\r\n  --accent:#393680;\r\n  --grad:#3fa6dd;   \/* solid blue fill *\/\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#ghp *,#ghp *::before,#ghp *::after{box-sizing:border-box;margin:0;padding:0;}\r\n#ghp button{font-family:inherit;}\r\n\r\n\/* ---- Shell --------------------------------------------------------- *\/\r\n#ghp .ghp-shell{max-width:760px;margin:0 auto;}\r\n\r\n\/* ---- Progress ------------------------------------------------------ *\/\r\n#ghp .ghp-progress{margin:0 4px 22px;opacity:0;transform:translateY(-6px);\r\n  transition:opacity .4s ease,transform .4s ease;}\r\n#ghp .ghp-progress.on{opacity:1;transform:none;}\r\n#ghp .ghp-progress-top{display:flex;justify-content:space-between;align-items:baseline;\r\n  margin-bottom:10px;}\r\n#ghp .ghp-step-label{font-size:13px;font-weight:600;color:var(--muted);letter-spacing:.01em;}\r\n#ghp .ghp-step-name{font-size:13px;font-weight:600;color:var(--primary);}\r\n#ghp .ghp-track{height:7px;background:#E9EEF4;border-radius:99px;overflow:hidden;}\r\n#ghp .ghp-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#ghp .ghp-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#ghp .ghp-card::before{content:\"\";position:absolute;top:0;left:0;right:0;height:3px;\r\n  background:var(--grad);z-index:5;}\r\n#ghp .ghp-step{display:none;}\r\n#ghp .ghp-step.active{display:block;animation:ghpIn .42s cubic-bezier(.22,.61,.36,1);}\r\n#ghp .ghp-step.leaving{animation:ghpOut .28s ease forwards;}\r\n@keyframes ghpIn{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}\r\n@keyframes ghpOut{to{opacity:0;transform:translateY(-10px)}}\r\n\r\n#ghp .ghp-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#ghp h2.ghp-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#ghp .ghp-sub{color:var(--muted);font-size:15px;margin-bottom:26px;max-width:56ch;}\r\n#ghp .ghp-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#ghp .ghp-sec:first-of-type{margin-top:0;padding-top:0;border-top:0;}\r\n\r\n\/* ---- Fields -------------------------------------------------------- *\/\r\n#ghp .ghp-field{margin-bottom:20px;}\r\n#ghp .ghp-grid-2{display:grid;grid-template-columns:1fr 1fr;gap:16px;}\r\n#ghp label.ghp-lab{display:block;font-size:13.5px;font-weight:600;color:var(--ink);\r\n  margin-bottom:8px;}\r\n#ghp .ghp-req{color:var(--accent);}\r\n#ghp .ghp-hint{font-size:12.5px;color:var(--muted);margin-top:6px;}\r\n#ghp .ghp-input,#ghp .ghp-select,#ghp .ghp-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#ghp .ghp-area{resize:vertical;min-height:88px;}\r\n#ghp .ghp-input::placeholder,#ghp .ghp-area::placeholder{color:#9AA7B7;}\r\n#ghp .ghp-input:focus,#ghp .ghp-select:focus,#ghp .ghp-area:focus{\r\n  outline:none;border-color:var(--accent);box-shadow:0 0 0 4px rgba(63,166,221,.14);}\r\n#ghp .ghp-select{appearance:none;cursor:pointer;\r\n  background-image:url(\"data:image\/svg+xml;utf8,<svg xmlns='http:\/\/www.w3.org\/2000\/svg' width='20' height='20' fill='none' stroke='%2365758B' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><polyline points='6 9 12 15 18 9'\/><\/svg>\");\r\n  background-repeat:no-repeat;background-position:right 13px center;padding-right:42px;}\r\n#ghp .ghp-input.err,#ghp .ghp-select.err,#ghp .ghp-area.err{border-color:var(--err);\r\n  box-shadow:0 0 0 4px rgba(229,72,77,.12);}\r\n#ghp .ghp-err{display:none;color:var(--err);font-size:12.5px;font-weight:500;margin-top:7px;}\r\n#ghp .ghp-err.show{display:block;animation:ghpShakeIn .3s ease;}\r\n@keyframes ghpShakeIn{0%{opacity:0;transform:translateX(-4px)}100%{opacity:1;transform:none}}\r\n\r\n\/* currency prefix *\/\r\n#ghp .ghp-money{position:relative;}\r\n#ghp .ghp-money .ghp-cur{position:absolute;left:15px;top:50%;transform:translateY(-50%);\r\n  font-size:14px;font-weight:600;color:var(--muted);pointer-events:none;}\r\n#ghp .ghp-money .ghp-input{padding-left:52px;}\r\n\r\n\/* ---- Radio \/ choice rows ------------------------------------------ *\/\r\n#ghp .ghp-choices{display:grid;gap:10px;}\r\n#ghp .ghp-choices.row{grid-template-columns:1fr 1fr;}\r\n#ghp .ghp-choices.row3{grid-template-columns:repeat(3,1fr);}\r\n#ghp .ghp-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#ghp .ghp-choice:hover{border-color:#C7D6E6;background:#FBFDFF;}\r\n#ghp .ghp-choice input{position:absolute;opacity:0;width:0;height:0;}\r\n#ghp .ghp-dot{width:20px;height:20px;border-radius:50%;border:2px solid #C4D0DE;\r\n  flex:none;position:relative;transition:border-color .18s;}\r\n#ghp .ghp-dot::after{content:\"\";position:absolute;inset:3px;border-radius:50%;\r\n  background:var(--grad);transform:scale(0);transition:transform .18s;}\r\n#ghp .ghp-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#ghp .ghp-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#ghp .ghp-choice .ghp-ctxt{font-size:14.5px;font-weight:500;}\r\n#ghp .ghp-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#ghp .ghp-choice.sel .ghp-dot{border-color:var(--accent);}\r\n#ghp .ghp-choice.sel .ghp-dot::after{transform:scale(1);}\r\n#ghp .ghp-choice.sel .ghp-box{border-color:var(--accent);background:var(--grad);}\r\n#ghp .ghp-choice.sel .ghp-box::after{transform:rotate(45deg) scale(1);}\r\n\r\n\/* tall choice variant (multi-line content, e.g. liability limit options) *\/\r\n#ghp .ghp-choice.tall{align-items:flex-start;flex-direction:column;gap:4px;}\r\n#ghp .ghp-choice.tall .ghp-tall-head{display:flex;align-items:center;gap:12px;width:100%;}\r\n#ghp .ghp-choice.tall .ghp-tall-body{padding-left:32px;font-size:13px;color:var(--muted);\r\n  line-height:1.7;}\r\n#ghp .ghp-choice.tall .ghp-tall-body b{color:var(--ink);font-weight:600;}\r\n\r\n\/* ---- Protection \/ cover cards --------------------------------------- *\/\r\n#ghp .ghp-cards{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;}\r\n#ghp .ghp-pcard{position:relative;cursor:pointer;border:1.5px solid var(--line);\r\n  border-radius:var(--radius-in);background:#fff;padding:18px 12px;text-align:center;\r\n  transition:transform .18s,border-color .18s,box-shadow .18s,background .18s;user-select:none;}\r\n#ghp .ghp-pcard:hover{transform:translateY(-3px);border-color:#B9D3EA;\r\n  box-shadow:0 10px 22px rgba(57,54,128,.12);}\r\n#ghp .ghp-pemoji{font-size:26px;line-height:1;display:block;margin-bottom:10px;}\r\n#ghp .ghp-pname{font-size:12.5px;font-weight:600;color:var(--ink);line-height:1.3;}\r\n#ghp .ghp-pcheck{position:absolute;top:8px;right:8px;width:20px;height:20px;border-radius:50%;\r\n  background:#fff;border:1.5px solid var(--line);display:flex;align-items:center;\r\n  justify-content:center;transition:all .18s;}\r\n#ghp .ghp-pcheck svg{width:11px;height:11px;stroke:#fff;stroke-width:3;fill:none;\r\n  opacity:0;transform:scale(.4);transition:opacity .18s,transform .18s;}\r\n#ghp .ghp-pcard.sel{border-color:var(--primary);background:var(--grad);\r\n  box-shadow:0 12px 26px rgba(57,54,128,.30);}\r\n#ghp .ghp-pcard.sel .ghp-pname,#ghp .ghp-pcard.sel .ghp-pemoji{color:#fff;}\r\n#ghp .ghp-pcard.sel .ghp-pcheck{background:rgba(255,255,255,.22);border-color:transparent;}\r\n#ghp .ghp-pcard.sel .ghp-pcheck svg{opacity:1;transform:scale(1);}\r\n\r\n\/* ---- Review -------------------------------------------------------- *\/\r\n#ghp .ghp-summary{display:grid;gap:14px;}\r\n#ghp .ghp-sblock{border:1px solid var(--line-2);border-radius:var(--radius-in);\r\n  padding:16px 18px;background:#FCFDFE;}\r\n#ghp .ghp-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#ghp .ghp-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#ghp .ghp-srow:first-of-type{border-top:0;}\r\n#ghp .ghp-srow .k{color:var(--muted);}\r\n#ghp .ghp-srow .v{color:var(--ink);font-weight:600;text-align:right;}\r\n#ghp .ghp-tags{display:flex;flex-wrap:wrap;gap:8px;}\r\n#ghp .ghp-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\/* ---- Notice \/ reassurance ----------------------------------------- *\/\r\n#ghp .ghp-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#ghp .ghp-note svg{flex:none;width:17px;height:17px;stroke:var(--primary);margin-top:1px;}\r\n\r\n\/* ---- Signature pad -------------------------------------------------- *\/\r\n#ghp .ghp-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#ghp .ghp-sigwrap.focus{border-color:var(--accent);box-shadow:0 0 0 4px rgba(63,166,221,.14);}\r\n#ghp .ghp-sigcanvas{display:block;width:100%;height:170px;touch-action:none;cursor:crosshair;}\r\n#ghp .ghp-sig-placeholder{position:absolute;left:16px;bottom:12px;color:#B7C1D1;\r\n  font-size:13px;pointer-events:none;transition:opacity .15s;}\r\n#ghp .ghp-sig-placeholder.hide{opacity:0;}\r\n#ghp .ghp-sig-actions{display:flex;justify-content:flex-end;margin-top:8px;}\r\n#ghp .ghp-sig-actions .ghp-btn{padding:8px 16px;font-size:13px;}\r\n#ghp .ghp-sig-preview{max-width:170px;max-height:60px;display:block;\r\n  border:1px solid var(--line-2);border-radius:8px;background:#fff;padding:4px;margin-top:4px;}\r\n\r\n\/* ---- Footer \/ buttons --------------------------------------------- *\/\r\n#ghp .ghp-foot{display:flex;justify-content:space-between;align-items:center;gap:14px;\r\n  margin-top:30px;}\r\n#ghp .ghp-foot.solo{justify-content:center;}\r\n#ghp .ghp-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#ghp .ghp-btn:active{transform:translateY(1px);}\r\n#ghp .ghp-btn:focus-visible{outline:3px solid rgba(63,166,221,.4);outline-offset:2px;}\r\n#ghp .ghp-primary{background:var(--grad);color:#fff;box-shadow:var(--shadow-btn);}\r\n#ghp .ghp-primary:hover{transform:translateY(-2px);box-shadow:0 12px 26px rgba(57,54,128,.36);}\r\n#ghp .ghp-ghost{background:#fff;color:var(--muted);border:1.5px solid var(--line);}\r\n#ghp .ghp-ghost:hover{border-color:#C7D6E6;color:var(--ink);background:#FBFDFF;}\r\n#ghp .ghp-btn.wide{width:100%;}\r\n#ghp .ghp-btn .ghp-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:ghpSpin .7s linear infinite;}\r\n#ghp .ghp-ghost .ghp-spin{border-color:rgba(101,117,139,.4);border-top-color:var(--muted);}\r\n#ghp .ghp-btn.loading .ghp-spin{display:block;}\r\n#ghp .ghp-btn.loading .ghp-btxt{opacity:.7;}\r\n#ghp .ghp-btn[disabled]{opacity:.6;cursor:not-allowed;}\r\n@keyframes ghpSpin{to{transform:rotate(360deg)}}\r\n\r\n\/* ---- Exit control + leave confirmation ----------------------------- *\/\r\n#ghp .ghp-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#ghp .ghp-exit:hover{border-color:#C7D6E6;color:var(--ink);background:#FBFDFF;transform:rotate(90deg);}\r\n#ghp .ghp-exit:focus-visible{outline:3px solid rgba(63,166,221,.4);outline-offset:2px;}\r\n#ghp .ghp-exit svg{width:15px;height:15px;stroke:currentColor;stroke-width:2.2;fill:none;stroke-linecap:round;stroke-linejoin:round;}\r\n#ghp .ghp-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:ghpFade .2s ease;}\r\n#ghp .ghp-confirm[hidden]{display:none;}\r\n@keyframes ghpFade{from{opacity:0}to{opacity:1}}\r\n#ghp .ghp-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:ghpIn .28s cubic-bezier(.22,.61,.36,1);}\r\n#ghp .ghp-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#ghp .ghp-confirm-ic svg{width:24px;height:24px;stroke:var(--primary);fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;}\r\n#ghp .ghp-confirm-box h3{font-family:'Poppins',sans-serif;font-size:18px;font-weight:600;color:var(--ink);margin-bottom:6px;}\r\n#ghp .ghp-confirm-box p{color:var(--muted);font-size:14px;margin-bottom:20px;}\r\n#ghp .ghp-confirm-actions{display:flex;gap:10px;}\r\n#ghp .ghp-confirm-actions .ghp-btn{flex:1;padding:12px 16px;}\r\n\r\n\/* ---- Welcome (photo + content split hero) --------------------------- *\/\r\n#ghp .ghp-card.ghp-card--hero::before{display:none;}\r\n#ghp .ghp-hero{display:flex;align-items:stretch;gap:32px;min-height:360px;}\r\n#ghp .ghp-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#ghp .ghp-hero-media img{width:100%;height:100%;min-height:360px;object-fit:cover;display:block;}\r\n#ghp .ghp-hero-content{flex:1 1 56%;display:flex;flex-direction:column;justify-content:center;\r\n  padding:16px 12px 16px 4px;}\r\n#ghp .ghp-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#ghp .ghp-hero-content h1 .hl{color:var(--primary);}\r\n#ghp .ghp-hero-content p{color:var(--muted);font-size:15.5px;line-height:1.65;\r\n  max-width:42ch;margin-bottom:26px;}\r\n#ghp .ghp-hero-content .ghp-btn{align-self:flex-start;padding:13px 24px;font-size:14.5px;}\r\n@media(max-width:680px){\r\n  #ghp .ghp-hero{flex-direction:column;min-height:0;}\r\n  #ghp .ghp-hero-media{flex:none;width:100%;aspect-ratio:16\/11;}\r\n  #ghp .ghp-hero-media img{min-height:0;}\r\n  #ghp .ghp-hero-content{padding:22px 4px 4px;}\r\n}\r\n\r\n\/* ---- Success ------------------------------------------------------- *\/\r\n#ghp .ghp-success{text-align:center;padding:18px 6px;}\r\n#ghp .ghp-scheck{width:104px;height:104px;margin:6px auto 26px;position:relative;}\r\n#ghp .ghp-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:ghpPop .55s cubic-bezier(.2,.8,.3,1.4);}\r\n#ghp .ghp-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#ghp .ghp-scheck svg path{stroke-dasharray:48;stroke-dashoffset:48;\r\n  animation:ghpDraw .5s .35s forwards cubic-bezier(.65,0,.35,1);}\r\n@keyframes ghpPop{0%{transform:scale(0)}70%{transform:scale(1.06)}100%{transform:scale(1)}}\r\n@keyframes ghpDraw{to{stroke-dashoffset:0}}\r\n#ghp .ghp-success h1{font-family:'Poppins',sans-serif;font-weight:700;font-size:29px;\r\n  margin-bottom:14px;color:var(--ink);}\r\n#ghp .ghp-success p{color:var(--muted);font-size:15.5px;max-width:44ch;margin:0 auto 12px;}\r\n#ghp .ghp-success .ghp-btn{margin-top:22px;padding:15px 32px;}\r\n\r\n\/* ---- Responsive ---------------------------------------------------- *\/\r\n@media(max-width:560px){\r\n  #ghp{padding:16px 10px 36px;}\r\n  #ghp .ghp-card{padding:26px 20px;border-radius:14px;}\r\n  #ghp .ghp-grid-2{grid-template-columns:1fr;}\r\n  #ghp .ghp-cards{grid-template-columns:repeat(2,1fr);}\r\n  #ghp .ghp-choices.row,#ghp .ghp-choices.row3{grid-template-columns:1fr;}\r\n  #ghp h2.ghp-h{font-size:22px;}\r\n  #ghp .ghp-foot .ghp-btn{padding:13px 18px;font-size:14.5px;}\r\n}\r\n@media(prefers-reduced-motion:reduce){\r\n  #ghp *{animation:none!important;transition:none!important;}\r\n}\r\n<\/style>\r\n\r\n<div class=\"ghp-shell\">\r\n\r\n  <!-- Progress -->\r\n  <div class=\"ghp-progress\" id=\"ghpProgress\">\r\n    <div class=\"ghp-progress-top\">\r\n      <span class=\"ghp-step-label\">Step <b id=\"ghpStepNo\">1<\/b> of 8<\/span>\r\n      <span class=\"ghp-step-name\" id=\"ghpStepName\">Welcome<\/span>\r\n    <\/div>\r\n    <div class=\"ghp-track\"><div class=\"ghp-fill\" id=\"ghpFill\"><\/div><\/div>\r\n  <\/div>\r\n\r\n  <div class=\"ghp-card\">\r\n\r\n    <!-- ===================== STEP 1 \u2014 WELCOME ===================== -->\r\n    <section class=\"ghp-step active\" data-step=\"1\">\r\n      <div class=\"ghp-hero\">\r\n        <div class=\"ghp-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\/Hompack-Proposal-Form.jpg\" alt=\"Family relaxing together at home\" loading=\"lazy\">\r\n        <\/div>\r\n        <div class=\"ghp-hero-content\">\r\n          <h1>Protect Your Home <span class=\"hl\">in Minutes<\/span><\/h1>\r\n          <p>Answer a few simple questions and we'll prepare your Home Pack Insurance proposal for a Geminia advisor to quote.<\/p>\r\n          <button class=\"ghp-btn ghp-primary\" data-cta=\"start\">\r\n            <span class=\"ghp-spin\"><\/span><span class=\"ghp-btxt\">Get Started \u2192<\/span>\r\n          <\/button>\r\n        <\/div>\r\n      <\/div>\r\n    <\/section>\r\n\r\n    <!-- ===================== STEP 2 \u2014 PROPOSER ===================== -->\r\n    <section class=\"ghp-step\" data-step=\"2\">\r\n      <span class=\"ghp-eyebrow\">About you<\/span>\r\n      <h2 class=\"ghp-h\">Tell us about the proposer<\/h2>\r\n      <p class=\"ghp-sub\">These details go on Part 1 of the official Geminia Home Pack proposal form.<\/p>\r\n\r\n      <div class=\"ghp-field\">\r\n        <label class=\"ghp-lab\" for=\"fullName\">Full name of the proposer <span class=\"ghp-req\">*<\/span><\/label>\r\n        <input class=\"ghp-input\" id=\"fullName\" type=\"text\" placeholder=\"e.g. Jane Wanjiru\" autocomplete=\"name\">\r\n        <div class=\"ghp-err\" data-err=\"fullName\">Please enter the proposer's full name.<\/div>\r\n      <\/div>\r\n\r\n      <div class=\"ghp-grid-2\">\r\n        <div class=\"ghp-field\">\r\n          <label class=\"ghp-lab\" for=\"idPassport\">National ID \/ Passport No <span class=\"ghp-req\">*<\/span><\/label>\r\n          <input class=\"ghp-input\" id=\"idPassport\" type=\"text\" placeholder=\"e.g. 12345678\">\r\n          <div class=\"ghp-err\" data-err=\"idPassport\">Please enter an ID or passport number.<\/div>\r\n        <\/div>\r\n        <div class=\"ghp-field\">\r\n          <label class=\"ghp-lab\" for=\"kraPin\">KRA PIN No <span style=\"font-weight:400;color:var(--muted);\">(optional)<\/span><\/label>\r\n          <input class=\"ghp-input\" id=\"kraPin\" type=\"text\" placeholder=\"e.g. A001234567X\">\r\n        <\/div>\r\n      <\/div>\r\n\r\n      <div class=\"ghp-field\">\r\n        <label class=\"ghp-lab\" for=\"postal\">Postal address <span style=\"font-weight:400;color:var(--muted);\">(optional)<\/span><\/label>\r\n        <input class=\"ghp-input\" id=\"postal\" type=\"text\" placeholder=\"e.g. P.O. Box 1234-00100, Nairobi\">\r\n      <\/div>\r\n\r\n      <div class=\"ghp-grid-2\">\r\n        <div class=\"ghp-field\">\r\n          <label class=\"ghp-lab\" for=\"email\">Email address <span class=\"ghp-req\">*<\/span><\/label>\r\n          <input class=\"ghp-input\" id=\"email\" type=\"email\" placeholder=\"you@example.com\" autocomplete=\"email\" inputmode=\"email\">\r\n          <div class=\"ghp-err\" data-err=\"email\">Enter a valid email address.<\/div>\r\n        <\/div>\r\n        <div class=\"ghp-field\">\r\n          <label class=\"ghp-lab\" for=\"mobile\">Contact mobile number <span class=\"ghp-req\">*<\/span><\/label>\r\n          <input class=\"ghp-input\" id=\"mobile\" type=\"tel\" placeholder=\"07XX XXX XXX\" autocomplete=\"tel\" inputmode=\"tel\">\r\n          <div class=\"ghp-err\" data-err=\"mobile\">Enter a valid Kenyan phone number.<\/div>\r\n        <\/div>\r\n      <\/div>\r\n\r\n      <div class=\"ghp-field\">\r\n        <label class=\"ghp-lab\" for=\"location\">Location of the premises <span class=\"ghp-req\">*<\/span><\/label>\r\n        <input class=\"ghp-input\" id=\"location\" type=\"text\" placeholder=\"e.g. Kilimani, Nairobi\">\r\n        <div class=\"ghp-err\" data-err=\"location\">Please enter the location of the premises.<\/div>\r\n      <\/div>\r\n\r\n      <div class=\"ghp-field\">\r\n        <label class=\"ghp-lab\">How long have you occupied the dwelling? <span class=\"ghp-req\">*<\/span><\/label>\r\n        <div class=\"ghp-choices row\" data-radio=\"years\">\r\n          <label class=\"ghp-choice\"><input type=\"radio\" name=\"years\" value=\"Less than 1 year\"><span class=\"ghp-dot\"><\/span><span class=\"ghp-ctxt\">Less than 1 year<\/span><\/label>\r\n          <label class=\"ghp-choice\"><input type=\"radio\" name=\"years\" value=\"1\u20133 years\"><span class=\"ghp-dot\"><\/span><span class=\"ghp-ctxt\">1\u20133 years<\/span><\/label>\r\n          <label class=\"ghp-choice\"><input type=\"radio\" name=\"years\" value=\"3\u20135 years\"><span class=\"ghp-dot\"><\/span><span class=\"ghp-ctxt\">3\u20135 years<\/span><\/label>\r\n          <label class=\"ghp-choice\"><input type=\"radio\" name=\"years\" value=\"5+ years\"><span class=\"ghp-dot\"><\/span><span class=\"ghp-ctxt\">5+ years<\/span><\/label>\r\n        <\/div>\r\n        <div class=\"ghp-err\" data-err=\"years\">Please select how long you've occupied the dwelling.<\/div>\r\n      <\/div>\r\n\r\n      <div class=\"ghp-grid-2\">\r\n        <div class=\"ghp-field\">\r\n          <label class=\"ghp-lab\" for=\"periodFrom\">Period of insurance \u2014 From <span style=\"font-weight:400;color:var(--muted);\">(optional)<\/span><\/label>\r\n          <input class=\"ghp-input\" id=\"periodFrom\" type=\"date\">\r\n        <\/div>\r\n        <div class=\"ghp-field\">\r\n          <label class=\"ghp-lab\" for=\"periodTo\">Period of insurance \u2014 To <span style=\"font-weight:400;color:var(--muted);\">(optional)<\/span><\/label>\r\n          <input class=\"ghp-input\" id=\"periodTo\" type=\"date\">\r\n        <\/div>\r\n      <\/div>\r\n\r\n      <div class=\"ghp-field\">\r\n        <label class=\"ghp-lab\" for=\"intermediary\">Name of intermediary, if any <span style=\"font-weight:400;color:var(--muted);\">(optional)<\/span><\/label>\r\n        <input class=\"ghp-input\" id=\"intermediary\" type=\"text\" placeholder=\"e.g. your agent or broker's name\">\r\n      <\/div>\r\n    <\/section>\r\n\r\n    <!-- ===================== STEP 3 \u2014 PREMISES ===================== -->\r\n    <section class=\"ghp-step\" data-step=\"3\">\r\n      <span class=\"ghp-eyebrow\">The premises<\/span>\r\n      <h2 class=\"ghp-h\">Describe your premises<\/h2>\r\n      <p class=\"ghp-sub\">A few questions about the dwelling itself \u2014 this is Part 2 of the proposal form.<\/p>\r\n\r\n      <div class=\"ghp-grid-2\">\r\n        <div class=\"ghp-field\">\r\n          <label class=\"ghp-lab\" for=\"wallsMat\">Walls \u2014 construction material <span style=\"font-weight:400;color:var(--muted);\">(optional)<\/span><\/label>\r\n          <input class=\"ghp-input\" id=\"wallsMat\" type=\"text\" placeholder=\"e.g. Stone \/ Brick\">\r\n        <\/div>\r\n        <div class=\"ghp-field\">\r\n          <label class=\"ghp-lab\" for=\"roofMat\">Roof \u2014 construction material <span style=\"font-weight:400;color:var(--muted);\">(optional)<\/span><\/label>\r\n          <input class=\"ghp-input\" id=\"roofMat\" type=\"text\" placeholder=\"e.g. Tiles \/ Mabati\">\r\n        <\/div>\r\n        <div class=\"ghp-field\">\r\n          <label class=\"ghp-lab\" for=\"floorMat\">Floor \u2014 construction material <span style=\"font-weight:400;color:var(--muted);\">(optional)<\/span><\/label>\r\n          <input class=\"ghp-input\" id=\"floorMat\" type=\"text\" placeholder=\"e.g. Concrete \/ Tiled\">\r\n        <\/div>\r\n        <div class=\"ghp-field\">\r\n          <label class=\"ghp-lab\" for=\"windowMat\">Window \u2014 construction material <span style=\"font-weight:400;color:var(--muted);\">(optional)<\/span><\/label>\r\n          <input class=\"ghp-input\" id=\"windowMat\" type=\"text\" placeholder=\"e.g. Steel \/ Aluminium\">\r\n        <\/div>\r\n        <div class=\"ghp-field\">\r\n          <label class=\"ghp-lab\" for=\"doorsMat\">Doors \u2014 construction material <span style=\"font-weight:400;color:var(--muted);\">(optional)<\/span><\/label>\r\n          <input class=\"ghp-input\" id=\"doorsMat\" type=\"text\" placeholder=\"e.g. Wooden \/ Steel\">\r\n        <\/div>\r\n        <div class=\"ghp-field\">\r\n          <label class=\"ghp-lab\" for=\"storeys\">Height in storeys <span style=\"font-weight:400;color:var(--muted);\">(optional)<\/span><\/label>\r\n          <input class=\"ghp-input\" id=\"storeys\" type=\"text\" inputmode=\"numeric\" placeholder=\"e.g. 2\">\r\n        <\/div>\r\n      <\/div>\r\n\r\n      <div class=\"ghp-field\">\r\n        <label class=\"ghp-lab\">Is any business, profession or trade carried on in any part of the premises? <span class=\"ghp-req\">*<\/span><\/label>\r\n        <div class=\"ghp-choices row\" data-radio=\"businessTrade\">\r\n          <label class=\"ghp-choice\"><input type=\"radio\" name=\"businessTrade\" value=\"No\"><span class=\"ghp-dot\"><\/span><span class=\"ghp-ctxt\">No<\/span><\/label>\r\n          <label class=\"ghp-choice\"><input type=\"radio\" name=\"businessTrade\" value=\"Yes\"><span class=\"ghp-dot\"><\/span><span class=\"ghp-ctxt\">Yes<\/span><\/label>\r\n        <\/div>\r\n        <div class=\"ghp-err\" data-err=\"businessTrade\">Please let us know.<\/div>\r\n      <\/div>\r\n\r\n      <div class=\"ghp-field\">\r\n        <label class=\"ghp-lab\">Is the premises a private dwelling house? <span class=\"ghp-req\">*<\/span><\/label>\r\n        <div class=\"ghp-choices row\" data-radio=\"privateDwelling\">\r\n          <label class=\"ghp-choice\"><input type=\"radio\" name=\"privateDwelling\" value=\"Yes\"><span class=\"ghp-dot\"><\/span><span class=\"ghp-ctxt\">Yes<\/span><\/label>\r\n          <label class=\"ghp-choice\"><input type=\"radio\" name=\"privateDwelling\" value=\"No\"><span class=\"ghp-dot\"><\/span><span class=\"ghp-ctxt\">No<\/span><\/label>\r\n        <\/div>\r\n        <div class=\"ghp-err\" data-err=\"privateDwelling\">Please let us know.<\/div>\r\n      <\/div>\r\n      <div class=\"ghp-field\" id=\"ghpExplainWrap\" style=\"display:none;\">\r\n        <label class=\"ghp-lab\" for=\"notPrivateExplain\">If not, please explain<\/label>\r\n        <input class=\"ghp-input\" id=\"notPrivateExplain\" type=\"text\" placeholder=\"e.g. shared compound, commercial building, etc.\">\r\n      <\/div>\r\n\r\n      <div class=\"ghp-field\">\r\n        <label class=\"ghp-lab\">Is it a self-contained flat with a separate entrance, exclusively under your control? <span class=\"ghp-req\">*<\/span><\/label>\r\n        <div class=\"ghp-choices row\" data-radio=\"selfContainedFlat\">\r\n          <label class=\"ghp-choice\"><input type=\"radio\" name=\"selfContainedFlat\" value=\"Yes\"><span class=\"ghp-dot\"><\/span><span class=\"ghp-ctxt\">Yes<\/span><\/label>\r\n          <label class=\"ghp-choice\"><input type=\"radio\" name=\"selfContainedFlat\" value=\"No\"><span class=\"ghp-dot\"><\/span><span class=\"ghp-ctxt\">No<\/span><\/label>\r\n        <\/div>\r\n        <div class=\"ghp-err\" data-err=\"selfContainedFlat\">Please let us know.<\/div>\r\n      <\/div>\r\n\r\n      <div class=\"ghp-field\">\r\n        <label class=\"ghp-lab\">Is the dwelling solely in your occupation? (Include your family and servants) <span class=\"ghp-req\">*<\/span><\/label>\r\n        <div class=\"ghp-choices row\" data-radio=\"solelyOccupation\">\r\n          <label class=\"ghp-choice\"><input type=\"radio\" name=\"solelyOccupation\" value=\"Yes\"><span class=\"ghp-dot\"><\/span><span class=\"ghp-ctxt\">Yes<\/span><\/label>\r\n          <label class=\"ghp-choice\"><input type=\"radio\" name=\"solelyOccupation\" value=\"No\"><span class=\"ghp-dot\"><\/span><span class=\"ghp-ctxt\">No<\/span><\/label>\r\n        <\/div>\r\n        <div class=\"ghp-err\" data-err=\"solelyOccupation\">Please let us know.<\/div>\r\n      <\/div>\r\n\r\n      <div class=\"ghp-field\">\r\n        <label class=\"ghp-lab\">Will the dwelling be left uninhabited for more than 7 consecutive days? <span class=\"ghp-req\">*<\/span><\/label>\r\n        <div class=\"ghp-choices row\" data-radio=\"vacant7\">\r\n          <label class=\"ghp-choice\"><input type=\"radio\" name=\"vacant7\" value=\"No\"><span class=\"ghp-dot\"><\/span><span class=\"ghp-ctxt\">No<\/span><\/label>\r\n          <label class=\"ghp-choice\"><input type=\"radio\" name=\"vacant7\" value=\"Yes\"><span class=\"ghp-dot\"><\/span><span class=\"ghp-ctxt\">Yes<\/span><\/label>\r\n        <\/div>\r\n        <div class=\"ghp-err\" data-err=\"vacant7\">Please let us know.<\/div>\r\n      <\/div>\r\n      <div class=\"ghp-field\" id=\"ghpVac7Wrap\" style=\"display:none;\">\r\n        <label class=\"ghp-lab\" for=\"vac7Extent\">If so, for how long \/ how often?<\/label>\r\n        <input class=\"ghp-input\" id=\"vac7Extent\" type=\"text\" placeholder=\"e.g. 2 weeks a year, during December\">\r\n      <\/div>\r\n\r\n      <div class=\"ghp-field\">\r\n        <label class=\"ghp-lab\">Will it be left uninhabited for more than 30 consecutive days? <span class=\"ghp-req\">*<\/span><\/label>\r\n        <div class=\"ghp-choices row\" data-radio=\"vacant30\">\r\n          <label class=\"ghp-choice\"><input type=\"radio\" name=\"vacant30\" value=\"No\"><span class=\"ghp-dot\"><\/span><span class=\"ghp-ctxt\">No<\/span><\/label>\r\n          <label class=\"ghp-choice\"><input type=\"radio\" name=\"vacant30\" value=\"Yes\"><span class=\"ghp-dot\"><\/span><span class=\"ghp-ctxt\">Yes<\/span><\/label>\r\n        <\/div>\r\n        <div class=\"ghp-err\" data-err=\"vacant30\">Please let us know.<\/div>\r\n      <\/div>\r\n      <div class=\"ghp-field\" id=\"ghpVac30Wrap\" style=\"display:none;\">\r\n        <label class=\"ghp-lab\" for=\"vac30Extent\">If so, for how long \/ how often?<\/label>\r\n        <input class=\"ghp-input\" id=\"vac30Extent\" type=\"text\" placeholder=\"e.g. 6 weeks, while travelling abroad\">\r\n      <\/div>\r\n    <\/section>\r\n\r\n    <!-- ===================== STEP 4 \u2014 COVER ===================== -->\r\n    <section class=\"ghp-step\" data-step=\"4\">\r\n      <span class=\"ghp-eyebrow\">Your cover<\/span>\r\n      <h2 class=\"ghp-h\">What do you want to protect?<\/h2>\r\n      <p class=\"ghp-sub\">Pick everything that applies \u2014 choose as many as you like.<\/p>\r\n      <div class=\"ghp-cards\" id=\"ghpCards\"><!-- injected --><\/div>\r\n      <div class=\"ghp-err\" data-err=\"protect\" style=\"margin-top:14px;\">Select at least one thing to protect.<\/div>\r\n    <\/section>\r\n\r\n    <!-- ===================== STEP 5 \u2014 VALUES ===================== -->\r\n    <section class=\"ghp-step\" data-step=\"5\">\r\n      <span class=\"ghp-eyebrow\">Sums insured<\/span>\r\n      <h2 class=\"ghp-h\">What are they worth?<\/h2>\r\n      <p class=\"ghp-sub\">Give us your best estimate \u2014 round figures are fine. Your advisor will confirm exact figures with you.<\/p>\r\n      <div id=\"ghpValues\"><!-- injected based on step 4 --><\/div>\r\n    <\/section>\r\n\r\n    <!-- ===================== STEP 6 \u2014 RISK & HISTORY ===================== -->\r\n    <section class=\"ghp-step\" data-step=\"6\">\r\n      <span class=\"ghp-eyebrow\">Quick check<\/span>\r\n      <h2 class=\"ghp-h\">Security &amp; insurance history<\/h2>\r\n      <p class=\"ghp-sub\">A few short questions so we can price you fairly \u2014 Part 3 &amp; Part 4 of the form.<\/p>\r\n\r\n      <div class=\"ghp-field\">\r\n        <label class=\"ghp-lab\">Which security arrangements do you have in place?<\/label>\r\n        <div class=\"ghp-choices\" data-check=\"security\">\r\n          <label class=\"ghp-choice\"><input type=\"checkbox\" value=\"Own Watchman\"><span class=\"ghp-box\"><\/span><span class=\"ghp-ctxt\">Own watchman<\/span><\/label>\r\n          <label class=\"ghp-choice\"><input type=\"checkbox\" value=\"Security Guards\"><span class=\"ghp-box\"><\/span><span class=\"ghp-ctxt\">Security guards<\/span><\/label>\r\n          <label class=\"ghp-choice\" data-other=\"1\"><input type=\"checkbox\" value=\"Other\"><span class=\"ghp-box\"><\/span><span class=\"ghp-ctxt\">Other<\/span><\/label>\r\n          <label class=\"ghp-choice\" data-none=\"1\"><input type=\"checkbox\" value=\"None\"><span class=\"ghp-box\"><\/span><span class=\"ghp-ctxt\">None of these<\/span><\/label>\r\n        <\/div>\r\n        <div class=\"ghp-field\" id=\"ghpSecOtherWrap\" style=\"display:none;margin-top:12px;\">\r\n          <input class=\"ghp-input\" id=\"secOtherText\" type=\"text\" placeholder=\"Please specify\">\r\n        <\/div>\r\n      <\/div>\r\n\r\n      <div class=\"ghp-field\">\r\n        <label class=\"ghp-lab\">Do the sums proposed for insurance represent the full value of the property? <span class=\"ghp-req\">*<\/span><\/label>\r\n        <div class=\"ghp-choices row\" data-radio=\"fullValue\">\r\n          <label class=\"ghp-choice\"><input type=\"radio\" name=\"fullValue\" value=\"Yes\"><span class=\"ghp-dot\"><\/span><span class=\"ghp-ctxt\">Yes<\/span><\/label>\r\n          <label class=\"ghp-choice\"><input type=\"radio\" name=\"fullValue\" value=\"No\"><span class=\"ghp-dot\"><\/span><span class=\"ghp-ctxt\">No<\/span><\/label>\r\n        <\/div>\r\n        <div class=\"ghp-err\" data-err=\"fullValue\">Please let us know.<\/div>\r\n      <\/div>\r\n\r\n      <div class=\"ghp-field\">\r\n        <label class=\"ghp-lab\">Are you currently insured in respect to the above risks? <span class=\"ghp-req\">*<\/span><\/label>\r\n        <div class=\"ghp-choices row\" data-radio=\"currentlyInsured\">\r\n          <label class=\"ghp-choice\"><input type=\"radio\" name=\"currentlyInsured\" value=\"No\"><span class=\"ghp-dot\"><\/span><span class=\"ghp-ctxt\">No<\/span><\/label>\r\n          <label class=\"ghp-choice\"><input type=\"radio\" name=\"currentlyInsured\" value=\"Yes\"><span class=\"ghp-dot\"><\/span><span class=\"ghp-ctxt\">Yes<\/span><\/label>\r\n        <\/div>\r\n        <div class=\"ghp-err\" data-err=\"currentlyInsured\">Please let us know.<\/div>\r\n      <\/div>\r\n      <div class=\"ghp-grid-2\" id=\"ghpInsuredWrap\" style=\"display:none;\">\r\n        <div class=\"ghp-field\">\r\n          <label class=\"ghp-lab\" for=\"insCompany\">Current insurance company<\/label>\r\n          <input class=\"ghp-input\" id=\"insCompany\" type=\"text\" placeholder=\"e.g. Geminia Insurance\">\r\n        <\/div>\r\n        <div class=\"ghp-field\">\r\n          <label class=\"ghp-lab\" for=\"insExpiry\">Expiry date<\/label>\r\n          <input class=\"ghp-input\" id=\"insExpiry\" type=\"date\">\r\n        <\/div>\r\n      <\/div>\r\n\r\n      <div class=\"ghp-field\">\r\n        <label class=\"ghp-lab\">Has any insurer, in the past \u2014<\/label>\r\n        <div class=\"ghp-choices\">\r\n          <div class=\"ghp-hist-row\">\r\n            <span class=\"ghp-ctxt\" style=\"font-weight:500;\">i) Declined to insure you?<\/span>\r\n            <div class=\"ghp-choices row\" data-radio=\"hDeclined\" style=\"margin-top:8px;\">\r\n              <label class=\"ghp-choice\"><input type=\"radio\" name=\"hDeclined\" value=\"No\"><span class=\"ghp-dot\"><\/span><span class=\"ghp-ctxt\">No<\/span><\/label>\r\n              <label class=\"ghp-choice\"><input type=\"radio\" name=\"hDeclined\" value=\"Yes\"><span class=\"ghp-dot\"><\/span><span class=\"ghp-ctxt\">Yes<\/span><\/label>\r\n            <\/div>\r\n          <\/div>\r\n        <\/div>\r\n      <\/div>\r\n      <div class=\"ghp-field\">\r\n        <span class=\"ghp-ctxt\" style=\"font-weight:500;\">ii) Required special terms to insure you?<\/span>\r\n        <div class=\"ghp-choices row\" data-radio=\"hSpecial\" style=\"margin-top:8px;\">\r\n          <label class=\"ghp-choice\"><input type=\"radio\" name=\"hSpecial\" value=\"No\"><span class=\"ghp-dot\"><\/span><span class=\"ghp-ctxt\">No<\/span><\/label>\r\n          <label class=\"ghp-choice\"><input type=\"radio\" name=\"hSpecial\" value=\"Yes\"><span class=\"ghp-dot\"><\/span><span class=\"ghp-ctxt\">Yes<\/span><\/label>\r\n        <\/div>\r\n      <\/div>\r\n      <div class=\"ghp-field\">\r\n        <span class=\"ghp-ctxt\" style=\"font-weight:500;\">iii) Cancelled or refused to renew your insurance?<\/span>\r\n        <div class=\"ghp-choices row\" data-radio=\"hCancelled\" style=\"margin-top:8px;\">\r\n          <label class=\"ghp-choice\"><input type=\"radio\" name=\"hCancelled\" value=\"No\"><span class=\"ghp-dot\"><\/span><span class=\"ghp-ctxt\">No<\/span><\/label>\r\n          <label class=\"ghp-choice\"><input type=\"radio\" name=\"hCancelled\" value=\"Yes\"><span class=\"ghp-dot\"><\/span><span class=\"ghp-ctxt\">Yes<\/span><\/label>\r\n        <\/div>\r\n      <\/div>\r\n      <div class=\"ghp-field\">\r\n        <span class=\"ghp-ctxt\" style=\"font-weight:500;\">iv) Increased your premium on renewal?<\/span>\r\n        <div class=\"ghp-choices row\" data-radio=\"hIncreased\" style=\"margin-top:8px;\">\r\n          <label class=\"ghp-choice\"><input type=\"radio\" name=\"hIncreased\" value=\"No\"><span class=\"ghp-dot\"><\/span><span class=\"ghp-ctxt\">No<\/span><\/label>\r\n          <label class=\"ghp-choice\"><input type=\"radio\" name=\"hIncreased\" value=\"Yes\"><span class=\"ghp-dot\"><\/span><span class=\"ghp-ctxt\">Yes<\/span><\/label>\r\n        <\/div>\r\n      <\/div>\r\n      <div class=\"ghp-field\" id=\"ghpHistDetailWrap\" style=\"display:none;\">\r\n        <label class=\"ghp-lab\" for=\"histDetail\">Briefly, what happened?<\/label>\r\n        <textarea class=\"ghp-area\" id=\"histDetail\" placeholder=\"A short description helps your advisor prepare an accurate quote.\"><\/textarea>\r\n      <\/div>\r\n    <\/section>\r\n\r\n    <!-- ===================== STEP 7 \u2014 CONTACT & CONSENT ===================== -->\r\n    <section class=\"ghp-step\" data-step=\"7\">\r\n      <span class=\"ghp-eyebrow\">Almost done<\/span>\r\n      <h2 class=\"ghp-h\">Contact &amp; declaration<\/h2>\r\n      <p class=\"ghp-sub\">Part 5 of the form \u2014 how you'd like us to reach you and confirm the declaration.<\/p>\r\n\r\n      <div class=\"ghp-grid-2\">\r\n        <div class=\"ghp-field\">\r\n          <label class=\"ghp-lab\" for=\"completingName\">Name of person completing this form <span class=\"ghp-req\">*<\/span><\/label>\r\n          <input class=\"ghp-input\" id=\"completingName\" type=\"text\" placeholder=\"e.g. Jane Wanjiru\">\r\n          <div class=\"ghp-err\" data-err=\"completingName\">Please enter a name.<\/div>\r\n        <\/div>\r\n        <div class=\"ghp-field\">\r\n          <label class=\"ghp-lab\" for=\"designation\">Designation <span style=\"font-weight:400;color:var(--muted);\">(optional)<\/span><\/label>\r\n          <input class=\"ghp-input\" id=\"designation\" type=\"text\" placeholder=\"e.g. Proposer \/ Director\">\r\n        <\/div>\r\n      <\/div>\r\n\r\n      <div class=\"ghp-field\">\r\n        <label class=\"ghp-lab\">Preferred communication channel(s) <span style=\"font-weight:400;color:var(--muted);\">(optional)<\/span><\/label>\r\n        <div class=\"ghp-choices row\" data-check=\"channels\">\r\n          <label class=\"ghp-choice\"><input type=\"checkbox\" value=\"SMS\"><span class=\"ghp-box\"><\/span><span class=\"ghp-ctxt\">SMS<\/span><\/label>\r\n          <label class=\"ghp-choice\"><input type=\"checkbox\" value=\"WhatsApp\"><span class=\"ghp-box\"><\/span><span class=\"ghp-ctxt\">WhatsApp<\/span><\/label>\r\n          <label class=\"ghp-choice\"><input type=\"checkbox\" value=\"Email\"><span class=\"ghp-box\"><\/span><span class=\"ghp-ctxt\">Email<\/span><\/label>\r\n          <label class=\"ghp-choice\"><input type=\"checkbox\" value=\"Telephone\"><span class=\"ghp-box\"><\/span><span class=\"ghp-ctxt\">Telephone<\/span><\/label>\r\n        <\/div>\r\n      <\/div>\r\n\r\n      <div class=\"ghp-field\">\r\n        <label class=\"ghp-lab\">Need a callback?<\/label>\r\n        <div class=\"ghp-choices row\" data-radio=\"callback\">\r\n          <label class=\"ghp-choice\"><input type=\"radio\" name=\"callback\" value=\"Yes\"><span class=\"ghp-dot\"><\/span><span class=\"ghp-ctxt\">Yes, please call me<\/span><\/label>\r\n          <label class=\"ghp-choice\"><input type=\"radio\" name=\"callback\" value=\"No\"><span class=\"ghp-dot\"><\/span><span class=\"ghp-ctxt\">No, email is fine<\/span><\/label>\r\n        <\/div>\r\n      <\/div>\r\n\r\n      <div class=\"ghp-field\">\r\n        <label class=\"ghp-lab\">Your signature <span class=\"ghp-req\">*<\/span><\/label>\r\n        <div class=\"ghp-sigwrap\">\r\n          <canvas id=\"ghpSigCanvas\" class=\"ghp-sigcanvas\" width=\"700\" height=\"220\" aria-label=\"Draw your signature here with mouse or finger\"><\/canvas>\r\n          <span class=\"ghp-sig-placeholder\" id=\"ghpSigPlaceholder\">Sign here<\/span>\r\n        <\/div>\r\n        <div class=\"ghp-sig-actions\">\r\n          <button type=\"button\" class=\"ghp-btn ghp-ghost\" id=\"ghpSigClear\"><span class=\"ghp-btxt\">Clear<\/span><\/button>\r\n        <\/div>\r\n        <div class=\"ghp-hint\">Draw with your mouse, or your finger on a touchscreen. This is embedded into your proposal PDF.<\/div>\r\n        <div class=\"ghp-err\" data-err=\"signature\">Please sign before submitting.<\/div>\r\n      <\/div>\r\n\r\n      <div class=\"ghp-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 information given is true and complete to the best of your knowledge, and consent to Geminia contacting you about this proposal.<\/span>\r\n      <\/div>\r\n    <\/section>\r\n\r\n    <!-- ===================== STEP 8 \u2014 REVIEW ===================== -->\r\n    <section class=\"ghp-step\" data-step=\"8\">\r\n      <span class=\"ghp-eyebrow\">Review<\/span>\r\n      <h2 class=\"ghp-h\">Does everything look right?<\/h2>\r\n      <p class=\"ghp-sub\">Take a quick look before we prepare your quotation.<\/p>\r\n      <div class=\"ghp-summary\" id=\"ghpSummary\"><!-- injected --><\/div>\r\n    <\/section>\r\n\r\n    <!-- ===================== SUCCESS ===================== -->\r\n    <section class=\"ghp-step\" data-step=\"done\">\r\n      <div class=\"ghp-success\">\r\n        <div class=\"ghp-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        <button class=\"ghp-btn ghp-primary\" data-cta=\"return\">\r\n          <span class=\"ghp-spin\"><\/span><span class=\"ghp-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=\"ghp-foot\" id=\"ghpFoot\" style=\"display:none;\">\r\n      <button class=\"ghp-btn ghp-ghost\" id=\"ghpPrev\">\r\n        <span class=\"ghp-spin\"><\/span><span class=\"ghp-btxt\">\u2190 Previous<\/span>\r\n      <\/button>\r\n      <button class=\"ghp-btn ghp-primary\" id=\"ghpNext\">\r\n        <span class=\"ghp-spin\"><\/span><span class=\"ghp-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=\"ghp-exit\" id=\"ghpExit\" 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=\"ghp-confirm\" id=\"ghpConfirm\" hidden role=\"dialog\" aria-modal=\"true\" aria-labelledby=\"ghpConfirmTitle\">\r\n      <div class=\"ghp-confirm-box\">\r\n        <div class=\"ghp-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=\"ghpConfirmTitle\">Leave and return to the site?<\/h3>\r\n        <p>Your answers so far won't be saved.<\/p>\r\n        <div class=\"ghp-confirm-actions\">\r\n          <button class=\"ghp-btn ghp-ghost\" id=\"ghpStay\"><span class=\"ghp-btxt\">Keep going<\/span><\/button>\r\n          <button class=\"ghp-btn ghp-primary\" id=\"ghpLeave\"><span class=\"ghp-spin\"><\/span><span class=\"ghp-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: fills the official 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('ghp');\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  \/* ---- Cover definitions ------------------------------------------ *\/\r\n  \/\/ `fields`: generic money\/count inputs rendered by buildValues(). Covers with\r\n  \/\/ bespoke UI (building, portable, employerLiability, extensions) get extra\r\n  \/\/ fields appended by hand in buildValues() \u2014 see EXTRA_* blocks below.\r\n  const COVERS = [\r\n    {key:'building',   emoji:'\ud83c\udfe0', name:'My Building',              product:'Section a \u2014 Buildings',\r\n      fields:[{id:'val_building_sum',label:'Building sum insured (reinstatement value)'}]},\r\n    {key:'contents',    emoji:'\ud83d\udecb\ufe0f', name:'My Contents',              product:'Section b \u2014 Contents',\r\n      fields:[{id:'val_contents_sum',label:'Contents sum insured'}]},\r\n    {key:'portable',    emoji:'\ud83d\udc8e', name:'Portable Items \/ All Risks', product:'Section c \u2014 All Risks',\r\n      fields:[{id:'val_portable_sum',label:'All risks sum insured'}]},\r\n    {key:'employees',   emoji:'\ud83d\udc65', name:'Employees (WIBA)',         product:'Section d \u2014 WIBA',\r\n      fields:[{id:'val_emp_count',label:'Number of employees',count:true},{id:'val_emp_wages',label:'Estimated annual wages'}]},\r\n    {key:'employerLiability', emoji:'\u2696\ufe0f', name:\"Employer's Liability\", product:\"Section e \u2014 Employer's Liability\", fields:[]},\r\n    {key:'ownerLiability',    emoji:'\ud83c\udfd8\ufe0f', name:\"Owner's Liability\",    product:\"Section f \u2014 Owner's Liability\",\r\n      fields:[{id:'val_owner_sum',label:\"Owner's liability \u2014 limit of indemnity\"}]},\r\n    {key:'occupierLiability', emoji:'\ud83d\udea7', name:\"Occupier's & Personal Liability\", product:\"Section g \u2014 Occupier's Liability\",\r\n      fields:[{id:'val_occupier_sum',label:\"Occupier's & personal liability \u2014 limit of indemnity\"}]},\r\n    {key:'extensions',  emoji:'\u2795', name:'Extensions',                product:'Section H \u2014 Extensions', fields:[]}\r\n  ];\r\n  const EXT_ITEMS = [\r\n    {key:'debris',            label:'Removal of debris'},\r\n    {key:'rentLoss',          label:'Loss of rent receivable'},\r\n    {key:'altAccom',          label:'Expenses for rent \u2014 alternative accommodation'},\r\n    {key:'lifeRider',         label:'Life rider'},\r\n    {key:'terrorism',         label:'Terrorism &amp; political risks (building, contents &amp; all risks)'},\r\n    {key:'personalAccident',  label:'Personal accident cover'}\r\n  ];\r\n\r\n  \/* ---- State ------------------------------------------------------ *\/\r\n  const S = {step:1, covers:new Set(), extItems:new Set(), security:new Set(), channels:new Set(), values:{}};\r\n  let hasSignature=false;\r\n  const TOTAL = 8;\r\n  const STEP_NAMES = {1:'Welcome',2:'Proposer',3:'Premises',4:'Cover',5:'Sums insured',6:'Risk check',7:'Contact',8:'Review'};\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 => $('.ghp-step[data-step=\"'+n+'\"]');\r\n\r\n  \/* ---- Build cover cards ------------------------------------------ *\/\r\n  const cardsWrap = $('#ghpCards');\r\n  COVERS.forEach(c=>{\r\n    const el=document.createElement('div');\r\n    el.className='ghp-pcard';el.dataset.key=c.key;el.setAttribute('role','button');\r\n    el.setAttribute('tabindex','0');el.setAttribute('aria-pressed','false');\r\n    el.innerHTML='<span class=\"ghp-pcheck\"><svg viewBox=\"0 0 24 24\"><path d=\"M20 6 9 17l-5-5\"\/><\/svg><\/span>'\r\n      +'<span class=\"ghp-pemoji\">'+c.emoji+'<\/span><span class=\"ghp-pname\">'+c.name+'<\/span>';\r\n    const toggle=()=>{\r\n      if(S.covers.has(c.key)){S.covers.delete(c.key);el.classList.remove('sel');el.setAttribute('aria-pressed','false');}\r\n      else{S.covers.add(c.key);el.classList.add('sel');el.setAttribute('aria-pressed','true');}\r\n      clearErr('protect');\r\n    };\r\n    el.addEventListener('click',toggle);\r\n    el.addEventListener('keydown',e=>{if(e.key===' '||e.key==='Enter'){e.preventDefault();toggle();}});\r\n    cardsWrap.appendChild(el);\r\n  });\r\n\r\n  \/* ---- Choice rows (radio\/checkbox visual state) \u2014 static ones ---- *\/\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('.ghp-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        const isNone=ch.dataset.none==='1';\r\n        if(isNone && input.checked){\r\n          group.querySelectorAll('input').forEach(i=>{if(i!==input){i.checked=false;i.closest('.ghp-choice').classList.remove('sel');}});\r\n        }else if(input.checked){\r\n          const noneBox=group.querySelector('[data-none=\"1\"] input');\r\n          if(noneBox){noneBox.checked=false;noneBox.closest('.ghp-choice').classList.remove('sel');}\r\n        }\r\n        ch.classList.toggle('sel',input.checked);\r\n        onCheckChange(group);\r\n      }\r\n    });\r\n  }\r\n  $$('.ghp-choice').forEach(wireChoice);\r\n\r\n  \/* ---- Signature pad ------------------------------------------------ *\/\r\n  (function initSignaturePad(){\r\n    const canvas=$('#ghpSigCanvas'); if(!canvas) return;\r\n    const wrap=canvas.closest('.ghp-sigwrap');\r\n    const placeholder=$('#ghpSigPlaceholder');\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    $('#ghpSigClear').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==='privateDwelling') $('#ghpExplainWrap').style.display = value==='No' ? 'block':'none';\r\n    if(name==='vacant7') $('#ghpVac7Wrap').style.display = value==='Yes' ? 'block':'none';\r\n    if(name==='vacant30') $('#ghpVac30Wrap').style.display = value==='Yes' ? 'block':'none';\r\n    if(name==='currentlyInsured') $('#ghpInsuredWrap').style.display = value==='Yes' ? 'flex':'none';\r\n    if(['hDeclined','hSpecial','hCancelled','hIncreased'].includes(name)){\r\n      const anyYes = ['hDeclined','hSpecial','hCancelled','hIncreased'].some(n=>{\r\n        const el=$('input[name=\"'+n+'\"]:checked'); return el && el.value==='Yes';\r\n      });\r\n      $('#ghpHistDetailWrap').style.display = anyYes ? 'block':'none';\r\n    }\r\n  }\r\n  function onCheckChange(group){\r\n    if(group.dataset.check==='security'){\r\n      S.security.clear();\r\n      group.querySelectorAll('input:checked').forEach(i=>S.security.add(i.value));\r\n      const otherBox=group.querySelector('[data-other=\"1\"] input');\r\n      $('#ghpSecOtherWrap').style.display = (otherBox && otherBox.checked) ? 'block':'none';\r\n    }\r\n    if(group.dataset.check==='channels'){\r\n      S.channels.clear();\r\n      group.querySelectorAll('input:checked').forEach(i=>S.channels.add(i.value));\r\n    }\r\n    if(group.dataset.check==='extitems'){\r\n      S.extItems.clear();\r\n      group.querySelectorAll('input:checked').forEach(i=>S.extItems.add(i.value));\r\n      renderExtDetails();\r\n    }\r\n  }\r\n\r\n  \/* ---- Currency \/ count formatting --------------------------------- *\/\r\n  function attachMoney(input){\r\n    input.addEventListener('input',()=>{\r\n      let raw=input.value.replace(\/[^\\d]\/g,'');\r\n      input.value = raw ? Number(raw).toLocaleString('en-US') : '';\r\n      input.classList.remove('err');\r\n      const e=input.closest('.ghp-field').querySelector('.ghp-err');\r\n      if(e) e.classList.remove('show');\r\n    });\r\n  }\r\n\r\n  \/* ---- Build Step 5 values dynamically ----------------------------- *\/\r\n  function fieldHtml(f){\r\n    if(f.count){\r\n      return '<div class=\"ghp-field\"><label class=\"ghp-lab\" for=\"'+f.id+'\">'+f.label+' <span class=\"ghp-req\">*<\/span><\/label>'\r\n        +'<input class=\"ghp-input ghp-count\" id=\"'+f.id+'\" type=\"text\" inputmode=\"numeric\" placeholder=\"e.g. 4\">'\r\n        +'<div class=\"ghp-err\" data-err=\"'+f.id+'\">Please enter a number.<\/div><\/div>';\r\n    }\r\n    return '<div class=\"ghp-field\"><label class=\"ghp-lab\" for=\"'+f.id+'\">'+f.label+' <span class=\"ghp-req\">*<\/span><\/label>'\r\n      +'<div class=\"ghp-money\"><span class=\"ghp-cur\">KES<\/span>'\r\n      +'<input class=\"ghp-input ghp-amt\" id=\"'+f.id+'\" type=\"text\" inputmode=\"numeric\" placeholder=\"0\"><\/div>'\r\n      +'<div class=\"ghp-err\" data-err=\"'+f.id+'\">Please enter an amount.<\/div><\/div>';\r\n  }\r\n\r\n  function buildValues(){\r\n    const wrap=$('#ghpValues');wrap.innerHTML='';\r\n    const selected=COVERS.filter(c=>S.covers.has(c.key));\r\n    if(selected.length===0){ wrap.innerHTML='<p class=\"ghp-sub\">Go back and pick at least one thing to protect.<\/p>'; return; }\r\n\r\n    selected.forEach(c=>{\r\n      const sec=document.createElement('div');\r\n      sec.className='ghp-sec'; sec.textContent=c.name;\r\n      wrap.appendChild(sec);\r\n\r\n      c.fields.forEach(f=>{ wrap.insertAdjacentHTML('beforeend', fieldHtml(f)); });\r\n\r\n      if(c.key==='building'){\r\n        wrap.insertAdjacentHTML('beforeend',\r\n          '<div class=\"ghp-field\"><label class=\"ghp-lab\">Are the buildings in good repair and will they be maintained so?<\/label>'\r\n          +'<div class=\"ghp-choices row\" data-radio=\"buildingRepair\">'\r\n          +'<label class=\"ghp-choice\"><input type=\"radio\" name=\"buildingRepair\" value=\"Yes\"><span class=\"ghp-dot\"><\/span><span class=\"ghp-ctxt\">Yes<\/span><\/label>'\r\n          +'<label class=\"ghp-choice\"><input type=\"radio\" name=\"buildingRepair\" value=\"No\"><span class=\"ghp-dot\"><\/span><span class=\"ghp-ctxt\">No<\/span><\/label><\/div><\/div>'\r\n          +'<div class=\"ghp-field\"><label class=\"ghp-lab\">Enhance the building value automatically each year?<\/label>'\r\n          +'<div class=\"ghp-choices row\" data-radio=\"buildingEnhance\">'\r\n          +'<label class=\"ghp-choice\"><input type=\"radio\" name=\"buildingEnhance\" value=\"No\"><span class=\"ghp-dot\"><\/span><span class=\"ghp-ctxt\">No<\/span><\/label>'\r\n          +'<label class=\"ghp-choice\"><input type=\"radio\" name=\"buildingEnhance\" value=\"Yes\"><span class=\"ghp-dot\"><\/span><span class=\"ghp-ctxt\">Yes<\/span><\/label><\/div><\/div>'\r\n          +'<div class=\"ghp-field\" id=\"ghpPctWrap\" style=\"display:none;\"><label class=\"ghp-lab\">Percentage increase required<\/label>'\r\n          +'<div class=\"ghp-choices row\" data-radio=\"buildingPct\">'\r\n          +'<label class=\"ghp-choice\"><input type=\"radio\" name=\"buildingPct\" value=\"5%\"><span class=\"ghp-dot\"><\/span><span class=\"ghp-ctxt\">5%<\/span><\/label>'\r\n          +'<label class=\"ghp-choice\"><input type=\"radio\" name=\"buildingPct\" value=\"10%\"><span class=\"ghp-dot\"><\/span><span class=\"ghp-ctxt\">10%<\/span><\/label>'\r\n          +'<label class=\"ghp-choice\"><input type=\"radio\" name=\"buildingPct\" value=\"15%\"><span class=\"ghp-dot\"><\/span><span class=\"ghp-ctxt\">15%<\/span><\/label>'\r\n          +'<label class=\"ghp-choice\"><input type=\"radio\" name=\"buildingPct\" value=\"20%\"><span class=\"ghp-dot\"><\/span><span class=\"ghp-ctxt\">20%<\/span><\/label><\/div><\/div>'\r\n          +'<div class=\"ghp-field\"><label class=\"ghp-lab\">Do you wish to insure rent receivable or rent payable?<\/label>'\r\n          +'<div class=\"ghp-choices row\" data-radio=\"buildingRent\">'\r\n          +'<label class=\"ghp-choice\"><input type=\"radio\" name=\"buildingRent\" value=\"No\"><span class=\"ghp-dot\"><\/span><span class=\"ghp-ctxt\">No<\/span><\/label>'\r\n          +'<label class=\"ghp-choice\"><input type=\"radio\" name=\"buildingRent\" value=\"Yes\"><span class=\"ghp-dot\"><\/span><span class=\"ghp-ctxt\">Yes<\/span><\/label><\/div><\/div>'\r\n          +'<div class=\"ghp-grid-2\" id=\"ghpRentWrap\" style=\"display:none;\">'\r\n          +'<div class=\"ghp-field\"><label class=\"ghp-lab\" for=\"val_rent_amount\">Amount (KES)<\/label>'\r\n          +'<div class=\"ghp-money\"><span class=\"ghp-cur\">KES<\/span><input class=\"ghp-input ghp-amt-opt\" id=\"val_rent_amount\" type=\"text\" inputmode=\"numeric\" placeholder=\"0\"><\/div><\/div>'\r\n          +'<div class=\"ghp-field\"><label class=\"ghp-lab\" for=\"val_rent_months\">Number of months<\/label>'\r\n          +'<input class=\"ghp-input ghp-count-opt\" id=\"val_rent_months\" type=\"text\" inputmode=\"numeric\" placeholder=\"e.g. 3\"><\/div><\/div>'\r\n        );\r\n      }\r\n\r\n      if(c.key==='portable'){\r\n        wrap.insertAdjacentHTML('beforeend',\r\n          '<div class=\"ghp-field\"><label class=\"ghp-lab\">Territorial limits to be covered<\/label>'\r\n          +'<div class=\"ghp-choices row\" data-radio=\"portableTerritory\">'\r\n          +'<label class=\"ghp-choice\"><input type=\"radio\" name=\"portableTerritory\" value=\"Kenya\"><span class=\"ghp-dot\"><\/span><span class=\"ghp-ctxt\">Kenya<\/span><\/label>'\r\n          +'<label class=\"ghp-choice\"><input type=\"radio\" name=\"portableTerritory\" value=\"Worldwide\"><span class=\"ghp-dot\"><\/span><span class=\"ghp-ctxt\">Worldwide<\/span><\/label><\/div><\/div>'\r\n          +'<div class=\"ghp-field\"><label class=\"ghp-lab\">Cover losses arising from power surge?<\/label>'\r\n          +'<div class=\"ghp-choices row\" data-radio=\"powerSurge\">'\r\n          +'<label class=\"ghp-choice\"><input type=\"radio\" name=\"powerSurge\" value=\"No\"><span class=\"ghp-dot\"><\/span><span class=\"ghp-ctxt\">No<\/span><\/label>'\r\n          +'<label class=\"ghp-choice\"><input type=\"radio\" name=\"powerSurge\" value=\"Yes\"><span class=\"ghp-dot\"><\/span><span class=\"ghp-ctxt\">Yes<\/span><\/label><\/div>'\r\n          +'<div class=\"ghp-hint\">An additional premium is charged if you cover power surge.<\/div><\/div>'\r\n        );\r\n      }\r\n\r\n      if(c.key==='employerLiability'){\r\n        wrap.insertAdjacentHTML('beforeend',\r\n          '<div class=\"ghp-field\"><label class=\"ghp-lab\">Limit of cover required <span class=\"ghp-req\">*<\/span><\/label>'\r\n          +'<div class=\"ghp-choices\" data-radio=\"elOption\">'\r\n          +'<label class=\"ghp-choice tall\"><input type=\"radio\" name=\"elOption\" value=\"Option A\">'\r\n          +'<span class=\"ghp-tall-head\"><span class=\"ghp-dot\"><\/span><span class=\"ghp-ctxt\"><b>Option A<\/b><\/span><\/span>'\r\n          +'<span class=\"ghp-tall-body\">Any one person: <b>KES 2,000,000<\/b><br>Any one event: <b>KES 10,000,000<\/b><br>Any one year: <b>KES 20,000,000<\/b><\/span><\/label>'\r\n          +'<label class=\"ghp-choice tall\"><input type=\"radio\" name=\"elOption\" value=\"Option B\">'\r\n          +'<span class=\"ghp-tall-head\"><span class=\"ghp-dot\"><\/span><span class=\"ghp-ctxt\"><b>Option B<\/b><\/span><\/span>'\r\n          +'<span class=\"ghp-tall-body\">Any one person: <b>KES 4,000,000<\/b><br>Any one event: <b>KES 15,000,000<\/b><br>Any one year: <b>KES 30,000,000<\/b><\/span><\/label>'\r\n          +'<\/div><div class=\"ghp-hint\">Subject to a deductible of KES 10,000 each and every claim.<\/div>'\r\n          +'<div class=\"ghp-err\" data-err=\"elOption\">Please choose a limit option.<\/div><\/div>'\r\n        );\r\n      }\r\n\r\n      if(c.key==='extensions'){\r\n        const items = EXT_ITEMS.map(it=>\r\n          '<label class=\"ghp-choice\"><input type=\"checkbox\" value=\"'+it.key+'\"><span class=\"ghp-box\"><\/span><span class=\"ghp-ctxt\">'+it.label+'<\/span><\/label>'\r\n        ).join('');\r\n        wrap.insertAdjacentHTML('beforeend',\r\n          '<div class=\"ghp-field\"><label class=\"ghp-lab\">Which extensions would you like? <span class=\"ghp-req\">*<\/span><\/label>'\r\n          +'<div class=\"ghp-choices\" data-check=\"extitems\">'+items+'<\/div>'\r\n          +'<div class=\"ghp-err\" data-err=\"extitems\">Please select at least one extension.<\/div><\/div>'\r\n          +'<div id=\"ghpExtDetail\"><\/div>'\r\n        );\r\n      }\r\n    });\r\n\r\n    \/\/ wire any newly-injected choice rows\r\n    $$('.ghp-choice',wrap).forEach(wireChoice);\r\n\r\n    \/\/ restore + attach money\/count formatting for standard + optional fields\r\n    $$('.ghp-amt,.ghp-count,.ghp-amt-opt,.ghp-count-opt',wrap).forEach(inp=>{\r\n      if(S.values[inp.id]!=null && S.values[inp.id]!=='') inp.value = Number(S.values[inp.id]).toLocaleString('en-US');\r\n      attachMoney(inp);\r\n    });\r\n\r\n    \/\/ restore radio\/checkbox selections from state on re-render\r\n    restoreDynamicChoices();\r\n    renderExtDetails();\r\n\r\n    \/\/ building: show % choices + rent amount block based on restored state\r\n    const enh=$('input[name=\"buildingEnhance\"]:checked');\r\n    if(enh) $('#ghpPctWrap') && ($('#ghpPctWrap').style.display = enh.value==='Yes'?'block':'none');\r\n    const rent=$('input[name=\"buildingRent\"]:checked');\r\n    if(rent) $('#ghpRentWrap') && ($('#ghpRentWrap').style.display = rent.value==='Yes'?'flex':'none');\r\n\r\n    \/\/ wire the two conditional reveals freshly (buildingEnhance \/ buildingRent)\r\n    const enhInputs=$$('input[name=\"buildingEnhance\"]');\r\n    enhInputs.forEach(i=>i.addEventListener('change',()=>{ $('#ghpPctWrap').style.display = i.value==='Yes' && i.checked ? 'block':'none'; }));\r\n    const rentInputs=$$('input[name=\"buildingRent\"]');\r\n    rentInputs.forEach(i=>i.addEventListener('change',()=>{ $('#ghpRentWrap').style.display = i.value==='Yes' && i.checked ? 'flex':'none'; }));\r\n  }\r\n\r\n  function renderExtDetails(){\r\n    const host=$('#ghpExtDetail'); if(!host) return;\r\n    host.innerHTML='';\r\n    if(S.extItems.size===0) return;\r\n    const rows=[];\r\n    if(S.extItems.has('rentLoss')){\r\n      rows.push('<div class=\"ghp-grid-2\">'\r\n        +'<div class=\"ghp-field\"><label class=\"ghp-lab\" for=\"val_ext_rentLoss_amount\">Loss of rent receivable \u2014 per month (KES)<\/label>'\r\n        +'<div class=\"ghp-money\"><span class=\"ghp-cur\">KES<\/span><input class=\"ghp-input ghp-amt-opt\" id=\"val_ext_rentLoss_amount\" type=\"text\" inputmode=\"numeric\" placeholder=\"0\"><\/div><\/div>'\r\n        +'<div class=\"ghp-field\"><label class=\"ghp-lab\" for=\"val_ext_rentLoss_months\">Number of months<\/label>'\r\n        +'<input class=\"ghp-input ghp-count-opt\" id=\"val_ext_rentLoss_months\" type=\"text\" inputmode=\"numeric\" placeholder=\"e.g. 3\"><\/div><\/div>');\r\n    }\r\n    const simple=[\r\n      ['debris','val_ext_debris','Removal of debris \u2014 sum insured (KES)'],\r\n      ['altAccom','val_ext_altAccom','Alternative accommodation \u2014 sum insured (KES)'],\r\n      ['lifeRider','val_ext_lifeRider','Life rider \u2014 sum insured (KES)'],\r\n      ['terrorism','val_ext_terrorism','Terrorism &amp; political risks \u2014 sum insured (KES)'],\r\n      ['personalAccident','val_ext_personalAccident','Personal accident cover \u2014 sum insured (KES)']\r\n    ];\r\n    simple.forEach(([key,id,label])=>{\r\n      if(S.extItems.has(key)){\r\n        rows.push('<div class=\"ghp-field\"><label class=\"ghp-lab\" for=\"'+id+'\">'+label+'<\/label>'\r\n          +'<div class=\"ghp-money\"><span class=\"ghp-cur\">KES<\/span><input class=\"ghp-input ghp-amt-opt\" id=\"'+id+'\" type=\"text\" inputmode=\"numeric\" placeholder=\"0\"><\/div><\/div>');\r\n      }\r\n    });\r\n    host.innerHTML=rows.join('');\r\n    $$('.ghp-amt-opt,.ghp-count-opt',host).forEach(inp=>{\r\n      if(S.values[inp.id]!=null && S.values[inp.id]!=='') inp.value = Number(S.values[inp.id]).toLocaleString('en-US');\r\n      attachMoney(inp);\r\n    });\r\n  }\r\n\r\n  function restoreDynamicChoices(){\r\n    \/\/ restore radios (buildingRepair, buildingEnhance, buildingPct, buildingRent, portableTerritory, powerSurge, elOption)\r\n    ['buildingRepair','buildingEnhance','buildingPct','buildingRent','portableTerritory','powerSurge','elOption'].forEach(name=>{\r\n      const val=S.values['radio_'+name];\r\n      if(val){\r\n        const inp=$('input[name=\"'+name+'\"][value=\"'+CSS.escape(val)+'\"]');\r\n        if(inp){ inp.checked=true; inp.closest('.ghp-choice').classList.add('sel'); }\r\n      }\r\n    });\r\n    \/\/ restore extensions checkboxes\r\n    const extGroup=$('[data-check=\"extitems\"]');\r\n    if(extGroup){\r\n      extGroup.querySelectorAll('input').forEach(i=>{\r\n        if(S.extItems.has(i.value)){ i.checked=true; i.closest('.ghp-choice').classList.add('sel'); }\r\n      });\r\n    }\r\n  }\r\n\r\n  \/\/ persist radio selections used inside the dynamic values step into S.values\r\n  root.addEventListener('change',(e)=>{\r\n    const names=['buildingRepair','buildingEnhance','buildingPct','buildingRent','portableTerritory','powerSurge','elOption'];\r\n    if(e.target && e.target.name && names.includes(e.target.name)){\r\n      S.values['radio_'+e.target.name]=e.target.value;\r\n      if(e.target.name==='elOption') clearErr('elOption');\r\n    }\r\n  });\r\n\r\n  \/* ---- Errors ----------------------------------------------------- *\/\r\n  function showErr(key,inputEl){\r\n    const e=$('.ghp-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=$('.ghp-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 idp=$('#idPassport'); if(!idp.value.trim()){showErr('idPassport',fail(idp));} else clearErr('idPassport');\r\n      const em=$('#email'); if(!\/^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$\/.test(em.value.trim())){showErr('email',fail(em));} else clearErr('email');\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 loc=$('#location'); if(!loc.value.trim()){showErr('location',fail(loc));} else clearErr('location');\r\n      if(!$('input[name=\"years\"]:checked')){showErr('years');ok=false;} else clearErr('years');\r\n    }\r\n    if(step===3){\r\n      ['businessTrade','privateDwelling','selfContainedFlat','solelyOccupation','vacant7','vacant30'].forEach(name=>{\r\n        if(!$('input[name=\"'+name+'\"]:checked')){showErr(name);ok=false;} else clearErr(name);\r\n      });\r\n    }\r\n    if(step===4){\r\n      if(S.covers.size===0){showErr('protect');ok=false;} else clearErr('protect');\r\n    }\r\n    if(step===5){\r\n      $$('.ghp-amt,.ghp-count').forEach(inp=>{\r\n        const raw=inp.value.replace(\/[^\\d]\/g,'');\r\n        if(!raw || Number(raw)<=0){showErr(inp.id,inp);ok=false;}\r\n        else{clearErr(inp.id);inp.classList.remove('err');S.values[inp.id]=raw;}\r\n      });\r\n      $$('.ghp-amt-opt,.ghp-count-opt').forEach(inp=>{\r\n        const raw=inp.value.replace(\/[^\\d]\/g,'');\r\n        if(raw) S.values[inp.id]=raw;\r\n      });\r\n      if(S.covers.has('employerLiability') && !$('input[name=\"elOption\"]:checked')){ showErr('elOption'); ok=false; }\r\n      else clearErr('elOption');\r\n      if(S.covers.has('extensions') && S.extItems.size===0){ showErr('extitems'); ok=false; }\r\n      else clearErr('extitems');\r\n    }\r\n    if(step===6){\r\n      if(!$('input[name=\"fullValue\"]:checked')){showErr('fullValue');ok=false;} else clearErr('fullValue');\r\n      if(!$('input[name=\"currentlyInsured\"]:checked')){showErr('currentlyInsured');ok=false;} else clearErr('currentlyInsured');\r\n    }\r\n    if(step===7){\r\n      const n=$('#completingName'); if(!n.value.trim()){showErr('completingName',fail(n));} else clearErr('completingName');\r\n      if(!hasSignature){ showErr('signature'); ok=false; } else clearErr('signature');\r\n    }\r\n    if(!ok){\r\n      const firstErr=$('.ghp-err.show');\r\n      if(firstErr) firstErr.closest('.ghp-field, .ghp-step').scrollIntoView({behavior:'smooth',block:'center'});\r\n    }\r\n    return ok;\r\n  }\r\n\r\n  \/* ---- Formatting helpers ---------------------------------------- *\/\r\n  const fmtKES = raw => 'KES '+Number(raw).toLocaleString('en-US');\r\n  const covName = key => (COVERS.find(c=>c.key===key)||{}).name;\r\n  const extLabel = key => { const it=EXT_ITEMS.find(x=>x.key===key); return it? it.label.replace(\/&amp;\/g,'&') : key; };\r\n\r\n  \/* ---- Build review ---------------------------------------------- *\/\r\n  function buildReview(){\r\n    const g=$('#ghpSummary');\r\n    const yrs=$('input[name=\"years\"]:checked');\r\n    const cb=$('input[name=\"callback\"]:checked');\r\n    const fullVal=$('input[name=\"fullValue\"]:checked');\r\n    const curIns=$('input[name=\"currentlyInsured\"]:checked');\r\n    const sec=S.security.size?[...S.security].join(', '):'None specified';\r\n    const chans=S.channels.size?[...S.channels].join(', '):'\u2014';\r\n\r\n    let valuesRows='';\r\n    COVERS.filter(c=>S.covers.has(c.key)).forEach(c=>{\r\n      c.fields.forEach(f=>{\r\n        const v=S.values[f.id];\r\n        if(v) valuesRows+=row(f.label, f.count?Number(v).toLocaleString('en-US'):fmtKES(v));\r\n      });\r\n      if(c.key==='employerLiability'){\r\n        const opt=S.values['radio_elOption'];\r\n        if(opt) valuesRows+=row('Employer\\'s liability limit', opt);\r\n      }\r\n      if(c.key==='extensions' && S.extItems.size){\r\n        valuesRows+=row('Extensions selected',[...S.extItems].map(extLabel).join(', '));\r\n      }\r\n    });\r\n\r\n    const tags=[...S.covers].map(k=>'<span class=\"ghp-tag\">'+covName(k)+'<\/span>').join('');\r\n\r\n    g.innerHTML=\r\n      block('\ud83d\udc64 Proposer',[\r\n        row('Full name',$('#fullName').value||'\u2014'),\r\n        row('ID \/ Passport',$('#idPassport').value||'\u2014'),\r\n        row('Email',$('#email').value||'\u2014'),\r\n        row('Mobile',$('#mobile').value||'\u2014'),\r\n        row('Location of premises',$('#location').value||'\u2014'),\r\n        row('Occupied for',yrs?yrs.value:'\u2014')\r\n      ])\r\n      +block('\ud83c\udfe1 Premises',[\r\n        row('Business\/trade on premises',(($('input[name=\"businessTrade\"]:checked')||{}).value)||'\u2014'),\r\n        row('Private dwelling house',(($('input[name=\"privateDwelling\"]:checked')||{}).value)||'\u2014'),\r\n        row('Self-contained flat',(($('input[name=\"selfContainedFlat\"]:checked')||{}).value)||'\u2014'),\r\n        row('Solely in your occupation',(($('input[name=\"solelyOccupation\"]:checked')||{}).value)||'\u2014')\r\n      ])\r\n      +'<div class=\"ghp-sblock\"><h4>\ud83d\udee1\ufe0f Selected covers<\/h4><div class=\"ghp-tags\">'+(tags||'<span class=\"ghp-tag\">None<\/span>')+'<\/div><\/div>'\r\n      +(valuesRows?'<div class=\"ghp-sblock\"><h4>\ud83d\udcb0 Sums insured<\/h4>'+valuesRows+'<\/div>':'')\r\n      +block('\u2705 Risk & history',[\r\n        row('Security',sec),\r\n        row('Sums represent full value',fullVal?fullVal.value:'\u2014'),\r\n        row('Currently insured',curIns?curIns.value:'\u2014')\r\n      ])\r\n      +block('\ud83d\udcde Contact',[\r\n        row('Form completed by',$('#completingName').value||'\u2014'),\r\n        row('Preferred channels',chans),\r\n        row('Callback',cb?cb.value:'No'),\r\n        row('Signature',hasSignature?'\u2713 Captured':'Not captured')\r\n      ]);\r\n\r\n    function block(title,rows){return '<div class=\"ghp-sblock\"><h4>'+title+'<\/h4>'+rows.filter(Boolean).join('')+'<\/div>';}\r\n    function row(k,v){return '<div class=\"ghp-srow\"><span class=\"k\">'+k+'<\/span><span class=\"v\">'+escapeHtml(v)+'<\/span><\/div>';}\r\n  }\r\n  function escapeHtml(s){return String(s).replace(\/[&<>\"]\/g,c=>({'&':'&amp;','<':'&lt;','>':'&gt;','\"':'&quot;'}[c]));}\r\n\r\n  \/* ---- Render \/ navigation --------------------------------------- *\/\r\n  function render(){\r\n    const cur=$('.ghp-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      $$('.ghp-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    $('.ghp-card').classList.toggle('ghp-card--hero',isWelcome);\r\n    $('#ghpProgress').classList.toggle('on',showChrome);\r\n    $('#ghpFoot').style.display = showChrome ? 'flex' : 'none';\r\n    $('#ghpExit').style.display = showChrome ? 'flex' : 'none';\r\n    $('#ghpConfirm').hidden = true;\r\n\r\n    if(showChrome){\r\n      $('#ghpStepNo').textContent=S.step;\r\n      $('#ghpStepName').textContent=STEP_NAMES[S.step];\r\n      $('#ghpFill').style.width=((S.step-1)\/(TOTAL-1))*100+'%';\r\n      const nextBtn=$('#ghpNext');\r\n      nextBtn.querySelector('.ghp-btxt').textContent = S.step===8 ? '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===4) buildValues();\r\n    if(S.step===8){ submit(); return; }\r\n    if(S.step===7) 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 covers=[...S.covers].map(k=>{const c=COVERS.find(x=>x.key===k);return{key:c.key,selection:c.name,product:c.product};});\r\n    const values={};\r\n    COVERS.filter(c=>S.covers.has(c.key)).forEach(c=>c.fields.forEach(f=>{ if(S.values[f.id]) values[f.label]=S.values[f.id]; }));\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    return {\r\n      product_line:'Home Pack Insurance',\r\n      submitted_at:new Date().toISOString(),\r\n      proposer:{\r\n        fullName:g('fullName'), idPassport:g('idPassport'), kraPin:g('kraPin'),\r\n        postal:g('postal'), email:g('email'), mobile:g('mobile'), location:g('location'),\r\n        years:radio('years'), periodFrom:g('periodFrom'), periodTo:g('periodTo'), intermediary:g('intermediary')\r\n      },\r\n      premises:{\r\n        wallsMat:g('wallsMat'), roofMat:g('roofMat'), floorMat:g('floorMat'), windowMat:g('windowMat'), doorsMat:g('doorsMat'),\r\n        storeys:g('storeys'), businessTrade:radio('businessTrade'), privateDwelling:radio('privateDwelling'),\r\n        notPrivateExplain:g('notPrivateExplain'), selfContainedFlat:radio('selfContainedFlat'),\r\n        solelyOccupation:radio('solelyOccupation'), vacant7:radio('vacant7'), vac7Extent:g('vac7Extent'),\r\n        vacant30:radio('vacant30'), vac30Extent:g('vac30Extent')\r\n      },\r\n      covers, values,\r\n      buildingExtra:{\r\n        repair:S.values['radio_buildingRepair']||'', enhance:S.values['radio_buildingEnhance']||'',\r\n        pct:S.values['radio_buildingPct']||'', rentYN:S.values['radio_buildingRent']||'',\r\n        rentAmount:S.values['val_rent_amount']||'', rentMonths:S.values['val_rent_months']||''\r\n      },\r\n      portableExtra:{ territory:S.values['radio_portableTerritory']||'', powerSurge:S.values['radio_powerSurge']||'' },\r\n      employerLiabilityOption:S.values['radio_elOption']||'',\r\n      extensions:{ items:[...S.extItems], details:{\r\n        debris:S.values['val_ext_debris']||'', rentLossAmount:S.values['val_ext_rentLoss_amount']||'',\r\n        rentLossMonths:S.values['val_ext_rentLoss_months']||'', altAccom:S.values['val_ext_altAccom']||'',\r\n        lifeRider:S.values['val_ext_lifeRider']||'', terrorism:S.values['val_ext_terrorism']||'',\r\n        personalAccident:S.values['val_ext_personalAccident']||''\r\n      }},\r\n      risk:{\r\n        security:[...S.security], securityOther:g('secOtherText'),\r\n        fullValue:radio('fullValue'), currentlyInsured:radio('currentlyInsured'),\r\n        insCompany:g('insCompany'), insExpiry:g('insExpiry'),\r\n        hDeclined:radio('hDeclined'), hSpecial:radio('hSpecial'), hCancelled:radio('hCancelled'), hIncreased:radio('hIncreased'),\r\n        histDetail:g('histDetail')\r\n      },\r\n      contact:{\r\n        completingName:g('completingName'), designation:g('designation'),\r\n        channels:[...S.channels], callback:radio('callback')||'No', signed:hasSignature\r\n      }\r\n    };\r\n  }\r\n\r\n  \/\/ ---- Build a standalone, branded summary PDF in the browser (pdf-lib) --\r\n  \/\/ No official form to load or host \u2014 this generates the document from\r\n  \/\/ scratch, paginating automatically as content grows, and embeds the\r\n  \/\/ customer's e-signature (if captured) into the Declaration section.\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('Home Pack 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('Proposer');\r\n    kv('Full name',p.proposer.fullName); kv('ID \/ Passport',p.proposer.idPassport); kv('KRA PIN',p.proposer.kraPin);\r\n    kv('Postal address',p.proposer.postal); kv('Email',p.proposer.email); kv('Mobile',p.proposer.mobile);\r\n    kv('Location of premises',p.proposer.location); kv('Occupied for',p.proposer.years);\r\n    kv('Period of insurance',(p.proposer.periodFrom||'\u2014')+' to '+(p.proposer.periodTo||'\u2014'));\r\n    kv('Intermediary',p.proposer.intermediary);\r\n\r\n    y-=6; head('Premises');\r\n    kv('Walls \/ Roof',(p.premises.wallsMat||'\u2014')+' \/ '+(p.premises.roofMat||'\u2014'));\r\n    kv('Floor \/ Window \/ Doors',[p.premises.floorMat,p.premises.windowMat,p.premises.doorsMat].filter(Boolean).join(' \/ ')||'\u2014');\r\n    kv('Storeys',p.premises.storeys);\r\n    kv('Business\/trade on premises',p.premises.businessTrade);\r\n    kv('Private dwelling house',p.premises.privateDwelling+(p.premises.notPrivateExplain?(' \u2014 '+p.premises.notPrivateExplain):''));\r\n    kv('Self-contained flat',p.premises.selfContainedFlat);\r\n    kv('Solely in occupation',p.premises.solelyOccupation);\r\n    kv('Vacant > 7 days',p.premises.vacant7+(p.premises.vac7Extent?(' \u2014 '+p.premises.vac7Extent):''));\r\n    kv('Vacant > 30 days',p.premises.vacant30+(p.premises.vac30Extent?(' \u2014 '+p.premises.vac30Extent):''));\r\n\r\n    y-=6; head('Covers & sums insured');\r\n    p.covers.forEach(c=>{\r\n      ensureSpace(13);\r\n      pg.drawText(c.selection,{x:margin+2,y,size:9.5,font:bold,color:ink});\r\n      pg.drawText(c.product,{x:280,y,size:8.5,font,color:mut}); y-=13;\r\n    });\r\n    Object.keys(p.values).forEach(k=>{ const raw=p.values[k];\r\n      kv(k, \/number of employees\/i.test(k)?raw:('KES '+Number(raw).toLocaleString('en-US'))); });\r\n    if(p.employerLiabilityOption) kv(\"Employer's liability option\",p.employerLiabilityOption);\r\n    if(p.buildingExtra){\r\n      const be=p.buildingExtra;\r\n      if(be.repair) kv('Buildings in good repair',be.repair);\r\n      if(be.enhance) kv('Auto-enhance building value',be.enhance+(be.pct?(' ('+be.pct+')'):''));\r\n      if(be.rentYN==='Yes') kv('Rent receivable\/payable',(be.rentAmount?('KES '+Number(be.rentAmount).toLocaleString('en-US')):'\u2014')+' \/ '+(be.rentMonths||'\u2014')+' months');\r\n    }\r\n    if(p.portableExtra){\r\n      if(p.portableExtra.territory) kv('All risks territorial limit',p.portableExtra.territory);\r\n      if(p.portableExtra.powerSurge) kv('Cover power surge',p.portableExtra.powerSurge);\r\n    }\r\n    if((p.extensions.items||[]).length){\r\n      y-=6; head('Extensions');\r\n      const ex=p.extensions.details;\r\n      p.extensions.items.forEach(key=>{\r\n        const map={debris:['Removal of debris',ex.debris],\r\n          rentLoss:['Loss of rent receivable',(ex.rentLossAmount?('KES '+Number(ex.rentLossAmount).toLocaleString('en-US')+'\/mo x '+(ex.rentLossMonths||'\u2014')+' mo'):'\u2014')],\r\n          altAccom:['Alternative accommodation',ex.altAccom],lifeRider:['Life rider',ex.lifeRider],\r\n          terrorism:['Terrorism & political risks',ex.terrorism],personalAccident:['Personal accident cover',ex.personalAccident]};\r\n        const [label,val]=map[key]||[key,''];\r\n        kv(label, (typeof val==='string' && (val.indexOf('KES')===0||val==='\u2014')) ? val : (val?('KES '+Number(val).toLocaleString('en-US')):'\u2014'));\r\n      });\r\n    }\r\n\r\n    y-=6; head('Security & risk history');\r\n    kv('Security arrangements',((p.risk.security||[]).join(', ')+(p.risk.securityOther?(' \u2014 '+p.risk.securityOther):''))||'None specified');\r\n    kv('Sums represent full value',p.risk.fullValue);\r\n    kv('Currently insured',p.risk.currentlyInsured+(p.risk.currentlyInsured==='Yes'?(' \u2014 '+(p.risk.insCompany||'\u2014')+', expires '+(p.risk.insExpiry||'\u2014')):''));\r\n    kv('Declined \/ special terms \/ cancelled \/ increased',[p.risk.hDeclined,p.risk.hSpecial,p.risk.hCancelled,p.risk.hIncreased].map(v=>v||'\u2014').join(' \/ '));\r\n    if(p.risk.histDetail) kv('History detail',p.risk.histDetail);\r\n\r\n    y-=6; head('Contact');\r\n    kv('Form completed by',p.contact.completingName); kv('Designation',p.contact.designation);\r\n    kv('Preferred channels',(p.contact.channels||[]).join(', ')||'\u2014'); kv('Callback requested',p.contact.callback);\r\n\r\n    y-=6; head('Declaration');\r\n    para('I\/We declare that, to the best of my\/our knowledge and belief, the statements given in this proposal are true and complete. I\/we agree that this proposal, together with any other information supplied, shall form the basis of any contract of insurance effected on it, and consent to Geminia Insurance Company Limited contacting me\/us regarding this proposal.');\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('Signed by',p.contact.completingName);\r\n    kv('Date',new Date().toLocaleDateString('en-GB'));\r\n\r\n    pg.drawText('Figures are applicant estimates, subject to underwriting review, survey and policy terms & conditions.',\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=$('#ghpNext');\r\n    btn.classList.add('loading');btn.disabled=true;$('#ghpPrev').disabled=true;\r\n    const finish=()=>{ btn.classList.remove('loading');btn.disabled=false;$('#ghpPrev').disabled=false; goTo('done'); };\r\n    const p=buildPayload();\r\n    const sigCanvas=$('#ghpSigCanvas');\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:'Home_Pack_'+((p.proposer.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=$('#ghpConfirm');\r\n  $('#ghpExit').addEventListener('click',()=>{ confirmEl.hidden=false; $('#ghpStay').focus(); });\r\n  $('#ghpStay').addEventListener('click',()=>{ confirmEl.hidden=true; $('#ghpExit').focus(); });\r\n  $('#ghpLeave').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; $('#ghpExit').focus(); } });\r\n  $('[data-cta=\"return\"]').addEventListener('click',function(){ withLoading(this,()=>{ window.top.location.href=RETURN_URL; },500); });\r\n  $('#ghpNext').addEventListener('click',next);\r\n  $('#ghpPrev').addEventListener('click',prev);\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 8 Welcome Protect Your Home in Minutes Answer a few simple questions and we&#8217;ll prepare your Home Pack Insurance proposal for a Geminia advisor to quote. Get Started \u2192 About you Tell us about the proposer These details go on Part 1 of the official Geminia Home Pack proposal form. Full name [&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-1381","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>Homepack 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=\"Homepack Insurance Form - Geminia Insurance\" \/>\n<meta property=\"og:description\" content=\"Step 1 of 8 Welcome Protect Your Home in Minutes Answer a few simple questions and we&#8217;ll prepare your Home Pack Insurance proposal for a Geminia advisor to quote. Get Started \u2192 About you Tell us about the proposer These details go on Part 1 of the official Geminia Home Pack proposal form. Full name [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/geminia.co.ke\/dev\/homepack-insurance-form\/\" \/>\n<meta property=\"og:site_name\" content=\"Geminia Insurance\" \/>\n<meta property=\"article:modified_time\" content=\"2026-08-13T12:05:23+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/geminia.co.ke\/dev\/wp-content\/uploads\/2026\/08\/Hompack-Proposal-Form.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=\"6 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/geminia.co.ke\\\/dev\\\/homepack-insurance-form\\\/\",\"url\":\"https:\\\/\\\/geminia.co.ke\\\/dev\\\/homepack-insurance-form\\\/\",\"name\":\"Homepack Insurance Form - Geminia Insurance\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/geminia.co.ke\\\/dev\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/geminia.co.ke\\\/dev\\\/homepack-insurance-form\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/geminia.co.ke\\\/dev\\\/homepack-insurance-form\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/geminia.co.ke\\\/dev\\\/wp-content\\\/uploads\\\/2026\\\/08\\\/Hompack-Proposal-Form.jpg\",\"datePublished\":\"2026-08-13T06:41:24+00:00\",\"dateModified\":\"2026-08-13T12:05:23+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/geminia.co.ke\\\/dev\\\/homepack-insurance-form\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/geminia.co.ke\\\/dev\\\/homepack-insurance-form\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/geminia.co.ke\\\/dev\\\/homepack-insurance-form\\\/#primaryimage\",\"url\":\"https:\\\/\\\/geminia.co.ke\\\/dev\\\/wp-content\\\/uploads\\\/2026\\\/08\\\/Hompack-Proposal-Form.jpg\",\"contentUrl\":\"https:\\\/\\\/geminia.co.ke\\\/dev\\\/wp-content\\\/uploads\\\/2026\\\/08\\\/Hompack-Proposal-Form.jpg\",\"width\":1600,\"height\":2000},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/geminia.co.ke\\\/dev\\\/homepack-insurance-form\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/geminia.co.ke\\\/dev\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Homepack 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":"Homepack 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":"Homepack Insurance Form - Geminia Insurance","og_description":"Step 1 of 8 Welcome Protect Your Home in Minutes Answer a few simple questions and we&#8217;ll prepare your Home Pack Insurance proposal for a Geminia advisor to quote. Get Started \u2192 About you Tell us about the proposer These details go on Part 1 of the official Geminia Home Pack proposal form. Full name [&hellip;]","og_url":"https:\/\/geminia.co.ke\/dev\/homepack-insurance-form\/","og_site_name":"Geminia Insurance","article_modified_time":"2026-08-13T12:05:23+00:00","og_image":[{"url":"https:\/\/geminia.co.ke\/dev\/wp-content\/uploads\/2026\/08\/Hompack-Proposal-Form.jpg","type":"","width":"","height":""}],"twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"6 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/geminia.co.ke\/dev\/homepack-insurance-form\/","url":"https:\/\/geminia.co.ke\/dev\/homepack-insurance-form\/","name":"Homepack Insurance Form - Geminia Insurance","isPartOf":{"@id":"https:\/\/geminia.co.ke\/dev\/#website"},"primaryImageOfPage":{"@id":"https:\/\/geminia.co.ke\/dev\/homepack-insurance-form\/#primaryimage"},"image":{"@id":"https:\/\/geminia.co.ke\/dev\/homepack-insurance-form\/#primaryimage"},"thumbnailUrl":"https:\/\/geminia.co.ke\/dev\/wp-content\/uploads\/2026\/08\/Hompack-Proposal-Form.jpg","datePublished":"2026-08-13T06:41:24+00:00","dateModified":"2026-08-13T12:05:23+00:00","breadcrumb":{"@id":"https:\/\/geminia.co.ke\/dev\/homepack-insurance-form\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/geminia.co.ke\/dev\/homepack-insurance-form\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/geminia.co.ke\/dev\/homepack-insurance-form\/#primaryimage","url":"https:\/\/geminia.co.ke\/dev\/wp-content\/uploads\/2026\/08\/Hompack-Proposal-Form.jpg","contentUrl":"https:\/\/geminia.co.ke\/dev\/wp-content\/uploads\/2026\/08\/Hompack-Proposal-Form.jpg","width":1600,"height":2000},{"@type":"BreadcrumbList","@id":"https:\/\/geminia.co.ke\/dev\/homepack-insurance-form\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/geminia.co.ke\/dev\/"},{"@type":"ListItem","position":2,"name":"Homepack 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\/1381","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=1381"}],"version-history":[{"count":10,"href":"https:\/\/geminia.co.ke\/dev\/wp-json\/wp\/v2\/pages\/1381\/revisions"}],"predecessor-version":[{"id":1411,"href":"https:\/\/geminia.co.ke\/dev\/wp-json\/wp\/v2\/pages\/1381\/revisions\/1411"}],"wp:attachment":[{"href":"https:\/\/geminia.co.ke\/dev\/wp-json\/wp\/v2\/media?parent=1381"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}