{"id":3409,"date":"2026-04-14T10:59:03","date_gmt":"2026-04-14T10:59:03","guid":{"rendered":"https:\/\/joseph-mews.com.tr\/?page_id=3409"},"modified":"2026-04-14T11:00:15","modified_gmt":"2026-04-14T11:00:15","slug":"payment-mortgage","status":"publish","type":"page","link":"https:\/\/joseph-mews.com.tr\/tr\/payment-mortgage\/","title":{"rendered":"\u00f6deme\/ipotek"},"content":{"rendered":"\n<link href=\"https:\/\/fonts.googleapis.com\/css2?family=Cormorant+Garamond:ital,wght@0,300;0,400;0,500;1,300;1,400&#038;family=Montserrat:wght@300;400;500&#038;display=swap\" rel=\"stylesheet\">\n<style>\n*{box-sizing:border-box;margin:0;padding:0;}html{font-size:15px;-webkit-text-size-adjust:100%;}body{font-size:15px;line-height:1.6;font-family:'Montserrat',sans-serif;}\n.jm{width:100%;font-family:'Montserrat',sans-serif;color:#1C1710;background:#F5F0E8;}\n\n\/* \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n   SCREEN SYSTEM\n\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 *\/\n.jm-screen{\n  display:none;\n  position:fixed;\n  top:0;left:0;right:0;bottom:0;\n  width:100vw;height:100vh;\n  overflow-y:auto;\n  z-index:99999;\n  background:#F5F0E8;\n}\n.jm-screen.active{display:block;}\n#jmS1{background:#1C1710;}\n\n\/* \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n   SCREEN 1 \u2014 LANDING (unchanged from original)\n\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 *\/\n#jmS1{background:#1C1710;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:80px 10%;min-height:100vh;}\n.jm-s1-tag{font-size:9px;letter-spacing:5px;text-transform:uppercase;color:#9B8A6A;margin-bottom:24px;}\n.jm-s1-title{font-family:'Cormorant Garamond',serif;font-size:72px;font-weight:300;color:#fff;line-height:1.0;margin-bottom:20px;letter-spacing:1px;}\n.jm-s1-title em{font-style:italic;color:#B8A06A;}\n.jm-s1-sub{font-size:12px;color:rgba(255,255,255,0.35);line-height:1.9;max-width:440px;margin:0 auto 48px;letter-spacing:0.3px;}\n.jm-s1-btns{display:flex;gap:12px;justify-content:center;flex-wrap:wrap;}\n.jm-btn-primary{padding:16px 56px;background:#B8A06A;border:none;color:#1C1710;font-size:9px;letter-spacing:3px;text-transform:uppercase;font-family:'Montserrat',sans-serif;cursor:pointer;}\n.jm-btn-outline{padding:16px 40px;background:transparent;border:0.5px solid rgba(184,160,106,0.4);color:#B8A06A;font-size:9px;letter-spacing:3px;text-transform:uppercase;font-family:'Montserrat',sans-serif;cursor:pointer;}\n.jm-s1-stats{display:flex;gap:40px;justify-content:center;margin-top:56px;padding-top:40px;border-top:0.5px solid rgba(255,255,255,0.08);flex-wrap:wrap;}\n.jm-s1-stat-n{font-family:'Cormorant Garamond',serif;font-size:36px;color:#B8A06A;font-weight:300;}\n.jm-s1-stat-l{font-size:8px;letter-spacing:2px;text-transform:uppercase;color:rgba(255,255,255,0.2);margin-top:4px;}\n\n\/* \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n   SCREEN 2 \u2014 CONFIGURE\n\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 *\/\n#jmS2{background:#F5F0E8;}\n.jm-s2-top{background:#1C1710;padding:20px 8%;display:flex;align-items:center;justify-content:space-between;position:sticky;top:0;z-index:1000;border-bottom:1px solid rgba(184,160,106,0.2);}\n.jm-s2-top-title{font-family:'Cormorant Garamond',serif;font-size:26px;color:#fff;font-weight:400;letter-spacing:0.5px;}\n.jm-s2-top-sub{font-size:11px;letter-spacing:1px;text-transform:uppercase;color:rgba(184,160,106,0.8);margin-top:5px;}\n.jm-s2-top-right{display:flex;align-items:center;gap:16px;}\n.jm-port-count-badge{background:rgba(184,160,106,0.12);border:0.5px solid rgba(184,160,106,0.35);padding:10px 20px;font-size:12px;letter-spacing:1px;text-transform:uppercase;color:#D4BC8A;white-space:nowrap;}\n.jm-summary-btn-top{padding:13px 28px;background:#B8A06A;border:none;color:#1C1710;font-size:12px;letter-spacing:1.5px;text-transform:uppercase;font-family:'Montserrat',sans-serif;cursor:pointer;opacity:0.35;pointer-events:none;transition:all 0.2s;white-space:nowrap;font-weight:500;}\n.jm-summary-btn-top.enabled{opacity:1;pointer-events:auto;}\n.jm-summary-btn-top.enabled:hover{background:#D4BC8A;}\n\n.jm-s2-body{display:grid;grid-template-columns:1fr 1fr;min-height:calc(100vh - 80px);}\n\n\/* LEFT \u2014 config panel *\/\n.jm-config{background:#F5F0E8;padding:40px 6% 40px 8%;border-right:0.5px solid rgba(28,23,16,0.1);font-family:'Montserrat',sans-serif;}\n.jm-config-sec{font-size:11px;letter-spacing:1px;text-transform:uppercase;color:#9B8A6A;margin-bottom:24px;padding-bottom:12px;border-bottom:0.5px solid rgba(28,23,16,0.08);font-weight:500;font-family:'Montserrat',sans-serif;}\n.jm-field{margin-bottom:24px;}\n.jm-lbl{font-size:11px;letter-spacing:0.5px;text-transform:uppercase;color:rgba(28,23,16,0.55);margin-bottom:10px;font-weight:500;font-family:'Montserrat',sans-serif;}\n.jm-sel{width:100%;background:transparent;border:none;border-bottom:0.5px solid rgba(28,23,16,0.25);color:#1C1710;font-size:16px;font-family:'Montserrat',sans-serif;padding:12px 0;outline:none;cursor:pointer;-webkit-appearance:none;font-weight:400;letter-spacing:0;}\n.jm-dd{position:relative;width:100%;margin-bottom:0;}\n.jm-dd-btn{width:100%;background:transparent;border:none;border-bottom:1px solid rgba(28,23,16,0.2);color:#1C1710;font-size:16px;font-family:'Montserrat',sans-serif;padding:14px 0;text-align:left;cursor:pointer;display:flex;justify-content:space-between;align-items:center;font-weight:400;letter-spacing:0;line-height:1.4;}\n.jm-dd-btn svg{flex-shrink:0;transition:transform 0.2s;}\n.jm-dd-btn.open svg{transform:rotate(180deg);}\n.jm-dd-list{display:none;position:absolute;top:100%;left:0;right:0;background:#F5F0E8;border:0.5px solid rgba(28,23,16,0.15);z-index:9999;max-height:260px;overflow-y:auto;box-shadow:0 8px 24px rgba(0,0,0,0.08);}\n.jm-dd-list.open{display:block;}\n.jm-dd-opt{padding:14px 18px;font-size:15px;font-family:'Montserrat',sans-serif;color:#1C1710;cursor:pointer;border-bottom:0.5px solid rgba(28,23,16,0.05);letter-spacing:0;line-height:1.4;}\n.jm-dd-opt:last-child{border-bottom:none;}\n.jm-dd-opt:hover{background:rgba(28,23,16,0.04);}\n.jm-dd-opt.selected{color:#9B8A6A;font-weight:500;}\n.jm-sel option{background:#F5F0E8;font-family:sans-serif;font-size:13px;}\n\n\/* Unit type cards *\/\n.jm-type-row{display:grid;grid-template-columns:repeat(4,1fr);gap:1px;background:rgba(28,23,16,0.08);margin-bottom:24px;}\n.jm-tc{background:#F5F0E8;padding:16px 12px;cursor:pointer;text-align:center;border-bottom:2px solid transparent;transition:all 0.15s;}\n.jm-tc:hover{background:#EDE8DE;}\n.jm-tc.active{background:#1C1710;border-bottom-color:#B8A06A;}\n.jm-tc-label{font-size:13px;letter-spacing:0.3px;text-transform:none;color:rgba(28,23,16,0.7);margin-bottom:6px;font-weight:500;font-family:'Montserrat',sans-serif;}\n.jm-tc.active .jm-tc-label{color:rgba(255,255,255,0.45);}\n.jm-tc-price{font-family:'Cormorant Garamond',serif;font-size:16px;color:#9B8A6A;font-weight:400;}\n.jm-tc.active .jm-tc-price{color:#B8A06A;}\n.jm-tc.unavailable{opacity:0.25;cursor:default;pointer-events:none;}\n\n.jm-divider{border:none;border-top:0.5px solid rgba(28,23,16,0.1);margin:24px 0;}\n\n\/* Toggles *\/\n.jm-toggle{display:flex;border:0.5px solid rgba(28,23,16,0.18);width:100%;}\n.jm-tog{flex:1;padding:14px;font-size:12px;letter-spacing:0.5px;text-transform:none;cursor:pointer;background:transparent;border:none;font-family:'Montserrat',sans-serif;color:rgba(28,23,16,0.35);transition:all 0.15s;}\n.jm-tog.on{background:#1C1710;color:#F5F0E8;}\n\n\/* Slider *\/\n.jm-ltv-row{display:flex;align-items:center;gap:20px;}\n.jm-ltv-pct{font-family:'Cormorant Garamond',serif;font-size:36px;color:#1C1710;font-weight:300;min-width:72px;line-height:1;}\n.jm-ltv-ctrl{flex:1;}\n.jm-slider{width:100%;-webkit-appearance:none;height:1px;background:rgba(28,23,16,0.15);outline:none;cursor:pointer;}\n.jm-slider::-webkit-slider-thumb{-webkit-appearance:none;width:16px;height:16px;border-radius:50%;background:#1C1710;cursor:pointer;}\n.jm-slider-ends{display:flex;justify-content:space-between;font-size:8px;color:rgba(28,23,16,0.25);letter-spacing:1px;margin-top:6px;}\n\n\/* Add to portfolio btn *\/\n.jm-add-btn{width:100%;padding:16px;background:#1C1710;border:none;color:#F5F0E8;font-size:13px;letter-spacing:0.5px;text-transform:none;font-family:'Montserrat',sans-serif;cursor:pointer;margin-top:8px;transition:opacity 0.2s;}\n.jm-add-btn:hover{opacity:0.8;}\n\n\/* Portfolio pills *\/\n.jm-pills-area{margin-top:20px;}\n.jm-pills-lbl{font-size:11px;letter-spacing:0.3px;color:rgba(28,23,16,0.45);margin-bottom:10px;font-family:'Montserrat',sans-serif;}\n.jm-pills{display:flex;flex-wrap:wrap;gap:8px;}\n.jm-pill{display:flex;align-items:center;gap:7px;border:0.5px solid rgba(28,23,16,0.18);padding:7px 12px;font-size:9px;color:#1C1710;letter-spacing:0.3px;background:#fff;}\n.jm-pill-x{cursor:pointer;color:rgba(28,23,16,0.3);font-size:13px;line-height:1;}\n.jm-pill-x:hover{color:#1C1710;}\n\n\/* RIGHT \u2014 results panel *\/\n.jm-results{background:#fff;padding:40px 8% 40px 6%;}\n.jm-res-unit{font-family:'Cormorant Garamond',serif;font-size:26px;font-weight:300;color:#1C1710;margin-bottom:4px;}\n.jm-res-sub{font-size:11px;letter-spacing:1px;text-transform:uppercase;color:#9B8A6A;margin-bottom:28px;font-weight:500;}\n\n\/* 4 metric cards *\/\n.jm-metrics{display:grid;grid-template-columns:1fr 1fr;gap:1px;background:rgba(28,23,16,0.08);margin-bottom:1px;}\n.jm-met{background:#F5F0E8;padding:20px;}\n.jm-met-l{font-size:10px;letter-spacing:1px;text-transform:uppercase;color:rgba(28,23,16,0.55);margin-bottom:8px;font-weight:500;}\n.jm-met-v{font-family:'Cormorant Garamond',serif;font-size:28px;font-weight:300;color:#1C1710;white-space:nowrap;display:block;min-height:36px;}\n.jm-met-v.gold{color:#9B8A6A;}\n\n\/* Key figures *\/\n.jm-kf-row{display:grid;grid-template-columns:1fr 1fr;gap:1px;background:rgba(28,23,16,0.08);margin-bottom:24px;}\n.jm-kf{background:#1C1710;padding:20px;display:flex;flex-direction:column;justify-content:space-between;gap:10px;min-height:80px;}\n.jm-kf-l{font-size:10px;letter-spacing:0.5px;text-transform:uppercase;color:rgba(255,255,255,0.65);font-weight:400;line-height:1.5;}\n.jm-kf-v{font-family:'Cormorant Garamond',serif;font-size:24px;color:#B8A06A;font-weight:300;white-space:nowrap;}\n\n\/* Payment plan *\/\n.jm-payment-plan{background:#F5F0E8;border:0.5px solid rgba(28,23,16,0.1);padding:20px;margin-bottom:24px;}\n.jm-pp-title{font-size:11px;letter-spacing:1.5px;text-transform:uppercase;color:#9B8A6A;margin-bottom:16px;font-weight:500;}\n.jm-pp-row{display:flex;justify-content:space-between;align-items:center;padding:8px 0;border-bottom:0.5px solid rgba(28,23,16,0.06);}\n.jm-pp-row:last-child{border-bottom:none;}\n.jm-pp-lbl{font-size:13px;color:rgba(28,23,16,0.7);line-height:1.5;}\n.jm-pp-val{font-family:'Cormorant Garamond',serif;font-size:20px;color:#1C1710;font-weight:400;white-space:nowrap;}\n\n\/* Projections *\/\n.jm-proj-lbl{font-size:10px;letter-spacing:2px;text-transform:uppercase;color:#9B8A6A;margin-bottom:14px;font-weight:500;}\n.jm-proj-hd{display:grid;grid-template-columns:60px 1fr 1fr 1fr;gap:4px;padding-bottom:8px;border-bottom:0.5px solid rgba(28,23,16,0.08);margin-bottom:2px;}\n.jm-phc{font-size:10px;letter-spacing:1px;text-transform:uppercase;color:rgba(28,23,16,0.55);font-weight:500;}\n.jm-prow{display:grid;grid-template-columns:60px 1fr 1fr 1fr;gap:4px;padding:9px 0;border-bottom:0.5px solid rgba(28,23,16,0.05);}\n.jm-pyr{font-family:'Cormorant Garamond',serif;font-size:16px;color:rgba(28,23,16,0.6);white-space:nowrap;}\n.jm-pv{font-size:13px;color:rgba(28,23,16,0.75);font-weight:500;white-space:nowrap;min-width:80px;}\n.jm-pv.pos{color:#2E6E42;font-weight:500;white-space:nowrap;}\n\n\/* \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n   SCREEN 3 \u2014 SUMMARY\n\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 *\/\n#jmS3{background:#F5F0E8;}\n.jm-s3-hdr{background:#1C1710;padding:40px 8%;display:flex;justify-content:space-between;align-items:flex-end;}\n.jm-s3-back{background:transparent;border:0.5px solid rgba(184,160,106,0.3);color:#B8A06A;font-size:8px;letter-spacing:2px;text-transform:uppercase;padding:10px 18px;cursor:pointer;font-family:'Montserrat',sans-serif;}\n.jm-s3-title{font-family:'Cormorant Garamond',serif;font-size:44px;font-weight:300;color:#fff;line-height:1.05;}\n.jm-s3-title em{font-style:italic;color:#B8A06A;}\n.jm-s3-sub{font-size:9px;letter-spacing:1.5px;color:rgba(255,255,255,0.3);margin-top:8px;}\n\n.jm-s3-body{padding:40px 8%;}\n\n\/* Unit cards *\/\n.jm-ucard{border:0.5px solid rgba(28,23,16,0.1);background:#fff;margin-bottom:16px;overflow:hidden;}\n.jm-ucard-hd{background:#1C1710;padding:14px 20px;display:flex;justify-content:space-between;align-items:center;}\n.jm-ucard-name{font-family:'Cormorant Garamond',serif;font-size:18px;color:#fff;font-weight:300;}\n.jm-ucard-badge{background:#B8A06A;color:#1C1710;font-size:7px;letter-spacing:1px;padding:3px 8px;text-transform:uppercase;}\n.jm-ucard-grid{display:grid;grid-template-columns:repeat(4,1fr);}\n.jm-ucell{padding:16px;border-right:0.5px solid rgba(28,23,16,0.06);}\n.jm-ucell:last-child{border-right:none;}\n.jm-ucell-l{font-size:7px;letter-spacing:1.5px;text-transform:uppercase;color:rgba(28,23,16,0.3);margin-bottom:4px;}\n.jm-ucell-v{font-family:'Cormorant Garamond',serif;font-size:18px;font-weight:300;color:#1C1710;}\n.jm-ucell-v.gold{color:#9B8A6A;}\n.jm-ucell-v.green{color:#2E6E42;}\n.jm-ucell-v.muted{color:rgba(28,23,16,0.35);font-size:15px;}\n.jm-ucell-sub{font-size:8px;color:rgba(28,23,16,0.3);margin-top:2px;}\n.jm-ucard-divlbl{font-size:7px;letter-spacing:2px;text-transform:uppercase;color:#9B8A6A;padding:8px 16px;background:rgba(28,23,16,0.02);border-top:0.5px solid rgba(28,23,16,0.05);}\n\n\/* Payment plan in summary *\/\n.jm-ucard-pp{padding:12px 16px;background:#F5F0E8;border-top:0.5px solid rgba(28,23,16,0.06);}\n.jm-ucard-pp-title{font-size:7px;letter-spacing:2px;text-transform:uppercase;color:#9B8A6A;margin-bottom:8px;}\n.jm-ucard-pp-rows{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;}\n.jm-ucard-pp-item{background:#fff;padding:10px 12px;}\n.jm-ucard-pp-item-l{font-size:7px;color:rgba(28,23,16,0.4);letter-spacing:0.5px;margin-bottom:3px;}\n.jm-ucard-pp-item-v{font-family:'Cormorant Garamond',serif;font-size:16px;color:#1C1710;font-weight:300;}\n\n\/* Projections in summary *\/\n.jm-ucard-proj{padding:12px 16px;border-top:0.5px solid rgba(28,23,16,0.05);}\n.jm-up-hd{display:grid;grid-template-columns:56px 1fr 1fr 1fr 1fr;gap:4px;padding-bottom:6px;border-bottom:0.5px solid rgba(28,23,16,0.07);margin-bottom:3px;}\n.jm-uphc{font-size:7px;letter-spacing:1.5px;text-transform:uppercase;color:rgba(28,23,16,0.28);}\n.jm-uprow{display:grid;grid-template-columns:56px 1fr 1fr 1fr 1fr;gap:4px;padding:6px 0;border-bottom:0.5px solid rgba(28,23,16,0.04);}\n.jm-uprow:last-child{border-bottom:none;}\n.jm-upyr{font-family:'Cormorant Garamond',serif;font-size:12px;color:rgba(28,23,16,0.32);}\n.jm-upv{font-size:10px;color:rgba(28,23,16,0.55);}\n.jm-upv.gr{color:#2E6E42;}\n\n\/* Combined totals *\/\n.jm-combined{background:#1C1710;padding:32px;margin-bottom:16px;}\n.jm-comb-ttl{font-size:8px;letter-spacing:3px;text-transform:uppercase;color:#9B8A6A;margin-bottom:20px;}\n.jm-comb-sec{font-size:7px;letter-spacing:2.5px;text-transform:uppercase;color:rgba(255,255,255,0.2);margin-bottom:10px;padding-bottom:6px;border-bottom:0.5px solid rgba(255,255,255,0.05);}\n.jm-comb-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;background:rgba(255,255,255,0.05);margin-bottom:16px;}\n.jm-cc{background:#1C1710;padding:16px;}\n.jm-cc-l{font-size:7px;letter-spacing:1.5px;text-transform:uppercase;color:rgba(255,255,255,0.25);margin-bottom:5px;}\n.jm-cc-v{font-family:'Cormorant Garamond',serif;font-size:20px;font-weight:300;}\n.jm-cc-v.gold{color:#B8A06A;}\n.jm-cc-v.green{color:#8FCF9A;}\n.jm-cc-v.white{color:#fff;}\n.jm-cc-sub{font-size:8px;color:rgba(255,255,255,0.18);margin-top:2px;}\n\n\/* Action cards *\/\n.jm-act-lbl{font-size:9px;letter-spacing:3px;text-transform:uppercase;color:#9B8A6A;margin-bottom:12px;}\n.jm-act-title{font-family:'Cormorant Garamond',serif;font-size:36px;font-weight:300;color:#1C1710;margin-bottom:32px;line-height:1.1;}\n.jm-act-grid{display:grid;grid-template-columns:1fr 1fr 1fr;gap:1px;background:rgba(28,23,16,0.08);}\n.jm-act{padding:32px 28px;background:#fff;position:relative;}\n.jm-act:last-child{background:#1C1710;}\n.jm-act-n{font-family:'Cormorant Garamond',serif;font-size:48px;color:rgba(28,23,16,0.04);font-weight:300;position:absolute;top:16px;right:20px;line-height:1;}\n.jm-act:last-child .jm-act-n{color:rgba(255,255,255,0.04);}\n.jm-act-icon{width:32px;height:32px;border:0.5px solid rgba(28,23,16,0.15);display:flex;align-items:center;justify-content:center;margin-bottom:16px;}\n.jm-act:last-child .jm-act-icon{border-color:rgba(184,160,106,0.3);}\n.jm-act-ct{font-family:'Cormorant Garamond',serif;font-size:20px;font-weight:300;color:#1C1710;margin-bottom:8px;}\n.jm-act:last-child .jm-act-ct{color:#fff;}\n.jm-act-desc{font-size:9px;line-height:1.7;color:rgba(28,23,16,0.38);margin-bottom:20px;}\n.jm-act:last-child .jm-act-desc{color:rgba(255,255,255,0.3);}\n.jm-act-btn{display:inline-block;padding:10px 20px;font-size:8px;letter-spacing:2px;text-transform:uppercase;font-family:'Montserrat',sans-serif;background:#1C1710;color:#F5F0E8;border:none;cursor:pointer;}\n.jm-act:last-child .jm-act-btn{background:#B8A06A;color:#1C1710;}\n\n.jm-disc{padding:20px 0;font-size:9px;color:rgba(28,23,16,0.3);line-height:1.7;border-top:0.5px solid rgba(28,23,16,0.08);margin-top:32px;}\n\n\/* Collapsible unit card *\/\n.jm-ucard-toggle{cursor:pointer;user-select:none;}\n.jm-ucard-arrow{width:28px;height:28px;border:0.5px solid rgba(255,255,255,0.2);display:flex;align-items:center;justify-content:center;transition:transform 0.25s;flex-shrink:0;}\n.jm-ucard-arrow.open{transform:rotate(180deg);}\n.jm-ucard-body{overflow:hidden;transition:max-height 0.3s ease;max-height:0;}\n.jm-ucard-body.open{max-height:2000px;}\n\n\/* New combined section *\/\n.jm-sum-combined{background:#F5F0E8;border:0.5px solid rgba(28,23,16,0.1);margin-bottom:24px;overflow:hidden;}\n.jm-sum-combined-hd{background:#1C1710;padding:20px 24px;}\n.jm-sum-combined-title{font-family:'Cormorant Garamond',serif;font-size:24px;color:#fff;font-weight:300;margin-bottom:4px;}\n.jm-sum-combined-sub{font-size:9px;letter-spacing:1.5px;color:rgba(255,255,255,0.35);text-transform:uppercase;}\n\n\/* Big number cards *\/\n.jm-big-cards{display:grid;grid-template-columns:1fr 1fr 1fr;gap:1px;background:rgba(28,23,16,0.08);margin-bottom:1px;}\n.jm-big-card{background:#fff;padding:24px 20px;}\n.jm-big-card.dark{background:#1C1710;}\n.jm-big-card-emoji{font-size:20px;margin-bottom:10px;}\n.jm-big-card-label{font-size:10px;letter-spacing:1.5px;text-transform:uppercase;color:rgba(28,23,16,0.4);margin-bottom:6px;font-weight:500;}\n.jm-big-card.dark .jm-big-card-label{color:rgba(255,255,255,0.35);}\n.jm-big-card-value{font-family:'Cormorant Garamond',serif;font-size:32px;font-weight:300;color:#1C1710;line-height:1;}\n.jm-big-card.dark .jm-big-card-value{color:#B8A06A;}\n.jm-big-card-value.green{color:#2E6E42;}\n.jm-big-card-sub{font-size:11px;color:rgba(28,23,16,0.4);margin-top:6px;}\n.jm-big-card.dark .jm-big-card-sub{color:rgba(255,255,255,0.25);}\n\n\/* Simple breakdown table *\/\n.jm-breakdown{padding:24px;}\n.jm-breakdown-title{font-size:10px;letter-spacing:2px;text-transform:uppercase;color:#9B8A6A;margin-bottom:16px;font-weight:500;}\n.jm-breakdown-row{display:flex;justify-content:space-between;align-items:center;padding:12px 0;border-bottom:0.5px solid rgba(28,23,16,0.06);}\n.jm-breakdown-row:last-child{border-bottom:none;}\n.jm-breakdown-label{font-size:14px;color:rgba(28,23,16,0.65);line-height:1.4;}\n.jm-breakdown-label.bold{color:#1C1710;font-weight:500;}\n.jm-breakdown-value{font-family:'Cormorant Garamond',serif;font-size:20px;color:#1C1710;font-weight:300;white-space:nowrap;}\n.jm-breakdown-value.green{color:#2E6E42;}\n.jm-breakdown-value.gold{color:#9B8A6A;}\n.jm-breakdown-value.red{color:#B85A5A;}\n\n\/* Chart bar *\/\n.jm-chart{padding:24px;background:#F5F0E8;border-top:0.5px solid rgba(28,23,16,0.06);}\n.jm-chart-title{font-size:10px;letter-spacing:2px;text-transform:uppercase;color:#9B8A6A;margin-bottom:20px;font-weight:500;}\n.jm-chart-row{display:flex;align-items:center;gap:12px;margin-bottom:10px;}\n.jm-chart-label{font-size:11px;color:rgba(28,23,16,0.5);width:50px;text-align:right;flex-shrink:0;}\n.jm-chart-bar-wrap{flex:1;height:32px;background:rgba(28,23,16,0.05);position:relative;overflow:hidden;}\n.jm-chart-bar{height:100%;background:#1C1710;display:flex;align-items:center;padding-left:10px;transition:width 0.8s ease;}\n.jm-chart-bar.gold{background:#B8A06A;}\n.jm-chart-bar-val{font-family:'Cormorant Garamond',serif;font-size:13px;color:#fff;white-space:nowrap;}\n.jm-chart-legend{display:flex;gap:20px;margin-top:12px;}\n.jm-chart-leg-item{display:flex;align-items:center;gap:6px;font-size:10px;color:rgba(28,23,16,0.5);}\n.jm-chart-leg-dot{width:10px;height:10px;flex-shrink:0;}\n\n\/* \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n   MOBILE RESPONSIVE \u2014 768px and below\n\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 *\/\n@media(max-width:768px){\n\n  \/* Landing *\/\n  #jmS1 > div{padding:48px 6% 40px!important;}\n  .jm-s1-title{font-size:44px!important;}\n  .jm-s1-sub{font-size:13px!important;}\n  .jm-btn-primary,.jm-btn-outline{padding:14px 32px!important;font-size:11px!important;}\n  .jm-s1-stats{grid-template-columns:1fr 1fr!important;gap:1px!important;}\n\n  \/* Top bar *\/\n  .jm-s2-top{padding:16px 5%!important;flex-wrap:wrap;gap:10px;}\n  .jm-s2-top-title{font-size:20px!important;}\n  .jm-s2-top-right{width:100%;justify-content:space-between;}\n\n  \/* Main layout \u2014 stack vertically *\/\n  .jm-s2-body{grid-template-columns:1fr!important;min-height:auto!important;}\n\n  \/* Config panel *\/\n  .jm-config{padding:24px 5%!important;border-right:none!important;border-bottom:0.5px solid rgba(28,23,16,0.1);}\n\n  \/* Unit type cards \u2014 2x2 grid *\/\n  .jm-type-row{grid-template-columns:1fr 1fr!important;}\n\n  \/* Results panel *\/\n  .jm-results{padding:24px 5%!important;}\n  .jm-res-unit{font-size:20px!important;}\n\n  \/* 4 metric cards \u2014 2x2 *\/\n  .jm-metrics{grid-template-columns:1fr 1fr!important;}\n  .jm-met{padding:16px!important;}\n  .jm-met-v{font-size:24px!important;}\n\n  \/* KF row \u2014 stack *\/\n  .jm-kf-row{grid-template-columns:1fr!important;}\n\n  \/* Projections \u2014 scrollable *\/\n  .jm-proj-hd,.jm-prow{grid-template-columns:48px 1fr 1fr 1fr!important;gap:4px!important;}\n  .jm-phc,.jm-pv{font-size:10px!important;}\n\n  \/* Toggle buttons *\/\n  .jm-tog{font-size:10px!important;padding:11px 6px!important;letter-spacing:0.5px!important;}\n\n  \/* Slider row *\/\n  .jm-ltv-row{gap:12px!important;}\n  .jm-ltv-pct{font-size:28px!important;min-width:60px!important;}\n\n  \/* Summary screen *\/\n  .jm-s3-hdr{padding:28px 5%!important;flex-direction:column;gap:16px;align-items:flex-start!important;}\n  .jm-s3-title{font-size:32px!important;}\n  .jm-s3-body{padding:20px 5%!important;}\n\n  \/* Unit cards in summary \u2014 2 cols *\/\n  .jm-ucard-grid{grid-template-columns:1fr 1fr!important;}\n  .jm-ucell{padding:12px!important;}\n  .jm-ucell-v{font-size:15px!important;}\n\n  \/* 5 col grid \u2014 2+3 *\/\n  .jm-ucard-grid[style*=\"repeat(5\"]{grid-template-columns:1fr 1fr!important;}\n\n  \/* Combined big cards \u2014 stack *\/\n  .jm-big-cards{grid-template-columns:1fr!important;}\n  .jm-big-card-value{font-size:26px!important;}\n\n  \/* Breakdown table *\/\n  .jm-breakdown{padding:16px!important;}\n  .jm-breakdown-label{font-size:12px!important;}\n  .jm-breakdown-value{font-size:16px!important;}\n\n  \/* Combined grid *\/\n  .jm-comb-grid{grid-template-columns:1fr 1fr!important;}\n  .jm-cc-v{font-size:18px!important;}\n\n  \/* Action cards \u2014 stack *\/\n  .jm-act-grid{grid-template-columns:1fr!important;}\n  .jm-act{border-right:none!important;border-bottom:0.5px solid rgba(28,23,16,0.08);}\n\n  \/* Payment plan *\/\n  .jm-ucard-pp-rows{grid-template-columns:1fr 1fr!important;}\n\n  \/* Bar chart labels *\/\n  .jm-chart-label{font-size:10px!important;width:36px!important;}\n  .jm-chart-bar-val{font-size:11px!important;}\n\n  \/* Proj strip in summary *\/\n  .jm-up-hd,.jm-uprow{grid-template-columns:40px 1fr 1fr 1fr!important;}\n  .jm-uphc,.jm-upv{font-size:9px!important;}\n\n  \/* Portfolio cards *\/\n  #jmPortCards > div > div[style*=\"grid-template-columns:1fr 1fr 1fr 1fr\"]{\n    grid-template-columns:1fr 1fr!important;\n  }\n\n  \/* Empty portfolio state *\/\n  #jmPortEmpty{padding:20px!important;}\n}\n\n\/* \u2500\u2500\u2500 Very small phones \u2500\u2500\u2500 *\/\n@media(max-width:380px){\n  .jm-s1-title{font-size:36px!important;}\n  .jm-metrics{grid-template-columns:1fr!important;}\n  .jm-ucard-grid{grid-template-columns:1fr!important;}\n  .jm-comb-grid{grid-template-columns:1fr!important;}\n}\n<\/style>\n\n<div class=\"jm\" style=\"position:relative;width:100%;height:0;\">\n\n<!-- \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n     SCREEN 1 \u2014 LANDING\n\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 -->\n<div id=\"jmS1\" class=\"jm-screen active\">\n  <div style=\"display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:80px 10%;min-height:100vh;background:#1C1710;\">\n    <div class=\"jm-s1-tag\">Joseph Mews \u2014 Investment Calculator<\/div>\n    <div class=\"jm-s1-title\">Welcome to your<br><em>investment<\/em><br>calculator.<\/div>\n    <div class=\"jm-s1-sub\">Build your personalised UK property portfolio. See gross yield, net income, capital growth and 15-year projections \u2014 all in real time.<\/div>\n    <div class=\"jm-s1-btns\">\n      <button class=\"jm-btn-primary\" onclick=\"jmGo(2)\">Start your portfolio \u2192<\/button>\n    <\/div>\n    <div style=\"margin-top:56px;padding-top:40px;border-top:0.5px solid rgba(255,255,255,0.08);display:grid;grid-template-columns:repeat(4,1fr);gap:1px;background:rgba(255,255,255,0.06);width:100%;max-width:900px;\">\n      <div style=\"background:#1C1710;padding:28px 24px;text-align:center;\">\n        <div style=\"font-size:28px;margin-bottom:10px;\">\ud83c\udfd9\ufe0f<\/div>\n        <div style=\"font-family:'Cormorant Garamond',serif;font-size:18px;color:#fff;font-weight:300;margin-bottom:6px;\">5 Cities<\/div>\n        <div style=\"font-size:9px;letter-spacing:1.5px;text-transform:uppercase;color:rgba(184,160,106,0.6);\">UK&#8217;s best markets<\/div>\n      <\/div>\n      <div style=\"background:#1C1710;padding:28px 24px;text-align:center;\">\n        <div style=\"font-size:28px;margin-bottom:10px;\">\ud83d\udcca<\/div>\n        <div style=\"font-family:'Cormorant Garamond',serif;font-size:18px;color:#fff;font-weight:300;margin-bottom:6px;\">Real-time<\/div>\n        <div style=\"font-size:9px;letter-spacing:1.5px;text-transform:uppercase;color:rgba(184,160,106,0.6);\">Instant projections<\/div>\n      <\/div>\n      <div style=\"background:#1C1710;padding:28px 24px;text-align:center;\">\n        <div style=\"font-size:28px;margin-bottom:10px;\">\ud83d\udd0d<\/div>\n        <div style=\"font-family:'Cormorant Garamond',serif;font-size:18px;color:#fff;font-weight:300;margin-bottom:6px;\">No hidden costs<\/div>\n        <div style=\"font-size:9px;letter-spacing:1.5px;text-transform:uppercase;color:rgba(184,160,106,0.6);\">Full transparency<\/div>\n      <\/div>\n      <div style=\"background:#1C1710;padding:28px 24px;text-align:center;\">\n        <div style=\"font-size:28px;margin-bottom:10px;\">\ud83d\udcc8<\/div>\n        <div style=\"font-family:'Cormorant Garamond',serif;font-size:18px;color:#fff;font-weight:300;margin-bottom:6px;\">15-year view<\/div>\n        <div style=\"font-size:9px;letter-spacing:1.5px;text-transform:uppercase;color:rgba(184,160,106,0.6);\">Capital growth &#038; income<\/div>\n      <\/div>\n    <\/div>\n  <\/div>\n<\/div>\n\n<!-- \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n     SCREEN 2 \u2014 CONFIGURE\n\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 -->\n<div id=\"jmS2\" class=\"jm-screen\">\n  <div class=\"jm-s2-top\">\n    <div>\n      <div class=\"jm-s2-top-title\">Build your portfolio<\/div>\n      <div class=\"jm-s2-top-sub\">Select project, choose unit type and configure your investment<\/div>\n    <\/div>\n    <div class=\"jm-s2-top-right\">\n      <div class=\"jm-port-count-badge\" id=\"jmPortBadge\">0 units added<\/div>\n      <button class=\"jm-summary-btn-top\" id=\"jmSumBtn\" onclick=\"jmGo(3)\">View summary \u2192<\/button>\n    <\/div>\n  <\/div>\n\n  <div class=\"jm-s2-body\">\n    <!-- LEFT: CONFIG -->\n    <div class=\"jm-config\">\n      <div class=\"jm-config-sec\">Step 01 \u2014 Select your investment<\/div>\n\n      <div class=\"jm-field\">\n        <div class=\"jm-lbl\">Development<\/div>\n        <div class=\"jm-dd\" id=\"jmProjDD\">\n          <button class=\"jm-dd-btn\" id=\"jmProjBtn\" onclick=\"jmToggleDD('jmProjDD')\">\n            <span id=\"jmProjLabel\">Penny Place \u2014 Wolverhampton<\/span>\n            <svg width=\"12\" height=\"8\" viewBox=\"0 0 12 8\" fill=\"none\"><path d=\"M1 1l5 5 5-5\" stroke=\"#9B8A6A\" stroke-width=\"1.5\" stroke-linecap=\"round\"\/><\/svg>\n          <\/button>\n          <div class=\"jm-dd-list\" id=\"jmProjList\">\n            <div class=\"jm-dd-opt selected\" onclick=\"jmPickProj('penny','Penny Place \u2014 Wolverhampton',this)\">Penny Place \u2014 Wolverhampton<\/div>\n            <div class=\"jm-dd-opt\" onclick=\"jmPickProj('lombe','Lombe House \u2014 Derby',this)\">Lombe House \u2014 Derby<\/div>\n            <div class=\"jm-dd-opt\" onclick=\"jmPickProj('cathedral','Cathedral One \u2014 Derby',this)\">Cathedral One \u2014 Derby<\/div>\n            <div class=\"jm-dd-opt\" onclick=\"jmPickProj('stpaul','30 St Paul \u2014 Birmingham',this)\">30 St Paul \u2014 Birmingham<\/div>\n            <div class=\"jm-dd-opt\" onclick=\"jmPickProj('chapmans','Chapmans Yard \u2014 Birmingham',this)\">Chapmans Yard \u2014 Birmingham<\/div>\n          <\/div>\n        <\/div>\n      <\/div>\n\n      <div class=\"jm-field\">\n        <div class=\"jm-lbl\">Unit type<\/div>\n        <div class=\"jm-type-row\" id=\"jmTypeRow\">\n          <div class=\"jm-tc\" id=\"jmTcStudio\" onclick=\"jmSetType('studio',this)\">\n            <div class=\"jm-tc-label\">Studio<\/div>\n            <div class=\"jm-tc-price\" id=\"jmPriceStudio\">\u2014<\/div>\n          <\/div>\n          <div class=\"jm-tc active\" id=\"jmTc1bed\" onclick=\"jmSetType('1bed',this)\">\n            <div class=\"jm-tc-label\">1 Bed<\/div>\n            <div class=\"jm-tc-price\" id=\"jmPrice1bed\">\u2014<\/div>\n          <\/div>\n          <div class=\"jm-tc\" id=\"jmTc2bed\" onclick=\"jmSetType('2bed',this)\">\n            <div class=\"jm-tc-label\">2 Bed<\/div>\n            <div class=\"jm-tc-price\" id=\"jmPrice2bed\">\u2014<\/div>\n          <\/div>\n          <div class=\"jm-tc\" id=\"jmTc3bed\" onclick=\"jmSetType('3bed',this)\">\n            <div class=\"jm-tc-label\">3 Bed<\/div>\n            <div class=\"jm-tc-price\" id=\"jmPrice3bed\">\u2014<\/div>\n          <\/div>\n        <\/div>\n      <\/div>\n\n      <div class=\"jm-divider\"><\/div>\n      <div class=\"jm-config-sec\">Step 02 \u2014 Payment settings<\/div>\n\n      <div class=\"jm-field\">\n        <div class=\"jm-lbl\">Investment type<\/div>\n        <div class=\"jm-toggle\">\n          <button class=\"jm-tog on\" id=\"jmBtnMort\" onclick=\"jmSetPay('mortgage')\">Mortgage<\/button>\n          <button class=\"jm-tog off\" id=\"jmBtnCash\" onclick=\"jmSetPay('cash')\">Cash investment<\/button>\n        <\/div>\n      <\/div>\n\n      <div class=\"jm-field\">\n        <div class=\"jm-lbl\">Nationality<\/div>\n        <div class=\"jm-dd\" id=\"jmNatDD\">\n            <button class=\"jm-dd-btn\" id=\"jmNatBtn\" onclick=\"jmToggleDD('jmNatDD')\">\n              <span id=\"jmNatLabel\">Turkey<\/span>\n              <svg width=\"12\" height=\"8\" viewBox=\"0 0 12 8\" fill=\"none\"><path d=\"M1 1l5 5 5-5\" stroke=\"#9B8A6A\" stroke-width=\"1.5\" stroke-linecap=\"round\"\/><\/svg>\n            <\/button>\n            <div class=\"jm-dd-list\" id=\"jmNatList\">\n              <div class=\"jm-dd-opt\" onclick=\"jmPickNat('uk','UK Resident',this)\">UK Resident<\/div>\n              <div class=\"jm-dd-opt\" onclick=\"jmPickNat('uae','UAE \/ GCC',this)\">UAE \/ GCC<\/div>\n              <div class=\"jm-dd-opt selected\" onclick=\"jmPickNat('turkey','Turkey',this)\">Turkey<\/div>\n              <div class=\"jm-dd-opt\" onclick=\"jmPickNat('china','China \/ Hong Kong',this)\">China \/ Hong Kong<\/div>\n              <div class=\"jm-dd-opt\" onclick=\"jmPickNat('india','India',this)\">India<\/div>\n              <div class=\"jm-dd-opt\" onclick=\"jmPickNat('other','Other \/ Non-UK',this)\">Other \/ Non-UK<\/div>\n            <\/div>\n          <\/div>\n      <\/div>\n\n      <div id=\"jmMortSection\">\n        <div class=\"jm-field\">\n          <div class=\"jm-lbl\">Loan to value<\/div>\n          <div class=\"jm-ltv-row\">\n            <div class=\"jm-ltv-pct\" id=\"jmLtvPct\">70%<\/div>\n            <div class=\"jm-ltv-ctrl\">\n              <input type=\"range\" class=\"jm-slider\" id=\"jmLtv\" min=\"0\" max=\"75\" value=\"70\" step=\"5\" oninput=\"S.ltv=parseInt(this.value);document.getElementById('jmLtvPct').textContent=S.ltv+'%';jmCalc()\">\n              <div class=\"jm-slider-ends\"><span>0%<\/span><span>75% max<\/span><\/div>\n            <\/div>\n          <\/div>\n        <\/div>\n        <div class=\"jm-field\">\n          <div class=\"jm-lbl\">Mortgage type<\/div>\n          <div class=\"jm-toggle\">\n            <button class=\"jm-tog on\" id=\"jmBtnIO\" onclick=\"jmSetMort('io')\">Interest only<\/button>\n            <button class=\"jm-tog off\" id=\"jmBtnRep\" onclick=\"jmSetMort('rep')\">Repayment<\/button>\n          <\/div>\n          <div id=\"jmMortExplain\" style=\"margin-top:10px;padding:12px;background:rgba(28,23,16,0.04);border-left:2px solid #9B8A6A;\">\n            <div style=\"font-size:9px;font-weight:500;color:#1C1710;letter-spacing:0.3px;margin-bottom:4px;\" id=\"jmMortExplainTitle\">Interest Only<\/div>\n            <div style=\"font-size:10px;color:rgba(28,23,16,0.5);line-height:1.6;\" id=\"jmMortExplainText\">You only pay the interest each month \u2014 not the loan itself. Your monthly payments are lower, but the full loan amount remains at the end of the term. Popular with buy-to-let investors.<\/div>\n          <\/div>\n        <\/div>\n      <\/div>\n\n      <button class=\"jm-add-btn\" onclick=\"jmAddToPortfolio()\">+ Add to portfolio<\/button>\n\n      <!-- Empty state \u2014 always visible -->\n      <div id=\"jmPortEmpty\" style=\"margin-top:16px;padding:24px;border:0.5px dashed rgba(28,23,16,0.2);text-align:center;\">\n        <div style=\"font-family:'Cormorant Garamond',serif;font-size:18px;font-weight:300;color:rgba(28,23,16,0.3);margin-bottom:6px;\">Your portfolio is empty<\/div>\n        <div style=\"font-size:9px;color:rgba(28,23,16,0.25);letter-spacing:0.5px;line-height:1.6;\">Configure your investment above and click<br>&#8220;+ Add to portfolio&#8221; to begin building.<\/div>\n      <\/div>\n\n      <!-- Portfolio cards \u2014 shown after adding -->\n      <div class=\"jm-pills-area\" id=\"jmPortArea\" style=\"display:none;margin-top:16px;\">\n        <div style=\"display:flex;justify-content:space-between;align-items:center;margin-bottom:12px;\">\n          <div class=\"jm-pills-lbl\" style=\"margin-bottom:0;\"><span id=\"jmCount\">0<\/span> unit(s) in portfolio<\/div>\n          <button onclick=\"jmGo(3)\" style=\"padding:9px 18px;background:#1C1710;border:none;color:#F5F0E8;font-size:8px;letter-spacing:2px;text-transform:uppercase;font-family:'Montserrat',sans-serif;cursor:pointer;\">View summary \u2192<\/button>\n        <\/div>\n        <div id=\"jmPortCards\"><\/div>\n      <\/div>\n    <\/div>\n\n    <!-- RIGHT: RESULTS -->\n    <div class=\"jm-results\" id=\"jmResultsPanel\">\n      <div class=\"jm-res-unit\" id=\"jmResTitle\">Select a unit type to see projections<\/div>\n      <div class=\"jm-res-sub\" id=\"jmResSub\">Choose a development and unit type on the left<\/div>\n\n      <div class=\"jm-metrics\">\n        <div class=\"jm-met\"><div class=\"jm-met-l\">Monthly rental income<\/div><div class=\"jm-met-v gold\" id=\"jmMonRent\">\u2014<\/div><\/div>\n        <div class=\"jm-met\"><div class=\"jm-met-l\">Net monthly income<\/div><div class=\"jm-met-v gold\" id=\"jmNetMon\">\u2014<\/div><\/div>\n        <div class=\"jm-met\"><div class=\"jm-met-l\">Annual rental income<\/div><div class=\"jm-met-v\" id=\"jmAnnRent\">\u2014<\/div><\/div>\n        <div class=\"jm-met\"><div class=\"jm-met-l\">Net yield<\/div><div class=\"jm-met-v\" id=\"jmNetYield\">\u2014<\/div><\/div>\n      <\/div>\n\n      <div class=\"jm-kf-row\">\n        <div class=\"jm-kf\"><div class=\"jm-kf-l\" id=\"jmMortLbl\">Monthly mortgage<\/div><div class=\"jm-kf-v\" id=\"jmMortVal\">\u2014<\/div><\/div>\n        <div class=\"jm-kf\"><div class=\"jm-kf-l\">Cash needed<br><span style=\"font-size:8px;opacity:0.6;\">Exchange + SDLT + fees (excl. mortgage)<\/span><\/div><div class=\"jm-kf-v\" id=\"jmTotalCash\">\u2014<\/div><\/div>\n      <\/div>\n\n      <!-- Payment plan \u2014 always visible, content updates -->\n      <div class=\"jm-payment-plan\" id=\"jmPayPlan\">\n        <div class=\"jm-pp-title\">Payment plan \/ installment schedule<\/div>\n        <div id=\"jmPayPlanRows\"><\/div>\n      <\/div>\n\n      <div class=\"jm-proj-lbl\">15-year projections<\/div>\n      <div class=\"jm-proj-hd\"><span class=\"jm-phc\">Year<\/span><span class=\"jm-phc\">Property value<\/span><span class=\"jm-phc\">Net annual income<\/span><span class=\"jm-phc\">Total return<\/span><\/div>\n      <div class=\"jm-prow\"><span class=\"jm-pyr\">Year 1<\/span><span class=\"jm-pv\" id=\"jmPV1\">\u2014<\/span><span class=\"jm-pv\" id=\"jmRI1\">\u2014<\/span><span class=\"jm-pv pos\" id=\"jmTR1\">\u2014<\/span><\/div>\n      <div class=\"jm-prow\"><span class=\"jm-pyr\">Year 5<\/span><span class=\"jm-pv\" id=\"jmPV5\">\u2014<\/span><span class=\"jm-pv\" id=\"jmRI5\">\u2014<\/span><span class=\"jm-pv pos\" id=\"jmTR5\">\u2014<\/span><\/div>\n      <div class=\"jm-prow\"><span class=\"jm-pyr\">Year 10<\/span><span class=\"jm-pv\" id=\"jmPV10\">\u2014<\/span><span class=\"jm-pv\" id=\"jmRI10\">\u2014<\/span><span class=\"jm-pv pos\" id=\"jmTR10\">\u2014<\/span><\/div>\n      <div class=\"jm-prow\"><span class=\"jm-pyr\">Year 15<\/span><span class=\"jm-pv\" id=\"jmPV15\">\u2014<\/span><span class=\"jm-pv\" id=\"jmRI15\">\u2014<\/span><span class=\"jm-pv pos\" id=\"jmTR15\">\u2014<\/span><\/div>\n\n      <div class=\"jm-disc\">These figures are approximate and for illustrative purposes only. Net income is calculated after mortgage payments, 8% management fee and service charge. Always consult a qualified solicitor and mortgage broker before investing. \u00a9 Joseph Mews 2026<\/div>\n    <\/div>\n  <\/div>\n<\/div>\n\n<!-- \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n     SCREEN 3 \u2014 SUMMARY\n\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 -->\n<div id=\"jmS3\" class=\"jm-screen\">\n  <div class=\"jm-s3-hdr\">\n    <div>\n      <div class=\"jm-s3-title\">Your portfolio<br><em>summary.<\/em><\/div>\n      <div class=\"jm-s3-sub\" id=\"jmS3Sub\">0 units selected<\/div>\n    <\/div>\n    <button class=\"jm-s3-back\" onclick=\"jmGo(2)\">\u2190 Back to calculator<\/button>\n  <\/div>\n  <div class=\"jm-s3-body\" id=\"jmSumBody\">\n    <div style=\"padding:60px 0;text-align:center;font-family:'Cormorant Garamond',serif;font-size:24px;font-weight:300;color:rgba(28,23,16,0.3);\">No units added yet.<br><span style=\"font-size:14px;font-family:'Montserrat',sans-serif;letter-spacing:1px;margin-top:12px;display:block;\">Go back and add units to your portfolio.<\/span><\/div>\n  <\/div>\n<\/div>\n\n<\/div><!-- end .jm -->\n\n<script>\n\/\/ \u2500\u2500 DATA \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\nconst JMP = {\n  penny:{\n    name:'Penny Place', city:'Wolverhampton', yield:0.07, cg:0.04, rg:0.05, sc_psf:2.07,\n    paymentPlan:{\n      type:'phased',\n      steps:[\n        {label:'Reservation fee',value:5000,note:'On signing'},\n        {label:'Exchange deposit (5%)',pct:0.05,note:'On exchange'},\n        {label:'24 monthly instalments (25%)',pct:0.25,months:24,note:'During build'},\n        {label:'Completion balance (70%)',pct:0.70,note:'On completion'},\n      ]\n    },\n    prices:{studio:154950,'1bed':164950,'2bed':204950,'3bed':null}\n  },\n  lombe:{\n    name:'Lombe House', city:'Derby', yield:0.07, cg:0.04, rg:0.05, sc_psf:2.0,\n    paymentPlan:{type:'lump',steps:[{label:'Reservation fee',value:5000,note:'On signing'},{label:'Exchange deposit (20%)',pct:0.20,note:'On exchange'},{label:'Completion balance (80%)',pct:0.80,note:'On completion'}]},\n    prices:{studio:148000,'1bed':190000,'2bed':230000,'3bed':300000}\n  },\n  cathedral:{\n    name:'Cathedral One', city:'Derby', yield:0.065, cg:0.0492, rg:0.04, sc_psf:2.34,\n    paymentPlan:{type:'lump',steps:[{label:'Reservation fee',value:5000,note:'On signing'},{label:'Exchange deposit (20%)',pct:0.20,note:'On exchange'},{label:'Completion balance (80%)',pct:0.80,note:'On completion'}]},\n    prices:{studio:175000,'1bed':200000,'2bed':262000,'3bed':null}\n  },\n  stpaul:{\n    name:'30 St Paul', city:'Birmingham', yield:0.06, cg:0.04, rg:0.0425, sc_psf:2.07,\n    paymentPlan:{type:'lump',steps:[{label:'Reservation fee',value:5000,note:'On signing'},{label:'Exchange deposit (20%)',pct:0.20,note:'On exchange'},{label:'Completion balance (80%)',pct:0.80,note:'On completion'}]},\n    prices:{studio:277500,'1bed':249950,'2bed':439950,'3bed':599950}\n  },\n  chapmans:{\n    name:'Chapmans Yard', city:'Birmingham', yield:0.06, cg:0.0384, rg:0.0386, sc_psf:2.5,\n    paymentPlan:{type:'lump',steps:[{label:'Reservation fee',value:5000,note:'On signing'},{label:'Exchange deposit (20%)',pct:0.20,note:'Standard'},{label:'Exchange deposit \u2014 Duplex (35%)',pct:0.35,note:'Duplex units only'},{label:'Completion balance',pct:null,note:'Remaining amount on completion'}]},\n    prices:{studio:null,'1bed':237000,'2bed':362500,'3bed':null}\n  },\n};\n\nconst JMR={uk:0.045,uae:0.055,turkey:0.06,china:0.055,india:0.055,other:0.06};\nconst JM_SOL=2100,JM_FIXED=190+1500+1000+500+2000;\n\nfunction jmSdlt(p,nat){\n  const b=nat!=='uk'?[[125000,.07],[125000,.09],[675000,.12],[575000,.17],[Infinity,.19]]:[[125000,0],[125000,.02],[675000,.05],[575000,.10],[Infinity,.12]];\n  let t=0,r=p;for(const[x,rt]of b){if(r<=0)break;const s=Math.min(r,x);t+=s*rt;r-=s;}return Math.round(t);\n}\nfunction jmF(n){return'\u00a3'+Math.round(n).toLocaleString('en-GB');}\nfunction jmFP(n){return'+\u00a3'+Math.round(n).toLocaleString('en-GB');}\n\nlet S={proj:'penny',type:'1bed',pay:'mortgage',nat:'turkey',ltv:70,mort:'io',portfolio:[],calc:null};\n\n\/\/ \u2500\u2500 NAVIGATION \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\nfunction jmGo(n){\n  document.querySelectorAll('.jm-screen').forEach(s=>s.className='jm-screen');\n  document.getElementById('jmS'+n).className='jm-screen active';\n  window.scrollTo(0,0);\n  if(n===3) jmBuildSummary();\n}\n\n\/\/ \u2500\u2500 PROJECT CHANGE \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\nfunction jmOnProjChange(){\n  \/\/ proj already set by jmPickProj\n  S.calc=null;\n  jmUpdateTypePrices();\n  \/\/ reset type to first available\n  const proj=JMP[S.proj];\n  const types=['studio','1bed','2bed','3bed'];\n  const first=types.find(t=>proj.prices[t]);\n  if(first) jmSetType(first, document.getElementById('jmTc'+first.replace('bed','bed')||'jmTc'+first));\n  else jmCalc();\n}\n\nfunction jmUpdateTypePrices(){\n  const proj=JMP[S.proj];\n  ['studio','1bed','2bed','3bed'].forEach(t=>{\n    const price=proj.prices[t];\n    const card=document.getElementById('jmTc'+(t==='studio'?'Studio':t==='1bed'?'1bed':t==='2bed'?'2bed':'3bed'));\n    const priceEl=document.getElementById('jmPrice'+(t==='studio'?'Studio':t==='1bed'?'1bed':t==='2bed'?'2bed':'3bed'));\n    if(card && priceEl){\n      if(price){priceEl.textContent='From '+jmF(price);card.className='jm-tc'+(S.type===t?' active':'');}\n      else{priceEl.textContent='N\/A';card.className='jm-tc unavailable';}\n    }\n  });\n}\n\nfunction jmSetType(type, el){\n  S.type=type;\n  document.querySelectorAll('.jm-tc').forEach(c=>{if(!c.classList.contains('unavailable'))c.className='jm-tc';});\n  if(el) el.className='jm-tc active';\n  jmCalc();\n}\n\n\/\/ \u2500\u2500 PAYMENT \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\nfunction jmSetPay(m){\n  S.pay=m;\n  document.getElementById('jmBtnMort').className='jm-tog '+(m==='mortgage'?'on':'off');\n  document.getElementById('jmBtnCash').className='jm-tog '+(m==='cash'?'on':'off');\n  document.getElementById('jmMortSection').style.display=m==='mortgage'?'block':'none';\n  jmCalc();\n}\nfunction jmSetMort(t){\n  S.mort=t;\n  document.getElementById('jmBtnIO').className='jm-tog '+(t==='io'?'on':'off');\n  document.getElementById('jmBtnRep').className='jm-tog '+(t==='rep'?'on':'off');\n  const title=document.getElementById('jmMortExplainTitle');\n  const text=document.getElementById('jmMortExplainText');\n  if(t==='io'){\n    title.textContent='Interest Only';\n    text.textContent='You only pay the interest each month \u2014 not the loan itself. Your monthly payments are lower, but the full loan amount remains at the end of the term. Popular with buy-to-let investors.';\n  } else {\n    title.textContent='Repayment';\n    text.textContent='You pay both the interest and a portion of the loan each month. Your monthly payments are higher, but you gradually own more of the property and owe nothing at the end of the term.';\n  }\n  jmCalc();\n}\n\n\/\/ \u2500\u2500 CALCULATE \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\nfunction jmCalc(){\n  const proj=JMP[S.proj];\n  const price=proj.prices[S.type];\n  if(!price){\n    document.getElementById('jmResTitle').textContent='Not available';\n    document.getElementById('jmResSub').textContent='This development does not offer this unit type';\n    ['jmMonRent','jmNetMon','jmAnnRent','jmNetYield','jmMortVal','jmTotalCash'].forEach(id=>document.getElementById(id).textContent='\u2014');\n    \/\/ payment plan always shown\n    S.calc=null;return;\n  }\n\n  const nat=S.nat||'turkey';\n  const ltv=Math.round(parseInt(document.getElementById('jmLtv').value))\/100; S.ltv=Math.round(ltv*100);\n  const rate=JMR[nat];\n  const annRent=Math.round(price*proj.yield);\n  const moRent=Math.round(annRent\/12);\n  const scAnn=Math.round(price*0.006);\n  const mgmtAnn=Math.round(annRent*0.08);\n  const loan=Math.round(price*ltv);\n  let mort=0;\n  if(S.pay==='mortgage'&&ltv>0){\n    if(S.mort==='io') mort=Math.round(loan*rate\/12);\n    else{const r=rate\/12,n=300;mort=Math.round(loan*(r*Math.pow(1+r,n))\/(Math.pow(1+r,n)-1));}\n  }\n  const netMo=moRent-mort-Math.round(mgmtAnn\/12)-Math.round(scAnn\/12);\n  const netYield=((annRent-mgmtAnn-scAnn)\/price*100).toFixed(2);\n  const sdlt=jmSdlt(price,nat);\n  const resFee=5000; \/\/ Fixed \u00a35,000 reservation for all projects\n  const exchPct=proj.paymentPlan.type==='phased'?0.05:0.20;\n  \/\/ Exchange = (price * pct) MINUS reservation fee already paid\n  const exchAmt=Math.round(price*exchPct)-resFee;\n  \/\/ Completion amount client pays = price - resFee - exchAmt - mortgage\n  const completionAmt=Math.max(0, price - resFee - exchAmt - loan);\n  const legalFees=JM_SOL+(S.pay==='mortgage'&&ltv>0?JM_FIXED:0);\n  \/\/ Cash needed = res fee + exchange + completion + SDLT + legal fees\n  const totalCash=resFee+exchAmt+completionAmt+sdlt+legalFees;\n\n  document.getElementById('jmResTitle').textContent=proj.name+' \u2014 '+\n    (S.type==='studio'?'Studio':S.type==='1bed'?'1 Bedroom':S.type==='2bed'?'2 Bedroom':'3 Bedroom');\n  document.getElementById('jmResSub').textContent=proj.city+' \u00b7 From '+jmF(price)+' \u00b7 '+S.type.replace('bed',' bed').replace('studio','Studio').toUpperCase();\n  document.getElementById('jmMonRent').textContent=jmF(moRent);\n  document.getElementById('jmNetMon').textContent=jmF(netMo);\n  document.getElementById('jmAnnRent').textContent=jmF(annRent);\n  document.getElementById('jmNetYield').textContent=netYield+'%';\n  const mortLabel=S.pay==='cash'?'Cash investment':(S.mort==='io'?'Interest only':'Repayment')+' mortgage';\n  document.getElementById('jmMortLbl').textContent=mortLabel;\n  document.getElementById('jmMortVal').textContent=S.pay==='cash'?'\u00a30 \/ mo':jmF(mort)+' \/ mo';\n  document.getElementById('jmTotalCash').textContent=jmF(totalCash);\n\n  \/\/ Payment plan \u2014 mortgage aware\n  const pp=proj.paymentPlan;\n  const ppEl=document.getElementById('jmPayPlan');\n  const ppRows=document.getElementById('jmPayPlanRows');\n  ppRows.innerHTML='';\n\n  if(pp.type==='phased'){\n    \/\/ Penny Place style: reservation + exchange(5%) + 24 instalments(25%) + completion remainder\n    const resFee2 = pp.steps.find(s=>s.label.toLowerCase().includes('reservation'))?.value||0;\n    const exchPct2 = pp.steps.find(s=>s.label.toLowerCase().includes('exchange'))?.pct||0.05;\n    const instPct2 = pp.steps.find(s=>s.label.toLowerCase().includes('instalment')||s.label.toLowerCase().includes('installment'))?.pct||0.25;\n    const instMonths = pp.steps.find(s=>s.label.toLowerCase().includes('instalment')||s.label.toLowerCase().includes('installment'))?.months||24;\n\n    const exchAmt2 = Math.round(price*exchPct2) - resFee2; \/\/ subtract reservation already paid\n    const instTotal = Math.round(price*instPct2);\n    const instMonthly = Math.round(instTotal\/instMonths);\n    const mortgageAmt = loan; \/\/ from LTV calculation above\n    \/\/ What client pays at completion = price - resFee - exchAmt - instTotal - mortgageAmt\n    const completionClient = Math.max(0, price - resFee2 - exchAmt2 - instTotal - mortgageAmt);\n    const rows = [\n      {label:'Reservation fee', note:'On signing', amt:jmF(resFee2)},\n      {label:`Exchange deposit (${Math.round(exchPct2*100)}%)`, note:'On exchange', amt:jmF(exchAmt2)},\n      {label:`${instMonths} monthly instalments (${Math.round(instPct2*100)}%)`, note:`During build \u00b7 ${jmF(instMonthly)}\/mo`, amt:jmF(instTotal)},\n    ];\n    if(S.pay==='mortgage'&&ltv>0){\n      rows.push({label:`Mortgage (${S.ltv}% LTV)`, note:'Bank pays on completion', amt:jmF(mortgageAmt), highlight:true});\n      if(completionClient>0) rows.push({label:'Completion balance (your payment)', note:'On completion', amt:jmF(completionClient)});\n    } else {\n      const completionCash = Math.max(0, price - resFee2 - exchAmt2 - instTotal);\n      rows.push({label:`Completion balance (${100-Math.round(exchPct2*100)-Math.round(instPct2*100)}%)`, note:'On completion \u2014 cash purchase', amt:jmF(completionCash)});\n    }\n    rows.forEach(r=>{\n      const goldStyle = r.highlight ? 'color:#9B8A6A;' : '';\n      ppRows.innerHTML+=`<div class=\"jm-pp-row\"><span class=\"jm-pp-lbl\" style=\"${goldStyle}\">${r.label}<span style=\"color:rgba(28,23,16,0.3);margin-left:8px;\">${r.note}<\/span><\/span><span class=\"jm-pp-val\" style=\"${goldStyle}\">${r.amt}<\/span><\/div>`;\n    });\n  } else {\n    \/\/ Lump sum projects: reservation + exchange + mortgage\/completion\n    const resFee2 = pp.steps.find(s=>s.label.toLowerCase().includes('reservation'))?.value||0;\n    const exchPct2 = pp.steps.find(s=>s.label.toLowerCase().includes('exchange')&&!s.label.toLowerCase().includes('duplex'))?.pct||0.20;\n    const exchAmt2 = Math.round(price*exchPct2) - resFee2;\n    const mortgageAmt = loan;\n    const completionClient = Math.max(0, price - resFee2 - exchAmt2 - resFee2 - mortgageAmt);\n\n    if(resFee2>0) ppRows.innerHTML+=`<div class=\"jm-pp-row\"><span class=\"jm-pp-lbl\">Reservation fee<span style=\"color:rgba(28,23,16,0.3);margin-left:8px;\">On signing<\/span><\/span><span class=\"jm-pp-val\">${jmF(resFee2)}<\/span><\/div>`;\n    ppRows.innerHTML+=`<div class=\"jm-pp-row\"><span class=\"jm-pp-lbl\">Exchange deposit (${Math.round(exchPct2*100)}%)<span style=\"color:rgba(28,23,16,0.3);margin-left:8px;\">On exchange<\/span><\/span><span class=\"jm-pp-val\">${jmF(exchAmt2+resFee2)}<\/span><\/div>`;\n\n    if(S.pay==='mortgage'&&ltv>0){\n      ppRows.innerHTML+=`<div class=\"jm-pp-row\"><span class=\"jm-pp-lbl\" style=\"color:#9B8A6A;\">Mortgage (${S.ltv}% LTV)<span style=\"color:rgba(28,23,16,0.3);margin-left:8px;\">Bank pays on completion<\/span><\/span><span class=\"jm-pp-val\" style=\"color:#9B8A6A;\">${jmF(mortgageAmt)}<\/span><\/div>`;\n      if(completionClient>0) ppRows.innerHTML+=`<div class=\"jm-pp-row\"><span class=\"jm-pp-lbl\">Your completion payment<span style=\"color:rgba(28,23,16,0.3);margin-left:8px;\">On completion<\/span><\/span><span class=\"jm-pp-val\">${jmF(completionClient)}<\/span><\/div>`;\n      else ppRows.innerHTML+=`<div class=\"jm-pp-row\"><span class=\"jm-pp-lbl\" style=\"color:rgba(28,23,16,0.4);\">Completion balance<span style=\"color:rgba(28,23,16,0.3);margin-left:8px;\">Fully covered by mortgage<\/span><\/span><span class=\"jm-pp-val\" style=\"color:rgba(28,23,16,0.4);\">\u00a30<\/span><\/div>`;\n    } else {\n      const completionCash = Math.max(0, price - resFee2 - exchAmt2 - resFee2);\n      ppRows.innerHTML+=`<div class=\"jm-pp-row\"><span class=\"jm-pp-lbl\">Completion balance (${100-Math.round(exchPct2*100)}%)<span style=\"color:rgba(28,23,16,0.3);margin-left:8px;\">On completion \u2014 cash purchase<\/span><\/span><span class=\"jm-pp-val\">${jmF(completionCash)}<\/span><\/div>`;\n    }\n  }\n  \/\/ always visible\n\n  \/\/ Projections \u2014 net annual income & total return both after all costs\n  const annMort = mort * 12;\n  [1,5,10,15].forEach(y=>{\n    const pv = Math.round(price * Math.pow(1+proj.cg, y));\n    \/\/ Gross rental at year Y\n    const grossRentY = Math.round(annRent * Math.pow(1+proj.rg, y-1));\n    \/\/ Net annual income at year Y = gross - mortgage - mgmt(8%) - service charge\n    const mgmtY = Math.round(grossRentY * 0.08);\n    const netAnnY = grossRentY - annMort - mgmtY - scAnn;\n    \/\/ Cumulative NET income over Y years\n    let cumNet = 0;\n    for(let j=1; j<=y; j++){\n      const gRent = annRent * Math.pow(1+proj.rg, j-1);\n      const mFee = gRent * 0.08;\n      cumNet += gRent - annMort - mFee - scAnn;\n    }\n    \/\/ Total return = cumulative net income + capital gain\n    const capGain = pv - price;\n    const totalReturn = Math.round(cumNet + capGain);\n    document.getElementById('jmPV'+y).textContent = jmF(pv);\n    document.getElementById('jmRI'+y).textContent = jmF(netAnnY);\n    document.getElementById('jmTR'+y).textContent = jmFP(totalReturn);\n  });\n\n  S.calc={proj:S.proj,projName:proj.name,city:proj.city,type:S.type,price,annRent,moRent,mort,scAnn,mgmtAnn,netMo,netYield,sdlt,totalCash,pay:S.pay,nat,ltv:S.ltv,mortType:S.mort,resFee,exchAmt,exchPct,paymentPlan:pp,loan};\n}\n\n\/\/ \u2500\u2500 PORTFOLIO \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\nfunction jmAddToPortfolio(){\n  if(!S.calc){alert('Please select a unit type first.');return;}\n  S.portfolio.push({...S.calc});\n  jmRenderPortCards();\n  document.getElementById('jmPortBadge').textContent=S.portfolio.length+' unit'+(S.portfolio.length>1?'s':'')+' added';\n  document.getElementById('jmCount').textContent=S.portfolio.length;\n  document.getElementById('jmPortArea').style.display='block';\n  document.getElementById('jmPortEmpty').style.display='none';\n  document.getElementById('jmSumBtn').className='jm-summary-btn-top enabled';\n}\n\nfunction jmRenderPortCards(){\n  const c=document.getElementById('jmPortCards');\n  c.innerHTML='';\n  S.portfolio.forEach((u,i)=>{\n    const tl=u.type==='studio'?'Studio':u.type==='1bed'?'1 Bedroom':u.type==='2bed'?'2 Bedroom':'3 Bedroom';\n    const d=document.createElement('div');\n    d.style.cssText='background:#fff;border:0.5px solid rgba(28,23,16,0.1);margin-bottom:8px;overflow:hidden;';\n    d.innerHTML=\n      '<div style=\"background:#1C1710;padding:10px 14px;display:flex;justify-content:space-between;align-items:center;\">' +\n        '<div style=\"font-family:Cormorant Garamond,serif;font-size:15px;color:#fff;font-weight:300;\">' + tl + ' \u2014 ' + u.projName + '<\/div>' +\n        '<span onclick=\"jmRemove('+i+')\" style=\"color:rgba(184,160,106,0.6);cursor:pointer;font-size:16px;line-height:1;\">\u00d7<\/span>' +\n      '<\/div>' +\n      '<div style=\"display:grid;grid-template-columns:1fr 1fr 1fr 1fr;gap:1px;background:rgba(28,23,16,0.08);\">' +\n        '<div style=\"background:#F5F0E8;padding:10px 12px;\"><div style=\"font-size:7px;letter-spacing:1.5px;text-transform:uppercase;color:rgba(28,23,16,0.3);margin-bottom:3px;\">Price from<\/div><div style=\"font-family:Cormorant Garamond,serif;font-size:15px;font-weight:300;color:#1C1710;\">'+jmF(u.price)+'<\/div><\/div>' +\n        '<div style=\"background:#F5F0E8;padding:10px 12px;\"><div style=\"font-size:7px;letter-spacing:1.5px;text-transform:uppercase;color:rgba(28,23,16,0.3);margin-bottom:3px;\">Net yield<\/div><div style=\"font-family:Cormorant Garamond,serif;font-size:15px;font-weight:300;color:#1C1710;\">'+u.netYield+'%<\/div><\/div>' +\n        '<div style=\"background:#F5F0E8;padding:10px 12px;\"><div style=\"font-size:7px;letter-spacing:1.5px;text-transform:uppercase;color:rgba(28,23,16,0.3);margin-bottom:3px;\">Net income<\/div><div style=\"font-family:Cormorant Garamond,serif;font-size:15px;font-weight:300;color:#9B8A6A;\">'+jmF(u.netMo)+'\/mo<\/div><\/div>' +\n        '<div style=\"background:#F5F0E8;padding:10px 12px;\"><div style=\"font-size:7px;letter-spacing:1.5px;text-transform:uppercase;color:rgba(28,23,16,0.3);margin-bottom:3px;\">Cash required<\/div><div style=\"font-family:Cormorant Garamond,serif;font-size:15px;font-weight:300;color:#1C1710;\">'+jmF(u.totalCash)+'<\/div><\/div>' +\n      '<\/div>';\n    c.appendChild(d);\n  });\n  document.getElementById('jmCount').textContent=S.portfolio.length;\n}\n\nfunction jmRemove(i){\n  S.portfolio.splice(i,1);\n  jmRenderPortCards();\n  document.getElementById('jmPortBadge').textContent=S.portfolio.length+' unit'+(S.portfolio.length>1?'s':'')+' added';\n  if(!S.portfolio.length){\n    document.getElementById('jmSumBtn').className='jm-summary-btn-top';\n    document.getElementById('jmPortArea').style.display='none';\n    document.getElementById('jmPortEmpty').style.display='block';\n  }\n}\n\n\/\/ \u2500\u2500 SUMMARY \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\nfunction jmBuildSummary(){\n  const body=document.getElementById('jmSumBody');\n  body.innerHTML='';\n  const p=S.portfolio;\n\n  if(!p.length){\n    body.innerHTML='<div style=\"padding:60px 0;text-align:center;font-family:\\'Cormorant Garamond\\',serif;font-size:24px;font-weight:300;color:rgba(28,23,16,0.3);\">No units added yet.<br><span style=\"font-size:14px;font-family:\\'Montserrat\\',sans-serif;letter-spacing:1px;margin-top:12px;display:block;\">Go back and add units to your portfolio.<\/span><\/div>';\n    return;\n  }\n\n  const natLabel=document.getElementById('jmNatLabel')?document.getElementById('jmNatLabel').textContent:'Turkey';\n  document.getElementById('jmS3Sub').textContent=p.length+' unit'+(p.length>1?'s':'')+' \u00b7 '+natLabel;\n\n  \/\/ \u2500\u2500 UNIT CARDS (collapsible) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n  p.forEach((u,idx)=>{\n    const tl=u.type==='studio'?'Studio':u.type==='1bed'?'1 Bedroom':u.type==='2bed'?'2 Bedroom':'3 Bedroom';\n    const proj=JMP[u.proj];\n\n    \/\/ Build payment plan HTML\n    let ppHTML='';\n    const price2=u.price, loan2=Math.round(price2*(u.ltv||0)\/100);\n    const pp2=u.paymentPlan;\n    let ppItems='';\n    if(pp2.type==='phased'){\n      const rF=pp2.steps.find(s=>s.label.toLowerCase().includes('reservation'))?.value||0;\n      const eP=pp2.steps.find(s=>s.label.toLowerCase().includes('exchange'))?.pct||0.05;\n      const iP=pp2.steps.find(s=>s.label.toLowerCase().includes('instalment')||s.label.toLowerCase().includes('installment'))?.pct||0.25;\n      const iM=pp2.steps.find(s=>s.label.toLowerCase().includes('instalment')||s.label.toLowerCase().includes('installment'))?.months||24;\n      const eA=Math.round(price2*eP), iT=Math.round(price2*iP), iMo=Math.round(iT\/iM);\n      const cC=Math.max(0,price2-rF-eA-iT-loan2);\n      const items=[\n        {l:'Reservation fee',s:'On signing',v:jmF(rF)},\n        {l:'Exchange deposit ('+Math.round(eP*100)+'%)',s:'On exchange',v:jmF(eA)},\n        {l:iM+' monthly instalments ('+Math.round(iP*100)+'%)',s:jmF(iMo)+'\/mo during build',v:jmF(iT)},\n      ];\n      if(u.pay==='mortgage'&&loan2>0){\n        items.push({l:'Mortgage ('+Math.round(u.ltv||0)+'% LTV)',s:'Bank pays at completion',v:jmF(loan2),gold:true});\n        if(cC>0) items.push({l:'Your completion payment',s:'On completion',v:jmF(cC)});\n      } else {\n        items.push({l:'Completion balance',s:'Cash purchase',v:jmF(Math.max(0,price2-rF-eA-iT))});\n      }\n      ppItems=items.map(i=>'<div class=\"jm-ucard-pp-item\" style=\"'+(i.gold?'border-left:2px solid #9B8A6A;':'')+'\"><div class=\"jm-ucard-pp-item-l\" style=\"'+(i.gold?'color:#9B8A6A;':'')+'\">'+(i.l)+' <span style=\"opacity:0.5;\">'+i.s+'<\/span><\/div><div class=\"jm-ucard-pp-item-v\" style=\"'+(i.gold?'color:#9B8A6A;':'')+'\">'+i.v+'<\/div><\/div>').join('');\n    } else {\n      const rF=pp2.steps.find(s=>s.label.toLowerCase().includes('reservation'))?.value||0;\n      const eP=pp2.steps.find(s=>s.label.toLowerCase().includes('exchange')&&!s.label.toLowerCase().includes('duplex'))?.pct||0.20;\n      const eA=Math.round(price2*eP), cC=Math.max(0,price2-eA-loan2);\n      const items=[];\n      if(rF>0) items.push({l:'Reservation fee',s:'On signing',v:jmF(rF)});\n      items.push({l:'Exchange deposit ('+Math.round(eP*100)+'%)',s:'On exchange',v:jmF(eA)});\n      if(u.pay==='mortgage'&&loan2>0){\n        items.push({l:'Mortgage ('+Math.round(u.ltv||0)+'% LTV)',s:'Bank pays at completion',v:jmF(loan2),gold:true});\n        items.push({l:cC>0?'Your completion payment':'Completion',s:cC>0?'On completion':'Fully covered by mortgage',v:jmF(cC),muted:cC===0});\n      } else {\n        items.push({l:'Completion balance',s:'Cash purchase',v:jmF(cC)});\n      }\n      ppItems=items.map(i=>'<div class=\"jm-ucard-pp-item\" style=\"'+(i.gold?'border-left:2px solid #9B8A6A;':'')+'\"><div class=\"jm-ucard-pp-item-l\" style=\"'+(i.gold?'color:#9B8A6A;':i.muted?'opacity:0.35;':'')+'\">'+(i.l)+' <span style=\"opacity:0.5;\">'+i.s+'<\/span><\/div><div class=\"jm-ucard-pp-item-v\" style=\"'+(i.gold?'color:#9B8A6A;':i.muted?'opacity:0.35;':'')+'\">'+i.v+'<\/div><\/div>').join('');\n    }\n    ppHTML='<div class=\"jm-ucard-pp\"><div class=\"jm-ucard-pp-title\">Payment plan<\/div><div class=\"jm-ucard-pp-rows\">'+ppItems+'<\/div><\/div>';\n\n    \/\/ Build projection rows\n    const projRows=[5,10,15].map(y=>{\n      const pv=Math.round(u.price*Math.pow(1+(proj.cg||0.04),y));\n      let gCum=0; for(let j=1;j<=y;j++) gCum+=u.annRent*Math.pow(1+(proj.rg||0.05),j-1);\n      let nCum=0; for(let j=1;j<=y;j++){const g=u.annRent*Math.pow(1+(proj.rg||0.05),j-1);nCum+=g-u.mort*12-g*0.08-(u.scAnn||0);}\n      const gY=Math.round(u.annRent*Math.pow(1+(proj.rg||0.05),y-1));\n      return '<div class=\"jm-uprow\"><span class=\"jm-upyr\">Yr '+y+'<\/span><span class=\"jm-upv\">'+jmF(pv)+'<\/span><span class=\"jm-upv\">'+jmF(gY)+'<\/span><span class=\"jm-upv\">'+jmF(Math.round(nCum))+'<\/span><span class=\"jm-upv gr\">'+jmFP(Math.round(gCum+(pv-u.price)))+'<\/span><\/div>';\n    }).join('');\n\n    const card=document.createElement('div');\n    card.className='jm-ucard';\n    card.innerHTML=\n      '<div class=\"jm-ucard-hd jm-ucard-toggle\" onclick=\"jmToggleCard('+idx+')\" style=\"cursor:pointer;\">'\n        +'<div class=\"jm-ucard-name\">'+tl+' \u2014 '+u.projName+', '+u.city+'<\/div>'\n        +'<div style=\"display:flex;align-items:center;gap:12px;\">'\n          +'<div class=\"jm-ucard-badge\">From '+jmF(u.price)+'<\/div>'\n          +'<div class=\"jm-ucard-arrow\" id=\"jmArrow'+idx+'\">'\n            +'<svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\"><path d=\"M2 4l4 4 4-4\" stroke=\"#B8A06A\" stroke-width=\"1.5\" stroke-linecap=\"round\"\/><\/svg>'\n          +'<\/div>'\n        +'<\/div>'\n      +'<\/div>'\n      +'<div class=\"jm-ucard-body\" id=\"jmBody'+idx+'\">'\n        +'<div class=\"jm-ucard-grid\" style=\"grid-template-columns:repeat(5,1fr);\">'\n          +'<div class=\"jm-ucell\"><div class=\"jm-ucell-l\">Starting price<\/div><div class=\"jm-ucell-v\">'+jmF(u.price)+'<\/div><\/div>'\n          +'<div class=\"jm-ucell\"><div class=\"jm-ucell-l\">Cash needed<\/div><div class=\"jm-ucell-v\">'+jmF((function(){const rF=5000;const pr=JMP[u.proj];const eP=pr.paymentPlan.type===\"phased\"?0.05:0.20;const exchA=Math.round(u.price*eP)-rF;const loan=Math.round(u.price*(u.ltv||0)\/100);const compA=Math.max(0,u.price-(exchA+rF)-loan);return rF+exchA+compA;})())+'<\/div><div class=\"jm-ucell-sub\">Res. fee + exchange + completion<\/div><\/div>'\n          +'<div class=\"jm-ucell\"><div class=\"jm-ucell-l\">Total cash needed<\/div><div class=\"jm-ucell-v gold\">'+jmF((function(){const rF=5000;const pr=JMP[u.proj];const eP=pr.paymentPlan.type===\"phased\"?0.05:0.20;const exchA=Math.round(u.price*eP)-rF;const loan=Math.round(u.price*(u.ltv||0)\/100);const compA=Math.max(0,u.price-(exchA+rF)-loan);return rF+exchA+compA+u.sdlt+(u.pay===\"mortgage\"?5690:2100);})())+'<\/div><div class=\"jm-ucell-sub\">+ SDLT + legal fees<\/div><\/div>'\n          +'<div class=\"jm-ucell\"><div class=\"jm-ucell-l\">SDLT<\/div><div class=\"jm-ucell-v\">'+jmF(u.sdlt)+'<\/div><\/div>'\n          +'<div class=\"jm-ucell\"><div class=\"jm-ucell-l\">Net yield<\/div><div class=\"jm-ucell-v\">'+u.netYield+'%<\/div><\/div>'\n        +'<\/div>'\n        +'<div class=\"jm-ucard-divlbl\">Monthly income breakdown<\/div>'\n        +'<div class=\"jm-ucard-grid\">'\n          +'<div class=\"jm-ucell\"><div class=\"jm-ucell-l\">Gross rental<\/div><div class=\"jm-ucell-v gold\">'+jmF(u.moRent)+'\/mo<\/div><div class=\"jm-ucell-sub\">'+jmF(u.annRent)+'\/yr<\/div><\/div>'\n          +'<div class=\"jm-ucell\"><div class=\"jm-ucell-l\">Mortgage<\/div><div class=\"jm-ucell-v muted\">\u2212'+jmF(u.mort)+'\/mo<\/div><\/div>'\n          +'<div class=\"jm-ucell\"><div class=\"jm-ucell-l\">Mgmt + service charge<\/div><div class=\"jm-ucell-v muted\">\u2212'+jmF(Math.round(u.mgmtAnn\/12)+Math.round(u.scAnn\/12))+'\/mo<\/div><\/div>'\n          +'<div class=\"jm-ucell\"><div class=\"jm-ucell-l\">Net income<\/div><div class=\"jm-ucell-v green\">'+jmF(u.netMo)+'\/mo<\/div><div class=\"jm-ucell-sub\" style=\"color:#2E6E42;\">'+jmF(u.netMo*12)+'\/yr<\/div><\/div>'\n        +'<\/div>'\n        +ppHTML\n        +'<div class=\"jm-ucard-proj\">'\n          +'<div class=\"jm-up-hd\"><span class=\"jm-uphc\">Year<\/span><span class=\"jm-uphc\">Property value<\/span><span class=\"jm-uphc\">Gross rental\/yr<\/span><span class=\"jm-uphc\">Net income (cum.)<\/span><span class=\"jm-uphc\">Total return<\/span><\/div>'\n          +projRows\n        +'<\/div>'\n      +'<\/div>';\n    body.appendChild(card);\n  });\n\n  \/\/ \u2500\u2500 COMBINED TOTALS (simple, clear) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n  const tGross=p.reduce((s,u)=>s+u.moRent,0);\n  const tNet=p.reduce((s,u)=>s+u.netMo,0);\n  const tInv=p.reduce((s,u)=>s+u.totalCash,0);\n  const tMort=p.reduce((s,u)=>s+u.mort,0);\n  const tSdlt=p.reduce((s,u)=>s+u.sdlt,0);\n  const tProp=p.reduce((s,u)=>s+u.price,0);\n\n  \/\/ 15yr calc\n  let tPropVal15=0, tNetCum15=0, tGrossCum15=0;\n  p.forEach(u=>{\n    const pr=JMP[u.proj];\n    const pv15=Math.round(u.price*Math.pow(1+(pr.cg||0.04),15));\n    tPropVal15+=pv15;\n    for(let j=1;j<=15;j++){\n      const g=u.annRent*Math.pow(1+(pr.rg||0.05),j-1);\n      tGrossCum15+=g;\n      tNetCum15+=g-u.mort*12-g*0.08-(u.scAnn||0);\n    }\n  });\n  const tCapGain=tPropVal15-tProp;\n  const tTotalReturn=Math.round(tNetCum15+tCapGain);\n  const roce=tInv>0?Math.round(tTotalReturn\/tInv*100):0;\n\n  \/\/ Chart data for property value growth\n  const chartYears=[1,5,10,15];\n  const chartVals=chartYears.map(y=>Math.round(p.reduce((s,u)=>{\n    const pr=JMP[u.proj]; return s+u.price*Math.pow(1+(pr.cg||0.04),y);\n  },0)));\n  const maxVal=Math.max(tProp,...chartVals);\n\n  const combined=document.createElement('div');\n  combined.className='jm-sum-combined';\n  combined.innerHTML=\n    '<div class=\"jm-sum-combined-hd\">'\n      +'<div class=\"jm-sum-combined-title\">Your portfolio at a glance<\/div>'\n      +'<div class=\"jm-sum-combined-sub\">'+p.length+' unit'+(p.length>1?'s':'')+' combined<\/div>'\n    +'<\/div>'\n\n    \/\/ BIG 3 numbers first\n    +'<div class=\"jm-big-cards\">'\n      +'<div class=\"jm-big-card dark\">'\n        +'<div class=\"jm-big-card-label\">\ud83d\udcb0 Combined total cash needed<\/div>'\n        +'<div class=\"jm-big-card-value\">'+jmF(p.reduce((s,u)=>{const rF=5000;const pr=JMP[u.proj];const eP=pr.paymentPlan.type===\"phased\"?0.05:0.20;const exchA=Math.round(u.price*eP)-rF;const loan=Math.round(u.price*(u.ltv||0)\/100);const compA=Math.max(0,u.price-(exchA+rF)-loan);const lF=u.pay===\"mortgage\"?5690:2100;return s+rF+exchA+compA+u.sdlt+lF;},0))+'<\/div>'\n        +'<div class=\"jm-big-card-sub\">All payments + SDLT + legal fees<\/div>'\n      +'<\/div>'\n      +'<div class=\"jm-big-card dark\">'\n        +'<div class=\"jm-big-card-label\">\ud83d\udcc5 You earn every month<\/div>'\n        +'<div class=\"jm-big-card-value\">'+jmF(tNet)+'\/mo<\/div>'\n        +'<div class=\"jm-big-card-sub\">After mortgage, management &amp; service charge<\/div>'\n      +'<\/div>'\n      +'<div class=\"jm-big-card dark\">'\n        +'<div class=\"jm-big-card-label\">\ud83d\udcc8 15-year total return<\/div>'\n        +'<div class=\"jm-big-card-value green\">'+jmFP(tTotalReturn)+'<\/div>'\n        +'<div class=\"jm-big-card-sub\">Net income + property value growth<\/div>'\n      +'<\/div>'\n    +'<\/div>'\n\n    \/\/ SIMPLE BREAKDOWN TABLE\n    +'<div class=\"jm-breakdown\">'\n      +'<div class=\"jm-breakdown-title\">Where does your money go?<\/div>'\n      +'<div class=\"jm-breakdown-row\"><span class=\"jm-breakdown-label\">Combined cash needed<\/span><span class=\"jm-breakdown-value\">'+jmF(p.reduce((s,u)=>{const rF=5000;const pr=JMP[u.proj];const eP=pr.paymentPlan.type===\"phased\"?0.05:0.20;const exchA=Math.round(u.price*eP)-rF;const loan=Math.round(u.price*(u.ltv||0)\/100);const compA=Math.max(0,u.price-(exchA+rF)-loan);return s+rF+exchA+compA;},0))+'<\/span><\/div>'\n      +'<div class=\"jm-breakdown-row\"><span class=\"jm-breakdown-label\">Total SDLT \/ stamp duty<\/span><span class=\"jm-breakdown-value\">'+jmF(tSdlt)+'<\/span><\/div>'\n      +'<div class=\"jm-breakdown-row\"><span class=\"jm-breakdown-label\">Total legal &amp; mortgage fees<\/span><span class=\"jm-breakdown-value\">'+jmF(p.reduce((s,u)=>s+(u.pay==='mortgage'?5690:2100),0))+'<\/span><\/div>'\n      +'<div class=\"jm-breakdown-row\" style=\"margin-top:8px;padding-top:16px;border-top:1.5px solid rgba(28,23,16,0.15);border-bottom:none;\"><span class=\"jm-breakdown-label bold\" style=\"font-size:15px;\">Combined total cash needed<\/span><span class=\"jm-breakdown-value gold\" style=\"font-size:26px;\">'+jmF(p.reduce((s,u)=>{const rF=5000;const pr=JMP[u.proj];const eP=pr.paymentPlan.type===\"phased\"?0.05:0.20;const exchA=Math.round(u.price*eP)-rF;const loan=Math.round(u.price*(u.ltv||0)\/100);const compA=Math.max(0,u.price-(exchA+rF)-loan);const lF=u.pay===\"mortgage\"?5690:2100;return s+rF+exchA+compA+u.sdlt+lF;},0))+'<\/span><\/div>'\n    +'<\/div>'\n\n    +'<div class=\"jm-breakdown\" style=\"border-top:0.5px solid rgba(28,23,16,0.06);\">'\n      +'<div class=\"jm-breakdown-title\">Your monthly cash flow<\/div>'\n      +'<div class=\"jm-breakdown-row\"><span class=\"jm-breakdown-label\">Gross rental income<\/span><span class=\"jm-breakdown-value\">'+jmF(tGross)+'\/mo<\/span><\/div>'\n      +'<div class=\"jm-breakdown-row\"><span class=\"jm-breakdown-label\">Mortgage payments<\/span><span class=\"jm-breakdown-value red\">\u2212'+jmF(tMort)+'\/mo<\/span><\/div>'\n      +'<div class=\"jm-breakdown-row\"><span class=\"jm-breakdown-label\">Management fee (8%) + service charge<\/span><span class=\"jm-breakdown-value red\">\u2212'+jmF(p.reduce((s,u)=>s+Math.round(u.mgmtAnn\/12)+Math.round(u.scAnn\/12),0))+'\/mo<\/span><\/div>'\n      +'<div class=\"jm-breakdown-row\"><span class=\"jm-breakdown-label bold\">Net income in your pocket<\/span><span class=\"jm-breakdown-value green\">'+jmF(tNet)+'\/mo ('+jmF(tNet*12)+'\/yr)<\/span><\/div>'\n    +'<\/div>'\n\n    +'<div class=\"jm-breakdown\" style=\"border-top:0.5px solid rgba(28,23,16,0.06);\">'\n      +'<div class=\"jm-breakdown-title\">Your 15-year growth story<\/div>'\n      +'<div class=\"jm-breakdown-row\"><span class=\"jm-breakdown-label\">Property value today<\/span><span class=\"jm-breakdown-value\">'+jmF(tProp)+'<\/span><\/div>'\n      +'<div class=\"jm-breakdown-row\"><span class=\"jm-breakdown-label\">Property value in 15 years<\/span><span class=\"jm-breakdown-value\">'+jmF(Math.round(tPropVal15))+'<\/span><\/div>'\n      +'<div class=\"jm-breakdown-row\"><span class=\"jm-breakdown-label\">Capital gain (property growth)<\/span><span class=\"jm-breakdown-value green\">+'+jmF(Math.round(tCapGain))+'<\/span><\/div>'\n      +'<div class=\"jm-breakdown-row\"><span class=\"jm-breakdown-label\">Cumulative net rental income (15yr)<\/span><span class=\"jm-breakdown-value green\">+'+jmF(Math.round(tNetCum15))+'<\/span><\/div>'\n      +'<div class=\"jm-breakdown-row\"><span class=\"jm-breakdown-label bold\">Total return on '+jmF(tInv)+' invested<\/span><span class=\"jm-breakdown-value green\">'+jmFP(tTotalReturn)+' ('+roce+'% ROCE)<\/span><\/div>'\n    +'<\/div>'\n\n    \/\/ VISUAL BAR CHART\n    +'<div class=\"jm-chart\">'\n      +'<div class=\"jm-chart-title\">How your property value grows over 15 years<\/div>'\n      +'<div class=\"jm-chart-row\"><div class=\"jm-chart-label\">Today<\/div><div class=\"jm-chart-bar-wrap\"><div class=\"jm-chart-bar\" style=\"width:'+Math.round(tProp\/maxVal*100)+'%\"><span class=\"jm-chart-bar-val\">'+jmF(tProp)+'<\/span><\/div><\/div><\/div>'\n      +chartYears.map((y,i)=>'<div class=\"jm-chart-row\"><div class=\"jm-chart-label\">Yr '+y+'<\/div><div class=\"jm-chart-bar-wrap\"><div class=\"jm-chart-bar gold\" style=\"width:'+Math.round(chartVals[i]\/maxVal*100)+'%\"><span class=\"jm-chart-bar-val\">'+jmF(chartVals[i])+'<\/span><\/div><\/div><\/div>').join('')\n      +'<div class=\"jm-chart-legend\"><div class=\"jm-chart-leg-item\"><div class=\"jm-chart-leg-dot\" style=\"background:#1C1710;\"><\/div>Purchase price<\/div><div class=\"jm-chart-leg-item\"><div class=\"jm-chart-leg-dot\" style=\"background:#B8A06A;\"><\/div>Projected value<\/div><\/div>'\n    +'<\/div>';\n\n  body.appendChild(combined);\n\n  \/\/ ACTION CARDS\n  const acts=document.createElement('div');\n  acts.innerHTML=\n    '<div class=\"jm-act-lbl\">Next steps<\/div>'\n    +'<div class=\"jm-act-title\">What would you like<br>to do next?<\/div>'\n    +'<div class=\"jm-act-grid\">'\n      +'<div class=\"jm-act\"><div class=\"jm-act-n\">01<\/div><div class=\"jm-act-icon\"><svg width=\"15\" height=\"15\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#1C1710\" stroke-width=\"1.5\" stroke-linecap=\"round\"><path d=\"M12 15V3M7 10l5 5 5-5M3 17v2a2 2 0 002 2h14a2 2 0 002-2v-2\"\/><\/svg><\/div><div class=\"jm-act-ct\">Download portfolio<\/div><div class=\"jm-act-desc\">Save a complete PDF summary with all units, income projections and 15-year returns.<\/div><button class=\"jm-act-btn\">Download PDF<\/button><\/div>'\n      +'<div class=\"jm-act\"><div class=\"jm-act-n\">02<\/div><div class=\"jm-act-icon\"><svg width=\"15\" height=\"15\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#1C1710\" stroke-width=\"1.5\" stroke-linecap=\"round\"><path d=\"M22 2L11 13M22 2l-7 20-4-9-9-4 20-7z\"\/><\/svg><\/div><div class=\"jm-act-ct\">Share with investment team<\/div><div class=\"jm-act-desc\">Send your portfolio to our specialists so they are prepared for your call.<\/div><button class=\"jm-act-btn\">Share portfolio<\/button><\/div>'\n      +'<div class=\"jm-act\"><div class=\"jm-act-n\">03<\/div><div class=\"jm-act-icon\"><svg width=\"15\" height=\"15\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#B8A06A\" stroke-width=\"1.5\" stroke-linecap=\"round\"><rect x=\"3\" y=\"4\" width=\"18\" height=\"18\" rx=\"2\"\/><path d=\"M16 2v4M8 2v4M3 10h18\"\/><\/svg><\/div><div class=\"jm-act-ct\">Book a consultation<\/div><div class=\"jm-act-desc\">Speak with one of our investment specialists about your portfolio in detail.<\/div><button class=\"jm-act-btn\">Book now<\/button><\/div>'\n    +'<\/div>'\n    +'<div class=\"jm-disc\">These figures are approximate and for illustrative purposes only. Net income is calculated after mortgage payments, 8% management fee and service charge. Capital growth projections are based on Savills 2025\u20132029 forecasts. Always consult a qualified solicitor and mortgage broker before investing. \u00a9 Joseph Mews 2026<\/div>';\n  body.appendChild(acts);\n}\n\nfunction jmToggleCard(idx){\n  const body=document.getElementById('jmBody'+idx);\n  const arrow=document.getElementById('jmArrow'+idx);\n  const isOpen=body.classList.contains('open');\n  body.classList.toggle('open',!isOpen);\n  arrow.classList.toggle('open',!isOpen);\n}\n\n\n\/\/ \u2500\u2500 CUSTOM DROPDOWNS \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\nfunction jmToggleDD(id){\n  const dd=document.getElementById(id);\n  const list=dd.querySelector('.jm-dd-list');\n  const btn=dd.querySelector('.jm-dd-btn');\n  const isOpen=list.classList.contains('open');\n  \/\/ close all\n  document.querySelectorAll('.jm-dd-list').forEach(l=>l.classList.remove('open'));\n  document.querySelectorAll('.jm-dd-btn').forEach(b=>b.classList.remove('open'));\n  if(!isOpen){list.classList.add('open');btn.classList.add('open');}\n}\nfunction jmPickProj(val,label,el){\n  S.proj=val;\n  document.getElementById('jmProjLabel').textContent=label;\n  document.querySelectorAll('#jmProjList .jm-dd-opt').forEach(o=>o.classList.remove('selected'));\n  el.classList.add('selected');\n  document.getElementById('jmProjList').classList.remove('open');\n  document.getElementById('jmProjBtn').classList.remove('open');\n  S.unit=null;\n  jmUpdateTypePrices();\n  jmCalc();\n}\nfunction jmPickNat(val,label,el){\n  S.nat=val;\n  document.getElementById('jmNatLabel').textContent=label;\n  document.querySelectorAll('#jmNatList .jm-dd-opt').forEach(o=>o.classList.remove('selected'));\n  el.classList.add('selected');\n  document.getElementById('jmNatList').classList.remove('open');\n  document.getElementById('jmNatBtn').classList.remove('open');\n  jmCalc();\n}\n\/\/ close dropdowns on outside click\ndocument.addEventListener('click',function(e){\n  if(!e.target.closest('.jm-dd')){\n    document.querySelectorAll('.jm-dd-list').forEach(l=>l.classList.remove('open'));\n    document.querySelectorAll('.jm-dd-btn').forEach(b=>b.classList.remove('open'));\n  }\n});\n\n\/\/ \u2500\u2500 INIT \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\njmUpdateTypePrices();\njmCalc();\n<\/script>\n","protected":false},"excerpt":{"rendered":"<p>Joseph Mews \u2014 Investment Calculator Welcome to yourinvestmentcalculator. Build your personalised UK property portfolio. See gross yield, net income, capital growth and 15-year projections \u2014 all in real time. Start your portfolio \u2192 \ud83c\udfd9\ufe0f 5 Cities UK&#8217;s best markets \ud83d\udcca Real-time Instant projections \ud83d\udd0d No hidden costs Full transparency \ud83d\udcc8 15-year view Capital growth &#038; [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_monsterinsights_skip_tracking":false,"footnotes":""},"class_list":["post-3409","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/joseph-mews.com.tr\/tr\/wp-json\/wp\/v2\/pages\/3409","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/joseph-mews.com.tr\/tr\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/joseph-mews.com.tr\/tr\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/joseph-mews.com.tr\/tr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/joseph-mews.com.tr\/tr\/wp-json\/wp\/v2\/comments?post=3409"}],"version-history":[{"count":2,"href":"https:\/\/joseph-mews.com.tr\/tr\/wp-json\/wp\/v2\/pages\/3409\/revisions"}],"predecessor-version":[{"id":3412,"href":"https:\/\/joseph-mews.com.tr\/tr\/wp-json\/wp\/v2\/pages\/3409\/revisions\/3412"}],"wp:attachment":[{"href":"https:\/\/joseph-mews.com.tr\/tr\/wp-json\/wp\/v2\/media?parent=3409"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}