{"id":9,"date":"2025-11-24T08:26:17","date_gmt":"2025-11-24T08:26:17","guid":{"rendered":"https:\/\/reprop.cloudwowx.com\/?page_id=9"},"modified":"2025-11-28T20:14:34","modified_gmt":"2025-11-28T20:14:34","slug":"home","status":"publish","type":"page","link":"https:\/\/reprop.cloudwowx.com\/","title":{"rendered":"Home"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"9\" class=\"elementor elementor-9\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-82cf52f e-flex e-con-boxed e-con e-parent\" data-id=\"82cf52f\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-c92b618 elementor-widget elementor-widget-html\" data-id=\"c92b618\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<script\n  data-embed-id=\"89b7f1ae-5d5c-4c07-ae13-779a0456cf41\"\n  data-base-api-url=\"https:\/\/agentx.cloudwowx.com\/api\/embed\"\n  data-no-sponsor=\"true\"\n  data-brand-image-url=\"https:\/\/cloudwowx.com\/assets\/CLOUDWOW-Logo-white_1762848726175-BwWnlXgj.png\"\n  data-greeting=\"Hi \ud83d\udc4b I\u2019m your South African Property Buyer Assistant. How can I help you find the perfect home today?\"\n  data-button-color=\"#2563EB\"\n  data-user-bg-color=\"#2563EB\"\n  data-assistant-bg-color=\"#F3F4F6\"\n  data-position=\"bottom-left\"\n  src=\"https:\/\/agentx.cloudwowx.com\/embed\/anythingllm-chat-widget.min.js\">\n<\/script>\n\n<!-- \u2705 ONE Speak to an agent pill (not two) -->\n<div class=\"rw-chat-agent-label\" id=\"rw-chat-agent-label\">\n  <div class=\"rw-chat-agent-pill\">\n    <span class=\"rw-chat-agent-dot\"><\/span>\n    <span>Speak to an agent<\/span>\n  <\/div>\n<\/div>\n\n<!-- \u2705 JS: hide pill the first time chat button is clicked -->\n<script>\n  document.addEventListener(\"DOMContentLoaded\", function () {\n    const label = document.getElementById(\"rw-chat-agent-label\");\n    if (!label) return;\n\n    \/\/ Make sure it's visible by default\n    label.style.opacity = \"1\";\n    label.style.pointerEvents = \"auto\";\n\n    function hideLabel() {\n      label.style.opacity = \"0\";\n      label.style.pointerEvents = \"none\";\n    }\n\n    \/\/ Try to attach to the chat button, but it might not exist yet\n    function attachToChatButton() {\n      const chatBtn = document.getElementById(\"anything-llm-embed-chat-button\");\n      if (!chatBtn) return false;\n\n      \/\/ When user clicks the AnythingLLM bubble \u2192 hide pill\n      chatBtn.addEventListener(\"click\", function () {\n        hideLabel();\n      });\n\n      return true;\n    }\n\n    \/\/ Try immediately\u2026\n    if (!attachToChatButton()) {\n      \/\/ \u2026if not found, keep checking every 500ms until the widget injects it\n      const intervalId = setInterval(function () {\n        if (attachToChatButton()) {\n          clearInterval(intervalId);\n        }\n      }, 500);\n    }\n  });\n<\/script>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-a72b72c e-con-full e-flex e-con e-parent\" data-id=\"a72b72c\" data-element_type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-31e548c elementor-widget elementor-widget-html\" data-id=\"31e548c\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<section class=\"reprop-hero\">\n  <div class=\"reprop-hero-inner\">\n\n    <!-- Left: Text content -->\n    <div class=\"reprop-hero-content\">\n      <div class=\"reprop-pill\">Premium Real Estate Agency<\/div>\n\n      <h1 class=\"reprop-hero-title\">\n        Find your next <span>perfect property<\/span> with Re-Prop.\n      <\/h1>\n\n      <p class=\"reprop-hero-sub\">\n        We specialise in matching buyers and sellers with carefully selected\n        residential properties, guided by experienced property practitioners.\n      <\/p>\n\n      <div class=\"reprop-hero-cta\">\n        <a href=\"#listings\" class=\"reprop-btn reprop-btn-primary\">\n          View Available Properties\n        <\/a>\n        <a href=\"#contact\" class=\"reprop-btn reprop-btn-ghost\">\n          Request a Free CMA \n        <\/a>\n      <\/div>\n\n      <div class=\"reprop-hero-meta\">\n        <span>\u2714 Registered Property Practitioners<\/span>\n        <span>\u2714 Compliance-driven, client-focused<\/span>\n      <\/div>\n    <\/div>\n\n    <!-- Right: Hero image -->\n    <div class=\"reprop-hero-media\">\n      <div class=\"reprop-hero-image\"><\/div>\n    <\/div>\n\n  <\/div>\n<\/section>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-b59edd6 e-con-full e-flex e-con e-parent\" data-id=\"b59edd6\" data-element_type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-ac54046 elementor-widget elementor-widget-menu-anchor\" data-id=\"ac54046\" data-element_type=\"widget\" data-widget_type=\"menu-anchor.default\">\n\t\t\t\t\t\t\t<div class=\"elementor-menu-anchor\" id=\"listings\"><\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-6141987 elementor-widget elementor-widget-html\" data-id=\"6141987\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<section class=\"rw-cta-buy-light\">\n  <div class=\"rw-cta-buy-light-inner\">\n    <span class=\"rw-cta-pill-light\">For Buyers<\/span>\n\n    <h2 class=\"rw-cta-title-light\">Find your next home<\/h2>\n\n    <p class=\"rw-cta-text-light\">\n      Explore our curated selection of properties for sale. Compare areas, discover new listings, \n      and request a viewing with our team.\n    <\/p>\n\n    <a \n      href=\"https:\/\/www.property24.com\/for-sale\/agency\/re-prop-(pty)-ltd\/34509\" \n      class=\"rw-cta-btn-light\"\n      target=\"_blank\"\n      rel=\"noopener\"\n    >\n      View properties for sale \u2197\n    <\/a>\n\n    <p class=\"rw-cta-meta-light\">\n      Verified listings \u2022 Updated daily \u2022 Direct contact with our agents\n    <\/p>\n  <\/div>\n<\/section>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-bd232b3 e-con-full e-flex e-con e-parent\" data-id=\"bd232b3\" data-element_type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-fe05b71 elementor-widget elementor-widget-menu-anchor\" data-id=\"fe05b71\" data-element_type=\"widget\" data-widget_type=\"menu-anchor.default\">\n\t\t\t\t\t\t\t<div class=\"elementor-menu-anchor\" id=\"team\"><\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-080073a elementor-widget elementor-widget-html\" data-id=\"080073a\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<section class=\"rw-team-section\" id=\"meet-the-team\">\n\n  <header class=\"rw-team-header\">\n    <div class=\"rw-team-eyebrow\">Re-Prop Property Practitioners<\/div>\n\n    <h2 class=\"rw-team-title\">Meet the Principal &amp; Team<\/h2>\n\n    <p class=\"rw-team-subtitle\">\n      Experienced property practitioners guiding you through every step of your real estate journey.\n    <\/p>\n  <\/header>\n\n  <div class=\"rw-team-grid\">\n\n    <!-- 1\ufe0f\u20e3 Mariette \u2013 Principal (FEATURED FLOAT CARD) -->\n    <article class=\"rw-team-card rw-team-card--featured\">\n      <div class=\"rw-team-img\">\n        <img decoding=\"async\"\n          src=\"https:\/\/reprop.cloudwowx.com\/wp-content\/uploads\/2025\/11\/mariette.png\"\n          alt=\"Mariette Schoeman \u2013 Founder & Principal Property Practitioner\">\n      <\/div>\n\n      <h3 class=\"rw-team-name\">Mariette Schoeman<\/h3>\n      <p class=\"rw-team-role\">Founder &amp; Principal Property Practitioner<br>(MPRE)<\/p>\n\n      <p class=\"rw-team-bio\">\n        Specialist in regulatory compliance and oversight, acting as Principal for multiple estate\n        agencies and guiding them through audits and inspections.\n                <br><br>\n        <strong>Email:<\/strong> mariette@re-prop.co.zao.za<br>\n      <\/p>\n    <\/article>\n\n    <!-- 2\ufe0f\u20e3 Lizelle \u2013 Full Status -->\n    <article class=\"rw-team-card\">\n      <div class=\"rw-team-img\">\n        <img decoding=\"async\"\n          src=\"https:\/\/reprop.cloudwowx.com\/wp-content\/uploads\/2025\/11\/WhatsApp-Image-2025-08-05-at-09.37.59_ea7d405c-1.jpg\"\n          alt=\"Lizelle Els \u2013 Full Status Property Practitioner\">\n      <\/div>\n\n      <h3 class=\"rw-team-name\">Lizelle Els<\/h3>\n      <p class=\"rw-team-role\">Full Status Property Practitioner<\/p>\n\n      <p class=\"rw-team-bio\">\n        Focused on client service and professional listing management across residential real estate,\n        with strong negotiation and communication skills.\n      <\/p>\n    <\/article>\n\n    <!-- 3\ufe0f\u20e3 Justine \u2013 Intern -->\n    <article class=\"rw-team-card\">\n      <div class=\"rw-team-img\">\n        <img decoding=\"async\"\n          src=\"https:\/\/reprop.cloudwowx.com\/wp-content\/uploads\/2025\/11\/PHOTO-2024-11-09-09-35-32-3-1.jpg\"\n          alt=\"Justine Laver \u2013 Intern Property Practitioner\">\n      <\/div>\n\n      <h3 class=\"rw-team-name\">Justine Laver<\/h3>\n      <p class=\"rw-team-role\">Intern Property Practitioner<\/p>\n\n      <p class=\"rw-team-bio\">\n        Emerging property professional supporting the team with client care, marketing activities,\n        and day-to-day transaction coordination.\n      <\/p>\n    <\/article>\n\n    <!-- 4\ufe0f\u20e3 Thys Greeff \u2013 Principal Property Practitioner (MPRE) -->\n    <article class=\"rw-team-card\">\n      <div class=\"rw-team-img\">\n        <img decoding=\"async\"\n          src=\"https:\/\/reprop.cloudwowx.com\/wp-content\/uploads\/2025\/11\/21.png\"\n          alt=\"Thys Greeff \u2013 Principal Property Practitioner (MPRE)\">\n      <\/div>\n\n      <h3 class=\"rw-team-name\">Thys Greeff<\/h3>\n      <p class=\"rw-team-role\">Principal Property Practitioner (MPRE)<\/p>\n\n      <p class=\"rw-team-bio\">\n        Thys\u2019s expertise spans both the high-paced commercial sector and the personal world of\n        residential real estate. For him, property has never been just about bricks and mortar \u2013\n        it is about the people inside them. He leads the agency with a philosophy that genuine\n        relationships and expert advice are the keys to a successful transaction.\n        <br><br>\n        <strong>Email:<\/strong> thys@re-prop.co.za<br>\n        <strong>Cell:<\/strong> 083&nbsp;452&nbsp;7940\n      <\/p>\n    <\/article>\n\n    <!-- 5\ufe0f\u20e3 Beth Cox \u2013 Candidate Property Practitioner -->\n    <article class=\"rw-team-card\">\n      <div class=\"rw-team-img\">\n        <img decoding=\"async\"\n          src=\"https:\/\/reprop.cloudwowx.com\/wp-content\/uploads\/2025\/11\/44.png\"\n          alt=\"Beth Cox \u2013 Candidate Property Practitioner\">\n      <\/div>\n\n      <h3 class=\"rw-team-name\">Beth Cox<\/h3>\n      <p class=\"rw-team-role\">Candidate Property Practitioner (CPP)<\/p>\n\n      <p class=\"rw-team-bio\">\n        Beth takes pride in supporting our agents and clients through the administrative side of\n        the property journey, building a solid foundation in real estate law and practice along\n        the way.\n        <br><br>\n        <strong>Email:<\/strong> beth@re-prop.co.za<br>\n        <strong>Cell:<\/strong> 083&nbsp;463&nbsp;2322\n      <\/p>\n    <\/article>\n\n    <!-- 6\ufe0f\u20e3 Chanel Roux \u2013 Candidate Property Practitioner -->\n    <article class=\"rw-team-card\">\n      <div class=\"rw-team-img\">\n        <img decoding=\"async\"\n          src=\"https:\/\/reprop.cloudwowx.com\/wp-content\/uploads\/2025\/11\/445.png\"\n          alt=\"Chanel Roux \u2013 Candidate Property Practitioner\">\n      <\/div>\n\n      <h3 class=\"rw-team-name\">Chanel Roux<\/h3>\n      <p class=\"rw-team-role\">Candidate Property Practitioner (CPP)<\/p>\n\n      <p class=\"rw-team-bio\">\n        Obsessed with organisation and passionate about property, Chanel manages the compliance and\n        administrative heartbeat of our agency to ensure smooth transactions for our clients, proudly\n        learning from the best.\n        <br><br>\n        <strong>Email:<\/strong> chanel@re-prop.co.za<br>\n        <strong>Cell:<\/strong> 084&nbsp;258&nbsp;6440\n      <\/p>\n    <\/article>\n\n  <\/div>\n<\/section>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-a608f5d e-con-full e-flex e-con e-parent\" data-id=\"a608f5d\" data-element_type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-fcd0a05 elementor-widget elementor-widget-html\" data-id=\"fcd0a05\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<section class=\"rp-guides-section\" id=\"reprop-guides\">\n  <div class=\"rp-guides-inner\">\n    <header class=\"rp-guides-header\">\n      <div class=\"rp-guides-eyebrow\">\n        <span><\/span>\n        Property Guides &amp; Manuals\n      <\/div>\n\n      <h2 class=\"rp-guides-title\">\n        Practical <span>Guides<\/span> for Buyers, Sellers &amp; Landlords\n      <\/h2>\n\n      <p class=\"rp-guides-sub\">\n        Download easy-to-read South African property guides to help you navigate\n        buying, selling, renting, bonds, and sectional title living with confidence.\n      <\/p>\n    <\/header>\n\n    <div class=\"rp-guides-grid\">\n      <!-- 1\ufe0f\u20e3 Purchaser\u2019s Guide -->\n      <article class=\"rp-guide-card\">\n        <div class=\"rp-guide-tag\">\n          <span class=\"rp-guide-tag-dot\"><\/span>\n          Buyer Guide\n        <\/div>\n        <h3 class=\"rp-guide-title\">Purchaser\u2019s Guide to Immovable Property<\/h3>\n        <p class=\"rp-guide-desc\">\n          Step-by-step guidance for South African purchasers \u2013 from making an offer\n          and understanding suspensive conditions, to transfer, bond registration,\n          and final handover.\n        <\/p>\n        <div class=\"rp-guide-meta\">Format: DOCX \u2022 South African context<\/div>\n        <div class=\"rp-guide-actions\">\n          <a\n            class=\"rp-guide-btn\"\n            href=\"https:\/\/reprop.cloudwowx.com\/wp-content\/uploads\/2025\/11\/Purchasers-Guide-to-Immovable-Property.docx\"\n            target=\"_blank\"\n          >\n            <span class=\"rp-guide-icon\">\u2b07<\/span>\n            <span>Download guide<\/span>\n          <\/a>\n        <\/div>\n      <\/article>\n\n      <!-- 2\ufe0f\u20e3 Landlord \/ Tenant Rental Guide -->\n      <article class=\"rp-guide-card\">\n        <div class=\"rp-guide-tag\">\n          <span class=\"rp-guide-tag-dot\"><\/span>\n          Rental Guide\n        <\/div>\n        <h3 class=\"rp-guide-title\">Landlord &amp; Tenant Rental Guide<\/h3>\n        <p class=\"rp-guide-desc\">\n          A practical overview of rights and responsibilities for both landlords\n          and tenants, including deposits, inspections, maintenance and ending a lease.\n        <\/p>\n        <div class=\"rp-guide-meta\">Format: DOCX \u2022 Residential rentals<\/div>\n        <div class=\"rp-guide-actions\">\n          <a\n            class=\"rp-guide-btn\"\n            href=\"https:\/\/reprop.cloudwowx.com\/wp-content\/uploads\/2025\/11\/Landlord-Tenant-Rental-Guide.docx\"\n            target=\"_blank\"\n          >\n            <span class=\"rp-guide-icon\">\u2b07<\/span>\n            <span>Download guide<\/span>\n          <\/a>\n        <\/div>\n      <\/article>\n\n      <!-- 3\ufe0f\u20e3 Bond Guide -->\n      <article class=\"rp-guide-card\">\n        <div class=\"rp-guide-tag\">\n          <span class=\"rp-guide-tag-dot\"><\/span>\n          Finance\n        <\/div>\n        <h3 class=\"rp-guide-title\">Bond Guide<\/h3>\n        <p class=\"rp-guide-desc\">\n          Understand how home loans work in South Africa: pre-approvals, affordability,\n          interest rates, bond registration and tips to improve approval chances.\n        <\/p>\n        <div class=\"rp-guide-meta\">Format: DOCX \u2022 Home loan basics<\/div>\n        <div class=\"rp-guide-actions\">\n          <a\n            class=\"rp-guide-btn\"\n            href=\"https:\/\/reprop.cloudwowx.com\/wp-content\/uploads\/2025\/11\/Bond-Guide.docx\"\n            target=\"_blank\"\n          >\n            <span class=\"rp-guide-icon\">\u2b07<\/span>\n            <span>Download guide<\/span>\n          <\/a>\n        <\/div>\n      <\/article>\n\n      <!-- 4\ufe0f\u20e3 Seller\u2019s Guide -->\n      <article class=\"rp-guide-card\">\n        <div class=\"rp-guide-tag\">\n          <span class=\"rp-guide-tag-dot\"><\/span>\n          Seller Guide\n        <\/div>\n        <h3 class=\"rp-guide-title\">Seller\u2019s Guide to Immovable Property<\/h3>\n        <p class=\"rp-guide-desc\">\n          Everything a seller should know: preparing your property, mandates,\n          disclosures, offers, compliance certificates and the transfer process.\n        <\/p>\n        <div class=\"rp-guide-meta\">Format: DOCX \u2022 South African sellers<\/div>\n        <div class=\"rp-guide-actions\">\n          <a\n            class=\"rp-guide-btn\"\n            href=\"https:\/\/reprop.cloudwowx.com\/wp-content\/uploads\/2025\/11\/Sellers-Guide-to-Immovable-Property.docx\"\n            target=\"_blank\"\n          >\n            <span class=\"rp-guide-icon\">\u2b07<\/span>\n            <span>Download guide<\/span>\n          <\/a>\n        <\/div>\n      <\/article>\n\n      <!-- 5\ufe0f\u20e3 Sectional Title Living Guide -->\n      <article class=\"rp-guide-card\">\n        <div class=\"rp-guide-tag\">\n          <span class=\"rp-guide-tag-dot\"><\/span>\n          Sectional Title\n        <\/div>\n        <h3 class=\"rp-guide-title\">Sectional Title Living Guide<\/h3>\n        <p class=\"rp-guide-desc\">\n          A friendly introduction to living in sectional title schemes \u2013 bodies corporate,\n          levies, rules, meetings, common property and day-to-day expectations.\n        <\/p>\n        <div class=\"rp-guide-meta\">Format: DOCX \u2022 Sectional title schemes<\/div>\n        <div class=\"rp-guide-actions\">\n          <a\n            class=\"rp-guide-btn\"\n            href=\"https:\/\/reprop.cloudwowx.com\/wp-content\/uploads\/2025\/11\/Sectional-Title-Living-Guide-.docx\"\n            target=\"_blank\"\n          >\n            <span class=\"rp-guide-icon\">\u2b07<\/span>\n            <span>Download guide<\/span>\n          <\/a>\n        <\/div>\n      <\/article>\n    <\/div>\n  <\/div>\n<\/section>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-c6af2de e-con-full e-flex e-con e-parent\" data-id=\"c6af2de\" data-element_type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-f3d427d elementor-widget elementor-widget-html\" data-id=\"f3d427d\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<!-- BUYER TOOLS \u2013 MODERN HEADING -->\n<section class=\"buyer-heading-section\">\n  <div class=\"buyer-heading-inner\">\n    <h1 class=\"buyer-title\">South African Property Buyer Tools<\/h1>\n    <p class=\"buyer-subtitle\">\n      Calculate your affordability, transfer costs, bond repayments and compare rent vs buying \u2014 all in one place.\n    <\/p>\n  <\/div>\n<\/section>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-1f80562 elementor-widget elementor-widget-menu-anchor\" data-id=\"1f80562\" data-element_type=\"widget\" data-widget_type=\"menu-anchor.default\">\n\t\t\t\t\t\t\t<div class=\"elementor-menu-anchor\" id=\"afford\"><\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-43b16ea elementor-invisible elementor-widget elementor-widget-html\" data-id=\"43b16ea\" data-element_type=\"widget\" data-settings=\"{&quot;_animation&quot;:&quot;fadeInLeft&quot;}\" data-widget_type=\"html.default\">\n\t\t\t\t\t<!-- SA PROPERTY AFFORDABILITY CALCULATOR -->\n\n\n<div class=\"sa-afford-card\">\n  <h2>How Much Can I Afford?<\/h2>\n  <p class=\"sa-sub\">Estimate what property price you may qualify for based on your income.<\/p>\n\n  <div class=\"sa-afford-grid\">\n    <div class=\"sa-afford-field\">\n      <label>Gross Monthly Income (R)<\/label>\n      <input type=\"number\" id=\"saIncome\" placeholder=\"e.g. 45 000\">\n    <\/div>\n\n    <div class=\"sa-afford-field\">\n      <label>Existing Monthly Debt Repayments (R)<\/label>\n      <input type=\"number\" id=\"saDebt\" placeholder=\"e.g. 5 000\">\n    <\/div>\n\n    <div class=\"sa-afford-field\">\n      <label>Interest Rate (%)<\/label>\n      <input type=\"number\" id=\"saAffRate\" value=\"11.75\">\n    <\/div>\n\n    <div class=\"sa-afford-field\">\n      <label>Bond Term (years)<\/label>\n      <input type=\"number\" id=\"saAffYears\" value=\"20\">\n    <\/div>\n  <\/div>\n\n  <button id=\"saAffBtn\" type=\"button\" class=\"sa-afford-btn\">Calculate Affordability<\/button>\n\n  <div id=\"saAffResults\" class=\"sa-afford-results sa-hidden\">\n    <h3>Estimated Affordability<\/h3>\n    <p><strong>Approx. Maximum Monthly Bond Repayment:<\/strong> R <span id=\"saAffMaxRepay\"><\/span><\/p>\n    <p><strong>Estimated Maximum Bond Amount:<\/strong> R <span id=\"saAffMaxBond\"><\/span><\/p>\n    <p><strong>Indicative Maximum Purchase Price:<\/strong> R <span id=\"saAffMaxPrice\"><\/span><\/p>\n\n    <p class=\"sa-afford-highlight\">\n      This is a rough guide only. Banks may approve more or less based on your full profile.\n    <\/p>\n    <p class=\"sa-afford-note\">\n      Assumptions: Max 30% of gross income towards bond, less existing debt. Standard amortisation over the chosen term and interest rate. Always confirm with a bank or bond originator.\n    <\/p>\n  <\/div>\n<\/div>\n\n<script>\ndocument.addEventListener(\"DOMContentLoaded\", function () {\n  const btn = document.getElementById(\"saAffBtn\");\n  if (!btn) return;\n\n  btn.addEventListener(\"click\", function () {\n    const income = Number(document.getElementById(\"saIncome\").value) || 0;\n    const debt   = Number(document.getElementById(\"saDebt\").value)   || 0;\n    const rate   = (Number(document.getElementById(\"saAffRate\").value) || 0) \/ 100 \/ 12;\n    const years  = Number(document.getElementById(\"saAffYears\").value) || 0;\n    const months = years * 12;\n\n    if (income <= 0 || rate <= 0 || years <= 0) {\n      alert(\"Please enter a valid income, interest rate and term.\");\n      return;\n    }\n\n    \/\/ Assume bank comfortable with ~30% of gross income toward bond\n    const maxHousingPortion = income * 0.30;\n    const maxRepay = Math.max(maxHousingPortion - debt, 0);\n\n    if (maxRepay <= 0) {\n      alert(\"Based on the debt and income entered, there may be no room left for a bond repayment. Try reducing debt or adjusting values.\");\n      return;\n    }\n\n    \/\/ Reverse bond formula to get max bond from max repayment\n    \/\/ repayment = (P * r) \/ (1 - (1+r)^-n)\n    \/\/ -> P = repayment * (1 - (1+r)^-n) \/ r\n    const factor = (1 - Math.pow(1 + rate, -months)) \/ rate;\n    const maxBond = maxRepay * factor;\n    \/\/ Assume purchase price \u2248 bond (ignoring deposit for this quick guide)\n    const maxPrice = maxBond;\n\n    const fmt = (n) => Math.round(n).toLocaleString(\"en-ZA\");\n\n    document.getElementById(\"saAffMaxRepay\").textContent = fmt(maxRepay);\n    document.getElementById(\"saAffMaxBond\").textContent  = fmt(maxBond);\n    document.getElementById(\"saAffMaxPrice\").textContent = fmt(maxPrice);\n\n    document.getElementById(\"saAffResults\").classList.remove(\"sa-hidden\");\n  });\n});\n<\/script>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-a1984fe e-con-full e-flex e-con e-parent\" data-id=\"a1984fe\" data-element_type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-42ae13c elementor-invisible elementor-widget elementor-widget-html\" data-id=\"42ae13c\" data-element_type=\"widget\" data-settings=\"{&quot;_animation&quot;:&quot;fadeInRight&quot;}\" data-widget_type=\"html.default\">\n\t\t\t\t\t<!-- SA PROPERTY BUYER CALCULATOR -->\n\n<div class=\"sa-calculator\">\n  <h2>South African Property Buyer Calculator<\/h2>\n  <p class=\"subtext\">Estimate your bond repayment, transfer costs & total cost to buy.<\/p>\n\n  <div class=\"sa-calc-grid\">\n    <div class=\"sa-input-box\">\n      <label>Purchase Price (R)<\/label>\n      <input type=\"number\" id=\"saPurchasePrice\" placeholder=\"e.g. 1 250 000\">\n    <\/div>\n\n    <div class=\"sa-input-box\">\n      <label>Deposit (R)<\/label>\n      <input type=\"number\" id=\"saDeposit\" placeholder=\"e.g. 100 000\">\n    <\/div>\n\n    <div class=\"sa-input-box\">\n      <label>Interest Rate (%)<\/label>\n      <input type=\"number\" id=\"saInterestRate\" value=\"11.75\">\n    <\/div>\n\n    <div class=\"sa-input-box\">\n      <label>Bond Term (years)<\/label>\n      <input type=\"number\" id=\"saYears\" value=\"20\">\n    <\/div>\n  <\/div>\n\n  <button id=\"saCalcBtn\" class=\"sa-calc-btn\" type=\"button\">Calculate<\/button>\n\n  <div id=\"saResults\" class=\"sa-results sa-hidden\">\n    <h3>Results<\/h3>\n    <div class=\"sa-result-box\">\n      <p><strong>Bond Amount:<\/strong> R <span id=\"saBondAmount\"><\/span><\/p>\n      <p><strong>Monthly Repayment:<\/strong> R <span id=\"saMonthlyRepayment\"><\/span><\/p>\n      <p><strong>Transfer Duty (2025+):<\/strong> R <span id=\"saTransferDuty\"><\/span><\/p>\n      <p><strong>Attorney Transfer Fees (est):<\/strong> R <span id=\"saAttorneyFees\"><\/span><\/p>\n      <p><strong>Bond Registration Fees (est):<\/strong> R <span id=\"saBondReg\"><\/span><\/p>\n      <p class=\"sa-total\"><strong>Total Costs to Buy (incl. deposit):<\/strong> R <span id=\"saTotalCost\"><\/span><\/p>\n    <\/div>\n  <\/div>\n<\/div>\n\n<script>\ndocument.addEventListener(\"DOMContentLoaded\", function () {\n  const btn = document.getElementById(\"saCalcBtn\");\n  if (!btn) return;\n\n  btn.addEventListener(\"click\", function () {\n    const price   = Number(document.getElementById(\"saPurchasePrice\").value) || 0;\n    const deposit = Number(document.getElementById(\"saDeposit\").value) || 0;\n    const rate    = ((Number(document.getElementById(\"saInterestRate\").value) || 0) \/ 100) \/ 12;\n    const years   = Number(document.getElementById(\"saYears\").value) || 0;\n    const months  = years * 12;\n\n    if (price <= 0 || years <= 0 || rate <= 0) {\n      alert(\"Please enter a valid purchase price, interest rate and term.\");\n      return;\n    }\n\n    \/\/ Bond amount (loan) cannot be negative\n    const bondAmount = Math.max(price - deposit, 0);\n\n    \/\/ Standard amortising loan formula for monthly repayment\n    const repay = (bondAmount * rate) \/ (1 - Math.pow(1 + rate, -months));\n\n    \/\/ --- Transfer Duty (SARS \u2013 effective 1 April 2025) ---\n    \/\/ 0 \u2013 1 210 000: 0%\n    \/\/ 1 210 001 \u2013 1 663 800: 3% of value above 1 210 000\n    \/\/ 1 663 801 \u2013 2 329 300: 13 614 + 6% of value above 1 663 800\n    \/\/ 2 329 301 \u2013 2 994 800: 53 544 + 8% of value above 2 329 300\n    \/\/ 2 994 801 \u2013 13 310 000: 106 784 + 11% of value above 2 994 800\n    \/\/ 13 310 001+: 1 241 456 + 13% of value above 13 310 000\n\n    let duty = 0;\n\n    if (price <= 1210000) {\n      duty = 0;\n    } else if (price <= 1663800) {\n      duty = (price - 1210000) * 0.03;\n    } else if (price <= 2329300) {\n      duty = 13614 + (price - 1663800) * 0.06;\n    } else if (price <= 2994800) {\n      duty = 53544 + (price - 2329300) * 0.08;\n    } else if (price <= 13310000) {\n      duty = 106784 + (price - 2994800) * 0.11;\n    } else {\n      duty = 1241456 + (price - 13310000) * 0.13;\n    }\n\n    \/\/ --- Estimated conveyancing & bond costs (rough SA guideline) ---\n    \/\/ These are ESTIMATES, based on typical fee tables (conveyancer + VAT + disbursements).\n    const attorney = price * 0.024 + 3000;       \/\/ \u2248 2.4% of purchase price + base\n    const bondReg  = bondAmount * 0.023 + 2000;  \/\/ \u2248 2.3% of bond amount + base\n\n    \/\/ Total cash needed = deposit + transfer duty + attorney + bond registration\n    const totalCost = deposit + duty + attorney + bondReg;\n\n    \/\/ Format helper\n    const fmt = (n) => Math.round(n).toLocaleString(\"en-ZA\");\n\n    document.getElementById(\"saBondAmount\").textContent       = fmt(bondAmount);\n    document.getElementById(\"saMonthlyRepayment\").textContent = fmt(repay);\n    document.getElementById(\"saTransferDuty\").textContent     = fmt(duty);\n    document.getElementById(\"saAttorneyFees\").textContent     = fmt(attorney);\n    document.getElementById(\"saBondReg\").textContent          = fmt(bondReg);\n    document.getElementById(\"saTotalCost\").textContent        = fmt(totalCost);\n\n    document.getElementById(\"saResults\").classList.remove(\"sa-hidden\");\n  });\n});\n<\/script>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-d869752 e-flex e-con-boxed e-con e-parent\" data-id=\"d869752\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-1bad552 elementor-widget elementor-widget-menu-anchor\" data-id=\"1bad552\" data-element_type=\"widget\" data-widget_type=\"menu-anchor.default\">\n\t\t\t\t\t\t\t<div class=\"elementor-menu-anchor\" id=\"transfer\"><\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-16d3512 animated-slow elementor-invisible elementor-widget elementor-widget-html\" data-id=\"16d3512\" data-element_type=\"widget\" data-settings=\"{&quot;_animation&quot;:&quot;fadeInLeft&quot;}\" data-widget_type=\"html.default\">\n\t\t\t\t\t<!-- SA TRANSFER & BOND COST BREAKDOWN CALCULATOR -->\n\n<div class=\"sa-transfer-card\">\n  <h2>Transfer & Bond Cost Breakdown<\/h2>\n  <p class=\"sa-transfer-sub\">\n    Estimate your once-off costs (transfer duty, attorneys & bond costs) plus monthly bond repayment.\n  <\/p>\n\n  <div class=\"sa-transfer-grid\">\n    <div>\n      <div class=\"sa-transfer-field\">\n        <label>Purchase Price (R)<\/label>\n        <input type=\"number\" id=\"saTPrice\" placeholder=\"e.g. 1 950 000\">\n      <\/div>\n\n      <div class=\"sa-transfer-field\">\n        <label>Deposit (R)<\/label>\n        <input type=\"number\" id=\"saTDeposit\" placeholder=\"e.g. 150 000 (or 0)\">\n        <small>Optional \u2013 leave as 0 if you plan to finance 100%.<\/small>\n      <\/div>\n    <\/div>\n\n    <div>\n      <div class=\"sa-transfer-field\">\n        <label>Interest Rate (% per year)<\/label>\n        <input type=\"number\" id=\"saTRate\" value=\"11.75\">\n      <\/div>\n\n      <div class=\"sa-transfer-field\">\n        <label>Bond Term (years)<\/label>\n        <input type=\"number\" id=\"saTYears\" value=\"20\">\n      <\/div>\n    <\/div>\n  <\/div>\n\n  <button id=\"saTBtn\" type=\"button\" class=\"sa-transfer-btn\">\n    Calculate Transfer &amp; Bond Costs\n  <\/button>\n\n  <div id=\"saTResults\" class=\"sa-transfer-results sa-transfer-hidden\">\n    <h3>Cost Summary<\/h3>\n\n    <div class=\"sa-transfer-summary\">\n      <div class=\"sa-transfer-summary-item\">\n        Estimated Monthly Bond Repayment\n        <span>R <span id=\"saTMonthly\"><\/span><\/span>\n      <\/div>\n      <div class=\"sa-transfer-summary-item\">\n        Total Once-off Cash Needed\n        <span>R <span id=\"saTTotalOnce\"><\/span><\/span>\n      <\/div>\n    <\/div>\n\n    <div class=\"sa-transfer-breakdown\">\n      <p>\n        <span>Purchase price<\/span>\n        <span>R <span id=\"saTOutPrice\"><\/span><\/span>\n      <\/p>\n      <p>\n        <span>Deposit<\/span>\n        <span>R <span id=\"saTOutDeposit\"><\/span><\/span>\n      <\/p>\n      <p>\n        <span>Bond amount<\/span>\n        <span>R <span id=\"saTOutBond\"><\/span><\/span>\n      <\/p>\n      <p>\n        <span>Transfer duty (SARS \u2013 from 1 April 2025)<\/span>\n        <span>R <span id=\"saTOutDuty\"><\/span><\/span>\n      <\/p>\n      <p>\n        <span>Transfer attorney fees (estimate)<\/span>\n        <span>R <span id=\"saTOutTAtty\"><\/span><\/span>\n      <\/p>\n      <p>\n        <span>Bond registration attorney fees (estimate)<\/span>\n        <span>R <span id=\"saTOutBAtty\"><\/span><\/span>\n      <\/p>\n      <p>\n        <span>Other disbursements &amp; Deeds Office (estimate)<\/span>\n        <span>R <span id=\"saTOutOther\"><\/span><\/span>\n      <\/p>\n      <p class=\"sa-transfer-total\">\n        <span>Total once-off cash (deposit + all costs)<\/span>\n        <span>R <span id=\"saTOutOnceTotal\"><\/span><\/span>\n      <\/p>\n    <\/div>\n\n    <p class=\"sa-transfer-note\">\n      Transfer duty is based on current SARS tables for properties acquired on or after\n      1 April 2025. Attorney and bond registration fees are approximate guideline estimates\n      only and will vary per law firm and bank. Always request a formal cost breakdown from\n      your conveyancer and bond attorney.\n    <\/p>\n  <\/div>\n<\/div>\n\n<script>\ndocument.addEventListener(\"DOMContentLoaded\", function () {\n  const btn = document.getElementById(\"saTBtn\");\n  if (!btn) return;\n\n  function fmt(n) {\n    return Math.round(n).toLocaleString(\"en-ZA\");\n  }\n\n  \/\/ SARS transfer duty bands \u2013 effective 1 April 2025\n  function transferDuty(price) {\n    const p = price;\n    if (p <= 1210000) return 0;\n    if (p <= 1663800) {\n      return (p - 1210000) * 0.03;\n    }\n    if (p <= 2329300) {\n      return 13614 + (p - 1663800) * 0.06;\n    }\n    if (p <= 2994800) {\n      return 53544 + (p - 2329300) * 0.08;\n    }\n    if (p <= 13310000) {\n      return 106784 + (p - 2994800) * 0.11;\n    }\n    return 1241456 + (p - 13310000) * 0.13;\n  }\n\n  \/\/ Approximate transfer attorney fees (conveyancing, incl VAT & typical charges)\n  \/\/ Simple % model to align with the other calculator.\n  function estimateTransferAttorney(price) {\n    if (price <= 0) return 0;\n    return price * 0.024 + 3000; \/\/ \u2248 2.4% + base\n  }\n\n  \/\/ Approximate bond registration attorney fees (incl VAT & typical charges)\n  function estimateBondAttorney(bond) {\n    if (bond <= 0) return 0;\n    return bond * 0.023 + 2000; \/\/ \u2248 2.3% + base\n  }\n\n  \/\/ Monthly bond repayment \u2013 standard amortisation\n  function monthlyRepayment(principal, annualRate, years) {\n    if (principal <= 0 || years <= 0) return 0;\n    const r = (annualRate \/ 100) \/ 12;\n    const n = years * 12;\n    if (r === 0) return principal \/ n;\n    const pow = Math.pow(1 + r, n);\n    return principal * (r * pow) \/ (pow - 1);\n  }\n\n  btn.addEventListener(\"click\", function () {\n    const price   = Number(document.getElementById(\"saTPrice\").value) || 0;\n    const deposit = Number(document.getElementById(\"saTDeposit\").value) || 0;\n    const rate    = Number(document.getElementById(\"saTRate\").value) || 0;\n    const years   = Number(document.getElementById(\"saTYears\").value) || 0;\n\n    if (price <= 0 || rate <= 0 || years <= 0) {\n      alert(\"Please enter a valid purchase price, interest rate and term.\");\n      return;\n    }\n\n    const bondAmount = Math.max(price - deposit, 0);\n    const duty  = transferDuty(price);\n    const tAtty = estimateTransferAttorney(price);\n    const bAtty = estimateBondAttorney(bondAmount);\n    const other = 2500; \/\/ simple estimate for deeds office + misc disbursements\n\n    const onceOffTotal = deposit + duty + tAtty + bAtty + other;\n    const monthly      = monthlyRepayment(bondAmount, rate, years);\n\n    \/\/ Update UI\n    document.getElementById(\"saTOutPrice\").textContent      = fmt(price);\n    document.getElementById(\"saTOutDeposit\").textContent    = fmt(deposit);\n    document.getElementById(\"saTOutBond\").textContent       = fmt(bondAmount);\n\n    document.getElementById(\"saTOutDuty\").textContent       = fmt(duty);\n    document.getElementById(\"saTOutTAtty\").textContent      = fmt(tAtty);\n    document.getElementById(\"saTOutBAtty\").textContent      = fmt(bAtty);\n    document.getElementById(\"saTOutOther\").textContent      = fmt(other);\n\n    document.getElementById(\"saTOutOnceTotal\").textContent  = fmt(onceOffTotal);\n\n    document.getElementById(\"saTMonthly\").textContent       = fmt(monthly);\n    document.getElementById(\"saTTotalOnce\").textContent     = fmt(onceOffTotal);\n\n    document.getElementById(\"saTResults\").classList.remove(\"sa-transfer-hidden\");\n  });\n});\n<\/script>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-df3cef2 e-flex e-con-boxed e-con e-parent\" data-id=\"df3cef2\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-f46cb79 elementor-widget elementor-widget-menu-anchor\" data-id=\"f46cb79\" data-element_type=\"widget\" data-widget_type=\"menu-anchor.default\">\n\t\t\t\t\t\t\t<div class=\"elementor-menu-anchor\" id=\"vs\"><\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-b881424 animated-slow elementor-invisible elementor-widget elementor-widget-html\" data-id=\"b881424\" data-element_type=\"widget\" data-settings=\"{&quot;_animation&quot;:&quot;fadeInRight&quot;}\" data-widget_type=\"html.default\">\n\t\t\t\t\t<!-- RENT VS BUY COMPARISON TOOL (SOUTH AFRICA) -->\n\n<div class=\"sa-rentbuy-card\">\n  <h2>Rent vs Buy \u2013 Comparison<\/h2>\n  <p class=\"sa-sub\">\n    Compare your current rent vs buying a property over 5 and 10 years (South Africa).\n  <\/p>\n\n  <div class=\"sa-rentbuy-grid\">\n    <!-- RENT SIDE -->\n    <div class=\"sa-rentbuy-block\">\n      <h3>Renting<\/h3>\n\n      <div class=\"sa-rentbuy-field\">\n        <label>Current Monthly Rent (R)<\/label>\n        <input type=\"number\" id=\"saRent\" placeholder=\"e.g. 9 500\">\n      <\/div>\n\n      <div class=\"sa-rentbuy-field\">\n        <label>Annual Rent Increase (%)<\/label>\n        <input type=\"number\" id=\"saRentEsc\" value=\"7\">\n        <small>Typical SA escalations are around 6\u201310% depending on the market.<\/small>\n      <\/div>\n    <\/div>\n\n    <!-- BUY SIDE -->\n    <div class=\"sa-rentbuy-block\">\n      <h3>Buying<\/h3>\n\n      <div class=\"sa-rentbuy-field\">\n        <label>Purchase Price (R)<\/label>\n        <input type=\"number\" id=\"saBuyPrice\" placeholder=\"e.g. 1 350 000\">\n      <\/div>\n\n      <div class=\"sa-rentbuy-field\">\n        <label>Deposit (R)<\/label>\n        <input type=\"number\" id=\"saBuyDeposit\" placeholder=\"e.g. 100 000\">\n      <\/div>\n\n      <div class=\"sa-rentbuy-field\">\n        <label>Interest Rate (%)<\/label>\n        <input type=\"number\" id=\"saBuyRate\" value=\"11.75\">\n      <\/div>\n\n      <div class=\"sa-rentbuy-field\">\n        <label>Bond Term (years)<\/label>\n        <input type=\"number\" id=\"saBuyYears\" value=\"20\">\n      <\/div>\n\n      <div class=\"sa-rentbuy-field\">\n        <label>Monthly Levies & Rates (R)<\/label>\n        <input type=\"number\" id=\"saBuyLevies\" placeholder=\"e.g. 2 000\">\n        <small>Estimated levies, rates & taxes, and other fixed monthly costs.<\/small>\n      <\/div>\n\n      <div class=\"sa-rentbuy-field\">\n        <label>Expected Property Growth per Year (%)<\/label>\n        <input type=\"number\" id=\"saGrowth\" value=\"4\">\n      <\/div>\n    <\/div>\n  <\/div>\n\n  <button id=\"saRentBuyBtn\" type=\"button\" class=\"sa-rentbuy-btn\">\n    Compare Rent vs Buy\n  <\/button>\n\n  <div id=\"saRentBuyResults\" class=\"sa-rentbuy-results sa-rentbuy-hidden\">\n    <h3>Summary \u2013 5 & 10 Year View<\/h3>\n\n    <table class=\"sa-rentbuy-table\">\n      <thead>\n        <tr>\n          <th><\/th>\n          <th>5 years<\/th>\n          <th>10 years<\/th>\n        <\/tr>\n      <\/thead>\n      <tbody>\n        <tr>\n          <td>Total rent paid<\/td>\n          <td>R <span id=\"saRent5\"><\/span><\/td>\n          <td>R <span id=\"saRent10\"><\/span><\/td>\n        <\/tr>\n        <tr>\n          <td>Total owning cash out (bond + levies)<\/td>\n          <td>R <span id=\"saOwn5Cash\"><\/span><\/td>\n          <td>R <span id=\"saOwn10Cash\"><\/span><\/td>\n        <\/tr>\n        <tr>\n          <td>Estimated property value<\/td>\n          <td>R <span id=\"saVal5\"><\/span><\/td>\n          <td>R <span id=\"saVal10\"><\/span><\/td>\n        <\/tr>\n        <tr>\n          <td>Estimated equity (property minus outstanding bond)<\/td>\n          <td>R <span id=\"saEq5\"><\/span><\/td>\n          <td>R <span id=\"saEq10\"><\/span><\/td>\n        <\/tr>\n        <tr>\n          <td>Net position vs renting (equity minus cash out)<\/td>\n          <td>R <span id=\"saNet5\"><\/span><\/td>\n          <td>R <span id=\"saNet10\"><\/span><\/td>\n        <\/tr>\n      <\/tbody>\n    <\/table>\n\n    <p class=\"sa-rentbuy-better\" id=\"saBetterText\"><\/p>\n    <p class=\"sa-rentbuy-note\">\n      This is a simplified comparison for illustration only. It ignores tax, maintenance,\n      insurance and opportunity cost of your deposit. Always speak to a financial adviser\n      or bond originator before making a final decision.\n    <\/p>\n  <\/div>\n<\/div>\n\n<script>\ndocument.addEventListener(\"DOMContentLoaded\", function () {\n  const btn = document.getElementById(\"saRentBuyBtn\");\n  if (!btn) return;\n\n  function fmt(n) {\n    return Math.round(n).toLocaleString(\"en-ZA\");\n  }\n\n  \/\/ Monthly repayment for a bond: annuity formula\n  function monthlyRepayment(principal, annualRate, years) {\n    if (principal <= 0 || years <= 0) return 0;\n    const r = annualRate \/ 100 \/ 12;\n    const n = years * 12;\n    if (r === 0) return principal \/ n;\n    const pow = Math.pow(1 + r, n);\n    return principal * (r * pow) \/ (pow - 1);\n  }\n\n  \/\/ Remaining bond balance after t years\n  function remainingBalance(principal, annualRate, years, yearsElapsed) {\n    const r = annualRate \/ 100 \/ 12;\n    const n = years * 12;\n    const t = yearsElapsed * 12;\n    if (principal <= 0 || years <= 0 || t <= 0) return principal;\n    const M = monthlyRepayment(principal, annualRate, years);\n    if (r === 0) {\n      const paid = M * t;\n      return Math.max(principal - paid, 0);\n    }\n    const pow_t = Math.pow(1 + r, t);\n    const balance = principal * pow_t - M * (pow_t - 1) \/ r;\n    return Math.max(balance, 0);\n  }\n\n  \/\/ Total rent over N years with annual escalation\n  function totalRentOverYears(initialRent, annualEscPercent, years) {\n    const g = annualEscPercent \/ 100;\n    let total = 0;\n    let currentRent = initialRent;\n    for (let y = 0; y < years; y++) {\n      total += currentRent * 12;\n      currentRent *= (1 + g);\n    }\n    return total;\n  }\n\n  btn.addEventListener(\"click\", function () {\n    const rent = Number(document.getElementById(\"saRent\").value) || 0;\n    const rentEsc = Number(document.getElementById(\"saRentEsc\").value) || 0;\n\n    const price = Number(document.getElementById(\"saBuyPrice\").value) || 0;\n    const deposit = Number(document.getElementById(\"saBuyDeposit\").value) || 0;\n    const rate = Number(document.getElementById(\"saBuyRate\").value) || 0;\n    const years = Number(document.getElementById(\"saBuyYears\").value) || 0;\n    const levies = Number(document.getElementById(\"saBuyLevies\").value) || 0;\n    const growth = Number(document.getElementById(\"saGrowth\").value) || 0;\n\n    if (price <= 0 || years <= 0 || rate <= 0 || rent <= 0) {\n      alert(\"Please enter at least rent, purchase price, interest rate and term.\");\n      return;\n    }\n\n    const principal = Math.max(price - deposit, 0);\n    const bondMonthly = monthlyRepayment(principal, rate, years);\n    const ownMonthlyTotal = bondMonthly + levies;\n\n    \/\/ 5-year calculations\n    const totalRent5 = totalRentOverYears(rent, rentEsc, 5);\n    const totalOwn5Cash = ownMonthlyTotal * 12 * 5; \/\/ ignoring once-off costs here\n    const val5 = price * Math.pow(1 + growth \/ 100, 5);\n    const bal5 = remainingBalance(principal, rate, years, 5);\n    const eq5 = Math.max(val5 - bal5, 0);\n    const net5 = eq5 - totalOwn5Cash + 0; \/\/ renter has no asset equity\n\n    \/\/ 10-year calculations\n    const totalRent10 = totalRentOverYears(rent, rentEsc, 10);\n    const totalOwn10Cash = ownMonthlyTotal * 12 * 10;\n    const val10 = price * Math.pow(1 + growth \/ 100, 10);\n    const bal10 = remainingBalance(principal, rate, years, 10);\n    const eq10 = Math.max(val10 - bal10, 0);\n    const net10 = eq10 - totalOwn10Cash;\n\n    \/\/ Update UI\n    document.getElementById(\"saRent5\").textContent = fmt(totalRent5);\n    document.getElementById(\"saRent10\").textContent = fmt(totalRent10);\n\n    document.getElementById(\"saOwn5Cash\").textContent = fmt(totalOwn5Cash);\n    document.getElementById(\"saOwn10Cash\").textContent = fmt(totalOwn10Cash);\n\n    document.getElementById(\"saVal5\").textContent = fmt(val5);\n    document.getElementById(\"saVal10\").textContent = fmt(val10);\n\n    document.getElementById(\"saEq5\").textContent = fmt(eq5);\n    document.getElementById(\"saEq10\").textContent = fmt(eq10);\n\n    document.getElementById(\"saNet5\").textContent = fmt(net5);\n    document.getElementById(\"saNet10\").textContent = fmt(net10);\n\n    let betterText = \"\";\n    if (net5 > 0 && net10 > 0) {\n      betterText = \"On these assumptions, buying appears to leave you in a better long-term position than renting after both 5 and 10 years.\";\n    } else if (net5 < 0 && net10 < 0) {\n      betterText = \"On these assumptions, renting appears cheaper than buying over both 5 and 10 years. You may need a bigger deposit or lower purchase price.\";\n    } else if (net5 > 0 && net10 <= 0) {\n      betterText = \"Buying looks better over 5 years, but over 10 years the numbers are tighter. Consider your time horizon carefully.\";\n    } else if (net5 <= 0 && net10 > 0) {\n      betterText = \"Buying may be more expensive initially, but becomes more favourable vs renting over a 10-year period.\";\n    }\n\n    document.getElementById(\"saBetterText\").textContent = betterText;\n    document.getElementById(\"saRentBuyResults\").classList.remove(\"sa-rentbuy-hidden\");\n  });\n});\n<\/script>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-a14498c e-con-full e-flex e-con e-parent\" data-id=\"a14498c\" data-element_type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-5b74124 elementor-widget elementor-widget-menu-anchor\" data-id=\"5b74124\" data-element_type=\"widget\" data-widget_type=\"menu-anchor.default\">\n\t\t\t\t\t\t\t<div class=\"elementor-menu-anchor\" id=\"Seller\"><\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-b52e1fc animated-slow elementor-invisible elementor-widget elementor-widget-html\" data-id=\"b52e1fc\" data-element_type=\"widget\" data-settings=\"{&quot;_animation&quot;:&quot;fadeIn&quot;}\" data-widget_type=\"html.default\">\n\t\t\t\t\t<!-- Realty-Wise AI Agent Matcher Promo Block -->\n<div class=\"rw-agent-widget\">\n  <div class=\"rw-agent-card\">\n    <div class=\"rw-agent-logo-wrap\">\n      <img decoding=\"async\"\n        src=\"https:\/\/realty-wise.co.za\/wp-content\/uploads\/2025\/11\/cropped-icononly-127x127.png\"\n        alt=\"Realty-Wise Logo\"\n        class=\"rw-agent-logo\"\n      \/>\n      <div class=\"rw-agent-badge\">Realty-Wise<\/div>\n    <\/div>\n\n    <div class=\"rw-agent-content\">\n      <h2 class=\"rw-agent-title\">\n        Find the <span>best property agent<\/span> for your sale\n      <\/h2>\n      <p class=\"rw-agent-text\">\n        Chat to the <strong>Realty-Wise AI Agent Matcher<\/strong> and get\n        connected to a <strong>pre-vetted, compliant estate agent<\/strong>\n        that fits your area, property type and price range.\n      <\/p>\n\n      <ul class=\"rw-agent-list\">\n        <li>\u2705 Match with agents by area & property type<\/li>\n        <li>\u2705 Verified, compliant estate agencies<\/li>\n        <li>\u2705 Quick, friendly AI chat \u2013 24\/7<\/li>\n      <\/ul>\n\n      <a\n        href=\"#contact\/\"\n        class=\"rw-agent-button\"\n        target=\"_blank\"\n        rel=\"noopener noreferrer\"\n      >\n        \ud83d\udcac Chat to the Realty-Wise AI Agent Matcher\n      <\/a>\n\n      <p class=\"rw-agent-footer\">\n        Powered by <strong>Realty-Wise<\/strong> \u2013 Compliance & Principal Services\n        for South African Estate Agencies.\n      <\/p>\n    <\/div>\n  <\/div>\n<\/div>\n\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-5fe7f31 elementor-widget elementor-widget-menu-anchor\" data-id=\"5fe7f31\" data-element_type=\"widget\" data-widget_type=\"menu-anchor.default\">\n\t\t\t\t\t\t\t<div class=\"elementor-menu-anchor\" id=\"contact\"><\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-3c414d3 animated-slow elementor-invisible elementor-widget elementor-widget-html\" data-id=\"3c414d3\" data-element_type=\"widget\" data-settings=\"{&quot;_animation&quot;:&quot;fadeIn&quot;}\" data-widget_type=\"html.default\">\n\t\t\t\t\t<section class=\"rw-inline-contact\">\n  <div class=\"rw-inline-inner\">\n    <h2 class=\"rw-inline-title\">Speak to a Property Specialist<\/h2>\n    <p class=\"rw-inline-sub\">\n      Get quick assistance, book a viewing, or request advice on buying or selling. Connect directly with our qualified agents.\n    <\/p>\n\n    <div class=\"rw-inline-grid\">\n\n      <!-- Agent 1 -->\n      <div class=\"rw-inline-card\">\n        <h3 class=\"rw-agent-name\">Lizelle Els<\/h3>\n        <p class=\"rw-agent-role\">Full Status Property Practitioner<\/p>\n\n        <div class=\"rw-inline-buttons\">\n          <a href=\"https:\/\/wa.me\/27834509421\" target=\"_blank\" class=\"rw-inline-btn rw-wa-btn\">WhatsApp<\/a>\n          <a href=\"tel:0834509421\" class=\"rw-inline-btn rw-call-btn\">Call<\/a>\n        <\/div>\n      <\/div>\n\n      <!-- Agent 2 -->\n      <div class=\"rw-inline-card\">\n        <h3 class=\"rw-agent-name\">Mariette Schoeman<\/h3>\n        <p class=\"rw-agent-role\">Full Status Property Practitioner<\/p>\n\n        <div class=\"rw-inline-buttons\">\n          <a href=\"https:\/\/wa.me\/27798745572\" target=\"_blank\" class=\"rw-inline-btn rw-wa-btn\">WhatsApp<\/a>\n          <a href=\"tel:0798745572\" class=\"rw-inline-btn rw-call-btn\">Call<\/a>\n        <\/div>\n      <\/div>\n\n    <\/div>\n  <\/div>\n<\/section>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-0f502d0 e-con-full e-flex e-con e-parent\" data-id=\"0f502d0\" data-element_type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-c395dc6 elementor-widget elementor-widget-html\" data-id=\"c395dc6\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<section class=\"sa-value-cta red-version\">\n  <div class=\"sa-value-inner\">\n\n    <h2 class=\"sa-value-title\">Is My Property Priced Correctly?<\/h2>\n\n    <p class=\"sa-value-sub\">\n      Get accurate, data-driven market insights and compare your property's price\n      using South Africa\u2019s trusted Property24 valuation platform.\n    <\/p>\n\n    <a href=\"https:\/\/www.property24.com\/property-trends\" \n       target=\"_blank\" \n       rel=\"noopener\" \n       class=\"sa-value-btn-red\">\n        Check Property Valuation\n    <\/a>\n\n    <p class=\"sa-value-note\">Opens Property24 in a new tab<\/p>\n\n  <\/div>\n<\/section>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-fee06da e-con-full e-flex e-con e-parent\" data-id=\"fee06da\" data-element_type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-dc2dae5 elementor-widget elementor-widget-html\" data-id=\"dc2dae5\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<!-- ===========================\n     MODERN REAL ESTATE FOOTER\n     =========================== -->\n<footer class=\"rw-footer\">\n  <div class=\"rw-footer-inner\">\n\n    <!-- 1. About -->\n    <div class=\"rw-footer-col\">\n      <h3 class=\"rw-footer-title\">About Us<\/h3>\n      <p class=\"rw-footer-text\">\n        We help South African buyers, sellers and investors navigate the property market with expert guidance,\n        accurate valuations and professional marketing. Your trusted partner in real estate.\n      <\/p>\n    <\/div>\n\n    <!-- 2. Quick Links -->\n    <div class=\"rw-footer-col\">\n      <h3 class=\"rw-footer-title\">Quick Links<\/h3>\n      <ul class=\"rw-footer-links\">\n        <li><a href=\"#\">Browse Listings<\/a><\/li>\n        <li><a href=\"#\">Free Property Valuation<\/a><\/li>\n        <li><a href=\"#\">Sell Your Property<\/a><\/li>\n        <li><a href=\"#\">Buyer Tools<\/a><\/li>\n        <li><a href=\"#\">Request a Call<\/a><\/li>\n      <\/ul>\n    <\/div>\n\n    <!-- 3. Contact -->\n    <div class=\"rw-footer-col\">\n      <h3 class=\"rw-footer-title\">Get in Touch<\/h3>\n      <ul class=\"rw-footer-contact\">\n        <li>\ud83d\udccd South Africa<\/li>\n        <li>\ud83d\udcde 079 874 55727<\/li>\n        <li>\ud83d\udce7 info@re-prop.co.za<\/li>\n      <\/ul>\n\n      <div class=\"rw-footer-socials\">\n        <a href=\"#\" class=\"rw-social\">\ud83c\udf10<\/a>\n        <a href=\"#\" class=\"rw-social\">\ud83d\udcd8<\/a>\n        <a href=\"#\" class=\"rw-social\">\ud83d\udcf7<\/a>\n        <a href=\"#\" class=\"rw-social\">\u25b6\ufe0f<\/a>\n      <\/div>\n    <\/div>\n  <\/div>\n\n  <!-- Bottom Bar -->\n  <div class=\"rw-footer-bottom\">\n    <p>\u00a9 <span id=\"rwYear\"><\/span> Re Prop. All rights reserved.<\/p>\n  <\/div>\n<\/footer>\n\n<script>\n  document.getElementById(\"rwYear\").textContent = new Date().getFullYear();\n<\/script>\n\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>Speak to an agent Premium Real Estate Agency Find your next perfect property with Re-Prop. We specialise in matching buyers [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"elementor_header_footer","meta":{"site-sidebar-layout":"no-sidebar","site-content-layout":"","ast-site-content-layout":"full-width-container","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"disabled","footer-sml-layout":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"class_list":["post-9","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/reprop.cloudwowx.com\/index.php?rest_route=\/wp\/v2\/pages\/9","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/reprop.cloudwowx.com\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/reprop.cloudwowx.com\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/reprop.cloudwowx.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/reprop.cloudwowx.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=9"}],"version-history":[{"count":169,"href":"https:\/\/reprop.cloudwowx.com\/index.php?rest_route=\/wp\/v2\/pages\/9\/revisions"}],"predecessor-version":[{"id":234,"href":"https:\/\/reprop.cloudwowx.com\/index.php?rest_route=\/wp\/v2\/pages\/9\/revisions\/234"}],"wp:attachment":[{"href":"https:\/\/reprop.cloudwowx.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=9"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}