<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>RoadCover</title>
	<atom:link href="https://www.roadcover.co.za/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.roadcover.co.za</link>
	<description>With RoadCover, you’re not alone - get full support for road challenges including RAF claims, legal aid, and repairs from a caring, expert team.</description>
	<lastBuildDate>Thu, 22 Oct 2026 12:44:20 +0000</lastBuildDate>
	<language>en-ZA</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.1.3</generator>

<image>
	<url>https://www.roadcover.co.za/wp-content/uploads/2026/04/ChatGPT-Image-Apr-23-2026-05_29_22-PM-150x150.png</url>
	<title>RoadCover</title>
	<link>https://www.roadcover.co.za</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Discovery Health vs RAF: Supreme Court of Appeal Rejects RAF’s Refusal to Pay Medical Expenses</title>
		<link>https://www.roadcover.co.za/discovery-health-vs-raf-medical-expenses/</link>
		
		<dc:creator><![CDATA[Nokuthula Ngcobo]]></dc:creator>
		<pubDate>Tue, 20 Oct 2026 12:06:26 +0000</pubDate>
				<category><![CDATA[article]]></category>
		<guid isPermaLink="false">https://www.roadcover.co.za/?p=3617</guid>

					<description><![CDATA[The Supreme Court of Appeal has ruled in Discovery Health’s favour in its dispute with the Road Accident Fund (RAF) over medical expenses already paid by medical aid schemes. ]]></description>
			<style id="elementor-post-3617">.elementor-3617 .elementor-element.elementor-element-367d1308{--display:flex;--padding-top:220px;--padding-bottom:0px;--padding-left:0112px;--padding-right:0112px;}.elementor-3617 .elementor-element.elementor-element-b0655d0{--display:flex;--flex-direction:row;--container-widget-width:initial;--container-widget-height:100%;--container-widget-flex-grow:1;--container-widget-align-self:stretch;--flex-wrap-mobile:wrap;--padding-top:0px;--padding-bottom:0px;--padding-left:0px;--padding-right:0px;}.elementor-3617 .elementor-element.elementor-element-1624a688{--display:flex;--flex-direction:row;--container-widget-width:calc( ( 1 - var( --container-widget-flex-grow ) ) * 100% );--container-widget-height:100%;--container-widget-flex-grow:1;--container-widget-align-self:stretch;--flex-wrap-mobile:wrap;--align-items:center;--padding-top:0px;--padding-bottom:0px;--padding-left:0px;--padding-right:0px;}.elementor-widget-text-editor{font-family:var( --e-global-typography-text-font-family ), Sans-serif;font-weight:var( --e-global-typography-text-font-weight );color:var( --e-global-color-text );}.elementor-widget-text-editor.elementor-drop-cap-view-stacked .elementor-drop-cap{background-color:var( --e-global-color-primary );}.elementor-widget-text-editor.elementor-drop-cap-view-framed .elementor-drop-cap, .elementor-widget-text-editor.elementor-drop-cap-view-default .elementor-drop-cap{color:var( --e-global-color-primary );border-color:var( --e-global-color-primary );}.elementor-3617 .elementor-element.elementor-element-7e6ff7a7{font-family:"Raleway", Sans-serif;font-size:14px;font-weight:600;color:#556DDD;}.elementor-widget-button .elementor-button{font-family:var( --e-global-typography-accent-font-family ), Sans-serif;font-weight:var( --e-global-typography-accent-font-weight );background-color:var( --e-global-color-accent );}.elementor-3617 .elementor-element.elementor-element-5958482 .elementor-button{font-family:"Raleway", Sans-serif;font-size:12px;font-weight:700;text-transform:uppercase;fill:#2A45AC;color:#2A45AC;background-color:#556DDD1A;border-radius:999px 999px 999px 999px;}.elementor-3617 .elementor-element.elementor-element-3a96a39a{--display:flex;--padding-top:0px;--padding-bottom:0px;--padding-left:0px;--padding-right:0px;}.elementor-widget-theme-post-title .elementor-heading-title{font-family:var( --e-global-typography-primary-font-family ), Sans-serif;font-weight:var( --e-global-typography-primary-font-weight );color:var( --e-global-color-primary );}.elementor-3617 .elementor-element.elementor-element-1b7a3ad4 .elementor-heading-title{font-family:"Raleway", Sans-serif;font-size:3.5vw;font-weight:800;}.elementor-3617 .elementor-element.elementor-element-72690949{--display:flex;--flex-direction:row;--container-widget-width:calc( ( 1 - var( --container-widget-flex-grow ) ) * 100% );--container-widget-height:100%;--container-widget-flex-grow:1;--container-widget-align-self:stretch;--flex-wrap-mobile:wrap;--align-items:center;--padding-top:0px;--padding-bottom:0px;--padding-left:0px;--padding-right:0px;}.elementor-widget-divider{--divider-color:var( --e-global-color-secondary );}.elementor-widget-divider .elementor-divider__text{color:var( --e-global-color-secondary );font-family:var( --e-global-typography-secondary-font-family ), Sans-serif;font-weight:var( --e-global-typography-secondary-font-weight );}.elementor-widget-divider.elementor-view-stacked .elementor-icon{background-color:var( --e-global-color-secondary );}.elementor-widget-divider.elementor-view-framed .elementor-icon, .elementor-widget-divider.elementor-view-default .elementor-icon{color:var( --e-global-color-secondary );border-color:var( --e-global-color-secondary );}.elementor-widget-divider.elementor-view-framed .elementor-icon, .elementor-widget-divider.elementor-view-default .elementor-icon svg{fill:var( --e-global-color-secondary );}.elementor-3617 .elementor-element.elementor-element-3f380cef{--divider-border-style:solid;--divider-color:#556DDD1A;--divider-border-width:2px;width:var( --container-widget-width, 28px );max-width:28px;--container-widget-width:28px;--container-widget-flex-grow:0;}.elementor-3617 .elementor-element.elementor-element-3f380cef .elementor-divider-separator{width:28px;}.elementor-3617 .elementor-element.elementor-element-3f380cef .elementor-divider{padding-block-start:15px;padding-block-end:15px;}.elementor-3617 .elementor-element.elementor-element-13c8296c{font-family:"Raleway", Sans-serif;font-size:14px;font-weight:600;color:#2A45AC;}.elementor-3617 .elementor-element.elementor-element-1723f4ba{--display:flex;--padding-top:50px;--padding-bottom:0px;--padding-left:0px;--padding-right:0px;}.elementor-widget-theme-post-featured-image .widget-image-caption{color:var( --e-global-color-text );font-family:var( --e-global-typography-text-font-family ), Sans-serif;font-weight:var( --e-global-typography-text-font-weight );}.elementor-3617 .elementor-element.elementor-element-772d7e1 img{border-radius:30px 30px 30px 30px;}.elementor-3617 .elementor-element.elementor-element-15975913{--display:flex;--gap:40px 40px;--row-gap:40px;--column-gap:40px;--padding-top:50px;--padding-bottom:080px;--padding-left:0px;--padding-right:0px;}.elementor-3617 .elementor-element.elementor-element-292d503{font-family:"Raleway", Sans-serif;font-size:18px;font-weight:400;color:#2B2B2B;}.elementor-3617 .elementor-element.elementor-element-88655fc{--display:flex;border-style:solid;--border-style:solid;border-width:0px 0px 0px 4px;--border-top-width:0px;--border-right-width:0px;--border-bottom-width:0px;--border-left-width:4px;border-color:#556DDD;--border-color:#556DDD;--border-radius:0px 0px 0px 0px;--padding-top:0px;--padding-bottom:0px;--padding-left:20px;--padding-right:0px;}.elementor-3617 .elementor-element.elementor-element-5490b12b{font-family:"Raleway", Sans-serif;font-size:20px;font-weight:600;color:#2A45AC;}.elementor-3617 .elementor-element.elementor-element-12a7cdbc{font-family:"Raleway", Sans-serif;font-size:18px;font-weight:400;color:#2B2B2B;}.elementor-widget-heading .elementor-heading-title{font-family:var( --e-global-typography-primary-font-family ), Sans-serif;font-weight:var( --e-global-typography-primary-font-weight );color:var( --e-global-color-primary );}.elementor-3617 .elementor-element.elementor-element-60e83e4 .elementor-heading-title{font-family:"Raleway", Sans-serif;font-size:24px;font-weight:700;color:#2A45AC;}.elementor-3617 .elementor-element.elementor-element-60e83e4{padding:20px 0px 0px 0px;}.elementor-3617 .elementor-element.elementor-element-675cfc79{font-family:"Raleway", Sans-serif;font-size:18px;font-weight:400;color:#2B2B2B;}.elementor-3617 .elementor-element.elementor-element-8facc23 .elementor-heading-title{font-family:"Raleway", Sans-serif;font-size:24px;font-weight:700;color:#2A45AC;}.elementor-3617 .elementor-element.elementor-element-8facc23{padding:20px 0px 0px 0px;}.elementor-3617 .elementor-element.elementor-element-7487c01{font-family:"Raleway", Sans-serif;font-size:18px;font-weight:400;color:#2B2B2B;}.elementor-3617 .elementor-element.elementor-element-0ea033d .elementor-heading-title{font-family:"Raleway", Sans-serif;font-size:24px;font-weight:700;color:#2A45AC;}.elementor-3617 .elementor-element.elementor-element-0ea033d{padding:20px 0px 0px 0px;}.elementor-3617 .elementor-element.elementor-element-a645691{font-family:"Raleway", Sans-serif;font-size:18px;font-weight:400;color:#2B2B2B;}.elementor-3617 .elementor-element.elementor-element-4be0758e{--display:flex;--gap:40px 40px;--row-gap:40px;--column-gap:40px;--padding-top:50px;--padding-bottom:080px;--padding-left:0px;--padding-right:0px;}.elementor-3617 .elementor-element.elementor-element-1e05c551{font-family:"Raleway", Sans-serif;font-size:18px;font-weight:400;color:#2B2B2B;}.elementor-3617 .elementor-element.elementor-element-6087beaf{--display:flex;--padding-top:0px;--padding-bottom:0px;--padding-left:0px;--padding-right:0px;}@media(max-width:1023px){.elementor-3617 .elementor-element.elementor-element-367d1308{--padding-top:100px;--padding-bottom:0px;--padding-left:030px;--padding-right:30px;}.elementor-3617 .elementor-element.elementor-element-1b7a3ad4 .elementor-heading-title{font-size:32px;}.elementor-3617 .elementor-element.elementor-element-72690949{--gap:10px 10px;--row-gap:10px;--column-gap:10px;}.elementor-3617 .elementor-element.elementor-element-1723f4ba{--padding-top:0px;--padding-bottom:0px;--padding-left:10px;--padding-right:010px;}.elementor-3617 .elementor-element.elementor-element-772d7e1{padding:30px 0px 0px 0px;}.elementor-3617 .elementor-element.elementor-element-15975913{--gap:20px 20px;--row-gap:20px;--column-gap:20px;--padding-top:50px;--padding-bottom:80px;--padding-left:020px;--padding-right:20px;}.elementor-3617 .elementor-element.elementor-element-292d503{font-size:16px;}.elementor-3617 .elementor-element.elementor-element-5490b12b{font-size:17px;}.elementor-3617 .elementor-element.elementor-element-12a7cdbc{font-size:16px;}.elementor-3617 .elementor-element.elementor-element-60e83e4 .elementor-heading-title{font-size:20px;}.elementor-3617 .elementor-element.elementor-element-8facc23 .elementor-heading-title{font-size:20px;}.elementor-3617 .elementor-element.elementor-element-0ea033d .elementor-heading-title{font-size:20px;}.elementor-3617 .elementor-element.elementor-element-4be0758e{--gap:20px 20px;--row-gap:20px;--column-gap:20px;--padding-top:50px;--padding-bottom:80px;--padding-left:020px;--padding-right:20px;}.elementor-3617 .elementor-element.elementor-element-1e05c551{font-size:16px;}}@media(min-width:1024px){.elementor-3617 .elementor-element.elementor-element-367d1308{--content-width:900px;}.elementor-3617 .elementor-element.elementor-element-1723f4ba{--content-width:900px;}.elementor-3617 .elementor-element.elementor-element-15975913{--content-width:760px;}.elementor-3617 .elementor-element.elementor-element-4be0758e{--content-width:760px;}}/* Start custom CSS for theme-post-featured-image, class: .elementor-element-772d7e1 */@media (max-width: 768px) {
  .elementor-3617 .elementor-element.elementor-element-772d7e1 img {
    height: 200px !important;

  }
}

.elementor-3617 .elementor-element.elementor-element-772d7e1 img {
  width: 100%;
  height: 480px;
  object-fit: cover;
  object-position: center; /* crop from center — change to 'top' if heads get cut off */
  display: block;
}/* End custom CSS */
/* Start Custom Fonts CSS */@font-face {
	font-family: 'Raleway';
	font-style: normal;
	font-weight: 300;
	font-display: auto;
	src: url('https://www.roadcover.co.za/wp-content/uploads/2026/04/Raleway-Light.ttf') format('truetype');
}
@font-face {
	font-family: 'Raleway';
	font-style: normal;
	font-weight: 100;
	font-display: auto;
	src: url('https://www.roadcover.co.za/wp-content/uploads/2026/04/Raleway-Thin.ttf') format('truetype');
}
@font-face {
	font-family: 'Raleway';
	font-style: normal;
	font-weight: 800;
	font-display: auto;
	src: url('https://www.roadcover.co.za/wp-content/uploads/2026/04/Raleway-ExtraBold.ttf') format('truetype');
}
@font-face {
	font-family: 'Raleway';
	font-style: normal;
	font-weight: 700;
	font-display: auto;
	src: url('https://www.roadcover.co.za/wp-content/uploads/2026/04/Raleway-Bold.ttf') format('truetype');
}
@font-face {
	font-family: 'Raleway';
	font-style: normal;
	font-weight: 600;
	font-display: auto;
	src: url('https://www.roadcover.co.za/wp-content/uploads/2026/04/Raleway-SemiBold.ttf') format('truetype');
}
@font-face {
	font-family: 'Raleway';
	font-style: normal;
	font-weight: 500;
	font-display: auto;
	src: url('https://www.roadcover.co.za/wp-content/uploads/2026/04/Raleway-Medium.ttf') format('truetype');
}
@font-face {
	font-family: 'Raleway';
	font-style: normal;
	font-weight: 400;
	font-display: auto;
	src: url('https://www.roadcover.co.za/wp-content/uploads/2026/04/Raleway-Regular.ttf') format('truetype');
}
/* End Custom Fonts CSS */</style>							<content:encoded><![CDATA[		<div data-elementor-type="wp-post" data-elementor-id="3617" class="elementor elementor-3617" data-elementor-post-type="post">
				<div class="elementor-element elementor-element-367d1308 e-flex e-con-boxed e-con e-parent" data-id="367d1308" data-element_type="container" data-e-type="container">
					<div class="e-con-inner">
		<div class="elementor-element elementor-element-b0655d0 e-con-full e-flex e-con e-child" data-id="b0655d0" data-element_type="container" data-e-type="container">
		<div class="elementor-element elementor-element-1624a688 e-con-full e-flex e-con e-child" data-id="1624a688" data-element_type="container" data-e-type="container">
				<div class="elementor-element elementor-element-7e6ff7a7 elementor-widget elementor-widget-text-editor" data-id="7e6ff7a7" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
									<a style="color: #374dc5; text-decoration: none;" href="https://www.roadcover.co.za/articles/">
← Back to Articles
</a>								</div>
				<div class="elementor-element elementor-element-5958482 elementor-widget elementor-widget-button" data-id="5958482" data-element_type="widget" data-e-type="widget" data-widget_type="button.default">
										<a class="elementor-button elementor-button-link elementor-size-sm" href="https://www.roadcover.co.za/articles/">
						<span class="elementor-button-content-wrapper">
									<span class="elementor-button-text">Road Safety &amp; Public Awareness</span>
					</span>
					</a>
								</div>
				</div>
				</div>
		<div class="elementor-element elementor-element-3a96a39a e-con-full e-flex e-con e-child" data-id="3a96a39a" data-element_type="container" data-e-type="container">
				<div class="elementor-element elementor-element-1b7a3ad4 elementor-widget elementor-widget-theme-post-title elementor-page-title elementor-widget-heading" data-id="1b7a3ad4" data-element_type="widget" data-e-type="widget" data-widget_type="theme-post-title.default">
					<h1 class="elementor-heading-title elementor-size-default">Discovery Health vs RAF: Supreme Court of Appeal Rejects RAF’s Refusal to Pay Medical Expenses</h1>				</div>
				</div>
		<div class="elementor-element elementor-element-72690949 e-con-full e-flex e-con e-child" data-id="72690949" data-element_type="container" data-e-type="container">
				<div class="elementor-element elementor-element-3f380cef elementor-widget__width-initial elementor-widget-divider--view-line elementor-widget elementor-widget-divider" data-id="3f380cef" data-element_type="widget" data-e-type="widget" data-widget_type="divider.default">
							<div class="elementor-divider">
			<span class="elementor-divider-separator">
						</span>
		</div>
						</div>
				<div class="elementor-element elementor-element-13c8296c elementor-widget elementor-widget-text-editor" data-id="13c8296c" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
									Nokuthula Ngcobo								</div>
				</div>
					</div>
				</div>
		<div class="elementor-element elementor-element-1723f4ba e-flex e-con-boxed e-con e-parent" data-id="1723f4ba" data-element_type="container" data-e-type="container">
					<div class="e-con-inner">
				<div class="elementor-element elementor-element-772d7e1 elementor-widget elementor-widget-theme-post-featured-image elementor-widget-image" data-id="772d7e1" data-element_type="widget" data-e-type="widget" data-widget_type="theme-post-featured-image.default">
															<img fetchpriority="high" decoding="async" width="800" height="450" src="https://www.roadcover.co.za/wp-content/uploads/2026/10/Doctor-and-Patient-Discuss-Recovery-1024x576.png" class="attachment-large size-large wp-image-3628" alt="Doctor consulting a patient wearing a wrist brace, illustrating the Discovery Health vs RAF medical expenses dispute." srcset="https://www.roadcover.co.za/wp-content/uploads/2026/10/Doctor-and-Patient-Discuss-Recovery-1024x576.png 1024w, https://www.roadcover.co.za/wp-content/uploads/2026/10/Doctor-and-Patient-Discuss-Recovery-300x169.png 300w, https://www.roadcover.co.za/wp-content/uploads/2026/10/Doctor-and-Patient-Discuss-Recovery-768x432.png 768w, https://www.roadcover.co.za/wp-content/uploads/2026/10/Doctor-and-Patient-Discuss-Recovery-1536x864.png 1536w, https://www.roadcover.co.za/wp-content/uploads/2026/10/Doctor-and-Patient-Discuss-Recovery-e1792490960975.png 1066w" sizes="(max-width: 800px) 100vw, 800px" title="Discovery Health vs RAF: Supreme Court of Appeal Rejects RAF’s Refusal to Pay Medical Expenses 1">															</div>
					</div>
				</div>
		<div class="elementor-element elementor-element-15975913 e-flex e-con-boxed e-con e-parent" data-id="15975913" data-element_type="container" data-e-type="container">
					<div class="e-con-inner">
				<div class="elementor-element elementor-element-292d503 elementor-widget elementor-widget-text-editor" data-id="292d503" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
									<p><span class="TextRun SCXW182536645 BCX0" lang="EN-ZA" xml:lang="EN-ZA" data-contrast="auto"><span class="NormalTextRun SCXW182536645 BCX0">The Supreme Court of Appeal (SCA) has ordered the Road Accident Fund (RAF) to stop denying compensation for <a title="Roadcover Claims" href="https://www.roadcover.co.za/claims-process/" target="_blank" rel="noopener"><strong>past medical expenses</strong></a> on the grounds that those costs have already been covered by a claimant’s medical aid scheme.</span></span><span class="EOP Selected SCXW182536645 BCX0" data-ccp-props="{}"> </span></p>								</div>
		<div class="elementor-element elementor-element-88655fc e-con-full e-flex e-con e-child" data-id="88655fc" data-element_type="container" data-e-type="container">
				<div class="elementor-element elementor-element-5490b12b elementor-widget elementor-widget-text-editor" data-id="5490b12b" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
									<p><span class="TextRun SCXW8484212 BCX0" lang="EN-ZA" xml:lang="EN-ZA" data-contrast="auto"><span class="NormalTextRun SCXW8484212 BCX0">The ruling, delivered on 16 October 2026, follows an appeal by Discovery Health after the RAF continued to reject claims for<a title="Roadcover Claims" href="https://www.roadcover.co.za/claims-process/" target="_blank" rel="noopener"><strong> past medical expenses</strong></a> despite an earlier court order declaring its original directive unlawful.</span></span><span class="EOP Selected SCXW8484212 BCX0" data-ccp-props="{}"> </span></p>								</div>
				</div>
				<div class="elementor-element elementor-element-12a7cdbc elementor-widget elementor-widget-text-editor" data-id="12a7cdbc" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
									<p><span class="TextRun SCXW143962240 BCX0" lang="EN-ZA" xml:lang="EN-ZA" data-contrast="auto"><span class="NormalTextRun SCXW143962240 BCX0">The SCA found that the RAF and its former chief executive officer, Collins Letsoalo, had breached the earlier court order and their constitutional duty to </span><span class="NormalTextRun SCXW143962240 BCX0">comply with</span><span class="NormalTextRun SCXW143962240 BCX0"> it. The appeal was upheld with costs. </span></span><a class="Hyperlink SCXW143962240 BCX0" href="https://www3.saflii.org/za/cases/ZASCA/2026/140.html" target="_blank" rel="noreferrer noopener"><span class="TextRun Underlined SCXW143962240 BCX0" lang="EN-ZA" xml:lang="EN-ZA" data-contrast="none"><span class="NormalTextRun SCXW143962240 BCX0" data-ccp-charstyle="Hyperlink">Read the judgment here</span></span></a><span class="TextRun SCXW143962240 BCX0" lang="EN-ZA" xml:lang="EN-ZA" data-contrast="auto"><span class="NormalTextRun SCXW143962240 BCX0">.</span></span><span class="EOP Selected SCXW143962240 BCX0" data-ccp-props="{}"> </span></p>								</div>
				<div class="elementor-element elementor-element-60e83e4 elementor-widget elementor-widget-heading" data-id="60e83e4" data-element_type="widget" data-e-type="widget" data-widget_type="heading.default">
					<h3 class="elementor-heading-title elementor-size-default">Why did Discovery take the RAF to court? </h3>				</div>
				<div class="elementor-element elementor-element-675cfc79 elementor-widget elementor-widget-text-editor" data-id="675cfc79" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
									<p><span data-contrast="auto">The dispute began in August 2022, when the RAF issued a directive instructing claims officers to reject claims for <a title="Roadcover Claims" href="https://www.roadcover.co.za/claims-process/" target="_blank" rel="noopener"><strong>past medical expenses</strong></a> where a medical aid scheme had already paid for the treatment.</span><span data-ccp-props="{}"> </span></p><p><span data-contrast="auto">The RAF&#8217;s position was that claimants had not personally incurred the expenses and therefore had no loss to recover from the Fund.</span><span data-ccp-props="{}"> </span></p><p><span data-contrast="auto">Discovery challenged the directive, arguing that medical aid payments should not reduce the compensation owed to accident victims. In October 2022, the High Court in Pretoria declared the directive unlawful and prohibited the RAF from implementing it.</span><span data-ccp-props="{}"> </span></p><p><span data-contrast="auto">The RAF&#8217;s subsequent applications for leave to appeal were unsuccessful. However, it issued further directives in April and November 2023 that continued to restrict payments for medical expenses already covered by medical aid schemes.</span><span data-ccp-props="{}"> </span></p><p><span data-contrast="auto">Discovery then approached the High Court again, arguing that the RAF was circumventing the earlier order.</span><span data-ccp-props="{}"> </span></p><p><span data-contrast="auto">In December 2024, a full bench of the High Court dismissed Discovery&#8217;s application. The company subsequently appealed to the SCA.</span></p>								</div>
				<div class="elementor-element elementor-element-8facc23 elementor-widget elementor-widget-heading" data-id="8facc23" data-element_type="widget" data-e-type="widget" data-widget_type="heading.default">
					<h3 class="elementor-heading-title elementor-size-default">What did the Supreme Court of Appeal decide? </h3>				</div>
				<div class="elementor-element elementor-element-7487c01 elementor-widget elementor-widget-text-editor" data-id="7487c01" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
									<p><span data-contrast="auto">The SCA found that the RAF&#8217;s later directives contradicted the earlier court order and could not lawfully be used to avoid complying with it.</span><span data-ccp-props="{}"> </span></p><p><span data-contrast="auto">The court reaffirmed that the Road Accident Fund Act does not exclude <a title="Roadcover Claims" href="https://www.roadcover.co.za/claims-process/" target="_blank" rel="noopener"><strong>past medical expenses</strong></a> simply because a claimant&#8217;s medical aid scheme has paid them. It also rejected the argument that reimbursement arrangements between medical aid schemes and their members amount to an agreement to share RAF compensation, which could exclude liability under the Act.</span><span data-ccp-props="{}"> </span></p><p><span data-contrast="auto">The court ordered the RAF and Letsoalo to stop implementing the disputed directives immediately. It also prohibited them from refusing to compensate claimants for medical expenses on the basis that these expenses had been or would be paid by medical aid schemes.</span><span data-ccp-props="{}"> </span></p><p><span data-contrast="auto">The RAF was given 14 days to take the necessary steps to comply with the judgment and report its compliance to the court.</span><span data-ccp-props="{}"> </span></p>								</div>
				<div class="elementor-element elementor-element-0ea033d elementor-widget elementor-widget-heading" data-id="0ea033d" data-element_type="widget" data-e-type="widget" data-widget_type="heading.default">
					<h3 class="elementor-heading-title elementor-size-default">What does the ruling mean for RAF claimants? </h3>				</div>
				<div class="elementor-element elementor-element-a645691 elementor-widget elementor-widget-text-editor" data-id="a645691" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
									<p><span data-contrast="auto">The judgment confirms that having medical aid cover does not, in itself, remove a claimant&#8217;s right to claim proven <a title="Roadcover Claims" href="https://www.roadcover.co.za/claims-process/" target="_blank" rel="noopener"><strong>past medical expenses</strong></a> from the RAF.</span><span data-ccp-props="{}"> </span></p><p><span data-contrast="auto">Medical aid schemes commonly require members to reimburse them when they recover expenses from the RAF. The ruling therefore has implications for both accident victims and schemes seeking reimbursement for treatment they have funded.</span><span data-ccp-props="{}"> </span></p><p><span data-contrast="auto">However, claimants must still establish their entitlement to compensation and <a title="RAF Documents" href="https://www.roadcover.co.za/documents-for-a-raf-claim-what-you-need/" target="_blank" rel="noopener"><strong>prove the expenses</strong></a> forming part of their claims. The judgment does not mean every medical expense will automatically be paid.</span><span data-ccp-props="{}"> </span></p><p><span data-contrast="auto">For people pursuing compensation after a motor vehicle accident, the ruling highlights the importance of understanding which expenses can be included in a RAF claim. </span><span data-ccp-props="{}"> </span></p><p><span data-contrast="auto">For RoadCover members, this strengthens the legal framework within which their qualifying medical expenses can be pursued, helping ensure that legitimate claims are not unfairly reduced or rejected solely because a medical aid scheme has paid.</span><span data-ccp-props="{}"> </span></p><p><span data-contrast="auto">RoadCover manages qualifying RAF claims from start to finish, including the legal and administrative requirements involved and ensures <strong>claimants receive 100% of their settlement</strong>.</span><span data-ccp-props="{}"> </span></p>								</div>
					</div>
				</div>
		<div class="elementor-element elementor-element-4be0758e e-flex e-con-boxed e-con e-parent" data-id="4be0758e" data-element_type="container" data-e-type="container">
					<div class="e-con-inner">
				<div class="elementor-element elementor-element-1e05c551 elementor-widget elementor-widget-text-editor" data-id="1e05c551" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
									<p><strong>Disclaimer:</strong> <em>The information provided in this article was correct at the time of publication and is intended for general guidance only. It is subject to change without notice as laws, regulations and membership terms evolve. RoadCover and the Road Accident Fund operate within dynamic legal frameworks and readers should verify current requirements before making decisions or entering into agreements.</em></p>								</div>
					</div>
				</div>
		<div class="elementor-element elementor-element-6087beaf e-flex e-con-boxed e-con e-parent" data-id="6087beaf" data-element_type="container" data-e-type="container">
					<div class="e-con-inner">
				<div class="elementor-element elementor-element-44899e6c elementor-widget elementor-widget-shortcode" data-id="44899e6c" data-element_type="widget" data-e-type="widget" data-widget_type="shortcode.default">
					<style id="elementor-post-2657">.elementor-2657 .elementor-element.elementor-element-1b2aafda{--display:flex;--gap:0px 0px;--row-gap:0px;--column-gap:0px;--padding-top:80px;--padding-bottom:100px;--padding-left:120px;--padding-right:120px;}@media(max-width:1023px){.elementor-2657 .elementor-element.elementor-element-1b2aafda{--padding-top:80px;--padding-bottom:0100px;--padding-left:30px;--padding-right:30px;}}/* Start custom CSS for container, class: .elementor-element-1b2aafda */.grecaptcha-badge { visibility: hidden; }/* End custom CSS */</style>		<div class="elementor-shortcode">		<div data-elementor-type="container" data-elementor-id="2657" class="elementor elementor-2657" data-elementor-post-type="elementor_library">
				<div class="elementor-element elementor-element-1b2aafda e-con-full e-flex e-con e-parent" data-id="1b2aafda" data-element_type="container" data-e-type="container">
				<div class="elementor-element elementor-element-4e06f177 elementor-widget elementor-widget-html" data-id="4e06f177" data-element_type="widget" data-e-type="widget" data-widget_type="html.default">
					<link href="https://fonts.googleapis.com/css2?family=Raleway:wght@400;500;600;700;800&display=swap" rel="stylesheet">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.0/css/all.min.css">

<script src="https://www.google.com/recaptcha/api.js?render=6LdwjNosAAAAAK5qrEyD0FybwyViVZOqamPK1Fnr" async defer></script>

<style>
/* ===============================================================
   RoadCover — Pricing + Onboarding Form
   All selectors scoped to #rc-pricing to avoid host-page bleed.
   PLN codes live on data-plan-code attributes of .rc-btn elements.
   ================================================================ */

#rc-pricing *, #rc-pricing *::before, #rc-pricing *::after {
    box-sizing: border-box;
}
#rc-pricing {
    font-family: 'Raleway', sans-serif;
    width: 100%;
    color: #1f2937;

    /* Plan-card palette — scoped to the embed, never :root, so the
       host page's own custom properties are left untouched. */
    --rc-blue:      #2B4FD4;
    --rc-blue-dark: #1A3399;
    --rc-gold:      #F5C842;
    --rc-gold-dark: #D4A800;
    --rc-text:      #0D1B3E;
    --rc-muted:     #6B7280;
    --rc-border:    #E4E9F8;
    --rc-success:   #16A34A;
}
.rc-wrapper {
    display: flex;
    flex-direction: column;
    gap: 48px;
}

/* ── Header ─────────────────────────────────────────────────────── */
.rc-header { text-align: center; }
.rc-header h2 {
    font-size: 30px;
    font-weight: 800;
    margin: 0 0 8px;
    color: #111827;
}
.rc-header p {
    font-size: 15px;
    color: #6b7280;
    margin: 0;
}

/* ── Single Plan Card ───────────────────────────────────────────── */
/* One responsive card serves both desktop and mobile — there is no
   longer a separate table/card pair to keep in sync. */
.rc-plan-card {
    position: relative;
    background: #fff;
    border: 1px solid var(--rc-border);
    border-radius: 18px;
    overflow: hidden;
    box-shadow: 0 10px 30px rgba(13, 27, 62, 0.08);
}

.rc-plan-header {
    position: relative;
    overflow: hidden;
    background: linear-gradient(135deg, var(--rc-blue) 0%, var(--rc-blue-dark) 100%);
    padding: 32px 28px 30px;
    text-align: center;
}
.rc-plan-header::before {
    content: '';
    position: absolute;
    width: 220px;
    height: 220px;
    right: -90px;
    top: -70px;
    border-radius: 50%;
    background: rgba(255, 255, 255, 0.08);
}
.rc-plan-header::after {
    content: '';
    position: absolute;
    width: 140px;
    height: 140px;
    left: -50px;
    bottom: -50px;
    border-radius: 50%;
    background: rgba(245, 200, 66, 0.14);
}
.rc-plan-header > * { position: relative; z-index: 2; }

.rc-plan-name {
    font-size: 11px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.1em;
    color: rgba(255, 255, 255, 0.65);
    margin-bottom: 6px;
}
.rc-plan-price {
    font-size: 44px;
    font-weight: 900;
    color: var(--rc-gold);
    line-height: 1.1;
}
.rc-plan-price-unit {
    font-size: 14px;
    font-weight: 600;
    color: rgba(255, 255, 255, 0.6);
}
.rc-plan-subprice {
    margin-top: 6px;
    font-size: 12px;
    font-weight: 600;
    color: var(--rc-gold);
    min-height: 16px;
}

.rc-plan-rows { padding: 6px 28px; }
.rc-plan-row {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    padding: 14px 0;
    border-bottom: 1px solid var(--rc-border);
}
.rc-plan-row:last-child { border-bottom: none; }
.rc-plan-row-label {
    font-size: 13.5px;
    font-weight: 600;
    color: var(--rc-text);
}
.rc-plan-row-icon {
    width: 22px;
    height: 22px;
    flex-shrink: 0;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    background: #ECFDF3;
    color: var(--rc-success);
}
.rc-plan-row-icon svg { width: 13px; height: 13px; display: block; }

.rc-plan-cta-block { padding: 20px 28px 26px; }
.rc-plan-cta-hint {
    text-align: center;
    margin-top: 10px;
    font-size: 11px;
    color: var(--rc-muted);
}

/* ── Plan Select Button (JS hook: .rc-btn) ──────────────────────── */
.rc-btn {
    width: 100%;
    padding: 13px 18px;
    border: none;
    border-radius: 10px;
    background: var(--rc-gold);
    color: var(--rc-text);
    font-family: inherit;
    font-size: 14px;
    font-weight: 800;
    letter-spacing: 0.01em;
    cursor: pointer;
    transition: background 0.15s, transform 0.1s;
}
.rc-btn:hover   { background: var(--rc-gold-dark); }
.rc-btn:active  { transform: scale(0.99); }
.rc-btn.rc-selected { background: var(--rc-gold-dark); }

/* ── Form Section ───────────────────────────────────────────────── */
#rc-form-section { display: none; }
#rc-form-section.rc-visible {
    display: block;
    animation: rc-fadein 0.22s ease;
}
@keyframes rc-fadein {
    from { opacity: 0; transform: translateY(10px); }
    to   { opacity: 1; transform: translateY(0); }
}

.rc-form-inner {
    display: flex;
    flex-direction: column;
    gap: 22px;
    background: linear-gradient(135deg, #2A45AC, #1f358a);
    border-radius: 12px;
    padding: 40px;
}

.rc-selected-badge {
    display: inline-block;
    background: rgba(255, 255, 255, 0.15);
    color: #FFD84D;
    font-size: 13px;
    font-weight: 700;
    border-radius: 6px;
    padding: 7px 13px;
}

.rc-form-title {
    font-size: 20px;
    font-weight: 800;
    color: #fff;
    margin: 0;
}

/* Field grid — first two fields sit side-by-side */
.rc-field-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 14px;
}
.rc-field-full { grid-column: 1 / -1; }

.rc-field {
    display: flex;
    flex-direction: column;
    gap: 5px;
}
.rc-field-label {
    font-size: 11px;
    font-weight: 700;
    color: rgba(255, 255, 255, 0.7);
    text-transform: uppercase;
    letter-spacing: 0.05em;
}

/* Icon floats over the input; no separate column, no column border */
.rc-input-row {
    position: relative;
    border: 1px solid #6f7ec1;
    border-radius: 8px;
    background: #3d54ac;
    transition: border-color 0.15s, box-shadow 0.15s;
}
.rc-input-row:focus-within {
    border-color: #a0aee0;
    box-shadow: 0 0 0 3px rgba(111, 126, 193, 0.3);
}
.rc-input-row:has(.invalid) { border-color: #FF3B30; }
.rc-input-row:has(.invalid):focus-within {
    box-shadow: 0 0 0 3px rgba(129, 12, 12, 0.25);
}

.rc-input-icon {
    position: absolute;
    left: 14px;
    top: 50%;
    transform: translateY(-50%);
    color: rgba(255, 255, 255, 0.55);
    font-size: 14px;
    pointer-events: none;
}

.rc-input {
    display: block;
    width: 100%;
    padding: 11px 14px 11px 44px !important;
    border: 0;
    box-shadow: none;
    border-radius: 8px;
    background: transparent;
    font-family: inherit;
    font-size: 14px;
    color: #fff;
    -webkit-appearance: none;
    appearance: none;
    outline: none;
}
#rc-pricing .rc-input::placeholder { color: rgb(248, 248, 248); }
.rc-input.invalid { /* border shown via :has on .rc-input-row */ }

/* Native select chevron */
select.rc-input {
    padding-right: 36px;
    background-color: #3d54ac;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='7' viewBox='0 0 12 7'%3E%3Cpolyline points='1,1 6,6 11,1' fill='none' stroke='%23a0aee0' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
    background-repeat: no-repeat;
    background-position: right 12px center;
    cursor: pointer;
    color: #fff;
}

.rc-field-error {
    font-size: 12px;
    color: #FF3B30;
    margin: 0;
    line-height: 1.4;
}

/* T&C checkbox */
.rc-terms {
    display: flex;
    align-items: center;
    gap: 10px;
    font-size: 14px;
    color: rgba(255, 255, 255, 0.85);
    cursor: pointer;
    user-select: none;
}
.rc-terms input[type="checkbox"] {
    width: 17px;
    height: 17px;
    cursor: pointer;
    flex-shrink: 0;
    accent-color: #FFD84D;
}
.rc-terms.invalid { color: #FF3B30; }
.rc-terms.invalid input[type="checkbox"] {
    outline: 2px solid #FF3B30;
    outline-offset: 2px;
    border-radius: 2px;
}

.rc-submit:disabled,
.rc-submit:disabled:hover {
    background: #FFD84D; /* same as default */
    cursor: not-allowed;
}
/* Submit button */
.rc-submit {
    width: 100%;
    padding: 14px 20px;
    border: none;
    border-radius: 10px;
    background: #FFD84D;
    color: #1f358a;
    font-family: inherit;
    font-size: 15px;
    font-weight: 700;
    cursor: pointer;
    transition: background 0.15s, transform 0.1s;
    letter-spacing: 0.01em;
}
.rc-submit:hover:not([disabled]) { background: #f5cc35; }
.rc-submit:active:not([disabled]) { transform: scale(0.99); }
.rc-submit[disabled] { opacity: 0.5; cursor: not-allowed; }

.rc-form-error {
    font-size: 13px;
    color: #FF3B30;
    margin: 0;
    line-height: 1.5;
}

.rc-recaptcha-notice {
    font-size: 11px;
    color: rgba(255, 255, 255, 0.45);
    margin: 0;
    line-height: 1.5;
    text-align: center;
}
.rc-recaptcha-notice a {
    color: rgba(255, 255, 255, 0.55);
    text-decoration: underline;
}

/* ── Billing Toggle ─────────────────────────────────────────────── */
/* Sits on the dark gradient header, so it is styled for a dark ground. */
.rc-billing-toggle {
    display: inline-flex;
    background: rgba(255, 255, 255, 0.12);
    border: 1.5px solid rgba(255, 255, 255, 0.2);
    border-radius: 999px;
    padding: 3px;
    gap: 2px;
    margin-bottom: 20px;
}
.rc-toggle-opt {
    padding: 7px 20px;
    border: none;
    border-radius: 999px;
    background: transparent;
    color: rgba(255, 255, 255, 0.75);
    font-family: inherit;
    font-size: 12.5px;
    font-weight: 700;
    cursor: pointer;
    transition: background 0.2s ease, color 0.2s ease;
    white-space: nowrap;
    line-height: 1;
}
.rc-toggle-opt:hover:not(.rc-toggle-active) {
    background: rgba(255, 255, 255, 0.08);
}
.rc-toggle-opt.rc-toggle-active {
    background: var(--rc-gold);
    color: var(--rc-text);
}

.rc-save-badge {
    display: inline-block;
    margin-left: 6px;
    padding: 1px 6px;
    border-radius: 999px;
    font-size: 9.5px;
    font-weight: 800;
    color: rgba(255, 255, 255, 0.85);
    background: rgba(255, 255, 255, 0.16);
}
/* On the gold active pill, white-on-gold is unreadable — invert it. */
.rc-toggle-active .rc-save-badge {
    color: var(--rc-text);
    background: rgba(13, 27, 62, 0.12);
}

/* ── Responsive ─────────────────────────────────────────────────── */
@media (max-width: 700px) {
    #rc-pricing     { padding: 0px 0px; }
    .rc-wrapper     { gap: 32px; }
    .rc-plan-header { padding: 28px 20px 26px; }
    .rc-plan-price  { font-size: 38px; }
    .rc-plan-rows   { padding: 6px 20px; }
    .rc-plan-cta-block { padding: 18px 20px 22px; }
    .rc-field-grid  { grid-template-columns: 1fr; }
    .rc-field-full  { grid-column: 1; }
    .rc-form-inner  { padding: 24px 20px; }
    .rc-header h2   { font-size: 24px; }
}
</style>

<!-- ================================================================
     PRICING TABLE + ONBOARDING FORM
     ================================================================ -->
<div id="rc-pricing">
  <div class="rc-wrapper">

    <!-- Single plan card — one responsive card for desktop and mobile -->
    <div class="rc-plan-card" data-plan-key="RoadCover">

      <div class="rc-plan-header">
        <div class="rc-billing-toggle" role="group" aria-label="Billing period">
          <button type="button" class="rc-toggle-opt rc-toggle-active" data-billing="monthly">Monthly</button>
          <button type="button" class="rc-toggle-opt" data-billing="annual">Annual <span class="rc-save-badge">Save 6%</span></button>
        </div>

        <div class="rc-plan-name">RoadCover</div>
        <div class="rc-plan-price"><span class="rc-plan-price-val">R49</span><span class="rc-plan-price-unit">/mo</span></div>
        <div class="rc-plan-subprice" hidden></div>
      </div>

      <div class="rc-plan-rows">
        <div class="rc-plan-row">
          <span class="rc-plan-row-label">RAF Claim Support</span>
          <span class="rc-plan-row-icon" role="img" aria-label="Included">
            <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><polyline points="20 6 9 17 4 12"></polyline></svg>
          </span>
        </div>
        <div class="rc-plan-row">
          <span class="rc-plan-row-label">Legal Expertise</span>
          <span class="rc-plan-row-icon" role="img" aria-label="Included">
            <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><polyline points="20 6 9 17 4 12"></polyline></svg>
          </span>
        </div>
      </div>

      <div class="rc-plan-cta-block">
        <button class="rc-btn"
                data-plan="RoadCover"
                data-plan-code="RC49"
                data-price="49.00 /Month">Select RoadCover &#8594;</button>
        <div class="rc-plan-cta-hint">No fees. 100% of your payout.</div>
      </div>

    </div><!-- /.rc-plan-card -->

    <!-- Form: hidden until a plan is selected -->
    <div id="rc-form-section">
      <form id="roadcover-form" novalidate>

        <!-- product_code is set programmatically on plan button click -->
        <input type="hidden" name="product_code" id="cover-input">
        <input type="hidden" name="form_id"   value="9a3d492">
        <input type="hidden" name="form_name" value="Get RoadCover">

        <div class="rc-form-inner">

          <div id="selectedPlan" class="rc-selected-badge">Selected: &#8212;</div>
          <p class="rc-form-title">Enter your details</p>

          <div class="rc-field-grid">

            <!-- Row 1: name -->
            <div class="rc-field">
              <label class="rc-field-label" for="rc-first-name">First name *</label>
              <div class="rc-input-row">
                <i class="fa-solid fa-user rc-input-icon" aria-hidden="true"></i>
                <input class="rc-input" type="text" id="rc-first-name"
                       name="first_name" required maxlength="60" placeholder="First name">
              </div>
            </div>

            <div class="rc-field">
              <label class="rc-field-label" for="rc-last-name">Last name *</label>
              <div class="rc-input-row">
                <i class="fa-solid fa-user rc-input-icon" aria-hidden="true"></i>
                <input class="rc-input" type="text" id="rc-last-name"
                       name="last_name" required maxlength="60" placeholder="Last name">
              </div>
            </div>

            <!-- Row 2: identity -->
            <div class="rc-field">
              <label class="rc-field-label" for="rc-id">ID number *</label>
              <div class="rc-input-row">
                <i class="fa-solid fa-id-card rc-input-icon" aria-hidden="true"></i>
                <input class="rc-input" type="text" id="rc-id"
                       name="identificationnr" required pattern="[0-9]{13}"
                       inputmode="numeric" maxlength="13"
                       placeholder="13-digit SA ID number">
              </div>
            </div>

            <div class="rc-field">
              <label class="rc-field-label" for="rc-gender">Gender *</label>
              <div class="rc-input-row">
                <i class="fa-solid fa-venus-mars rc-input-icon" aria-hidden="true"></i>
                <select class="rc-input" id="rc-gender" name="gender" required>
                  <option value="">Select&hellip;</option>
                  <option value="1">Male</option>
                  <option value="2">Female</option>
                </select>
              </div>
            </div>

            <!-- Row 3: contact -->
            <div class="rc-field">
              <label class="rc-field-label" for="rc-email">Email *</label>
              <div class="rc-input-row">
                <i class="fa-solid fa-envelope rc-input-icon" aria-hidden="true"></i>
                <input class="rc-input" type="email" id="rc-email"
                       name="email" required maxlength="254"
                       placeholder="you@example.com">
              </div>
            </div>

            <div class="rc-field">
              <label class="rc-field-label" for="rc-mobile">Mobile *</label>
              <div class="rc-input-row">
                <i class="fa-solid fa-phone rc-input-icon" aria-hidden="true"></i>
                <input class="rc-input" type="tel" id="rc-mobile"
                       name="mobile" required inputmode="tel"
                       placeholder="0XXXXXXXXX or +27XXXXXXXXX">
              </div>
            </div>

            <!-- Row 4: optional -->
            <div class="rc-field rc-field-full">
              <label class="rc-field-label" for="rc-promo">Promo code</label>
              <div class="rc-input-row">
                <i class="fa-solid fa-tag rc-input-icon" aria-hidden="true"></i>
                <input class="rc-input" type="text" id="rc-promo"
                       name="promo_code" maxlength="32" placeholder="Optional">
              </div>
            </div>

          </div><!-- /.rc-field-grid -->

          <label class="rc-terms">
            <input type="checkbox" name="I accept the Terms and Conditions." required>
            <span>I accept the Terms and Conditions.</span>
          </label>

          <button type="submit" id="submit-btn" class="rc-submit">Continue</button>
          <p id="form-error" class="rc-form-error" hidden></p>

          <p class="rc-recaptcha-notice">This site is protected by reCAPTCHA and the Google <a href="https://policies.google.com/privacy" target="_blank" rel="noopener noreferrer">Privacy Policy</a> and <a href="https://policies.google.com/terms" target="_blank" rel="noopener noreferrer">Terms of Service</a> apply.</p>

        </div><!-- /.rc-form-inner -->
      </form>
    </div><!-- /#rc-form-section -->

  </div><!-- /.rc-wrapper -->
</div><!-- /#rc-pricing -->

<script>
(function () {
    var form           = document.getElementById('roadcover-form');
    var errEl          = document.getElementById('form-error');
    var submitBtn      = document.getElementById('submit-btn');
    var coverInput     = document.getElementById('cover-input');
    var formSection    = document.getElementById('rc-form-section');
    var selectedPlanEl = document.getElementById('selectedPlan');
    var pricing        = document.getElementById('rc-pricing');

    var currentPrice   = '';
    var isAnnual       = false;
    var currentPlanBtn = null;

    // ── Plan + billing data ───────────────────────────────────────────────────
    var planData = {
        'RoadCover': {
            monthly: { priceVal: 'R49', unit: '/mo', code: 'RC49',         priceStr: '49.00 /Month',  subprice: '' },
            annual:  { priceVal: 'R550', unit: '/yr', code: 'PRD-CB838AEF', priceStr: '550.00 /Year', subprice: '~R46/mo' }
        }
    };

    // ── Apply billing mode to all price displays and button codes ─────────────
    function applyBilling() {
        var mode = isAnnual ? 'annual' : 'monthly';

        // Plan card price display
        pricing.querySelectorAll('.rc-plan-card[data-plan-key]').forEach(function (card) {
            var d = planData[card.dataset.planKey][mode];
            card.querySelector('.rc-plan-price-val').textContent  = d.priceVal;
            card.querySelector('.rc-plan-price-unit').textContent = d.unit;
            var sub = card.querySelector('.rc-plan-subprice');
            sub.textContent = d.subprice;
            sub.hidden      = !d.subprice;
        });

        // Update data-plan-code on all buttons so selection highlighting still works
        pricing.querySelectorAll('.rc-btn').forEach(function (btn) {
            var key = btn.dataset.plan;
            if (!planData[key]) return;
            btn.dataset.planCode = planData[key][mode].code;
            btn.dataset.price    = planData[key][mode].priceStr;
        });

        // If a plan was already selected, refresh the hidden input + badge + button label
        if (currentPlanBtn) {
            var key     = currentPlanBtn.dataset.plan;
            var d       = planData[key][mode];
            var billing = isAnnual ? 'Annual' : 'Monthly';
            coverInput.value           = d.code;
            currentPrice               = d.priceStr;
            selectedPlanEl.textContent = 'Selected: ' + key + ' (' + billing + ')';
            updateButton();
        }
    }

    // ── Helpers (mirrored in n8n Code node — keep in sync) ───────────────────

    function clean(v) {
        if (v === null || v === undefined) return '';
        var s = String(v);
        s = s.replace(/[\x00-\x08\x0B\x0C\x0E-\x1F\x7F]/g, '');
        s = s.replace(/<script\b[^>]*>[\s\S]*?<\/script\s*>/gi, '');
        s = s.replace(/<\/?[a-zA-Z][^>]*>/g, '');
        s = s.replace(/javascript\s*:/gi, '');
        s = s.replace(/\s+/g, ' ').trim();
        return s;
    }

    function luhnValid(idStr) {
        var sum = 0;
        for (var i = 0; i < 13; i++) {
            var n = parseInt(idStr.charAt(i), 10);
            if (i % 2 === 1) { n *= 2; if (n > 9) n -= 9; }
            sum += n;
        }
        return sum % 10 === 0;
    }

    // Returns { ok: true } or { ok: false, field, message }
    function validate(data) {
        var required = {
            product_code:       'Please select a cover plan.',
            first_name:         'First name is required.',
            last_name:          'Last name is required.',
            email:              'Email is required.',
            mobile:             'Mobile number is required.',
            identificationnr:   'ID number is required.',
            gender:             'Please select your gender.'
        };
        for (var k in required) {
            if (!data[k]) return { ok: false, field: k, message: required[k] };
        }

        if (data.first_name.length > 60)
            return { ok: false, field: 'first_name', message: 'First name is too long (max 60).' };
        if (data.last_name.length > 60)
            return { ok: false, field: 'last_name', message: 'Last name is too long (max 60).' };

        var emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
        if (!emailRegex.test(data.email))
            return { ok: false, field: 'email', message: 'Please enter a valid email address.' };
        if (data.email.length > 254)
            return { ok: false, field: 'email', message: 'Email is too long.' };

        var mobileRegex = /^(\+27|0)[0-9]{9}$/;
        if (!mobileRegex.test(data.mobile))
            return { ok: false, field: 'mobile', message: 'Mobile must be 10 digits starting with 0, or +27 followed by 9 digits.' };

        var genderNum = Number(data.gender);
        if (genderNum !== 1 && genderNum !== 2)
            return { ok: false, field: 'gender', message: 'Please select your gender.' };

        if (!/^[0-9]{13}$/.test(data.identificationnr))
            return { ok: false, field: 'identificationnr', message: 'ID number must be exactly 13 digits.' };

        var yy        = parseInt(data.identificationnr.substring(0, 2), 10);
        var mm        = parseInt(data.identificationnr.substring(2, 4), 10);
        var dd        = parseInt(data.identificationnr.substring(4, 6), 10);
        var now       = new Date();
        var currentYY = now.getFullYear() % 100;
        var fullYear  = (yy > currentYY) ? (1900 + yy) : (2000 + yy);
        var dob       = new Date(fullYear, mm - 1, dd);
        var dobValid  =
            dob.getFullYear() === fullYear &&
            dob.getMonth()    === (mm - 1) &&
            dob.getDate()     === dd       &&
            dob <= now;
        if (!dobValid)
            return { ok: false, field: 'identificationnr', message: 'The first 6 digits of your ID number are not a valid date of birth.' };

        var genderDigits = parseInt(data.identificationnr.substring(6, 10), 10);
        var idGender     = genderDigits >= 5000 ? 1 : 2;
        if (idGender !== genderNum) {
            var expected = idGender === 1 ? 'Male' : 'Female';
            return { ok: false, field: 'identificationnr',
                     message: 'The selected gender does not match your ID number (ID indicates ' + expected + ').' };
        }

        if (!luhnValid(data.identificationnr))
            return { ok: false, field: 'identificationnr', message: 'ID number checksum is invalid. Please check the number.' };

        return { ok: true };
    }

    // ── UI helpers ────────────────────────────────────────────────────────────

    function clearFieldErrors() {
        form.querySelectorAll('.invalid').forEach(function (el) { el.classList.remove('invalid'); });
        form.querySelectorAll('.rc-field-error').forEach(function (el) { el.remove(); });
    }

    function showFieldError(fieldName, message) {
        // product_code is a hidden input — surface as a form-level error
        if (fieldName === 'product_code') {
            showFormError(message);
            return;
        }
        var input = form.querySelector('[name="' + fieldName + '"]');
        if (!input) return;
        input.classList.add('invalid');
        var field = input.closest('.rc-field') || input.parentElement;
        var span  = field.querySelector('.rc-field-error');
        if (!span) {
            span = document.createElement('span');
            span.className = 'rc-field-error';
            field.appendChild(span);
        }
        span.textContent = message;
        input.focus();
    }

    function showFormError(message) {
        errEl.textContent = message;
        errEl.hidden = false;
    }

    function hideFormError() {
        errEl.hidden = true;
        errEl.textContent = '';
    }

    function updateButton() {
        submitBtn.textContent = currentPrice ? ('Continue • R' + currentPrice) : 'Continue';
        submitBtn.disabled    = false;
    }

    // ── Collect & sanitise ────────────────────────────────────────────────────

    function collectData() {
        var fd = new FormData(form);
        return {
            product_code:       clean(fd.get('product_code')),
            first_name:         clean(fd.get('first_name')),
            last_name:          clean(fd.get('last_name')),
            email:              clean(fd.get('email')).toLowerCase(),
            mobile:             clean(fd.get('mobile')),
            identificationnr:   clean(fd.get('identificationnr')),
            gender:             clean(fd.get('gender')),
            promo_code:         clean(fd.get('promo_code'))
        };
    }

    // ── Billing toggle ────────────────────────────────────────────────────────

    pricing.querySelectorAll('.rc-toggle-opt').forEach(function (btn) {
        btn.addEventListener('click', function () {
            if (btn.dataset.billing === (isAnnual ? 'annual' : 'monthly')) return;
            isAnnual = !isAnnual;
            pricing.querySelectorAll('.rc-toggle-opt').forEach(function (b) {
                b.classList.toggle('rc-toggle-active', b.dataset.billing === (isAnnual ? 'annual' : 'monthly'));
            });
            applyBilling();
        });
    });

    // ── Plan selection ────────────────────────────────────────────────────────

    pricing.querySelectorAll('.rc-btn').forEach(function (planBtn) {
        planBtn.addEventListener('click', function () {
            var code    = planBtn.dataset.planCode;
            var plan    = planBtn.dataset.plan;
            var price   = planBtn.dataset.price || '';
            var billing = isAnnual ? 'Annual' : 'Monthly';

            currentPlanBtn = planBtn;

            // Highlight every button sharing the same plan code (desktop + mobile pair)
            pricing.querySelectorAll('.rc-btn').forEach(function (b) {
                b.classList.toggle('rc-selected', b.dataset.planCode === code);
            });

            coverInput.value           = code;
            currentPrice               = price;
            selectedPlanEl.textContent = 'Selected: ' + plan + ' (' + billing + ')';
            updateButton();

            formSection.classList.add('rc-visible');
            formSection.scrollIntoView({ behavior: 'smooth', block: 'nearest' });

            clearFieldErrors();
            hideFormError();
        });
    });

    // ── Initialise billing display ────────────────────────────────────────────
    applyBilling();

    // ── Clear errors on edit ──────────────────────────────────────────────────

    form.addEventListener('input', function (e) {
        if (e.target.classList.contains('invalid')) {
            e.target.classList.remove('invalid');
            var f = e.target.closest('.rc-field');
            if (f) { var s = f.querySelector('.rc-field-error'); if (s) s.remove(); }
        }
        hideFormError();
    });

    form.addEventListener('change', function (e) {
        if (e.target.classList.contains('invalid')) {
            e.target.classList.remove('invalid');
            var f = e.target.closest('.rc-field');
            if (f) { var s = f.querySelector('.rc-field-error'); if (s) s.remove(); }
        }
        if (e.target.type === 'checkbox' && e.target.checked) {
            var label = e.target.closest('label.rc-terms');
            if (label) label.classList.remove('invalid');
            hideFormError();
        }
    });

    // ── Form submit ───────────────────────────────────────────────────────────

    form.addEventListener('submit', async function (e) {
        e.preventDefault();
        hideFormError();
        clearFieldErrors();

        var data   = collectData();
        var result = validate(data);
        if (!result.ok) {
            showFieldError(result.field, result.message);
            return;
        }

        var termsBox = form.querySelector('input[type="checkbox"][required]');
        if (termsBox && !termsBox.checked) {
            var termsLabel = termsBox.closest('label.rc-terms');
            if (termsLabel) termsLabel.classList.add('invalid');
            termsBox.focus();
            showFormError('Please accept the Terms and Conditions to continue.');
            return;
        }

        submitBtn.disabled    = true;
        submitBtn.textContent = 'Processing…';

        // ── reCAPTCHA v3 — must complete before the network request ──────────
        var recaptchaToken = '';
        try {
            recaptchaToken = await new Promise(function (resolve, reject) {
                if (typeof grecaptcha === 'undefined') { reject(new Error('not loaded')); return; }
                grecaptcha.ready(function () {
                    grecaptcha.execute('6LdwjNosAAAAAK5qrEyD0FybwyViVZOqamPK1Fnr', { action: 'submit' })
                        .then(resolve).catch(reject);
                });
            });
        } catch (_) {
            showFormError('Security check could not complete. Please disable any ad blockers and try again.');
            updateButton();
            return;
        }

        try {
            // Send sanitised data so the backend receives cleaned values
            var params = new URLSearchParams();
            for (var k in data) params.append(k, data[k]);
            params.append('form_id',   form.querySelector('[name="form_id"]').value   || '');
            params.append('form_name', form.querySelector('[name="form_name"]').value || '');
            params.append('I accept the Terms and Conditions.', 'on');
            params.append('recaptcha_token', recaptchaToken);

            var res     = await fetch('https://n8n.roadcover.co.za/webhook/form', {
                method:  'POST',
                headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
                body:    params.toString()
            });
            var json    = await res.json();
            var payload = Array.isArray(json) ? json[0] : json;
            var paymentUrl = (payload && payload.data && payload.data.payment_url)
                           || (payload && payload.payment_url);

            if (res.ok && payload && payload.success && paymentUrl) {
                window.location.href = paymentUrl;
            } else if (payload && (payload.error_code === 'DUPLICATE_MEMBER' || payload.error_code === 'DUPLICATE_ACTIVE_MEMBER')) {
                var supportEmail = (payload && payload.support_email) || 'info@roadcover.co.za';
                var refNumber = payload && payload.reference_number;
                showFieldError(
                    (payload && payload.field) || 'identificationnr',
                    'This ID number is already registered on the membership system.'
                );
                var bannerMsg = 'This ID number is already registered as an active member. Please contact support for assistance ' + supportEmail + '.';
                if (refNumber) {
                    bannerMsg += ' Your reference number is ' + refNumber + '.';
                }
                showFormError(bannerMsg);
                updateButton();
            } else {
                var message = (payload && payload.message) || 'Something went wrong. Please try again.';
                if (payload && payload.field) {
                    showFieldError(payload.field, message);
                } else {
                    showFormError(message);
                }
                updateButton();
            }
        } catch (_) {
            showFormError('Could not reach the service. Please try again.');
            updateButton();
        }
    });

})();
</script>
				</div>
				</div>
				</div>
		</div>
						</div>
					</div>
				</div>
				</div>
		]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Claiming for a deceased family member: Can you claim from the RAF if your loved one died in a motor vehicle accident? </title>
		<link>https://www.roadcover.co.za/raf-loss-of-support/</link>
		
		<dc:creator><![CDATA[Nokuthula Ngcobo]]></dc:creator>
		<pubDate>Wed, 14 Oct 2026 11:46:01 +0000</pubDate>
				<category><![CDATA[article]]></category>
		<guid isPermaLink="false">https://www.roadcover.co.za/?p=3454</guid>

					<description><![CDATA[Lost a loved one in a motor vehicle accident? Find out who may qualify for an RAF loss of support claim, which funeral expenses may be covered, and what documents families need to begin the claims process.]]></description>
			<style id="elementor-post-3454">.elementor-3454 .elementor-element.elementor-element-25794514{--display:flex;--padding-top:220px;--padding-bottom:0px;--padding-left:0112px;--padding-right:0112px;}.elementor-3454 .elementor-element.elementor-element-3b144e14{--display:flex;--flex-direction:row;--container-widget-width:initial;--container-widget-height:100%;--container-widget-flex-grow:1;--container-widget-align-self:stretch;--flex-wrap-mobile:wrap;--padding-top:0px;--padding-bottom:0px;--padding-left:0px;--padding-right:0px;}.elementor-3454 .elementor-element.elementor-element-477ece26{--display:flex;--flex-direction:row;--container-widget-width:calc( ( 1 - var( --container-widget-flex-grow ) ) * 100% );--container-widget-height:100%;--container-widget-flex-grow:1;--container-widget-align-self:stretch;--flex-wrap-mobile:wrap;--align-items:center;--padding-top:0px;--padding-bottom:0px;--padding-left:0px;--padding-right:0px;}.elementor-widget-text-editor{font-family:var( --e-global-typography-text-font-family ), Sans-serif;font-weight:var( --e-global-typography-text-font-weight );color:var( --e-global-color-text );}.elementor-widget-text-editor.elementor-drop-cap-view-stacked .elementor-drop-cap{background-color:var( --e-global-color-primary );}.elementor-widget-text-editor.elementor-drop-cap-view-framed .elementor-drop-cap, .elementor-widget-text-editor.elementor-drop-cap-view-default .elementor-drop-cap{color:var( --e-global-color-primary );border-color:var( --e-global-color-primary );}.elementor-3454 .elementor-element.elementor-element-7ed5007c{font-family:"Raleway", Sans-serif;font-size:14px;font-weight:600;color:#556DDD;}.elementor-widget-button .elementor-button{font-family:var( --e-global-typography-accent-font-family ), Sans-serif;font-weight:var( --e-global-typography-accent-font-weight );background-color:var( --e-global-color-accent );}.elementor-3454 .elementor-element.elementor-element-21c04bfe .elementor-button{font-family:"Raleway", Sans-serif;font-size:12px;font-weight:700;text-transform:uppercase;fill:#2A45AC;color:#2A45AC;background-color:#556DDD1A;border-radius:999px 999px 999px 999px;}.elementor-3454 .elementor-element.elementor-element-b684992{--display:flex;--padding-top:0px;--padding-bottom:0px;--padding-left:0px;--padding-right:0px;}.elementor-widget-theme-post-title .elementor-heading-title{font-family:var( --e-global-typography-primary-font-family ), Sans-serif;font-weight:var( --e-global-typography-primary-font-weight );color:var( --e-global-color-primary );}.elementor-3454 .elementor-element.elementor-element-23529b00 .elementor-heading-title{font-family:"Raleway", Sans-serif;font-size:3.5vw;font-weight:800;}.elementor-3454 .elementor-element.elementor-element-66695d72{--display:flex;--flex-direction:row;--container-widget-width:calc( ( 1 - var( --container-widget-flex-grow ) ) * 100% );--container-widget-height:100%;--container-widget-flex-grow:1;--container-widget-align-self:stretch;--flex-wrap-mobile:wrap;--align-items:center;--padding-top:0px;--padding-bottom:0px;--padding-left:0px;--padding-right:0px;}.elementor-widget-divider{--divider-color:var( --e-global-color-secondary );}.elementor-widget-divider .elementor-divider__text{color:var( --e-global-color-secondary );font-family:var( --e-global-typography-secondary-font-family ), Sans-serif;font-weight:var( --e-global-typography-secondary-font-weight );}.elementor-widget-divider.elementor-view-stacked .elementor-icon{background-color:var( --e-global-color-secondary );}.elementor-widget-divider.elementor-view-framed .elementor-icon, .elementor-widget-divider.elementor-view-default .elementor-icon{color:var( --e-global-color-secondary );border-color:var( --e-global-color-secondary );}.elementor-widget-divider.elementor-view-framed .elementor-icon, .elementor-widget-divider.elementor-view-default .elementor-icon svg{fill:var( --e-global-color-secondary );}.elementor-3454 .elementor-element.elementor-element-11d606ce{--divider-border-style:solid;--divider-color:#556DDD1A;--divider-border-width:2px;width:var( --container-widget-width, 28px );max-width:28px;--container-widget-width:28px;--container-widget-flex-grow:0;}.elementor-3454 .elementor-element.elementor-element-11d606ce .elementor-divider-separator{width:28px;}.elementor-3454 .elementor-element.elementor-element-11d606ce .elementor-divider{padding-block-start:15px;padding-block-end:15px;}.elementor-3454 .elementor-element.elementor-element-24a0daed{font-family:"Raleway", Sans-serif;font-size:14px;font-weight:600;color:#2A45AC;}.elementor-3454 .elementor-element.elementor-element-4d6872a8{--display:flex;--padding-top:50px;--padding-bottom:0px;--padding-left:0px;--padding-right:0px;}.elementor-widget-theme-post-featured-image .widget-image-caption{color:var( --e-global-color-text );font-family:var( --e-global-typography-text-font-family ), Sans-serif;font-weight:var( --e-global-typography-text-font-weight );}.elementor-3454 .elementor-element.elementor-element-3afb1cb4 img{border-radius:30px 30px 30px 30px;}.elementor-3454 .elementor-element.elementor-element-6eba1e45{--display:flex;--gap:40px 40px;--row-gap:40px;--column-gap:40px;--padding-top:50px;--padding-bottom:080px;--padding-left:0px;--padding-right:0px;}.elementor-3454 .elementor-element.elementor-element-58a452f1{font-family:"Raleway", Sans-serif;font-size:18px;font-weight:400;color:#2B2B2B;}.elementor-3454 .elementor-element.elementor-element-55370873{--display:flex;border-style:solid;--border-style:solid;border-width:0px 0px 0px 4px;--border-top-width:0px;--border-right-width:0px;--border-bottom-width:0px;--border-left-width:4px;border-color:#556DDD;--border-color:#556DDD;--border-radius:0px 0px 0px 0px;--padding-top:0px;--padding-bottom:0px;--padding-left:20px;--padding-right:0px;}.elementor-3454 .elementor-element.elementor-element-4d5bafe3{font-family:"Raleway", Sans-serif;font-size:20px;font-weight:600;color:#2A45AC;}.elementor-3454 .elementor-element.elementor-element-3cfd203f{font-family:"Raleway", Sans-serif;font-size:18px;font-weight:400;color:#2B2B2B;}.elementor-widget-heading .elementor-heading-title{font-family:var( --e-global-typography-primary-font-family ), Sans-serif;font-weight:var( --e-global-typography-primary-font-weight );color:var( --e-global-color-primary );}.elementor-3454 .elementor-element.elementor-element-5fa5c08d .elementor-heading-title{font-family:"Raleway", Sans-serif;font-size:24px;font-weight:700;color:#2A45AC;}.elementor-3454 .elementor-element.elementor-element-5fa5c08d{padding:20px 0px 0px 0px;}.elementor-3454 .elementor-element.elementor-element-6e625859{font-family:"Raleway", Sans-serif;font-size:18px;font-weight:400;color:#2B2B2B;}.elementor-3454 .elementor-element.elementor-element-242f84b .elementor-heading-title{font-family:"Raleway", Sans-serif;font-size:24px;font-weight:700;color:#2A45AC;}.elementor-3454 .elementor-element.elementor-element-242f84b{padding:20px 0px 0px 0px;}.elementor-3454 .elementor-element.elementor-element-712f2b0{font-family:"Raleway", Sans-serif;font-size:18px;font-weight:400;color:#2B2B2B;}.elementor-3454 .elementor-element.elementor-element-c0f0945 .elementor-heading-title{font-family:"Raleway", Sans-serif;font-size:24px;font-weight:700;color:#2A45AC;}.elementor-3454 .elementor-element.elementor-element-c0f0945{padding:20px 0px 0px 0px;}.elementor-3454 .elementor-element.elementor-element-07e883a{font-family:"Raleway", Sans-serif;font-size:18px;font-weight:400;color:#2B2B2B;}.elementor-3454 .elementor-element.elementor-element-5551989 .elementor-heading-title{font-family:"Raleway", Sans-serif;font-size:24px;font-weight:700;color:#2A45AC;}.elementor-3454 .elementor-element.elementor-element-5551989{padding:20px 0px 0px 0px;}.elementor-3454 .elementor-element.elementor-element-5501695{font-family:"Raleway", Sans-serif;font-size:18px;font-weight:400;color:#2B2B2B;}.elementor-3454 .elementor-element.elementor-element-4ad1607 .elementor-heading-title{font-family:"Raleway", Sans-serif;font-size:24px;font-weight:700;color:#2A45AC;}.elementor-3454 .elementor-element.elementor-element-4ad1607{padding:20px 0px 0px 0px;}.elementor-3454 .elementor-element.elementor-element-b916f39{font-family:"Raleway", Sans-serif;font-size:18px;font-weight:400;color:#2B2B2B;}.elementor-3454 .elementor-element.elementor-element-5c90bdcb{--display:flex;--gap:40px 40px;--row-gap:40px;--column-gap:40px;--padding-top:50px;--padding-bottom:080px;--padding-left:0px;--padding-right:0px;}.elementor-3454 .elementor-element.elementor-element-11060377{font-family:"Raleway", Sans-serif;font-size:18px;font-weight:400;color:#2B2B2B;}.elementor-3454 .elementor-element.elementor-element-510084a6{--display:flex;--padding-top:0px;--padding-bottom:0px;--padding-left:0px;--padding-right:0px;}@media(max-width:1023px){.elementor-3454 .elementor-element.elementor-element-25794514{--padding-top:100px;--padding-bottom:0px;--padding-left:030px;--padding-right:30px;}.elementor-3454 .elementor-element.elementor-element-23529b00 .elementor-heading-title{font-size:32px;}.elementor-3454 .elementor-element.elementor-element-66695d72{--gap:10px 10px;--row-gap:10px;--column-gap:10px;}.elementor-3454 .elementor-element.elementor-element-4d6872a8{--padding-top:0px;--padding-bottom:0px;--padding-left:10px;--padding-right:010px;}.elementor-3454 .elementor-element.elementor-element-3afb1cb4{padding:30px 0px 0px 0px;}.elementor-3454 .elementor-element.elementor-element-6eba1e45{--gap:20px 20px;--row-gap:20px;--column-gap:20px;--padding-top:50px;--padding-bottom:80px;--padding-left:020px;--padding-right:20px;}.elementor-3454 .elementor-element.elementor-element-58a452f1{font-size:16px;}.elementor-3454 .elementor-element.elementor-element-4d5bafe3{font-size:17px;}.elementor-3454 .elementor-element.elementor-element-3cfd203f{font-size:16px;}.elementor-3454 .elementor-element.elementor-element-5fa5c08d .elementor-heading-title{font-size:20px;}.elementor-3454 .elementor-element.elementor-element-242f84b .elementor-heading-title{font-size:20px;}.elementor-3454 .elementor-element.elementor-element-c0f0945 .elementor-heading-title{font-size:20px;}.elementor-3454 .elementor-element.elementor-element-5551989 .elementor-heading-title{font-size:20px;}.elementor-3454 .elementor-element.elementor-element-4ad1607 .elementor-heading-title{font-size:20px;}.elementor-3454 .elementor-element.elementor-element-5c90bdcb{--gap:20px 20px;--row-gap:20px;--column-gap:20px;--padding-top:50px;--padding-bottom:80px;--padding-left:020px;--padding-right:20px;}.elementor-3454 .elementor-element.elementor-element-11060377{font-size:16px;}}@media(min-width:1024px){.elementor-3454 .elementor-element.elementor-element-25794514{--content-width:900px;}.elementor-3454 .elementor-element.elementor-element-4d6872a8{--content-width:900px;}.elementor-3454 .elementor-element.elementor-element-6eba1e45{--content-width:760px;}.elementor-3454 .elementor-element.elementor-element-5c90bdcb{--content-width:760px;}}/* Start custom CSS for theme-post-featured-image, class: .elementor-element-3afb1cb4 */@media (max-width: 768px) {
  .elementor-3454 .elementor-element.elementor-element-3afb1cb4 img {
    height: 200px !important;

  }
}

.elementor-3454 .elementor-element.elementor-element-3afb1cb4 img {
  width: 100%;
  height: 480px;
  object-fit: cover;
  object-position: center; /* crop from center — change to 'top' if heads get cut off */
  display: block;
}/* End custom CSS */</style>							<content:encoded><![CDATA[		<div data-elementor-type="wp-post" data-elementor-id="3454" class="elementor elementor-3454" data-elementor-post-type="post">
				<div class="elementor-element elementor-element-25794514 e-flex e-con-boxed e-con e-parent" data-id="25794514" data-element_type="container" data-e-type="container">
					<div class="e-con-inner">
		<div class="elementor-element elementor-element-3b144e14 e-con-full e-flex e-con e-child" data-id="3b144e14" data-element_type="container" data-e-type="container">
		<div class="elementor-element elementor-element-477ece26 e-con-full e-flex e-con e-child" data-id="477ece26" data-element_type="container" data-e-type="container">
				<div class="elementor-element elementor-element-7ed5007c elementor-widget elementor-widget-text-editor" data-id="7ed5007c" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
									<a style="color: #374dc5; text-decoration: none;" href="https://www.roadcover.co.za/articles/">
← Back to Articles
</a>								</div>
				<div class="elementor-element elementor-element-21c04bfe elementor-widget elementor-widget-button" data-id="21c04bfe" data-element_type="widget" data-e-type="widget" data-widget_type="button.default">
										<a class="elementor-button elementor-button-link elementor-size-sm" href="https://www.roadcover.co.za/articles/" id="back_button">
						<span class="elementor-button-content-wrapper">
									<span class="elementor-button-text">Road Safety &amp; Public Awareness</span>
					</span>
					</a>
								</div>
				</div>
				</div>
		<div class="elementor-element elementor-element-b684992 e-con-full e-flex e-con e-child" data-id="b684992" data-element_type="container" data-e-type="container">
				<div class="elementor-element elementor-element-23529b00 elementor-widget elementor-widget-theme-post-title elementor-page-title elementor-widget-heading" data-id="23529b00" data-element_type="widget" data-e-type="widget" data-widget_type="theme-post-title.default">
					<h1 class="elementor-heading-title elementor-size-default">Claiming for a deceased family member: Can you claim from the RAF if your loved one died in a motor vehicle accident? </h1>				</div>
				</div>
		<div class="elementor-element elementor-element-66695d72 e-con-full e-flex e-con e-child" data-id="66695d72" data-element_type="container" data-e-type="container">
				<div class="elementor-element elementor-element-11d606ce elementor-widget__width-initial elementor-widget-divider--view-line elementor-widget elementor-widget-divider" data-id="11d606ce" data-element_type="widget" data-e-type="widget" data-widget_type="divider.default">
							<div class="elementor-divider">
			<span class="elementor-divider-separator">
						</span>
		</div>
						</div>
				<div class="elementor-element elementor-element-24a0daed elementor-widget elementor-widget-text-editor" data-id="24a0daed" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
									Nokuthula Ngcobo								</div>
				</div>
					</div>
				</div>
		<div class="elementor-element elementor-element-4d6872a8 e-flex e-con-boxed e-con e-parent" data-id="4d6872a8" data-element_type="container" data-e-type="container">
					<div class="e-con-inner">
				<div class="elementor-element elementor-element-3afb1cb4 elementor-widget elementor-widget-theme-post-featured-image elementor-widget-image" data-id="3afb1cb4" data-element_type="widget" data-e-type="widget" data-widget_type="theme-post-featured-image.default">
															<img decoding="async" width="600" height="300" src="https://www.roadcover.co.za/wp-content/uploads/2026/10/BYY_If_you_were_financially_dependent_on_someone_who_died_in__371d9bb6-3a97-490f-820e-70cc291311ad_2.jpg" class="attachment-large size-large wp-image-3479" alt="Claiming for a deceased family member: Can you claim from the RAF if your loved one died in a motor vehicle accident? " srcset="https://www.roadcover.co.za/wp-content/uploads/2026/10/BYY_If_you_were_financially_dependent_on_someone_who_died_in__371d9bb6-3a97-490f-820e-70cc291311ad_2.jpg 600w, https://www.roadcover.co.za/wp-content/uploads/2026/10/BYY_If_you_were_financially_dependent_on_someone_who_died_in__371d9bb6-3a97-490f-820e-70cc291311ad_2-300x150.jpg 300w" sizes="(max-width: 600px) 100vw, 600px" title="Claiming for a deceased family member: Can you claim from the RAF if your loved one died in a motor vehicle accident?  2">															</div>
					</div>
				</div>
		<div class="elementor-element elementor-element-6eba1e45 e-flex e-con-boxed e-con e-parent" data-id="6eba1e45" data-element_type="container" data-e-type="container">
					<div class="e-con-inner">
				<div class="elementor-element elementor-element-58a452f1 elementor-widget elementor-widget-text-editor" data-id="58a452f1" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
									<p><span class="TextRun SCXW215998771 BCX0" lang="EN-ZA" xml:lang="EN-ZA" data-contrast="auto"><span class="NormalTextRun SCXW215998771 BCX0">Losing a loved one in a motor vehicle accident can leave families facing both grief and financial uncertainty. If the deceased supported your household, the loss of that income can affect everyday expenses, </span><span class="NormalTextRun SCXW215998771 BCX0">housin</span><span class="NormalTextRun SCXW215998771 BCX0">g</span><span class="NormalTextRun SCXW215998771 BCX0"> and your children’s education.</span></span><span class="EOP Selected SCXW215998771 BCX0" data-ccp-props="{}"> </span></p>								</div>
		<div class="elementor-element elementor-element-55370873 e-con-full e-flex e-con e-child" data-id="55370873" data-element_type="container" data-e-type="container">
				<div class="elementor-element elementor-element-4d5bafe3 elementor-widget elementor-widget-text-editor" data-id="4d5bafe3" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
									<p><span class="TextRun SCXW249646435 BCX0" lang="EN-ZA" xml:lang="EN-ZA" data-contrast="auto"><span class="NormalTextRun SCXW249646435 BCX0">If you were financially dependent on someone who died in a motor vehicle accident, you may qualify to claim compensation from the Road Accident Fund (RAF) for loss of support. You may also be able to claim qualifying funeral expenses.</span> <span class="NormalTextRun SCXW249646435 BCX0">However, </span><span class="NormalTextRun SCXW249646435 BCX0">one is only entitled to compensation</span><span class="NormalTextRun SCXW249646435 BCX0"> if another party was legally responsible for the accident. If your loved one was solely at fault, the RAF does not cover dependants’ claims. Where fault is shared, compensation may be reduced in proportion to the deceased’s responsibility.</span></span><span class="EOP Selected SCXW249646435 BCX0" data-ccp-props="{}"> </span></p>								</div>
				</div>
				<div class="elementor-element elementor-element-3cfd203f elementor-widget elementor-widget-text-editor" data-id="3cfd203f" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
									<p><span class="TextRun SCXW182430620 BCX0" lang="EN-ZA" xml:lang="EN-ZA" data-contrast="auto"><span class="NormalTextRun SpellingErrorV2Themed SCXW182430620 BCX0">RoadCover</span><span class="NormalTextRun SCXW182430620 BCX0"> has </span><span class="NormalTextRun SCXW182430620 BCX0">handled RAF claims for 21 years</span><span class="NormalTextRun SCXW182430620 BCX0">, navigating the legal and administrative requirements of</span><span class="NormalTextRun SCXW182430620 BCX0"> pursuing compensation. For families claiming after the death of a loved one, understanding the process is particularly important because a death claim involves proving financial dependency, </span><span class="NormalTextRun SCXW182430620 BCX0">establishing</span><span class="NormalTextRun SCXW182430620 BCX0"> the relationship to the deceased, and gathering records of lost income. </span><span class="NormalTextRun SpellingErrorV2Themed SCXW182430620 BCX0">RoadCover</span><span class="NormalTextRun SCXW182430620 BCX0"> manages qualifying claims from start to finish, and members whose claims are successfully settled receive </span></span><span class="TextRun SCXW182430620 BCX0" lang="EN-ZA" xml:lang="EN-ZA" data-contrast="auto"><span class="NormalTextRun SCXW182430620 BCX0">100% of the settlement, with no </span><span class="NormalTextRun SCXW182430620 BCX0">expenses or </span><span class="NormalTextRun SCXW182430620 BCX0">fees deducted.</span></span><span class="EOP Selected SCXW182430620 BCX0" data-ccp-props="{}"> </span></p>								</div>
				<div class="elementor-element elementor-element-5fa5c08d elementor-widget elementor-widget-heading" data-id="5fa5c08d" data-element_type="widget" data-e-type="widget" data-widget_type="heading.default">
					<h3 class="elementor-heading-title elementor-size-default">Can you claim from the RAF if your loved one died in a motor vehicle accident? </h3>				</div>
				<div class="elementor-element elementor-element-6e625859 elementor-widget elementor-widget-text-editor" data-id="6e625859" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
									<p><span data-contrast="auto">Yes. You may qualify for compensation if your loved one died as a result of a motor vehicle accident and you were financially dependent on them.</span><span data-ccp-props="{}"> </span></p><p><span data-contrast="auto">A loss of support claim covers the financial contribution the deceased would have continued making had they survived. Depending on your circumstances, this may include past and future loss of support, provided the negligent driving of another person caused the motor vehicle accident.</span><span data-ccp-props="{}"> </span></p><p><span data-contrast="auto">To establish your claim, you will need evidence of your relationship with the deceased, the financial support you received, and the deceased’s income. A marriage certificate, birth certificate, or other relevant documentation may be required. Children and other eligible dependants who relied on the deceased financially may also have grounds for a claim.</span><span data-ccp-props="{}"> </span></p>								</div>
				<div class="elementor-element elementor-element-242f84b elementor-widget elementor-widget-heading" data-id="242f84b" data-element_type="widget" data-e-type="widget" data-widget_type="heading.default">
					<h3 class="elementor-heading-title elementor-size-default">Loss of support for children </h3>				</div>
				<div class="elementor-element elementor-element-712f2b0 elementor-widget elementor-widget-text-editor" data-id="712f2b0" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
									<p><span data-contrast="auto">If your child depended financially on a parent who died in a motor vehicle accident, you may lodge a loss of support claim on the child’s behalf.</span><span data-ccp-props="{}"> </span></p><p><span data-contrast="auto">If the child is a minor, a parent, legal guardian, or other authorised representative will generally need to act on their behalf. Documentation establishing the child’s relationship to the deceased — such as an unabridged birth certificate — will be required. If you are acting as a legal guardian, the RAF may request a court order or other proof of authority.</span><span data-ccp-props="{}"> </span></p><p><span data-contrast="auto">You will also need evidence of the deceased’s earnings and financial contributions to the household. The child’s circumstances and the support they would have received are relevant when assessing the claim. The amount payable depends on the evidence provided and the financial loss established.</span><span data-ccp-props="{}"> </span></p>								</div>
				<div class="elementor-element elementor-element-c0f0945 elementor-widget elementor-widget-heading" data-id="c0f0945" data-element_type="widget" data-e-type="widget" data-widget_type="heading.default">
					<h3 class="elementor-heading-title elementor-size-default">Documents required for a death claim </h3>				</div>
				<div class="elementor-element elementor-element-07e883a elementor-widget elementor-widget-text-editor" data-id="07e883a" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
									<p><span data-contrast="auto">The RAF’s </span><a title="Official Claim Documentation" href="https://www.raf.co.za/Claims/Documents/Claims%20forms_%20new.pdf" target="_blank" rel="noopener"><span data-contrast="none">official claim documentation</span></a><span data-contrast="auto"> sets out the supporting records required. These may include:</span><span data-ccp-props="{}"> </span></p><ul><li aria-setsize="-1" data-leveltext="" data-font="Symbol" data-listid="4" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;&quot;,&quot;469777815&quot;:&quot;multilevel&quot;}" data-aria-posinset="1" data-aria-level="1"><span data-contrast="auto">Certified copy of the deceased’s identity document</span><span data-ccp-props="{}"> </span></li></ul><ul><li aria-setsize="-1" data-leveltext="" data-font="Symbol" data-listid="4" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;&quot;,&quot;469777815&quot;:&quot;multilevel&quot;}" data-aria-posinset="2" data-aria-level="1"><span data-contrast="auto">Your identity document and those of other claimants</span><span data-ccp-props="{}"> </span></li></ul><ul><li aria-setsize="-1" data-leveltext="" data-font="Symbol" data-listid="4" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;&quot;,&quot;469777815&quot;:&quot;multilevel&quot;}" data-aria-posinset="3" data-aria-level="1"><span data-contrast="auto">Death certificate</span><span data-ccp-props="{}"> </span></li></ul><ul><li aria-setsize="-1" data-leveltext="" data-font="Symbol" data-listid="4" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;&quot;,&quot;469777815&quot;:&quot;multilevel&quot;}" data-aria-posinset="4" data-aria-level="1"><span data-contrast="auto">Proof of relationship to the deceased (marriage certificate, customary marriage certificate, or unabridged birth certificate)</span><span data-ccp-props="{}"> </span></li></ul><ul><li aria-setsize="-1" data-leveltext="" data-font="Symbol" data-listid="4" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;&quot;,&quot;469777815&quot;:&quot;multilevel&quot;}" data-aria-posinset="5" data-aria-level="1"><span data-contrast="auto">Official accident report, police docket, and sketch plan</span><span data-ccp-props="{}"> </span></li></ul><ul><li aria-setsize="-1" data-leveltext="" data-font="Symbol" data-listid="4" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;&quot;,&quot;469777815&quot;:&quot;multilevel&quot;}" data-aria-posinset="6" data-aria-level="1"><span data-contrast="auto">Post</span>‑<span data-contrast="auto">mortem report or inquest record confirming the death resulted from the collision</span><span data-ccp-props="{}"> </span></li></ul><ul><li aria-setsize="-1" data-leveltext="" data-font="Symbol" data-listid="4" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;&quot;,&quot;469777815&quot;:&quot;multilevel&quot;}" data-aria-posinset="7" data-aria-level="1"><span data-contrast="auto">Proof of the deceased’s income (employer’s certificate, payslips, tax records)</span><span data-ccp-props="{}"> </span></li></ul><ul><li aria-setsize="-1" data-leveltext="" data-font="Symbol" data-listid="4" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;&quot;,&quot;469777815&quot;:&quot;multilevel&quot;}" data-aria-posinset="8" data-aria-level="1"><span data-contrast="auto">Affidavit explaining the legal basis of your financial dependency, if required</span><span data-ccp-props="{}"> </span></li></ul><ul><li aria-setsize="-1" data-leveltext="" data-font="Symbol" data-listid="4" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;&quot;,&quot;469777815&quot;:&quot;multilevel&quot;}" data-aria-posinset="9" data-aria-level="1"><span data-contrast="auto">Court orders or letters of appointment if a curator or guardian is acting for a claimant</span><span data-ccp-props="{}"> </span></li></ul><ul><li aria-setsize="-1" data-leveltext="" data-font="Symbol" data-listid="4" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;&quot;,&quot;469777815&quot;:&quot;multilevel&quot;}" data-aria-posinset="10" data-aria-level="1"><span data-contrast="auto">Tax invoice and proof of payment if claiming funeral expenses</span><span data-ccp-props="{}"> </span></li></ul><p><span data-contrast="auto">You must also complete the RAF1 claim form and submit it with the required documents. Missing records can delay the process. Gathering these documents can be demanding, particularly when several dependants are involved. RoadCover manages its members&#8217; administrative and legal requirements, ensuring claims are properly prepared.</span><span data-ccp-props="{}"> </span></p>								</div>
				<div class="elementor-element elementor-element-5551989 elementor-widget elementor-widget-heading" data-id="5551989" data-element_type="widget" data-e-type="widget" data-widget_type="heading.default">
					<h3 class="elementor-heading-title elementor-size-default">Funeral expenses </h3>				</div>
				<div class="elementor-element elementor-element-5501695 elementor-widget elementor-widget-text-editor" data-id="5501695" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
									<p><span data-contrast="auto">If your loved one died in a motor vehicle accident, you may claim qualifying funeral expenses from the RAF. The Fund covers necessary burial or cremation costs. Claims must be supported by a tax invoice and proof of payment, along with any other documentation required.</span><span data-ccp-props="{}"> </span></p><p><span data-contrast="auto">However, the RAF </span><b><span data-contrast="auto">does not cover</span></b><span data-contrast="auto">:</span><span data-ccp-props="{}"> </span></p><ul><li aria-setsize="-1" data-leveltext="" data-font="Symbol" data-listid="5" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;&quot;,&quot;469777815&quot;:&quot;multilevel&quot;}" data-aria-posinset="1" data-aria-level="1"><span data-contrast="auto">Catering or food at the funeral</span><span data-ccp-props="{}"> </span></li></ul><ul><li aria-setsize="-1" data-leveltext="" data-font="Symbol" data-listid="5" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;&quot;,&quot;469777815&quot;:&quot;multilevel&quot;}" data-aria-posinset="2" data-aria-level="1"><span data-contrast="auto">Flowers or décor</span><span data-ccp-props="{}"> </span></li></ul><ul><li aria-setsize="-1" data-leveltext="" data-font="Symbol" data-listid="5" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;&quot;,&quot;469777815&quot;:&quot;multilevel&quot;}" data-aria-posinset="3" data-aria-level="1"><span data-contrast="auto">Tombstones or memorials</span><span data-ccp-props="{}"> </span></li></ul><ul><li aria-setsize="-1" data-leveltext="" data-font="Symbol" data-listid="5" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;&quot;,&quot;469777815&quot;:&quot;multilevel&quot;}" data-aria-posinset="4" data-aria-level="1"><span data-contrast="auto">Transport for mourners</span><span data-ccp-props="{}"> </span></li></ul><ul><li aria-setsize="-1" data-leveltext="" data-font="Symbol" data-listid="5" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;&quot;,&quot;469777815&quot;:&quot;multilevel&quot;}" data-aria-posinset="5" data-aria-level="1"><span data-contrast="auto">Any ceremonial extras beyond the burial or cremation itself</span><span data-ccp-props="{}"> </span></li></ul><p><span data-ccp-props="{}"> </span></p><p><span data-contrast="auto">Funeral expenses and loss of support are separate components of a death claim. If you paid for the funeral, you may qualify to claim eligible expenses. If you depended financially on the deceased, you may also have grounds for a loss of support claim.</span><span data-ccp-props="{}"> </span></p>								</div>
				<div class="elementor-element elementor-element-4ad1607 elementor-widget elementor-widget-heading" data-id="4ad1607" data-element_type="widget" data-e-type="widget" data-widget_type="heading.default">
					<h3 class="elementor-heading-title elementor-size-default">How RoadCover supports families </h3>				</div>
				<div class="elementor-element elementor-element-b916f39 elementor-widget elementor-widget-text-editor" data-id="b916f39" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
									<p><span data-contrast="auto">When a family loses its main breadwinner, compensation can be critical to maintaining financial stability. Knowing what you can claim, which documents you need, and how the process works helps you make informed decisions.</span><span data-ccp-props="{}"> </span></p><p><span data-contrast="auto">RoadCover manages qualifying RAF claims from start to settlement and has 21 years of experience in the RAF claims space. It is not an insurer and does not decide whether the RAF accepts a claim or how much compensation the Fund awards.</span><span data-ccp-props="{}"> </span></p><p><span data-contrast="auto">For members whose claims are successfully settled, 100% of the settlement is paid directly to them, with no fees deducted. For families dealing with the financial consequences of losing a loved one, understanding their rights and meeting the RAF’s requirements are important steps towards pursuing compensation. RoadCover ensures claims are managed through the process, with successful settlements paid in full.</span><span data-ccp-props="{}"> </span></p>								</div>
					</div>
				</div>
		<div class="elementor-element elementor-element-5c90bdcb e-flex e-con-boxed e-con e-parent" data-id="5c90bdcb" data-element_type="container" data-e-type="container">
					<div class="e-con-inner">
				<div class="elementor-element elementor-element-11060377 elementor-widget elementor-widget-text-editor" data-id="11060377" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
									<p><strong>Disclaimer:</strong> <em>The information provided in this article was correct at the time of publication and is intended for general guidance only. It is subject to change without notice as laws, regulations and membership terms evolve. RoadCover and the Road Accident Fund operate within dynamic legal frameworks and readers should verify current requirements before making decisions or entering into agreements.</em></p>								</div>
					</div>
				</div>
		<div class="elementor-element elementor-element-510084a6 e-flex e-con-boxed e-con e-parent" data-id="510084a6" data-element_type="container" data-e-type="container">
					<div class="e-con-inner">
				<div class="elementor-element elementor-element-1f9a2517 elementor-widget elementor-widget-shortcode" data-id="1f9a2517" data-element_type="widget" data-e-type="widget" data-widget_type="shortcode.default">
							<div class="elementor-shortcode">		<div data-elementor-type="container" data-elementor-id="2657" class="elementor elementor-2657" data-elementor-post-type="elementor_library">
				<div class="elementor-element elementor-element-1b2aafda e-con-full e-flex e-con e-parent" data-id="1b2aafda" data-element_type="container" data-e-type="container">
				<div class="elementor-element elementor-element-4e06f177 elementor-widget elementor-widget-html" data-id="4e06f177" data-element_type="widget" data-e-type="widget" data-widget_type="html.default">
					<link href="https://fonts.googleapis.com/css2?family=Raleway:wght@400;500;600;700;800&display=swap" rel="stylesheet">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.0/css/all.min.css">

<script src="https://www.google.com/recaptcha/api.js?render=6LdwjNosAAAAAK5qrEyD0FybwyViVZOqamPK1Fnr" async defer></script>

<style>
/* ===============================================================
   RoadCover — Pricing + Onboarding Form
   All selectors scoped to #rc-pricing to avoid host-page bleed.
   PLN codes live on data-plan-code attributes of .rc-btn elements.
   ================================================================ */

#rc-pricing *, #rc-pricing *::before, #rc-pricing *::after {
    box-sizing: border-box;
}
#rc-pricing {
    font-family: 'Raleway', sans-serif;
    width: 100%;
    color: #1f2937;

    /* Plan-card palette — scoped to the embed, never :root, so the
       host page's own custom properties are left untouched. */
    --rc-blue:      #2B4FD4;
    --rc-blue-dark: #1A3399;
    --rc-gold:      #F5C842;
    --rc-gold-dark: #D4A800;
    --rc-text:      #0D1B3E;
    --rc-muted:     #6B7280;
    --rc-border:    #E4E9F8;
    --rc-success:   #16A34A;
}
.rc-wrapper {
    display: flex;
    flex-direction: column;
    gap: 48px;
}

/* ── Header ─────────────────────────────────────────────────────── */
.rc-header { text-align: center; }
.rc-header h2 {
    font-size: 30px;
    font-weight: 800;
    margin: 0 0 8px;
    color: #111827;
}
.rc-header p {
    font-size: 15px;
    color: #6b7280;
    margin: 0;
}

/* ── Single Plan Card ───────────────────────────────────────────── */
/* One responsive card serves both desktop and mobile — there is no
   longer a separate table/card pair to keep in sync. */
.rc-plan-card {
    position: relative;
    background: #fff;
    border: 1px solid var(--rc-border);
    border-radius: 18px;
    overflow: hidden;
    box-shadow: 0 10px 30px rgba(13, 27, 62, 0.08);
}

.rc-plan-header {
    position: relative;
    overflow: hidden;
    background: linear-gradient(135deg, var(--rc-blue) 0%, var(--rc-blue-dark) 100%);
    padding: 32px 28px 30px;
    text-align: center;
}
.rc-plan-header::before {
    content: '';
    position: absolute;
    width: 220px;
    height: 220px;
    right: -90px;
    top: -70px;
    border-radius: 50%;
    background: rgba(255, 255, 255, 0.08);
}
.rc-plan-header::after {
    content: '';
    position: absolute;
    width: 140px;
    height: 140px;
    left: -50px;
    bottom: -50px;
    border-radius: 50%;
    background: rgba(245, 200, 66, 0.14);
}
.rc-plan-header > * { position: relative; z-index: 2; }

.rc-plan-name {
    font-size: 11px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.1em;
    color: rgba(255, 255, 255, 0.65);
    margin-bottom: 6px;
}
.rc-plan-price {
    font-size: 44px;
    font-weight: 900;
    color: var(--rc-gold);
    line-height: 1.1;
}
.rc-plan-price-unit {
    font-size: 14px;
    font-weight: 600;
    color: rgba(255, 255, 255, 0.6);
}
.rc-plan-subprice {
    margin-top: 6px;
    font-size: 12px;
    font-weight: 600;
    color: var(--rc-gold);
    min-height: 16px;
}

.rc-plan-rows { padding: 6px 28px; }
.rc-plan-row {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    padding: 14px 0;
    border-bottom: 1px solid var(--rc-border);
}
.rc-plan-row:last-child { border-bottom: none; }
.rc-plan-row-label {
    font-size: 13.5px;
    font-weight: 600;
    color: var(--rc-text);
}
.rc-plan-row-icon {
    width: 22px;
    height: 22px;
    flex-shrink: 0;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    background: #ECFDF3;
    color: var(--rc-success);
}
.rc-plan-row-icon svg { width: 13px; height: 13px; display: block; }

.rc-plan-cta-block { padding: 20px 28px 26px; }
.rc-plan-cta-hint {
    text-align: center;
    margin-top: 10px;
    font-size: 11px;
    color: var(--rc-muted);
}

/* ── Plan Select Button (JS hook: .rc-btn) ──────────────────────── */
.rc-btn {
    width: 100%;
    padding: 13px 18px;
    border: none;
    border-radius: 10px;
    background: var(--rc-gold);
    color: var(--rc-text);
    font-family: inherit;
    font-size: 14px;
    font-weight: 800;
    letter-spacing: 0.01em;
    cursor: pointer;
    transition: background 0.15s, transform 0.1s;
}
.rc-btn:hover   { background: var(--rc-gold-dark); }
.rc-btn:active  { transform: scale(0.99); }
.rc-btn.rc-selected { background: var(--rc-gold-dark); }

/* ── Form Section ───────────────────────────────────────────────── */
#rc-form-section { display: none; }
#rc-form-section.rc-visible {
    display: block;
    animation: rc-fadein 0.22s ease;
}
@keyframes rc-fadein {
    from { opacity: 0; transform: translateY(10px); }
    to   { opacity: 1; transform: translateY(0); }
}

.rc-form-inner {
    display: flex;
    flex-direction: column;
    gap: 22px;
    background: linear-gradient(135deg, #2A45AC, #1f358a);
    border-radius: 12px;
    padding: 40px;
}

.rc-selected-badge {
    display: inline-block;
    background: rgba(255, 255, 255, 0.15);
    color: #FFD84D;
    font-size: 13px;
    font-weight: 700;
    border-radius: 6px;
    padding: 7px 13px;
}

.rc-form-title {
    font-size: 20px;
    font-weight: 800;
    color: #fff;
    margin: 0;
}

/* Field grid — first two fields sit side-by-side */
.rc-field-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 14px;
}
.rc-field-full { grid-column: 1 / -1; }

.rc-field {
    display: flex;
    flex-direction: column;
    gap: 5px;
}
.rc-field-label {
    font-size: 11px;
    font-weight: 700;
    color: rgba(255, 255, 255, 0.7);
    text-transform: uppercase;
    letter-spacing: 0.05em;
}

/* Icon floats over the input; no separate column, no column border */
.rc-input-row {
    position: relative;
    border: 1px solid #6f7ec1;
    border-radius: 8px;
    background: #3d54ac;
    transition: border-color 0.15s, box-shadow 0.15s;
}
.rc-input-row:focus-within {
    border-color: #a0aee0;
    box-shadow: 0 0 0 3px rgba(111, 126, 193, 0.3);
}
.rc-input-row:has(.invalid) { border-color: #FF3B30; }
.rc-input-row:has(.invalid):focus-within {
    box-shadow: 0 0 0 3px rgba(129, 12, 12, 0.25);
}

.rc-input-icon {
    position: absolute;
    left: 14px;
    top: 50%;
    transform: translateY(-50%);
    color: rgba(255, 255, 255, 0.55);
    font-size: 14px;
    pointer-events: none;
}

.rc-input {
    display: block;
    width: 100%;
    padding: 11px 14px 11px 44px !important;
    border: 0;
    box-shadow: none;
    border-radius: 8px;
    background: transparent;
    font-family: inherit;
    font-size: 14px;
    color: #fff;
    -webkit-appearance: none;
    appearance: none;
    outline: none;
}
#rc-pricing .rc-input::placeholder { color: rgb(248, 248, 248); }
.rc-input.invalid { /* border shown via :has on .rc-input-row */ }

/* Native select chevron */
select.rc-input {
    padding-right: 36px;
    background-color: #3d54ac;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='7' viewBox='0 0 12 7'%3E%3Cpolyline points='1,1 6,6 11,1' fill='none' stroke='%23a0aee0' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
    background-repeat: no-repeat;
    background-position: right 12px center;
    cursor: pointer;
    color: #fff;
}

.rc-field-error {
    font-size: 12px;
    color: #FF3B30;
    margin: 0;
    line-height: 1.4;
}

/* T&C checkbox */
.rc-terms {
    display: flex;
    align-items: center;
    gap: 10px;
    font-size: 14px;
    color: rgba(255, 255, 255, 0.85);
    cursor: pointer;
    user-select: none;
}
.rc-terms input[type="checkbox"] {
    width: 17px;
    height: 17px;
    cursor: pointer;
    flex-shrink: 0;
    accent-color: #FFD84D;
}
.rc-terms.invalid { color: #FF3B30; }
.rc-terms.invalid input[type="checkbox"] {
    outline: 2px solid #FF3B30;
    outline-offset: 2px;
    border-radius: 2px;
}

.rc-submit:disabled,
.rc-submit:disabled:hover {
    background: #FFD84D; /* same as default */
    cursor: not-allowed;
}
/* Submit button */
.rc-submit {
    width: 100%;
    padding: 14px 20px;
    border: none;
    border-radius: 10px;
    background: #FFD84D;
    color: #1f358a;
    font-family: inherit;
    font-size: 15px;
    font-weight: 700;
    cursor: pointer;
    transition: background 0.15s, transform 0.1s;
    letter-spacing: 0.01em;
}
.rc-submit:hover:not([disabled]) { background: #f5cc35; }
.rc-submit:active:not([disabled]) { transform: scale(0.99); }
.rc-submit[disabled] { opacity: 0.5; cursor: not-allowed; }

.rc-form-error {
    font-size: 13px;
    color: #FF3B30;
    margin: 0;
    line-height: 1.5;
}

.rc-recaptcha-notice {
    font-size: 11px;
    color: rgba(255, 255, 255, 0.45);
    margin: 0;
    line-height: 1.5;
    text-align: center;
}
.rc-recaptcha-notice a {
    color: rgba(255, 255, 255, 0.55);
    text-decoration: underline;
}

/* ── Billing Toggle ─────────────────────────────────────────────── */
/* Sits on the dark gradient header, so it is styled for a dark ground. */
.rc-billing-toggle {
    display: inline-flex;
    background: rgba(255, 255, 255, 0.12);
    border: 1.5px solid rgba(255, 255, 255, 0.2);
    border-radius: 999px;
    padding: 3px;
    gap: 2px;
    margin-bottom: 20px;
}
.rc-toggle-opt {
    padding: 7px 20px;
    border: none;
    border-radius: 999px;
    background: transparent;
    color: rgba(255, 255, 255, 0.75);
    font-family: inherit;
    font-size: 12.5px;
    font-weight: 700;
    cursor: pointer;
    transition: background 0.2s ease, color 0.2s ease;
    white-space: nowrap;
    line-height: 1;
}
.rc-toggle-opt:hover:not(.rc-toggle-active) {
    background: rgba(255, 255, 255, 0.08);
}
.rc-toggle-opt.rc-toggle-active {
    background: var(--rc-gold);
    color: var(--rc-text);
}

.rc-save-badge {
    display: inline-block;
    margin-left: 6px;
    padding: 1px 6px;
    border-radius: 999px;
    font-size: 9.5px;
    font-weight: 800;
    color: rgba(255, 255, 255, 0.85);
    background: rgba(255, 255, 255, 0.16);
}
/* On the gold active pill, white-on-gold is unreadable — invert it. */
.rc-toggle-active .rc-save-badge {
    color: var(--rc-text);
    background: rgba(13, 27, 62, 0.12);
}

/* ── Responsive ─────────────────────────────────────────────────── */
@media (max-width: 700px) {
    #rc-pricing     { padding: 0px 0px; }
    .rc-wrapper     { gap: 32px; }
    .rc-plan-header { padding: 28px 20px 26px; }
    .rc-plan-price  { font-size: 38px; }
    .rc-plan-rows   { padding: 6px 20px; }
    .rc-plan-cta-block { padding: 18px 20px 22px; }
    .rc-field-grid  { grid-template-columns: 1fr; }
    .rc-field-full  { grid-column: 1; }
    .rc-form-inner  { padding: 24px 20px; }
    .rc-header h2   { font-size: 24px; }
}
</style>

<!-- ================================================================
     PRICING TABLE + ONBOARDING FORM
     ================================================================ -->
<div id="rc-pricing">
  <div class="rc-wrapper">

    <!-- Single plan card — one responsive card for desktop and mobile -->
    <div class="rc-plan-card" data-plan-key="RoadCover">

      <div class="rc-plan-header">
        <div class="rc-billing-toggle" role="group" aria-label="Billing period">
          <button type="button" class="rc-toggle-opt rc-toggle-active" data-billing="monthly">Monthly</button>
          <button type="button" class="rc-toggle-opt" data-billing="annual">Annual <span class="rc-save-badge">Save 6%</span></button>
        </div>

        <div class="rc-plan-name">RoadCover</div>
        <div class="rc-plan-price"><span class="rc-plan-price-val">R49</span><span class="rc-plan-price-unit">/mo</span></div>
        <div class="rc-plan-subprice" hidden></div>
      </div>

      <div class="rc-plan-rows">
        <div class="rc-plan-row">
          <span class="rc-plan-row-label">RAF Claim Support</span>
          <span class="rc-plan-row-icon" role="img" aria-label="Included">
            <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><polyline points="20 6 9 17 4 12"></polyline></svg>
          </span>
        </div>
        <div class="rc-plan-row">
          <span class="rc-plan-row-label">Legal Expertise</span>
          <span class="rc-plan-row-icon" role="img" aria-label="Included">
            <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><polyline points="20 6 9 17 4 12"></polyline></svg>
          </span>
        </div>
      </div>

      <div class="rc-plan-cta-block">
        <button class="rc-btn"
                data-plan="RoadCover"
                data-plan-code="RC49"
                data-price="49.00 /Month">Select RoadCover &#8594;</button>
        <div class="rc-plan-cta-hint">No fees. 100% of your payout.</div>
      </div>

    </div><!-- /.rc-plan-card -->

    <!-- Form: hidden until a plan is selected -->
    <div id="rc-form-section">
      <form id="roadcover-form" novalidate>

        <!-- product_code is set programmatically on plan button click -->
        <input type="hidden" name="product_code" id="cover-input">
        <input type="hidden" name="form_id"   value="9a3d492">
        <input type="hidden" name="form_name" value="Get RoadCover">

        <div class="rc-form-inner">

          <div id="selectedPlan" class="rc-selected-badge">Selected: &#8212;</div>
          <p class="rc-form-title">Enter your details</p>

          <div class="rc-field-grid">

            <!-- Row 1: name -->
            <div class="rc-field">
              <label class="rc-field-label" for="rc-first-name">First name *</label>
              <div class="rc-input-row">
                <i class="fa-solid fa-user rc-input-icon" aria-hidden="true"></i>
                <input class="rc-input" type="text" id="rc-first-name"
                       name="first_name" required maxlength="60" placeholder="First name">
              </div>
            </div>

            <div class="rc-field">
              <label class="rc-field-label" for="rc-last-name">Last name *</label>
              <div class="rc-input-row">
                <i class="fa-solid fa-user rc-input-icon" aria-hidden="true"></i>
                <input class="rc-input" type="text" id="rc-last-name"
                       name="last_name" required maxlength="60" placeholder="Last name">
              </div>
            </div>

            <!-- Row 2: identity -->
            <div class="rc-field">
              <label class="rc-field-label" for="rc-id">ID number *</label>
              <div class="rc-input-row">
                <i class="fa-solid fa-id-card rc-input-icon" aria-hidden="true"></i>
                <input class="rc-input" type="text" id="rc-id"
                       name="identificationnr" required pattern="[0-9]{13}"
                       inputmode="numeric" maxlength="13"
                       placeholder="13-digit SA ID number">
              </div>
            </div>

            <div class="rc-field">
              <label class="rc-field-label" for="rc-gender">Gender *</label>
              <div class="rc-input-row">
                <i class="fa-solid fa-venus-mars rc-input-icon" aria-hidden="true"></i>
                <select class="rc-input" id="rc-gender" name="gender" required>
                  <option value="">Select&hellip;</option>
                  <option value="1">Male</option>
                  <option value="2">Female</option>
                </select>
              </div>
            </div>

            <!-- Row 3: contact -->
            <div class="rc-field">
              <label class="rc-field-label" for="rc-email">Email *</label>
              <div class="rc-input-row">
                <i class="fa-solid fa-envelope rc-input-icon" aria-hidden="true"></i>
                <input class="rc-input" type="email" id="rc-email"
                       name="email" required maxlength="254"
                       placeholder="you@example.com">
              </div>
            </div>

            <div class="rc-field">
              <label class="rc-field-label" for="rc-mobile">Mobile *</label>
              <div class="rc-input-row">
                <i class="fa-solid fa-phone rc-input-icon" aria-hidden="true"></i>
                <input class="rc-input" type="tel" id="rc-mobile"
                       name="mobile" required inputmode="tel"
                       placeholder="0XXXXXXXXX or +27XXXXXXXXX">
              </div>
            </div>

            <!-- Row 4: optional -->
            <div class="rc-field rc-field-full">
              <label class="rc-field-label" for="rc-promo">Promo code</label>
              <div class="rc-input-row">
                <i class="fa-solid fa-tag rc-input-icon" aria-hidden="true"></i>
                <input class="rc-input" type="text" id="rc-promo"
                       name="promo_code" maxlength="32" placeholder="Optional">
              </div>
            </div>

          </div><!-- /.rc-field-grid -->

          <label class="rc-terms">
            <input type="checkbox" name="I accept the Terms and Conditions." required>
            <span>I accept the Terms and Conditions.</span>
          </label>

          <button type="submit" id="submit-btn" class="rc-submit">Continue</button>
          <p id="form-error" class="rc-form-error" hidden></p>

          <p class="rc-recaptcha-notice">This site is protected by reCAPTCHA and the Google <a href="https://policies.google.com/privacy" target="_blank" rel="noopener noreferrer">Privacy Policy</a> and <a href="https://policies.google.com/terms" target="_blank" rel="noopener noreferrer">Terms of Service</a> apply.</p>

        </div><!-- /.rc-form-inner -->
      </form>
    </div><!-- /#rc-form-section -->

  </div><!-- /.rc-wrapper -->
</div><!-- /#rc-pricing -->

<script>
(function () {
    var form           = document.getElementById('roadcover-form');
    var errEl          = document.getElementById('form-error');
    var submitBtn      = document.getElementById('submit-btn');
    var coverInput     = document.getElementById('cover-input');
    var formSection    = document.getElementById('rc-form-section');
    var selectedPlanEl = document.getElementById('selectedPlan');
    var pricing        = document.getElementById('rc-pricing');

    var currentPrice   = '';
    var isAnnual       = false;
    var currentPlanBtn = null;

    // ── Plan + billing data ───────────────────────────────────────────────────
    var planData = {
        'RoadCover': {
            monthly: { priceVal: 'R49', unit: '/mo', code: 'RC49',         priceStr: '49.00 /Month',  subprice: '' },
            annual:  { priceVal: 'R550', unit: '/yr', code: 'PRD-CB838AEF', priceStr: '550.00 /Year', subprice: '~R46/mo' }
        }
    };

    // ── Apply billing mode to all price displays and button codes ─────────────
    function applyBilling() {
        var mode = isAnnual ? 'annual' : 'monthly';

        // Plan card price display
        pricing.querySelectorAll('.rc-plan-card[data-plan-key]').forEach(function (card) {
            var d = planData[card.dataset.planKey][mode];
            card.querySelector('.rc-plan-price-val').textContent  = d.priceVal;
            card.querySelector('.rc-plan-price-unit').textContent = d.unit;
            var sub = card.querySelector('.rc-plan-subprice');
            sub.textContent = d.subprice;
            sub.hidden      = !d.subprice;
        });

        // Update data-plan-code on all buttons so selection highlighting still works
        pricing.querySelectorAll('.rc-btn').forEach(function (btn) {
            var key = btn.dataset.plan;
            if (!planData[key]) return;
            btn.dataset.planCode = planData[key][mode].code;
            btn.dataset.price    = planData[key][mode].priceStr;
        });

        // If a plan was already selected, refresh the hidden input + badge + button label
        if (currentPlanBtn) {
            var key     = currentPlanBtn.dataset.plan;
            var d       = planData[key][mode];
            var billing = isAnnual ? 'Annual' : 'Monthly';
            coverInput.value           = d.code;
            currentPrice               = d.priceStr;
            selectedPlanEl.textContent = 'Selected: ' + key + ' (' + billing + ')';
            updateButton();
        }
    }

    // ── Helpers (mirrored in n8n Code node — keep in sync) ───────────────────

    function clean(v) {
        if (v === null || v === undefined) return '';
        var s = String(v);
        s = s.replace(/[\x00-\x08\x0B\x0C\x0E-\x1F\x7F]/g, '');
        s = s.replace(/<script\b[^>]*>[\s\S]*?<\/script\s*>/gi, '');
        s = s.replace(/<\/?[a-zA-Z][^>]*>/g, '');
        s = s.replace(/javascript\s*:/gi, '');
        s = s.replace(/\s+/g, ' ').trim();
        return s;
    }

    function luhnValid(idStr) {
        var sum = 0;
        for (var i = 0; i < 13; i++) {
            var n = parseInt(idStr.charAt(i), 10);
            if (i % 2 === 1) { n *= 2; if (n > 9) n -= 9; }
            sum += n;
        }
        return sum % 10 === 0;
    }

    // Returns { ok: true } or { ok: false, field, message }
    function validate(data) {
        var required = {
            product_code:       'Please select a cover plan.',
            first_name:         'First name is required.',
            last_name:          'Last name is required.',
            email:              'Email is required.',
            mobile:             'Mobile number is required.',
            identificationnr:   'ID number is required.',
            gender:             'Please select your gender.'
        };
        for (var k in required) {
            if (!data[k]) return { ok: false, field: k, message: required[k] };
        }

        if (data.first_name.length > 60)
            return { ok: false, field: 'first_name', message: 'First name is too long (max 60).' };
        if (data.last_name.length > 60)
            return { ok: false, field: 'last_name', message: 'Last name is too long (max 60).' };

        var emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
        if (!emailRegex.test(data.email))
            return { ok: false, field: 'email', message: 'Please enter a valid email address.' };
        if (data.email.length > 254)
            return { ok: false, field: 'email', message: 'Email is too long.' };

        var mobileRegex = /^(\+27|0)[0-9]{9}$/;
        if (!mobileRegex.test(data.mobile))
            return { ok: false, field: 'mobile', message: 'Mobile must be 10 digits starting with 0, or +27 followed by 9 digits.' };

        var genderNum = Number(data.gender);
        if (genderNum !== 1 && genderNum !== 2)
            return { ok: false, field: 'gender', message: 'Please select your gender.' };

        if (!/^[0-9]{13}$/.test(data.identificationnr))
            return { ok: false, field: 'identificationnr', message: 'ID number must be exactly 13 digits.' };

        var yy        = parseInt(data.identificationnr.substring(0, 2), 10);
        var mm        = parseInt(data.identificationnr.substring(2, 4), 10);
        var dd        = parseInt(data.identificationnr.substring(4, 6), 10);
        var now       = new Date();
        var currentYY = now.getFullYear() % 100;
        var fullYear  = (yy > currentYY) ? (1900 + yy) : (2000 + yy);
        var dob       = new Date(fullYear, mm - 1, dd);
        var dobValid  =
            dob.getFullYear() === fullYear &&
            dob.getMonth()    === (mm - 1) &&
            dob.getDate()     === dd       &&
            dob <= now;
        if (!dobValid)
            return { ok: false, field: 'identificationnr', message: 'The first 6 digits of your ID number are not a valid date of birth.' };

        var genderDigits = parseInt(data.identificationnr.substring(6, 10), 10);
        var idGender     = genderDigits >= 5000 ? 1 : 2;
        if (idGender !== genderNum) {
            var expected = idGender === 1 ? 'Male' : 'Female';
            return { ok: false, field: 'identificationnr',
                     message: 'The selected gender does not match your ID number (ID indicates ' + expected + ').' };
        }

        if (!luhnValid(data.identificationnr))
            return { ok: false, field: 'identificationnr', message: 'ID number checksum is invalid. Please check the number.' };

        return { ok: true };
    }

    // ── UI helpers ────────────────────────────────────────────────────────────

    function clearFieldErrors() {
        form.querySelectorAll('.invalid').forEach(function (el) { el.classList.remove('invalid'); });
        form.querySelectorAll('.rc-field-error').forEach(function (el) { el.remove(); });
    }

    function showFieldError(fieldName, message) {
        // product_code is a hidden input — surface as a form-level error
        if (fieldName === 'product_code') {
            showFormError(message);
            return;
        }
        var input = form.querySelector('[name="' + fieldName + '"]');
        if (!input) return;
        input.classList.add('invalid');
        var field = input.closest('.rc-field') || input.parentElement;
        var span  = field.querySelector('.rc-field-error');
        if (!span) {
            span = document.createElement('span');
            span.className = 'rc-field-error';
            field.appendChild(span);
        }
        span.textContent = message;
        input.focus();
    }

    function showFormError(message) {
        errEl.textContent = message;
        errEl.hidden = false;
    }

    function hideFormError() {
        errEl.hidden = true;
        errEl.textContent = '';
    }

    function updateButton() {
        submitBtn.textContent = currentPrice ? ('Continue • R' + currentPrice) : 'Continue';
        submitBtn.disabled    = false;
    }

    // ── Collect & sanitise ────────────────────────────────────────────────────

    function collectData() {
        var fd = new FormData(form);
        return {
            product_code:       clean(fd.get('product_code')),
            first_name:         clean(fd.get('first_name')),
            last_name:          clean(fd.get('last_name')),
            email:              clean(fd.get('email')).toLowerCase(),
            mobile:             clean(fd.get('mobile')),
            identificationnr:   clean(fd.get('identificationnr')),
            gender:             clean(fd.get('gender')),
            promo_code:         clean(fd.get('promo_code'))
        };
    }

    // ── Billing toggle ────────────────────────────────────────────────────────

    pricing.querySelectorAll('.rc-toggle-opt').forEach(function (btn) {
        btn.addEventListener('click', function () {
            if (btn.dataset.billing === (isAnnual ? 'annual' : 'monthly')) return;
            isAnnual = !isAnnual;
            pricing.querySelectorAll('.rc-toggle-opt').forEach(function (b) {
                b.classList.toggle('rc-toggle-active', b.dataset.billing === (isAnnual ? 'annual' : 'monthly'));
            });
            applyBilling();
        });
    });

    // ── Plan selection ────────────────────────────────────────────────────────

    pricing.querySelectorAll('.rc-btn').forEach(function (planBtn) {
        planBtn.addEventListener('click', function () {
            var code    = planBtn.dataset.planCode;
            var plan    = planBtn.dataset.plan;
            var price   = planBtn.dataset.price || '';
            var billing = isAnnual ? 'Annual' : 'Monthly';

            currentPlanBtn = planBtn;

            // Highlight every button sharing the same plan code (desktop + mobile pair)
            pricing.querySelectorAll('.rc-btn').forEach(function (b) {
                b.classList.toggle('rc-selected', b.dataset.planCode === code);
            });

            coverInput.value           = code;
            currentPrice               = price;
            selectedPlanEl.textContent = 'Selected: ' + plan + ' (' + billing + ')';
            updateButton();

            formSection.classList.add('rc-visible');
            formSection.scrollIntoView({ behavior: 'smooth', block: 'nearest' });

            clearFieldErrors();
            hideFormError();
        });
    });

    // ── Initialise billing display ────────────────────────────────────────────
    applyBilling();

    // ── Clear errors on edit ──────────────────────────────────────────────────

    form.addEventListener('input', function (e) {
        if (e.target.classList.contains('invalid')) {
            e.target.classList.remove('invalid');
            var f = e.target.closest('.rc-field');
            if (f) { var s = f.querySelector('.rc-field-error'); if (s) s.remove(); }
        }
        hideFormError();
    });

    form.addEventListener('change', function (e) {
        if (e.target.classList.contains('invalid')) {
            e.target.classList.remove('invalid');
            var f = e.target.closest('.rc-field');
            if (f) { var s = f.querySelector('.rc-field-error'); if (s) s.remove(); }
        }
        if (e.target.type === 'checkbox' && e.target.checked) {
            var label = e.target.closest('label.rc-terms');
            if (label) label.classList.remove('invalid');
            hideFormError();
        }
    });

    // ── Form submit ───────────────────────────────────────────────────────────

    form.addEventListener('submit', async function (e) {
        e.preventDefault();
        hideFormError();
        clearFieldErrors();

        var data   = collectData();
        var result = validate(data);
        if (!result.ok) {
            showFieldError(result.field, result.message);
            return;
        }

        var termsBox = form.querySelector('input[type="checkbox"][required]');
        if (termsBox && !termsBox.checked) {
            var termsLabel = termsBox.closest('label.rc-terms');
            if (termsLabel) termsLabel.classList.add('invalid');
            termsBox.focus();
            showFormError('Please accept the Terms and Conditions to continue.');
            return;
        }

        submitBtn.disabled    = true;
        submitBtn.textContent = 'Processing…';

        // ── reCAPTCHA v3 — must complete before the network request ──────────
        var recaptchaToken = '';
        try {
            recaptchaToken = await new Promise(function (resolve, reject) {
                if (typeof grecaptcha === 'undefined') { reject(new Error('not loaded')); return; }
                grecaptcha.ready(function () {
                    grecaptcha.execute('6LdwjNosAAAAAK5qrEyD0FybwyViVZOqamPK1Fnr', { action: 'submit' })
                        .then(resolve).catch(reject);
                });
            });
        } catch (_) {
            showFormError('Security check could not complete. Please disable any ad blockers and try again.');
            updateButton();
            return;
        }

        try {
            // Send sanitised data so the backend receives cleaned values
            var params = new URLSearchParams();
            for (var k in data) params.append(k, data[k]);
            params.append('form_id',   form.querySelector('[name="form_id"]').value   || '');
            params.append('form_name', form.querySelector('[name="form_name"]').value || '');
            params.append('I accept the Terms and Conditions.', 'on');
            params.append('recaptcha_token', recaptchaToken);

            var res     = await fetch('https://n8n.roadcover.co.za/webhook/form', {
                method:  'POST',
                headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
                body:    params.toString()
            });
            var json    = await res.json();
            var payload = Array.isArray(json) ? json[0] : json;
            var paymentUrl = (payload && payload.data && payload.data.payment_url)
                           || (payload && payload.payment_url);

            if (res.ok && payload && payload.success && paymentUrl) {
                window.location.href = paymentUrl;
            } else if (payload && (payload.error_code === 'DUPLICATE_MEMBER' || payload.error_code === 'DUPLICATE_ACTIVE_MEMBER')) {
                var supportEmail = (payload && payload.support_email) || 'info@roadcover.co.za';
                var refNumber = payload && payload.reference_number;
                showFieldError(
                    (payload && payload.field) || 'identificationnr',
                    'This ID number is already registered on the membership system.'
                );
                var bannerMsg = 'This ID number is already registered as an active member. Please contact support for assistance ' + supportEmail + '.';
                if (refNumber) {
                    bannerMsg += ' Your reference number is ' + refNumber + '.';
                }
                showFormError(bannerMsg);
                updateButton();
            } else {
                var message = (payload && payload.message) || 'Something went wrong. Please try again.';
                if (payload && payload.field) {
                    showFieldError(payload.field, message);
                } else {
                    showFormError(message);
                }
                updateButton();
            }
        } catch (_) {
            showFormError('Could not reach the service. Please try again.');
            updateButton();
        }
    });

})();
</script>
				</div>
				</div>
				</div>
		</div>
						</div>
					</div>
				</div>
				</div>
		]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>What You Can Claim From RAF: A Guide to Road Accident Fund Compensation </title>
		<link>https://www.roadcover.co.za/road-accident-fund-compensation/</link>
		
		<dc:creator><![CDATA[Nokuthula Ngcobo]]></dc:creator>
		<pubDate>Mon, 12 Oct 2026 13:46:51 +0000</pubDate>
				<category><![CDATA[article]]></category>
		<guid isPermaLink="false">https://www.roadcover.co.za/?p=3373</guid>

					<description><![CDATA[A road accident can leave you dealing with medical bills, time away from work and injuries that affect your ability to earn an income. For people injured in qualifying road accidents, the Road Accident Fund (RAF) provides compensation for certain losses resulting from the accident. ]]></description>
			<style id="elementor-post-3373">.elementor-3373 .elementor-element.elementor-element-1a8e67d8{--display:flex;--padding-top:220px;--padding-bottom:0px;--padding-left:0112px;--padding-right:0112px;}.elementor-3373 .elementor-element.elementor-element-95fb960{--display:flex;--flex-direction:row;--container-widget-width:initial;--container-widget-height:100%;--container-widget-flex-grow:1;--container-widget-align-self:stretch;--flex-wrap-mobile:wrap;--padding-top:0px;--padding-bottom:0px;--padding-left:0px;--padding-right:0px;}.elementor-3373 .elementor-element.elementor-element-2e1c6888{--display:flex;--flex-direction:row;--container-widget-width:calc( ( 1 - var( --container-widget-flex-grow ) ) * 100% );--container-widget-height:100%;--container-widget-flex-grow:1;--container-widget-align-self:stretch;--flex-wrap-mobile:wrap;--align-items:center;--padding-top:0px;--padding-bottom:0px;--padding-left:0px;--padding-right:0px;}.elementor-widget-text-editor{font-family:var( --e-global-typography-text-font-family ), Sans-serif;font-weight:var( --e-global-typography-text-font-weight );color:var( --e-global-color-text );}.elementor-widget-text-editor.elementor-drop-cap-view-stacked .elementor-drop-cap{background-color:var( --e-global-color-primary );}.elementor-widget-text-editor.elementor-drop-cap-view-framed .elementor-drop-cap, .elementor-widget-text-editor.elementor-drop-cap-view-default .elementor-drop-cap{color:var( --e-global-color-primary );border-color:var( --e-global-color-primary );}.elementor-3373 .elementor-element.elementor-element-63907a09{font-family:"Raleway", Sans-serif;font-size:14px;font-weight:600;color:#556DDD;}.elementor-widget-button .elementor-button{font-family:var( --e-global-typography-accent-font-family ), Sans-serif;font-weight:var( --e-global-typography-accent-font-weight );background-color:var( --e-global-color-accent );}.elementor-3373 .elementor-element.elementor-element-3c7416bd .elementor-button{font-family:"Raleway", Sans-serif;font-size:12px;font-weight:700;text-transform:uppercase;fill:#2A45AC;color:#2A45AC;background-color:#556DDD1A;border-radius:999px 999px 999px 999px;}.elementor-3373 .elementor-element.elementor-element-370b496e{--display:flex;--padding-top:0px;--padding-bottom:0px;--padding-left:0px;--padding-right:0px;}.elementor-widget-theme-post-title .elementor-heading-title{font-family:var( --e-global-typography-primary-font-family ), Sans-serif;font-weight:var( --e-global-typography-primary-font-weight );color:var( --e-global-color-primary );}.elementor-3373 .elementor-element.elementor-element-37cd0216 .elementor-heading-title{font-family:"Raleway", Sans-serif;font-size:3.5vw;font-weight:800;}.elementor-3373 .elementor-element.elementor-element-768ef912{--display:flex;--flex-direction:row;--container-widget-width:calc( ( 1 - var( --container-widget-flex-grow ) ) * 100% );--container-widget-height:100%;--container-widget-flex-grow:1;--container-widget-align-self:stretch;--flex-wrap-mobile:wrap;--align-items:center;--padding-top:0px;--padding-bottom:0px;--padding-left:0px;--padding-right:0px;}.elementor-widget-divider{--divider-color:var( --e-global-color-secondary );}.elementor-widget-divider .elementor-divider__text{color:var( --e-global-color-secondary );font-family:var( --e-global-typography-secondary-font-family ), Sans-serif;font-weight:var( --e-global-typography-secondary-font-weight );}.elementor-widget-divider.elementor-view-stacked .elementor-icon{background-color:var( --e-global-color-secondary );}.elementor-widget-divider.elementor-view-framed .elementor-icon, .elementor-widget-divider.elementor-view-default .elementor-icon{color:var( --e-global-color-secondary );border-color:var( --e-global-color-secondary );}.elementor-widget-divider.elementor-view-framed .elementor-icon, .elementor-widget-divider.elementor-view-default .elementor-icon svg{fill:var( --e-global-color-secondary );}.elementor-3373 .elementor-element.elementor-element-3ce36e8a{--divider-border-style:solid;--divider-color:#556DDD1A;--divider-border-width:2px;width:var( --container-widget-width, 28px );max-width:28px;--container-widget-width:28px;--container-widget-flex-grow:0;}.elementor-3373 .elementor-element.elementor-element-3ce36e8a .elementor-divider-separator{width:28px;}.elementor-3373 .elementor-element.elementor-element-3ce36e8a .elementor-divider{padding-block-start:15px;padding-block-end:15px;}.elementor-3373 .elementor-element.elementor-element-1a8879ce{font-family:"Raleway", Sans-serif;font-size:14px;font-weight:600;color:#2A45AC;}.elementor-3373 .elementor-element.elementor-element-6188e86c{--display:flex;--padding-top:50px;--padding-bottom:0px;--padding-left:0px;--padding-right:0px;}.elementor-widget-theme-post-featured-image .widget-image-caption{color:var( --e-global-color-text );font-family:var( --e-global-typography-text-font-family ), Sans-serif;font-weight:var( --e-global-typography-text-font-weight );}.elementor-3373 .elementor-element.elementor-element-25314161 img{border-radius:30px 30px 30px 30px;}.elementor-3373 .elementor-element.elementor-element-12f06242{--display:flex;--gap:40px 40px;--row-gap:40px;--column-gap:40px;--padding-top:50px;--padding-bottom:080px;--padding-left:0px;--padding-right:0px;}.elementor-3373 .elementor-element.elementor-element-f2b1db1{font-family:"Raleway", Sans-serif;font-size:18px;font-weight:400;color:#2B2B2B;}.elementor-3373 .elementor-element.elementor-element-2fd3f077{--display:flex;border-style:solid;--border-style:solid;border-width:0px 0px 0px 4px;--border-top-width:0px;--border-right-width:0px;--border-bottom-width:0px;--border-left-width:4px;border-color:#556DDD;--border-color:#556DDD;--border-radius:0px 0px 0px 0px;--padding-top:0px;--padding-bottom:0px;--padding-left:20px;--padding-right:0px;}.elementor-3373 .elementor-element.elementor-element-28fd34d3{font-family:"Raleway", Sans-serif;font-size:20px;font-weight:600;color:#2A45AC;}.elementor-3373 .elementor-element.elementor-element-d29bae1{font-family:"Raleway", Sans-serif;font-size:18px;font-weight:400;color:#2B2B2B;}.elementor-widget-heading .elementor-heading-title{font-family:var( --e-global-typography-primary-font-family ), Sans-serif;font-weight:var( --e-global-typography-primary-font-weight );color:var( --e-global-color-primary );}.elementor-3373 .elementor-element.elementor-element-6e85ebb .elementor-heading-title{font-family:"Raleway", Sans-serif;font-size:24px;font-weight:700;color:#2A45AC;}.elementor-3373 .elementor-element.elementor-element-6e85ebb{padding:20px 0px 0px 0px;}.elementor-3373 .elementor-element.elementor-element-7577548a{font-family:"Raleway", Sans-serif;font-size:18px;font-weight:400;color:#2B2B2B;}.elementor-3373 .elementor-element.elementor-element-6cd549ea .elementor-heading-title{font-family:"Raleway", Sans-serif;font-size:24px;font-weight:700;color:#2A45AC;}.elementor-3373 .elementor-element.elementor-element-6cd549ea{padding:20px 0px 0px 0px;}.elementor-3373 .elementor-element.elementor-element-a63d7d0{font-family:"Raleway", Sans-serif;font-size:18px;font-weight:400;color:#2B2B2B;}.elementor-3373 .elementor-element.elementor-element-3157507 .elementor-heading-title{font-family:"Raleway", Sans-serif;font-size:24px;font-weight:700;color:#2A45AC;}.elementor-3373 .elementor-element.elementor-element-3157507{padding:20px 0px 0px 0px;}.elementor-3373 .elementor-element.elementor-element-15e7760{font-family:"Raleway", Sans-serif;font-size:18px;font-weight:400;color:#2B2B2B;}.elementor-3373 .elementor-element.elementor-element-1da9232 .elementor-heading-title{font-family:"Raleway", Sans-serif;font-size:24px;font-weight:700;color:#2A45AC;}.elementor-3373 .elementor-element.elementor-element-1da9232{padding:20px 0px 0px 0px;}.elementor-3373 .elementor-element.elementor-element-df93ce8{font-family:"Raleway", Sans-serif;font-size:18px;font-weight:400;color:#2B2B2B;}.elementor-3373 .elementor-element.elementor-element-67b2bf7 .elementor-heading-title{font-family:"Raleway", Sans-serif;font-size:24px;font-weight:700;color:#2A45AC;}.elementor-3373 .elementor-element.elementor-element-67b2bf7{padding:20px 0px 0px 0px;}.elementor-3373 .elementor-element.elementor-element-9276a94{font-family:"Raleway", Sans-serif;font-size:18px;font-weight:400;color:#2B2B2B;}.elementor-3373 .elementor-element.elementor-element-8d9810b .elementor-heading-title{font-family:"Raleway", Sans-serif;font-size:24px;font-weight:700;color:#2A45AC;}.elementor-3373 .elementor-element.elementor-element-8d9810b{padding:20px 0px 0px 0px;}.elementor-3373 .elementor-element.elementor-element-2f929cf{font-family:"Raleway", Sans-serif;font-size:18px;font-weight:400;color:#2B2B2B;}.elementor-3373 .elementor-element.elementor-element-624b94a{--display:flex;--gap:40px 40px;--row-gap:40px;--column-gap:40px;--padding-top:50px;--padding-bottom:080px;--padding-left:0px;--padding-right:0px;}.elementor-3373 .elementor-element.elementor-element-51ef4727{font-family:"Raleway", Sans-serif;font-size:18px;font-weight:400;color:#2B2B2B;}.elementor-3373 .elementor-element.elementor-element-19515962{--display:flex;--padding-top:0px;--padding-bottom:0px;--padding-left:0px;--padding-right:0px;}@media(max-width:1023px){.elementor-3373 .elementor-element.elementor-element-1a8e67d8{--padding-top:100px;--padding-bottom:0px;--padding-left:030px;--padding-right:30px;}.elementor-3373 .elementor-element.elementor-element-37cd0216 .elementor-heading-title{font-size:32px;}.elementor-3373 .elementor-element.elementor-element-768ef912{--gap:10px 10px;--row-gap:10px;--column-gap:10px;}.elementor-3373 .elementor-element.elementor-element-6188e86c{--padding-top:0px;--padding-bottom:0px;--padding-left:10px;--padding-right:010px;}.elementor-3373 .elementor-element.elementor-element-25314161{padding:30px 0px 0px 0px;}.elementor-3373 .elementor-element.elementor-element-12f06242{--gap:20px 20px;--row-gap:20px;--column-gap:20px;--padding-top:50px;--padding-bottom:80px;--padding-left:020px;--padding-right:20px;}.elementor-3373 .elementor-element.elementor-element-f2b1db1{font-size:16px;}.elementor-3373 .elementor-element.elementor-element-28fd34d3{font-size:17px;}.elementor-3373 .elementor-element.elementor-element-d29bae1{font-size:16px;}.elementor-3373 .elementor-element.elementor-element-6e85ebb .elementor-heading-title{font-size:20px;}.elementor-3373 .elementor-element.elementor-element-7577548a{font-size:16px;}.elementor-3373 .elementor-element.elementor-element-6cd549ea .elementor-heading-title{font-size:20px;}.elementor-3373 .elementor-element.elementor-element-3157507 .elementor-heading-title{font-size:20px;}.elementor-3373 .elementor-element.elementor-element-1da9232 .elementor-heading-title{font-size:20px;}.elementor-3373 .elementor-element.elementor-element-67b2bf7 .elementor-heading-title{font-size:20px;}.elementor-3373 .elementor-element.elementor-element-8d9810b .elementor-heading-title{font-size:20px;}.elementor-3373 .elementor-element.elementor-element-624b94a{--gap:20px 20px;--row-gap:20px;--column-gap:20px;--padding-top:50px;--padding-bottom:80px;--padding-left:020px;--padding-right:20px;}.elementor-3373 .elementor-element.elementor-element-51ef4727{font-size:16px;}}@media(min-width:1024px){.elementor-3373 .elementor-element.elementor-element-1a8e67d8{--content-width:900px;}.elementor-3373 .elementor-element.elementor-element-6188e86c{--content-width:900px;}.elementor-3373 .elementor-element.elementor-element-12f06242{--content-width:760px;}.elementor-3373 .elementor-element.elementor-element-624b94a{--content-width:760px;}}/* Start custom CSS for theme-post-featured-image, class: .elementor-element-25314161 */@media (max-width: 768px) {
  .elementor-3373 .elementor-element.elementor-element-25314161 img {
    height: 200px !important;

  }
}

.elementor-3373 .elementor-element.elementor-element-25314161 img {
  width: 100%;
  height: 480px;
  object-fit: cover;
  object-position: center; /* crop from center — change to 'top' if heads get cut off */
  display: block;
}/* End custom CSS */</style>							<content:encoded><![CDATA[		<div data-elementor-type="wp-post" data-elementor-id="3373" class="elementor elementor-3373" data-elementor-post-type="post">
				<div class="elementor-element elementor-element-1a8e67d8 e-flex e-con-boxed e-con e-parent" data-id="1a8e67d8" data-element_type="container" data-e-type="container">
					<div class="e-con-inner">
		<div class="elementor-element elementor-element-95fb960 e-con-full e-flex e-con e-child" data-id="95fb960" data-element_type="container" data-e-type="container">
		<div class="elementor-element elementor-element-2e1c6888 e-con-full e-flex e-con e-child" data-id="2e1c6888" data-element_type="container" data-e-type="container">
				<div class="elementor-element elementor-element-63907a09 elementor-widget elementor-widget-text-editor" data-id="63907a09" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
									← Back to Media Centre								</div>
				<div class="elementor-element elementor-element-3c7416bd elementor-widget elementor-widget-button" data-id="3c7416bd" data-element_type="widget" data-e-type="widget" data-widget_type="button.default">
										<a class="elementor-button elementor-button-link elementor-size-sm" href="https://www.roadcover.co.za/articles/">
						<span class="elementor-button-content-wrapper">
									<span class="elementor-button-text">Road Safety &amp; Public Awareness</span>
					</span>
					</a>
								</div>
				</div>
				</div>
		<div class="elementor-element elementor-element-370b496e e-con-full e-flex e-con e-child" data-id="370b496e" data-element_type="container" data-e-type="container">
				<div class="elementor-element elementor-element-37cd0216 elementor-widget elementor-widget-theme-post-title elementor-page-title elementor-widget-heading" data-id="37cd0216" data-element_type="widget" data-e-type="widget" data-widget_type="theme-post-title.default">
					<h1 class="elementor-heading-title elementor-size-default">What You Can Claim From RAF: A Guide to Road Accident Fund Compensation </h1>				</div>
				</div>
		<div class="elementor-element elementor-element-768ef912 e-con-full e-flex e-con e-child" data-id="768ef912" data-element_type="container" data-e-type="container">
				<div class="elementor-element elementor-element-3ce36e8a elementor-widget__width-initial elementor-widget-divider--view-line elementor-widget elementor-widget-divider" data-id="3ce36e8a" data-element_type="widget" data-e-type="widget" data-widget_type="divider.default">
							<div class="elementor-divider">
			<span class="elementor-divider-separator">
						</span>
		</div>
						</div>
				<div class="elementor-element elementor-element-1a8879ce elementor-widget elementor-widget-text-editor" data-id="1a8879ce" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
									<p>Nokuthula Ngcobo</p>								</div>
				</div>
					</div>
				</div>
		<div class="elementor-element elementor-element-6188e86c e-flex e-con-boxed e-con e-parent" data-id="6188e86c" data-element_type="container" data-e-type="container">
					<div class="e-con-inner">
				<div class="elementor-element elementor-element-25314161 elementor-widget elementor-widget-theme-post-featured-image elementor-widget-image" data-id="25314161" data-element_type="widget" data-e-type="widget" data-widget_type="theme-post-featured-image.default">
															<img decoding="async" width="600" height="300" src="https://www.roadcover.co.za/wp-content/uploads/2026/10/BYY_Knowing_what_you_can_claim_from_the_RAF_is_important_beca_eedb694b-72f9-4c96-a85e-61081f4e1291_2.jpg" class="attachment-large size-large wp-image-3406" alt="What You Can Claim From RAF: A Guide to Road Accident Fund Compensation " srcset="https://www.roadcover.co.za/wp-content/uploads/2026/10/BYY_Knowing_what_you_can_claim_from_the_RAF_is_important_beca_eedb694b-72f9-4c96-a85e-61081f4e1291_2.jpg 600w, https://www.roadcover.co.za/wp-content/uploads/2026/10/BYY_Knowing_what_you_can_claim_from_the_RAF_is_important_beca_eedb694b-72f9-4c96-a85e-61081f4e1291_2-300x150.jpg 300w" sizes="(max-width: 600px) 100vw, 600px" title="What You Can Claim From RAF: A Guide to Road Accident Fund Compensation  3">															</div>
					</div>
				</div>
		<div class="elementor-element elementor-element-12f06242 e-flex e-con-boxed e-con e-parent" data-id="12f06242" data-element_type="container" data-e-type="container">
					<div class="e-con-inner">
				<div class="elementor-element elementor-element-f2b1db1 elementor-widget elementor-widget-text-editor" data-id="f2b1db1" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
									<p><span class="TextRun SCXW184507398 BCX0" lang="EN-ZA" xml:lang="EN-ZA" data-contrast="auto"><span class="NormalTextRun SCXW184507398 BCX0">A road accident can leave you dealing with medical bills, time away from work and injuries that affect your ability to earn an income. For people injured in qualifying road accidents, the Road Accident Fund (RAF) provides compensation for certain losses resulting from the accident.</span></span><span class="EOP Selected SCXW184507398 BCX0" data-ccp-props="{}"> </span></p><p><span class="TextRun SCXW110199737 BCX0" lang="EN-ZA" xml:lang="EN-ZA" data-contrast="auto"><span class="NormalTextRun SCXW110199737 BCX0">Unlike insurance, the RAF is not there to cover damage to your vehicle or </span><span class="NormalTextRun SCXW110199737 BCX0">personal property</span><span class="NormalTextRun SCXW110199737 BCX0">. Its compensation relates to bodily injury or death resulting from the </span><span class="NormalTextRun SCXW110199737 BCX0">negligent </span><span class="NormalTextRun SCXW110199737 BCX0">driving of a motor vehicle. The RAF system also limits a person&#8217;s right to sue the wrongdoer directly for compensation covered by the </span></span><a class="Hyperlink SCXW110199737 BCX0" title="Road Accident Fund Act 56 of 1996." href="https://www.gov.za/sites/default/files/gcis_document/201409/act56of1996.pdf" target="_blank" rel="noopener"><span class="TextRun Underlined SCXW110199737 BCX0" lang="EN-ZA" xml:lang="EN-ZA" data-contrast="none"><span class="NormalTextRun SCXW110199737 BCX0" data-ccp-charstyle="Hyperlink">Road Accident Fund Act 56 of 1996</span><span class="NormalTextRun SCXW110199737 BCX0" data-ccp-charstyle="Hyperlink">.</span></span></a><span class="EOP Selected SCXW110199737 BCX0" data-ccp-props="{}"> </span></p>								</div>
		<div class="elementor-element elementor-element-2fd3f077 e-con-full e-flex e-con e-child" data-id="2fd3f077" data-element_type="container" data-e-type="container">
				<div class="elementor-element elementor-element-28fd34d3 elementor-widget elementor-widget-text-editor" data-id="28fd34d3" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
									<p><span class="TextRun SCXW168422916 BCX0" lang="EN-ZA" xml:lang="EN-ZA" data-contrast="auto"><span class="NormalTextRun SCXW168422916 BCX0">Knowing what you can claim from </span><span class="NormalTextRun SCXW168422916 BCX0">the </span><span class="NormalTextRun SCXW168422916 BCX0">RAF is important because compensation is not limited to immediate medical expenses. Depending on the circumstances of the accident and the severity of the injury, a claim can include medical costs, loss of income and, in </span><span class="NormalTextRun SCXW168422916 BCX0">serious injury</span><span class="NormalTextRun SCXW168422916 BCX0"> cases, general damages for pain and suffering. Dependants of people killed in road accidents may also have claims for loss of support and funeral expenses, according to the </span></span><a class="Hyperlink SCXW168422916 BCX0" title="RAF&#039;s claims information" href="https://www.raf.co.za/Claims/Leaflets1/RAF%20Leaflet_eng.pdf" target="_blank" rel="noopener"><span class="TextRun Underlined SCXW168422916 BCX0" lang="EN-ZA" xml:lang="EN-ZA" data-contrast="none"><span class="NormalTextRun SCXW168422916 BCX0" data-ccp-charstyle="Hyperlink">RAF&#8217;s claims information</span></span></a><span class="TextRun SCXW168422916 BCX0" lang="EN-ZA" xml:lang="EN-ZA" data-contrast="auto"><span class="NormalTextRun SCXW168422916 BCX0">.</span></span><span class="EOP Selected SCXW168422916 BCX0" data-ccp-props="{}"> </span></p>								</div>
				</div>
				<div class="elementor-element elementor-element-d29bae1 elementor-widget elementor-widget-text-editor" data-id="d29bae1" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
									<p><span data-contrast="auto">This is where RoadCover comes in. Navigating a RAF claim can be complicated, particularly when you are dealing with injuries, medical assessments, documentation and questions around liability. RoadCover navigates the RAF claims process, allowing you to focus on your recovery while your claim is handled from start to finish. </span><span data-ccp-props="{}"> </span></p><p><span data-contrast="auto">Being injured in a road accident does not automatically mean you can claim from the RAF. The circumstances of the accident and who was at fault also matter.</span><span data-ccp-props="{}"> </span></p>								</div>
				<div class="elementor-element elementor-element-6e85ebb elementor-widget elementor-widget-heading" data-id="6e85ebb" data-element_type="widget" data-e-type="widget" data-widget_type="heading.default">
					<h3 class="elementor-heading-title elementor-size-default">Is RAF a no-fault claim system? </h3>				</div>
				<div class="elementor-element elementor-element-7577548a elementor-widget elementor-widget-text-editor" data-id="7577548a" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
									<p><span data-contrast="auto">No. The RAF is </span><b><span data-contrast="auto">not a pure no-fault compensation system</span></b><span data-contrast="auto">, meaning it does not automatically pay out claims regardless of who caused the accident. Instead, fault and liability are considered in determining compensation.”</span><span data-ccp-props="{}"> </span></p>
<p><span data-contrast="auto">The RAF Act provides for compensation where bodily injury or death results from the driving of a motor vehicle and is due to the negligence or another wrongful act of the driver or owner, subject to the requirements of the Act.</span><span data-ccp-props="{}"> </span></p>
<p><span data-contrast="auto">The circumstances of the accident and the degree of fault therefore remain relevant to a claim.</span><span data-ccp-props="{}"> </span></p>
<p><span data-contrast="auto">The RAF investigates the merits of a claim, including the degree of fault, blame or negligence attributable to the drivers and the claimant.</span><span data-ccp-props="{}"> </span></p>								</div>
				<div class="elementor-element elementor-element-6cd549ea elementor-widget elementor-widget-heading" data-id="6cd549ea" data-element_type="widget" data-e-type="widget" data-widget_type="heading.default">
					<h3 class="elementor-heading-title elementor-size-default">What are you entitled to claim from the Road Accident Fund? </h3>				</div>
				<div class="elementor-element elementor-element-a63d7d0 elementor-widget elementor-widget-text-editor" data-id="a63d7d0" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
									<p><span data-contrast="auto">What you can claim from the RAF depends on the circumstances of the accident, the injuries suffered and the losses that can be established.</span><span data-ccp-props="{}"> </span></p>
<p><span data-contrast="auto">The main categories of compensation are:</span><span data-ccp-props="{}"> </span></p>
<p><b><span data-contrast="auto">Medical and hospital expenses</span></b><span data-ccp-props="{}"> </span></p>
<p><span data-contrast="auto">You can claim for medical expenses resulting from injuries sustained in the accident. This can include past medical costs as well as qualifying future medical treatment and related expenses.</span><span data-ccp-props="{}"> </span></p>
<p><span data-contrast="auto">The RAF provides for past and future hospital and medical expenses. Future treatment may be covered through an undertaking from the Fund, rather than being paid as one lump sum.</span><span data-ccp-props="{}"> </span></p>
<p><b><span data-contrast="auto">Loss of earnings</span></b><span data-ccp-props="{}"> </span></p>
<p><span data-contrast="auto">If your injuries prevent you from working, reduce your earning capacity or affect your ability to earn income in the future, you may claim for past and future loss of earnings.</span><span data-ccp-props="{}"> </span></p>
<p><span data-contrast="auto">This claim is subject to a statutory limit that is adjusted quarterly for inflation. The applicable limit depends on the date of the accident. The annual limit currently stands at </span><b><span data-contrast="auto">R390</span></b><b><span data-contrast="auto"> </span></b><b><span data-contrast="auto">664</span></b><span data-contrast="auto">, subject to quarterly inflation adjustments. It is an annual statutory limit used when calculating loss of earnings and loss of support and can be coupled with other payouts.</span><span data-ccp-props="{}"> </span></p>
<p><b><span data-contrast="auto">General damages</span></b><span data-ccp-props="{}"> </span></p>
<p><span data-contrast="auto">General damages cover non-financial losses such as pain, suffering, disfigurement and loss of ability to conduct daily activities.</span><span data-ccp-props="{}"> </span></p>
<p><span data-contrast="auto">However, these damages are limited to cases involving a serious injury, which must be assessed according to the prescribed process.</span><span data-ccp-props="{}"> </span></p>
<p><b><span data-contrast="auto">Loss of support</span></b><span data-ccp-props="{}"> </span></p>
<p><span data-contrast="auto">If a breadwinner dies in a qualifying road accident, dependants may be able to claim compensation for the loss of financial support they would have received. The RAF recognises both past and future loss of support. </span><span data-ccp-props="{}"> </span></p>
<p><b><span data-contrast="auto">Funeral expenses</span></b><span data-ccp-props="{}"> </span></p>
<p><span data-contrast="auto">A dependent of someone who dies in a qualifying road accident may claim necessary funeral expenses. The funeral costs must be incurred or paid first, after which an itemised invoice or proof of payment can be submitted to claim reimbursement and supporting documentation is required.</span><span data-ccp-props="{}"> </span></p>								</div>
				<div class="elementor-element elementor-element-3157507 elementor-widget elementor-widget-heading" data-id="3157507" data-element_type="widget" data-e-type="widget" data-widget_type="heading.default">
					<h3 class="elementor-heading-title elementor-size-default">Does the RAF cover pain and suffering? </h3>				</div>
				<div class="elementor-element elementor-element-15e7760 elementor-widget elementor-widget-text-editor" data-id="15e7760" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
									<p><span data-contrast="auto">Yes, but </span><b><span data-contrast="auto">not every injury qualifies for compensation for pain and suffering</span></b><span data-contrast="auto">.</span><span data-ccp-props="{}"> </span></p><p><span data-contrast="auto">Pain and suffering fall under general damages. </span><a title="RAF Act" href="https://www.gov.za/sites/default/files/gcis_document/201409/a19-050.pdf" target="_blank" rel="noopener"><span data-contrast="none">Under the RAF Act</span></a><span data-contrast="auto">, however, these damages are limited to claimants who have suffered a serious injury.</span><span data-ccp-props="{}"> </span></p><p><span data-contrast="auto">A serious injury must be assessed using the prescribed procedure. The RAF requires a Serious Injury Assessment Report for claims for general damages arising from accidents after 1 August 2008.</span><span data-ccp-props="{}"> </span></p><p><span data-contrast="auto">The Serious Injury Assessment Report process can be timely, expensive and confusing, particularly for someone who is already dealing with the consequences of a serious road accident. Understanding what is required and making sure the assessment is completed correctly can affect whether a claim for general damages can proceed.</span><span data-ccp-props="{}"> </span></p><p><span data-contrast="auto">This is another area where RoadCover’s legal team can help members. Instead of trying to navigate the process alone, RoadCover manages its members’ RAF claims and the processes involved in establishing the claims.</span><span data-ccp-props="{}"> </span></p><p><span data-contrast="auto">A person may therefore still have a claim for medical expenses or loss of income even if their injury does not qualify for general damages.</span><span data-ccp-props="{}"> </span></p>								</div>
				<div class="elementor-element elementor-element-1da9232 elementor-widget elementor-widget-heading" data-id="1da9232" data-element_type="widget" data-e-type="widget" data-widget_type="heading.default">
					<h3 class="elementor-heading-title elementor-size-default">Can you claim for future medical costs from RAF? </h3>				</div>
				<div class="elementor-element elementor-element-df93ce8 elementor-widget elementor-widget-text-editor" data-id="df93ce8" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
									<p><span data-contrast="auto">Yes. Future medical costs can form part of a claim where an accident results in a need for ongoing treatment or care.</span><span data-ccp-props="{}"> </span></p>
<p><span data-contrast="auto">These costs may include future medical treatment, hospitalisation, rehabilitation, therapy, assistive devices or other accident-related medical needs. The RAF Act provides for future medical expenses through an undertaking by the Fund. This is a formal commitment by the RAF to cover medical expenses that may arise from the accident, provided the required documentation is submitted.</span><span data-ccp-props="{}"> </span></p>
<p><span data-contrast="auto">This can be particularly important where an injury has long-term consequences. The RAF advises claimants to retain hospital and medical records, accounts and details of the medical practitioners involved in their treatment.</span><span data-ccp-props="{}"> </span></p>								</div>
				<div class="elementor-element elementor-element-67b2bf7 elementor-widget elementor-widget-heading" data-id="67b2bf7" data-element_type="widget" data-e-type="widget" data-widget_type="heading.default">
					<h3 class="elementor-heading-title elementor-size-default">What is the maximum RAF payout in South Africa? </h3>				</div>
				<div class="elementor-element elementor-element-9276a94 elementor-widget elementor-widget-text-editor" data-id="9276a94" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
									<p><span data-contrast="auto">There is </span><b><span data-contrast="auto">no single maximum RAF payout</span></b><span data-contrast="auto"> that applies to every claim.</span><span data-ccp-props="{}"> </span></p><p><span data-contrast="auto">The value depends on the categories of loss that apply, including medical expenses, loss of income, general damages and, where applicable, loss of support and funeral expenses.</span><span data-ccp-props="{}"> </span></p><p><span data-contrast="auto">The sad and unjust reality is that many RAF settlements never reach the intended claimant 100%, as many third parties deduct fees and expenses, sometimes resulting in up to 40% of the final settlement; e.g. if the settlement is R1 million, the claimant may end up getting only R600 000. This is not the case with RoadCover because its members get 100% of their settlement.</span><span data-ccp-props="{}"> </span></p>								</div>
				<div class="elementor-element elementor-element-8d9810b elementor-widget elementor-widget-heading" data-id="8d9810b" data-element_type="widget" data-e-type="widget" data-widget_type="heading.default">
					<h3 class="elementor-heading-title elementor-size-default">What you need to support a claim from RAF </h3>				</div>
				<div class="elementor-element elementor-element-2f929cf elementor-widget elementor-widget-text-editor" data-id="2f929cf" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
									<p><span data-contrast="auto">Evidence is central to a successful RAF claim.</span><span data-ccp-props="{}"> </span></p><p><span data-contrast="auto">The Fund&#8217;s claims documentation lists documents that may be required, including identification documents, accident reports, witness information, proof of earnings, medical documentation and hospital records. A Serious Injury Assessment Report is required when you claim general damages for a qualifying serious injury. </span><span data-ccp-props="{}"> </span></p><p><span data-contrast="auto">RAF claims can involve complex questions around liability, medical evidence, future losses and the calculation of damages. Understanding what you can claim from the RAF and having the necessary evidence can help ensure that all relevant losses are properly considered. </span><span data-ccp-props="{}"> </span></p><p><span data-contrast="auto">The RAF claims process can be costly, time-consuming and confusing. This is where RoadCover steps in, handling the process on behalf of its members so they can focus on their recovery.</span><span data-ccp-props="{}"> </span></p>								</div>
					</div>
				</div>
		<div class="elementor-element elementor-element-624b94a e-flex e-con-boxed e-con e-parent" data-id="624b94a" data-element_type="container" data-e-type="container">
					<div class="e-con-inner">
				<div class="elementor-element elementor-element-51ef4727 elementor-widget elementor-widget-text-editor" data-id="51ef4727" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
									<p><strong>Disclaimer:</strong> <em>The information provided in this article was correct at the time of publication and is intended for general guidance only. It is subject to change without notice as laws, regulations and membership terms evolve. RoadCover and the Road Accident Fund operate within dynamic legal frameworks and readers should verify current requirements before making decisions or entering into agreements.</em></p>								</div>
					</div>
				</div>
		<div class="elementor-element elementor-element-19515962 e-flex e-con-boxed e-con e-parent" data-id="19515962" data-element_type="container" data-e-type="container">
					<div class="e-con-inner">
				<div class="elementor-element elementor-element-1d27fdc3 elementor-widget elementor-widget-shortcode" data-id="1d27fdc3" data-element_type="widget" data-e-type="widget" data-widget_type="shortcode.default">
							<div class="elementor-shortcode">		<div data-elementor-type="container" data-elementor-id="2657" class="elementor elementor-2657" data-elementor-post-type="elementor_library">
				<div class="elementor-element elementor-element-1b2aafda e-con-full e-flex e-con e-parent" data-id="1b2aafda" data-element_type="container" data-e-type="container">
				<div class="elementor-element elementor-element-4e06f177 elementor-widget elementor-widget-html" data-id="4e06f177" data-element_type="widget" data-e-type="widget" data-widget_type="html.default">
					<link href="https://fonts.googleapis.com/css2?family=Raleway:wght@400;500;600;700;800&display=swap" rel="stylesheet">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.0/css/all.min.css">

<script src="https://www.google.com/recaptcha/api.js?render=6LdwjNosAAAAAK5qrEyD0FybwyViVZOqamPK1Fnr" async defer></script>

<style>
/* ===============================================================
   RoadCover — Pricing + Onboarding Form
   All selectors scoped to #rc-pricing to avoid host-page bleed.
   PLN codes live on data-plan-code attributes of .rc-btn elements.
   ================================================================ */

#rc-pricing *, #rc-pricing *::before, #rc-pricing *::after {
    box-sizing: border-box;
}
#rc-pricing {
    font-family: 'Raleway', sans-serif;
    width: 100%;
    color: #1f2937;

    /* Plan-card palette — scoped to the embed, never :root, so the
       host page's own custom properties are left untouched. */
    --rc-blue:      #2B4FD4;
    --rc-blue-dark: #1A3399;
    --rc-gold:      #F5C842;
    --rc-gold-dark: #D4A800;
    --rc-text:      #0D1B3E;
    --rc-muted:     #6B7280;
    --rc-border:    #E4E9F8;
    --rc-success:   #16A34A;
}
.rc-wrapper {
    display: flex;
    flex-direction: column;
    gap: 48px;
}

/* ── Header ─────────────────────────────────────────────────────── */
.rc-header { text-align: center; }
.rc-header h2 {
    font-size: 30px;
    font-weight: 800;
    margin: 0 0 8px;
    color: #111827;
}
.rc-header p {
    font-size: 15px;
    color: #6b7280;
    margin: 0;
}

/* ── Single Plan Card ───────────────────────────────────────────── */
/* One responsive card serves both desktop and mobile — there is no
   longer a separate table/card pair to keep in sync. */
.rc-plan-card {
    position: relative;
    background: #fff;
    border: 1px solid var(--rc-border);
    border-radius: 18px;
    overflow: hidden;
    box-shadow: 0 10px 30px rgba(13, 27, 62, 0.08);
}

.rc-plan-header {
    position: relative;
    overflow: hidden;
    background: linear-gradient(135deg, var(--rc-blue) 0%, var(--rc-blue-dark) 100%);
    padding: 32px 28px 30px;
    text-align: center;
}
.rc-plan-header::before {
    content: '';
    position: absolute;
    width: 220px;
    height: 220px;
    right: -90px;
    top: -70px;
    border-radius: 50%;
    background: rgba(255, 255, 255, 0.08);
}
.rc-plan-header::after {
    content: '';
    position: absolute;
    width: 140px;
    height: 140px;
    left: -50px;
    bottom: -50px;
    border-radius: 50%;
    background: rgba(245, 200, 66, 0.14);
}
.rc-plan-header > * { position: relative; z-index: 2; }

.rc-plan-name {
    font-size: 11px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.1em;
    color: rgba(255, 255, 255, 0.65);
    margin-bottom: 6px;
}
.rc-plan-price {
    font-size: 44px;
    font-weight: 900;
    color: var(--rc-gold);
    line-height: 1.1;
}
.rc-plan-price-unit {
    font-size: 14px;
    font-weight: 600;
    color: rgba(255, 255, 255, 0.6);
}
.rc-plan-subprice {
    margin-top: 6px;
    font-size: 12px;
    font-weight: 600;
    color: var(--rc-gold);
    min-height: 16px;
}

.rc-plan-rows { padding: 6px 28px; }
.rc-plan-row {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    padding: 14px 0;
    border-bottom: 1px solid var(--rc-border);
}
.rc-plan-row:last-child { border-bottom: none; }
.rc-plan-row-label {
    font-size: 13.5px;
    font-weight: 600;
    color: var(--rc-text);
}
.rc-plan-row-icon {
    width: 22px;
    height: 22px;
    flex-shrink: 0;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    background: #ECFDF3;
    color: var(--rc-success);
}
.rc-plan-row-icon svg { width: 13px; height: 13px; display: block; }

.rc-plan-cta-block { padding: 20px 28px 26px; }
.rc-plan-cta-hint {
    text-align: center;
    margin-top: 10px;
    font-size: 11px;
    color: var(--rc-muted);
}

/* ── Plan Select Button (JS hook: .rc-btn) ──────────────────────── */
.rc-btn {
    width: 100%;
    padding: 13px 18px;
    border: none;
    border-radius: 10px;
    background: var(--rc-gold);
    color: var(--rc-text);
    font-family: inherit;
    font-size: 14px;
    font-weight: 800;
    letter-spacing: 0.01em;
    cursor: pointer;
    transition: background 0.15s, transform 0.1s;
}
.rc-btn:hover   { background: var(--rc-gold-dark); }
.rc-btn:active  { transform: scale(0.99); }
.rc-btn.rc-selected { background: var(--rc-gold-dark); }

/* ── Form Section ───────────────────────────────────────────────── */
#rc-form-section { display: none; }
#rc-form-section.rc-visible {
    display: block;
    animation: rc-fadein 0.22s ease;
}
@keyframes rc-fadein {
    from { opacity: 0; transform: translateY(10px); }
    to   { opacity: 1; transform: translateY(0); }
}

.rc-form-inner {
    display: flex;
    flex-direction: column;
    gap: 22px;
    background: linear-gradient(135deg, #2A45AC, #1f358a);
    border-radius: 12px;
    padding: 40px;
}

.rc-selected-badge {
    display: inline-block;
    background: rgba(255, 255, 255, 0.15);
    color: #FFD84D;
    font-size: 13px;
    font-weight: 700;
    border-radius: 6px;
    padding: 7px 13px;
}

.rc-form-title {
    font-size: 20px;
    font-weight: 800;
    color: #fff;
    margin: 0;
}

/* Field grid — first two fields sit side-by-side */
.rc-field-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 14px;
}
.rc-field-full { grid-column: 1 / -1; }

.rc-field {
    display: flex;
    flex-direction: column;
    gap: 5px;
}
.rc-field-label {
    font-size: 11px;
    font-weight: 700;
    color: rgba(255, 255, 255, 0.7);
    text-transform: uppercase;
    letter-spacing: 0.05em;
}

/* Icon floats over the input; no separate column, no column border */
.rc-input-row {
    position: relative;
    border: 1px solid #6f7ec1;
    border-radius: 8px;
    background: #3d54ac;
    transition: border-color 0.15s, box-shadow 0.15s;
}
.rc-input-row:focus-within {
    border-color: #a0aee0;
    box-shadow: 0 0 0 3px rgba(111, 126, 193, 0.3);
}
.rc-input-row:has(.invalid) { border-color: #FF3B30; }
.rc-input-row:has(.invalid):focus-within {
    box-shadow: 0 0 0 3px rgba(129, 12, 12, 0.25);
}

.rc-input-icon {
    position: absolute;
    left: 14px;
    top: 50%;
    transform: translateY(-50%);
    color: rgba(255, 255, 255, 0.55);
    font-size: 14px;
    pointer-events: none;
}

.rc-input {
    display: block;
    width: 100%;
    padding: 11px 14px 11px 44px !important;
    border: 0;
    box-shadow: none;
    border-radius: 8px;
    background: transparent;
    font-family: inherit;
    font-size: 14px;
    color: #fff;
    -webkit-appearance: none;
    appearance: none;
    outline: none;
}
#rc-pricing .rc-input::placeholder { color: rgb(248, 248, 248); }
.rc-input.invalid { /* border shown via :has on .rc-input-row */ }

/* Native select chevron */
select.rc-input {
    padding-right: 36px;
    background-color: #3d54ac;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='7' viewBox='0 0 12 7'%3E%3Cpolyline points='1,1 6,6 11,1' fill='none' stroke='%23a0aee0' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
    background-repeat: no-repeat;
    background-position: right 12px center;
    cursor: pointer;
    color: #fff;
}

.rc-field-error {
    font-size: 12px;
    color: #FF3B30;
    margin: 0;
    line-height: 1.4;
}

/* T&C checkbox */
.rc-terms {
    display: flex;
    align-items: center;
    gap: 10px;
    font-size: 14px;
    color: rgba(255, 255, 255, 0.85);
    cursor: pointer;
    user-select: none;
}
.rc-terms input[type="checkbox"] {
    width: 17px;
    height: 17px;
    cursor: pointer;
    flex-shrink: 0;
    accent-color: #FFD84D;
}
.rc-terms.invalid { color: #FF3B30; }
.rc-terms.invalid input[type="checkbox"] {
    outline: 2px solid #FF3B30;
    outline-offset: 2px;
    border-radius: 2px;
}

.rc-submit:disabled,
.rc-submit:disabled:hover {
    background: #FFD84D; /* same as default */
    cursor: not-allowed;
}
/* Submit button */
.rc-submit {
    width: 100%;
    padding: 14px 20px;
    border: none;
    border-radius: 10px;
    background: #FFD84D;
    color: #1f358a;
    font-family: inherit;
    font-size: 15px;
    font-weight: 700;
    cursor: pointer;
    transition: background 0.15s, transform 0.1s;
    letter-spacing: 0.01em;
}
.rc-submit:hover:not([disabled]) { background: #f5cc35; }
.rc-submit:active:not([disabled]) { transform: scale(0.99); }
.rc-submit[disabled] { opacity: 0.5; cursor: not-allowed; }

.rc-form-error {
    font-size: 13px;
    color: #FF3B30;
    margin: 0;
    line-height: 1.5;
}

.rc-recaptcha-notice {
    font-size: 11px;
    color: rgba(255, 255, 255, 0.45);
    margin: 0;
    line-height: 1.5;
    text-align: center;
}
.rc-recaptcha-notice a {
    color: rgba(255, 255, 255, 0.55);
    text-decoration: underline;
}

/* ── Billing Toggle ─────────────────────────────────────────────── */
/* Sits on the dark gradient header, so it is styled for a dark ground. */
.rc-billing-toggle {
    display: inline-flex;
    background: rgba(255, 255, 255, 0.12);
    border: 1.5px solid rgba(255, 255, 255, 0.2);
    border-radius: 999px;
    padding: 3px;
    gap: 2px;
    margin-bottom: 20px;
}
.rc-toggle-opt {
    padding: 7px 20px;
    border: none;
    border-radius: 999px;
    background: transparent;
    color: rgba(255, 255, 255, 0.75);
    font-family: inherit;
    font-size: 12.5px;
    font-weight: 700;
    cursor: pointer;
    transition: background 0.2s ease, color 0.2s ease;
    white-space: nowrap;
    line-height: 1;
}
.rc-toggle-opt:hover:not(.rc-toggle-active) {
    background: rgba(255, 255, 255, 0.08);
}
.rc-toggle-opt.rc-toggle-active {
    background: var(--rc-gold);
    color: var(--rc-text);
}

.rc-save-badge {
    display: inline-block;
    margin-left: 6px;
    padding: 1px 6px;
    border-radius: 999px;
    font-size: 9.5px;
    font-weight: 800;
    color: rgba(255, 255, 255, 0.85);
    background: rgba(255, 255, 255, 0.16);
}
/* On the gold active pill, white-on-gold is unreadable — invert it. */
.rc-toggle-active .rc-save-badge {
    color: var(--rc-text);
    background: rgba(13, 27, 62, 0.12);
}

/* ── Responsive ─────────────────────────────────────────────────── */
@media (max-width: 700px) {
    #rc-pricing     { padding: 0px 0px; }
    .rc-wrapper     { gap: 32px; }
    .rc-plan-header { padding: 28px 20px 26px; }
    .rc-plan-price  { font-size: 38px; }
    .rc-plan-rows   { padding: 6px 20px; }
    .rc-plan-cta-block { padding: 18px 20px 22px; }
    .rc-field-grid  { grid-template-columns: 1fr; }
    .rc-field-full  { grid-column: 1; }
    .rc-form-inner  { padding: 24px 20px; }
    .rc-header h2   { font-size: 24px; }
}
</style>

<!-- ================================================================
     PRICING TABLE + ONBOARDING FORM
     ================================================================ -->
<div id="rc-pricing">
  <div class="rc-wrapper">

    <!-- Single plan card — one responsive card for desktop and mobile -->
    <div class="rc-plan-card" data-plan-key="RoadCover">

      <div class="rc-plan-header">
        <div class="rc-billing-toggle" role="group" aria-label="Billing period">
          <button type="button" class="rc-toggle-opt rc-toggle-active" data-billing="monthly">Monthly</button>
          <button type="button" class="rc-toggle-opt" data-billing="annual">Annual <span class="rc-save-badge">Save 6%</span></button>
        </div>

        <div class="rc-plan-name">RoadCover</div>
        <div class="rc-plan-price"><span class="rc-plan-price-val">R49</span><span class="rc-plan-price-unit">/mo</span></div>
        <div class="rc-plan-subprice" hidden></div>
      </div>

      <div class="rc-plan-rows">
        <div class="rc-plan-row">
          <span class="rc-plan-row-label">RAF Claim Support</span>
          <span class="rc-plan-row-icon" role="img" aria-label="Included">
            <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><polyline points="20 6 9 17 4 12"></polyline></svg>
          </span>
        </div>
        <div class="rc-plan-row">
          <span class="rc-plan-row-label">Legal Expertise</span>
          <span class="rc-plan-row-icon" role="img" aria-label="Included">
            <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><polyline points="20 6 9 17 4 12"></polyline></svg>
          </span>
        </div>
      </div>

      <div class="rc-plan-cta-block">
        <button class="rc-btn"
                data-plan="RoadCover"
                data-plan-code="RC49"
                data-price="49.00 /Month">Select RoadCover &#8594;</button>
        <div class="rc-plan-cta-hint">No fees. 100% of your payout.</div>
      </div>

    </div><!-- /.rc-plan-card -->

    <!-- Form: hidden until a plan is selected -->
    <div id="rc-form-section">
      <form id="roadcover-form" novalidate>

        <!-- product_code is set programmatically on plan button click -->
        <input type="hidden" name="product_code" id="cover-input">
        <input type="hidden" name="form_id"   value="9a3d492">
        <input type="hidden" name="form_name" value="Get RoadCover">

        <div class="rc-form-inner">

          <div id="selectedPlan" class="rc-selected-badge">Selected: &#8212;</div>
          <p class="rc-form-title">Enter your details</p>

          <div class="rc-field-grid">

            <!-- Row 1: name -->
            <div class="rc-field">
              <label class="rc-field-label" for="rc-first-name">First name *</label>
              <div class="rc-input-row">
                <i class="fa-solid fa-user rc-input-icon" aria-hidden="true"></i>
                <input class="rc-input" type="text" id="rc-first-name"
                       name="first_name" required maxlength="60" placeholder="First name">
              </div>
            </div>

            <div class="rc-field">
              <label class="rc-field-label" for="rc-last-name">Last name *</label>
              <div class="rc-input-row">
                <i class="fa-solid fa-user rc-input-icon" aria-hidden="true"></i>
                <input class="rc-input" type="text" id="rc-last-name"
                       name="last_name" required maxlength="60" placeholder="Last name">
              </div>
            </div>

            <!-- Row 2: identity -->
            <div class="rc-field">
              <label class="rc-field-label" for="rc-id">ID number *</label>
              <div class="rc-input-row">
                <i class="fa-solid fa-id-card rc-input-icon" aria-hidden="true"></i>
                <input class="rc-input" type="text" id="rc-id"
                       name="identificationnr" required pattern="[0-9]{13}"
                       inputmode="numeric" maxlength="13"
                       placeholder="13-digit SA ID number">
              </div>
            </div>

            <div class="rc-field">
              <label class="rc-field-label" for="rc-gender">Gender *</label>
              <div class="rc-input-row">
                <i class="fa-solid fa-venus-mars rc-input-icon" aria-hidden="true"></i>
                <select class="rc-input" id="rc-gender" name="gender" required>
                  <option value="">Select&hellip;</option>
                  <option value="1">Male</option>
                  <option value="2">Female</option>
                </select>
              </div>
            </div>

            <!-- Row 3: contact -->
            <div class="rc-field">
              <label class="rc-field-label" for="rc-email">Email *</label>
              <div class="rc-input-row">
                <i class="fa-solid fa-envelope rc-input-icon" aria-hidden="true"></i>
                <input class="rc-input" type="email" id="rc-email"
                       name="email" required maxlength="254"
                       placeholder="you@example.com">
              </div>
            </div>

            <div class="rc-field">
              <label class="rc-field-label" for="rc-mobile">Mobile *</label>
              <div class="rc-input-row">
                <i class="fa-solid fa-phone rc-input-icon" aria-hidden="true"></i>
                <input class="rc-input" type="tel" id="rc-mobile"
                       name="mobile" required inputmode="tel"
                       placeholder="0XXXXXXXXX or +27XXXXXXXXX">
              </div>
            </div>

            <!-- Row 4: optional -->
            <div class="rc-field rc-field-full">
              <label class="rc-field-label" for="rc-promo">Promo code</label>
              <div class="rc-input-row">
                <i class="fa-solid fa-tag rc-input-icon" aria-hidden="true"></i>
                <input class="rc-input" type="text" id="rc-promo"
                       name="promo_code" maxlength="32" placeholder="Optional">
              </div>
            </div>

          </div><!-- /.rc-field-grid -->

          <label class="rc-terms">
            <input type="checkbox" name="I accept the Terms and Conditions." required>
            <span>I accept the Terms and Conditions.</span>
          </label>

          <button type="submit" id="submit-btn" class="rc-submit">Continue</button>
          <p id="form-error" class="rc-form-error" hidden></p>

          <p class="rc-recaptcha-notice">This site is protected by reCAPTCHA and the Google <a href="https://policies.google.com/privacy" target="_blank" rel="noopener noreferrer">Privacy Policy</a> and <a href="https://policies.google.com/terms" target="_blank" rel="noopener noreferrer">Terms of Service</a> apply.</p>

        </div><!-- /.rc-form-inner -->
      </form>
    </div><!-- /#rc-form-section -->

  </div><!-- /.rc-wrapper -->
</div><!-- /#rc-pricing -->

<script>
(function () {
    var form           = document.getElementById('roadcover-form');
    var errEl          = document.getElementById('form-error');
    var submitBtn      = document.getElementById('submit-btn');
    var coverInput     = document.getElementById('cover-input');
    var formSection    = document.getElementById('rc-form-section');
    var selectedPlanEl = document.getElementById('selectedPlan');
    var pricing        = document.getElementById('rc-pricing');

    var currentPrice   = '';
    var isAnnual       = false;
    var currentPlanBtn = null;

    // ── Plan + billing data ───────────────────────────────────────────────────
    var planData = {
        'RoadCover': {
            monthly: { priceVal: 'R49', unit: '/mo', code: 'RC49',         priceStr: '49.00 /Month',  subprice: '' },
            annual:  { priceVal: 'R550', unit: '/yr', code: 'PRD-CB838AEF', priceStr: '550.00 /Year', subprice: '~R46/mo' }
        }
    };

    // ── Apply billing mode to all price displays and button codes ─────────────
    function applyBilling() {
        var mode = isAnnual ? 'annual' : 'monthly';

        // Plan card price display
        pricing.querySelectorAll('.rc-plan-card[data-plan-key]').forEach(function (card) {
            var d = planData[card.dataset.planKey][mode];
            card.querySelector('.rc-plan-price-val').textContent  = d.priceVal;
            card.querySelector('.rc-plan-price-unit').textContent = d.unit;
            var sub = card.querySelector('.rc-plan-subprice');
            sub.textContent = d.subprice;
            sub.hidden      = !d.subprice;
        });

        // Update data-plan-code on all buttons so selection highlighting still works
        pricing.querySelectorAll('.rc-btn').forEach(function (btn) {
            var key = btn.dataset.plan;
            if (!planData[key]) return;
            btn.dataset.planCode = planData[key][mode].code;
            btn.dataset.price    = planData[key][mode].priceStr;
        });

        // If a plan was already selected, refresh the hidden input + badge + button label
        if (currentPlanBtn) {
            var key     = currentPlanBtn.dataset.plan;
            var d       = planData[key][mode];
            var billing = isAnnual ? 'Annual' : 'Monthly';
            coverInput.value           = d.code;
            currentPrice               = d.priceStr;
            selectedPlanEl.textContent = 'Selected: ' + key + ' (' + billing + ')';
            updateButton();
        }
    }

    // ── Helpers (mirrored in n8n Code node — keep in sync) ───────────────────

    function clean(v) {
        if (v === null || v === undefined) return '';
        var s = String(v);
        s = s.replace(/[\x00-\x08\x0B\x0C\x0E-\x1F\x7F]/g, '');
        s = s.replace(/<script\b[^>]*>[\s\S]*?<\/script\s*>/gi, '');
        s = s.replace(/<\/?[a-zA-Z][^>]*>/g, '');
        s = s.replace(/javascript\s*:/gi, '');
        s = s.replace(/\s+/g, ' ').trim();
        return s;
    }

    function luhnValid(idStr) {
        var sum = 0;
        for (var i = 0; i < 13; i++) {
            var n = parseInt(idStr.charAt(i), 10);
            if (i % 2 === 1) { n *= 2; if (n > 9) n -= 9; }
            sum += n;
        }
        return sum % 10 === 0;
    }

    // Returns { ok: true } or { ok: false, field, message }
    function validate(data) {
        var required = {
            product_code:       'Please select a cover plan.',
            first_name:         'First name is required.',
            last_name:          'Last name is required.',
            email:              'Email is required.',
            mobile:             'Mobile number is required.',
            identificationnr:   'ID number is required.',
            gender:             'Please select your gender.'
        };
        for (var k in required) {
            if (!data[k]) return { ok: false, field: k, message: required[k] };
        }

        if (data.first_name.length > 60)
            return { ok: false, field: 'first_name', message: 'First name is too long (max 60).' };
        if (data.last_name.length > 60)
            return { ok: false, field: 'last_name', message: 'Last name is too long (max 60).' };

        var emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
        if (!emailRegex.test(data.email))
            return { ok: false, field: 'email', message: 'Please enter a valid email address.' };
        if (data.email.length > 254)
            return { ok: false, field: 'email', message: 'Email is too long.' };

        var mobileRegex = /^(\+27|0)[0-9]{9}$/;
        if (!mobileRegex.test(data.mobile))
            return { ok: false, field: 'mobile', message: 'Mobile must be 10 digits starting with 0, or +27 followed by 9 digits.' };

        var genderNum = Number(data.gender);
        if (genderNum !== 1 && genderNum !== 2)
            return { ok: false, field: 'gender', message: 'Please select your gender.' };

        if (!/^[0-9]{13}$/.test(data.identificationnr))
            return { ok: false, field: 'identificationnr', message: 'ID number must be exactly 13 digits.' };

        var yy        = parseInt(data.identificationnr.substring(0, 2), 10);
        var mm        = parseInt(data.identificationnr.substring(2, 4), 10);
        var dd        = parseInt(data.identificationnr.substring(4, 6), 10);
        var now       = new Date();
        var currentYY = now.getFullYear() % 100;
        var fullYear  = (yy > currentYY) ? (1900 + yy) : (2000 + yy);
        var dob       = new Date(fullYear, mm - 1, dd);
        var dobValid  =
            dob.getFullYear() === fullYear &&
            dob.getMonth()    === (mm - 1) &&
            dob.getDate()     === dd       &&
            dob <= now;
        if (!dobValid)
            return { ok: false, field: 'identificationnr', message: 'The first 6 digits of your ID number are not a valid date of birth.' };

        var genderDigits = parseInt(data.identificationnr.substring(6, 10), 10);
        var idGender     = genderDigits >= 5000 ? 1 : 2;
        if (idGender !== genderNum) {
            var expected = idGender === 1 ? 'Male' : 'Female';
            return { ok: false, field: 'identificationnr',
                     message: 'The selected gender does not match your ID number (ID indicates ' + expected + ').' };
        }

        if (!luhnValid(data.identificationnr))
            return { ok: false, field: 'identificationnr', message: 'ID number checksum is invalid. Please check the number.' };

        return { ok: true };
    }

    // ── UI helpers ────────────────────────────────────────────────────────────

    function clearFieldErrors() {
        form.querySelectorAll('.invalid').forEach(function (el) { el.classList.remove('invalid'); });
        form.querySelectorAll('.rc-field-error').forEach(function (el) { el.remove(); });
    }

    function showFieldError(fieldName, message) {
        // product_code is a hidden input — surface as a form-level error
        if (fieldName === 'product_code') {
            showFormError(message);
            return;
        }
        var input = form.querySelector('[name="' + fieldName + '"]');
        if (!input) return;
        input.classList.add('invalid');
        var field = input.closest('.rc-field') || input.parentElement;
        var span  = field.querySelector('.rc-field-error');
        if (!span) {
            span = document.createElement('span');
            span.className = 'rc-field-error';
            field.appendChild(span);
        }
        span.textContent = message;
        input.focus();
    }

    function showFormError(message) {
        errEl.textContent = message;
        errEl.hidden = false;
    }

    function hideFormError() {
        errEl.hidden = true;
        errEl.textContent = '';
    }

    function updateButton() {
        submitBtn.textContent = currentPrice ? ('Continue • R' + currentPrice) : 'Continue';
        submitBtn.disabled    = false;
    }

    // ── Collect & sanitise ────────────────────────────────────────────────────

    function collectData() {
        var fd = new FormData(form);
        return {
            product_code:       clean(fd.get('product_code')),
            first_name:         clean(fd.get('first_name')),
            last_name:          clean(fd.get('last_name')),
            email:              clean(fd.get('email')).toLowerCase(),
            mobile:             clean(fd.get('mobile')),
            identificationnr:   clean(fd.get('identificationnr')),
            gender:             clean(fd.get('gender')),
            promo_code:         clean(fd.get('promo_code'))
        };
    }

    // ── Billing toggle ────────────────────────────────────────────────────────

    pricing.querySelectorAll('.rc-toggle-opt').forEach(function (btn) {
        btn.addEventListener('click', function () {
            if (btn.dataset.billing === (isAnnual ? 'annual' : 'monthly')) return;
            isAnnual = !isAnnual;
            pricing.querySelectorAll('.rc-toggle-opt').forEach(function (b) {
                b.classList.toggle('rc-toggle-active', b.dataset.billing === (isAnnual ? 'annual' : 'monthly'));
            });
            applyBilling();
        });
    });

    // ── Plan selection ────────────────────────────────────────────────────────

    pricing.querySelectorAll('.rc-btn').forEach(function (planBtn) {
        planBtn.addEventListener('click', function () {
            var code    = planBtn.dataset.planCode;
            var plan    = planBtn.dataset.plan;
            var price   = planBtn.dataset.price || '';
            var billing = isAnnual ? 'Annual' : 'Monthly';

            currentPlanBtn = planBtn;

            // Highlight every button sharing the same plan code (desktop + mobile pair)
            pricing.querySelectorAll('.rc-btn').forEach(function (b) {
                b.classList.toggle('rc-selected', b.dataset.planCode === code);
            });

            coverInput.value           = code;
            currentPrice               = price;
            selectedPlanEl.textContent = 'Selected: ' + plan + ' (' + billing + ')';
            updateButton();

            formSection.classList.add('rc-visible');
            formSection.scrollIntoView({ behavior: 'smooth', block: 'nearest' });

            clearFieldErrors();
            hideFormError();
        });
    });

    // ── Initialise billing display ────────────────────────────────────────────
    applyBilling();

    // ── Clear errors on edit ──────────────────────────────────────────────────

    form.addEventListener('input', function (e) {
        if (e.target.classList.contains('invalid')) {
            e.target.classList.remove('invalid');
            var f = e.target.closest('.rc-field');
            if (f) { var s = f.querySelector('.rc-field-error'); if (s) s.remove(); }
        }
        hideFormError();
    });

    form.addEventListener('change', function (e) {
        if (e.target.classList.contains('invalid')) {
            e.target.classList.remove('invalid');
            var f = e.target.closest('.rc-field');
            if (f) { var s = f.querySelector('.rc-field-error'); if (s) s.remove(); }
        }
        if (e.target.type === 'checkbox' && e.target.checked) {
            var label = e.target.closest('label.rc-terms');
            if (label) label.classList.remove('invalid');
            hideFormError();
        }
    });

    // ── Form submit ───────────────────────────────────────────────────────────

    form.addEventListener('submit', async function (e) {
        e.preventDefault();
        hideFormError();
        clearFieldErrors();

        var data   = collectData();
        var result = validate(data);
        if (!result.ok) {
            showFieldError(result.field, result.message);
            return;
        }

        var termsBox = form.querySelector('input[type="checkbox"][required]');
        if (termsBox && !termsBox.checked) {
            var termsLabel = termsBox.closest('label.rc-terms');
            if (termsLabel) termsLabel.classList.add('invalid');
            termsBox.focus();
            showFormError('Please accept the Terms and Conditions to continue.');
            return;
        }

        submitBtn.disabled    = true;
        submitBtn.textContent = 'Processing…';

        // ── reCAPTCHA v3 — must complete before the network request ──────────
        var recaptchaToken = '';
        try {
            recaptchaToken = await new Promise(function (resolve, reject) {
                if (typeof grecaptcha === 'undefined') { reject(new Error('not loaded')); return; }
                grecaptcha.ready(function () {
                    grecaptcha.execute('6LdwjNosAAAAAK5qrEyD0FybwyViVZOqamPK1Fnr', { action: 'submit' })
                        .then(resolve).catch(reject);
                });
            });
        } catch (_) {
            showFormError('Security check could not complete. Please disable any ad blockers and try again.');
            updateButton();
            return;
        }

        try {
            // Send sanitised data so the backend receives cleaned values
            var params = new URLSearchParams();
            for (var k in data) params.append(k, data[k]);
            params.append('form_id',   form.querySelector('[name="form_id"]').value   || '');
            params.append('form_name', form.querySelector('[name="form_name"]').value || '');
            params.append('I accept the Terms and Conditions.', 'on');
            params.append('recaptcha_token', recaptchaToken);

            var res     = await fetch('https://n8n.roadcover.co.za/webhook/form', {
                method:  'POST',
                headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
                body:    params.toString()
            });
            var json    = await res.json();
            var payload = Array.isArray(json) ? json[0] : json;
            var paymentUrl = (payload && payload.data && payload.data.payment_url)
                           || (payload && payload.payment_url);

            if (res.ok && payload && payload.success && paymentUrl) {
                window.location.href = paymentUrl;
            } else if (payload && (payload.error_code === 'DUPLICATE_MEMBER' || payload.error_code === 'DUPLICATE_ACTIVE_MEMBER')) {
                var supportEmail = (payload && payload.support_email) || 'info@roadcover.co.za';
                var refNumber = payload && payload.reference_number;
                showFieldError(
                    (payload && payload.field) || 'identificationnr',
                    'This ID number is already registered on the membership system.'
                );
                var bannerMsg = 'This ID number is already registered as an active member. Please contact support for assistance ' + supportEmail + '.';
                if (refNumber) {
                    bannerMsg += ' Your reference number is ' + refNumber + '.';
                }
                showFormError(bannerMsg);
                updateButton();
            } else {
                var message = (payload && payload.message) || 'Something went wrong. Please try again.';
                if (payload && payload.field) {
                    showFieldError(payload.field, message);
                } else {
                    showFormError(message);
                }
                updateButton();
            }
        } catch (_) {
            showFormError('Could not reach the service. Please try again.');
            updateButton();
        }
    });

})();
</script>
				</div>
				</div>
				</div>
		</div>
						</div>
					</div>
				</div>
				</div>
		]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>RoadCover Turns 21: A Crash, A Claim, A Community</title>
		<link>https://www.roadcover.co.za/roadcover-turns-21/</link>
		
		<dc:creator><![CDATA[Nokuthula Ngcobo]]></dc:creator>
		<pubDate>Mon, 12 Oct 2026 06:52:40 +0000</pubDate>
				<category><![CDATA[Press Releases]]></category>
		<guid isPermaLink="false">https://www.roadcover.co.za/?p=3294</guid>

					<description><![CDATA[RoadCover turns 21 with a powerful look at the people behind Road Accident Fund (RAF) claims. At its headquarters on 6 October 2026, the organisation welcomed members of the media to Inside the Claim, a courtroom-style production exploring how motor vehicle accidents change lives.]]></description>
			<style id="elementor-post-3294">.elementor-3294 .elementor-element.elementor-element-530522b3{--display:flex;--padding-top:220px;--padding-bottom:0px;--padding-left:0112px;--padding-right:0112px;}.elementor-3294 .elementor-element.elementor-element-6f216076{--display:flex;--flex-direction:row;--container-widget-width:initial;--container-widget-height:100%;--container-widget-flex-grow:1;--container-widget-align-self:stretch;--flex-wrap-mobile:wrap;--padding-top:0px;--padding-bottom:0px;--padding-left:0px;--padding-right:0px;}.elementor-3294 .elementor-element.elementor-element-1d3a91e5{--display:flex;--flex-direction:row;--container-widget-width:calc( ( 1 - var( --container-widget-flex-grow ) ) * 100% );--container-widget-height:100%;--container-widget-flex-grow:1;--container-widget-align-self:stretch;--flex-wrap-mobile:wrap;--align-items:center;--padding-top:0px;--padding-bottom:0px;--padding-left:0px;--padding-right:0px;}.elementor-widget-text-editor{font-family:var( --e-global-typography-text-font-family ), Sans-serif;font-weight:var( --e-global-typography-text-font-weight );color:var( --e-global-color-text );}.elementor-widget-text-editor.elementor-drop-cap-view-stacked .elementor-drop-cap{background-color:var( --e-global-color-primary );}.elementor-widget-text-editor.elementor-drop-cap-view-framed .elementor-drop-cap, .elementor-widget-text-editor.elementor-drop-cap-view-default .elementor-drop-cap{color:var( --e-global-color-primary );border-color:var( --e-global-color-primary );}.elementor-3294 .elementor-element.elementor-element-18b05ffb{font-family:"Raleway", Sans-serif;font-size:14px;font-weight:600;color:#556DDD;}.elementor-widget-button .elementor-button{font-family:var( --e-global-typography-accent-font-family ), Sans-serif;font-weight:var( --e-global-typography-accent-font-weight );background-color:var( --e-global-color-accent );}.elementor-3294 .elementor-element.elementor-element-7e3530ad .elementor-button{font-family:"Raleway", Sans-serif;font-size:12px;font-weight:700;text-transform:uppercase;fill:#2A45AC;color:#2A45AC;background-color:#556DDD1A;border-radius:999px 999px 999px 999px;}.elementor-3294 .elementor-element.elementor-element-3893af81{--display:flex;--padding-top:0px;--padding-bottom:0px;--padding-left:0px;--padding-right:0px;}.elementor-widget-theme-post-title .elementor-heading-title{font-family:var( --e-global-typography-primary-font-family ), Sans-serif;font-weight:var( --e-global-typography-primary-font-weight );color:var( --e-global-color-primary );}.elementor-3294 .elementor-element.elementor-element-2201c876 .elementor-heading-title{font-family:"Raleway", Sans-serif;font-size:3.5vw;font-weight:800;}.elementor-3294 .elementor-element.elementor-element-3de3e171{--display:flex;--flex-direction:row;--container-widget-width:calc( ( 1 - var( --container-widget-flex-grow ) ) * 100% );--container-widget-height:100%;--container-widget-flex-grow:1;--container-widget-align-self:stretch;--flex-wrap-mobile:wrap;--align-items:center;--padding-top:0px;--padding-bottom:0px;--padding-left:0px;--padding-right:0px;}.elementor-widget-divider{--divider-color:var( --e-global-color-secondary );}.elementor-widget-divider .elementor-divider__text{color:var( --e-global-color-secondary );font-family:var( --e-global-typography-secondary-font-family ), Sans-serif;font-weight:var( --e-global-typography-secondary-font-weight );}.elementor-widget-divider.elementor-view-stacked .elementor-icon{background-color:var( --e-global-color-secondary );}.elementor-widget-divider.elementor-view-framed .elementor-icon, .elementor-widget-divider.elementor-view-default .elementor-icon{color:var( --e-global-color-secondary );border-color:var( --e-global-color-secondary );}.elementor-widget-divider.elementor-view-framed .elementor-icon, .elementor-widget-divider.elementor-view-default .elementor-icon svg{fill:var( --e-global-color-secondary );}.elementor-3294 .elementor-element.elementor-element-848a3a9{--divider-border-style:solid;--divider-color:#556DDD1A;--divider-border-width:2px;width:var( --container-widget-width, 28px );max-width:28px;--container-widget-width:28px;--container-widget-flex-grow:0;}.elementor-3294 .elementor-element.elementor-element-848a3a9 .elementor-divider-separator{width:28px;}.elementor-3294 .elementor-element.elementor-element-848a3a9 .elementor-divider{padding-block-start:15px;padding-block-end:15px;}.elementor-3294 .elementor-element.elementor-element-27df0f45{font-family:"Raleway", Sans-serif;font-size:14px;font-weight:600;color:#2A45AC;}.elementor-3294 .elementor-element.elementor-element-2cbb2305{--display:flex;--padding-top:50px;--padding-bottom:0px;--padding-left:0px;--padding-right:0px;}.elementor-widget-theme-post-featured-image .widget-image-caption{color:var( --e-global-color-text );font-family:var( --e-global-typography-text-font-family ), Sans-serif;font-weight:var( --e-global-typography-text-font-weight );}.elementor-3294 .elementor-element.elementor-element-50896041 img{border-radius:30px 30px 30px 30px;}.elementor-3294 .elementor-element.elementor-element-14db702f{--display:flex;--gap:40px 40px;--row-gap:40px;--column-gap:40px;--padding-top:50px;--padding-bottom:080px;--padding-left:0px;--padding-right:0px;}.elementor-3294 .elementor-element.elementor-element-2387b5ba{font-family:"Raleway", Sans-serif;font-size:18px;font-weight:400;color:#2B2B2B;}.elementor-3294 .elementor-element.elementor-element-42f09a5c{--display:flex;border-style:solid;--border-style:solid;border-width:0px 0px 0px 4px;--border-top-width:0px;--border-right-width:0px;--border-bottom-width:0px;--border-left-width:4px;border-color:#556DDD;--border-color:#556DDD;--border-radius:0px 0px 0px 0px;--padding-top:0px;--padding-bottom:0px;--padding-left:20px;--padding-right:0px;}.elementor-3294 .elementor-element.elementor-element-714343b2{font-family:"Raleway", Sans-serif;font-size:20px;font-weight:600;color:#2A45AC;}.elementor-3294 .elementor-element.elementor-element-430e1458{font-family:"Raleway", Sans-serif;font-size:18px;font-weight:400;color:#2B2B2B;}.elementor-widget-heading .elementor-heading-title{font-family:var( --e-global-typography-primary-font-family ), Sans-serif;font-weight:var( --e-global-typography-primary-font-weight );color:var( --e-global-color-primary );}.elementor-3294 .elementor-element.elementor-element-7419e63b .elementor-heading-title{font-family:"Raleway", Sans-serif;font-size:24px;font-weight:700;color:#2A45AC;}.elementor-3294 .elementor-element.elementor-element-7419e63b{padding:20px 0px 0px 0px;}.elementor-3294 .elementor-element.elementor-element-560c513a{font-family:"Raleway", Sans-serif;font-size:18px;font-weight:400;color:#2B2B2B;}.elementor-3294 .elementor-element.elementor-element-8ea661b .elementor-heading-title{font-family:"Raleway", Sans-serif;font-size:24px;font-weight:700;color:#2A45AC;}.elementor-3294 .elementor-element.elementor-element-8ea661b{padding:20px 0px 0px 0px;}.elementor-3294 .elementor-element.elementor-element-3404ca4{font-family:"Raleway", Sans-serif;font-size:18px;font-weight:400;color:#2B2B2B;}.elementor-3294 .elementor-element.elementor-element-3b15086 .elementor-heading-title{font-family:"Raleway", Sans-serif;font-size:24px;font-weight:700;color:#2A45AC;}.elementor-3294 .elementor-element.elementor-element-3b15086{padding:20px 0px 0px 0px;}.elementor-3294 .elementor-element.elementor-element-d1162b5{font-family:"Raleway", Sans-serif;font-size:18px;font-weight:400;color:#2B2B2B;}.elementor-3294 .elementor-element.elementor-element-2d0391e{--display:flex;--padding-top:0px;--padding-bottom:0px;--padding-left:0px;--padding-right:0px;}@media(max-width:1023px){.elementor-3294 .elementor-element.elementor-element-530522b3{--padding-top:100px;--padding-bottom:0px;--padding-left:030px;--padding-right:30px;}.elementor-3294 .elementor-element.elementor-element-2201c876 .elementor-heading-title{font-size:32px;}.elementor-3294 .elementor-element.elementor-element-3de3e171{--gap:10px 10px;--row-gap:10px;--column-gap:10px;}.elementor-3294 .elementor-element.elementor-element-2cbb2305{--padding-top:0px;--padding-bottom:0px;--padding-left:10px;--padding-right:010px;}.elementor-3294 .elementor-element.elementor-element-50896041{padding:30px 0px 0px 0px;}.elementor-3294 .elementor-element.elementor-element-14db702f{--gap:20px 20px;--row-gap:20px;--column-gap:20px;--padding-top:50px;--padding-bottom:80px;--padding-left:020px;--padding-right:20px;}.elementor-3294 .elementor-element.elementor-element-2387b5ba{font-size:16px;}.elementor-3294 .elementor-element.elementor-element-714343b2{font-size:17px;}.elementor-3294 .elementor-element.elementor-element-430e1458{font-size:16px;}.elementor-3294 .elementor-element.elementor-element-7419e63b .elementor-heading-title{font-size:20px;}.elementor-3294 .elementor-element.elementor-element-8ea661b .elementor-heading-title{font-size:20px;}.elementor-3294 .elementor-element.elementor-element-3b15086 .elementor-heading-title{font-size:20px;}}@media(min-width:1024px){.elementor-3294 .elementor-element.elementor-element-530522b3{--content-width:900px;}.elementor-3294 .elementor-element.elementor-element-2cbb2305{--content-width:900px;}.elementor-3294 .elementor-element.elementor-element-14db702f{--content-width:760px;}}/* Start custom CSS for theme-post-featured-image, class: .elementor-element-50896041 */@media (max-width: 768px) {
  .elementor-3294 .elementor-element.elementor-element-50896041 img {
    height: 200px !important;

  }
}

.elementor-3294 .elementor-element.elementor-element-50896041 img {
  width: 100%;
  height: 480px;
  object-fit: cover;
  object-position: center; /* crop from center — change to 'top' if heads get cut off */
  display: block;
}/* End custom CSS */</style>							<content:encoded><![CDATA[		<div data-elementor-type="wp-post" data-elementor-id="3294" class="elementor elementor-3294" data-elementor-post-type="post">
				<div class="elementor-element elementor-element-530522b3 e-flex e-con-boxed e-con e-parent" data-id="530522b3" data-element_type="container" data-e-type="container">
					<div class="e-con-inner">
		<div class="elementor-element elementor-element-6f216076 e-con-full e-flex e-con e-child" data-id="6f216076" data-element_type="container" data-e-type="container">
		<div class="elementor-element elementor-element-1d3a91e5 e-con-full e-flex e-con e-child" data-id="1d3a91e5" data-element_type="container" data-e-type="container">
				<div class="elementor-element elementor-element-18b05ffb elementor-widget elementor-widget-text-editor" data-id="18b05ffb" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
									<a style="color: #374dc5; text-decoration: none;" href="https://www.roadcover.co.za/media-centre//">
← Back to Media Centre
</a>								</div>
				<div class="elementor-element elementor-element-7e3530ad elementor-widget elementor-widget-button" data-id="7e3530ad" data-element_type="widget" data-e-type="widget" data-widget_type="button.default">
										<a class="elementor-button elementor-button-link elementor-size-sm" href="https://www.roadcover.co.za/media-centre/">
						<span class="elementor-button-content-wrapper">
									<span class="elementor-button-text">Road Safety &amp; Public Awareness</span>
					</span>
					</a>
								</div>
				</div>
				</div>
		<div class="elementor-element elementor-element-3893af81 e-con-full e-flex e-con e-child" data-id="3893af81" data-element_type="container" data-e-type="container">
				<div class="elementor-element elementor-element-2201c876 elementor-widget elementor-widget-theme-post-title elementor-page-title elementor-widget-heading" data-id="2201c876" data-element_type="widget" data-e-type="widget" data-widget_type="theme-post-title.default">
					<h1 class="elementor-heading-title elementor-size-default">RoadCover Turns 21: A Crash, A Claim, A Community</h1>				</div>
				</div>
		<div class="elementor-element elementor-element-3de3e171 e-con-full e-flex e-con e-child" data-id="3de3e171" data-element_type="container" data-e-type="container">
				<div class="elementor-element elementor-element-848a3a9 elementor-widget__width-initial elementor-widget-divider--view-line elementor-widget elementor-widget-divider" data-id="848a3a9" data-element_type="widget" data-e-type="widget" data-widget_type="divider.default">
							<div class="elementor-divider">
			<span class="elementor-divider-separator">
						</span>
		</div>
						</div>
				<div class="elementor-element elementor-element-27df0f45 elementor-widget elementor-widget-text-editor" data-id="27df0f45" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
									<p>Nokuthula Ngcobo</p>								</div>
				</div>
					</div>
				</div>
		<div class="elementor-element elementor-element-2cbb2305 e-flex e-con-boxed e-con e-parent" data-id="2cbb2305" data-element_type="container" data-e-type="container">
					<div class="e-con-inner">
				<div class="elementor-element elementor-element-50896041 elementor-widget elementor-widget-theme-post-featured-image elementor-widget-image" data-id="50896041" data-element_type="widget" data-e-type="widget" data-widget_type="theme-post-featured-image.default">
															<img loading="lazy" decoding="async" width="800" height="375" src="https://www.roadcover.co.za/wp-content/uploads/2026/10/roadcover-turns-21-amanda-rogaly-eugene-beck-1024x480.webp" class="attachment-large size-large wp-image-3309" alt="RoadCover CEO Amanda Rogaly and founder Eugene Beck on stage at the company’s 21st anniversary celebration." srcset="https://www.roadcover.co.za/wp-content/uploads/2026/10/roadcover-turns-21-amanda-rogaly-eugene-beck-1024x480.webp 1024w, https://www.roadcover.co.za/wp-content/uploads/2026/10/roadcover-turns-21-amanda-rogaly-eugene-beck-300x141.webp 300w, https://www.roadcover.co.za/wp-content/uploads/2026/10/roadcover-turns-21-amanda-rogaly-eugene-beck-768x360.webp 768w, https://www.roadcover.co.za/wp-content/uploads/2026/10/roadcover-turns-21-amanda-rogaly-eugene-beck.webp 1280w" sizes="(max-width: 800px) 100vw, 800px" title="RoadCover Turns 21: A Crash, A Claim, A Community 4">															</div>
					</div>
				</div>
		<div class="elementor-element elementor-element-14db702f e-flex e-con-boxed e-con e-parent" data-id="14db702f" data-element_type="container" data-e-type="container">
					<div class="e-con-inner">
				<div class="elementor-element elementor-element-2387b5ba elementor-widget elementor-widget-text-editor" data-id="2387b5ba" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
									<p>The lights dimmed, tyres screeched and silence fell before sirens pierced the room.</p><p>For members of the media gathered at The RoadCover HQ on 6 October 2026, this was not simply a theatrical performance; it was an attempt to show what happens after a motor vehicle accident, when the immediate shock gives way to medical treatment, financial uncertainty and the process of claiming from the Road Accident Fund (RAF).</p><p>RoadCover marked its 21st anniversary with <em>Inside the Claim</em>, a courtroom-style production that dramatised the RAF claims process through the stories of two accident victims.</p><p>The play followed two lives changed in an instant: <strong>Thandeka Nkosi</strong>, a promising netball player who was left paralysed after a taxi accident, and <strong>Johan Kruger</strong>, a father of three and handyman, who was injured in a collision and unable to generate a full income. Their stories highlighted the impact an accident can have on a person&#8217;s ability to work, support their family and rebuild their life, while also examining how fees and third-party expenses can affect the amount a claimant ultimately receives.</p><p>RoadCover&#8217;s model is built around ensuring that qualifying members receive <strong>100% of their successful RAF settlement, with no fees deducted</strong>.</p>								</div>
		<div class="elementor-element elementor-element-42f09a5c e-con-full e-flex e-con e-child" data-id="42f09a5c" data-element_type="container" data-e-type="container">
				<div class="elementor-element elementor-element-714343b2 elementor-widget elementor-widget-text-editor" data-id="714343b2" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
									<p>From the stage, the focus shifted to the podium as RoadCover CEO <strong>Amanda Rogaly</strong> told journalists that the figures associated with RAF claims only tell part of the story.</p>								</div>
				</div>
				<div class="elementor-element elementor-element-430e1458 elementor-widget elementor-widget-text-editor" data-id="430e1458" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
									<p>“For many people, a motor vehicle accident is only the beginning of the trauma. Then come the questions: How will I earn a living? What happens to my family? Where do I start with a claim? With this event, we wanted the media to see the person behind the paperwork,” she said.</p>								</div>
				<div class="elementor-element elementor-element-7419e63b elementor-widget elementor-widget-heading" data-id="7419e63b" data-element_type="widget" data-e-type="widget" data-widget_type="heading.default">
					<h3 class="elementor-heading-title elementor-size-default">21 years of RoadCover</h3>				</div>
				<div class="elementor-element elementor-element-560c513a elementor-widget elementor-widget-text-editor" data-id="560c513a" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
									<p>Founded after Executive Chairman <strong>Eugene Beck</strong>’s own cycling accident, RoadCover has since secured more than <strong>R840 million in RAF settlements in the past seven years</strong>, helping over <strong>6 000 South Africans</strong>. Crucially, the socially responsible model has kept <strong>R336 million in the hands of claimants and their families</strong> — money that would otherwise have been lost to fees and expenses.</p><p>For RoadCover, the figures are intended to demonstrate the financial difference between the amount awarded in a successful RAF claim and the amount a claimant ultimately keeps.</p><p>The event also highlighted RoadCover&#8217;s work beyond RAF claims through the <strong>RoadCover Foundation</strong>, which supports accident victims who may fall outside traditional RAF funding structures or require additional assistance. Its support can include rehabilitation, mobility aids, education, transport and longer-term care.</p><p>“Getting a settlement is not necessarily the end of someone’s journey. For many people, that is where the real work begins,” Rogaly said.</p><p>She said the Foundation reflects the broader impact that a serious motor vehicle accident can have on an individual and their family long after a claim has been settled.</p>								</div>
				<div class="elementor-element elementor-element-8ea661b elementor-widget elementor-widget-heading" data-id="8ea661b" data-element_type="widget" data-e-type="widget" data-widget_type="heading.default">
					<h3 class="elementor-heading-title elementor-size-default">Questions from the Media</h3>				</div>
				<div class="elementor-element elementor-element-3404ca4 elementor-widget elementor-widget-text-editor" data-id="3404ca4" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
									<p>The Q&amp;A session gave journalists an opportunity to question RoadCover&#8217;s leadership and legal team about RAF claims, the organisation&#8217;s business model and what happens to settlement money.</p><p><strong>Dr Sandra Da Mata</strong>, a 919 FM radio personality and clinical psychologist, asked how RoadCover could get its message to a wider audience, particularly ahead of the festive season when more people travel.</p><p>Beck said joining RoadCover was straightforward and cost <strong>R49 per month for a family of five</strong>, with no waiting period. The organisation is encouraging the media to help raise awareness among South Africans.</p><p><strong>Collin Khanye from Arena Holdings</strong>, which publishes <em>Business Day</em> and <em>Financial Mail</em>, questioned whether RoadCover could face reputational risks by being associated with the RAF, given the extensive reporting about the Fund&#8217;s financial challenges.</p><p>In response, Beck disputed the characterisation of the RAF as bankrupt, pointing to the fuel levy that funds the organisation and arguing that public discussion about the Fund&#8217;s financial position reflects its contingent liability rather than its actual liability.</p><p>Farzaana Mayet, head of legal at RoadCover, also stressed the fact that there is utmost transparency on every single matter, adding that a membership-based organisation has a proven record of ensuring that the money paid goes to the claimant and that there are no fees and expenses deducted.</p><p><strong>Sam Marshall from Social TV</strong> asked about the role of the RoadCover Foundation and how it fits into the wider challenges surrounding road safety and RAF claims.</p><p>Beck said the Foundation was created to address the needs of RoadCover’s paying members who may not have met the criteria for a RAF claim but still need help.</p><p>Questions also covered whether smaller claims are worth pursuing. Beck highlighted that RoadCover manages claims of all values, including claims below <strong>R1 000</strong>. “If a member needs our help, we will step in and help,” he explained.</p><p>The event was followed by a continuous stream of interviews from the media which highlighted the newsworthiness of educating South Africans.</p>								</div>
				<div class="elementor-element elementor-element-3b15086 elementor-widget elementor-widget-heading" data-id="3b15086" data-element_type="widget" data-e-type="widget" data-widget_type="heading.default">
					<h3 class="elementor-heading-title elementor-size-default">Looking Ahead</h3>				</div>
				<div class="elementor-element elementor-element-d1162b5 elementor-widget elementor-widget-text-editor" data-id="d1162b5" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
									<p>RoadCover’s 21st anniversary was not only about celebrating its longevity as a positive contributing South African business, but it was also about spreading awareness to help South Africans understand their legal rights. The purpose of the event was to encourage media to take what they had learnt beyond the event, ask questions, tell stories, educate audiences and help change what fundamentally happens next.</p><p>After 21 years, RoadCover is set to continue investing in road-safety education, accident-prevention initiatives and support for people dealing with the consequences of motor vehicle accidents.</p><p>Knowing your rights after an accident shouldn’t be a privilege, every South African deserves to know them.</p>								</div>
					</div>
				</div>
		<div class="elementor-element elementor-element-2d0391e e-flex e-con-boxed e-con e-parent" data-id="2d0391e" data-element_type="container" data-e-type="container">
					<div class="e-con-inner">
				<div class="elementor-element elementor-element-86ed9c2 elementor-widget elementor-widget-shortcode" data-id="86ed9c2" data-element_type="widget" data-e-type="widget" data-widget_type="shortcode.default">
							<div class="elementor-shortcode">		<div data-elementor-type="container" data-elementor-id="2657" class="elementor elementor-2657" data-elementor-post-type="elementor_library">
				<div class="elementor-element elementor-element-1b2aafda e-con-full e-flex e-con e-parent" data-id="1b2aafda" data-element_type="container" data-e-type="container">
				<div class="elementor-element elementor-element-4e06f177 elementor-widget elementor-widget-html" data-id="4e06f177" data-element_type="widget" data-e-type="widget" data-widget_type="html.default">
					<link href="https://fonts.googleapis.com/css2?family=Raleway:wght@400;500;600;700;800&display=swap" rel="stylesheet">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.0/css/all.min.css">

<script src="https://www.google.com/recaptcha/api.js?render=6LdwjNosAAAAAK5qrEyD0FybwyViVZOqamPK1Fnr" async defer></script>

<style>
/* ===============================================================
   RoadCover — Pricing + Onboarding Form
   All selectors scoped to #rc-pricing to avoid host-page bleed.
   PLN codes live on data-plan-code attributes of .rc-btn elements.
   ================================================================ */

#rc-pricing *, #rc-pricing *::before, #rc-pricing *::after {
    box-sizing: border-box;
}
#rc-pricing {
    font-family: 'Raleway', sans-serif;
    width: 100%;
    color: #1f2937;

    /* Plan-card palette — scoped to the embed, never :root, so the
       host page's own custom properties are left untouched. */
    --rc-blue:      #2B4FD4;
    --rc-blue-dark: #1A3399;
    --rc-gold:      #F5C842;
    --rc-gold-dark: #D4A800;
    --rc-text:      #0D1B3E;
    --rc-muted:     #6B7280;
    --rc-border:    #E4E9F8;
    --rc-success:   #16A34A;
}
.rc-wrapper {
    display: flex;
    flex-direction: column;
    gap: 48px;
}

/* ── Header ─────────────────────────────────────────────────────── */
.rc-header { text-align: center; }
.rc-header h2 {
    font-size: 30px;
    font-weight: 800;
    margin: 0 0 8px;
    color: #111827;
}
.rc-header p {
    font-size: 15px;
    color: #6b7280;
    margin: 0;
}

/* ── Single Plan Card ───────────────────────────────────────────── */
/* One responsive card serves both desktop and mobile — there is no
   longer a separate table/card pair to keep in sync. */
.rc-plan-card {
    position: relative;
    background: #fff;
    border: 1px solid var(--rc-border);
    border-radius: 18px;
    overflow: hidden;
    box-shadow: 0 10px 30px rgba(13, 27, 62, 0.08);
}

.rc-plan-header {
    position: relative;
    overflow: hidden;
    background: linear-gradient(135deg, var(--rc-blue) 0%, var(--rc-blue-dark) 100%);
    padding: 32px 28px 30px;
    text-align: center;
}
.rc-plan-header::before {
    content: '';
    position: absolute;
    width: 220px;
    height: 220px;
    right: -90px;
    top: -70px;
    border-radius: 50%;
    background: rgba(255, 255, 255, 0.08);
}
.rc-plan-header::after {
    content: '';
    position: absolute;
    width: 140px;
    height: 140px;
    left: -50px;
    bottom: -50px;
    border-radius: 50%;
    background: rgba(245, 200, 66, 0.14);
}
.rc-plan-header > * { position: relative; z-index: 2; }

.rc-plan-name {
    font-size: 11px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.1em;
    color: rgba(255, 255, 255, 0.65);
    margin-bottom: 6px;
}
.rc-plan-price {
    font-size: 44px;
    font-weight: 900;
    color: var(--rc-gold);
    line-height: 1.1;
}
.rc-plan-price-unit {
    font-size: 14px;
    font-weight: 600;
    color: rgba(255, 255, 255, 0.6);
}
.rc-plan-subprice {
    margin-top: 6px;
    font-size: 12px;
    font-weight: 600;
    color: var(--rc-gold);
    min-height: 16px;
}

.rc-plan-rows { padding: 6px 28px; }
.rc-plan-row {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    padding: 14px 0;
    border-bottom: 1px solid var(--rc-border);
}
.rc-plan-row:last-child { border-bottom: none; }
.rc-plan-row-label {
    font-size: 13.5px;
    font-weight: 600;
    color: var(--rc-text);
}
.rc-plan-row-icon {
    width: 22px;
    height: 22px;
    flex-shrink: 0;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    background: #ECFDF3;
    color: var(--rc-success);
}
.rc-plan-row-icon svg { width: 13px; height: 13px; display: block; }

.rc-plan-cta-block { padding: 20px 28px 26px; }
.rc-plan-cta-hint {
    text-align: center;
    margin-top: 10px;
    font-size: 11px;
    color: var(--rc-muted);
}

/* ── Plan Select Button (JS hook: .rc-btn) ──────────────────────── */
.rc-btn {
    width: 100%;
    padding: 13px 18px;
    border: none;
    border-radius: 10px;
    background: var(--rc-gold);
    color: var(--rc-text);
    font-family: inherit;
    font-size: 14px;
    font-weight: 800;
    letter-spacing: 0.01em;
    cursor: pointer;
    transition: background 0.15s, transform 0.1s;
}
.rc-btn:hover   { background: var(--rc-gold-dark); }
.rc-btn:active  { transform: scale(0.99); }
.rc-btn.rc-selected { background: var(--rc-gold-dark); }

/* ── Form Section ───────────────────────────────────────────────── */
#rc-form-section { display: none; }
#rc-form-section.rc-visible {
    display: block;
    animation: rc-fadein 0.22s ease;
}
@keyframes rc-fadein {
    from { opacity: 0; transform: translateY(10px); }
    to   { opacity: 1; transform: translateY(0); }
}

.rc-form-inner {
    display: flex;
    flex-direction: column;
    gap: 22px;
    background: linear-gradient(135deg, #2A45AC, #1f358a);
    border-radius: 12px;
    padding: 40px;
}

.rc-selected-badge {
    display: inline-block;
    background: rgba(255, 255, 255, 0.15);
    color: #FFD84D;
    font-size: 13px;
    font-weight: 700;
    border-radius: 6px;
    padding: 7px 13px;
}

.rc-form-title {
    font-size: 20px;
    font-weight: 800;
    color: #fff;
    margin: 0;
}

/* Field grid — first two fields sit side-by-side */
.rc-field-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 14px;
}
.rc-field-full { grid-column: 1 / -1; }

.rc-field {
    display: flex;
    flex-direction: column;
    gap: 5px;
}
.rc-field-label {
    font-size: 11px;
    font-weight: 700;
    color: rgba(255, 255, 255, 0.7);
    text-transform: uppercase;
    letter-spacing: 0.05em;
}

/* Icon floats over the input; no separate column, no column border */
.rc-input-row {
    position: relative;
    border: 1px solid #6f7ec1;
    border-radius: 8px;
    background: #3d54ac;
    transition: border-color 0.15s, box-shadow 0.15s;
}
.rc-input-row:focus-within {
    border-color: #a0aee0;
    box-shadow: 0 0 0 3px rgba(111, 126, 193, 0.3);
}
.rc-input-row:has(.invalid) { border-color: #FF3B30; }
.rc-input-row:has(.invalid):focus-within {
    box-shadow: 0 0 0 3px rgba(129, 12, 12, 0.25);
}

.rc-input-icon {
    position: absolute;
    left: 14px;
    top: 50%;
    transform: translateY(-50%);
    color: rgba(255, 255, 255, 0.55);
    font-size: 14px;
    pointer-events: none;
}

.rc-input {
    display: block;
    width: 100%;
    padding: 11px 14px 11px 44px !important;
    border: 0;
    box-shadow: none;
    border-radius: 8px;
    background: transparent;
    font-family: inherit;
    font-size: 14px;
    color: #fff;
    -webkit-appearance: none;
    appearance: none;
    outline: none;
}
#rc-pricing .rc-input::placeholder { color: rgb(248, 248, 248); }
.rc-input.invalid { /* border shown via :has on .rc-input-row */ }

/* Native select chevron */
select.rc-input {
    padding-right: 36px;
    background-color: #3d54ac;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='7' viewBox='0 0 12 7'%3E%3Cpolyline points='1,1 6,6 11,1' fill='none' stroke='%23a0aee0' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
    background-repeat: no-repeat;
    background-position: right 12px center;
    cursor: pointer;
    color: #fff;
}

.rc-field-error {
    font-size: 12px;
    color: #FF3B30;
    margin: 0;
    line-height: 1.4;
}

/* T&C checkbox */
.rc-terms {
    display: flex;
    align-items: center;
    gap: 10px;
    font-size: 14px;
    color: rgba(255, 255, 255, 0.85);
    cursor: pointer;
    user-select: none;
}
.rc-terms input[type="checkbox"] {
    width: 17px;
    height: 17px;
    cursor: pointer;
    flex-shrink: 0;
    accent-color: #FFD84D;
}
.rc-terms.invalid { color: #FF3B30; }
.rc-terms.invalid input[type="checkbox"] {
    outline: 2px solid #FF3B30;
    outline-offset: 2px;
    border-radius: 2px;
}

.rc-submit:disabled,
.rc-submit:disabled:hover {
    background: #FFD84D; /* same as default */
    cursor: not-allowed;
}
/* Submit button */
.rc-submit {
    width: 100%;
    padding: 14px 20px;
    border: none;
    border-radius: 10px;
    background: #FFD84D;
    color: #1f358a;
    font-family: inherit;
    font-size: 15px;
    font-weight: 700;
    cursor: pointer;
    transition: background 0.15s, transform 0.1s;
    letter-spacing: 0.01em;
}
.rc-submit:hover:not([disabled]) { background: #f5cc35; }
.rc-submit:active:not([disabled]) { transform: scale(0.99); }
.rc-submit[disabled] { opacity: 0.5; cursor: not-allowed; }

.rc-form-error {
    font-size: 13px;
    color: #FF3B30;
    margin: 0;
    line-height: 1.5;
}

.rc-recaptcha-notice {
    font-size: 11px;
    color: rgba(255, 255, 255, 0.45);
    margin: 0;
    line-height: 1.5;
    text-align: center;
}
.rc-recaptcha-notice a {
    color: rgba(255, 255, 255, 0.55);
    text-decoration: underline;
}

/* ── Billing Toggle ─────────────────────────────────────────────── */
/* Sits on the dark gradient header, so it is styled for a dark ground. */
.rc-billing-toggle {
    display: inline-flex;
    background: rgba(255, 255, 255, 0.12);
    border: 1.5px solid rgba(255, 255, 255, 0.2);
    border-radius: 999px;
    padding: 3px;
    gap: 2px;
    margin-bottom: 20px;
}
.rc-toggle-opt {
    padding: 7px 20px;
    border: none;
    border-radius: 999px;
    background: transparent;
    color: rgba(255, 255, 255, 0.75);
    font-family: inherit;
    font-size: 12.5px;
    font-weight: 700;
    cursor: pointer;
    transition: background 0.2s ease, color 0.2s ease;
    white-space: nowrap;
    line-height: 1;
}
.rc-toggle-opt:hover:not(.rc-toggle-active) {
    background: rgba(255, 255, 255, 0.08);
}
.rc-toggle-opt.rc-toggle-active {
    background: var(--rc-gold);
    color: var(--rc-text);
}

.rc-save-badge {
    display: inline-block;
    margin-left: 6px;
    padding: 1px 6px;
    border-radius: 999px;
    font-size: 9.5px;
    font-weight: 800;
    color: rgba(255, 255, 255, 0.85);
    background: rgba(255, 255, 255, 0.16);
}
/* On the gold active pill, white-on-gold is unreadable — invert it. */
.rc-toggle-active .rc-save-badge {
    color: var(--rc-text);
    background: rgba(13, 27, 62, 0.12);
}

/* ── Responsive ─────────────────────────────────────────────────── */
@media (max-width: 700px) {
    #rc-pricing     { padding: 0px 0px; }
    .rc-wrapper     { gap: 32px; }
    .rc-plan-header { padding: 28px 20px 26px; }
    .rc-plan-price  { font-size: 38px; }
    .rc-plan-rows   { padding: 6px 20px; }
    .rc-plan-cta-block { padding: 18px 20px 22px; }
    .rc-field-grid  { grid-template-columns: 1fr; }
    .rc-field-full  { grid-column: 1; }
    .rc-form-inner  { padding: 24px 20px; }
    .rc-header h2   { font-size: 24px; }
}
</style>

<!-- ================================================================
     PRICING TABLE + ONBOARDING FORM
     ================================================================ -->
<div id="rc-pricing">
  <div class="rc-wrapper">

    <!-- Single plan card — one responsive card for desktop and mobile -->
    <div class="rc-plan-card" data-plan-key="RoadCover">

      <div class="rc-plan-header">
        <div class="rc-billing-toggle" role="group" aria-label="Billing period">
          <button type="button" class="rc-toggle-opt rc-toggle-active" data-billing="monthly">Monthly</button>
          <button type="button" class="rc-toggle-opt" data-billing="annual">Annual <span class="rc-save-badge">Save 6%</span></button>
        </div>

        <div class="rc-plan-name">RoadCover</div>
        <div class="rc-plan-price"><span class="rc-plan-price-val">R49</span><span class="rc-plan-price-unit">/mo</span></div>
        <div class="rc-plan-subprice" hidden></div>
      </div>

      <div class="rc-plan-rows">
        <div class="rc-plan-row">
          <span class="rc-plan-row-label">RAF Claim Support</span>
          <span class="rc-plan-row-icon" role="img" aria-label="Included">
            <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><polyline points="20 6 9 17 4 12"></polyline></svg>
          </span>
        </div>
        <div class="rc-plan-row">
          <span class="rc-plan-row-label">Legal Expertise</span>
          <span class="rc-plan-row-icon" role="img" aria-label="Included">
            <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><polyline points="20 6 9 17 4 12"></polyline></svg>
          </span>
        </div>
      </div>

      <div class="rc-plan-cta-block">
        <button class="rc-btn"
                data-plan="RoadCover"
                data-plan-code="RC49"
                data-price="49.00 /Month">Select RoadCover &#8594;</button>
        <div class="rc-plan-cta-hint">No fees. 100% of your payout.</div>
      </div>

    </div><!-- /.rc-plan-card -->

    <!-- Form: hidden until a plan is selected -->
    <div id="rc-form-section">
      <form id="roadcover-form" novalidate>

        <!-- product_code is set programmatically on plan button click -->
        <input type="hidden" name="product_code" id="cover-input">
        <input type="hidden" name="form_id"   value="9a3d492">
        <input type="hidden" name="form_name" value="Get RoadCover">

        <div class="rc-form-inner">

          <div id="selectedPlan" class="rc-selected-badge">Selected: &#8212;</div>
          <p class="rc-form-title">Enter your details</p>

          <div class="rc-field-grid">

            <!-- Row 1: name -->
            <div class="rc-field">
              <label class="rc-field-label" for="rc-first-name">First name *</label>
              <div class="rc-input-row">
                <i class="fa-solid fa-user rc-input-icon" aria-hidden="true"></i>
                <input class="rc-input" type="text" id="rc-first-name"
                       name="first_name" required maxlength="60" placeholder="First name">
              </div>
            </div>

            <div class="rc-field">
              <label class="rc-field-label" for="rc-last-name">Last name *</label>
              <div class="rc-input-row">
                <i class="fa-solid fa-user rc-input-icon" aria-hidden="true"></i>
                <input class="rc-input" type="text" id="rc-last-name"
                       name="last_name" required maxlength="60" placeholder="Last name">
              </div>
            </div>

            <!-- Row 2: identity -->
            <div class="rc-field">
              <label class="rc-field-label" for="rc-id">ID number *</label>
              <div class="rc-input-row">
                <i class="fa-solid fa-id-card rc-input-icon" aria-hidden="true"></i>
                <input class="rc-input" type="text" id="rc-id"
                       name="identificationnr" required pattern="[0-9]{13}"
                       inputmode="numeric" maxlength="13"
                       placeholder="13-digit SA ID number">
              </div>
            </div>

            <div class="rc-field">
              <label class="rc-field-label" for="rc-gender">Gender *</label>
              <div class="rc-input-row">
                <i class="fa-solid fa-venus-mars rc-input-icon" aria-hidden="true"></i>
                <select class="rc-input" id="rc-gender" name="gender" required>
                  <option value="">Select&hellip;</option>
                  <option value="1">Male</option>
                  <option value="2">Female</option>
                </select>
              </div>
            </div>

            <!-- Row 3: contact -->
            <div class="rc-field">
              <label class="rc-field-label" for="rc-email">Email *</label>
              <div class="rc-input-row">
                <i class="fa-solid fa-envelope rc-input-icon" aria-hidden="true"></i>
                <input class="rc-input" type="email" id="rc-email"
                       name="email" required maxlength="254"
                       placeholder="you@example.com">
              </div>
            </div>

            <div class="rc-field">
              <label class="rc-field-label" for="rc-mobile">Mobile *</label>
              <div class="rc-input-row">
                <i class="fa-solid fa-phone rc-input-icon" aria-hidden="true"></i>
                <input class="rc-input" type="tel" id="rc-mobile"
                       name="mobile" required inputmode="tel"
                       placeholder="0XXXXXXXXX or +27XXXXXXXXX">
              </div>
            </div>

            <!-- Row 4: optional -->
            <div class="rc-field rc-field-full">
              <label class="rc-field-label" for="rc-promo">Promo code</label>
              <div class="rc-input-row">
                <i class="fa-solid fa-tag rc-input-icon" aria-hidden="true"></i>
                <input class="rc-input" type="text" id="rc-promo"
                       name="promo_code" maxlength="32" placeholder="Optional">
              </div>
            </div>

          </div><!-- /.rc-field-grid -->

          <label class="rc-terms">
            <input type="checkbox" name="I accept the Terms and Conditions." required>
            <span>I accept the Terms and Conditions.</span>
          </label>

          <button type="submit" id="submit-btn" class="rc-submit">Continue</button>
          <p id="form-error" class="rc-form-error" hidden></p>

          <p class="rc-recaptcha-notice">This site is protected by reCAPTCHA and the Google <a href="https://policies.google.com/privacy" target="_blank" rel="noopener noreferrer">Privacy Policy</a> and <a href="https://policies.google.com/terms" target="_blank" rel="noopener noreferrer">Terms of Service</a> apply.</p>

        </div><!-- /.rc-form-inner -->
      </form>
    </div><!-- /#rc-form-section -->

  </div><!-- /.rc-wrapper -->
</div><!-- /#rc-pricing -->

<script>
(function () {
    var form           = document.getElementById('roadcover-form');
    var errEl          = document.getElementById('form-error');
    var submitBtn      = document.getElementById('submit-btn');
    var coverInput     = document.getElementById('cover-input');
    var formSection    = document.getElementById('rc-form-section');
    var selectedPlanEl = document.getElementById('selectedPlan');
    var pricing        = document.getElementById('rc-pricing');

    var currentPrice   = '';
    var isAnnual       = false;
    var currentPlanBtn = null;

    // ── Plan + billing data ───────────────────────────────────────────────────
    var planData = {
        'RoadCover': {
            monthly: { priceVal: 'R49', unit: '/mo', code: 'RC49',         priceStr: '49.00 /Month',  subprice: '' },
            annual:  { priceVal: 'R550', unit: '/yr', code: 'PRD-CB838AEF', priceStr: '550.00 /Year', subprice: '~R46/mo' }
        }
    };

    // ── Apply billing mode to all price displays and button codes ─────────────
    function applyBilling() {
        var mode = isAnnual ? 'annual' : 'monthly';

        // Plan card price display
        pricing.querySelectorAll('.rc-plan-card[data-plan-key]').forEach(function (card) {
            var d = planData[card.dataset.planKey][mode];
            card.querySelector('.rc-plan-price-val').textContent  = d.priceVal;
            card.querySelector('.rc-plan-price-unit').textContent = d.unit;
            var sub = card.querySelector('.rc-plan-subprice');
            sub.textContent = d.subprice;
            sub.hidden      = !d.subprice;
        });

        // Update data-plan-code on all buttons so selection highlighting still works
        pricing.querySelectorAll('.rc-btn').forEach(function (btn) {
            var key = btn.dataset.plan;
            if (!planData[key]) return;
            btn.dataset.planCode = planData[key][mode].code;
            btn.dataset.price    = planData[key][mode].priceStr;
        });

        // If a plan was already selected, refresh the hidden input + badge + button label
        if (currentPlanBtn) {
            var key     = currentPlanBtn.dataset.plan;
            var d       = planData[key][mode];
            var billing = isAnnual ? 'Annual' : 'Monthly';
            coverInput.value           = d.code;
            currentPrice               = d.priceStr;
            selectedPlanEl.textContent = 'Selected: ' + key + ' (' + billing + ')';
            updateButton();
        }
    }

    // ── Helpers (mirrored in n8n Code node — keep in sync) ───────────────────

    function clean(v) {
        if (v === null || v === undefined) return '';
        var s = String(v);
        s = s.replace(/[\x00-\x08\x0B\x0C\x0E-\x1F\x7F]/g, '');
        s = s.replace(/<script\b[^>]*>[\s\S]*?<\/script\s*>/gi, '');
        s = s.replace(/<\/?[a-zA-Z][^>]*>/g, '');
        s = s.replace(/javascript\s*:/gi, '');
        s = s.replace(/\s+/g, ' ').trim();
        return s;
    }

    function luhnValid(idStr) {
        var sum = 0;
        for (var i = 0; i < 13; i++) {
            var n = parseInt(idStr.charAt(i), 10);
            if (i % 2 === 1) { n *= 2; if (n > 9) n -= 9; }
            sum += n;
        }
        return sum % 10 === 0;
    }

    // Returns { ok: true } or { ok: false, field, message }
    function validate(data) {
        var required = {
            product_code:       'Please select a cover plan.',
            first_name:         'First name is required.',
            last_name:          'Last name is required.',
            email:              'Email is required.',
            mobile:             'Mobile number is required.',
            identificationnr:   'ID number is required.',
            gender:             'Please select your gender.'
        };
        for (var k in required) {
            if (!data[k]) return { ok: false, field: k, message: required[k] };
        }

        if (data.first_name.length > 60)
            return { ok: false, field: 'first_name', message: 'First name is too long (max 60).' };
        if (data.last_name.length > 60)
            return { ok: false, field: 'last_name', message: 'Last name is too long (max 60).' };

        var emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
        if (!emailRegex.test(data.email))
            return { ok: false, field: 'email', message: 'Please enter a valid email address.' };
        if (data.email.length > 254)
            return { ok: false, field: 'email', message: 'Email is too long.' };

        var mobileRegex = /^(\+27|0)[0-9]{9}$/;
        if (!mobileRegex.test(data.mobile))
            return { ok: false, field: 'mobile', message: 'Mobile must be 10 digits starting with 0, or +27 followed by 9 digits.' };

        var genderNum = Number(data.gender);
        if (genderNum !== 1 && genderNum !== 2)
            return { ok: false, field: 'gender', message: 'Please select your gender.' };

        if (!/^[0-9]{13}$/.test(data.identificationnr))
            return { ok: false, field: 'identificationnr', message: 'ID number must be exactly 13 digits.' };

        var yy        = parseInt(data.identificationnr.substring(0, 2), 10);
        var mm        = parseInt(data.identificationnr.substring(2, 4), 10);
        var dd        = parseInt(data.identificationnr.substring(4, 6), 10);
        var now       = new Date();
        var currentYY = now.getFullYear() % 100;
        var fullYear  = (yy > currentYY) ? (1900 + yy) : (2000 + yy);
        var dob       = new Date(fullYear, mm - 1, dd);
        var dobValid  =
            dob.getFullYear() === fullYear &&
            dob.getMonth()    === (mm - 1) &&
            dob.getDate()     === dd       &&
            dob <= now;
        if (!dobValid)
            return { ok: false, field: 'identificationnr', message: 'The first 6 digits of your ID number are not a valid date of birth.' };

        var genderDigits = parseInt(data.identificationnr.substring(6, 10), 10);
        var idGender     = genderDigits >= 5000 ? 1 : 2;
        if (idGender !== genderNum) {
            var expected = idGender === 1 ? 'Male' : 'Female';
            return { ok: false, field: 'identificationnr',
                     message: 'The selected gender does not match your ID number (ID indicates ' + expected + ').' };
        }

        if (!luhnValid(data.identificationnr))
            return { ok: false, field: 'identificationnr', message: 'ID number checksum is invalid. Please check the number.' };

        return { ok: true };
    }

    // ── UI helpers ────────────────────────────────────────────────────────────

    function clearFieldErrors() {
        form.querySelectorAll('.invalid').forEach(function (el) { el.classList.remove('invalid'); });
        form.querySelectorAll('.rc-field-error').forEach(function (el) { el.remove(); });
    }

    function showFieldError(fieldName, message) {
        // product_code is a hidden input — surface as a form-level error
        if (fieldName === 'product_code') {
            showFormError(message);
            return;
        }
        var input = form.querySelector('[name="' + fieldName + '"]');
        if (!input) return;
        input.classList.add('invalid');
        var field = input.closest('.rc-field') || input.parentElement;
        var span  = field.querySelector('.rc-field-error');
        if (!span) {
            span = document.createElement('span');
            span.className = 'rc-field-error';
            field.appendChild(span);
        }
        span.textContent = message;
        input.focus();
    }

    function showFormError(message) {
        errEl.textContent = message;
        errEl.hidden = false;
    }

    function hideFormError() {
        errEl.hidden = true;
        errEl.textContent = '';
    }

    function updateButton() {
        submitBtn.textContent = currentPrice ? ('Continue • R' + currentPrice) : 'Continue';
        submitBtn.disabled    = false;
    }

    // ── Collect & sanitise ────────────────────────────────────────────────────

    function collectData() {
        var fd = new FormData(form);
        return {
            product_code:       clean(fd.get('product_code')),
            first_name:         clean(fd.get('first_name')),
            last_name:          clean(fd.get('last_name')),
            email:              clean(fd.get('email')).toLowerCase(),
            mobile:             clean(fd.get('mobile')),
            identificationnr:   clean(fd.get('identificationnr')),
            gender:             clean(fd.get('gender')),
            promo_code:         clean(fd.get('promo_code'))
        };
    }

    // ── Billing toggle ────────────────────────────────────────────────────────

    pricing.querySelectorAll('.rc-toggle-opt').forEach(function (btn) {
        btn.addEventListener('click', function () {
            if (btn.dataset.billing === (isAnnual ? 'annual' : 'monthly')) return;
            isAnnual = !isAnnual;
            pricing.querySelectorAll('.rc-toggle-opt').forEach(function (b) {
                b.classList.toggle('rc-toggle-active', b.dataset.billing === (isAnnual ? 'annual' : 'monthly'));
            });
            applyBilling();
        });
    });

    // ── Plan selection ────────────────────────────────────────────────────────

    pricing.querySelectorAll('.rc-btn').forEach(function (planBtn) {
        planBtn.addEventListener('click', function () {
            var code    = planBtn.dataset.planCode;
            var plan    = planBtn.dataset.plan;
            var price   = planBtn.dataset.price || '';
            var billing = isAnnual ? 'Annual' : 'Monthly';

            currentPlanBtn = planBtn;

            // Highlight every button sharing the same plan code (desktop + mobile pair)
            pricing.querySelectorAll('.rc-btn').forEach(function (b) {
                b.classList.toggle('rc-selected', b.dataset.planCode === code);
            });

            coverInput.value           = code;
            currentPrice               = price;
            selectedPlanEl.textContent = 'Selected: ' + plan + ' (' + billing + ')';
            updateButton();

            formSection.classList.add('rc-visible');
            formSection.scrollIntoView({ behavior: 'smooth', block: 'nearest' });

            clearFieldErrors();
            hideFormError();
        });
    });

    // ── Initialise billing display ────────────────────────────────────────────
    applyBilling();

    // ── Clear errors on edit ──────────────────────────────────────────────────

    form.addEventListener('input', function (e) {
        if (e.target.classList.contains('invalid')) {
            e.target.classList.remove('invalid');
            var f = e.target.closest('.rc-field');
            if (f) { var s = f.querySelector('.rc-field-error'); if (s) s.remove(); }
        }
        hideFormError();
    });

    form.addEventListener('change', function (e) {
        if (e.target.classList.contains('invalid')) {
            e.target.classList.remove('invalid');
            var f = e.target.closest('.rc-field');
            if (f) { var s = f.querySelector('.rc-field-error'); if (s) s.remove(); }
        }
        if (e.target.type === 'checkbox' && e.target.checked) {
            var label = e.target.closest('label.rc-terms');
            if (label) label.classList.remove('invalid');
            hideFormError();
        }
    });

    // ── Form submit ───────────────────────────────────────────────────────────

    form.addEventListener('submit', async function (e) {
        e.preventDefault();
        hideFormError();
        clearFieldErrors();

        var data   = collectData();
        var result = validate(data);
        if (!result.ok) {
            showFieldError(result.field, result.message);
            return;
        }

        var termsBox = form.querySelector('input[type="checkbox"][required]');
        if (termsBox && !termsBox.checked) {
            var termsLabel = termsBox.closest('label.rc-terms');
            if (termsLabel) termsLabel.classList.add('invalid');
            termsBox.focus();
            showFormError('Please accept the Terms and Conditions to continue.');
            return;
        }

        submitBtn.disabled    = true;
        submitBtn.textContent = 'Processing…';

        // ── reCAPTCHA v3 — must complete before the network request ──────────
        var recaptchaToken = '';
        try {
            recaptchaToken = await new Promise(function (resolve, reject) {
                if (typeof grecaptcha === 'undefined') { reject(new Error('not loaded')); return; }
                grecaptcha.ready(function () {
                    grecaptcha.execute('6LdwjNosAAAAAK5qrEyD0FybwyViVZOqamPK1Fnr', { action: 'submit' })
                        .then(resolve).catch(reject);
                });
            });
        } catch (_) {
            showFormError('Security check could not complete. Please disable any ad blockers and try again.');
            updateButton();
            return;
        }

        try {
            // Send sanitised data so the backend receives cleaned values
            var params = new URLSearchParams();
            for (var k in data) params.append(k, data[k]);
            params.append('form_id',   form.querySelector('[name="form_id"]').value   || '');
            params.append('form_name', form.querySelector('[name="form_name"]').value || '');
            params.append('I accept the Terms and Conditions.', 'on');
            params.append('recaptcha_token', recaptchaToken);

            var res     = await fetch('https://n8n.roadcover.co.za/webhook/form', {
                method:  'POST',
                headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
                body:    params.toString()
            });
            var json    = await res.json();
            var payload = Array.isArray(json) ? json[0] : json;
            var paymentUrl = (payload && payload.data && payload.data.payment_url)
                           || (payload && payload.payment_url);

            if (res.ok && payload && payload.success && paymentUrl) {
                window.location.href = paymentUrl;
            } else if (payload && (payload.error_code === 'DUPLICATE_MEMBER' || payload.error_code === 'DUPLICATE_ACTIVE_MEMBER')) {
                var supportEmail = (payload && payload.support_email) || 'info@roadcover.co.za';
                var refNumber = payload && payload.reference_number;
                showFieldError(
                    (payload && payload.field) || 'identificationnr',
                    'This ID number is already registered on the membership system.'
                );
                var bannerMsg = 'This ID number is already registered as an active member. Please contact support for assistance ' + supportEmail + '.';
                if (refNumber) {
                    bannerMsg += ' Your reference number is ' + refNumber + '.';
                }
                showFormError(bannerMsg);
                updateButton();
            } else {
                var message = (payload && payload.message) || 'Something went wrong. Please try again.';
                if (payload && payload.field) {
                    showFieldError(payload.field, message);
                } else {
                    showFormError(message);
                }
                updateButton();
            }
        } catch (_) {
            showFormError('Could not reach the service. Please try again.');
            updateButton();
        }
    });

})();
</script>
				</div>
				</div>
				</div>
		</div>
						</div>
					</div>
				</div>
				</div>
		]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Documents for a RAF Claim: What You Need to Know</title>
		<link>https://www.roadcover.co.za/documents-for-a-raf-claim-what-you-need/</link>
		
		<dc:creator><![CDATA[Nokuthula Ngcobo]]></dc:creator>
		<pubDate>Mon, 05 Oct 2026 09:01:40 +0000</pubDate>
				<category><![CDATA[article]]></category>
		<guid isPermaLink="false">https://www.roadcover.co.za/?p=3247</guid>

					<description><![CDATA[A motor vehicle accident can leave you dealing with injuries, medical bills and lost income while also trying to understand the RAF claims process. Having the right documents for a RAF claim can make it easier to establish what happened, the injuries suffered and the losses being claimed. ]]></description>
			<style id="elementor-post-3247">.elementor-3247 .elementor-element.elementor-element-8cca271{--display:flex;--padding-top:220px;--padding-bottom:0px;--padding-left:0112px;--padding-right:0112px;}.elementor-3247 .elementor-element.elementor-element-9e17627{--display:flex;--flex-direction:row;--container-widget-width:initial;--container-widget-height:100%;--container-widget-flex-grow:1;--container-widget-align-self:stretch;--flex-wrap-mobile:wrap;--padding-top:0px;--padding-bottom:0px;--padding-left:0px;--padding-right:0px;}.elementor-3247 .elementor-element.elementor-element-484c471e{--display:flex;--flex-direction:row;--container-widget-width:calc( ( 1 - var( --container-widget-flex-grow ) ) * 100% );--container-widget-height:100%;--container-widget-flex-grow:1;--container-widget-align-self:stretch;--flex-wrap-mobile:wrap;--align-items:center;--padding-top:0px;--padding-bottom:0px;--padding-left:0px;--padding-right:0px;}.elementor-widget-text-editor{font-family:var( --e-global-typography-text-font-family ), Sans-serif;font-weight:var( --e-global-typography-text-font-weight );color:var( --e-global-color-text );}.elementor-widget-text-editor.elementor-drop-cap-view-stacked .elementor-drop-cap{background-color:var( --e-global-color-primary );}.elementor-widget-text-editor.elementor-drop-cap-view-framed .elementor-drop-cap, .elementor-widget-text-editor.elementor-drop-cap-view-default .elementor-drop-cap{color:var( --e-global-color-primary );border-color:var( --e-global-color-primary );}.elementor-3247 .elementor-element.elementor-element-1ec253cf{font-family:"Raleway", Sans-serif;font-size:14px;font-weight:600;color:#556DDD;}.elementor-widget-button .elementor-button{background-color:var( --e-global-color-accent );font-family:var( --e-global-typography-accent-font-family ), Sans-serif;font-weight:var( --e-global-typography-accent-font-weight );}.elementor-3247 .elementor-element.elementor-element-332cc329 .elementor-button{background-color:#556DDD1A;font-family:"Raleway", Sans-serif;font-size:12px;font-weight:700;text-transform:uppercase;fill:#2A45AC;color:#2A45AC;border-radius:999px 999px 999px 999px;}.elementor-3247 .elementor-element.elementor-element-70c07e2d{--display:flex;--padding-top:0px;--padding-bottom:0px;--padding-left:0px;--padding-right:0px;}.elementor-widget-theme-post-title .elementor-heading-title{font-family:var( --e-global-typography-primary-font-family ), Sans-serif;font-weight:var( --e-global-typography-primary-font-weight );color:var( --e-global-color-primary );}.elementor-3247 .elementor-element.elementor-element-3f8744d3 .elementor-heading-title{font-family:"Raleway", Sans-serif;font-size:3.5vw;font-weight:800;}.elementor-3247 .elementor-element.elementor-element-243c0583{--display:flex;--flex-direction:row;--container-widget-width:calc( ( 1 - var( --container-widget-flex-grow ) ) * 100% );--container-widget-height:100%;--container-widget-flex-grow:1;--container-widget-align-self:stretch;--flex-wrap-mobile:wrap;--align-items:center;--padding-top:0px;--padding-bottom:0px;--padding-left:0px;--padding-right:0px;}.elementor-widget-divider{--divider-color:var( --e-global-color-secondary );}.elementor-widget-divider .elementor-divider__text{color:var( --e-global-color-secondary );font-family:var( --e-global-typography-secondary-font-family ), Sans-serif;font-weight:var( --e-global-typography-secondary-font-weight );}.elementor-widget-divider.elementor-view-stacked .elementor-icon{background-color:var( --e-global-color-secondary );}.elementor-widget-divider.elementor-view-framed .elementor-icon, .elementor-widget-divider.elementor-view-default .elementor-icon{color:var( --e-global-color-secondary );border-color:var( --e-global-color-secondary );}.elementor-widget-divider.elementor-view-framed .elementor-icon, .elementor-widget-divider.elementor-view-default .elementor-icon svg{fill:var( --e-global-color-secondary );}.elementor-3247 .elementor-element.elementor-element-38b72f3f{--divider-border-style:solid;--divider-color:#556DDD1A;--divider-border-width:2px;width:var( --container-widget-width, 28px );max-width:28px;--container-widget-width:28px;--container-widget-flex-grow:0;}.elementor-3247 .elementor-element.elementor-element-38b72f3f .elementor-divider-separator{width:28px;}.elementor-3247 .elementor-element.elementor-element-38b72f3f .elementor-divider{padding-block-start:15px;padding-block-end:15px;}.elementor-3247 .elementor-element.elementor-element-54692536{font-family:"Raleway", Sans-serif;font-size:14px;font-weight:600;color:#2A45AC;}.elementor-3247 .elementor-element.elementor-element-71396642{--display:flex;--padding-top:50px;--padding-bottom:0px;--padding-left:0px;--padding-right:0px;}.elementor-widget-theme-post-featured-image .widget-image-caption{color:var( --e-global-color-text );font-family:var( --e-global-typography-text-font-family ), Sans-serif;font-weight:var( --e-global-typography-text-font-weight );}.elementor-3247 .elementor-element.elementor-element-656a3d0f img{border-radius:30px 30px 30px 30px;}.elementor-3247 .elementor-element.elementor-element-1a2a0d3e{--display:flex;--gap:40px 40px;--row-gap:40px;--column-gap:40px;--padding-top:50px;--padding-bottom:080px;--padding-left:0px;--padding-right:0px;}.elementor-3247 .elementor-element.elementor-element-64a74360{font-family:"Raleway", Sans-serif;font-size:18px;font-weight:400;color:#2B2B2B;}.elementor-3247 .elementor-element.elementor-element-65aa1e66{--display:flex;border-style:solid;--border-style:solid;border-width:0px 0px 0px 4px;--border-top-width:0px;--border-right-width:0px;--border-bottom-width:0px;--border-left-width:4px;border-color:#556DDD;--border-color:#556DDD;--border-radius:0px 0px 0px 0px;--padding-top:0px;--padding-bottom:0px;--padding-left:20px;--padding-right:0px;}.elementor-3247 .elementor-element.elementor-element-1d269d2a{font-family:"Raleway", Sans-serif;font-size:20px;font-weight:600;color:#2A45AC;}.elementor-widget-heading .elementor-heading-title{font-family:var( --e-global-typography-primary-font-family ), Sans-serif;font-weight:var( --e-global-typography-primary-font-weight );color:var( --e-global-color-primary );}.elementor-3247 .elementor-element.elementor-element-709076a{padding:20px 0px 0px 0px;}.elementor-3247 .elementor-element.elementor-element-709076a .elementor-heading-title{font-family:"Raleway", Sans-serif;font-size:24px;font-weight:700;color:#2A45AC;}.elementor-3247 .elementor-element.elementor-element-6801b9c{font-family:"Raleway", Sans-serif;font-size:18px;font-weight:400;color:#2B2B2B;}.elementor-3247 .elementor-element.elementor-element-68e2d8d{padding:20px 0px 0px 0px;}.elementor-3247 .elementor-element.elementor-element-68e2d8d .elementor-heading-title{font-family:"Raleway", Sans-serif;font-size:24px;font-weight:700;color:#2A45AC;}.elementor-3247 .elementor-element.elementor-element-2893a4a6{font-family:"Raleway", Sans-serif;font-size:18px;font-weight:400;color:#2B2B2B;}.elementor-3247 .elementor-element.elementor-element-05d6624{padding:20px 0px 0px 0px;}.elementor-3247 .elementor-element.elementor-element-05d6624 .elementor-heading-title{font-family:"Raleway", Sans-serif;font-size:24px;font-weight:700;color:#2A45AC;}.elementor-3247 .elementor-element.elementor-element-3e27fe0{font-family:"Raleway", Sans-serif;font-size:18px;font-weight:400;color:#2B2B2B;}.elementor-3247 .elementor-element.elementor-element-a34be70{padding:20px 0px 0px 0px;}.elementor-3247 .elementor-element.elementor-element-a34be70 .elementor-heading-title{font-family:"Raleway", Sans-serif;font-size:24px;font-weight:700;color:#2A45AC;}.elementor-3247 .elementor-element.elementor-element-8a278d4{font-family:"Raleway", Sans-serif;font-size:18px;font-weight:400;color:#2B2B2B;}.elementor-3247 .elementor-element.elementor-element-2c371353{--display:flex;--gap:40px 40px;--row-gap:40px;--column-gap:40px;--padding-top:50px;--padding-bottom:080px;--padding-left:0px;--padding-right:0px;}.elementor-3247 .elementor-element.elementor-element-5ed14a37{font-family:"Raleway", Sans-serif;font-size:18px;font-weight:400;color:#2B2B2B;}.elementor-3247 .elementor-element.elementor-element-6b0b6ae8{--display:flex;--padding-top:0px;--padding-bottom:0px;--padding-left:0px;--padding-right:0px;}@media(max-width:1023px){.elementor-3247 .elementor-element.elementor-element-8cca271{--padding-top:100px;--padding-bottom:0px;--padding-left:030px;--padding-right:30px;}.elementor-3247 .elementor-element.elementor-element-3f8744d3 .elementor-heading-title{font-size:32px;}.elementor-3247 .elementor-element.elementor-element-243c0583{--gap:10px 10px;--row-gap:10px;--column-gap:10px;}.elementor-3247 .elementor-element.elementor-element-71396642{--padding-top:0px;--padding-bottom:0px;--padding-left:10px;--padding-right:010px;}.elementor-3247 .elementor-element.elementor-element-656a3d0f{padding:30px 0px 0px 0px;}.elementor-3247 .elementor-element.elementor-element-1a2a0d3e{--gap:20px 20px;--row-gap:20px;--column-gap:20px;--padding-top:50px;--padding-bottom:80px;--padding-left:020px;--padding-right:20px;}.elementor-3247 .elementor-element.elementor-element-64a74360{font-size:16px;}.elementor-3247 .elementor-element.elementor-element-1d269d2a{font-size:17px;}.elementor-3247 .elementor-element.elementor-element-709076a .elementor-heading-title{font-size:20px;}.elementor-3247 .elementor-element.elementor-element-68e2d8d .elementor-heading-title{font-size:20px;}.elementor-3247 .elementor-element.elementor-element-05d6624 .elementor-heading-title{font-size:20px;}.elementor-3247 .elementor-element.elementor-element-a34be70 .elementor-heading-title{font-size:20px;}.elementor-3247 .elementor-element.elementor-element-2c371353{--gap:20px 20px;--row-gap:20px;--column-gap:20px;--padding-top:50px;--padding-bottom:80px;--padding-left:020px;--padding-right:20px;}.elementor-3247 .elementor-element.elementor-element-5ed14a37{font-size:16px;}}@media(min-width:1024px){.elementor-3247 .elementor-element.elementor-element-8cca271{--content-width:900px;}.elementor-3247 .elementor-element.elementor-element-71396642{--content-width:900px;}.elementor-3247 .elementor-element.elementor-element-1a2a0d3e{--content-width:760px;}.elementor-3247 .elementor-element.elementor-element-2c371353{--content-width:760px;}}/* Start custom CSS for theme-post-featured-image, class: .elementor-element-656a3d0f */@media (max-width: 768px) {
  .elementor-3247 .elementor-element.elementor-element-656a3d0f img {
    height: 200px !important;

  }
}

.elementor-3247 .elementor-element.elementor-element-656a3d0f img {
  width: 100%;
  height: 480px;
  object-fit: cover;
  object-position: center; /* crop from center — change to 'top' if heads get cut off */
  display: block;
}/* End custom CSS */
/* Start Custom Fonts CSS */@font-face {
	font-family: 'Raleway';
	font-style: normal;
	font-weight: 300;
	font-display: auto;
	src: url('https://www.roadcover.co.za/wp-content/uploads/2026/04/Raleway-Light.ttf') format('truetype');
}
@font-face {
	font-family: 'Raleway';
	font-style: normal;
	font-weight: 100;
	font-display: auto;
	src: url('https://www.roadcover.co.za/wp-content/uploads/2026/04/Raleway-Thin.ttf') format('truetype');
}
@font-face {
	font-family: 'Raleway';
	font-style: normal;
	font-weight: 800;
	font-display: auto;
	src: url('https://www.roadcover.co.za/wp-content/uploads/2026/04/Raleway-ExtraBold.ttf') format('truetype');
}
@font-face {
	font-family: 'Raleway';
	font-style: normal;
	font-weight: 700;
	font-display: auto;
	src: url('https://www.roadcover.co.za/wp-content/uploads/2026/04/Raleway-Bold.ttf') format('truetype');
}
@font-face {
	font-family: 'Raleway';
	font-style: normal;
	font-weight: 600;
	font-display: auto;
	src: url('https://www.roadcover.co.za/wp-content/uploads/2026/04/Raleway-SemiBold.ttf') format('truetype');
}
@font-face {
	font-family: 'Raleway';
	font-style: normal;
	font-weight: 500;
	font-display: auto;
	src: url('https://www.roadcover.co.za/wp-content/uploads/2026/04/Raleway-Medium.ttf') format('truetype');
}
@font-face {
	font-family: 'Raleway';
	font-style: normal;
	font-weight: 400;
	font-display: auto;
	src: url('https://www.roadcover.co.za/wp-content/uploads/2026/04/Raleway-Regular.ttf') format('truetype');
}
/* End Custom Fonts CSS */</style>							<content:encoded><![CDATA[		<div data-elementor-type="wp-post" data-elementor-id="3247" class="elementor elementor-3247" data-elementor-post-type="post">
				<div class="elementor-element elementor-element-8cca271 e-flex e-con-boxed e-con e-parent" data-id="8cca271" data-element_type="container" data-e-type="container">
					<div class="e-con-inner">
		<div class="elementor-element elementor-element-9e17627 e-con-full e-flex e-con e-child" data-id="9e17627" data-element_type="container" data-e-type="container">
		<div class="elementor-element elementor-element-484c471e e-con-full e-flex e-con e-child" data-id="484c471e" data-element_type="container" data-e-type="container">
				<div class="elementor-element elementor-element-1ec253cf elementor-widget elementor-widget-text-editor" data-id="1ec253cf" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
									<a style="color: #374dc5; text-decoration: none;" href="https://www.roadcover.co.za/articles/">
← Back to Articles
</a>								</div>
				<div class="elementor-element elementor-element-332cc329 elementor-widget elementor-widget-button" data-id="332cc329" data-element_type="widget" data-e-type="widget" data-widget_type="button.default">
										<a class="elementor-button elementor-button-link elementor-size-sm" href="https://www.roadcover.co.za/articles/">
						<span class="elementor-button-content-wrapper">
									<span class="elementor-button-text">Road Safety &amp; Public Awareness</span>
					</span>
					</a>
								</div>
				</div>
				</div>
		<div class="elementor-element elementor-element-70c07e2d e-con-full e-flex e-con e-child" data-id="70c07e2d" data-element_type="container" data-e-type="container">
				<div class="elementor-element elementor-element-3f8744d3 elementor-widget elementor-widget-theme-post-title elementor-page-title elementor-widget-heading" data-id="3f8744d3" data-element_type="widget" data-e-type="widget" data-widget_type="theme-post-title.default">
					<h1 class="elementor-heading-title elementor-size-default">Documents for a RAF Claim: What You Need to Know</h1>				</div>
				</div>
		<div class="elementor-element elementor-element-243c0583 e-con-full e-flex e-con e-child" data-id="243c0583" data-element_type="container" data-e-type="container">
				<div class="elementor-element elementor-element-38b72f3f elementor-widget__width-initial elementor-widget-divider--view-line elementor-widget elementor-widget-divider" data-id="38b72f3f" data-element_type="widget" data-e-type="widget" data-widget_type="divider.default">
							<div class="elementor-divider">
			<span class="elementor-divider-separator">
						</span>
		</div>
						</div>
				<div class="elementor-element elementor-element-54692536 elementor-widget elementor-widget-text-editor" data-id="54692536" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
									<p>Nokuthula Ngcobo</p>								</div>
				</div>
					</div>
				</div>
		<div class="elementor-element elementor-element-71396642 e-flex e-con-boxed e-con e-parent" data-id="71396642" data-element_type="container" data-e-type="container">
					<div class="e-con-inner">
				<div class="elementor-element elementor-element-656a3d0f elementor-widget elementor-widget-theme-post-featured-image elementor-widget-image" data-id="656a3d0f" data-element_type="widget" data-e-type="widget" data-widget_type="theme-post-featured-image.default">
															<img loading="lazy" decoding="async" width="800" height="447" src="https://www.roadcover.co.za/wp-content/uploads/2026/10/Documents-for-a-RAF-Claim-What-You-Need-to-Know-1024x572.jpg" class="attachment-large size-large wp-image-3252" alt="Documents for a RAF Claim What You Need to Know" srcset="https://www.roadcover.co.za/wp-content/uploads/2026/10/Documents-for-a-RAF-Claim-What-You-Need-to-Know-1024x572.jpg 1024w, https://www.roadcover.co.za/wp-content/uploads/2026/10/Documents-for-a-RAF-Claim-What-You-Need-to-Know-300x167.jpg 300w, https://www.roadcover.co.za/wp-content/uploads/2026/10/Documents-for-a-RAF-Claim-What-You-Need-to-Know-768x429.jpg 768w, https://www.roadcover.co.za/wp-content/uploads/2026/10/Documents-for-a-RAF-Claim-What-You-Need-to-Know.jpg 1376w" sizes="(max-width: 800px) 100vw, 800px" title="Documents for a RAF Claim: What You Need to Know 5">															</div>
					</div>
				</div>
		<div class="elementor-element elementor-element-1a2a0d3e e-flex e-con-boxed e-con e-parent" data-id="1a2a0d3e" data-element_type="container" data-e-type="container">
					<div class="e-con-inner">
				<div class="elementor-element elementor-element-64a74360 elementor-widget elementor-widget-text-editor" data-id="64a74360" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
									<p><span class="TextRun SCXW97222289 BCX0" lang="EN-ZA" xml:lang="EN-ZA" data-contrast="auto"><span class="NormalTextRun SCXW97222289 BCX0">A </span><span class="NormalTextRun SCXW97222289 BCX0">motor vehicle</span><span class="NormalTextRun SCXW97222289 BCX0"> accident can leave you dealing with injuries, medical bills and lost income while also trying to understand the RAF claims process. Having the right </span></span><a class="Hyperlink SCXW97222289 BCX0" title="right documents for a RAF claim" href="https://www.raf.co.za/Claims/Documents/Claims%20forms_%20new.pdf" target="_blank" rel="noopener"><span class="TextRun Underlined SCXW97222289 BCX0" lang="EN-ZA" xml:lang="EN-ZA" data-contrast="none"><span class="NormalTextRun SCXW97222289 BCX0" data-ccp-charstyle="Hyperlink">documents for a RAF claim</span></span></a><span class="TextRun SCXW97222289 BCX0" lang="EN-ZA" xml:lang="EN-ZA" data-contrast="auto"><span class="NormalTextRun SCXW97222289 BCX0"> can make it easier to </span><span class="NormalTextRun SCXW97222289 BCX0">establish</span><span class="NormalTextRun SCXW97222289 BCX0"> what happened, the injuries suffered and the losses being claimed.</span></span><span class="EOP Selected SCXW97222289 BCX0" data-ccp-props="{}"> </span></p>								</div>
		<div class="elementor-element elementor-element-65aa1e66 e-con-full e-flex e-con e-child" data-id="65aa1e66" data-element_type="container" data-e-type="container">
				<div class="elementor-element elementor-element-1d269d2a elementor-widget elementor-widget-text-editor" data-id="1d269d2a" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
									<p><span class="TextRun SCXW125903418 BCX0" lang="EN-ZA" xml:lang="EN-ZA" data-contrast="auto"><span class="NormalTextRun SCXW125903418 BCX0">“A RAF claim can involve a significant amount of documentation, particularly when medical records, financial information and accident reports all need to be brought together. At </span><span class="NormalTextRun SpellingErrorV2Themed SCXW125903418 BCX0">RoadCover</span><span class="NormalTextRun SCXW125903418 BCX0">, we manage the legal and administrative requirements of qualifying claims</span><span class="NormalTextRun SCXW125903418 BCX0">, from start to finish,</span><span class="NormalTextRun SCXW125903418 BCX0"> so that our members have a structured process to follow from the outset</span><span class="NormalTextRun SCXW125903418 BCX0">. </span><span class="NormalTextRun SCXW125903418 BCX0">When a claim is successfully settled, members receive 100% of the RAF settlement, with no fees or expenses deducted,”</span><span class="NormalTextRun SCXW125903418 BCX0"> says </span><span class="NormalTextRun SpellingErrorV2Themed SCXW125903418 BCX0">RoadCover</span><span class="NormalTextRun SpellingErrorV2Themed SCXW125903418 BCX0">’s</span><span class="NormalTextRun SCXW125903418 BCX0"> C</span><span class="NormalTextRun SCXW125903418 BCX0">hief </span><span class="NormalTextRun SCXW125903418 BCX0">E</span><span class="NormalTextRun SCXW125903418 BCX0">xecutive Officer</span><span class="NormalTextRun SCXW125903418 BCX0">, Amanda Rogaly.</span></span><span class="EOP Selected SCXW125903418 BCX0" data-ccp-props="{}"> </span></p>								</div>
				</div>
				<div class="elementor-element elementor-element-709076a elementor-widget elementor-widget-heading" data-id="709076a" data-element_type="widget" data-e-type="widget" data-widget_type="heading.default">
					<h3 class="elementor-heading-title elementor-size-default">What Documents Do You Need to Claim From the Road Accident Fund? </h3>				</div>
				<div class="elementor-element elementor-element-6801b9c elementor-widget elementor-widget-text-editor" data-id="6801b9c" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
									<p><span data-contrast="auto">The documents required depend on the type of claim and the compensation being sought. The RAF’s current </span><a title="RAF 1 form" href="https://www.raf.co.za/Claims/Documents/RAF%201%20Form%20July%202022.pdf" target="_blank" rel="noopener"><b><span data-contrast="none">RAF 1 form</span></b></a><span data-contrast="auto"> sets out a range of supporting documents that may be required.</span><span data-ccp-props="{}"> </span></p><p><span data-contrast="auto">These include:</span><span data-ccp-props="{}"> </span></p><ul><li aria-setsize="-1" data-leveltext="" data-font="Symbol" data-listid="1" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;&quot;,&quot;469777815&quot;:&quot;multilevel&quot;}" data-aria-posinset="1" data-aria-level="1"><span data-contrast="auto">a certified copy of the claimant’s identity document or passport</span><span data-ccp-props="{}"> </span></li></ul><ul><li aria-setsize="-1" data-leveltext="" data-font="Symbol" data-listid="1" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;&quot;,&quot;469777815&quot;:&quot;multilevel&quot;}" data-aria-posinset="2" data-aria-level="1"><span data-contrast="auto">the injured person’s identification (if different from the claimant&#8217;s)</span><span data-ccp-props="{}"> </span></li></ul><ul><li aria-setsize="-1" data-leveltext="" data-font="Symbol" data-listid="1" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;&quot;,&quot;469777815&quot;:&quot;multilevel&quot;}" data-aria-posinset="3" data-aria-level="1"><span data-contrast="auto">the official accident report</span><span data-ccp-props="{}"> </span></li></ul><ul><li aria-setsize="-1" data-leveltext="" data-font="Symbol" data-listid="1" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;&quot;,&quot;469777815&quot;:&quot;multilevel&quot;}" data-aria-posinset="4" data-aria-level="1"><span data-contrast="auto">the police docket and sketch plan</span><span data-ccp-props="{}"> </span></li></ul><ul><li aria-setsize="-1" data-leveltext="" data-font="Symbol" data-listid="1" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;&quot;,&quot;469777815&quot;:&quot;multilevel&quot;}" data-aria-posinset="5" data-aria-level="1"><span data-contrast="auto">medical records</span><span data-ccp-props="{}"> </span></li></ul><ul><li aria-setsize="-1" data-leveltext="" data-font="Symbol" data-listid="1" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;&quot;,&quot;469777815&quot;:&quot;multilevel&quot;}" data-aria-posinset="6" data-aria-level="1"><span data-contrast="auto">the statutory medical report</span><span data-ccp-props="{}"> </span></li></ul><ul><li aria-setsize="-1" data-leveltext="" data-font="Symbol" data-listid="1" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;&quot;,&quot;469777815&quot;:&quot;multilevel&quot;}" data-aria-posinset="7" data-aria-level="1"><span data-contrast="auto">a power of attorney where a legal representative is acting for the claimant</span><span data-ccp-props="{}"> </span></li></ul><p><span data-contrast="auto">Additional documents may be needed depending on the losses being claimed.</span><span data-ccp-props="{}"> </span></p><p><span data-contrast="auto">For a loss-of-earnings claim, these can include:</span><span data-ccp-props="{}"> </span></p><ul><li aria-setsize="-1" data-leveltext="" data-font="Symbol" data-listid="2" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;&quot;,&quot;469777815&quot;:&quot;multilevel&quot;}" data-aria-posinset="1" data-aria-level="1"><span data-contrast="auto">payslips</span><span data-ccp-props="{}"> </span></li></ul><ul><li aria-setsize="-1" data-leveltext="" data-font="Symbol" data-listid="2" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;&quot;,&quot;469777815&quot;:&quot;multilevel&quot;}" data-aria-posinset="2" data-aria-level="1"><span data-contrast="auto">tax records</span><span data-ccp-props="{}"> </span></li></ul><ul><li aria-setsize="-1" data-leveltext="" data-font="Symbol" data-listid="2" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;&quot;,&quot;469777815&quot;:&quot;multilevel&quot;}" data-aria-posinset="3" data-aria-level="1"><span data-contrast="auto">bank statements</span><span data-ccp-props="{}"> </span></li></ul><ul><li aria-setsize="-1" data-leveltext="" data-font="Symbol" data-listid="2" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;&quot;,&quot;469777815&quot;:&quot;multilevel&quot;}" data-aria-posinset="4" data-aria-level="1"><span data-contrast="auto">an employer’s certificate</span><span data-ccp-props="{}"> </span></li></ul><ul><li aria-setsize="-1" data-leveltext="" data-font="Symbol" data-listid="2" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;&quot;,&quot;469777815&quot;:&quot;multilevel&quot;}" data-aria-posinset="5" data-aria-level="1"><span data-contrast="auto">academic records</span><span data-ccp-props="{}"> </span></li></ul><ul><li aria-setsize="-1" data-leveltext="" data-font="Symbol" data-listid="2" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;&quot;,&quot;469777815&quot;:&quot;multilevel&quot;}" data-aria-posinset="6" data-aria-level="1"><span data-contrast="auto">medical reports supporting the claimed disability and loss of earnings</span><span data-ccp-props="{}"> </span></li></ul><p><span data-contrast="auto">For past medical expenses, you will need:</span><span data-ccp-props="{}"> </span></p><ul><li aria-setsize="-1" data-leveltext="" data-font="Symbol" data-listid="3" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;&quot;,&quot;469777815&quot;:&quot;multilevel&quot;}" data-aria-posinset="1" data-aria-level="1"><span data-contrast="auto">itemised invoices</span><span data-ccp-props="{}"> </span></li></ul><ul><li aria-setsize="-1" data-leveltext="" data-font="Symbol" data-listid="3" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;&quot;,&quot;469777815&quot;:&quot;multilevel&quot;}" data-aria-posinset="2" data-aria-level="1"><span data-contrast="auto">proof of payment</span><span data-ccp-props="{}"> </span></li></ul><p><span data-contrast="auto">Where a claim follows a death, documents can include:</span><span data-ccp-props="{}"> </span></p><ul><li aria-setsize="-1" data-leveltext="" data-font="Symbol" data-listid="4" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;&quot;,&quot;469777815&quot;:&quot;multilevel&quot;}" data-aria-posinset="1" data-aria-level="1"><span data-contrast="auto">the death certificate</span><span data-ccp-props="{}"> </span></li></ul><ul><li aria-setsize="-1" data-leveltext="" data-font="Symbol" data-listid="4" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;&quot;,&quot;469777815&quot;:&quot;multilevel&quot;}" data-aria-posinset="2" data-aria-level="1"><span data-contrast="auto">proof of the deceased’s identity</span><span data-ccp-props="{}"> </span></li></ul><ul><li aria-setsize="-1" data-leveltext="" data-font="Symbol" data-listid="4" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;&quot;,&quot;469777815&quot;:&quot;multilevel&quot;}" data-aria-posinset="3" data-aria-level="1"><span data-contrast="auto">documents establishing the relationship between the deceased and dependants</span><span data-ccp-props="{}"> </span></li></ul><ul><li aria-setsize="-1" data-leveltext="" data-font="Symbol" data-listid="4" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;&quot;,&quot;469777815&quot;:&quot;multilevel&quot;}" data-aria-posinset="4" data-aria-level="1"><span data-contrast="auto">proof of income</span><span data-ccp-props="{}"> </span></li></ul><ul><li aria-setsize="-1" data-leveltext="" data-font="Symbol" data-listid="4" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;&quot;,&quot;469777815&quot;:&quot;multilevel&quot;}" data-aria-posinset="5" data-aria-level="1"><span data-contrast="auto">funeral expense invoices</span><span data-ccp-props="{}"> </span></li></ul><ul><li aria-setsize="-1" data-leveltext="" data-font="Symbol" data-listid="4" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;&quot;,&quot;469777815&quot;:&quot;multilevel&quot;}" data-aria-posinset="6" data-aria-level="1"><span data-contrast="auto">proof of payment</span><span data-ccp-props="{}"> </span></li></ul><p><span data-contrast="auto">The RAF has said that outstanding supporting documents can delay claim finalisation, so it&#8217;s important to provide the relevant information as early as possible.</span></p>								</div>
				<div class="elementor-element elementor-element-68e2d8d elementor-widget elementor-widget-heading" data-id="68e2d8d" data-element_type="widget" data-e-type="widget" data-widget_type="heading.default">
					<h3 class="elementor-heading-title elementor-size-default">How Long Do You Have to Submit a RAF Claim? </h3>				</div>
				<div class="elementor-element elementor-element-2893a4a6 elementor-widget elementor-widget-text-editor" data-id="2893a4a6" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
									<p><span data-contrast="auto">The deadline depends on whether the vehicle and its driver or owner have been identified.</span><span data-ccp-props="{}"> </span></p><p><span data-contrast="auto">Where the identity of the driver or owner has been established, a claim needs to be lodged within three years of the date of the accident. For a claim involving an unidentified vehicle, the period is two years.</span><span data-ccp-props="{}"> </span></p><p><span data-contrast="auto">Once a valid claim has been lodged within the applicable period, the claim generally cannot prescribe before five years from the date of the accident. There are also specific rules affecting prescription for minors and certain people under legal disability, so the circumstances of an individual claim matter.</span><span data-ccp-props="{}"> </span></p><p><span data-contrast="auto">This is one reason it is important not to leave a RAF claim until the deadline is approaching.</span><span data-ccp-props="{}"> </span></p>								</div>
				<div class="elementor-element elementor-element-05d6624 elementor-widget elementor-widget-heading" data-id="05d6624" data-element_type="widget" data-e-type="widget" data-widget_type="heading.default">
					<h3 class="elementor-heading-title elementor-size-default">What is the RAF1 Form? </h3>				</div>
				<div class="elementor-element elementor-element-3e27fe0 elementor-widget elementor-widget-text-editor" data-id="3e27fe0" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
									<p><span data-contrast="auto">The RAF 1 is the prescribed form used to lodge a claim for compensation under section 17 of the </span><a title="Road Accident Fund Act" href="https://www.gov.za/documents/road-accident-fund-act-0" target="_blank" rel="noopener"><b><span data-contrast="none">Road Accident Fund Act</span></b></a><span data-contrast="auto">. It records information about the claimant, the accident, the vehicles and people involved, injuries and the benefits being claimed.</span><span data-ccp-props="{}"> </span></p><p><span data-contrast="auto">The form must be completed in full and accompanied by the supporting documents indicated on the form. The RAF states that an incomplete form may not be accepted as a claim and may not interrupt prescription.</span><span data-ccp-props="{}"> </span></p><p><span data-contrast="auto">The RAF 1 is therefore more than an administrative form. It is the document used to formally lodge the claim, which makes completing it correctly and supplying the required supporting information important.</span><span data-ccp-props="{}"> </span></p>								</div>
				<div class="elementor-element elementor-element-a34be70 elementor-widget elementor-widget-heading" data-id="a34be70" data-element_type="widget" data-e-type="widget" data-widget_type="heading.default">
					<h3 class="elementor-heading-title elementor-size-default">Do You Need a Police Report to Claim from RAF? </h3>				</div>
				<div class="elementor-element elementor-element-8a278d4 elementor-widget elementor-widget-text-editor" data-id="8a278d4" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
									<p><span data-contrast="auto">Yes. The RAF’s RAF 1 form requires the official accident report to be attached and asks for details including the police station where the accident was reported, the accident report number and case number. The form also calls for the docket and sketch plan in its supporting-document requirements.</span><span data-ccp-props="{}"> </span></p><p><span data-contrast="auto">The </span><a title="South African Police Service" href="https://www.saps.gov.za/faqdetail.php?fid=10" target="_blank" rel="noopener"><b><span data-contrast="none">South African Police Service</span></b></a><span data-contrast="auto"> says motor vehicle accidents involving injury or death must be reported to the police or another competent authority, subject to the circumstances set out in the National Road Traffic Act.</span><span data-ccp-props="{}"> </span></p><p><span data-contrast="auto">A police or accident report is therefore an important part of the documentation used to support a RAF claim. It provides information about the accident that the RAF can use when investigating the claim.</span><span data-ccp-props="{}"> </span></p><p><span data-contrast="auto">Getting the paperwork together is only one part of the RAF claims process. The information must also be assessed, supported and submitted correctly, while deadlines need to be observed.</span><span data-ccp-props="{}"> </span></p><p><span data-contrast="auto">RoadCover understands that this is a draining, confusing and complex process; that is why it steps in to manage its members&#8217; RAF claims from start to finish and ensures that </span><b><span data-contrast="auto">100% of their RAF settlement</span></b><span data-contrast="auto"> is paid to them — </span><b><span data-contrast="auto">no fees or expenses deducted.</span></b><span data-ccp-props="{}"> </span></p>								</div>
					</div>
				</div>
		<div class="elementor-element elementor-element-2c371353 e-flex e-con-boxed e-con e-parent" data-id="2c371353" data-element_type="container" data-e-type="container">
					<div class="e-con-inner">
				<div class="elementor-element elementor-element-5ed14a37 elementor-widget elementor-widget-text-editor" data-id="5ed14a37" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
									<p><strong>Disclaimer:</strong> <em>The information provided in this article was correct at the time of publication and is intended for general guidance only. It is subject to change without notice as laws, regulations and membership terms evolve. RoadCover and the Road Accident Fund operate within dynamic legal frameworks and readers should verify current requirements before making decisions or entering into agreements.</em></p>								</div>
					</div>
				</div>
		<div class="elementor-element elementor-element-6b0b6ae8 e-flex e-con-boxed e-con e-parent" data-id="6b0b6ae8" data-element_type="container" data-e-type="container">
					<div class="e-con-inner">
				<div class="elementor-element elementor-element-484083f2 elementor-widget elementor-widget-shortcode" data-id="484083f2" data-element_type="widget" data-e-type="widget" data-widget_type="shortcode.default">
							<div class="elementor-shortcode">		<div data-elementor-type="container" data-elementor-id="2657" class="elementor elementor-2657" data-elementor-post-type="elementor_library">
				<div class="elementor-element elementor-element-1b2aafda e-con-full e-flex e-con e-parent" data-id="1b2aafda" data-element_type="container" data-e-type="container">
				<div class="elementor-element elementor-element-4e06f177 elementor-widget elementor-widget-html" data-id="4e06f177" data-element_type="widget" data-e-type="widget" data-widget_type="html.default">
					<link href="https://fonts.googleapis.com/css2?family=Raleway:wght@400;500;600;700;800&display=swap" rel="stylesheet">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.0/css/all.min.css">

<script src="https://www.google.com/recaptcha/api.js?render=6LdwjNosAAAAAK5qrEyD0FybwyViVZOqamPK1Fnr" async defer></script>

<style>
/* ===============================================================
   RoadCover — Pricing + Onboarding Form
   All selectors scoped to #rc-pricing to avoid host-page bleed.
   PLN codes live on data-plan-code attributes of .rc-btn elements.
   ================================================================ */

#rc-pricing *, #rc-pricing *::before, #rc-pricing *::after {
    box-sizing: border-box;
}
#rc-pricing {
    font-family: 'Raleway', sans-serif;
    width: 100%;
    color: #1f2937;

    /* Plan-card palette — scoped to the embed, never :root, so the
       host page's own custom properties are left untouched. */
    --rc-blue:      #2B4FD4;
    --rc-blue-dark: #1A3399;
    --rc-gold:      #F5C842;
    --rc-gold-dark: #D4A800;
    --rc-text:      #0D1B3E;
    --rc-muted:     #6B7280;
    --rc-border:    #E4E9F8;
    --rc-success:   #16A34A;
}
.rc-wrapper {
    display: flex;
    flex-direction: column;
    gap: 48px;
}

/* ── Header ─────────────────────────────────────────────────────── */
.rc-header { text-align: center; }
.rc-header h2 {
    font-size: 30px;
    font-weight: 800;
    margin: 0 0 8px;
    color: #111827;
}
.rc-header p {
    font-size: 15px;
    color: #6b7280;
    margin: 0;
}

/* ── Single Plan Card ───────────────────────────────────────────── */
/* One responsive card serves both desktop and mobile — there is no
   longer a separate table/card pair to keep in sync. */
.rc-plan-card {
    position: relative;
    background: #fff;
    border: 1px solid var(--rc-border);
    border-radius: 18px;
    overflow: hidden;
    box-shadow: 0 10px 30px rgba(13, 27, 62, 0.08);
}

.rc-plan-header {
    position: relative;
    overflow: hidden;
    background: linear-gradient(135deg, var(--rc-blue) 0%, var(--rc-blue-dark) 100%);
    padding: 32px 28px 30px;
    text-align: center;
}
.rc-plan-header::before {
    content: '';
    position: absolute;
    width: 220px;
    height: 220px;
    right: -90px;
    top: -70px;
    border-radius: 50%;
    background: rgba(255, 255, 255, 0.08);
}
.rc-plan-header::after {
    content: '';
    position: absolute;
    width: 140px;
    height: 140px;
    left: -50px;
    bottom: -50px;
    border-radius: 50%;
    background: rgba(245, 200, 66, 0.14);
}
.rc-plan-header > * { position: relative; z-index: 2; }

.rc-plan-name {
    font-size: 11px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.1em;
    color: rgba(255, 255, 255, 0.65);
    margin-bottom: 6px;
}
.rc-plan-price {
    font-size: 44px;
    font-weight: 900;
    color: var(--rc-gold);
    line-height: 1.1;
}
.rc-plan-price-unit {
    font-size: 14px;
    font-weight: 600;
    color: rgba(255, 255, 255, 0.6);
}
.rc-plan-subprice {
    margin-top: 6px;
    font-size: 12px;
    font-weight: 600;
    color: var(--rc-gold);
    min-height: 16px;
}

.rc-plan-rows { padding: 6px 28px; }
.rc-plan-row {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    padding: 14px 0;
    border-bottom: 1px solid var(--rc-border);
}
.rc-plan-row:last-child { border-bottom: none; }
.rc-plan-row-label {
    font-size: 13.5px;
    font-weight: 600;
    color: var(--rc-text);
}
.rc-plan-row-icon {
    width: 22px;
    height: 22px;
    flex-shrink: 0;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    background: #ECFDF3;
    color: var(--rc-success);
}
.rc-plan-row-icon svg { width: 13px; height: 13px; display: block; }

.rc-plan-cta-block { padding: 20px 28px 26px; }
.rc-plan-cta-hint {
    text-align: center;
    margin-top: 10px;
    font-size: 11px;
    color: var(--rc-muted);
}

/* ── Plan Select Button (JS hook: .rc-btn) ──────────────────────── */
.rc-btn {
    width: 100%;
    padding: 13px 18px;
    border: none;
    border-radius: 10px;
    background: var(--rc-gold);
    color: var(--rc-text);
    font-family: inherit;
    font-size: 14px;
    font-weight: 800;
    letter-spacing: 0.01em;
    cursor: pointer;
    transition: background 0.15s, transform 0.1s;
}
.rc-btn:hover   { background: var(--rc-gold-dark); }
.rc-btn:active  { transform: scale(0.99); }
.rc-btn.rc-selected { background: var(--rc-gold-dark); }

/* ── Form Section ───────────────────────────────────────────────── */
#rc-form-section { display: none; }
#rc-form-section.rc-visible {
    display: block;
    animation: rc-fadein 0.22s ease;
}
@keyframes rc-fadein {
    from { opacity: 0; transform: translateY(10px); }
    to   { opacity: 1; transform: translateY(0); }
}

.rc-form-inner {
    display: flex;
    flex-direction: column;
    gap: 22px;
    background: linear-gradient(135deg, #2A45AC, #1f358a);
    border-radius: 12px;
    padding: 40px;
}

.rc-selected-badge {
    display: inline-block;
    background: rgba(255, 255, 255, 0.15);
    color: #FFD84D;
    font-size: 13px;
    font-weight: 700;
    border-radius: 6px;
    padding: 7px 13px;
}

.rc-form-title {
    font-size: 20px;
    font-weight: 800;
    color: #fff;
    margin: 0;
}

/* Field grid — first two fields sit side-by-side */
.rc-field-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 14px;
}
.rc-field-full { grid-column: 1 / -1; }

.rc-field {
    display: flex;
    flex-direction: column;
    gap: 5px;
}
.rc-field-label {
    font-size: 11px;
    font-weight: 700;
    color: rgba(255, 255, 255, 0.7);
    text-transform: uppercase;
    letter-spacing: 0.05em;
}

/* Icon floats over the input; no separate column, no column border */
.rc-input-row {
    position: relative;
    border: 1px solid #6f7ec1;
    border-radius: 8px;
    background: #3d54ac;
    transition: border-color 0.15s, box-shadow 0.15s;
}
.rc-input-row:focus-within {
    border-color: #a0aee0;
    box-shadow: 0 0 0 3px rgba(111, 126, 193, 0.3);
}
.rc-input-row:has(.invalid) { border-color: #FF3B30; }
.rc-input-row:has(.invalid):focus-within {
    box-shadow: 0 0 0 3px rgba(129, 12, 12, 0.25);
}

.rc-input-icon {
    position: absolute;
    left: 14px;
    top: 50%;
    transform: translateY(-50%);
    color: rgba(255, 255, 255, 0.55);
    font-size: 14px;
    pointer-events: none;
}

.rc-input {
    display: block;
    width: 100%;
    padding: 11px 14px 11px 44px !important;
    border: 0;
    box-shadow: none;
    border-radius: 8px;
    background: transparent;
    font-family: inherit;
    font-size: 14px;
    color: #fff;
    -webkit-appearance: none;
    appearance: none;
    outline: none;
}
#rc-pricing .rc-input::placeholder { color: rgb(248, 248, 248); }
.rc-input.invalid { /* border shown via :has on .rc-input-row */ }

/* Native select chevron */
select.rc-input {
    padding-right: 36px;
    background-color: #3d54ac;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='7' viewBox='0 0 12 7'%3E%3Cpolyline points='1,1 6,6 11,1' fill='none' stroke='%23a0aee0' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
    background-repeat: no-repeat;
    background-position: right 12px center;
    cursor: pointer;
    color: #fff;
}

.rc-field-error {
    font-size: 12px;
    color: #FF3B30;
    margin: 0;
    line-height: 1.4;
}

/* T&C checkbox */
.rc-terms {
    display: flex;
    align-items: center;
    gap: 10px;
    font-size: 14px;
    color: rgba(255, 255, 255, 0.85);
    cursor: pointer;
    user-select: none;
}
.rc-terms input[type="checkbox"] {
    width: 17px;
    height: 17px;
    cursor: pointer;
    flex-shrink: 0;
    accent-color: #FFD84D;
}
.rc-terms.invalid { color: #FF3B30; }
.rc-terms.invalid input[type="checkbox"] {
    outline: 2px solid #FF3B30;
    outline-offset: 2px;
    border-radius: 2px;
}

.rc-submit:disabled,
.rc-submit:disabled:hover {
    background: #FFD84D; /* same as default */
    cursor: not-allowed;
}
/* Submit button */
.rc-submit {
    width: 100%;
    padding: 14px 20px;
    border: none;
    border-radius: 10px;
    background: #FFD84D;
    color: #1f358a;
    font-family: inherit;
    font-size: 15px;
    font-weight: 700;
    cursor: pointer;
    transition: background 0.15s, transform 0.1s;
    letter-spacing: 0.01em;
}
.rc-submit:hover:not([disabled]) { background: #f5cc35; }
.rc-submit:active:not([disabled]) { transform: scale(0.99); }
.rc-submit[disabled] { opacity: 0.5; cursor: not-allowed; }

.rc-form-error {
    font-size: 13px;
    color: #FF3B30;
    margin: 0;
    line-height: 1.5;
}

.rc-recaptcha-notice {
    font-size: 11px;
    color: rgba(255, 255, 255, 0.45);
    margin: 0;
    line-height: 1.5;
    text-align: center;
}
.rc-recaptcha-notice a {
    color: rgba(255, 255, 255, 0.55);
    text-decoration: underline;
}

/* ── Billing Toggle ─────────────────────────────────────────────── */
/* Sits on the dark gradient header, so it is styled for a dark ground. */
.rc-billing-toggle {
    display: inline-flex;
    background: rgba(255, 255, 255, 0.12);
    border: 1.5px solid rgba(255, 255, 255, 0.2);
    border-radius: 999px;
    padding: 3px;
    gap: 2px;
    margin-bottom: 20px;
}
.rc-toggle-opt {
    padding: 7px 20px;
    border: none;
    border-radius: 999px;
    background: transparent;
    color: rgba(255, 255, 255, 0.75);
    font-family: inherit;
    font-size: 12.5px;
    font-weight: 700;
    cursor: pointer;
    transition: background 0.2s ease, color 0.2s ease;
    white-space: nowrap;
    line-height: 1;
}
.rc-toggle-opt:hover:not(.rc-toggle-active) {
    background: rgba(255, 255, 255, 0.08);
}
.rc-toggle-opt.rc-toggle-active {
    background: var(--rc-gold);
    color: var(--rc-text);
}

.rc-save-badge {
    display: inline-block;
    margin-left: 6px;
    padding: 1px 6px;
    border-radius: 999px;
    font-size: 9.5px;
    font-weight: 800;
    color: rgba(255, 255, 255, 0.85);
    background: rgba(255, 255, 255, 0.16);
}
/* On the gold active pill, white-on-gold is unreadable — invert it. */
.rc-toggle-active .rc-save-badge {
    color: var(--rc-text);
    background: rgba(13, 27, 62, 0.12);
}

/* ── Responsive ─────────────────────────────────────────────────── */
@media (max-width: 700px) {
    #rc-pricing     { padding: 0px 0px; }
    .rc-wrapper     { gap: 32px; }
    .rc-plan-header { padding: 28px 20px 26px; }
    .rc-plan-price  { font-size: 38px; }
    .rc-plan-rows   { padding: 6px 20px; }
    .rc-plan-cta-block { padding: 18px 20px 22px; }
    .rc-field-grid  { grid-template-columns: 1fr; }
    .rc-field-full  { grid-column: 1; }
    .rc-form-inner  { padding: 24px 20px; }
    .rc-header h2   { font-size: 24px; }
}
</style>

<!-- ================================================================
     PRICING TABLE + ONBOARDING FORM
     ================================================================ -->
<div id="rc-pricing">
  <div class="rc-wrapper">

    <!-- Single plan card — one responsive card for desktop and mobile -->
    <div class="rc-plan-card" data-plan-key="RoadCover">

      <div class="rc-plan-header">
        <div class="rc-billing-toggle" role="group" aria-label="Billing period">
          <button type="button" class="rc-toggle-opt rc-toggle-active" data-billing="monthly">Monthly</button>
          <button type="button" class="rc-toggle-opt" data-billing="annual">Annual <span class="rc-save-badge">Save 6%</span></button>
        </div>

        <div class="rc-plan-name">RoadCover</div>
        <div class="rc-plan-price"><span class="rc-plan-price-val">R49</span><span class="rc-plan-price-unit">/mo</span></div>
        <div class="rc-plan-subprice" hidden></div>
      </div>

      <div class="rc-plan-rows">
        <div class="rc-plan-row">
          <span class="rc-plan-row-label">RAF Claim Support</span>
          <span class="rc-plan-row-icon" role="img" aria-label="Included">
            <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><polyline points="20 6 9 17 4 12"></polyline></svg>
          </span>
        </div>
        <div class="rc-plan-row">
          <span class="rc-plan-row-label">Legal Expertise</span>
          <span class="rc-plan-row-icon" role="img" aria-label="Included">
            <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><polyline points="20 6 9 17 4 12"></polyline></svg>
          </span>
        </div>
      </div>

      <div class="rc-plan-cta-block">
        <button class="rc-btn"
                data-plan="RoadCover"
                data-plan-code="RC49"
                data-price="49.00 /Month">Select RoadCover &#8594;</button>
        <div class="rc-plan-cta-hint">No fees. 100% of your payout.</div>
      </div>

    </div><!-- /.rc-plan-card -->

    <!-- Form: hidden until a plan is selected -->
    <div id="rc-form-section">
      <form id="roadcover-form" novalidate>

        <!-- product_code is set programmatically on plan button click -->
        <input type="hidden" name="product_code" id="cover-input">
        <input type="hidden" name="form_id"   value="9a3d492">
        <input type="hidden" name="form_name" value="Get RoadCover">

        <div class="rc-form-inner">

          <div id="selectedPlan" class="rc-selected-badge">Selected: &#8212;</div>
          <p class="rc-form-title">Enter your details</p>

          <div class="rc-field-grid">

            <!-- Row 1: name -->
            <div class="rc-field">
              <label class="rc-field-label" for="rc-first-name">First name *</label>
              <div class="rc-input-row">
                <i class="fa-solid fa-user rc-input-icon" aria-hidden="true"></i>
                <input class="rc-input" type="text" id="rc-first-name"
                       name="first_name" required maxlength="60" placeholder="First name">
              </div>
            </div>

            <div class="rc-field">
              <label class="rc-field-label" for="rc-last-name">Last name *</label>
              <div class="rc-input-row">
                <i class="fa-solid fa-user rc-input-icon" aria-hidden="true"></i>
                <input class="rc-input" type="text" id="rc-last-name"
                       name="last_name" required maxlength="60" placeholder="Last name">
              </div>
            </div>

            <!-- Row 2: identity -->
            <div class="rc-field">
              <label class="rc-field-label" for="rc-id">ID number *</label>
              <div class="rc-input-row">
                <i class="fa-solid fa-id-card rc-input-icon" aria-hidden="true"></i>
                <input class="rc-input" type="text" id="rc-id"
                       name="identificationnr" required pattern="[0-9]{13}"
                       inputmode="numeric" maxlength="13"
                       placeholder="13-digit SA ID number">
              </div>
            </div>

            <div class="rc-field">
              <label class="rc-field-label" for="rc-gender">Gender *</label>
              <div class="rc-input-row">
                <i class="fa-solid fa-venus-mars rc-input-icon" aria-hidden="true"></i>
                <select class="rc-input" id="rc-gender" name="gender" required>
                  <option value="">Select&hellip;</option>
                  <option value="1">Male</option>
                  <option value="2">Female</option>
                </select>
              </div>
            </div>

            <!-- Row 3: contact -->
            <div class="rc-field">
              <label class="rc-field-label" for="rc-email">Email *</label>
              <div class="rc-input-row">
                <i class="fa-solid fa-envelope rc-input-icon" aria-hidden="true"></i>
                <input class="rc-input" type="email" id="rc-email"
                       name="email" required maxlength="254"
                       placeholder="you@example.com">
              </div>
            </div>

            <div class="rc-field">
              <label class="rc-field-label" for="rc-mobile">Mobile *</label>
              <div class="rc-input-row">
                <i class="fa-solid fa-phone rc-input-icon" aria-hidden="true"></i>
                <input class="rc-input" type="tel" id="rc-mobile"
                       name="mobile" required inputmode="tel"
                       placeholder="0XXXXXXXXX or +27XXXXXXXXX">
              </div>
            </div>

            <!-- Row 4: optional -->
            <div class="rc-field rc-field-full">
              <label class="rc-field-label" for="rc-promo">Promo code</label>
              <div class="rc-input-row">
                <i class="fa-solid fa-tag rc-input-icon" aria-hidden="true"></i>
                <input class="rc-input" type="text" id="rc-promo"
                       name="promo_code" maxlength="32" placeholder="Optional">
              </div>
            </div>

          </div><!-- /.rc-field-grid -->

          <label class="rc-terms">
            <input type="checkbox" name="I accept the Terms and Conditions." required>
            <span>I accept the Terms and Conditions.</span>
          </label>

          <button type="submit" id="submit-btn" class="rc-submit">Continue</button>
          <p id="form-error" class="rc-form-error" hidden></p>

          <p class="rc-recaptcha-notice">This site is protected by reCAPTCHA and the Google <a href="https://policies.google.com/privacy" target="_blank" rel="noopener noreferrer">Privacy Policy</a> and <a href="https://policies.google.com/terms" target="_blank" rel="noopener noreferrer">Terms of Service</a> apply.</p>

        </div><!-- /.rc-form-inner -->
      </form>
    </div><!-- /#rc-form-section -->

  </div><!-- /.rc-wrapper -->
</div><!-- /#rc-pricing -->

<script>
(function () {
    var form           = document.getElementById('roadcover-form');
    var errEl          = document.getElementById('form-error');
    var submitBtn      = document.getElementById('submit-btn');
    var coverInput     = document.getElementById('cover-input');
    var formSection    = document.getElementById('rc-form-section');
    var selectedPlanEl = document.getElementById('selectedPlan');
    var pricing        = document.getElementById('rc-pricing');

    var currentPrice   = '';
    var isAnnual       = false;
    var currentPlanBtn = null;

    // ── Plan + billing data ───────────────────────────────────────────────────
    var planData = {
        'RoadCover': {
            monthly: { priceVal: 'R49', unit: '/mo', code: 'RC49',         priceStr: '49.00 /Month',  subprice: '' },
            annual:  { priceVal: 'R550', unit: '/yr', code: 'PRD-CB838AEF', priceStr: '550.00 /Year', subprice: '~R46/mo' }
        }
    };

    // ── Apply billing mode to all price displays and button codes ─────────────
    function applyBilling() {
        var mode = isAnnual ? 'annual' : 'monthly';

        // Plan card price display
        pricing.querySelectorAll('.rc-plan-card[data-plan-key]').forEach(function (card) {
            var d = planData[card.dataset.planKey][mode];
            card.querySelector('.rc-plan-price-val').textContent  = d.priceVal;
            card.querySelector('.rc-plan-price-unit').textContent = d.unit;
            var sub = card.querySelector('.rc-plan-subprice');
            sub.textContent = d.subprice;
            sub.hidden      = !d.subprice;
        });

        // Update data-plan-code on all buttons so selection highlighting still works
        pricing.querySelectorAll('.rc-btn').forEach(function (btn) {
            var key = btn.dataset.plan;
            if (!planData[key]) return;
            btn.dataset.planCode = planData[key][mode].code;
            btn.dataset.price    = planData[key][mode].priceStr;
        });

        // If a plan was already selected, refresh the hidden input + badge + button label
        if (currentPlanBtn) {
            var key     = currentPlanBtn.dataset.plan;
            var d       = planData[key][mode];
            var billing = isAnnual ? 'Annual' : 'Monthly';
            coverInput.value           = d.code;
            currentPrice               = d.priceStr;
            selectedPlanEl.textContent = 'Selected: ' + key + ' (' + billing + ')';
            updateButton();
        }
    }

    // ── Helpers (mirrored in n8n Code node — keep in sync) ───────────────────

    function clean(v) {
        if (v === null || v === undefined) return '';
        var s = String(v);
        s = s.replace(/[\x00-\x08\x0B\x0C\x0E-\x1F\x7F]/g, '');
        s = s.replace(/<script\b[^>]*>[\s\S]*?<\/script\s*>/gi, '');
        s = s.replace(/<\/?[a-zA-Z][^>]*>/g, '');
        s = s.replace(/javascript\s*:/gi, '');
        s = s.replace(/\s+/g, ' ').trim();
        return s;
    }

    function luhnValid(idStr) {
        var sum = 0;
        for (var i = 0; i < 13; i++) {
            var n = parseInt(idStr.charAt(i), 10);
            if (i % 2 === 1) { n *= 2; if (n > 9) n -= 9; }
            sum += n;
        }
        return sum % 10 === 0;
    }

    // Returns { ok: true } or { ok: false, field, message }
    function validate(data) {
        var required = {
            product_code:       'Please select a cover plan.',
            first_name:         'First name is required.',
            last_name:          'Last name is required.',
            email:              'Email is required.',
            mobile:             'Mobile number is required.',
            identificationnr:   'ID number is required.',
            gender:             'Please select your gender.'
        };
        for (var k in required) {
            if (!data[k]) return { ok: false, field: k, message: required[k] };
        }

        if (data.first_name.length > 60)
            return { ok: false, field: 'first_name', message: 'First name is too long (max 60).' };
        if (data.last_name.length > 60)
            return { ok: false, field: 'last_name', message: 'Last name is too long (max 60).' };

        var emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
        if (!emailRegex.test(data.email))
            return { ok: false, field: 'email', message: 'Please enter a valid email address.' };
        if (data.email.length > 254)
            return { ok: false, field: 'email', message: 'Email is too long.' };

        var mobileRegex = /^(\+27|0)[0-9]{9}$/;
        if (!mobileRegex.test(data.mobile))
            return { ok: false, field: 'mobile', message: 'Mobile must be 10 digits starting with 0, or +27 followed by 9 digits.' };

        var genderNum = Number(data.gender);
        if (genderNum !== 1 && genderNum !== 2)
            return { ok: false, field: 'gender', message: 'Please select your gender.' };

        if (!/^[0-9]{13}$/.test(data.identificationnr))
            return { ok: false, field: 'identificationnr', message: 'ID number must be exactly 13 digits.' };

        var yy        = parseInt(data.identificationnr.substring(0, 2), 10);
        var mm        = parseInt(data.identificationnr.substring(2, 4), 10);
        var dd        = parseInt(data.identificationnr.substring(4, 6), 10);
        var now       = new Date();
        var currentYY = now.getFullYear() % 100;
        var fullYear  = (yy > currentYY) ? (1900 + yy) : (2000 + yy);
        var dob       = new Date(fullYear, mm - 1, dd);
        var dobValid  =
            dob.getFullYear() === fullYear &&
            dob.getMonth()    === (mm - 1) &&
            dob.getDate()     === dd       &&
            dob <= now;
        if (!dobValid)
            return { ok: false, field: 'identificationnr', message: 'The first 6 digits of your ID number are not a valid date of birth.' };

        var genderDigits = parseInt(data.identificationnr.substring(6, 10), 10);
        var idGender     = genderDigits >= 5000 ? 1 : 2;
        if (idGender !== genderNum) {
            var expected = idGender === 1 ? 'Male' : 'Female';
            return { ok: false, field: 'identificationnr',
                     message: 'The selected gender does not match your ID number (ID indicates ' + expected + ').' };
        }

        if (!luhnValid(data.identificationnr))
            return { ok: false, field: 'identificationnr', message: 'ID number checksum is invalid. Please check the number.' };

        return { ok: true };
    }

    // ── UI helpers ────────────────────────────────────────────────────────────

    function clearFieldErrors() {
        form.querySelectorAll('.invalid').forEach(function (el) { el.classList.remove('invalid'); });
        form.querySelectorAll('.rc-field-error').forEach(function (el) { el.remove(); });
    }

    function showFieldError(fieldName, message) {
        // product_code is a hidden input — surface as a form-level error
        if (fieldName === 'product_code') {
            showFormError(message);
            return;
        }
        var input = form.querySelector('[name="' + fieldName + '"]');
        if (!input) return;
        input.classList.add('invalid');
        var field = input.closest('.rc-field') || input.parentElement;
        var span  = field.querySelector('.rc-field-error');
        if (!span) {
            span = document.createElement('span');
            span.className = 'rc-field-error';
            field.appendChild(span);
        }
        span.textContent = message;
        input.focus();
    }

    function showFormError(message) {
        errEl.textContent = message;
        errEl.hidden = false;
    }

    function hideFormError() {
        errEl.hidden = true;
        errEl.textContent = '';
    }

    function updateButton() {
        submitBtn.textContent = currentPrice ? ('Continue • R' + currentPrice) : 'Continue';
        submitBtn.disabled    = false;
    }

    // ── Collect & sanitise ────────────────────────────────────────────────────

    function collectData() {
        var fd = new FormData(form);
        return {
            product_code:       clean(fd.get('product_code')),
            first_name:         clean(fd.get('first_name')),
            last_name:          clean(fd.get('last_name')),
            email:              clean(fd.get('email')).toLowerCase(),
            mobile:             clean(fd.get('mobile')),
            identificationnr:   clean(fd.get('identificationnr')),
            gender:             clean(fd.get('gender')),
            promo_code:         clean(fd.get('promo_code'))
        };
    }

    // ── Billing toggle ────────────────────────────────────────────────────────

    pricing.querySelectorAll('.rc-toggle-opt').forEach(function (btn) {
        btn.addEventListener('click', function () {
            if (btn.dataset.billing === (isAnnual ? 'annual' : 'monthly')) return;
            isAnnual = !isAnnual;
            pricing.querySelectorAll('.rc-toggle-opt').forEach(function (b) {
                b.classList.toggle('rc-toggle-active', b.dataset.billing === (isAnnual ? 'annual' : 'monthly'));
            });
            applyBilling();
        });
    });

    // ── Plan selection ────────────────────────────────────────────────────────

    pricing.querySelectorAll('.rc-btn').forEach(function (planBtn) {
        planBtn.addEventListener('click', function () {
            var code    = planBtn.dataset.planCode;
            var plan    = planBtn.dataset.plan;
            var price   = planBtn.dataset.price || '';
            var billing = isAnnual ? 'Annual' : 'Monthly';

            currentPlanBtn = planBtn;

            // Highlight every button sharing the same plan code (desktop + mobile pair)
            pricing.querySelectorAll('.rc-btn').forEach(function (b) {
                b.classList.toggle('rc-selected', b.dataset.planCode === code);
            });

            coverInput.value           = code;
            currentPrice               = price;
            selectedPlanEl.textContent = 'Selected: ' + plan + ' (' + billing + ')';
            updateButton();

            formSection.classList.add('rc-visible');
            formSection.scrollIntoView({ behavior: 'smooth', block: 'nearest' });

            clearFieldErrors();
            hideFormError();
        });
    });

    // ── Initialise billing display ────────────────────────────────────────────
    applyBilling();

    // ── Clear errors on edit ──────────────────────────────────────────────────

    form.addEventListener('input', function (e) {
        if (e.target.classList.contains('invalid')) {
            e.target.classList.remove('invalid');
            var f = e.target.closest('.rc-field');
            if (f) { var s = f.querySelector('.rc-field-error'); if (s) s.remove(); }
        }
        hideFormError();
    });

    form.addEventListener('change', function (e) {
        if (e.target.classList.contains('invalid')) {
            e.target.classList.remove('invalid');
            var f = e.target.closest('.rc-field');
            if (f) { var s = f.querySelector('.rc-field-error'); if (s) s.remove(); }
        }
        if (e.target.type === 'checkbox' && e.target.checked) {
            var label = e.target.closest('label.rc-terms');
            if (label) label.classList.remove('invalid');
            hideFormError();
        }
    });

    // ── Form submit ───────────────────────────────────────────────────────────

    form.addEventListener('submit', async function (e) {
        e.preventDefault();
        hideFormError();
        clearFieldErrors();

        var data   = collectData();
        var result = validate(data);
        if (!result.ok) {
            showFieldError(result.field, result.message);
            return;
        }

        var termsBox = form.querySelector('input[type="checkbox"][required]');
        if (termsBox && !termsBox.checked) {
            var termsLabel = termsBox.closest('label.rc-terms');
            if (termsLabel) termsLabel.classList.add('invalid');
            termsBox.focus();
            showFormError('Please accept the Terms and Conditions to continue.');
            return;
        }

        submitBtn.disabled    = true;
        submitBtn.textContent = 'Processing…';

        // ── reCAPTCHA v3 — must complete before the network request ──────────
        var recaptchaToken = '';
        try {
            recaptchaToken = await new Promise(function (resolve, reject) {
                if (typeof grecaptcha === 'undefined') { reject(new Error('not loaded')); return; }
                grecaptcha.ready(function () {
                    grecaptcha.execute('6LdwjNosAAAAAK5qrEyD0FybwyViVZOqamPK1Fnr', { action: 'submit' })
                        .then(resolve).catch(reject);
                });
            });
        } catch (_) {
            showFormError('Security check could not complete. Please disable any ad blockers and try again.');
            updateButton();
            return;
        }

        try {
            // Send sanitised data so the backend receives cleaned values
            var params = new URLSearchParams();
            for (var k in data) params.append(k, data[k]);
            params.append('form_id',   form.querySelector('[name="form_id"]').value   || '');
            params.append('form_name', form.querySelector('[name="form_name"]').value || '');
            params.append('I accept the Terms and Conditions.', 'on');
            params.append('recaptcha_token', recaptchaToken);

            var res     = await fetch('https://n8n.roadcover.co.za/webhook/form', {
                method:  'POST',
                headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
                body:    params.toString()
            });
            var json    = await res.json();
            var payload = Array.isArray(json) ? json[0] : json;
            var paymentUrl = (payload && payload.data && payload.data.payment_url)
                           || (payload && payload.payment_url);

            if (res.ok && payload && payload.success && paymentUrl) {
                window.location.href = paymentUrl;
            } else if (payload && (payload.error_code === 'DUPLICATE_MEMBER' || payload.error_code === 'DUPLICATE_ACTIVE_MEMBER')) {
                var supportEmail = (payload && payload.support_email) || 'info@roadcover.co.za';
                var refNumber = payload && payload.reference_number;
                showFieldError(
                    (payload && payload.field) || 'identificationnr',
                    'This ID number is already registered on the membership system.'
                );
                var bannerMsg = 'This ID number is already registered as an active member. Please contact support for assistance ' + supportEmail + '.';
                if (refNumber) {
                    bannerMsg += ' Your reference number is ' + refNumber + '.';
                }
                showFormError(bannerMsg);
                updateButton();
            } else {
                var message = (payload && payload.message) || 'Something went wrong. Please try again.';
                if (payload && payload.field) {
                    showFieldError(payload.field, message);
                } else {
                    showFormError(message);
                }
                updateButton();
            }
        } catch (_) {
            showFormError('Could not reach the service. Please try again.');
            updateButton();
        }
    });

})();
</script>
				</div>
				</div>
				</div>
		</div>
						</div>
					</div>
				</div>
				</div>
		]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>RAF Serious Injury Classification</title>
		<link>https://www.roadcover.co.za/raf-serious-injury-classification/</link>
		
		<dc:creator><![CDATA[Nokuthula Ngcobo]]></dc:creator>
		<pubDate>Mon, 05 Oct 2026 08:30:50 +0000</pubDate>
				<category><![CDATA[article]]></category>
		<guid isPermaLink="false">https://www.roadcover.co.za/?p=3237</guid>

					<description><![CDATA[A serious injury after a motor vehicle accident can have lasting physical, psychological and financial consequences. However, not every injury qualifies as a serious injury for purposes of claiming general damages from the Road Accident Fund (RAF). ]]></description>
			<style id="elementor-post-3237">.elementor-3237 .elementor-element.elementor-element-6939574e{--display:flex;--padding-top:220px;--padding-bottom:0px;--padding-left:0112px;--padding-right:0112px;}.elementor-3237 .elementor-element.elementor-element-63320f9f{--display:flex;--flex-direction:row;--container-widget-width:initial;--container-widget-height:100%;--container-widget-flex-grow:1;--container-widget-align-self:stretch;--flex-wrap-mobile:wrap;--padding-top:0px;--padding-bottom:0px;--padding-left:0px;--padding-right:0px;}.elementor-3237 .elementor-element.elementor-element-1a00666c{--display:flex;--flex-direction:row;--container-widget-width:calc( ( 1 - var( --container-widget-flex-grow ) ) * 100% );--container-widget-height:100%;--container-widget-flex-grow:1;--container-widget-align-self:stretch;--flex-wrap-mobile:wrap;--align-items:center;--padding-top:0px;--padding-bottom:0px;--padding-left:0px;--padding-right:0px;}.elementor-widget-text-editor{font-family:var( --e-global-typography-text-font-family ), Sans-serif;font-weight:var( --e-global-typography-text-font-weight );color:var( --e-global-color-text );}.elementor-widget-text-editor.elementor-drop-cap-view-stacked .elementor-drop-cap{background-color:var( --e-global-color-primary );}.elementor-widget-text-editor.elementor-drop-cap-view-framed .elementor-drop-cap, .elementor-widget-text-editor.elementor-drop-cap-view-default .elementor-drop-cap{color:var( --e-global-color-primary );border-color:var( --e-global-color-primary );}.elementor-3237 .elementor-element.elementor-element-485aa46d{font-family:"Raleway", Sans-serif;font-size:14px;font-weight:600;color:#556DDD;}.elementor-widget-button .elementor-button{background-color:var( --e-global-color-accent );font-family:var( --e-global-typography-accent-font-family ), Sans-serif;font-weight:var( --e-global-typography-accent-font-weight );}.elementor-3237 .elementor-element.elementor-element-4e355522 .elementor-button{background-color:#556DDD1A;font-family:"Raleway", Sans-serif;font-size:12px;font-weight:700;text-transform:uppercase;fill:#2A45AC;color:#2A45AC;border-radius:999px 999px 999px 999px;}.elementor-3237 .elementor-element.elementor-element-22f5c8ad{--display:flex;--padding-top:0px;--padding-bottom:0px;--padding-left:0px;--padding-right:0px;}.elementor-widget-theme-post-title .elementor-heading-title{font-family:var( --e-global-typography-primary-font-family ), Sans-serif;font-weight:var( --e-global-typography-primary-font-weight );color:var( --e-global-color-primary );}.elementor-3237 .elementor-element.elementor-element-27a06816 .elementor-heading-title{font-family:"Raleway", Sans-serif;font-size:3.5vw;font-weight:800;}.elementor-3237 .elementor-element.elementor-element-b722ced{--display:flex;--flex-direction:row;--container-widget-width:calc( ( 1 - var( --container-widget-flex-grow ) ) * 100% );--container-widget-height:100%;--container-widget-flex-grow:1;--container-widget-align-self:stretch;--flex-wrap-mobile:wrap;--align-items:center;--padding-top:0px;--padding-bottom:0px;--padding-left:0px;--padding-right:0px;}.elementor-widget-divider{--divider-color:var( --e-global-color-secondary );}.elementor-widget-divider .elementor-divider__text{color:var( --e-global-color-secondary );font-family:var( --e-global-typography-secondary-font-family ), Sans-serif;font-weight:var( --e-global-typography-secondary-font-weight );}.elementor-widget-divider.elementor-view-stacked .elementor-icon{background-color:var( --e-global-color-secondary );}.elementor-widget-divider.elementor-view-framed .elementor-icon, .elementor-widget-divider.elementor-view-default .elementor-icon{color:var( --e-global-color-secondary );border-color:var( --e-global-color-secondary );}.elementor-widget-divider.elementor-view-framed .elementor-icon, .elementor-widget-divider.elementor-view-default .elementor-icon svg{fill:var( --e-global-color-secondary );}.elementor-3237 .elementor-element.elementor-element-67bab2b6{--divider-border-style:solid;--divider-color:#556DDD1A;--divider-border-width:2px;width:var( --container-widget-width, 28px );max-width:28px;--container-widget-width:28px;--container-widget-flex-grow:0;}.elementor-3237 .elementor-element.elementor-element-67bab2b6 .elementor-divider-separator{width:28px;}.elementor-3237 .elementor-element.elementor-element-67bab2b6 .elementor-divider{padding-block-start:15px;padding-block-end:15px;}.elementor-3237 .elementor-element.elementor-element-5c13b98a{font-family:"Raleway", Sans-serif;font-size:14px;font-weight:600;color:#2A45AC;}.elementor-3237 .elementor-element.elementor-element-43c441ee{--display:flex;--padding-top:50px;--padding-bottom:0px;--padding-left:0px;--padding-right:0px;}.elementor-widget-theme-post-featured-image .widget-image-caption{color:var( --e-global-color-text );font-family:var( --e-global-typography-text-font-family ), Sans-serif;font-weight:var( --e-global-typography-text-font-weight );}.elementor-3237 .elementor-element.elementor-element-2b47c9f6 img{border-radius:30px 30px 30px 30px;}.elementor-3237 .elementor-element.elementor-element-746c97d9{--display:flex;--gap:40px 40px;--row-gap:40px;--column-gap:40px;--padding-top:50px;--padding-bottom:080px;--padding-left:0px;--padding-right:0px;}.elementor-3237 .elementor-element.elementor-element-346ac140{font-family:"Raleway", Sans-serif;font-size:18px;font-weight:400;color:#2B2B2B;}.elementor-3237 .elementor-element.elementor-element-ddfdc19{--display:flex;border-style:solid;--border-style:solid;border-width:0px 0px 0px 4px;--border-top-width:0px;--border-right-width:0px;--border-bottom-width:0px;--border-left-width:4px;border-color:#556DDD;--border-color:#556DDD;--border-radius:0px 0px 0px 0px;--padding-top:0px;--padding-bottom:0px;--padding-left:20px;--padding-right:0px;}.elementor-3237 .elementor-element.elementor-element-72ae72d7{font-family:"Raleway", Sans-serif;font-size:20px;font-weight:600;color:#2A45AC;}.elementor-widget-heading .elementor-heading-title{font-family:var( --e-global-typography-primary-font-family ), Sans-serif;font-weight:var( --e-global-typography-primary-font-weight );color:var( --e-global-color-primary );}.elementor-3237 .elementor-element.elementor-element-2439bf10{padding:20px 0px 0px 0px;}.elementor-3237 .elementor-element.elementor-element-2439bf10 .elementor-heading-title{font-family:"Raleway", Sans-serif;font-size:24px;font-weight:700;color:#2A45AC;}.elementor-3237 .elementor-element.elementor-element-1878bcf6{font-family:"Raleway", Sans-serif;font-size:18px;font-weight:400;color:#2B2B2B;}.elementor-3237 .elementor-element.elementor-element-9ce3d1c{padding:20px 0px 0px 0px;}.elementor-3237 .elementor-element.elementor-element-9ce3d1c .elementor-heading-title{font-family:"Raleway", Sans-serif;font-size:24px;font-weight:700;color:#2A45AC;}.elementor-3237 .elementor-element.elementor-element-af8b8c4{font-family:"Raleway", Sans-serif;font-size:18px;font-weight:400;color:#2B2B2B;}.elementor-3237 .elementor-element.elementor-element-ba6e7fe{padding:20px 0px 0px 0px;}.elementor-3237 .elementor-element.elementor-element-ba6e7fe .elementor-heading-title{font-family:"Raleway", Sans-serif;font-size:24px;font-weight:700;color:#2A45AC;}.elementor-3237 .elementor-element.elementor-element-ecbf8b3{font-family:"Raleway", Sans-serif;font-size:18px;font-weight:400;color:#2B2B2B;}.elementor-3237 .elementor-element.elementor-element-cc0ad39{padding:20px 0px 0px 0px;}.elementor-3237 .elementor-element.elementor-element-cc0ad39 .elementor-heading-title{font-family:"Raleway", Sans-serif;font-size:24px;font-weight:700;color:#2A45AC;}.elementor-3237 .elementor-element.elementor-element-d4e6179{font-family:"Raleway", Sans-serif;font-size:18px;font-weight:400;color:#2B2B2B;}.elementor-3237 .elementor-element.elementor-element-f9c43e8{padding:20px 0px 0px 0px;}.elementor-3237 .elementor-element.elementor-element-f9c43e8 .elementor-heading-title{font-family:"Raleway", Sans-serif;font-size:24px;font-weight:700;color:#2A45AC;}.elementor-3237 .elementor-element.elementor-element-24eae6b{font-family:"Raleway", Sans-serif;font-size:18px;font-weight:400;color:#2B2B2B;}.elementor-3237 .elementor-element.elementor-element-e042bb4{--display:flex;--gap:40px 40px;--row-gap:40px;--column-gap:40px;--padding-top:50px;--padding-bottom:080px;--padding-left:0px;--padding-right:0px;}.elementor-3237 .elementor-element.elementor-element-201f782b{font-family:"Raleway", Sans-serif;font-size:18px;font-weight:400;color:#2B2B2B;}.elementor-3237 .elementor-element.elementor-element-815c5c9{--display:flex;--padding-top:0px;--padding-bottom:0px;--padding-left:0px;--padding-right:0px;}@media(max-width:1023px){.elementor-3237 .elementor-element.elementor-element-6939574e{--padding-top:100px;--padding-bottom:0px;--padding-left:030px;--padding-right:30px;}.elementor-3237 .elementor-element.elementor-element-27a06816 .elementor-heading-title{font-size:32px;}.elementor-3237 .elementor-element.elementor-element-b722ced{--gap:10px 10px;--row-gap:10px;--column-gap:10px;}.elementor-3237 .elementor-element.elementor-element-43c441ee{--padding-top:0px;--padding-bottom:0px;--padding-left:10px;--padding-right:010px;}.elementor-3237 .elementor-element.elementor-element-2b47c9f6{padding:30px 0px 0px 0px;}.elementor-3237 .elementor-element.elementor-element-746c97d9{--gap:20px 20px;--row-gap:20px;--column-gap:20px;--padding-top:50px;--padding-bottom:80px;--padding-left:020px;--padding-right:20px;}.elementor-3237 .elementor-element.elementor-element-346ac140{font-size:16px;}.elementor-3237 .elementor-element.elementor-element-72ae72d7{font-size:17px;}.elementor-3237 .elementor-element.elementor-element-2439bf10 .elementor-heading-title{font-size:20px;}.elementor-3237 .elementor-element.elementor-element-9ce3d1c .elementor-heading-title{font-size:20px;}.elementor-3237 .elementor-element.elementor-element-ba6e7fe .elementor-heading-title{font-size:20px;}.elementor-3237 .elementor-element.elementor-element-cc0ad39 .elementor-heading-title{font-size:20px;}.elementor-3237 .elementor-element.elementor-element-f9c43e8 .elementor-heading-title{font-size:20px;}.elementor-3237 .elementor-element.elementor-element-e042bb4{--gap:20px 20px;--row-gap:20px;--column-gap:20px;--padding-top:50px;--padding-bottom:80px;--padding-left:020px;--padding-right:20px;}.elementor-3237 .elementor-element.elementor-element-201f782b{font-size:16px;}}@media(min-width:1024px){.elementor-3237 .elementor-element.elementor-element-6939574e{--content-width:900px;}.elementor-3237 .elementor-element.elementor-element-43c441ee{--content-width:900px;}.elementor-3237 .elementor-element.elementor-element-746c97d9{--content-width:760px;}.elementor-3237 .elementor-element.elementor-element-e042bb4{--content-width:760px;}}/* Start custom CSS for theme-post-featured-image, class: .elementor-element-2b47c9f6 */@media (max-width: 768px) {
  .elementor-3237 .elementor-element.elementor-element-2b47c9f6 img {
    height: 200px !important;

  }
}

.elementor-3237 .elementor-element.elementor-element-2b47c9f6 img {
  width: 100%;
  height: 480px;
  object-fit: cover;
  object-position: center; /* crop from center — change to 'top' if heads get cut off */
  display: block;
}/* End custom CSS */</style>							<content:encoded><![CDATA[		<div data-elementor-type="wp-post" data-elementor-id="3237" class="elementor elementor-3237" data-elementor-post-type="post">
				<div class="elementor-element elementor-element-6939574e e-flex e-con-boxed e-con e-parent" data-id="6939574e" data-element_type="container" data-e-type="container">
					<div class="e-con-inner">
		<div class="elementor-element elementor-element-63320f9f e-con-full e-flex e-con e-child" data-id="63320f9f" data-element_type="container" data-e-type="container">
		<div class="elementor-element elementor-element-1a00666c e-con-full e-flex e-con e-child" data-id="1a00666c" data-element_type="container" data-e-type="container">
				<div class="elementor-element elementor-element-485aa46d elementor-widget elementor-widget-text-editor" data-id="485aa46d" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
									<p><a style="color: #374dc5; text-decoration: none;" href="https://www.roadcover.co.za/articles/"><br />← Back to Articles<br /></a></p>								</div>
				<div class="elementor-element elementor-element-4e355522 elementor-widget elementor-widget-button" data-id="4e355522" data-element_type="widget" data-e-type="widget" data-widget_type="button.default">
										<a class="elementor-button elementor-button-link elementor-size-sm" href="https://www.roadcover.co.za/articles/">
						<span class="elementor-button-content-wrapper">
									<span class="elementor-button-text">Road Safety &amp; Public Awareness</span>
					</span>
					</a>
								</div>
				</div>
				</div>
		<div class="elementor-element elementor-element-22f5c8ad e-con-full e-flex e-con e-child" data-id="22f5c8ad" data-element_type="container" data-e-type="container">
				<div class="elementor-element elementor-element-27a06816 elementor-widget elementor-widget-theme-post-title elementor-page-title elementor-widget-heading" data-id="27a06816" data-element_type="widget" data-e-type="widget" data-widget_type="theme-post-title.default">
					<h1 class="elementor-heading-title elementor-size-default">RAF Serious Injury Classification</h1>				</div>
				</div>
		<div class="elementor-element elementor-element-b722ced e-con-full e-flex e-con e-child" data-id="b722ced" data-element_type="container" data-e-type="container">
				<div class="elementor-element elementor-element-67bab2b6 elementor-widget__width-initial elementor-widget-divider--view-line elementor-widget elementor-widget-divider" data-id="67bab2b6" data-element_type="widget" data-e-type="widget" data-widget_type="divider.default">
							<div class="elementor-divider">
			<span class="elementor-divider-separator">
						</span>
		</div>
						</div>
				<div class="elementor-element elementor-element-5c13b98a elementor-widget elementor-widget-text-editor" data-id="5c13b98a" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
									<p>Nokuthula Ngcobo</p>								</div>
				</div>
					</div>
				</div>
		<div class="elementor-element elementor-element-43c441ee e-flex e-con-boxed e-con e-parent" data-id="43c441ee" data-element_type="container" data-e-type="container">
					<div class="e-con-inner">
				<div class="elementor-element elementor-element-2b47c9f6 elementor-widget elementor-widget-theme-post-featured-image elementor-widget-image" data-id="2b47c9f6" data-element_type="widget" data-e-type="widget" data-widget_type="theme-post-featured-image.default">
															<img loading="lazy" decoding="async" width="800" height="447" src="https://www.roadcover.co.za/wp-content/uploads/2026/10/RAF-Serious-Injury-Classification-1024x572.jpg" class="attachment-large size-large wp-image-3243" alt="RAF Serious Injury Classification" srcset="https://www.roadcover.co.za/wp-content/uploads/2026/10/RAF-Serious-Injury-Classification-1024x572.jpg 1024w, https://www.roadcover.co.za/wp-content/uploads/2026/10/RAF-Serious-Injury-Classification-300x167.jpg 300w, https://www.roadcover.co.za/wp-content/uploads/2026/10/RAF-Serious-Injury-Classification-768x429.jpg 768w, https://www.roadcover.co.za/wp-content/uploads/2026/10/RAF-Serious-Injury-Classification.jpg 1376w" sizes="(max-width: 800px) 100vw, 800px" title="RAF Serious Injury Classification 6">															</div>
					</div>
				</div>
		<div class="elementor-element elementor-element-746c97d9 e-flex e-con-boxed e-con e-parent" data-id="746c97d9" data-element_type="container" data-e-type="container">
					<div class="e-con-inner">
				<div class="elementor-element elementor-element-346ac140 elementor-widget elementor-widget-text-editor" data-id="346ac140" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
									<p><span class="TextRun SCXW196212425 BCX0" lang="EN-ZA" xml:lang="EN-ZA" data-contrast="auto"><span class="NormalTextRun SCXW196212425 BCX0">A serious injury</span><span class="NormalTextRun SCXW196212425 BCX0"> after a </span><span class="NormalTextRun SCXW196212425 BCX0">motor vehicle </span><span class="NormalTextRun SCXW196212425 BCX0">accident can have lasting</span> <span class="NormalTextRun SCXW196212425 BCX0">physical, psychological and financial consequences. </span><span class="NormalTextRun SCXW196212425 BCX0">However, </span><span class="NormalTextRun SCXW196212425 BCX0">not every injury</span> <span class="NormalTextRun SCXW196212425 BCX0">qualifies as </span><span class="NormalTextRun SCXW196212425 BCX0">a serious injury</span><span class="NormalTextRun SCXW196212425 BCX0"> for purposes of</span> <span class="NormalTextRun SCXW196212425 BCX0">claiming general damages from the</span> <span class="NormalTextRun SCXW196212425 BCX0">Road Accident Fund (RAF).</span></span><span class="EOP Selected SCXW196212425 BCX0" data-ccp-props="{}"> </span></p>								</div>
		<div class="elementor-element elementor-element-ddfdc19 e-con-full e-flex e-con e-child" data-id="ddfdc19" data-element_type="container" data-e-type="container">
				<div class="elementor-element elementor-element-72ae72d7 elementor-widget elementor-widget-text-editor" data-id="72ae72d7" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
									<p><span class="TextRun SCXW252319824 BCX0" lang="EN-ZA" xml:lang="EN-ZA" data-contrast="auto"><span class="NormalTextRun SCXW252319824 BCX0">The distinction matters because general damages, which can</span> <span class="NormalTextRun SCXW252319824 BCX0">include compensation for pain and suffering, disfigurement and loss of</span> <span class="NormalTextRun SCXW252319824 BCX0">amenities of life, are limited to serious injuries under the</span> </span><a class="Hyperlink SCXW252319824 BCX0" title="Road Accident Fund Act" href="https://www.gov.za/documents/road-accident-fund-act-0" target="_blank" rel="noopener"><span class="TextRun Underlined SCXW252319824 BCX0" lang="EN-ZA" xml:lang="EN-ZA" data-contrast="none"><span class="NormalTextRun SCXW252319824 BCX0" data-ccp-charstyle="Hyperlink">Road</span> <span class="NormalTextRun SCXW252319824 BCX0" data-ccp-charstyle="Hyperlink">Accident Fund Act</span></span></a><span class="TextRun SCXW252319824 BCX0" lang="EN-ZA" xml:lang="EN-ZA" data-contrast="auto"><span class="NormalTextRun SCXW252319824 BCX0">.</span></span><span class="EOP Selected SCXW252319824 BCX0" data-ccp-props="{}"> </span></p>								</div>
				</div>
				<div class="elementor-element elementor-element-2439bf10 elementor-widget elementor-widget-heading" data-id="2439bf10" data-element_type="widget" data-e-type="widget" data-widget_type="heading.default">
					<h3 class="elementor-heading-title elementor-size-default">What should you do immediately after a motor vehicle accident? </h3>				</div>
				<div class="elementor-element elementor-element-1878bcf6 elementor-widget elementor-widget-text-editor" data-id="1878bcf6" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
									<p><span data-contrast="auto">Your immediate priorities after a motor vehicle accident should be to get to safety, report the accident, and seek medical attention. Make sure your injuries are properly recorded and keep your medical and hospital records, accident reports, witness details and photographs of the scene and injuries.</span><span data-ccp-props="{}"> </span></p><p><span data-contrast="auto">The RAF recommends obtaining this information after an accident, including medical and clinical records and photographs of injuries. Where general damages are claimed, a </span><a title="Serious Injury Assessment Report" href="https://www.raf.co.za/Claims/Leaflets1/RAF%20Leaflet_eng.pdf?" target="_blank" rel="noopener"><span data-contrast="none">Serious Injury Assessment Report</span></a><span data-contrast="auto"> is also required.</span><span data-ccp-props="{}"> </span></p><p><span data-contrast="auto">For RoadCover members, the company manages the qualifying RAF claim through the legal and administrative stages from start to finish. This allows the member to focus on their recovery while RoadCover handles the claim. If the claim is successfully settled, the member receives 100% of the RAF settlement, with no fees or expenses deducted.</span><span data-ccp-props="{}"> </span></p>								</div>
				<div class="elementor-element elementor-element-9ce3d1c elementor-widget elementor-widget-heading" data-id="9ce3d1c" data-element_type="widget" data-e-type="widget" data-widget_type="heading.default">
					<h3 class="elementor-heading-title elementor-size-default">How does RAF decide if an injury is serious? </h3>				</div>
				<div class="elementor-element elementor-element-af8b8c4 elementor-widget elementor-widget-text-editor" data-id="af8b8c4" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
									<p><span data-contrast="auto">The RAF uses the assessment method </span><a title="The RAF uses the assessment method prescribed in the regulations" href="https://www.gov.za/sites/default/files/gcis_document/201409/31249770complete.pdf?" target="_blank" rel="noopener"><span data-contrast="none">prescribed in the regulations</span></a><span data-contrast="auto"> to determine whether an injury is serious. An injury must first be considered against the prescribed list of non-serious injuries. If it is not on that list, the assessment can proceed using the </span><a title="American Medical Association’s Guides (AMA Guides) to the Evaluation of Permanent Impairment, as incorporated into the RAF Regulations" href="https://www.gov.za/sites/default/files/gcis_document/201409/31249770complete.pdf" target="_blank" rel="noopener"><span data-contrast="none">American Medical Association’s Guides (AMA Guides) to the Evaluation of Permanent Impairment, as incorporated into the RAF Regulations</span></a><span data-contrast="auto">.</span><span data-ccp-props="{}"> </span></p><p><span data-contrast="auto">An injury that results in </span><b><span data-contrast="auto">30% or more Whole Person Impairment</span></b><span data-contrast="auto"> under the AMA Guides meets the serious injury threshold. An injury below that level can still qualify under the narrative test.</span><span data-ccp-props="{}"> </span></p>								</div>
				<div class="elementor-element elementor-element-ba6e7fe elementor-widget elementor-widget-heading" data-id="ba6e7fe" data-element_type="widget" data-e-type="widget" data-widget_type="heading.default">
					<h3 class="elementor-heading-title elementor-size-default">What percentage disability qualifies for RAF general 
damages? </h3>				</div>
				<div class="elementor-element elementor-element-ecbf8b3 elementor-widget elementor-widget-text-editor" data-id="ecbf8b3" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
									<p><span data-contrast="auto">The threshold is </span><b><span data-contrast="auto">30% Whole Person Impairment</span></b><span data-contrast="auto">, rather than simply a 30% disability rating.</span><span data-ccp-props="{}"> </span></p><p><span data-contrast="auto">This distinction is important because the regulations specifically refer to Whole Person Impairment as assessed under the AMA Guides. An impairment below 30% does not automatically end the assessment because the injury may still meet the narrative test.</span><span data-ccp-props="{}"> </span></p><p><b><span data-contrast="auto">What is the RAF narrative test?</span></b><span data-ccp-props="{}"> </span></p><p><span data-contrast="auto">The narrative test provides another way for an injury to be classified as serious where it does not result in 30% Whole Person Impairment.</span><span data-ccp-props="{}"> </span></p><p><span data-contrast="auto">The injury must have resulted in one of the following:</span><span data-ccp-props="{}"> </span></p><ul><li aria-setsize="-1" data-leveltext="" data-font="Symbol" data-listid="2" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;&quot;,&quot;469777815&quot;:&quot;multilevel&quot;}" data-aria-posinset="1" data-aria-level="1"><span data-contrast="auto">serious long-term impairment or loss of a body function;</span><span data-ccp-props="{}"> </span></li></ul><ul><li aria-setsize="-1" data-leveltext="" data-font="Symbol" data-listid="2" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;&quot;,&quot;469777815&quot;:&quot;multilevel&quot;}" data-aria-posinset="2" data-aria-level="1"><span data-contrast="auto">permanent serious disfigurement;</span><span data-ccp-props="{}"> </span></li></ul><ul><li aria-setsize="-1" data-leveltext="" data-font="Symbol" data-listid="2" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;&quot;,&quot;469777815&quot;:&quot;multilevel&quot;}" data-aria-posinset="3" data-aria-level="1"><span data-contrast="auto">severe long-term mental or severe long-term behavioural disturbance or disorder; or</span><span data-ccp-props="{}"> </span></li></ul><ul><li aria-setsize="-1" data-leveltext="" data-font="Symbol" data-listid="2" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;&quot;,&quot;469777815&quot;:&quot;multilevel&quot;}" data-aria-posinset="4" data-aria-level="1"><span data-contrast="auto">loss of a foetus.</span><span data-ccp-props="{}"> </span></li></ul><p><span data-contrast="auto">The assessment therefore considers the lasting consequences of the injury, rather than relying only on a percentage.</span><span data-ccp-props="{}"> </span></p>								</div>
				<div class="elementor-element elementor-element-cc0ad39 elementor-widget elementor-widget-heading" data-id="cc0ad39" data-element_type="widget" data-e-type="widget" data-widget_type="heading.default">
					<h3 class="elementor-heading-title elementor-size-default">Who assesses serious injury for RAF claims? </h3>				</div>
				<div class="elementor-element elementor-element-d4e6179 elementor-widget elementor-widget-text-editor" data-id="d4e6179" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
									<p><span data-contrast="auto">A medical practitioner registered under the Health Professions Act must complete the </span><a href="https://www.raf.co.za/Claims/Documents/RAFclaimForm4%20-%2020052010.pdf?" target="_blank" rel="noopener"><b><span data-contrast="none">RAF 4 Serious Injury Assessment Report</span></b><span data-contrast="none">.</span></a><span data-contrast="auto"> The assessment must be conducted according to the method prescribed in the RAF regulations and the AMA Guides.</span><span data-ccp-props="{}"> </span></p><p><span data-contrast="auto">The RAF 4 requires details of the patient&#8217;s injury, examination and clinical findings. Where an AMA impairment rating is used, the medical practitioner must provide a clear report explaining how that rating was calculated.</span><span data-ccp-props="{}"> </span></p><p><span data-contrast="auto">A serious injury assessment is therefore based on medical evidence and the prescribed assessment criteria, not simply on how severe an injury feels to the person who suffered it.</span><span data-ccp-props="{}"> </span></p>								</div>
				<div class="elementor-element elementor-element-f9c43e8 elementor-widget elementor-widget-heading" data-id="f9c43e8" data-element_type="widget" data-e-type="widget" data-widget_type="heading.default">
					<h3 class="elementor-heading-title elementor-size-default">What happens if an injury is not classified as serious? </h3>				</div>
				<div class="elementor-element elementor-element-24eae6b elementor-widget elementor-widget-text-editor" data-id="24eae6b" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
									<p><span data-contrast="auto">If an injury does not meet the serious injury requirements, this does not necessarily mean that no RAF claim can be made. The serious injury classification relates specifically to general damages. A qualifying claim may still include other losses covered by the RAF, such as medical expenses or loss of earnings.</span><span data-ccp-props="{}"> </span></p><p><span data-contrast="auto">Understanding the classification process can help you understand why medical records and a properly completed RAF 4 are important after a motor vehicle accident. RoadCover members have their qualifying RAF claims managed through the process, including the legal and administrative work required to progress the claim. Successful members receive 100% of their RAF settlement, with no fees or expenses deducted.</span><span data-ccp-props="{}"> </span></p>								</div>
					</div>
				</div>
		<div class="elementor-element elementor-element-e042bb4 e-flex e-con-boxed e-con e-parent" data-id="e042bb4" data-element_type="container" data-e-type="container">
					<div class="e-con-inner">
				<div class="elementor-element elementor-element-201f782b elementor-widget elementor-widget-text-editor" data-id="201f782b" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
									<p><strong>Disclaimer:</strong> <em>The information provided in this article was correct at the time of publication and is intended for general guidance only. It is subject to change without notice as laws, regulations and membership terms evolve. RoadCover and the Road Accident Fund operate within dynamic legal frameworks and readers should verify current requirements before making decisions or entering into agreements.</em></p>								</div>
					</div>
				</div>
		<div class="elementor-element elementor-element-815c5c9 e-flex e-con-boxed e-con e-parent" data-id="815c5c9" data-element_type="container" data-e-type="container">
					<div class="e-con-inner">
				<div class="elementor-element elementor-element-294a9f08 elementor-widget elementor-widget-shortcode" data-id="294a9f08" data-element_type="widget" data-e-type="widget" data-widget_type="shortcode.default">
							<div class="elementor-shortcode">		<div data-elementor-type="container" data-elementor-id="2657" class="elementor elementor-2657" data-elementor-post-type="elementor_library">
				<div class="elementor-element elementor-element-1b2aafda e-con-full e-flex e-con e-parent" data-id="1b2aafda" data-element_type="container" data-e-type="container">
				<div class="elementor-element elementor-element-4e06f177 elementor-widget elementor-widget-html" data-id="4e06f177" data-element_type="widget" data-e-type="widget" data-widget_type="html.default">
					<link href="https://fonts.googleapis.com/css2?family=Raleway:wght@400;500;600;700;800&display=swap" rel="stylesheet">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.0/css/all.min.css">

<script src="https://www.google.com/recaptcha/api.js?render=6LdwjNosAAAAAK5qrEyD0FybwyViVZOqamPK1Fnr" async defer></script>

<style>
/* ===============================================================
   RoadCover — Pricing + Onboarding Form
   All selectors scoped to #rc-pricing to avoid host-page bleed.
   PLN codes live on data-plan-code attributes of .rc-btn elements.
   ================================================================ */

#rc-pricing *, #rc-pricing *::before, #rc-pricing *::after {
    box-sizing: border-box;
}
#rc-pricing {
    font-family: 'Raleway', sans-serif;
    width: 100%;
    color: #1f2937;

    /* Plan-card palette — scoped to the embed, never :root, so the
       host page's own custom properties are left untouched. */
    --rc-blue:      #2B4FD4;
    --rc-blue-dark: #1A3399;
    --rc-gold:      #F5C842;
    --rc-gold-dark: #D4A800;
    --rc-text:      #0D1B3E;
    --rc-muted:     #6B7280;
    --rc-border:    #E4E9F8;
    --rc-success:   #16A34A;
}
.rc-wrapper {
    display: flex;
    flex-direction: column;
    gap: 48px;
}

/* ── Header ─────────────────────────────────────────────────────── */
.rc-header { text-align: center; }
.rc-header h2 {
    font-size: 30px;
    font-weight: 800;
    margin: 0 0 8px;
    color: #111827;
}
.rc-header p {
    font-size: 15px;
    color: #6b7280;
    margin: 0;
}

/* ── Single Plan Card ───────────────────────────────────────────── */
/* One responsive card serves both desktop and mobile — there is no
   longer a separate table/card pair to keep in sync. */
.rc-plan-card {
    position: relative;
    background: #fff;
    border: 1px solid var(--rc-border);
    border-radius: 18px;
    overflow: hidden;
    box-shadow: 0 10px 30px rgba(13, 27, 62, 0.08);
}

.rc-plan-header {
    position: relative;
    overflow: hidden;
    background: linear-gradient(135deg, var(--rc-blue) 0%, var(--rc-blue-dark) 100%);
    padding: 32px 28px 30px;
    text-align: center;
}
.rc-plan-header::before {
    content: '';
    position: absolute;
    width: 220px;
    height: 220px;
    right: -90px;
    top: -70px;
    border-radius: 50%;
    background: rgba(255, 255, 255, 0.08);
}
.rc-plan-header::after {
    content: '';
    position: absolute;
    width: 140px;
    height: 140px;
    left: -50px;
    bottom: -50px;
    border-radius: 50%;
    background: rgba(245, 200, 66, 0.14);
}
.rc-plan-header > * { position: relative; z-index: 2; }

.rc-plan-name {
    font-size: 11px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.1em;
    color: rgba(255, 255, 255, 0.65);
    margin-bottom: 6px;
}
.rc-plan-price {
    font-size: 44px;
    font-weight: 900;
    color: var(--rc-gold);
    line-height: 1.1;
}
.rc-plan-price-unit {
    font-size: 14px;
    font-weight: 600;
    color: rgba(255, 255, 255, 0.6);
}
.rc-plan-subprice {
    margin-top: 6px;
    font-size: 12px;
    font-weight: 600;
    color: var(--rc-gold);
    min-height: 16px;
}

.rc-plan-rows { padding: 6px 28px; }
.rc-plan-row {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    padding: 14px 0;
    border-bottom: 1px solid var(--rc-border);
}
.rc-plan-row:last-child { border-bottom: none; }
.rc-plan-row-label {
    font-size: 13.5px;
    font-weight: 600;
    color: var(--rc-text);
}
.rc-plan-row-icon {
    width: 22px;
    height: 22px;
    flex-shrink: 0;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    background: #ECFDF3;
    color: var(--rc-success);
}
.rc-plan-row-icon svg { width: 13px; height: 13px; display: block; }

.rc-plan-cta-block { padding: 20px 28px 26px; }
.rc-plan-cta-hint {
    text-align: center;
    margin-top: 10px;
    font-size: 11px;
    color: var(--rc-muted);
}

/* ── Plan Select Button (JS hook: .rc-btn) ──────────────────────── */
.rc-btn {
    width: 100%;
    padding: 13px 18px;
    border: none;
    border-radius: 10px;
    background: var(--rc-gold);
    color: var(--rc-text);
    font-family: inherit;
    font-size: 14px;
    font-weight: 800;
    letter-spacing: 0.01em;
    cursor: pointer;
    transition: background 0.15s, transform 0.1s;
}
.rc-btn:hover   { background: var(--rc-gold-dark); }
.rc-btn:active  { transform: scale(0.99); }
.rc-btn.rc-selected { background: var(--rc-gold-dark); }

/* ── Form Section ───────────────────────────────────────────────── */
#rc-form-section { display: none; }
#rc-form-section.rc-visible {
    display: block;
    animation: rc-fadein 0.22s ease;
}
@keyframes rc-fadein {
    from { opacity: 0; transform: translateY(10px); }
    to   { opacity: 1; transform: translateY(0); }
}

.rc-form-inner {
    display: flex;
    flex-direction: column;
    gap: 22px;
    background: linear-gradient(135deg, #2A45AC, #1f358a);
    border-radius: 12px;
    padding: 40px;
}

.rc-selected-badge {
    display: inline-block;
    background: rgba(255, 255, 255, 0.15);
    color: #FFD84D;
    font-size: 13px;
    font-weight: 700;
    border-radius: 6px;
    padding: 7px 13px;
}

.rc-form-title {
    font-size: 20px;
    font-weight: 800;
    color: #fff;
    margin: 0;
}

/* Field grid — first two fields sit side-by-side */
.rc-field-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 14px;
}
.rc-field-full { grid-column: 1 / -1; }

.rc-field {
    display: flex;
    flex-direction: column;
    gap: 5px;
}
.rc-field-label {
    font-size: 11px;
    font-weight: 700;
    color: rgba(255, 255, 255, 0.7);
    text-transform: uppercase;
    letter-spacing: 0.05em;
}

/* Icon floats over the input; no separate column, no column border */
.rc-input-row {
    position: relative;
    border: 1px solid #6f7ec1;
    border-radius: 8px;
    background: #3d54ac;
    transition: border-color 0.15s, box-shadow 0.15s;
}
.rc-input-row:focus-within {
    border-color: #a0aee0;
    box-shadow: 0 0 0 3px rgba(111, 126, 193, 0.3);
}
.rc-input-row:has(.invalid) { border-color: #FF3B30; }
.rc-input-row:has(.invalid):focus-within {
    box-shadow: 0 0 0 3px rgba(129, 12, 12, 0.25);
}

.rc-input-icon {
    position: absolute;
    left: 14px;
    top: 50%;
    transform: translateY(-50%);
    color: rgba(255, 255, 255, 0.55);
    font-size: 14px;
    pointer-events: none;
}

.rc-input {
    display: block;
    width: 100%;
    padding: 11px 14px 11px 44px !important;
    border: 0;
    box-shadow: none;
    border-radius: 8px;
    background: transparent;
    font-family: inherit;
    font-size: 14px;
    color: #fff;
    -webkit-appearance: none;
    appearance: none;
    outline: none;
}
#rc-pricing .rc-input::placeholder { color: rgb(248, 248, 248); }
.rc-input.invalid { /* border shown via :has on .rc-input-row */ }

/* Native select chevron */
select.rc-input {
    padding-right: 36px;
    background-color: #3d54ac;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='7' viewBox='0 0 12 7'%3E%3Cpolyline points='1,1 6,6 11,1' fill='none' stroke='%23a0aee0' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
    background-repeat: no-repeat;
    background-position: right 12px center;
    cursor: pointer;
    color: #fff;
}

.rc-field-error {
    font-size: 12px;
    color: #FF3B30;
    margin: 0;
    line-height: 1.4;
}

/* T&C checkbox */
.rc-terms {
    display: flex;
    align-items: center;
    gap: 10px;
    font-size: 14px;
    color: rgba(255, 255, 255, 0.85);
    cursor: pointer;
    user-select: none;
}
.rc-terms input[type="checkbox"] {
    width: 17px;
    height: 17px;
    cursor: pointer;
    flex-shrink: 0;
    accent-color: #FFD84D;
}
.rc-terms.invalid { color: #FF3B30; }
.rc-terms.invalid input[type="checkbox"] {
    outline: 2px solid #FF3B30;
    outline-offset: 2px;
    border-radius: 2px;
}

.rc-submit:disabled,
.rc-submit:disabled:hover {
    background: #FFD84D; /* same as default */
    cursor: not-allowed;
}
/* Submit button */
.rc-submit {
    width: 100%;
    padding: 14px 20px;
    border: none;
    border-radius: 10px;
    background: #FFD84D;
    color: #1f358a;
    font-family: inherit;
    font-size: 15px;
    font-weight: 700;
    cursor: pointer;
    transition: background 0.15s, transform 0.1s;
    letter-spacing: 0.01em;
}
.rc-submit:hover:not([disabled]) { background: #f5cc35; }
.rc-submit:active:not([disabled]) { transform: scale(0.99); }
.rc-submit[disabled] { opacity: 0.5; cursor: not-allowed; }

.rc-form-error {
    font-size: 13px;
    color: #FF3B30;
    margin: 0;
    line-height: 1.5;
}

.rc-recaptcha-notice {
    font-size: 11px;
    color: rgba(255, 255, 255, 0.45);
    margin: 0;
    line-height: 1.5;
    text-align: center;
}
.rc-recaptcha-notice a {
    color: rgba(255, 255, 255, 0.55);
    text-decoration: underline;
}

/* ── Billing Toggle ─────────────────────────────────────────────── */
/* Sits on the dark gradient header, so it is styled for a dark ground. */
.rc-billing-toggle {
    display: inline-flex;
    background: rgba(255, 255, 255, 0.12);
    border: 1.5px solid rgba(255, 255, 255, 0.2);
    border-radius: 999px;
    padding: 3px;
    gap: 2px;
    margin-bottom: 20px;
}
.rc-toggle-opt {
    padding: 7px 20px;
    border: none;
    border-radius: 999px;
    background: transparent;
    color: rgba(255, 255, 255, 0.75);
    font-family: inherit;
    font-size: 12.5px;
    font-weight: 700;
    cursor: pointer;
    transition: background 0.2s ease, color 0.2s ease;
    white-space: nowrap;
    line-height: 1;
}
.rc-toggle-opt:hover:not(.rc-toggle-active) {
    background: rgba(255, 255, 255, 0.08);
}
.rc-toggle-opt.rc-toggle-active {
    background: var(--rc-gold);
    color: var(--rc-text);
}

.rc-save-badge {
    display: inline-block;
    margin-left: 6px;
    padding: 1px 6px;
    border-radius: 999px;
    font-size: 9.5px;
    font-weight: 800;
    color: rgba(255, 255, 255, 0.85);
    background: rgba(255, 255, 255, 0.16);
}
/* On the gold active pill, white-on-gold is unreadable — invert it. */
.rc-toggle-active .rc-save-badge {
    color: var(--rc-text);
    background: rgba(13, 27, 62, 0.12);
}

/* ── Responsive ─────────────────────────────────────────────────── */
@media (max-width: 700px) {
    #rc-pricing     { padding: 0px 0px; }
    .rc-wrapper     { gap: 32px; }
    .rc-plan-header { padding: 28px 20px 26px; }
    .rc-plan-price  { font-size: 38px; }
    .rc-plan-rows   { padding: 6px 20px; }
    .rc-plan-cta-block { padding: 18px 20px 22px; }
    .rc-field-grid  { grid-template-columns: 1fr; }
    .rc-field-full  { grid-column: 1; }
    .rc-form-inner  { padding: 24px 20px; }
    .rc-header h2   { font-size: 24px; }
}
</style>

<!-- ================================================================
     PRICING TABLE + ONBOARDING FORM
     ================================================================ -->
<div id="rc-pricing">
  <div class="rc-wrapper">

    <!-- Single plan card — one responsive card for desktop and mobile -->
    <div class="rc-plan-card" data-plan-key="RoadCover">

      <div class="rc-plan-header">
        <div class="rc-billing-toggle" role="group" aria-label="Billing period">
          <button type="button" class="rc-toggle-opt rc-toggle-active" data-billing="monthly">Monthly</button>
          <button type="button" class="rc-toggle-opt" data-billing="annual">Annual <span class="rc-save-badge">Save 6%</span></button>
        </div>

        <div class="rc-plan-name">RoadCover</div>
        <div class="rc-plan-price"><span class="rc-plan-price-val">R49</span><span class="rc-plan-price-unit">/mo</span></div>
        <div class="rc-plan-subprice" hidden></div>
      </div>

      <div class="rc-plan-rows">
        <div class="rc-plan-row">
          <span class="rc-plan-row-label">RAF Claim Support</span>
          <span class="rc-plan-row-icon" role="img" aria-label="Included">
            <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><polyline points="20 6 9 17 4 12"></polyline></svg>
          </span>
        </div>
        <div class="rc-plan-row">
          <span class="rc-plan-row-label">Legal Expertise</span>
          <span class="rc-plan-row-icon" role="img" aria-label="Included">
            <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><polyline points="20 6 9 17 4 12"></polyline></svg>
          </span>
        </div>
      </div>

      <div class="rc-plan-cta-block">
        <button class="rc-btn"
                data-plan="RoadCover"
                data-plan-code="RC49"
                data-price="49.00 /Month">Select RoadCover &#8594;</button>
        <div class="rc-plan-cta-hint">No fees. 100% of your payout.</div>
      </div>

    </div><!-- /.rc-plan-card -->

    <!-- Form: hidden until a plan is selected -->
    <div id="rc-form-section">
      <form id="roadcover-form" novalidate>

        <!-- product_code is set programmatically on plan button click -->
        <input type="hidden" name="product_code" id="cover-input">
        <input type="hidden" name="form_id"   value="9a3d492">
        <input type="hidden" name="form_name" value="Get RoadCover">

        <div class="rc-form-inner">

          <div id="selectedPlan" class="rc-selected-badge">Selected: &#8212;</div>
          <p class="rc-form-title">Enter your details</p>

          <div class="rc-field-grid">

            <!-- Row 1: name -->
            <div class="rc-field">
              <label class="rc-field-label" for="rc-first-name">First name *</label>
              <div class="rc-input-row">
                <i class="fa-solid fa-user rc-input-icon" aria-hidden="true"></i>
                <input class="rc-input" type="text" id="rc-first-name"
                       name="first_name" required maxlength="60" placeholder="First name">
              </div>
            </div>

            <div class="rc-field">
              <label class="rc-field-label" for="rc-last-name">Last name *</label>
              <div class="rc-input-row">
                <i class="fa-solid fa-user rc-input-icon" aria-hidden="true"></i>
                <input class="rc-input" type="text" id="rc-last-name"
                       name="last_name" required maxlength="60" placeholder="Last name">
              </div>
            </div>

            <!-- Row 2: identity -->
            <div class="rc-field">
              <label class="rc-field-label" for="rc-id">ID number *</label>
              <div class="rc-input-row">
                <i class="fa-solid fa-id-card rc-input-icon" aria-hidden="true"></i>
                <input class="rc-input" type="text" id="rc-id"
                       name="identificationnr" required pattern="[0-9]{13}"
                       inputmode="numeric" maxlength="13"
                       placeholder="13-digit SA ID number">
              </div>
            </div>

            <div class="rc-field">
              <label class="rc-field-label" for="rc-gender">Gender *</label>
              <div class="rc-input-row">
                <i class="fa-solid fa-venus-mars rc-input-icon" aria-hidden="true"></i>
                <select class="rc-input" id="rc-gender" name="gender" required>
                  <option value="">Select&hellip;</option>
                  <option value="1">Male</option>
                  <option value="2">Female</option>
                </select>
              </div>
            </div>

            <!-- Row 3: contact -->
            <div class="rc-field">
              <label class="rc-field-label" for="rc-email">Email *</label>
              <div class="rc-input-row">
                <i class="fa-solid fa-envelope rc-input-icon" aria-hidden="true"></i>
                <input class="rc-input" type="email" id="rc-email"
                       name="email" required maxlength="254"
                       placeholder="you@example.com">
              </div>
            </div>

            <div class="rc-field">
              <label class="rc-field-label" for="rc-mobile">Mobile *</label>
              <div class="rc-input-row">
                <i class="fa-solid fa-phone rc-input-icon" aria-hidden="true"></i>
                <input class="rc-input" type="tel" id="rc-mobile"
                       name="mobile" required inputmode="tel"
                       placeholder="0XXXXXXXXX or +27XXXXXXXXX">
              </div>
            </div>

            <!-- Row 4: optional -->
            <div class="rc-field rc-field-full">
              <label class="rc-field-label" for="rc-promo">Promo code</label>
              <div class="rc-input-row">
                <i class="fa-solid fa-tag rc-input-icon" aria-hidden="true"></i>
                <input class="rc-input" type="text" id="rc-promo"
                       name="promo_code" maxlength="32" placeholder="Optional">
              </div>
            </div>

          </div><!-- /.rc-field-grid -->

          <label class="rc-terms">
            <input type="checkbox" name="I accept the Terms and Conditions." required>
            <span>I accept the Terms and Conditions.</span>
          </label>

          <button type="submit" id="submit-btn" class="rc-submit">Continue</button>
          <p id="form-error" class="rc-form-error" hidden></p>

          <p class="rc-recaptcha-notice">This site is protected by reCAPTCHA and the Google <a href="https://policies.google.com/privacy" target="_blank" rel="noopener noreferrer">Privacy Policy</a> and <a href="https://policies.google.com/terms" target="_blank" rel="noopener noreferrer">Terms of Service</a> apply.</p>

        </div><!-- /.rc-form-inner -->
      </form>
    </div><!-- /#rc-form-section -->

  </div><!-- /.rc-wrapper -->
</div><!-- /#rc-pricing -->

<script>
(function () {
    var form           = document.getElementById('roadcover-form');
    var errEl          = document.getElementById('form-error');
    var submitBtn      = document.getElementById('submit-btn');
    var coverInput     = document.getElementById('cover-input');
    var formSection    = document.getElementById('rc-form-section');
    var selectedPlanEl = document.getElementById('selectedPlan');
    var pricing        = document.getElementById('rc-pricing');

    var currentPrice   = '';
    var isAnnual       = false;
    var currentPlanBtn = null;

    // ── Plan + billing data ───────────────────────────────────────────────────
    var planData = {
        'RoadCover': {
            monthly: { priceVal: 'R49', unit: '/mo', code: 'RC49',         priceStr: '49.00 /Month',  subprice: '' },
            annual:  { priceVal: 'R550', unit: '/yr', code: 'PRD-CB838AEF', priceStr: '550.00 /Year', subprice: '~R46/mo' }
        }
    };

    // ── Apply billing mode to all price displays and button codes ─────────────
    function applyBilling() {
        var mode = isAnnual ? 'annual' : 'monthly';

        // Plan card price display
        pricing.querySelectorAll('.rc-plan-card[data-plan-key]').forEach(function (card) {
            var d = planData[card.dataset.planKey][mode];
            card.querySelector('.rc-plan-price-val').textContent  = d.priceVal;
            card.querySelector('.rc-plan-price-unit').textContent = d.unit;
            var sub = card.querySelector('.rc-plan-subprice');
            sub.textContent = d.subprice;
            sub.hidden      = !d.subprice;
        });

        // Update data-plan-code on all buttons so selection highlighting still works
        pricing.querySelectorAll('.rc-btn').forEach(function (btn) {
            var key = btn.dataset.plan;
            if (!planData[key]) return;
            btn.dataset.planCode = planData[key][mode].code;
            btn.dataset.price    = planData[key][mode].priceStr;
        });

        // If a plan was already selected, refresh the hidden input + badge + button label
        if (currentPlanBtn) {
            var key     = currentPlanBtn.dataset.plan;
            var d       = planData[key][mode];
            var billing = isAnnual ? 'Annual' : 'Monthly';
            coverInput.value           = d.code;
            currentPrice               = d.priceStr;
            selectedPlanEl.textContent = 'Selected: ' + key + ' (' + billing + ')';
            updateButton();
        }
    }

    // ── Helpers (mirrored in n8n Code node — keep in sync) ───────────────────

    function clean(v) {
        if (v === null || v === undefined) return '';
        var s = String(v);
        s = s.replace(/[\x00-\x08\x0B\x0C\x0E-\x1F\x7F]/g, '');
        s = s.replace(/<script\b[^>]*>[\s\S]*?<\/script\s*>/gi, '');
        s = s.replace(/<\/?[a-zA-Z][^>]*>/g, '');
        s = s.replace(/javascript\s*:/gi, '');
        s = s.replace(/\s+/g, ' ').trim();
        return s;
    }

    function luhnValid(idStr) {
        var sum = 0;
        for (var i = 0; i < 13; i++) {
            var n = parseInt(idStr.charAt(i), 10);
            if (i % 2 === 1) { n *= 2; if (n > 9) n -= 9; }
            sum += n;
        }
        return sum % 10 === 0;
    }

    // Returns { ok: true } or { ok: false, field, message }
    function validate(data) {
        var required = {
            product_code:       'Please select a cover plan.',
            first_name:         'First name is required.',
            last_name:          'Last name is required.',
            email:              'Email is required.',
            mobile:             'Mobile number is required.',
            identificationnr:   'ID number is required.',
            gender:             'Please select your gender.'
        };
        for (var k in required) {
            if (!data[k]) return { ok: false, field: k, message: required[k] };
        }

        if (data.first_name.length > 60)
            return { ok: false, field: 'first_name', message: 'First name is too long (max 60).' };
        if (data.last_name.length > 60)
            return { ok: false, field: 'last_name', message: 'Last name is too long (max 60).' };

        var emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
        if (!emailRegex.test(data.email))
            return { ok: false, field: 'email', message: 'Please enter a valid email address.' };
        if (data.email.length > 254)
            return { ok: false, field: 'email', message: 'Email is too long.' };

        var mobileRegex = /^(\+27|0)[0-9]{9}$/;
        if (!mobileRegex.test(data.mobile))
            return { ok: false, field: 'mobile', message: 'Mobile must be 10 digits starting with 0, or +27 followed by 9 digits.' };

        var genderNum = Number(data.gender);
        if (genderNum !== 1 && genderNum !== 2)
            return { ok: false, field: 'gender', message: 'Please select your gender.' };

        if (!/^[0-9]{13}$/.test(data.identificationnr))
            return { ok: false, field: 'identificationnr', message: 'ID number must be exactly 13 digits.' };

        var yy        = parseInt(data.identificationnr.substring(0, 2), 10);
        var mm        = parseInt(data.identificationnr.substring(2, 4), 10);
        var dd        = parseInt(data.identificationnr.substring(4, 6), 10);
        var now       = new Date();
        var currentYY = now.getFullYear() % 100;
        var fullYear  = (yy > currentYY) ? (1900 + yy) : (2000 + yy);
        var dob       = new Date(fullYear, mm - 1, dd);
        var dobValid  =
            dob.getFullYear() === fullYear &&
            dob.getMonth()    === (mm - 1) &&
            dob.getDate()     === dd       &&
            dob <= now;
        if (!dobValid)
            return { ok: false, field: 'identificationnr', message: 'The first 6 digits of your ID number are not a valid date of birth.' };

        var genderDigits = parseInt(data.identificationnr.substring(6, 10), 10);
        var idGender     = genderDigits >= 5000 ? 1 : 2;
        if (idGender !== genderNum) {
            var expected = idGender === 1 ? 'Male' : 'Female';
            return { ok: false, field: 'identificationnr',
                     message: 'The selected gender does not match your ID number (ID indicates ' + expected + ').' };
        }

        if (!luhnValid(data.identificationnr))
            return { ok: false, field: 'identificationnr', message: 'ID number checksum is invalid. Please check the number.' };

        return { ok: true };
    }

    // ── UI helpers ────────────────────────────────────────────────────────────

    function clearFieldErrors() {
        form.querySelectorAll('.invalid').forEach(function (el) { el.classList.remove('invalid'); });
        form.querySelectorAll('.rc-field-error').forEach(function (el) { el.remove(); });
    }

    function showFieldError(fieldName, message) {
        // product_code is a hidden input — surface as a form-level error
        if (fieldName === 'product_code') {
            showFormError(message);
            return;
        }
        var input = form.querySelector('[name="' + fieldName + '"]');
        if (!input) return;
        input.classList.add('invalid');
        var field = input.closest('.rc-field') || input.parentElement;
        var span  = field.querySelector('.rc-field-error');
        if (!span) {
            span = document.createElement('span');
            span.className = 'rc-field-error';
            field.appendChild(span);
        }
        span.textContent = message;
        input.focus();
    }

    function showFormError(message) {
        errEl.textContent = message;
        errEl.hidden = false;
    }

    function hideFormError() {
        errEl.hidden = true;
        errEl.textContent = '';
    }

    function updateButton() {
        submitBtn.textContent = currentPrice ? ('Continue • R' + currentPrice) : 'Continue';
        submitBtn.disabled    = false;
    }

    // ── Collect & sanitise ────────────────────────────────────────────────────

    function collectData() {
        var fd = new FormData(form);
        return {
            product_code:       clean(fd.get('product_code')),
            first_name:         clean(fd.get('first_name')),
            last_name:          clean(fd.get('last_name')),
            email:              clean(fd.get('email')).toLowerCase(),
            mobile:             clean(fd.get('mobile')),
            identificationnr:   clean(fd.get('identificationnr')),
            gender:             clean(fd.get('gender')),
            promo_code:         clean(fd.get('promo_code'))
        };
    }

    // ── Billing toggle ────────────────────────────────────────────────────────

    pricing.querySelectorAll('.rc-toggle-opt').forEach(function (btn) {
        btn.addEventListener('click', function () {
            if (btn.dataset.billing === (isAnnual ? 'annual' : 'monthly')) return;
            isAnnual = !isAnnual;
            pricing.querySelectorAll('.rc-toggle-opt').forEach(function (b) {
                b.classList.toggle('rc-toggle-active', b.dataset.billing === (isAnnual ? 'annual' : 'monthly'));
            });
            applyBilling();
        });
    });

    // ── Plan selection ────────────────────────────────────────────────────────

    pricing.querySelectorAll('.rc-btn').forEach(function (planBtn) {
        planBtn.addEventListener('click', function () {
            var code    = planBtn.dataset.planCode;
            var plan    = planBtn.dataset.plan;
            var price   = planBtn.dataset.price || '';
            var billing = isAnnual ? 'Annual' : 'Monthly';

            currentPlanBtn = planBtn;

            // Highlight every button sharing the same plan code (desktop + mobile pair)
            pricing.querySelectorAll('.rc-btn').forEach(function (b) {
                b.classList.toggle('rc-selected', b.dataset.planCode === code);
            });

            coverInput.value           = code;
            currentPrice               = price;
            selectedPlanEl.textContent = 'Selected: ' + plan + ' (' + billing + ')';
            updateButton();

            formSection.classList.add('rc-visible');
            formSection.scrollIntoView({ behavior: 'smooth', block: 'nearest' });

            clearFieldErrors();
            hideFormError();
        });
    });

    // ── Initialise billing display ────────────────────────────────────────────
    applyBilling();

    // ── Clear errors on edit ──────────────────────────────────────────────────

    form.addEventListener('input', function (e) {
        if (e.target.classList.contains('invalid')) {
            e.target.classList.remove('invalid');
            var f = e.target.closest('.rc-field');
            if (f) { var s = f.querySelector('.rc-field-error'); if (s) s.remove(); }
        }
        hideFormError();
    });

    form.addEventListener('change', function (e) {
        if (e.target.classList.contains('invalid')) {
            e.target.classList.remove('invalid');
            var f = e.target.closest('.rc-field');
            if (f) { var s = f.querySelector('.rc-field-error'); if (s) s.remove(); }
        }
        if (e.target.type === 'checkbox' && e.target.checked) {
            var label = e.target.closest('label.rc-terms');
            if (label) label.classList.remove('invalid');
            hideFormError();
        }
    });

    // ── Form submit ───────────────────────────────────────────────────────────

    form.addEventListener('submit', async function (e) {
        e.preventDefault();
        hideFormError();
        clearFieldErrors();

        var data   = collectData();
        var result = validate(data);
        if (!result.ok) {
            showFieldError(result.field, result.message);
            return;
        }

        var termsBox = form.querySelector('input[type="checkbox"][required]');
        if (termsBox && !termsBox.checked) {
            var termsLabel = termsBox.closest('label.rc-terms');
            if (termsLabel) termsLabel.classList.add('invalid');
            termsBox.focus();
            showFormError('Please accept the Terms and Conditions to continue.');
            return;
        }

        submitBtn.disabled    = true;
        submitBtn.textContent = 'Processing…';

        // ── reCAPTCHA v3 — must complete before the network request ──────────
        var recaptchaToken = '';
        try {
            recaptchaToken = await new Promise(function (resolve, reject) {
                if (typeof grecaptcha === 'undefined') { reject(new Error('not loaded')); return; }
                grecaptcha.ready(function () {
                    grecaptcha.execute('6LdwjNosAAAAAK5qrEyD0FybwyViVZOqamPK1Fnr', { action: 'submit' })
                        .then(resolve).catch(reject);
                });
            });
        } catch (_) {
            showFormError('Security check could not complete. Please disable any ad blockers and try again.');
            updateButton();
            return;
        }

        try {
            // Send sanitised data so the backend receives cleaned values
            var params = new URLSearchParams();
            for (var k in data) params.append(k, data[k]);
            params.append('form_id',   form.querySelector('[name="form_id"]').value   || '');
            params.append('form_name', form.querySelector('[name="form_name"]').value || '');
            params.append('I accept the Terms and Conditions.', 'on');
            params.append('recaptcha_token', recaptchaToken);

            var res     = await fetch('https://n8n.roadcover.co.za/webhook/form', {
                method:  'POST',
                headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
                body:    params.toString()
            });
            var json    = await res.json();
            var payload = Array.isArray(json) ? json[0] : json;
            var paymentUrl = (payload && payload.data && payload.data.payment_url)
                           || (payload && payload.payment_url);

            if (res.ok && payload && payload.success && paymentUrl) {
                window.location.href = paymentUrl;
            } else if (payload && (payload.error_code === 'DUPLICATE_MEMBER' || payload.error_code === 'DUPLICATE_ACTIVE_MEMBER')) {
                var supportEmail = (payload && payload.support_email) || 'info@roadcover.co.za';
                var refNumber = payload && payload.reference_number;
                showFieldError(
                    (payload && payload.field) || 'identificationnr',
                    'This ID number is already registered on the membership system.'
                );
                var bannerMsg = 'This ID number is already registered as an active member. Please contact support for assistance ' + supportEmail + '.';
                if (refNumber) {
                    bannerMsg += ' Your reference number is ' + refNumber + '.';
                }
                showFormError(bannerMsg);
                updateButton();
            } else {
                var message = (payload && payload.message) || 'Something went wrong. Please try again.';
                if (payload && payload.field) {
                    showFieldError(payload.field, message);
                } else {
                    showFormError(message);
                }
                updateButton();
            }
        } catch (_) {
            showFormError('Could not reach the service. Please try again.');
            updateButton();
        }
    });

})();
</script>
				</div>
				</div>
				</div>
		</div>
						</div>
					</div>
				</div>
				</div>
		]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>What to Do After a Motor Vehicle Accident</title>
		<link>https://www.roadcover.co.za/what-to-do-after-a-motor-vehicle-accident/</link>
		
		<dc:creator><![CDATA[Nokuthula Ngcobo]]></dc:creator>
		<pubDate>Mon, 05 Oct 2026 08:09:03 +0000</pubDate>
				<category><![CDATA[article]]></category>
		<guid isPermaLink="false">https://www.roadcover.co.za/?p=3230</guid>

					<description><![CDATA[Knowing what to do after a motor vehicle accident can protect your safety and support a future RAF claim. Learn the key steps to take, what evidence to collect, when to report the accident and which documents to keep.]]></description>
			<style id="elementor-post-3230">.elementor-3230 .elementor-element.elementor-element-16af3ce4{--display:flex;--padding-top:220px;--padding-bottom:0px;--padding-left:0112px;--padding-right:0112px;}.elementor-3230 .elementor-element.elementor-element-36c11128{--display:flex;--flex-direction:row;--container-widget-width:initial;--container-widget-height:100%;--container-widget-flex-grow:1;--container-widget-align-self:stretch;--flex-wrap-mobile:wrap;--padding-top:0px;--padding-bottom:0px;--padding-left:0px;--padding-right:0px;}.elementor-3230 .elementor-element.elementor-element-508e3461{--display:flex;--flex-direction:row;--container-widget-width:calc( ( 1 - var( --container-widget-flex-grow ) ) * 100% );--container-widget-height:100%;--container-widget-flex-grow:1;--container-widget-align-self:stretch;--flex-wrap-mobile:wrap;--align-items:center;--padding-top:0px;--padding-bottom:0px;--padding-left:0px;--padding-right:0px;}.elementor-widget-text-editor{font-family:var( --e-global-typography-text-font-family ), Sans-serif;font-weight:var( --e-global-typography-text-font-weight );color:var( --e-global-color-text );}.elementor-widget-text-editor.elementor-drop-cap-view-stacked .elementor-drop-cap{background-color:var( --e-global-color-primary );}.elementor-widget-text-editor.elementor-drop-cap-view-framed .elementor-drop-cap, .elementor-widget-text-editor.elementor-drop-cap-view-default .elementor-drop-cap{color:var( --e-global-color-primary );border-color:var( --e-global-color-primary );}.elementor-3230 .elementor-element.elementor-element-49a68ad{font-family:"Raleway", Sans-serif;font-size:14px;font-weight:600;color:#556DDD;}.elementor-widget-button .elementor-button{background-color:var( --e-global-color-accent );font-family:var( --e-global-typography-accent-font-family ), Sans-serif;font-weight:var( --e-global-typography-accent-font-weight );}.elementor-3230 .elementor-element.elementor-element-5613d6a7 .elementor-button{background-color:#556DDD1A;font-family:"Raleway", Sans-serif;font-size:12px;font-weight:700;text-transform:uppercase;fill:#2A45AC;color:#2A45AC;border-radius:999px 999px 999px 999px;}.elementor-3230 .elementor-element.elementor-element-320fd124{--display:flex;--padding-top:0px;--padding-bottom:0px;--padding-left:0px;--padding-right:0px;}.elementor-widget-theme-post-title .elementor-heading-title{font-family:var( --e-global-typography-primary-font-family ), Sans-serif;font-weight:var( --e-global-typography-primary-font-weight );color:var( --e-global-color-primary );}.elementor-3230 .elementor-element.elementor-element-192ad8fb .elementor-heading-title{font-family:"Raleway", Sans-serif;font-size:3.5vw;font-weight:800;}.elementor-3230 .elementor-element.elementor-element-49f4b6e1{--display:flex;--flex-direction:row;--container-widget-width:calc( ( 1 - var( --container-widget-flex-grow ) ) * 100% );--container-widget-height:100%;--container-widget-flex-grow:1;--container-widget-align-self:stretch;--flex-wrap-mobile:wrap;--align-items:center;--padding-top:0px;--padding-bottom:0px;--padding-left:0px;--padding-right:0px;}.elementor-widget-divider{--divider-color:var( --e-global-color-secondary );}.elementor-widget-divider .elementor-divider__text{color:var( --e-global-color-secondary );font-family:var( --e-global-typography-secondary-font-family ), Sans-serif;font-weight:var( --e-global-typography-secondary-font-weight );}.elementor-widget-divider.elementor-view-stacked .elementor-icon{background-color:var( --e-global-color-secondary );}.elementor-widget-divider.elementor-view-framed .elementor-icon, .elementor-widget-divider.elementor-view-default .elementor-icon{color:var( --e-global-color-secondary );border-color:var( --e-global-color-secondary );}.elementor-widget-divider.elementor-view-framed .elementor-icon, .elementor-widget-divider.elementor-view-default .elementor-icon svg{fill:var( --e-global-color-secondary );}.elementor-3230 .elementor-element.elementor-element-7389029d{--divider-border-style:solid;--divider-color:#556DDD1A;--divider-border-width:2px;width:var( --container-widget-width, 28px );max-width:28px;--container-widget-width:28px;--container-widget-flex-grow:0;}.elementor-3230 .elementor-element.elementor-element-7389029d .elementor-divider-separator{width:28px;}.elementor-3230 .elementor-element.elementor-element-7389029d .elementor-divider{padding-block-start:15px;padding-block-end:15px;}.elementor-3230 .elementor-element.elementor-element-791a1b3c{font-family:"Raleway", Sans-serif;font-size:14px;font-weight:600;color:#2A45AC;}.elementor-3230 .elementor-element.elementor-element-420c9e18{--display:flex;--padding-top:50px;--padding-bottom:0px;--padding-left:0px;--padding-right:0px;}.elementor-widget-theme-post-featured-image .widget-image-caption{color:var( --e-global-color-text );font-family:var( --e-global-typography-text-font-family ), Sans-serif;font-weight:var( --e-global-typography-text-font-weight );}.elementor-3230 .elementor-element.elementor-element-6e6c4c24 img{border-radius:30px 30px 30px 30px;}.elementor-3230 .elementor-element.elementor-element-6d4b6863{--display:flex;--gap:40px 40px;--row-gap:40px;--column-gap:40px;--padding-top:50px;--padding-bottom:080px;--padding-left:0px;--padding-right:0px;}.elementor-3230 .elementor-element.elementor-element-51d21fc2{font-family:"Raleway", Sans-serif;font-size:18px;font-weight:400;color:#2B2B2B;}.elementor-3230 .elementor-element.elementor-element-3c024370{--display:flex;border-style:solid;--border-style:solid;border-width:0px 0px 0px 4px;--border-top-width:0px;--border-right-width:0px;--border-bottom-width:0px;--border-left-width:4px;border-color:#556DDD;--border-color:#556DDD;--border-radius:0px 0px 0px 0px;--padding-top:0px;--padding-bottom:0px;--padding-left:20px;--padding-right:0px;}.elementor-3230 .elementor-element.elementor-element-65f87163{font-family:"Raleway", Sans-serif;font-size:20px;font-weight:600;color:#2A45AC;}.elementor-widget-heading .elementor-heading-title{font-family:var( --e-global-typography-primary-font-family ), Sans-serif;font-weight:var( --e-global-typography-primary-font-weight );color:var( --e-global-color-primary );}.elementor-3230 .elementor-element.elementor-element-42c562aa{padding:20px 0px 0px 0px;}.elementor-3230 .elementor-element.elementor-element-42c562aa .elementor-heading-title{font-family:"Raleway", Sans-serif;font-size:24px;font-weight:700;color:#2A45AC;}.elementor-3230 .elementor-element.elementor-element-6eaa89d5{font-family:"Raleway", Sans-serif;font-size:18px;font-weight:400;color:#2B2B2B;}.elementor-3230 .elementor-element.elementor-element-c551b46{padding:20px 0px 0px 0px;}.elementor-3230 .elementor-element.elementor-element-c551b46 .elementor-heading-title{font-family:"Raleway", Sans-serif;font-size:24px;font-weight:700;color:#2A45AC;}.elementor-3230 .elementor-element.elementor-element-6ce4a7d{font-family:"Raleway", Sans-serif;font-size:18px;font-weight:400;color:#2B2B2B;}.elementor-3230 .elementor-element.elementor-element-3ff8212{padding:20px 0px 0px 0px;}.elementor-3230 .elementor-element.elementor-element-3ff8212 .elementor-heading-title{font-family:"Raleway", Sans-serif;font-size:24px;font-weight:700;color:#2A45AC;}.elementor-3230 .elementor-element.elementor-element-5bff96b{font-family:"Raleway", Sans-serif;font-size:18px;font-weight:400;color:#2B2B2B;}.elementor-3230 .elementor-element.elementor-element-75bc147{padding:20px 0px 0px 0px;}.elementor-3230 .elementor-element.elementor-element-75bc147 .elementor-heading-title{font-family:"Raleway", Sans-serif;font-size:24px;font-weight:700;color:#2A45AC;}.elementor-3230 .elementor-element.elementor-element-8a4c889{font-family:"Raleway", Sans-serif;font-size:18px;font-weight:400;color:#2B2B2B;}.elementor-3230 .elementor-element.elementor-element-0a91889{padding:20px 0px 0px 0px;}.elementor-3230 .elementor-element.elementor-element-0a91889 .elementor-heading-title{font-family:"Raleway", Sans-serif;font-size:24px;font-weight:700;color:#2A45AC;}.elementor-3230 .elementor-element.elementor-element-8546bac{font-family:"Raleway", Sans-serif;font-size:18px;font-weight:400;color:#2B2B2B;}.elementor-3230 .elementor-element.elementor-element-3a9e2c7{padding:20px 0px 0px 0px;}.elementor-3230 .elementor-element.elementor-element-3a9e2c7 .elementor-heading-title{font-family:"Raleway", Sans-serif;font-size:24px;font-weight:700;color:#2A45AC;}.elementor-3230 .elementor-element.elementor-element-6898188{font-family:"Raleway", Sans-serif;font-size:18px;font-weight:400;color:#2B2B2B;}.elementor-3230 .elementor-element.elementor-element-5feab859{--display:flex;--flex-direction:row;--container-widget-width:calc( ( 1 - var( --container-widget-flex-grow ) ) * 100% );--container-widget-height:100%;--container-widget-flex-grow:1;--container-widget-align-self:stretch;--flex-wrap-mobile:wrap;--justify-content:center;--align-items:center;--gap:40px 40px;--row-gap:40px;--column-gap:40px;--padding-top:10px;--padding-bottom:10px;--padding-left:0px;--padding-right:0px;}.elementor-3230 .elementor-element.elementor-element-5feab859.e-con{--order:99999 /* order end hack */;--flex-shrink:1;}.elementor-3230 .elementor-element.elementor-element-f22aef4 .elementor-button{background-color:var( --e-global-color-primary );font-family:"Roboto", Sans-serif;font-size:20px;font-weight:500;}.elementor-3230 .elementor-element.elementor-element-f22aef4{width:var( --container-widget-width, 79% );max-width:79%;--container-widget-width:79%;--container-widget-flex-grow:0;}.elementor-3230 .elementor-element.elementor-element-f22aef4.elementor-element{--flex-grow:0;--flex-shrink:0;}.elementor-3230 .elementor-element.elementor-element-8e9572a{--display:flex;--gap:40px 40px;--row-gap:40px;--column-gap:40px;--padding-top:50px;--padding-bottom:080px;--padding-left:0px;--padding-right:0px;}.elementor-3230 .elementor-element.elementor-element-6e77e00{font-family:"Raleway", Sans-serif;font-size:18px;font-weight:400;color:#2B2B2B;}.elementor-3230 .elementor-element.elementor-element-15aeaf97{--display:flex;--padding-top:0px;--padding-bottom:0px;--padding-left:0px;--padding-right:0px;}@media(max-width:1023px){.elementor-3230 .elementor-element.elementor-element-16af3ce4{--padding-top:100px;--padding-bottom:0px;--padding-left:030px;--padding-right:30px;}.elementor-3230 .elementor-element.elementor-element-192ad8fb .elementor-heading-title{font-size:32px;}.elementor-3230 .elementor-element.elementor-element-49f4b6e1{--gap:10px 10px;--row-gap:10px;--column-gap:10px;}.elementor-3230 .elementor-element.elementor-element-420c9e18{--padding-top:0px;--padding-bottom:0px;--padding-left:10px;--padding-right:010px;}.elementor-3230 .elementor-element.elementor-element-6e6c4c24{padding:30px 0px 0px 0px;}.elementor-3230 .elementor-element.elementor-element-6d4b6863{--gap:20px 20px;--row-gap:20px;--column-gap:20px;--padding-top:50px;--padding-bottom:80px;--padding-left:020px;--padding-right:20px;}.elementor-3230 .elementor-element.elementor-element-51d21fc2{font-size:16px;}.elementor-3230 .elementor-element.elementor-element-65f87163{font-size:17px;}.elementor-3230 .elementor-element.elementor-element-42c562aa .elementor-heading-title{font-size:20px;}.elementor-3230 .elementor-element.elementor-element-c551b46 .elementor-heading-title{font-size:20px;}.elementor-3230 .elementor-element.elementor-element-3ff8212 .elementor-heading-title{font-size:20px;}.elementor-3230 .elementor-element.elementor-element-75bc147 .elementor-heading-title{font-size:20px;}.elementor-3230 .elementor-element.elementor-element-0a91889 .elementor-heading-title{font-size:20px;}.elementor-3230 .elementor-element.elementor-element-3a9e2c7 .elementor-heading-title{font-size:20px;}.elementor-3230 .elementor-element.elementor-element-5feab859{--gap:20px 20px;--row-gap:20px;--column-gap:20px;--padding-top:50px;--padding-bottom:80px;--padding-left:020px;--padding-right:20px;}.elementor-3230 .elementor-element.elementor-element-8e9572a{--gap:20px 20px;--row-gap:20px;--column-gap:20px;--padding-top:50px;--padding-bottom:80px;--padding-left:020px;--padding-right:20px;}.elementor-3230 .elementor-element.elementor-element-6e77e00{font-size:16px;}}@media(min-width:1024px){.elementor-3230 .elementor-element.elementor-element-16af3ce4{--content-width:900px;}.elementor-3230 .elementor-element.elementor-element-420c9e18{--content-width:900px;}.elementor-3230 .elementor-element.elementor-element-6d4b6863{--content-width:760px;}.elementor-3230 .elementor-element.elementor-element-5feab859{--content-width:760px;}.elementor-3230 .elementor-element.elementor-element-8e9572a{--content-width:760px;}}/* Start custom CSS for theme-post-featured-image, class: .elementor-element-6e6c4c24 */@media (max-width: 768px) {
  .elementor-3230 .elementor-element.elementor-element-6e6c4c24 img {
    height: 200px !important;

  }
}

.elementor-3230 .elementor-element.elementor-element-6e6c4c24 img {
  width: 100%;
  height: 480px;
  object-fit: cover;
  object-position: center; /* crop from center — change to 'top' if heads get cut off */
  display: block;
}/* End custom CSS */</style>							<content:encoded><![CDATA[		<div data-elementor-type="wp-post" data-elementor-id="3230" class="elementor elementor-3230" data-elementor-post-type="post">
				<div class="elementor-element elementor-element-16af3ce4 e-flex e-con-boxed e-con e-parent" data-id="16af3ce4" data-element_type="container" data-e-type="container">
					<div class="e-con-inner">
		<div class="elementor-element elementor-element-36c11128 e-con-full e-flex e-con e-child" data-id="36c11128" data-element_type="container" data-e-type="container">
		<div class="elementor-element elementor-element-508e3461 e-con-full e-flex e-con e-child" data-id="508e3461" data-element_type="container" data-e-type="container">
				<div class="elementor-element elementor-element-49a68ad elementor-widget elementor-widget-text-editor" data-id="49a68ad" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
									<a style="color: #374dc5; text-decoration: none;" href="https://www.roadcover.co.za/articles/">
← Back to Articles
</a>								</div>
				<div class="elementor-element elementor-element-5613d6a7 elementor-widget elementor-widget-button" data-id="5613d6a7" data-element_type="widget" data-e-type="widget" data-widget_type="button.default">
										<a class="elementor-button elementor-button-link elementor-size-sm" href="https://www.roadcover.co.za/articles/">
						<span class="elementor-button-content-wrapper">
									<span class="elementor-button-text">Road Safety &amp; Public Awareness</span>
					</span>
					</a>
								</div>
				</div>
				</div>
		<div class="elementor-element elementor-element-320fd124 e-con-full e-flex e-con e-child" data-id="320fd124" data-element_type="container" data-e-type="container">
				<div class="elementor-element elementor-element-192ad8fb elementor-widget elementor-widget-theme-post-title elementor-page-title elementor-widget-heading" data-id="192ad8fb" data-element_type="widget" data-e-type="widget" data-widget_type="theme-post-title.default">
					<h1 class="elementor-heading-title elementor-size-default">What to Do After a Motor Vehicle Accident</h1>				</div>
				</div>
		<div class="elementor-element elementor-element-49f4b6e1 e-con-full e-flex e-con e-child" data-id="49f4b6e1" data-element_type="container" data-e-type="container">
				<div class="elementor-element elementor-element-7389029d elementor-widget__width-initial elementor-widget-divider--view-line elementor-widget elementor-widget-divider" data-id="7389029d" data-element_type="widget" data-e-type="widget" data-widget_type="divider.default">
							<div class="elementor-divider">
			<span class="elementor-divider-separator">
						</span>
		</div>
						</div>
				<div class="elementor-element elementor-element-791a1b3c elementor-widget elementor-widget-text-editor" data-id="791a1b3c" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
									<p>Nokuthula Ngcobo</p>								</div>
				</div>
					</div>
				</div>
		<div class="elementor-element elementor-element-420c9e18 e-flex e-con-boxed e-con e-parent" data-id="420c9e18" data-element_type="container" data-e-type="container">
					<div class="e-con-inner">
				<div class="elementor-element elementor-element-6e6c4c24 elementor-widget elementor-widget-theme-post-featured-image elementor-widget-image" data-id="6e6c4c24" data-element_type="widget" data-e-type="widget" data-widget_type="theme-post-featured-image.default">
															<img loading="lazy" decoding="async" width="800" height="436" src="https://www.roadcover.co.za/wp-content/uploads/2026/10/What-to-Do-After-a-Motor-Vehicle-Accident-1024x558.jpg" class="attachment-large size-large wp-image-3275" alt="What to Do After a Motor Vehicle Accident" srcset="https://www.roadcover.co.za/wp-content/uploads/2026/10/What-to-Do-After-a-Motor-Vehicle-Accident-1024x558.jpg 1024w, https://www.roadcover.co.za/wp-content/uploads/2026/10/What-to-Do-After-a-Motor-Vehicle-Accident-300x164.jpg 300w, https://www.roadcover.co.za/wp-content/uploads/2026/10/What-to-Do-After-a-Motor-Vehicle-Accident-768x419.jpg 768w, https://www.roadcover.co.za/wp-content/uploads/2026/10/What-to-Do-After-a-Motor-Vehicle-Accident.jpg 1200w" sizes="(max-width: 800px) 100vw, 800px" title="What to Do After a Motor Vehicle Accident 7">															</div>
					</div>
				</div>
		<div class="elementor-element elementor-element-6d4b6863 e-flex e-con-boxed e-con e-parent" data-id="6d4b6863" data-element_type="container" data-e-type="container">
					<div class="e-con-inner">
				<div class="elementor-element elementor-element-51d21fc2 elementor-widget elementor-widget-text-editor" data-id="51d21fc2" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
									<p>Knowing what to do after a motor vehicle accident is important, particularly if you are injured and may later need to claim from the Road Accident Fund (RAF).</p>								</div>
		<div class="elementor-element elementor-element-3c024370 e-con-full e-flex e-con e-child" data-id="3c024370" data-element_type="container" data-e-type="container">
				<div class="elementor-element elementor-element-65f87163 elementor-widget elementor-widget-text-editor" data-id="65f87163" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
									<p>RoadCover’s Chief Executive Officer, Amanda Rogaly, says: “People often focus on reporting the accident and getting medical treatment, but the records created from the outset can become important evidence in a RAF claim. Getting those early steps right can make the claims process easier, which is where RoadCover takes over from its members by managing the legal and administrative requirements of a claim and taking on the complexity of the process, so they can focus on their recovery. When a claim is successfully settled, the member receives 100% of the settlement, with no fees or expenses deducted.”</p>								</div>
				</div>
				<div class="elementor-element elementor-element-42c562aa elementor-widget elementor-widget-heading" data-id="42c562aa" data-element_type="widget" data-e-type="widget" data-widget_type="heading.default">
					<h3 class="elementor-heading-title elementor-size-default">What should you do immediately after a motor vehicle accident?</h3>				</div>
				<div class="elementor-element elementor-element-6eaa89d5 elementor-widget elementor-widget-text-editor" data-id="6eaa89d5" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
									<p>Stop at the scene and, if it is safe to do so, move away from the accident to a safe location to prevent further injury. Check whether anyone has been injured and contact emergency services where necessary.</p><p>The <a title="National Road Traffic Act" href="https://www.gov.za/sites/default/files/gcis_document/201409/act93of1996.pdf" target="_blank" rel="noopener">National Road Traffic Act</a> requires a driver involved in an accident where someone is killed or injured, or where property or an animal is damaged, to stop, establish the extent of injuries and provide assistance to injured people. The driver must also exchange required details with other people involved.</p><p>If you can do so safely, record the location, time and circumstances of the accident while they are still fresh. It is also important to collect the names and contact details of the drivers, passengers and witnesses involved, as well as vehicle registration numbers. Record the details of police, traffic or emergency personnel who attend.</p>								</div>
				<div class="elementor-element elementor-element-c551b46 elementor-widget elementor-widget-heading" data-id="c551b46" data-element_type="widget" data-e-type="widget" data-widget_type="heading.default">
					<h3 class="elementor-heading-title elementor-size-default">Do you need to report a motor vehicle accident to the police?</h3>				</div>
				<div class="elementor-element elementor-element-6ce4a7d elementor-widget elementor-widget-text-editor" data-id="6ce4a7d" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
									<p>Yes. If the accident has not already been reported at the scene, it must be reported to a police officer or traffic authority as soon as reasonably practicable. Where someone has been killed or injured, the <a title="National Road Traffic Act" href="https://www.gov.za/sites/default/files/gcis_document/201409/act93of1996.pdf" target="_blank" rel="noopener">National Road Traffic Act</a> requires the accident to be reported within 24 hours. In other cases, it must be reported on the first working day after the accident.</p><p><a title="The South African Police Service (SAPS)" href="https://www.saps.gov.za/faqdetail.php?fid=10" target="_blank" rel="noopener">The South African Police Service (SAPS)</a> states that the accident must be reported in person. Keep the official reference number you receive as proof that it was reported.</p>								</div>
				<div class="elementor-element elementor-element-3ff8212 elementor-widget elementor-widget-heading" data-id="3ff8212" data-element_type="widget" data-e-type="widget" data-widget_type="heading.default">
					<h3 class="elementor-heading-title elementor-size-default">What should you photograph after a road accident?</h3>				</div>
				<div class="elementor-element elementor-element-5bff96b elementor-widget elementor-widget-text-editor" data-id="5bff96b" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
									<p>If it is safe to do so, photograph the scene before it changes. Take photographs of the vehicles, visible damage, road conditions, traffic signs and the position of the vehicles. If you have visible injuries, photograph these too.</p>								</div>
				<div class="elementor-element elementor-element-75bc147 elementor-widget elementor-widget-heading" data-id="75bc147" data-element_type="widget" data-e-type="widget" data-widget_type="heading.default">
					<h3 class="elementor-heading-title elementor-size-default">What documents should you keep?</h3>				</div>
				<div class="elementor-element elementor-element-8a4c889 elementor-widget elementor-widget-text-editor" data-id="8a4c889" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
									<p>Keep your police accident report or reference number, witness information and statements, medical records, hospital and medical accounts and other documents relating to the accident and your injuries. Where relevant, keep documents relating to your income and time away from work.</p>								</div>
				<div class="elementor-element elementor-element-0a91889 elementor-widget elementor-widget-heading" data-id="0a91889" data-element_type="widget" data-e-type="widget" data-widget_type="heading.default">
					<h3 class="elementor-heading-title elementor-size-default">Can you claim from the RAF after a motor vehicle accident?</h3>				</div>
				<div class="elementor-element elementor-element-8546bac elementor-widget elementor-widget-text-editor" data-id="8546bac" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
									<p>You may be able to claim from the RAF if you suffered bodily injury as a result of the negligent driving of a motor vehicle. A claim may also arise for loss of support following a death in a qualifying road accident. The RAF does not compensate for damage to your vehicle or other property.</p><p>Time limits do apply. The <a href="https://www.raf.co.za/Claims/Leaflets1/RAF%20Leaflet_eng.pdf" target="_blank" rel="noopener">RAF states</a> that where the negligent driver is identified, the claim must generally be lodged within three years from the date on which it arose. Claims involving an unidentified driver, such as a hit-and-run, have a two-year period.</p>								</div>
				<div class="elementor-element elementor-element-3a9e2c7 elementor-widget elementor-widget-heading" data-id="3a9e2c7" data-element_type="widget" data-e-type="widget" data-widget_type="heading.default">
					<h3 class="elementor-heading-title elementor-size-default">What should you do if you are injured in a motor vehicle accident?</h3>				</div>
				<div class="elementor-element elementor-element-6898188 elementor-widget elementor-widget-text-editor" data-id="6898188" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
									<p>Seek medical attention as soon as possible, even if your injuries initially appear minor. Make sure your injuries and treatment are properly recorded and keep the relevant medical documentation.</p><p>For RoadCover members, these requirements are managed as part of the claims process from start to finish. As Rogaly mentioned, RoadCover manages qualifying RAF claims on behalf of its members and claimants receive <strong>100% of their RAF settlement</strong>, <strong>with no fees or expenses deducted</strong>.</p>								</div>
					</div>
				</div>
		<div class="elementor-element elementor-element-5feab859 e-flex e-con-boxed e-con e-parent" data-id="5feab859" data-element_type="container" data-e-type="container">
					<div class="e-con-inner">
				<div class="elementor-element elementor-element-f22aef4 elementor-widget__width-initial elementor-widget elementor-widget-button" data-id="f22aef4" data-element_type="widget" data-e-type="widget" data-widget_type="button.default">
										<a class="elementor-button elementor-button-link elementor-size-sm" href="https://www.roadcover.co.za/wp-content/uploads/2026/10/Motor-Vehicle-Accident-Checklist.pdf" target="_blank">
						<span class="elementor-button-content-wrapper">
									<span class="elementor-button-text">Click here to download the Motor Vehicle Accident Checklist</span>
					</span>
					</a>
								</div>
					</div>
				</div>
		<div class="elementor-element elementor-element-8e9572a e-flex e-con-boxed e-con e-parent" data-id="8e9572a" data-element_type="container" data-e-type="container">
					<div class="e-con-inner">
				<div class="elementor-element elementor-element-6e77e00 elementor-widget elementor-widget-text-editor" data-id="6e77e00" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
									<p><strong>Disclaimer:</strong> <em>The information provided in this article was correct at the time of publication and is intended for general guidance only. It is subject to change without notice as laws, regulations and membership terms evolve. RoadCover and the Road Accident Fund operate within dynamic legal frameworks and readers should verify current requirements before making decisions or entering into agreements.</em></p>								</div>
					</div>
				</div>
		<div class="elementor-element elementor-element-15aeaf97 e-flex e-con-boxed e-con e-parent" data-id="15aeaf97" data-element_type="container" data-e-type="container">
					<div class="e-con-inner">
				<div class="elementor-element elementor-element-33a34658 elementor-widget elementor-widget-shortcode" data-id="33a34658" data-element_type="widget" data-e-type="widget" data-widget_type="shortcode.default">
							<div class="elementor-shortcode">		<div data-elementor-type="container" data-elementor-id="2657" class="elementor elementor-2657" data-elementor-post-type="elementor_library">
				<div class="elementor-element elementor-element-1b2aafda e-con-full e-flex e-con e-parent" data-id="1b2aafda" data-element_type="container" data-e-type="container">
				<div class="elementor-element elementor-element-4e06f177 elementor-widget elementor-widget-html" data-id="4e06f177" data-element_type="widget" data-e-type="widget" data-widget_type="html.default">
					<link href="https://fonts.googleapis.com/css2?family=Raleway:wght@400;500;600;700;800&display=swap" rel="stylesheet">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.0/css/all.min.css">

<script src="https://www.google.com/recaptcha/api.js?render=6LdwjNosAAAAAK5qrEyD0FybwyViVZOqamPK1Fnr" async defer></script>

<style>
/* ===============================================================
   RoadCover — Pricing + Onboarding Form
   All selectors scoped to #rc-pricing to avoid host-page bleed.
   PLN codes live on data-plan-code attributes of .rc-btn elements.
   ================================================================ */

#rc-pricing *, #rc-pricing *::before, #rc-pricing *::after {
    box-sizing: border-box;
}
#rc-pricing {
    font-family: 'Raleway', sans-serif;
    width: 100%;
    color: #1f2937;

    /* Plan-card palette — scoped to the embed, never :root, so the
       host page's own custom properties are left untouched. */
    --rc-blue:      #2B4FD4;
    --rc-blue-dark: #1A3399;
    --rc-gold:      #F5C842;
    --rc-gold-dark: #D4A800;
    --rc-text:      #0D1B3E;
    --rc-muted:     #6B7280;
    --rc-border:    #E4E9F8;
    --rc-success:   #16A34A;
}
.rc-wrapper {
    display: flex;
    flex-direction: column;
    gap: 48px;
}

/* ── Header ─────────────────────────────────────────────────────── */
.rc-header { text-align: center; }
.rc-header h2 {
    font-size: 30px;
    font-weight: 800;
    margin: 0 0 8px;
    color: #111827;
}
.rc-header p {
    font-size: 15px;
    color: #6b7280;
    margin: 0;
}

/* ── Single Plan Card ───────────────────────────────────────────── */
/* One responsive card serves both desktop and mobile — there is no
   longer a separate table/card pair to keep in sync. */
.rc-plan-card {
    position: relative;
    background: #fff;
    border: 1px solid var(--rc-border);
    border-radius: 18px;
    overflow: hidden;
    box-shadow: 0 10px 30px rgba(13, 27, 62, 0.08);
}

.rc-plan-header {
    position: relative;
    overflow: hidden;
    background: linear-gradient(135deg, var(--rc-blue) 0%, var(--rc-blue-dark) 100%);
    padding: 32px 28px 30px;
    text-align: center;
}
.rc-plan-header::before {
    content: '';
    position: absolute;
    width: 220px;
    height: 220px;
    right: -90px;
    top: -70px;
    border-radius: 50%;
    background: rgba(255, 255, 255, 0.08);
}
.rc-plan-header::after {
    content: '';
    position: absolute;
    width: 140px;
    height: 140px;
    left: -50px;
    bottom: -50px;
    border-radius: 50%;
    background: rgba(245, 200, 66, 0.14);
}
.rc-plan-header > * { position: relative; z-index: 2; }

.rc-plan-name {
    font-size: 11px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.1em;
    color: rgba(255, 255, 255, 0.65);
    margin-bottom: 6px;
}
.rc-plan-price {
    font-size: 44px;
    font-weight: 900;
    color: var(--rc-gold);
    line-height: 1.1;
}
.rc-plan-price-unit {
    font-size: 14px;
    font-weight: 600;
    color: rgba(255, 255, 255, 0.6);
}
.rc-plan-subprice {
    margin-top: 6px;
    font-size: 12px;
    font-weight: 600;
    color: var(--rc-gold);
    min-height: 16px;
}

.rc-plan-rows { padding: 6px 28px; }
.rc-plan-row {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    padding: 14px 0;
    border-bottom: 1px solid var(--rc-border);
}
.rc-plan-row:last-child { border-bottom: none; }
.rc-plan-row-label {
    font-size: 13.5px;
    font-weight: 600;
    color: var(--rc-text);
}
.rc-plan-row-icon {
    width: 22px;
    height: 22px;
    flex-shrink: 0;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    background: #ECFDF3;
    color: var(--rc-success);
}
.rc-plan-row-icon svg { width: 13px; height: 13px; display: block; }

.rc-plan-cta-block { padding: 20px 28px 26px; }
.rc-plan-cta-hint {
    text-align: center;
    margin-top: 10px;
    font-size: 11px;
    color: var(--rc-muted);
}

/* ── Plan Select Button (JS hook: .rc-btn) ──────────────────────── */
.rc-btn {
    width: 100%;
    padding: 13px 18px;
    border: none;
    border-radius: 10px;
    background: var(--rc-gold);
    color: var(--rc-text);
    font-family: inherit;
    font-size: 14px;
    font-weight: 800;
    letter-spacing: 0.01em;
    cursor: pointer;
    transition: background 0.15s, transform 0.1s;
}
.rc-btn:hover   { background: var(--rc-gold-dark); }
.rc-btn:active  { transform: scale(0.99); }
.rc-btn.rc-selected { background: var(--rc-gold-dark); }

/* ── Form Section ───────────────────────────────────────────────── */
#rc-form-section { display: none; }
#rc-form-section.rc-visible {
    display: block;
    animation: rc-fadein 0.22s ease;
}
@keyframes rc-fadein {
    from { opacity: 0; transform: translateY(10px); }
    to   { opacity: 1; transform: translateY(0); }
}

.rc-form-inner {
    display: flex;
    flex-direction: column;
    gap: 22px;
    background: linear-gradient(135deg, #2A45AC, #1f358a);
    border-radius: 12px;
    padding: 40px;
}

.rc-selected-badge {
    display: inline-block;
    background: rgba(255, 255, 255, 0.15);
    color: #FFD84D;
    font-size: 13px;
    font-weight: 700;
    border-radius: 6px;
    padding: 7px 13px;
}

.rc-form-title {
    font-size: 20px;
    font-weight: 800;
    color: #fff;
    margin: 0;
}

/* Field grid — first two fields sit side-by-side */
.rc-field-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 14px;
}
.rc-field-full { grid-column: 1 / -1; }

.rc-field {
    display: flex;
    flex-direction: column;
    gap: 5px;
}
.rc-field-label {
    font-size: 11px;
    font-weight: 700;
    color: rgba(255, 255, 255, 0.7);
    text-transform: uppercase;
    letter-spacing: 0.05em;
}

/* Icon floats over the input; no separate column, no column border */
.rc-input-row {
    position: relative;
    border: 1px solid #6f7ec1;
    border-radius: 8px;
    background: #3d54ac;
    transition: border-color 0.15s, box-shadow 0.15s;
}
.rc-input-row:focus-within {
    border-color: #a0aee0;
    box-shadow: 0 0 0 3px rgba(111, 126, 193, 0.3);
}
.rc-input-row:has(.invalid) { border-color: #FF3B30; }
.rc-input-row:has(.invalid):focus-within {
    box-shadow: 0 0 0 3px rgba(129, 12, 12, 0.25);
}

.rc-input-icon {
    position: absolute;
    left: 14px;
    top: 50%;
    transform: translateY(-50%);
    color: rgba(255, 255, 255, 0.55);
    font-size: 14px;
    pointer-events: none;
}

.rc-input {
    display: block;
    width: 100%;
    padding: 11px 14px 11px 44px !important;
    border: 0;
    box-shadow: none;
    border-radius: 8px;
    background: transparent;
    font-family: inherit;
    font-size: 14px;
    color: #fff;
    -webkit-appearance: none;
    appearance: none;
    outline: none;
}
#rc-pricing .rc-input::placeholder { color: rgb(248, 248, 248); }
.rc-input.invalid { /* border shown via :has on .rc-input-row */ }

/* Native select chevron */
select.rc-input {
    padding-right: 36px;
    background-color: #3d54ac;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='7' viewBox='0 0 12 7'%3E%3Cpolyline points='1,1 6,6 11,1' fill='none' stroke='%23a0aee0' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
    background-repeat: no-repeat;
    background-position: right 12px center;
    cursor: pointer;
    color: #fff;
}

.rc-field-error {
    font-size: 12px;
    color: #FF3B30;
    margin: 0;
    line-height: 1.4;
}

/* T&C checkbox */
.rc-terms {
    display: flex;
    align-items: center;
    gap: 10px;
    font-size: 14px;
    color: rgba(255, 255, 255, 0.85);
    cursor: pointer;
    user-select: none;
}
.rc-terms input[type="checkbox"] {
    width: 17px;
    height: 17px;
    cursor: pointer;
    flex-shrink: 0;
    accent-color: #FFD84D;
}
.rc-terms.invalid { color: #FF3B30; }
.rc-terms.invalid input[type="checkbox"] {
    outline: 2px solid #FF3B30;
    outline-offset: 2px;
    border-radius: 2px;
}

.rc-submit:disabled,
.rc-submit:disabled:hover {
    background: #FFD84D; /* same as default */
    cursor: not-allowed;
}
/* Submit button */
.rc-submit {
    width: 100%;
    padding: 14px 20px;
    border: none;
    border-radius: 10px;
    background: #FFD84D;
    color: #1f358a;
    font-family: inherit;
    font-size: 15px;
    font-weight: 700;
    cursor: pointer;
    transition: background 0.15s, transform 0.1s;
    letter-spacing: 0.01em;
}
.rc-submit:hover:not([disabled]) { background: #f5cc35; }
.rc-submit:active:not([disabled]) { transform: scale(0.99); }
.rc-submit[disabled] { opacity: 0.5; cursor: not-allowed; }

.rc-form-error {
    font-size: 13px;
    color: #FF3B30;
    margin: 0;
    line-height: 1.5;
}

.rc-recaptcha-notice {
    font-size: 11px;
    color: rgba(255, 255, 255, 0.45);
    margin: 0;
    line-height: 1.5;
    text-align: center;
}
.rc-recaptcha-notice a {
    color: rgba(255, 255, 255, 0.55);
    text-decoration: underline;
}

/* ── Billing Toggle ─────────────────────────────────────────────── */
/* Sits on the dark gradient header, so it is styled for a dark ground. */
.rc-billing-toggle {
    display: inline-flex;
    background: rgba(255, 255, 255, 0.12);
    border: 1.5px solid rgba(255, 255, 255, 0.2);
    border-radius: 999px;
    padding: 3px;
    gap: 2px;
    margin-bottom: 20px;
}
.rc-toggle-opt {
    padding: 7px 20px;
    border: none;
    border-radius: 999px;
    background: transparent;
    color: rgba(255, 255, 255, 0.75);
    font-family: inherit;
    font-size: 12.5px;
    font-weight: 700;
    cursor: pointer;
    transition: background 0.2s ease, color 0.2s ease;
    white-space: nowrap;
    line-height: 1;
}
.rc-toggle-opt:hover:not(.rc-toggle-active) {
    background: rgba(255, 255, 255, 0.08);
}
.rc-toggle-opt.rc-toggle-active {
    background: var(--rc-gold);
    color: var(--rc-text);
}

.rc-save-badge {
    display: inline-block;
    margin-left: 6px;
    padding: 1px 6px;
    border-radius: 999px;
    font-size: 9.5px;
    font-weight: 800;
    color: rgba(255, 255, 255, 0.85);
    background: rgba(255, 255, 255, 0.16);
}
/* On the gold active pill, white-on-gold is unreadable — invert it. */
.rc-toggle-active .rc-save-badge {
    color: var(--rc-text);
    background: rgba(13, 27, 62, 0.12);
}

/* ── Responsive ─────────────────────────────────────────────────── */
@media (max-width: 700px) {
    #rc-pricing     { padding: 0px 0px; }
    .rc-wrapper     { gap: 32px; }
    .rc-plan-header { padding: 28px 20px 26px; }
    .rc-plan-price  { font-size: 38px; }
    .rc-plan-rows   { padding: 6px 20px; }
    .rc-plan-cta-block { padding: 18px 20px 22px; }
    .rc-field-grid  { grid-template-columns: 1fr; }
    .rc-field-full  { grid-column: 1; }
    .rc-form-inner  { padding: 24px 20px; }
    .rc-header h2   { font-size: 24px; }
}
</style>

<!-- ================================================================
     PRICING TABLE + ONBOARDING FORM
     ================================================================ -->
<div id="rc-pricing">
  <div class="rc-wrapper">

    <!-- Single plan card — one responsive card for desktop and mobile -->
    <div class="rc-plan-card" data-plan-key="RoadCover">

      <div class="rc-plan-header">
        <div class="rc-billing-toggle" role="group" aria-label="Billing period">
          <button type="button" class="rc-toggle-opt rc-toggle-active" data-billing="monthly">Monthly</button>
          <button type="button" class="rc-toggle-opt" data-billing="annual">Annual <span class="rc-save-badge">Save 6%</span></button>
        </div>

        <div class="rc-plan-name">RoadCover</div>
        <div class="rc-plan-price"><span class="rc-plan-price-val">R49</span><span class="rc-plan-price-unit">/mo</span></div>
        <div class="rc-plan-subprice" hidden></div>
      </div>

      <div class="rc-plan-rows">
        <div class="rc-plan-row">
          <span class="rc-plan-row-label">RAF Claim Support</span>
          <span class="rc-plan-row-icon" role="img" aria-label="Included">
            <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><polyline points="20 6 9 17 4 12"></polyline></svg>
          </span>
        </div>
        <div class="rc-plan-row">
          <span class="rc-plan-row-label">Legal Expertise</span>
          <span class="rc-plan-row-icon" role="img" aria-label="Included">
            <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><polyline points="20 6 9 17 4 12"></polyline></svg>
          </span>
        </div>
      </div>

      <div class="rc-plan-cta-block">
        <button class="rc-btn"
                data-plan="RoadCover"
                data-plan-code="RC49"
                data-price="49.00 /Month">Select RoadCover &#8594;</button>
        <div class="rc-plan-cta-hint">No fees. 100% of your payout.</div>
      </div>

    </div><!-- /.rc-plan-card -->

    <!-- Form: hidden until a plan is selected -->
    <div id="rc-form-section">
      <form id="roadcover-form" novalidate>

        <!-- product_code is set programmatically on plan button click -->
        <input type="hidden" name="product_code" id="cover-input">
        <input type="hidden" name="form_id"   value="9a3d492">
        <input type="hidden" name="form_name" value="Get RoadCover">

        <div class="rc-form-inner">

          <div id="selectedPlan" class="rc-selected-badge">Selected: &#8212;</div>
          <p class="rc-form-title">Enter your details</p>

          <div class="rc-field-grid">

            <!-- Row 1: name -->
            <div class="rc-field">
              <label class="rc-field-label" for="rc-first-name">First name *</label>
              <div class="rc-input-row">
                <i class="fa-solid fa-user rc-input-icon" aria-hidden="true"></i>
                <input class="rc-input" type="text" id="rc-first-name"
                       name="first_name" required maxlength="60" placeholder="First name">
              </div>
            </div>

            <div class="rc-field">
              <label class="rc-field-label" for="rc-last-name">Last name *</label>
              <div class="rc-input-row">
                <i class="fa-solid fa-user rc-input-icon" aria-hidden="true"></i>
                <input class="rc-input" type="text" id="rc-last-name"
                       name="last_name" required maxlength="60" placeholder="Last name">
              </div>
            </div>

            <!-- Row 2: identity -->
            <div class="rc-field">
              <label class="rc-field-label" for="rc-id">ID number *</label>
              <div class="rc-input-row">
                <i class="fa-solid fa-id-card rc-input-icon" aria-hidden="true"></i>
                <input class="rc-input" type="text" id="rc-id"
                       name="identificationnr" required pattern="[0-9]{13}"
                       inputmode="numeric" maxlength="13"
                       placeholder="13-digit SA ID number">
              </div>
            </div>

            <div class="rc-field">
              <label class="rc-field-label" for="rc-gender">Gender *</label>
              <div class="rc-input-row">
                <i class="fa-solid fa-venus-mars rc-input-icon" aria-hidden="true"></i>
                <select class="rc-input" id="rc-gender" name="gender" required>
                  <option value="">Select&hellip;</option>
                  <option value="1">Male</option>
                  <option value="2">Female</option>
                </select>
              </div>
            </div>

            <!-- Row 3: contact -->
            <div class="rc-field">
              <label class="rc-field-label" for="rc-email">Email *</label>
              <div class="rc-input-row">
                <i class="fa-solid fa-envelope rc-input-icon" aria-hidden="true"></i>
                <input class="rc-input" type="email" id="rc-email"
                       name="email" required maxlength="254"
                       placeholder="you@example.com">
              </div>
            </div>

            <div class="rc-field">
              <label class="rc-field-label" for="rc-mobile">Mobile *</label>
              <div class="rc-input-row">
                <i class="fa-solid fa-phone rc-input-icon" aria-hidden="true"></i>
                <input class="rc-input" type="tel" id="rc-mobile"
                       name="mobile" required inputmode="tel"
                       placeholder="0XXXXXXXXX or +27XXXXXXXXX">
              </div>
            </div>

            <!-- Row 4: optional -->
            <div class="rc-field rc-field-full">
              <label class="rc-field-label" for="rc-promo">Promo code</label>
              <div class="rc-input-row">
                <i class="fa-solid fa-tag rc-input-icon" aria-hidden="true"></i>
                <input class="rc-input" type="text" id="rc-promo"
                       name="promo_code" maxlength="32" placeholder="Optional">
              </div>
            </div>

          </div><!-- /.rc-field-grid -->

          <label class="rc-terms">
            <input type="checkbox" name="I accept the Terms and Conditions." required>
            <span>I accept the Terms and Conditions.</span>
          </label>

          <button type="submit" id="submit-btn" class="rc-submit">Continue</button>
          <p id="form-error" class="rc-form-error" hidden></p>

          <p class="rc-recaptcha-notice">This site is protected by reCAPTCHA and the Google <a href="https://policies.google.com/privacy" target="_blank" rel="noopener noreferrer">Privacy Policy</a> and <a href="https://policies.google.com/terms" target="_blank" rel="noopener noreferrer">Terms of Service</a> apply.</p>

        </div><!-- /.rc-form-inner -->
      </form>
    </div><!-- /#rc-form-section -->

  </div><!-- /.rc-wrapper -->
</div><!-- /#rc-pricing -->

<script>
(function () {
    var form           = document.getElementById('roadcover-form');
    var errEl          = document.getElementById('form-error');
    var submitBtn      = document.getElementById('submit-btn');
    var coverInput     = document.getElementById('cover-input');
    var formSection    = document.getElementById('rc-form-section');
    var selectedPlanEl = document.getElementById('selectedPlan');
    var pricing        = document.getElementById('rc-pricing');

    var currentPrice   = '';
    var isAnnual       = false;
    var currentPlanBtn = null;

    // ── Plan + billing data ───────────────────────────────────────────────────
    var planData = {
        'RoadCover': {
            monthly: { priceVal: 'R49', unit: '/mo', code: 'RC49',         priceStr: '49.00 /Month',  subprice: '' },
            annual:  { priceVal: 'R550', unit: '/yr', code: 'PRD-CB838AEF', priceStr: '550.00 /Year', subprice: '~R46/mo' }
        }
    };

    // ── Apply billing mode to all price displays and button codes ─────────────
    function applyBilling() {
        var mode = isAnnual ? 'annual' : 'monthly';

        // Plan card price display
        pricing.querySelectorAll('.rc-plan-card[data-plan-key]').forEach(function (card) {
            var d = planData[card.dataset.planKey][mode];
            card.querySelector('.rc-plan-price-val').textContent  = d.priceVal;
            card.querySelector('.rc-plan-price-unit').textContent = d.unit;
            var sub = card.querySelector('.rc-plan-subprice');
            sub.textContent = d.subprice;
            sub.hidden      = !d.subprice;
        });

        // Update data-plan-code on all buttons so selection highlighting still works
        pricing.querySelectorAll('.rc-btn').forEach(function (btn) {
            var key = btn.dataset.plan;
            if (!planData[key]) return;
            btn.dataset.planCode = planData[key][mode].code;
            btn.dataset.price    = planData[key][mode].priceStr;
        });

        // If a plan was already selected, refresh the hidden input + badge + button label
        if (currentPlanBtn) {
            var key     = currentPlanBtn.dataset.plan;
            var d       = planData[key][mode];
            var billing = isAnnual ? 'Annual' : 'Monthly';
            coverInput.value           = d.code;
            currentPrice               = d.priceStr;
            selectedPlanEl.textContent = 'Selected: ' + key + ' (' + billing + ')';
            updateButton();
        }
    }

    // ── Helpers (mirrored in n8n Code node — keep in sync) ───────────────────

    function clean(v) {
        if (v === null || v === undefined) return '';
        var s = String(v);
        s = s.replace(/[\x00-\x08\x0B\x0C\x0E-\x1F\x7F]/g, '');
        s = s.replace(/<script\b[^>]*>[\s\S]*?<\/script\s*>/gi, '');
        s = s.replace(/<\/?[a-zA-Z][^>]*>/g, '');
        s = s.replace(/javascript\s*:/gi, '');
        s = s.replace(/\s+/g, ' ').trim();
        return s;
    }

    function luhnValid(idStr) {
        var sum = 0;
        for (var i = 0; i < 13; i++) {
            var n = parseInt(idStr.charAt(i), 10);
            if (i % 2 === 1) { n *= 2; if (n > 9) n -= 9; }
            sum += n;
        }
        return sum % 10 === 0;
    }

    // Returns { ok: true } or { ok: false, field, message }
    function validate(data) {
        var required = {
            product_code:       'Please select a cover plan.',
            first_name:         'First name is required.',
            last_name:          'Last name is required.',
            email:              'Email is required.',
            mobile:             'Mobile number is required.',
            identificationnr:   'ID number is required.',
            gender:             'Please select your gender.'
        };
        for (var k in required) {
            if (!data[k]) return { ok: false, field: k, message: required[k] };
        }

        if (data.first_name.length > 60)
            return { ok: false, field: 'first_name', message: 'First name is too long (max 60).' };
        if (data.last_name.length > 60)
            return { ok: false, field: 'last_name', message: 'Last name is too long (max 60).' };

        var emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
        if (!emailRegex.test(data.email))
            return { ok: false, field: 'email', message: 'Please enter a valid email address.' };
        if (data.email.length > 254)
            return { ok: false, field: 'email', message: 'Email is too long.' };

        var mobileRegex = /^(\+27|0)[0-9]{9}$/;
        if (!mobileRegex.test(data.mobile))
            return { ok: false, field: 'mobile', message: 'Mobile must be 10 digits starting with 0, or +27 followed by 9 digits.' };

        var genderNum = Number(data.gender);
        if (genderNum !== 1 && genderNum !== 2)
            return { ok: false, field: 'gender', message: 'Please select your gender.' };

        if (!/^[0-9]{13}$/.test(data.identificationnr))
            return { ok: false, field: 'identificationnr', message: 'ID number must be exactly 13 digits.' };

        var yy        = parseInt(data.identificationnr.substring(0, 2), 10);
        var mm        = parseInt(data.identificationnr.substring(2, 4), 10);
        var dd        = parseInt(data.identificationnr.substring(4, 6), 10);
        var now       = new Date();
        var currentYY = now.getFullYear() % 100;
        var fullYear  = (yy > currentYY) ? (1900 + yy) : (2000 + yy);
        var dob       = new Date(fullYear, mm - 1, dd);
        var dobValid  =
            dob.getFullYear() === fullYear &&
            dob.getMonth()    === (mm - 1) &&
            dob.getDate()     === dd       &&
            dob <= now;
        if (!dobValid)
            return { ok: false, field: 'identificationnr', message: 'The first 6 digits of your ID number are not a valid date of birth.' };

        var genderDigits = parseInt(data.identificationnr.substring(6, 10), 10);
        var idGender     = genderDigits >= 5000 ? 1 : 2;
        if (idGender !== genderNum) {
            var expected = idGender === 1 ? 'Male' : 'Female';
            return { ok: false, field: 'identificationnr',
                     message: 'The selected gender does not match your ID number (ID indicates ' + expected + ').' };
        }

        if (!luhnValid(data.identificationnr))
            return { ok: false, field: 'identificationnr', message: 'ID number checksum is invalid. Please check the number.' };

        return { ok: true };
    }

    // ── UI helpers ────────────────────────────────────────────────────────────

    function clearFieldErrors() {
        form.querySelectorAll('.invalid').forEach(function (el) { el.classList.remove('invalid'); });
        form.querySelectorAll('.rc-field-error').forEach(function (el) { el.remove(); });
    }

    function showFieldError(fieldName, message) {
        // product_code is a hidden input — surface as a form-level error
        if (fieldName === 'product_code') {
            showFormError(message);
            return;
        }
        var input = form.querySelector('[name="' + fieldName + '"]');
        if (!input) return;
        input.classList.add('invalid');
        var field = input.closest('.rc-field') || input.parentElement;
        var span  = field.querySelector('.rc-field-error');
        if (!span) {
            span = document.createElement('span');
            span.className = 'rc-field-error';
            field.appendChild(span);
        }
        span.textContent = message;
        input.focus();
    }

    function showFormError(message) {
        errEl.textContent = message;
        errEl.hidden = false;
    }

    function hideFormError() {
        errEl.hidden = true;
        errEl.textContent = '';
    }

    function updateButton() {
        submitBtn.textContent = currentPrice ? ('Continue • R' + currentPrice) : 'Continue';
        submitBtn.disabled    = false;
    }

    // ── Collect & sanitise ────────────────────────────────────────────────────

    function collectData() {
        var fd = new FormData(form);
        return {
            product_code:       clean(fd.get('product_code')),
            first_name:         clean(fd.get('first_name')),
            last_name:          clean(fd.get('last_name')),
            email:              clean(fd.get('email')).toLowerCase(),
            mobile:             clean(fd.get('mobile')),
            identificationnr:   clean(fd.get('identificationnr')),
            gender:             clean(fd.get('gender')),
            promo_code:         clean(fd.get('promo_code'))
        };
    }

    // ── Billing toggle ────────────────────────────────────────────────────────

    pricing.querySelectorAll('.rc-toggle-opt').forEach(function (btn) {
        btn.addEventListener('click', function () {
            if (btn.dataset.billing === (isAnnual ? 'annual' : 'monthly')) return;
            isAnnual = !isAnnual;
            pricing.querySelectorAll('.rc-toggle-opt').forEach(function (b) {
                b.classList.toggle('rc-toggle-active', b.dataset.billing === (isAnnual ? 'annual' : 'monthly'));
            });
            applyBilling();
        });
    });

    // ── Plan selection ────────────────────────────────────────────────────────

    pricing.querySelectorAll('.rc-btn').forEach(function (planBtn) {
        planBtn.addEventListener('click', function () {
            var code    = planBtn.dataset.planCode;
            var plan    = planBtn.dataset.plan;
            var price   = planBtn.dataset.price || '';
            var billing = isAnnual ? 'Annual' : 'Monthly';

            currentPlanBtn = planBtn;

            // Highlight every button sharing the same plan code (desktop + mobile pair)
            pricing.querySelectorAll('.rc-btn').forEach(function (b) {
                b.classList.toggle('rc-selected', b.dataset.planCode === code);
            });

            coverInput.value           = code;
            currentPrice               = price;
            selectedPlanEl.textContent = 'Selected: ' + plan + ' (' + billing + ')';
            updateButton();

            formSection.classList.add('rc-visible');
            formSection.scrollIntoView({ behavior: 'smooth', block: 'nearest' });

            clearFieldErrors();
            hideFormError();
        });
    });

    // ── Initialise billing display ────────────────────────────────────────────
    applyBilling();

    // ── Clear errors on edit ──────────────────────────────────────────────────

    form.addEventListener('input', function (e) {
        if (e.target.classList.contains('invalid')) {
            e.target.classList.remove('invalid');
            var f = e.target.closest('.rc-field');
            if (f) { var s = f.querySelector('.rc-field-error'); if (s) s.remove(); }
        }
        hideFormError();
    });

    form.addEventListener('change', function (e) {
        if (e.target.classList.contains('invalid')) {
            e.target.classList.remove('invalid');
            var f = e.target.closest('.rc-field');
            if (f) { var s = f.querySelector('.rc-field-error'); if (s) s.remove(); }
        }
        if (e.target.type === 'checkbox' && e.target.checked) {
            var label = e.target.closest('label.rc-terms');
            if (label) label.classList.remove('invalid');
            hideFormError();
        }
    });

    // ── Form submit ───────────────────────────────────────────────────────────

    form.addEventListener('submit', async function (e) {
        e.preventDefault();
        hideFormError();
        clearFieldErrors();

        var data   = collectData();
        var result = validate(data);
        if (!result.ok) {
            showFieldError(result.field, result.message);
            return;
        }

        var termsBox = form.querySelector('input[type="checkbox"][required]');
        if (termsBox && !termsBox.checked) {
            var termsLabel = termsBox.closest('label.rc-terms');
            if (termsLabel) termsLabel.classList.add('invalid');
            termsBox.focus();
            showFormError('Please accept the Terms and Conditions to continue.');
            return;
        }

        submitBtn.disabled    = true;
        submitBtn.textContent = 'Processing…';

        // ── reCAPTCHA v3 — must complete before the network request ──────────
        var recaptchaToken = '';
        try {
            recaptchaToken = await new Promise(function (resolve, reject) {
                if (typeof grecaptcha === 'undefined') { reject(new Error('not loaded')); return; }
                grecaptcha.ready(function () {
                    grecaptcha.execute('6LdwjNosAAAAAK5qrEyD0FybwyViVZOqamPK1Fnr', { action: 'submit' })
                        .then(resolve).catch(reject);
                });
            });
        } catch (_) {
            showFormError('Security check could not complete. Please disable any ad blockers and try again.');
            updateButton();
            return;
        }

        try {
            // Send sanitised data so the backend receives cleaned values
            var params = new URLSearchParams();
            for (var k in data) params.append(k, data[k]);
            params.append('form_id',   form.querySelector('[name="form_id"]').value   || '');
            params.append('form_name', form.querySelector('[name="form_name"]').value || '');
            params.append('I accept the Terms and Conditions.', 'on');
            params.append('recaptcha_token', recaptchaToken);

            var res     = await fetch('https://n8n.roadcover.co.za/webhook/form', {
                method:  'POST',
                headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
                body:    params.toString()
            });
            var json    = await res.json();
            var payload = Array.isArray(json) ? json[0] : json;
            var paymentUrl = (payload && payload.data && payload.data.payment_url)
                           || (payload && payload.payment_url);

            if (res.ok && payload && payload.success && paymentUrl) {
                window.location.href = paymentUrl;
            } else if (payload && (payload.error_code === 'DUPLICATE_MEMBER' || payload.error_code === 'DUPLICATE_ACTIVE_MEMBER')) {
                var supportEmail = (payload && payload.support_email) || 'info@roadcover.co.za';
                var refNumber = payload && payload.reference_number;
                showFieldError(
                    (payload && payload.field) || 'identificationnr',
                    'This ID number is already registered on the membership system.'
                );
                var bannerMsg = 'This ID number is already registered as an active member. Please contact support for assistance ' + supportEmail + '.';
                if (refNumber) {
                    bannerMsg += ' Your reference number is ' + refNumber + '.';
                }
                showFormError(bannerMsg);
                updateButton();
            } else {
                var message = (payload && payload.message) || 'Something went wrong. Please try again.';
                if (payload && payload.field) {
                    showFieldError(payload.field, message);
                } else {
                    showFormError(message);
                }
                updateButton();
            }
        } catch (_) {
            showFormError('Could not reach the service. Please try again.');
            updateButton();
        }
    });

})();
</script>
				</div>
				</div>
				</div>
		</div>
						</div>
					</div>
				</div>
				</div>
		]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>ConCourt Ruling Confirms Undocumented Foreign Nationals Can Claim From the RAF</title>
		<link>https://www.roadcover.co.za/concourt-undocumented-foreign-nationals-claim-raf/</link>
		
		<dc:creator><![CDATA[Nokuthula Ngcobo]]></dc:creator>
		<pubDate>Wed, 16 Sep 2026 10:43:06 +0000</pubDate>
				<category><![CDATA[article]]></category>
		<guid isPermaLink="false">https://www.roadcover.co.za/?p=3071</guid>

					<description><![CDATA[The Constitutional Court has refused the Road Accident Fund (RAF) leave to appeal a ruling confirming that undocumented foreign nationals are not automatically excluded from claiming compensation under the RAF Act. The decision means that immigration status, on its own, does not prevent a person from lodging a qualifying RAF claim after being injured in a road accident.]]></description>
			<style id="elementor-post-3071">.elementor-3071 .elementor-element.elementor-element-284bc53d{--display:flex;--padding-top:220px;--padding-bottom:0px;--padding-left:0112px;--padding-right:0112px;}.elementor-3071 .elementor-element.elementor-element-8f27e8c{--display:flex;--flex-direction:row;--container-widget-width:initial;--container-widget-height:100%;--container-widget-flex-grow:1;--container-widget-align-self:stretch;--flex-wrap-mobile:wrap;--padding-top:0px;--padding-bottom:0px;--padding-left:0px;--padding-right:0px;}.elementor-3071 .elementor-element.elementor-element-4fc6005e{--display:flex;--flex-direction:row;--container-widget-width:calc( ( 1 - var( --container-widget-flex-grow ) ) * 100% );--container-widget-height:100%;--container-widget-flex-grow:1;--container-widget-align-self:stretch;--flex-wrap-mobile:wrap;--align-items:center;--padding-top:0px;--padding-bottom:0px;--padding-left:0px;--padding-right:0px;}.elementor-widget-text-editor{font-family:var( --e-global-typography-text-font-family ), Sans-serif;font-weight:var( --e-global-typography-text-font-weight );color:var( --e-global-color-text );}.elementor-widget-text-editor.elementor-drop-cap-view-stacked .elementor-drop-cap{background-color:var( --e-global-color-primary );}.elementor-widget-text-editor.elementor-drop-cap-view-framed .elementor-drop-cap, .elementor-widget-text-editor.elementor-drop-cap-view-default .elementor-drop-cap{color:var( --e-global-color-primary );border-color:var( --e-global-color-primary );}.elementor-3071 .elementor-element.elementor-element-439d87e3{font-family:"Raleway", Sans-serif;font-size:14px;font-weight:600;color:#556DDD;}.elementor-widget-button .elementor-button{background-color:var( --e-global-color-accent );font-family:var( --e-global-typography-accent-font-family ), Sans-serif;font-weight:var( --e-global-typography-accent-font-weight );}.elementor-3071 .elementor-element.elementor-element-79c0cb1e .elementor-button{background-color:#556DDD1A;font-family:"Raleway", Sans-serif;font-size:12px;font-weight:700;text-transform:uppercase;fill:#2A45AC;color:#2A45AC;border-radius:999px 999px 999px 999px;}.elementor-3071 .elementor-element.elementor-element-2c479ef5{--display:flex;--padding-top:0px;--padding-bottom:0px;--padding-left:0px;--padding-right:0px;}.elementor-widget-theme-post-title .elementor-heading-title{font-family:var( --e-global-typography-primary-font-family ), Sans-serif;font-weight:var( --e-global-typography-primary-font-weight );color:var( --e-global-color-primary );}.elementor-3071 .elementor-element.elementor-element-3f65ce7c .elementor-heading-title{font-family:"Raleway", Sans-serif;font-size:3.5vw;font-weight:800;}.elementor-3071 .elementor-element.elementor-element-592a9159{--display:flex;--flex-direction:row;--container-widget-width:calc( ( 1 - var( --container-widget-flex-grow ) ) * 100% );--container-widget-height:100%;--container-widget-flex-grow:1;--container-widget-align-self:stretch;--flex-wrap-mobile:wrap;--align-items:center;--padding-top:0px;--padding-bottom:0px;--padding-left:0px;--padding-right:0px;}.elementor-widget-divider{--divider-color:var( --e-global-color-secondary );}.elementor-widget-divider .elementor-divider__text{color:var( --e-global-color-secondary );font-family:var( --e-global-typography-secondary-font-family ), Sans-serif;font-weight:var( --e-global-typography-secondary-font-weight );}.elementor-widget-divider.elementor-view-stacked .elementor-icon{background-color:var( --e-global-color-secondary );}.elementor-widget-divider.elementor-view-framed .elementor-icon, .elementor-widget-divider.elementor-view-default .elementor-icon{color:var( --e-global-color-secondary );border-color:var( --e-global-color-secondary );}.elementor-widget-divider.elementor-view-framed .elementor-icon, .elementor-widget-divider.elementor-view-default .elementor-icon svg{fill:var( --e-global-color-secondary );}.elementor-3071 .elementor-element.elementor-element-76fa69dc{--divider-border-style:solid;--divider-color:#556DDD1A;--divider-border-width:2px;width:var( --container-widget-width, 28px );max-width:28px;--container-widget-width:28px;--container-widget-flex-grow:0;}.elementor-3071 .elementor-element.elementor-element-76fa69dc .elementor-divider-separator{width:28px;}.elementor-3071 .elementor-element.elementor-element-76fa69dc .elementor-divider{padding-block-start:15px;padding-block-end:15px;}.elementor-3071 .elementor-element.elementor-element-2fb02733{font-family:"Raleway", Sans-serif;font-size:14px;font-weight:600;color:#2A45AC;}.elementor-3071 .elementor-element.elementor-element-63a9f505{--display:flex;--padding-top:50px;--padding-bottom:0px;--padding-left:0px;--padding-right:0px;}.elementor-widget-theme-post-featured-image .widget-image-caption{color:var( --e-global-color-text );font-family:var( --e-global-typography-text-font-family ), Sans-serif;font-weight:var( --e-global-typography-text-font-weight );}.elementor-3071 .elementor-element.elementor-element-5ca01db9 img{border-radius:30px 30px 30px 30px;}.elementor-3071 .elementor-element.elementor-element-1ea2099a{--display:flex;--gap:40px 40px;--row-gap:40px;--column-gap:40px;--padding-top:50px;--padding-bottom:080px;--padding-left:0px;--padding-right:0px;}.elementor-3071 .elementor-element.elementor-element-60870258{font-family:"Raleway", Sans-serif;font-size:18px;font-weight:400;color:#2B2B2B;}.elementor-3071 .elementor-element.elementor-element-4a58513{--display:flex;border-style:solid;--border-style:solid;border-width:0px 0px 0px 4px;--border-top-width:0px;--border-right-width:0px;--border-bottom-width:0px;--border-left-width:4px;border-color:#556DDD;--border-color:#556DDD;--border-radius:0px 0px 0px 0px;--padding-top:0px;--padding-bottom:0px;--padding-left:20px;--padding-right:0px;}.elementor-3071 .elementor-element.elementor-element-31132a8e{font-family:"Raleway", Sans-serif;font-size:20px;font-weight:600;color:#2A45AC;}.elementor-3071 .elementor-element.elementor-element-279ee65d{font-family:"Raleway", Sans-serif;font-size:18px;font-weight:400;color:#2B2B2B;}.elementor-widget-heading .elementor-heading-title{font-family:var( --e-global-typography-primary-font-family ), Sans-serif;font-weight:var( --e-global-typography-primary-font-weight );color:var( --e-global-color-primary );}.elementor-3071 .elementor-element.elementor-element-15022c8e{padding:20px 0px 0px 0px;}.elementor-3071 .elementor-element.elementor-element-15022c8e .elementor-heading-title{font-family:"Raleway", Sans-serif;font-size:24px;font-weight:700;color:#2A45AC;}.elementor-3071 .elementor-element.elementor-element-6576ed97{font-family:"Raleway", Sans-serif;font-size:18px;font-weight:400;color:#2B2B2B;}.elementor-3071 .elementor-element.elementor-element-55702a8{font-family:"Raleway", Sans-serif;font-size:18px;font-weight:400;color:#2B2B2B;}.elementor-3071 .elementor-element.elementor-element-3e973a6{--display:flex;--gap:40px 40px;--row-gap:40px;--column-gap:40px;--padding-top:50px;--padding-bottom:080px;--padding-left:0px;--padding-right:0px;}.elementor-3071 .elementor-element.elementor-element-a85a643{font-family:"Raleway", Sans-serif;font-size:18px;font-weight:400;color:#2B2B2B;}.elementor-3071 .elementor-element.elementor-element-a52291b{--display:flex;--padding-top:0px;--padding-bottom:0px;--padding-left:0px;--padding-right:0px;}@media(max-width:1023px){.elementor-3071 .elementor-element.elementor-element-284bc53d{--padding-top:100px;--padding-bottom:0px;--padding-left:030px;--padding-right:30px;}.elementor-3071 .elementor-element.elementor-element-3f65ce7c .elementor-heading-title{font-size:32px;}.elementor-3071 .elementor-element.elementor-element-592a9159{--gap:10px 10px;--row-gap:10px;--column-gap:10px;}.elementor-3071 .elementor-element.elementor-element-63a9f505{--padding-top:0px;--padding-bottom:0px;--padding-left:10px;--padding-right:010px;}.elementor-3071 .elementor-element.elementor-element-5ca01db9{padding:30px 0px 0px 0px;}.elementor-3071 .elementor-element.elementor-element-1ea2099a{--gap:20px 20px;--row-gap:20px;--column-gap:20px;--padding-top:50px;--padding-bottom:80px;--padding-left:020px;--padding-right:20px;}.elementor-3071 .elementor-element.elementor-element-60870258{font-size:16px;}.elementor-3071 .elementor-element.elementor-element-31132a8e{font-size:17px;}.elementor-3071 .elementor-element.elementor-element-279ee65d{font-size:16px;}.elementor-3071 .elementor-element.elementor-element-15022c8e .elementor-heading-title{font-size:20px;}.elementor-3071 .elementor-element.elementor-element-3e973a6{--gap:20px 20px;--row-gap:20px;--column-gap:20px;--padding-top:50px;--padding-bottom:80px;--padding-left:020px;--padding-right:20px;}.elementor-3071 .elementor-element.elementor-element-a85a643{font-size:16px;}}@media(min-width:1024px){.elementor-3071 .elementor-element.elementor-element-284bc53d{--content-width:900px;}.elementor-3071 .elementor-element.elementor-element-63a9f505{--content-width:900px;}.elementor-3071 .elementor-element.elementor-element-1ea2099a{--content-width:760px;}.elementor-3071 .elementor-element.elementor-element-3e973a6{--content-width:760px;}}/* Start custom CSS for theme-post-featured-image, class: .elementor-element-5ca01db9 */@media (max-width: 768px) {
  .elementor-3071 .elementor-element.elementor-element-5ca01db9 img {
    height: 200px !important;

  }
}

.elementor-3071 .elementor-element.elementor-element-5ca01db9 img {
  width: 100%;
  height: 480px;
  object-fit: cover;
  object-position: center; /* crop from center — change to 'top' if heads get cut off */
  display: block;
}/* End custom CSS */</style>							<content:encoded><![CDATA[		<div data-elementor-type="wp-post" data-elementor-id="3071" class="elementor elementor-3071" data-elementor-post-type="post">
				<div class="elementor-element elementor-element-284bc53d e-flex e-con-boxed e-con e-parent" data-id="284bc53d" data-element_type="container" data-e-type="container">
					<div class="e-con-inner">
		<div class="elementor-element elementor-element-8f27e8c e-con-full e-flex e-con e-child" data-id="8f27e8c" data-element_type="container" data-e-type="container">
		<div class="elementor-element elementor-element-4fc6005e e-con-full e-flex e-con e-child" data-id="4fc6005e" data-element_type="container" data-e-type="container">
				<div class="elementor-element elementor-element-439d87e3 elementor-widget elementor-widget-text-editor" data-id="439d87e3" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
									<p><a style="color: #374dc5; text-decoration: none;" href="https://www.roadcover.co.za/articles/"><br />← Back to Articles<br /></a></p>								</div>
				<div class="elementor-element elementor-element-79c0cb1e elementor-widget elementor-widget-button" data-id="79c0cb1e" data-element_type="widget" data-e-type="widget" data-widget_type="button.default">
										<a class="elementor-button elementor-button-link elementor-size-sm" href="https://www.roadcover.co.za/articles/">
						<span class="elementor-button-content-wrapper">
									<span class="elementor-button-text">Road Safety &amp; Public Awareness</span>
					</span>
					</a>
								</div>
				</div>
				</div>
		<div class="elementor-element elementor-element-2c479ef5 e-con-full e-flex e-con e-child" data-id="2c479ef5" data-element_type="container" data-e-type="container">
				<div class="elementor-element elementor-element-3f65ce7c elementor-widget elementor-widget-theme-post-title elementor-page-title elementor-widget-heading" data-id="3f65ce7c" data-element_type="widget" data-e-type="widget" data-widget_type="theme-post-title.default">
					<h1 class="elementor-heading-title elementor-size-default">ConCourt Ruling Confirms Undocumented Foreign Nationals Can Claim From the RAF</h1>				</div>
				</div>
		<div class="elementor-element elementor-element-592a9159 e-con-full e-flex e-con e-child" data-id="592a9159" data-element_type="container" data-e-type="container">
				<div class="elementor-element elementor-element-76fa69dc elementor-widget__width-initial elementor-widget-divider--view-line elementor-widget elementor-widget-divider" data-id="76fa69dc" data-element_type="widget" data-e-type="widget" data-widget_type="divider.default">
							<div class="elementor-divider">
			<span class="elementor-divider-separator">
						</span>
		</div>
						</div>
				<div class="elementor-element elementor-element-2fb02733 elementor-widget elementor-widget-text-editor" data-id="2fb02733" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
									<p><!--StartFragment --><span class="cf0">Nokuthula Ngcobo</span><!--EndFragment --></p>								</div>
				</div>
					</div>
				</div>
		<div class="elementor-element elementor-element-63a9f505 e-flex e-con-boxed e-con e-parent" data-id="63a9f505" data-element_type="container" data-e-type="container">
					<div class="e-con-inner">
				<div class="elementor-element elementor-element-5ca01db9 elementor-widget elementor-widget-theme-post-featured-image elementor-widget-image" data-id="5ca01db9" data-element_type="widget" data-e-type="widget" data-widget_type="theme-post-featured-image.default">
															<img loading="lazy" decoding="async" width="800" height="450" src="https://www.roadcover.co.za/wp-content/uploads/2026/09/South-Africa-passport-1024x576.png" class="attachment-large size-large wp-image-3073" alt="ConCourt Ruling Confirms Undocumented Foreign Nationals Can Claim From the RAF" srcset="https://www.roadcover.co.za/wp-content/uploads/2026/09/South-Africa-passport-1024x576.png 1024w, https://www.roadcover.co.za/wp-content/uploads/2026/09/South-Africa-passport-300x169.png 300w, https://www.roadcover.co.za/wp-content/uploads/2026/09/South-Africa-passport-768x432.png 768w, https://www.roadcover.co.za/wp-content/uploads/2026/09/South-Africa-passport.png 1200w" sizes="(max-width: 800px) 100vw, 800px" title="ConCourt Ruling Confirms Undocumented Foreign Nationals Can Claim From the RAF 8">															</div>
					</div>
				</div>
		<div class="elementor-element elementor-element-1ea2099a e-flex e-con-boxed e-con e-parent" data-id="1ea2099a" data-element_type="container" data-e-type="container">
					<div class="e-con-inner">
				<div class="elementor-element elementor-element-60870258 elementor-widget elementor-widget-text-editor" data-id="60870258" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
									<p>The Constitutional Court has refused the Road Accident Fund (RAF) leave to appeal a ruling that allows foreign nationals who were in South Africa unlawfully at the time of a motor vehicle accident to claim compensation under the RAF Act.</p>
<p>The order, issued on 15 September 2026 in <strong>RAF v Adam Mudawo and Others</strong>, provides that the RAF’s application must be dismissed with costs because it has no reasonable prospects of success. The Constitutional Court also granted the respondents permission to file their answering affidavits late.</p>
<p>The order means that the <a href="https://www.supremecourtofappeal.org.za/index.php/component/jdownloads/summary/101-judgements-2026/4651-the-road-accident-fund-v-mudawo-and-others-case-no-1185-2024-and-the-road-accident-fund-v-lyton-and-others-case-no-1468-2024-2026-zasca-54-16-april-2026" target="_blank" rel="noopener">Supreme Court of Appeal’s April 2026 judgement</a> remains in place. The court found that section 17(1) of the RAF Act, which says the Fund must compensate “any person” for qualifying loss or damage caused by negligent driving, does not exclude people based on their immigration status.</p>								</div>
		<div class="elementor-element elementor-element-4a58513 e-con-full e-flex e-con e-child" data-id="4a58513" data-element_type="container" data-e-type="container">
				<div class="elementor-element elementor-element-31132a8e elementor-widget elementor-widget-text-editor" data-id="31132a8e" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
									<p>In simple terms, being in South Africa without the required immigration status does not, on its own, prevent a person from lodging a qualifying RAF claim after being injured in a road accident.</p>								</div>
				</div>
				<div class="elementor-element elementor-element-279ee65d elementor-widget elementor-widget-text-editor" data-id="279ee65d" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
									<p>In simple terms, being in South Africa without the required immigration status does not, on its own, prevent a person from lodging a qualifying RAF claim after being injured in a road accident.</p><p>The dispute began in 2022, when the RAF introduced a management directive requiring foreign claimants to provide proof that they were legally in South Africa when the accident happened. The <a href="https://www.saflii.org/za/cases/ZAGPPHC/2024/655" target="_blank" rel="noopener">Minister of Transport also changed the RAF 1 claim form</a> to require foreign claimants to provide documentary proof of their legal status.</p><p>The Supreme Court of Appeal (SCA) found that neither the RAF nor the Minister had the power to add this exclusion because the RAF Act itself does not make immigration status a requirement for a claimant. It held that the words “any person” must be given their ordinary, broad meaning. The court also rejected the RAF’s argument that the <a href="https://www.gov.za/documents/immigration-act" target="_blank" rel="noopener">Immigration Act</a> allowed it to exclude undocumented foreign nationals from the compensation scheme.</p><p> </p>								</div>
				<div class="elementor-element elementor-element-15022c8e elementor-widget elementor-widget-heading" data-id="15022c8e" data-element_type="widget" data-e-type="widget" data-widget_type="heading.default">
					<h3 class="elementor-heading-title elementor-size-default">The case also dealt with claims that had already been settled. In a related appeal, the SCA found that the RAF could not use the dispute over immigration status to suspend existing court orders and settlements. Once a settlement becomes an order of court, it is binding unless successfully challenged on recognised legal grounds.</h3>				</div>
				<div class="elementor-element elementor-element-6576ed97 elementor-widget elementor-widget-text-editor" data-id="6576ed97" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
									<p>The ruling does not mean every foreign national involved in a road accident automatically qualifies for compensation. The normal requirements of a RAF claim still apply. A claimant must have suffered qualifying loss or damage arising from bodily injury or death caused by the negligent driving of a motor vehicle in South Africa and the claim must comply with the RAF Act.</p>								</div>
				<div class="elementor-element elementor-element-55702a8 elementor-widget elementor-widget-text-editor" data-id="55702a8" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
									<p class="MsoNormal">The Constitutional Court’s order closes the RAF’s latest attempt to overturn the SCA’s interpretation. Any change to the position would therefore require a change to the law, rather than a new RAF directive or claim-form requirement.</p><p class="MsoNormal"> </p><p class="MsoNormal">For people dealing with the aftermath of a motor vehicle accident, the legal position can still be difficult to navigate. RoadCover manages qualifying RAF claims from start to finish, including the legal and administrative requirements involved in pursuing a claim. For members whose claims are successfully settled, 100% of the RAF settlement is paid to them, with no legal fees or expenses deducted.</p>								</div>
					</div>
				</div>
		<div class="elementor-element elementor-element-3e973a6 e-flex e-con-boxed e-con e-parent" data-id="3e973a6" data-element_type="container" data-e-type="container">
					<div class="e-con-inner">
				<div class="elementor-element elementor-element-a85a643 elementor-widget elementor-widget-text-editor" data-id="a85a643" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
									<p><strong>Disclaimer:</strong> <em>The information provided in this article was correct at the time of publication and is intended for general guidance only. It is subject to change without notice as laws, regulations and membership terms evolve. RoadCover and the Road Accident Fund operate within dynamic legal frameworks and readers should verify current requirements before making decisions or entering into agreements.</em></p>								</div>
					</div>
				</div>
		<div class="elementor-element elementor-element-a52291b e-flex e-con-boxed e-con e-parent" data-id="a52291b" data-element_type="container" data-e-type="container">
					<div class="e-con-inner">
				<div class="elementor-element elementor-element-423da0d elementor-widget elementor-widget-shortcode" data-id="423da0d" data-element_type="widget" data-e-type="widget" data-widget_type="shortcode.default">
							<div class="elementor-shortcode">		<div data-elementor-type="container" data-elementor-id="2657" class="elementor elementor-2657" data-elementor-post-type="elementor_library">
				<div class="elementor-element elementor-element-1b2aafda e-con-full e-flex e-con e-parent" data-id="1b2aafda" data-element_type="container" data-e-type="container">
				<div class="elementor-element elementor-element-4e06f177 elementor-widget elementor-widget-html" data-id="4e06f177" data-element_type="widget" data-e-type="widget" data-widget_type="html.default">
					<link href="https://fonts.googleapis.com/css2?family=Raleway:wght@400;500;600;700;800&display=swap" rel="stylesheet">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.0/css/all.min.css">

<script src="https://www.google.com/recaptcha/api.js?render=6LdwjNosAAAAAK5qrEyD0FybwyViVZOqamPK1Fnr" async defer></script>

<style>
/* ===============================================================
   RoadCover — Pricing + Onboarding Form
   All selectors scoped to #rc-pricing to avoid host-page bleed.
   PLN codes live on data-plan-code attributes of .rc-btn elements.
   ================================================================ */

#rc-pricing *, #rc-pricing *::before, #rc-pricing *::after {
    box-sizing: border-box;
}
#rc-pricing {
    font-family: 'Raleway', sans-serif;
    width: 100%;
    color: #1f2937;

    /* Plan-card palette — scoped to the embed, never :root, so the
       host page's own custom properties are left untouched. */
    --rc-blue:      #2B4FD4;
    --rc-blue-dark: #1A3399;
    --rc-gold:      #F5C842;
    --rc-gold-dark: #D4A800;
    --rc-text:      #0D1B3E;
    --rc-muted:     #6B7280;
    --rc-border:    #E4E9F8;
    --rc-success:   #16A34A;
}
.rc-wrapper {
    display: flex;
    flex-direction: column;
    gap: 48px;
}

/* ── Header ─────────────────────────────────────────────────────── */
.rc-header { text-align: center; }
.rc-header h2 {
    font-size: 30px;
    font-weight: 800;
    margin: 0 0 8px;
    color: #111827;
}
.rc-header p {
    font-size: 15px;
    color: #6b7280;
    margin: 0;
}

/* ── Single Plan Card ───────────────────────────────────────────── */
/* One responsive card serves both desktop and mobile — there is no
   longer a separate table/card pair to keep in sync. */
.rc-plan-card {
    position: relative;
    background: #fff;
    border: 1px solid var(--rc-border);
    border-radius: 18px;
    overflow: hidden;
    box-shadow: 0 10px 30px rgba(13, 27, 62, 0.08);
}

.rc-plan-header {
    position: relative;
    overflow: hidden;
    background: linear-gradient(135deg, var(--rc-blue) 0%, var(--rc-blue-dark) 100%);
    padding: 32px 28px 30px;
    text-align: center;
}
.rc-plan-header::before {
    content: '';
    position: absolute;
    width: 220px;
    height: 220px;
    right: -90px;
    top: -70px;
    border-radius: 50%;
    background: rgba(255, 255, 255, 0.08);
}
.rc-plan-header::after {
    content: '';
    position: absolute;
    width: 140px;
    height: 140px;
    left: -50px;
    bottom: -50px;
    border-radius: 50%;
    background: rgba(245, 200, 66, 0.14);
}
.rc-plan-header > * { position: relative; z-index: 2; }

.rc-plan-name {
    font-size: 11px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.1em;
    color: rgba(255, 255, 255, 0.65);
    margin-bottom: 6px;
}
.rc-plan-price {
    font-size: 44px;
    font-weight: 900;
    color: var(--rc-gold);
    line-height: 1.1;
}
.rc-plan-price-unit {
    font-size: 14px;
    font-weight: 600;
    color: rgba(255, 255, 255, 0.6);
}
.rc-plan-subprice {
    margin-top: 6px;
    font-size: 12px;
    font-weight: 600;
    color: var(--rc-gold);
    min-height: 16px;
}

.rc-plan-rows { padding: 6px 28px; }
.rc-plan-row {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    padding: 14px 0;
    border-bottom: 1px solid var(--rc-border);
}
.rc-plan-row:last-child { border-bottom: none; }
.rc-plan-row-label {
    font-size: 13.5px;
    font-weight: 600;
    color: var(--rc-text);
}
.rc-plan-row-icon {
    width: 22px;
    height: 22px;
    flex-shrink: 0;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    background: #ECFDF3;
    color: var(--rc-success);
}
.rc-plan-row-icon svg { width: 13px; height: 13px; display: block; }

.rc-plan-cta-block { padding: 20px 28px 26px; }
.rc-plan-cta-hint {
    text-align: center;
    margin-top: 10px;
    font-size: 11px;
    color: var(--rc-muted);
}

/* ── Plan Select Button (JS hook: .rc-btn) ──────────────────────── */
.rc-btn {
    width: 100%;
    padding: 13px 18px;
    border: none;
    border-radius: 10px;
    background: var(--rc-gold);
    color: var(--rc-text);
    font-family: inherit;
    font-size: 14px;
    font-weight: 800;
    letter-spacing: 0.01em;
    cursor: pointer;
    transition: background 0.15s, transform 0.1s;
}
.rc-btn:hover   { background: var(--rc-gold-dark); }
.rc-btn:active  { transform: scale(0.99); }
.rc-btn.rc-selected { background: var(--rc-gold-dark); }

/* ── Form Section ───────────────────────────────────────────────── */
#rc-form-section { display: none; }
#rc-form-section.rc-visible {
    display: block;
    animation: rc-fadein 0.22s ease;
}
@keyframes rc-fadein {
    from { opacity: 0; transform: translateY(10px); }
    to   { opacity: 1; transform: translateY(0); }
}

.rc-form-inner {
    display: flex;
    flex-direction: column;
    gap: 22px;
    background: linear-gradient(135deg, #2A45AC, #1f358a);
    border-radius: 12px;
    padding: 40px;
}

.rc-selected-badge {
    display: inline-block;
    background: rgba(255, 255, 255, 0.15);
    color: #FFD84D;
    font-size: 13px;
    font-weight: 700;
    border-radius: 6px;
    padding: 7px 13px;
}

.rc-form-title {
    font-size: 20px;
    font-weight: 800;
    color: #fff;
    margin: 0;
}

/* Field grid — first two fields sit side-by-side */
.rc-field-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 14px;
}
.rc-field-full { grid-column: 1 / -1; }

.rc-field {
    display: flex;
    flex-direction: column;
    gap: 5px;
}
.rc-field-label {
    font-size: 11px;
    font-weight: 700;
    color: rgba(255, 255, 255, 0.7);
    text-transform: uppercase;
    letter-spacing: 0.05em;
}

/* Icon floats over the input; no separate column, no column border */
.rc-input-row {
    position: relative;
    border: 1px solid #6f7ec1;
    border-radius: 8px;
    background: #3d54ac;
    transition: border-color 0.15s, box-shadow 0.15s;
}
.rc-input-row:focus-within {
    border-color: #a0aee0;
    box-shadow: 0 0 0 3px rgba(111, 126, 193, 0.3);
}
.rc-input-row:has(.invalid) { border-color: #FF3B30; }
.rc-input-row:has(.invalid):focus-within {
    box-shadow: 0 0 0 3px rgba(129, 12, 12, 0.25);
}

.rc-input-icon {
    position: absolute;
    left: 14px;
    top: 50%;
    transform: translateY(-50%);
    color: rgba(255, 255, 255, 0.55);
    font-size: 14px;
    pointer-events: none;
}

.rc-input {
    display: block;
    width: 100%;
    padding: 11px 14px 11px 44px !important;
    border: 0;
    box-shadow: none;
    border-radius: 8px;
    background: transparent;
    font-family: inherit;
    font-size: 14px;
    color: #fff;
    -webkit-appearance: none;
    appearance: none;
    outline: none;
}
#rc-pricing .rc-input::placeholder { color: rgb(248, 248, 248); }
.rc-input.invalid { /* border shown via :has on .rc-input-row */ }

/* Native select chevron */
select.rc-input {
    padding-right: 36px;
    background-color: #3d54ac;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='7' viewBox='0 0 12 7'%3E%3Cpolyline points='1,1 6,6 11,1' fill='none' stroke='%23a0aee0' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
    background-repeat: no-repeat;
    background-position: right 12px center;
    cursor: pointer;
    color: #fff;
}

.rc-field-error {
    font-size: 12px;
    color: #FF3B30;
    margin: 0;
    line-height: 1.4;
}

/* T&C checkbox */
.rc-terms {
    display: flex;
    align-items: center;
    gap: 10px;
    font-size: 14px;
    color: rgba(255, 255, 255, 0.85);
    cursor: pointer;
    user-select: none;
}
.rc-terms input[type="checkbox"] {
    width: 17px;
    height: 17px;
    cursor: pointer;
    flex-shrink: 0;
    accent-color: #FFD84D;
}
.rc-terms.invalid { color: #FF3B30; }
.rc-terms.invalid input[type="checkbox"] {
    outline: 2px solid #FF3B30;
    outline-offset: 2px;
    border-radius: 2px;
}

.rc-submit:disabled,
.rc-submit:disabled:hover {
    background: #FFD84D; /* same as default */
    cursor: not-allowed;
}
/* Submit button */
.rc-submit {
    width: 100%;
    padding: 14px 20px;
    border: none;
    border-radius: 10px;
    background: #FFD84D;
    color: #1f358a;
    font-family: inherit;
    font-size: 15px;
    font-weight: 700;
    cursor: pointer;
    transition: background 0.15s, transform 0.1s;
    letter-spacing: 0.01em;
}
.rc-submit:hover:not([disabled]) { background: #f5cc35; }
.rc-submit:active:not([disabled]) { transform: scale(0.99); }
.rc-submit[disabled] { opacity: 0.5; cursor: not-allowed; }

.rc-form-error {
    font-size: 13px;
    color: #FF3B30;
    margin: 0;
    line-height: 1.5;
}

.rc-recaptcha-notice {
    font-size: 11px;
    color: rgba(255, 255, 255, 0.45);
    margin: 0;
    line-height: 1.5;
    text-align: center;
}
.rc-recaptcha-notice a {
    color: rgba(255, 255, 255, 0.55);
    text-decoration: underline;
}

/* ── Billing Toggle ─────────────────────────────────────────────── */
/* Sits on the dark gradient header, so it is styled for a dark ground. */
.rc-billing-toggle {
    display: inline-flex;
    background: rgba(255, 255, 255, 0.12);
    border: 1.5px solid rgba(255, 255, 255, 0.2);
    border-radius: 999px;
    padding: 3px;
    gap: 2px;
    margin-bottom: 20px;
}
.rc-toggle-opt {
    padding: 7px 20px;
    border: none;
    border-radius: 999px;
    background: transparent;
    color: rgba(255, 255, 255, 0.75);
    font-family: inherit;
    font-size: 12.5px;
    font-weight: 700;
    cursor: pointer;
    transition: background 0.2s ease, color 0.2s ease;
    white-space: nowrap;
    line-height: 1;
}
.rc-toggle-opt:hover:not(.rc-toggle-active) {
    background: rgba(255, 255, 255, 0.08);
}
.rc-toggle-opt.rc-toggle-active {
    background: var(--rc-gold);
    color: var(--rc-text);
}

.rc-save-badge {
    display: inline-block;
    margin-left: 6px;
    padding: 1px 6px;
    border-radius: 999px;
    font-size: 9.5px;
    font-weight: 800;
    color: rgba(255, 255, 255, 0.85);
    background: rgba(255, 255, 255, 0.16);
}
/* On the gold active pill, white-on-gold is unreadable — invert it. */
.rc-toggle-active .rc-save-badge {
    color: var(--rc-text);
    background: rgba(13, 27, 62, 0.12);
}

/* ── Responsive ─────────────────────────────────────────────────── */
@media (max-width: 700px) {
    #rc-pricing     { padding: 0px 0px; }
    .rc-wrapper     { gap: 32px; }
    .rc-plan-header { padding: 28px 20px 26px; }
    .rc-plan-price  { font-size: 38px; }
    .rc-plan-rows   { padding: 6px 20px; }
    .rc-plan-cta-block { padding: 18px 20px 22px; }
    .rc-field-grid  { grid-template-columns: 1fr; }
    .rc-field-full  { grid-column: 1; }
    .rc-form-inner  { padding: 24px 20px; }
    .rc-header h2   { font-size: 24px; }
}
</style>

<!-- ================================================================
     PRICING TABLE + ONBOARDING FORM
     ================================================================ -->
<div id="rc-pricing">
  <div class="rc-wrapper">

    <!-- Single plan card — one responsive card for desktop and mobile -->
    <div class="rc-plan-card" data-plan-key="RoadCover">

      <div class="rc-plan-header">
        <div class="rc-billing-toggle" role="group" aria-label="Billing period">
          <button type="button" class="rc-toggle-opt rc-toggle-active" data-billing="monthly">Monthly</button>
          <button type="button" class="rc-toggle-opt" data-billing="annual">Annual <span class="rc-save-badge">Save 6%</span></button>
        </div>

        <div class="rc-plan-name">RoadCover</div>
        <div class="rc-plan-price"><span class="rc-plan-price-val">R49</span><span class="rc-plan-price-unit">/mo</span></div>
        <div class="rc-plan-subprice" hidden></div>
      </div>

      <div class="rc-plan-rows">
        <div class="rc-plan-row">
          <span class="rc-plan-row-label">RAF Claim Support</span>
          <span class="rc-plan-row-icon" role="img" aria-label="Included">
            <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><polyline points="20 6 9 17 4 12"></polyline></svg>
          </span>
        </div>
        <div class="rc-plan-row">
          <span class="rc-plan-row-label">Legal Expertise</span>
          <span class="rc-plan-row-icon" role="img" aria-label="Included">
            <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><polyline points="20 6 9 17 4 12"></polyline></svg>
          </span>
        </div>
      </div>

      <div class="rc-plan-cta-block">
        <button class="rc-btn"
                data-plan="RoadCover"
                data-plan-code="RC49"
                data-price="49.00 /Month">Select RoadCover &#8594;</button>
        <div class="rc-plan-cta-hint">No fees. 100% of your payout.</div>
      </div>

    </div><!-- /.rc-plan-card -->

    <!-- Form: hidden until a plan is selected -->
    <div id="rc-form-section">
      <form id="roadcover-form" novalidate>

        <!-- product_code is set programmatically on plan button click -->
        <input type="hidden" name="product_code" id="cover-input">
        <input type="hidden" name="form_id"   value="9a3d492">
        <input type="hidden" name="form_name" value="Get RoadCover">

        <div class="rc-form-inner">

          <div id="selectedPlan" class="rc-selected-badge">Selected: &#8212;</div>
          <p class="rc-form-title">Enter your details</p>

          <div class="rc-field-grid">

            <!-- Row 1: name -->
            <div class="rc-field">
              <label class="rc-field-label" for="rc-first-name">First name *</label>
              <div class="rc-input-row">
                <i class="fa-solid fa-user rc-input-icon" aria-hidden="true"></i>
                <input class="rc-input" type="text" id="rc-first-name"
                       name="first_name" required maxlength="60" placeholder="First name">
              </div>
            </div>

            <div class="rc-field">
              <label class="rc-field-label" for="rc-last-name">Last name *</label>
              <div class="rc-input-row">
                <i class="fa-solid fa-user rc-input-icon" aria-hidden="true"></i>
                <input class="rc-input" type="text" id="rc-last-name"
                       name="last_name" required maxlength="60" placeholder="Last name">
              </div>
            </div>

            <!-- Row 2: identity -->
            <div class="rc-field">
              <label class="rc-field-label" for="rc-id">ID number *</label>
              <div class="rc-input-row">
                <i class="fa-solid fa-id-card rc-input-icon" aria-hidden="true"></i>
                <input class="rc-input" type="text" id="rc-id"
                       name="identificationnr" required pattern="[0-9]{13}"
                       inputmode="numeric" maxlength="13"
                       placeholder="13-digit SA ID number">
              </div>
            </div>

            <div class="rc-field">
              <label class="rc-field-label" for="rc-gender">Gender *</label>
              <div class="rc-input-row">
                <i class="fa-solid fa-venus-mars rc-input-icon" aria-hidden="true"></i>
                <select class="rc-input" id="rc-gender" name="gender" required>
                  <option value="">Select&hellip;</option>
                  <option value="1">Male</option>
                  <option value="2">Female</option>
                </select>
              </div>
            </div>

            <!-- Row 3: contact -->
            <div class="rc-field">
              <label class="rc-field-label" for="rc-email">Email *</label>
              <div class="rc-input-row">
                <i class="fa-solid fa-envelope rc-input-icon" aria-hidden="true"></i>
                <input class="rc-input" type="email" id="rc-email"
                       name="email" required maxlength="254"
                       placeholder="you@example.com">
              </div>
            </div>

            <div class="rc-field">
              <label class="rc-field-label" for="rc-mobile">Mobile *</label>
              <div class="rc-input-row">
                <i class="fa-solid fa-phone rc-input-icon" aria-hidden="true"></i>
                <input class="rc-input" type="tel" id="rc-mobile"
                       name="mobile" required inputmode="tel"
                       placeholder="0XXXXXXXXX or +27XXXXXXXXX">
              </div>
            </div>

            <!-- Row 4: optional -->
            <div class="rc-field rc-field-full">
              <label class="rc-field-label" for="rc-promo">Promo code</label>
              <div class="rc-input-row">
                <i class="fa-solid fa-tag rc-input-icon" aria-hidden="true"></i>
                <input class="rc-input" type="text" id="rc-promo"
                       name="promo_code" maxlength="32" placeholder="Optional">
              </div>
            </div>

          </div><!-- /.rc-field-grid -->

          <label class="rc-terms">
            <input type="checkbox" name="I accept the Terms and Conditions." required>
            <span>I accept the Terms and Conditions.</span>
          </label>

          <button type="submit" id="submit-btn" class="rc-submit">Continue</button>
          <p id="form-error" class="rc-form-error" hidden></p>

          <p class="rc-recaptcha-notice">This site is protected by reCAPTCHA and the Google <a href="https://policies.google.com/privacy" target="_blank" rel="noopener noreferrer">Privacy Policy</a> and <a href="https://policies.google.com/terms" target="_blank" rel="noopener noreferrer">Terms of Service</a> apply.</p>

        </div><!-- /.rc-form-inner -->
      </form>
    </div><!-- /#rc-form-section -->

  </div><!-- /.rc-wrapper -->
</div><!-- /#rc-pricing -->

<script>
(function () {
    var form           = document.getElementById('roadcover-form');
    var errEl          = document.getElementById('form-error');
    var submitBtn      = document.getElementById('submit-btn');
    var coverInput     = document.getElementById('cover-input');
    var formSection    = document.getElementById('rc-form-section');
    var selectedPlanEl = document.getElementById('selectedPlan');
    var pricing        = document.getElementById('rc-pricing');

    var currentPrice   = '';
    var isAnnual       = false;
    var currentPlanBtn = null;

    // ── Plan + billing data ───────────────────────────────────────────────────
    var planData = {
        'RoadCover': {
            monthly: { priceVal: 'R49', unit: '/mo', code: 'RC49',         priceStr: '49.00 /Month',  subprice: '' },
            annual:  { priceVal: 'R550', unit: '/yr', code: 'PRD-CB838AEF', priceStr: '550.00 /Year', subprice: '~R46/mo' }
        }
    };

    // ── Apply billing mode to all price displays and button codes ─────────────
    function applyBilling() {
        var mode = isAnnual ? 'annual' : 'monthly';

        // Plan card price display
        pricing.querySelectorAll('.rc-plan-card[data-plan-key]').forEach(function (card) {
            var d = planData[card.dataset.planKey][mode];
            card.querySelector('.rc-plan-price-val').textContent  = d.priceVal;
            card.querySelector('.rc-plan-price-unit').textContent = d.unit;
            var sub = card.querySelector('.rc-plan-subprice');
            sub.textContent = d.subprice;
            sub.hidden      = !d.subprice;
        });

        // Update data-plan-code on all buttons so selection highlighting still works
        pricing.querySelectorAll('.rc-btn').forEach(function (btn) {
            var key = btn.dataset.plan;
            if (!planData[key]) return;
            btn.dataset.planCode = planData[key][mode].code;
            btn.dataset.price    = planData[key][mode].priceStr;
        });

        // If a plan was already selected, refresh the hidden input + badge + button label
        if (currentPlanBtn) {
            var key     = currentPlanBtn.dataset.plan;
            var d       = planData[key][mode];
            var billing = isAnnual ? 'Annual' : 'Monthly';
            coverInput.value           = d.code;
            currentPrice               = d.priceStr;
            selectedPlanEl.textContent = 'Selected: ' + key + ' (' + billing + ')';
            updateButton();
        }
    }

    // ── Helpers (mirrored in n8n Code node — keep in sync) ───────────────────

    function clean(v) {
        if (v === null || v === undefined) return '';
        var s = String(v);
        s = s.replace(/[\x00-\x08\x0B\x0C\x0E-\x1F\x7F]/g, '');
        s = s.replace(/<script\b[^>]*>[\s\S]*?<\/script\s*>/gi, '');
        s = s.replace(/<\/?[a-zA-Z][^>]*>/g, '');
        s = s.replace(/javascript\s*:/gi, '');
        s = s.replace(/\s+/g, ' ').trim();
        return s;
    }

    function luhnValid(idStr) {
        var sum = 0;
        for (var i = 0; i < 13; i++) {
            var n = parseInt(idStr.charAt(i), 10);
            if (i % 2 === 1) { n *= 2; if (n > 9) n -= 9; }
            sum += n;
        }
        return sum % 10 === 0;
    }

    // Returns { ok: true } or { ok: false, field, message }
    function validate(data) {
        var required = {
            product_code:       'Please select a cover plan.',
            first_name:         'First name is required.',
            last_name:          'Last name is required.',
            email:              'Email is required.',
            mobile:             'Mobile number is required.',
            identificationnr:   'ID number is required.',
            gender:             'Please select your gender.'
        };
        for (var k in required) {
            if (!data[k]) return { ok: false, field: k, message: required[k] };
        }

        if (data.first_name.length > 60)
            return { ok: false, field: 'first_name', message: 'First name is too long (max 60).' };
        if (data.last_name.length > 60)
            return { ok: false, field: 'last_name', message: 'Last name is too long (max 60).' };

        var emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
        if (!emailRegex.test(data.email))
            return { ok: false, field: 'email', message: 'Please enter a valid email address.' };
        if (data.email.length > 254)
            return { ok: false, field: 'email', message: 'Email is too long.' };

        var mobileRegex = /^(\+27|0)[0-9]{9}$/;
        if (!mobileRegex.test(data.mobile))
            return { ok: false, field: 'mobile', message: 'Mobile must be 10 digits starting with 0, or +27 followed by 9 digits.' };

        var genderNum = Number(data.gender);
        if (genderNum !== 1 && genderNum !== 2)
            return { ok: false, field: 'gender', message: 'Please select your gender.' };

        if (!/^[0-9]{13}$/.test(data.identificationnr))
            return { ok: false, field: 'identificationnr', message: 'ID number must be exactly 13 digits.' };

        var yy        = parseInt(data.identificationnr.substring(0, 2), 10);
        var mm        = parseInt(data.identificationnr.substring(2, 4), 10);
        var dd        = parseInt(data.identificationnr.substring(4, 6), 10);
        var now       = new Date();
        var currentYY = now.getFullYear() % 100;
        var fullYear  = (yy > currentYY) ? (1900 + yy) : (2000 + yy);
        var dob       = new Date(fullYear, mm - 1, dd);
        var dobValid  =
            dob.getFullYear() === fullYear &&
            dob.getMonth()    === (mm - 1) &&
            dob.getDate()     === dd       &&
            dob <= now;
        if (!dobValid)
            return { ok: false, field: 'identificationnr', message: 'The first 6 digits of your ID number are not a valid date of birth.' };

        var genderDigits = parseInt(data.identificationnr.substring(6, 10), 10);
        var idGender     = genderDigits >= 5000 ? 1 : 2;
        if (idGender !== genderNum) {
            var expected = idGender === 1 ? 'Male' : 'Female';
            return { ok: false, field: 'identificationnr',
                     message: 'The selected gender does not match your ID number (ID indicates ' + expected + ').' };
        }

        if (!luhnValid(data.identificationnr))
            return { ok: false, field: 'identificationnr', message: 'ID number checksum is invalid. Please check the number.' };

        return { ok: true };
    }

    // ── UI helpers ────────────────────────────────────────────────────────────

    function clearFieldErrors() {
        form.querySelectorAll('.invalid').forEach(function (el) { el.classList.remove('invalid'); });
        form.querySelectorAll('.rc-field-error').forEach(function (el) { el.remove(); });
    }

    function showFieldError(fieldName, message) {
        // product_code is a hidden input — surface as a form-level error
        if (fieldName === 'product_code') {
            showFormError(message);
            return;
        }
        var input = form.querySelector('[name="' + fieldName + '"]');
        if (!input) return;
        input.classList.add('invalid');
        var field = input.closest('.rc-field') || input.parentElement;
        var span  = field.querySelector('.rc-field-error');
        if (!span) {
            span = document.createElement('span');
            span.className = 'rc-field-error';
            field.appendChild(span);
        }
        span.textContent = message;
        input.focus();
    }

    function showFormError(message) {
        errEl.textContent = message;
        errEl.hidden = false;
    }

    function hideFormError() {
        errEl.hidden = true;
        errEl.textContent = '';
    }

    function updateButton() {
        submitBtn.textContent = currentPrice ? ('Continue • R' + currentPrice) : 'Continue';
        submitBtn.disabled    = false;
    }

    // ── Collect & sanitise ────────────────────────────────────────────────────

    function collectData() {
        var fd = new FormData(form);
        return {
            product_code:       clean(fd.get('product_code')),
            first_name:         clean(fd.get('first_name')),
            last_name:          clean(fd.get('last_name')),
            email:              clean(fd.get('email')).toLowerCase(),
            mobile:             clean(fd.get('mobile')),
            identificationnr:   clean(fd.get('identificationnr')),
            gender:             clean(fd.get('gender')),
            promo_code:         clean(fd.get('promo_code'))
        };
    }

    // ── Billing toggle ────────────────────────────────────────────────────────

    pricing.querySelectorAll('.rc-toggle-opt').forEach(function (btn) {
        btn.addEventListener('click', function () {
            if (btn.dataset.billing === (isAnnual ? 'annual' : 'monthly')) return;
            isAnnual = !isAnnual;
            pricing.querySelectorAll('.rc-toggle-opt').forEach(function (b) {
                b.classList.toggle('rc-toggle-active', b.dataset.billing === (isAnnual ? 'annual' : 'monthly'));
            });
            applyBilling();
        });
    });

    // ── Plan selection ────────────────────────────────────────────────────────

    pricing.querySelectorAll('.rc-btn').forEach(function (planBtn) {
        planBtn.addEventListener('click', function () {
            var code    = planBtn.dataset.planCode;
            var plan    = planBtn.dataset.plan;
            var price   = planBtn.dataset.price || '';
            var billing = isAnnual ? 'Annual' : 'Monthly';

            currentPlanBtn = planBtn;

            // Highlight every button sharing the same plan code (desktop + mobile pair)
            pricing.querySelectorAll('.rc-btn').forEach(function (b) {
                b.classList.toggle('rc-selected', b.dataset.planCode === code);
            });

            coverInput.value           = code;
            currentPrice               = price;
            selectedPlanEl.textContent = 'Selected: ' + plan + ' (' + billing + ')';
            updateButton();

            formSection.classList.add('rc-visible');
            formSection.scrollIntoView({ behavior: 'smooth', block: 'nearest' });

            clearFieldErrors();
            hideFormError();
        });
    });

    // ── Initialise billing display ────────────────────────────────────────────
    applyBilling();

    // ── Clear errors on edit ──────────────────────────────────────────────────

    form.addEventListener('input', function (e) {
        if (e.target.classList.contains('invalid')) {
            e.target.classList.remove('invalid');
            var f = e.target.closest('.rc-field');
            if (f) { var s = f.querySelector('.rc-field-error'); if (s) s.remove(); }
        }
        hideFormError();
    });

    form.addEventListener('change', function (e) {
        if (e.target.classList.contains('invalid')) {
            e.target.classList.remove('invalid');
            var f = e.target.closest('.rc-field');
            if (f) { var s = f.querySelector('.rc-field-error'); if (s) s.remove(); }
        }
        if (e.target.type === 'checkbox' && e.target.checked) {
            var label = e.target.closest('label.rc-terms');
            if (label) label.classList.remove('invalid');
            hideFormError();
        }
    });

    // ── Form submit ───────────────────────────────────────────────────────────

    form.addEventListener('submit', async function (e) {
        e.preventDefault();
        hideFormError();
        clearFieldErrors();

        var data   = collectData();
        var result = validate(data);
        if (!result.ok) {
            showFieldError(result.field, result.message);
            return;
        }

        var termsBox = form.querySelector('input[type="checkbox"][required]');
        if (termsBox && !termsBox.checked) {
            var termsLabel = termsBox.closest('label.rc-terms');
            if (termsLabel) termsLabel.classList.add('invalid');
            termsBox.focus();
            showFormError('Please accept the Terms and Conditions to continue.');
            return;
        }

        submitBtn.disabled    = true;
        submitBtn.textContent = 'Processing…';

        // ── reCAPTCHA v3 — must complete before the network request ──────────
        var recaptchaToken = '';
        try {
            recaptchaToken = await new Promise(function (resolve, reject) {
                if (typeof grecaptcha === 'undefined') { reject(new Error('not loaded')); return; }
                grecaptcha.ready(function () {
                    grecaptcha.execute('6LdwjNosAAAAAK5qrEyD0FybwyViVZOqamPK1Fnr', { action: 'submit' })
                        .then(resolve).catch(reject);
                });
            });
        } catch (_) {
            showFormError('Security check could not complete. Please disable any ad blockers and try again.');
            updateButton();
            return;
        }

        try {
            // Send sanitised data so the backend receives cleaned values
            var params = new URLSearchParams();
            for (var k in data) params.append(k, data[k]);
            params.append('form_id',   form.querySelector('[name="form_id"]').value   || '');
            params.append('form_name', form.querySelector('[name="form_name"]').value || '');
            params.append('I accept the Terms and Conditions.', 'on');
            params.append('recaptcha_token', recaptchaToken);

            var res     = await fetch('https://n8n.roadcover.co.za/webhook/form', {
                method:  'POST',
                headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
                body:    params.toString()
            });
            var json    = await res.json();
            var payload = Array.isArray(json) ? json[0] : json;
            var paymentUrl = (payload && payload.data && payload.data.payment_url)
                           || (payload && payload.payment_url);

            if (res.ok && payload && payload.success && paymentUrl) {
                window.location.href = paymentUrl;
            } else if (payload && (payload.error_code === 'DUPLICATE_MEMBER' || payload.error_code === 'DUPLICATE_ACTIVE_MEMBER')) {
                var supportEmail = (payload && payload.support_email) || 'info@roadcover.co.za';
                var refNumber = payload && payload.reference_number;
                showFieldError(
                    (payload && payload.field) || 'identificationnr',
                    'This ID number is already registered on the membership system.'
                );
                var bannerMsg = 'This ID number is already registered as an active member. Please contact support for assistance ' + supportEmail + '.';
                if (refNumber) {
                    bannerMsg += ' Your reference number is ' + refNumber + '.';
                }
                showFormError(bannerMsg);
                updateButton();
            } else {
                var message = (payload && payload.message) || 'Something went wrong. Please try again.';
                if (payload && payload.field) {
                    showFieldError(payload.field, message);
                } else {
                    showFormError(message);
                }
                updateButton();
            }
        } catch (_) {
            showFormError('Could not reach the service. Please try again.');
            updateButton();
        }
    });

})();
</script>
				</div>
				</div>
				</div>
		</div>
						</div>
					</div>
				</div>
				</div>
		]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>The 25% RAF Fee Is a Ceiling and Not an Automatic Deduction</title>
		<link>https://www.roadcover.co.za/25-raf-fee-is-a-ceiling-automatic-deduction/</link>
		
		<dc:creator><![CDATA[Nokuthula Ngcobo]]></dc:creator>
		<pubDate>Tue, 15 Sep 2026 08:01:15 +0000</pubDate>
				<category><![CDATA[article]]></category>
		<guid isPermaLink="false">https://www.roadcover.co.za/?p=3023</guid>

					<description><![CDATA[Many South Africans believe that if they appoint an attorney to handle a Road Accident Fund (RAF) claim, the attorney is automatically entitled to take 25% of the settlement. That is not correct.]]></description>
			<style id="elementor-post-3023">.elementor-3023 .elementor-element.elementor-element-3de1c5be{--display:flex;--padding-top:220px;--padding-bottom:0px;--padding-left:0112px;--padding-right:0112px;}.elementor-3023 .elementor-element.elementor-element-4e708d90{--display:flex;--flex-direction:row;--container-widget-width:initial;--container-widget-height:100%;--container-widget-flex-grow:1;--container-widget-align-self:stretch;--flex-wrap-mobile:wrap;--padding-top:0px;--padding-bottom:0px;--padding-left:0px;--padding-right:0px;}.elementor-3023 .elementor-element.elementor-element-6b194142{--display:flex;--flex-direction:row;--container-widget-width:calc( ( 1 - var( --container-widget-flex-grow ) ) * 100% );--container-widget-height:100%;--container-widget-flex-grow:1;--container-widget-align-self:stretch;--flex-wrap-mobile:wrap;--align-items:center;--padding-top:0px;--padding-bottom:0px;--padding-left:0px;--padding-right:0px;}.elementor-widget-text-editor{font-family:var( --e-global-typography-text-font-family ), Sans-serif;font-weight:var( --e-global-typography-text-font-weight );color:var( --e-global-color-text );}.elementor-widget-text-editor.elementor-drop-cap-view-stacked .elementor-drop-cap{background-color:var( --e-global-color-primary );}.elementor-widget-text-editor.elementor-drop-cap-view-framed .elementor-drop-cap, .elementor-widget-text-editor.elementor-drop-cap-view-default .elementor-drop-cap{color:var( --e-global-color-primary );border-color:var( --e-global-color-primary );}.elementor-3023 .elementor-element.elementor-element-70ecda29{font-family:"Raleway", Sans-serif;font-size:14px;font-weight:600;color:#556DDD;}.elementor-widget-button .elementor-button{background-color:var( --e-global-color-accent );font-family:var( --e-global-typography-accent-font-family ), Sans-serif;font-weight:var( --e-global-typography-accent-font-weight );}.elementor-3023 .elementor-element.elementor-element-2654c810 .elementor-button{background-color:#556DDD1A;font-family:"Raleway", Sans-serif;font-size:12px;font-weight:700;text-transform:uppercase;fill:#2A45AC;color:#2A45AC;border-radius:999px 999px 999px 999px;}.elementor-3023 .elementor-element.elementor-element-3ecbcb9d{--display:flex;--padding-top:0px;--padding-bottom:0px;--padding-left:0px;--padding-right:0px;}.elementor-widget-theme-post-title .elementor-heading-title{font-family:var( --e-global-typography-primary-font-family ), Sans-serif;font-weight:var( --e-global-typography-primary-font-weight );color:var( --e-global-color-primary );}.elementor-3023 .elementor-element.elementor-element-c2e87e6 .elementor-heading-title{font-family:"Raleway", Sans-serif;font-size:3.5vw;font-weight:800;}.elementor-3023 .elementor-element.elementor-element-79275784{--display:flex;--flex-direction:row;--container-widget-width:calc( ( 1 - var( --container-widget-flex-grow ) ) * 100% );--container-widget-height:100%;--container-widget-flex-grow:1;--container-widget-align-self:stretch;--flex-wrap-mobile:wrap;--align-items:center;--padding-top:0px;--padding-bottom:0px;--padding-left:0px;--padding-right:0px;}.elementor-widget-divider{--divider-color:var( --e-global-color-secondary );}.elementor-widget-divider .elementor-divider__text{color:var( --e-global-color-secondary );font-family:var( --e-global-typography-secondary-font-family ), Sans-serif;font-weight:var( --e-global-typography-secondary-font-weight );}.elementor-widget-divider.elementor-view-stacked .elementor-icon{background-color:var( --e-global-color-secondary );}.elementor-widget-divider.elementor-view-framed .elementor-icon, .elementor-widget-divider.elementor-view-default .elementor-icon{color:var( --e-global-color-secondary );border-color:var( --e-global-color-secondary );}.elementor-widget-divider.elementor-view-framed .elementor-icon, .elementor-widget-divider.elementor-view-default .elementor-icon svg{fill:var( --e-global-color-secondary );}.elementor-3023 .elementor-element.elementor-element-4c9ea486{--divider-border-style:solid;--divider-color:#556DDD1A;--divider-border-width:2px;width:var( --container-widget-width, 28px );max-width:28px;--container-widget-width:28px;--container-widget-flex-grow:0;}.elementor-3023 .elementor-element.elementor-element-4c9ea486 .elementor-divider-separator{width:28px;}.elementor-3023 .elementor-element.elementor-element-4c9ea486 .elementor-divider{padding-block-start:15px;padding-block-end:15px;}.elementor-3023 .elementor-element.elementor-element-785998c1{font-family:"Raleway", Sans-serif;font-size:14px;font-weight:600;color:#2A45AC;}.elementor-3023 .elementor-element.elementor-element-786a1dbd{--display:flex;--padding-top:50px;--padding-bottom:0px;--padding-left:0px;--padding-right:0px;}.elementor-widget-theme-post-featured-image .widget-image-caption{color:var( --e-global-color-text );font-family:var( --e-global-typography-text-font-family ), Sans-serif;font-weight:var( --e-global-typography-text-font-weight );}.elementor-3023 .elementor-element.elementor-element-5383d11a img{border-radius:30px 30px 30px 30px;}.elementor-3023 .elementor-element.elementor-element-505cbadf{--display:flex;--gap:40px 40px;--row-gap:40px;--column-gap:40px;--padding-top:50px;--padding-bottom:080px;--padding-left:0px;--padding-right:0px;}.elementor-3023 .elementor-element.elementor-element-45c5ced3{font-family:"Raleway", Sans-serif;font-size:18px;font-weight:400;color:#2B2B2B;}.elementor-3023 .elementor-element.elementor-element-287fd31f{--display:flex;border-style:solid;--border-style:solid;border-width:0px 0px 0px 4px;--border-top-width:0px;--border-right-width:0px;--border-bottom-width:0px;--border-left-width:4px;border-color:#556DDD;--border-color:#556DDD;--border-radius:0px 0px 0px 0px;--padding-top:0px;--padding-bottom:0px;--padding-left:20px;--padding-right:0px;}.elementor-3023 .elementor-element.elementor-element-3768af13{font-family:"Raleway", Sans-serif;font-size:20px;font-weight:600;color:#2A45AC;}.elementor-3023 .elementor-element.elementor-element-50431612{font-family:"Raleway", Sans-serif;font-size:18px;font-weight:400;color:#2B2B2B;}.elementor-widget-heading .elementor-heading-title{font-family:var( --e-global-typography-primary-font-family ), Sans-serif;font-weight:var( --e-global-typography-primary-font-weight );color:var( --e-global-color-primary );}.elementor-3023 .elementor-element.elementor-element-278fc0a6{padding:20px 0px 0px 0px;}.elementor-3023 .elementor-element.elementor-element-278fc0a6 .elementor-heading-title{font-family:"Raleway", Sans-serif;font-size:24px;font-weight:700;color:#2A45AC;}.elementor-3023 .elementor-element.elementor-element-2523f498{font-family:"Raleway", Sans-serif;font-size:18px;font-weight:400;color:#2B2B2B;}.elementor-3023 .elementor-element.elementor-element-56457a0{padding:20px 0px 0px 0px;}.elementor-3023 .elementor-element.elementor-element-56457a0 .elementor-heading-title{font-family:"Raleway", Sans-serif;font-size:24px;font-weight:700;color:#2A45AC;}.elementor-3023 .elementor-element.elementor-element-31d6e54{font-family:"Raleway", Sans-serif;font-size:18px;font-weight:400;color:#2B2B2B;}.elementor-3023 .elementor-element.elementor-element-47398fb{padding:20px 0px 0px 0px;}.elementor-3023 .elementor-element.elementor-element-47398fb .elementor-heading-title{font-family:"Raleway", Sans-serif;font-size:24px;font-weight:700;color:#2A45AC;}.elementor-3023 .elementor-element.elementor-element-aad6857{font-family:"Raleway", Sans-serif;font-size:18px;font-weight:400;color:#2B2B2B;}.elementor-3023 .elementor-element.elementor-element-c55cdd8{font-family:"Raleway", Sans-serif;font-size:18px;font-weight:400;color:#2B2B2B;}.elementor-3023 .elementor-element.elementor-element-ff4693a{font-family:"Raleway", Sans-serif;font-size:18px;font-weight:400;color:#2B2B2B;}.elementor-3023 .elementor-element.elementor-element-272de47{--display:flex;--gap:40px 40px;--row-gap:40px;--column-gap:40px;--padding-top:50px;--padding-bottom:080px;--padding-left:0px;--padding-right:0px;}.elementor-3023 .elementor-element.elementor-element-96c87d7{font-family:"Raleway", Sans-serif;font-size:18px;font-weight:400;color:#2B2B2B;}.elementor-3023 .elementor-element.elementor-element-59cb9bf{--display:flex;--padding-top:0px;--padding-bottom:0px;--padding-left:0px;--padding-right:0px;}@media(max-width:1023px){.elementor-3023 .elementor-element.elementor-element-3de1c5be{--padding-top:100px;--padding-bottom:0px;--padding-left:030px;--padding-right:30px;}.elementor-3023 .elementor-element.elementor-element-c2e87e6 .elementor-heading-title{font-size:32px;}.elementor-3023 .elementor-element.elementor-element-79275784{--gap:10px 10px;--row-gap:10px;--column-gap:10px;}.elementor-3023 .elementor-element.elementor-element-786a1dbd{--padding-top:0px;--padding-bottom:0px;--padding-left:10px;--padding-right:010px;}.elementor-3023 .elementor-element.elementor-element-5383d11a{padding:30px 0px 0px 0px;}.elementor-3023 .elementor-element.elementor-element-505cbadf{--gap:20px 20px;--row-gap:20px;--column-gap:20px;--padding-top:50px;--padding-bottom:80px;--padding-left:020px;--padding-right:20px;}.elementor-3023 .elementor-element.elementor-element-45c5ced3{font-size:16px;}.elementor-3023 .elementor-element.elementor-element-3768af13{font-size:17px;}.elementor-3023 .elementor-element.elementor-element-50431612{font-size:16px;}.elementor-3023 .elementor-element.elementor-element-278fc0a6 .elementor-heading-title{font-size:20px;}.elementor-3023 .elementor-element.elementor-element-56457a0 .elementor-heading-title{font-size:20px;}.elementor-3023 .elementor-element.elementor-element-47398fb .elementor-heading-title{font-size:20px;}.elementor-3023 .elementor-element.elementor-element-272de47{--gap:20px 20px;--row-gap:20px;--column-gap:20px;--padding-top:50px;--padding-bottom:80px;--padding-left:020px;--padding-right:20px;}.elementor-3023 .elementor-element.elementor-element-96c87d7{font-size:16px;}}@media(min-width:1024px){.elementor-3023 .elementor-element.elementor-element-3de1c5be{--content-width:900px;}.elementor-3023 .elementor-element.elementor-element-786a1dbd{--content-width:900px;}.elementor-3023 .elementor-element.elementor-element-505cbadf{--content-width:760px;}.elementor-3023 .elementor-element.elementor-element-272de47{--content-width:760px;}}/* Start custom CSS for theme-post-featured-image, class: .elementor-element-5383d11a */@media (max-width: 768px) {
  .elementor-3023 .elementor-element.elementor-element-5383d11a img {
    height: 200px !important;

  }
}

.elementor-3023 .elementor-element.elementor-element-5383d11a img {
  width: 100%;
  height: 480px;
  object-fit: cover;
  object-position: center; /* crop from center — change to 'top' if heads get cut off */
  display: block;
}/* End custom CSS */</style>							<content:encoded><![CDATA[		<div data-elementor-type="wp-post" data-elementor-id="3023" class="elementor elementor-3023" data-elementor-post-type="post">
				<div class="elementor-element elementor-element-3de1c5be e-flex e-con-boxed e-con e-parent" data-id="3de1c5be" data-element_type="container" data-e-type="container">
					<div class="e-con-inner">
		<div class="elementor-element elementor-element-4e708d90 e-con-full e-flex e-con e-child" data-id="4e708d90" data-element_type="container" data-e-type="container">
		<div class="elementor-element elementor-element-6b194142 e-con-full e-flex e-con e-child" data-id="6b194142" data-element_type="container" data-e-type="container">
				<div class="elementor-element elementor-element-70ecda29 elementor-widget elementor-widget-text-editor" data-id="70ecda29" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
									<a style="color: #374dc5; text-decoration: none;" href="https://www.roadcover.co.za/articles/">
← Back to Articles
</a>								</div>
				<div class="elementor-element elementor-element-2654c810 elementor-widget elementor-widget-button" data-id="2654c810" data-element_type="widget" data-e-type="widget" data-widget_type="button.default">
										<a class="elementor-button elementor-button-link elementor-size-sm" href="https://www.roadcover.co.za/articles/">
						<span class="elementor-button-content-wrapper">
									<span class="elementor-button-text">Road Safety &amp; Public Awareness</span>
					</span>
					</a>
								</div>
				</div>
				</div>
		<div class="elementor-element elementor-element-3ecbcb9d e-con-full e-flex e-con e-child" data-id="3ecbcb9d" data-element_type="container" data-e-type="container">
				<div class="elementor-element elementor-element-c2e87e6 elementor-widget elementor-widget-theme-post-title elementor-page-title elementor-widget-heading" data-id="c2e87e6" data-element_type="widget" data-e-type="widget" data-widget_type="theme-post-title.default">
					<h1 class="elementor-heading-title elementor-size-default">The 25% RAF Fee Is a Ceiling and Not an Automatic Deduction</h1>				</div>
				</div>
		<div class="elementor-element elementor-element-79275784 e-con-full e-flex e-con e-child" data-id="79275784" data-element_type="container" data-e-type="container">
				<div class="elementor-element elementor-element-4c9ea486 elementor-widget__width-initial elementor-widget-divider--view-line elementor-widget elementor-widget-divider" data-id="4c9ea486" data-element_type="widget" data-e-type="widget" data-widget_type="divider.default">
							<div class="elementor-divider">
			<span class="elementor-divider-separator">
						</span>
		</div>
						</div>
				<div class="elementor-element elementor-element-785998c1 elementor-widget elementor-widget-text-editor" data-id="785998c1" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
									<p>Amanda Rogaly</p>								</div>
				</div>
					</div>
				</div>
		<div class="elementor-element elementor-element-786a1dbd e-flex e-con-boxed e-con e-parent" data-id="786a1dbd" data-element_type="container" data-e-type="container">
					<div class="e-con-inner">
				<div class="elementor-element elementor-element-5383d11a elementor-widget elementor-widget-theme-post-featured-image elementor-widget-image" data-id="5383d11a" data-element_type="widget" data-e-type="widget" data-widget_type="theme-post-featured-image.default">
															<img loading="lazy" decoding="async" width="800" height="450" src="https://www.roadcover.co.za/wp-content/uploads/2026/09/JBH-Traffic.png" class="attachment-large size-large wp-image-3026" alt="The 25% RAF Fee Is a Ceiling and Not an Automatic Deduction" srcset="https://www.roadcover.co.za/wp-content/uploads/2026/09/JBH-Traffic.png 800w, https://www.roadcover.co.za/wp-content/uploads/2026/09/JBH-Traffic-300x169.png 300w, https://www.roadcover.co.za/wp-content/uploads/2026/09/JBH-Traffic-768x432.png 768w" sizes="(max-width: 800px) 100vw, 800px" title="The 25% RAF Fee Is a Ceiling and Not an Automatic Deduction 9">															</div>
					</div>
				</div>
		<div class="elementor-element elementor-element-505cbadf e-flex e-con-boxed e-con e-parent" data-id="505cbadf" data-element_type="container" data-e-type="container">
					<div class="e-con-inner">
				<div class="elementor-element elementor-element-45c5ced3 elementor-widget elementor-widget-text-editor" data-id="45c5ced3" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
									<p>Many South Africans believe that if they appoint an attorney to handle a Road Accident Fund (RAF) claim, the attorney is automatically entitled to take 25% of the settlement. That is not correct.</p><p>Under a lawful contingency-fee agreement, the success fee may not exceed the lower of:</p><ul><li>25% of the capital amount awarded; or</li><li>twice the attorney’s normal fee.</li></ul><p>This means that 25% is a maximum, not an automatic fee. An attorney cannot simply deduct 25% from every successful RAF settlement.</p><p>This issue has now come under renewed parliamentary scrutiny.</p><p>Standing Committee on Public Accounts (SCOPA) draft Road Accident Fund inquiry report has raised concerns about contingency fees being linked to the size of a claimant’s settlement. The committee suggests that this could create an incentive to increase claim values and result in money intended for an injured person or bereaved family being diverted towards legal fees.</p>								</div>
		<div class="elementor-element elementor-element-287fd31f e-con-full e-flex e-con e-child" data-id="287fd31f" data-element_type="container" data-e-type="container">
				<div class="elementor-element elementor-element-3768af13 elementor-widget elementor-widget-text-editor" data-id="3768af13" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
									<p>These are draft parliamentary observations, and no change to the law has been made. This also does not mean that every attorney acts improperly. Contingency-fee agreements can help people access legal representation when they would otherwise be unable to afford it.</p>								</div>
				</div>
				<div class="elementor-element elementor-element-50431612 elementor-widget elementor-widget-text-editor" data-id="50431612" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
									<p>What matters is that claimants understand the terms of the agreement they sign, including the fee that may be charged and how much could ultimately be deducted from their settlement.</p>								</div>
				<div class="elementor-element elementor-element-278fc0a6 elementor-widget elementor-widget-heading" data-id="278fc0a6" data-element_type="widget" data-e-type="widget" data-widget_type="heading.default">
					<h3 class="elementor-heading-title elementor-size-default">What could a deduction mean for a claimant?</h3>				</div>
				<div class="elementor-element elementor-element-2523f498 elementor-widget elementor-widget-text-editor" data-id="2523f498" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
									<p>For someone receiving a R500,000 settlement, a substantial legal deduction can represent months or even years of lost income.</p><p>For a seriously injured claimant, it may be the difference between being able to pay for ongoing treatment and having to go without it.</p><p>For a child who has lost a parent, it may affect the money available for education, housing and long-term financial security.</p><p>A RAF settlement is not a bonus or a windfall; it is compensation intended to help restore what an accident has taken away.</p>								</div>
				<div class="elementor-element elementor-element-56457a0 elementor-widget elementor-widget-heading" data-id="56457a0" data-element_type="widget" data-e-type="widget" data-widget_type="heading.default">
					<h3 class="elementor-heading-title elementor-size-default">With RoadCover, the deduction is 0%</h3>				</div>
				<div class="elementor-element elementor-element-31d6e54 elementor-widget elementor-widget-text-editor" data-id="31d6e54" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
									<p>RoadCover manages qualifying RAF claims for its members from start to finish without deducting legal fees or expenses from a successful settlement.</p><p>This means:</p><p><strong>No percentage is taken.<br />No legal expenses are deducted.<br />The member receives 100% of the RAF settlement.</strong></p><p>RoadCover is not an insurer. We are a specialist claims-management company that handles the RAF journey on behalf of our members. From gathering documentation and obtaining the necessary expert evidence to managing the legal process and following the claim through to settlement.</p><p>Our members do not have to navigate the RAF system alone, and they do not surrender a percentage of their successful settlement in exchange for having the claim managed.</p>								</div>
				<div class="elementor-element elementor-element-47398fb elementor-widget elementor-widget-heading" data-id="47398fb" data-element_type="widget" data-e-type="widget" data-widget_type="heading.default">
					<h3 class="elementor-heading-title elementor-size-default">Ask the right question before an accident happens</h3>				</div>
				<div class="elementor-element elementor-element-aad6857 elementor-widget elementor-widget-text-editor" data-id="aad6857" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
									<p>The question is not only: “Who will handle my RAF claim?”</p><p>It is also: <strong>“How much of my settlement will ultimately reach me?”</strong></p><p>With RoadCover, the answer is simple: all of it.</p><p>Do not wait until after an accident to learn what the claims process may cost you. Put RoadCover in place before you need it and know that, if the unexpected happens, the entire qualifying RAF process will be managed on your behalf.</p><p><strong>25% may be the legal ceiling. With RoadCover, the deduction is 0%.</strong></p><p>No fees. No deductions. 100% of the settlement is yours.</p><p><em>The SCOPA observations discussed in this article form part of a draft parliamentary report. They do not constitute a change to the Contingency Fees Act or a finding that all contingency-fee arrangements are improper.</em></p>								</div>
				<div class="elementor-element elementor-element-c55cdd8 elementor-widget elementor-widget-text-editor" data-id="c55cdd8" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
									<p>The question is not only: “Who will handle my RAF claim?”</p><p>It is also: <strong>“How much of my settlement will ultimately reach me?”</strong></p><p>With RoadCover, the answer is simple: all of it.</p><p>Do not wait until after an accident to learn what the claims process may cost you. Put RoadCover in place before you need it and know that, if the unexpected happens, the entire qualifying RAF process will be managed on your behalf.</p><p><strong>25% may be the legal ceiling. With RoadCover, the deduction is 0%.</strong></p><p>No fees. No deductions. 100% of the settlement is yours.</p><p><em>The SCOPA observations discussed in this article form part of a draft parliamentary report. They do not constitute a change to the Contingency Fees Act or a finding that all contingency-fee arrangements are improper.</em></p>								</div>
				<div class="elementor-element elementor-element-ff4693a elementor-widget elementor-widget-text-editor" data-id="ff4693a" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
									<h6>Source: <a href="https://www.moonstone.co.za/rafs-25-contingency-fee-cap-under-scrutiny/" target="_blank" rel="noopener">Moonstone Information Refinery</a></h6>								</div>
					</div>
				</div>
		<div class="elementor-element elementor-element-272de47 e-flex e-con-boxed e-con e-parent" data-id="272de47" data-element_type="container" data-e-type="container">
					<div class="e-con-inner">
				<div class="elementor-element elementor-element-96c87d7 elementor-widget elementor-widget-text-editor" data-id="96c87d7" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
									<p><strong>Disclaimer:</strong> <em>The information provided in this article was correct at the time of publication and is intended for general guidance only. It is subject to change without notice as laws, regulations and membership terms evolve. RoadCover and the Road Accident Fund operate within dynamic legal frameworks and readers should verify current requirements before making decisions or entering into agreements.</em></p>								</div>
					</div>
				</div>
		<div class="elementor-element elementor-element-59cb9bf e-flex e-con-boxed e-con e-parent" data-id="59cb9bf" data-element_type="container" data-e-type="container">
					<div class="e-con-inner">
				<div class="elementor-element elementor-element-e256fab elementor-widget elementor-widget-shortcode" data-id="e256fab" data-element_type="widget" data-e-type="widget" data-widget_type="shortcode.default">
							<div class="elementor-shortcode">		<div data-elementor-type="container" data-elementor-id="2657" class="elementor elementor-2657" data-elementor-post-type="elementor_library">
				<div class="elementor-element elementor-element-1b2aafda e-con-full e-flex e-con e-parent" data-id="1b2aafda" data-element_type="container" data-e-type="container">
				<div class="elementor-element elementor-element-4e06f177 elementor-widget elementor-widget-html" data-id="4e06f177" data-element_type="widget" data-e-type="widget" data-widget_type="html.default">
					<link href="https://fonts.googleapis.com/css2?family=Raleway:wght@400;500;600;700;800&display=swap" rel="stylesheet">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.0/css/all.min.css">

<script src="https://www.google.com/recaptcha/api.js?render=6LdwjNosAAAAAK5qrEyD0FybwyViVZOqamPK1Fnr" async defer></script>

<style>
/* ===============================================================
   RoadCover — Pricing + Onboarding Form
   All selectors scoped to #rc-pricing to avoid host-page bleed.
   PLN codes live on data-plan-code attributes of .rc-btn elements.
   ================================================================ */

#rc-pricing *, #rc-pricing *::before, #rc-pricing *::after {
    box-sizing: border-box;
}
#rc-pricing {
    font-family: 'Raleway', sans-serif;
    width: 100%;
    color: #1f2937;

    /* Plan-card palette — scoped to the embed, never :root, so the
       host page's own custom properties are left untouched. */
    --rc-blue:      #2B4FD4;
    --rc-blue-dark: #1A3399;
    --rc-gold:      #F5C842;
    --rc-gold-dark: #D4A800;
    --rc-text:      #0D1B3E;
    --rc-muted:     #6B7280;
    --rc-border:    #E4E9F8;
    --rc-success:   #16A34A;
}
.rc-wrapper {
    display: flex;
    flex-direction: column;
    gap: 48px;
}

/* ── Header ─────────────────────────────────────────────────────── */
.rc-header { text-align: center; }
.rc-header h2 {
    font-size: 30px;
    font-weight: 800;
    margin: 0 0 8px;
    color: #111827;
}
.rc-header p {
    font-size: 15px;
    color: #6b7280;
    margin: 0;
}

/* ── Single Plan Card ───────────────────────────────────────────── */
/* One responsive card serves both desktop and mobile — there is no
   longer a separate table/card pair to keep in sync. */
.rc-plan-card {
    position: relative;
    background: #fff;
    border: 1px solid var(--rc-border);
    border-radius: 18px;
    overflow: hidden;
    box-shadow: 0 10px 30px rgba(13, 27, 62, 0.08);
}

.rc-plan-header {
    position: relative;
    overflow: hidden;
    background: linear-gradient(135deg, var(--rc-blue) 0%, var(--rc-blue-dark) 100%);
    padding: 32px 28px 30px;
    text-align: center;
}
.rc-plan-header::before {
    content: '';
    position: absolute;
    width: 220px;
    height: 220px;
    right: -90px;
    top: -70px;
    border-radius: 50%;
    background: rgba(255, 255, 255, 0.08);
}
.rc-plan-header::after {
    content: '';
    position: absolute;
    width: 140px;
    height: 140px;
    left: -50px;
    bottom: -50px;
    border-radius: 50%;
    background: rgba(245, 200, 66, 0.14);
}
.rc-plan-header > * { position: relative; z-index: 2; }

.rc-plan-name {
    font-size: 11px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.1em;
    color: rgba(255, 255, 255, 0.65);
    margin-bottom: 6px;
}
.rc-plan-price {
    font-size: 44px;
    font-weight: 900;
    color: var(--rc-gold);
    line-height: 1.1;
}
.rc-plan-price-unit {
    font-size: 14px;
    font-weight: 600;
    color: rgba(255, 255, 255, 0.6);
}
.rc-plan-subprice {
    margin-top: 6px;
    font-size: 12px;
    font-weight: 600;
    color: var(--rc-gold);
    min-height: 16px;
}

.rc-plan-rows { padding: 6px 28px; }
.rc-plan-row {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    padding: 14px 0;
    border-bottom: 1px solid var(--rc-border);
}
.rc-plan-row:last-child { border-bottom: none; }
.rc-plan-row-label {
    font-size: 13.5px;
    font-weight: 600;
    color: var(--rc-text);
}
.rc-plan-row-icon {
    width: 22px;
    height: 22px;
    flex-shrink: 0;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    background: #ECFDF3;
    color: var(--rc-success);
}
.rc-plan-row-icon svg { width: 13px; height: 13px; display: block; }

.rc-plan-cta-block { padding: 20px 28px 26px; }
.rc-plan-cta-hint {
    text-align: center;
    margin-top: 10px;
    font-size: 11px;
    color: var(--rc-muted);
}

/* ── Plan Select Button (JS hook: .rc-btn) ──────────────────────── */
.rc-btn {
    width: 100%;
    padding: 13px 18px;
    border: none;
    border-radius: 10px;
    background: var(--rc-gold);
    color: var(--rc-text);
    font-family: inherit;
    font-size: 14px;
    font-weight: 800;
    letter-spacing: 0.01em;
    cursor: pointer;
    transition: background 0.15s, transform 0.1s;
}
.rc-btn:hover   { background: var(--rc-gold-dark); }
.rc-btn:active  { transform: scale(0.99); }
.rc-btn.rc-selected { background: var(--rc-gold-dark); }

/* ── Form Section ───────────────────────────────────────────────── */
#rc-form-section { display: none; }
#rc-form-section.rc-visible {
    display: block;
    animation: rc-fadein 0.22s ease;
}
@keyframes rc-fadein {
    from { opacity: 0; transform: translateY(10px); }
    to   { opacity: 1; transform: translateY(0); }
}

.rc-form-inner {
    display: flex;
    flex-direction: column;
    gap: 22px;
    background: linear-gradient(135deg, #2A45AC, #1f358a);
    border-radius: 12px;
    padding: 40px;
}

.rc-selected-badge {
    display: inline-block;
    background: rgba(255, 255, 255, 0.15);
    color: #FFD84D;
    font-size: 13px;
    font-weight: 700;
    border-radius: 6px;
    padding: 7px 13px;
}

.rc-form-title {
    font-size: 20px;
    font-weight: 800;
    color: #fff;
    margin: 0;
}

/* Field grid — first two fields sit side-by-side */
.rc-field-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 14px;
}
.rc-field-full { grid-column: 1 / -1; }

.rc-field {
    display: flex;
    flex-direction: column;
    gap: 5px;
}
.rc-field-label {
    font-size: 11px;
    font-weight: 700;
    color: rgba(255, 255, 255, 0.7);
    text-transform: uppercase;
    letter-spacing: 0.05em;
}

/* Icon floats over the input; no separate column, no column border */
.rc-input-row {
    position: relative;
    border: 1px solid #6f7ec1;
    border-radius: 8px;
    background: #3d54ac;
    transition: border-color 0.15s, box-shadow 0.15s;
}
.rc-input-row:focus-within {
    border-color: #a0aee0;
    box-shadow: 0 0 0 3px rgba(111, 126, 193, 0.3);
}
.rc-input-row:has(.invalid) { border-color: #FF3B30; }
.rc-input-row:has(.invalid):focus-within {
    box-shadow: 0 0 0 3px rgba(129, 12, 12, 0.25);
}

.rc-input-icon {
    position: absolute;
    left: 14px;
    top: 50%;
    transform: translateY(-50%);
    color: rgba(255, 255, 255, 0.55);
    font-size: 14px;
    pointer-events: none;
}

.rc-input {
    display: block;
    width: 100%;
    padding: 11px 14px 11px 44px !important;
    border: 0;
    box-shadow: none;
    border-radius: 8px;
    background: transparent;
    font-family: inherit;
    font-size: 14px;
    color: #fff;
    -webkit-appearance: none;
    appearance: none;
    outline: none;
}
#rc-pricing .rc-input::placeholder { color: rgb(248, 248, 248); }
.rc-input.invalid { /* border shown via :has on .rc-input-row */ }

/* Native select chevron */
select.rc-input {
    padding-right: 36px;
    background-color: #3d54ac;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='7' viewBox='0 0 12 7'%3E%3Cpolyline points='1,1 6,6 11,1' fill='none' stroke='%23a0aee0' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
    background-repeat: no-repeat;
    background-position: right 12px center;
    cursor: pointer;
    color: #fff;
}

.rc-field-error {
    font-size: 12px;
    color: #FF3B30;
    margin: 0;
    line-height: 1.4;
}

/* T&C checkbox */
.rc-terms {
    display: flex;
    align-items: center;
    gap: 10px;
    font-size: 14px;
    color: rgba(255, 255, 255, 0.85);
    cursor: pointer;
    user-select: none;
}
.rc-terms input[type="checkbox"] {
    width: 17px;
    height: 17px;
    cursor: pointer;
    flex-shrink: 0;
    accent-color: #FFD84D;
}
.rc-terms.invalid { color: #FF3B30; }
.rc-terms.invalid input[type="checkbox"] {
    outline: 2px solid #FF3B30;
    outline-offset: 2px;
    border-radius: 2px;
}

.rc-submit:disabled,
.rc-submit:disabled:hover {
    background: #FFD84D; /* same as default */
    cursor: not-allowed;
}
/* Submit button */
.rc-submit {
    width: 100%;
    padding: 14px 20px;
    border: none;
    border-radius: 10px;
    background: #FFD84D;
    color: #1f358a;
    font-family: inherit;
    font-size: 15px;
    font-weight: 700;
    cursor: pointer;
    transition: background 0.15s, transform 0.1s;
    letter-spacing: 0.01em;
}
.rc-submit:hover:not([disabled]) { background: #f5cc35; }
.rc-submit:active:not([disabled]) { transform: scale(0.99); }
.rc-submit[disabled] { opacity: 0.5; cursor: not-allowed; }

.rc-form-error {
    font-size: 13px;
    color: #FF3B30;
    margin: 0;
    line-height: 1.5;
}

.rc-recaptcha-notice {
    font-size: 11px;
    color: rgba(255, 255, 255, 0.45);
    margin: 0;
    line-height: 1.5;
    text-align: center;
}
.rc-recaptcha-notice a {
    color: rgba(255, 255, 255, 0.55);
    text-decoration: underline;
}

/* ── Billing Toggle ─────────────────────────────────────────────── */
/* Sits on the dark gradient header, so it is styled for a dark ground. */
.rc-billing-toggle {
    display: inline-flex;
    background: rgba(255, 255, 255, 0.12);
    border: 1.5px solid rgba(255, 255, 255, 0.2);
    border-radius: 999px;
    padding: 3px;
    gap: 2px;
    margin-bottom: 20px;
}
.rc-toggle-opt {
    padding: 7px 20px;
    border: none;
    border-radius: 999px;
    background: transparent;
    color: rgba(255, 255, 255, 0.75);
    font-family: inherit;
    font-size: 12.5px;
    font-weight: 700;
    cursor: pointer;
    transition: background 0.2s ease, color 0.2s ease;
    white-space: nowrap;
    line-height: 1;
}
.rc-toggle-opt:hover:not(.rc-toggle-active) {
    background: rgba(255, 255, 255, 0.08);
}
.rc-toggle-opt.rc-toggle-active {
    background: var(--rc-gold);
    color: var(--rc-text);
}

.rc-save-badge {
    display: inline-block;
    margin-left: 6px;
    padding: 1px 6px;
    border-radius: 999px;
    font-size: 9.5px;
    font-weight: 800;
    color: rgba(255, 255, 255, 0.85);
    background: rgba(255, 255, 255, 0.16);
}
/* On the gold active pill, white-on-gold is unreadable — invert it. */
.rc-toggle-active .rc-save-badge {
    color: var(--rc-text);
    background: rgba(13, 27, 62, 0.12);
}

/* ── Responsive ─────────────────────────────────────────────────── */
@media (max-width: 700px) {
    #rc-pricing     { padding: 0px 0px; }
    .rc-wrapper     { gap: 32px; }
    .rc-plan-header { padding: 28px 20px 26px; }
    .rc-plan-price  { font-size: 38px; }
    .rc-plan-rows   { padding: 6px 20px; }
    .rc-plan-cta-block { padding: 18px 20px 22px; }
    .rc-field-grid  { grid-template-columns: 1fr; }
    .rc-field-full  { grid-column: 1; }
    .rc-form-inner  { padding: 24px 20px; }
    .rc-header h2   { font-size: 24px; }
}
</style>

<!-- ================================================================
     PRICING TABLE + ONBOARDING FORM
     ================================================================ -->
<div id="rc-pricing">
  <div class="rc-wrapper">

    <!-- Single plan card — one responsive card for desktop and mobile -->
    <div class="rc-plan-card" data-plan-key="RoadCover">

      <div class="rc-plan-header">
        <div class="rc-billing-toggle" role="group" aria-label="Billing period">
          <button type="button" class="rc-toggle-opt rc-toggle-active" data-billing="monthly">Monthly</button>
          <button type="button" class="rc-toggle-opt" data-billing="annual">Annual <span class="rc-save-badge">Save 6%</span></button>
        </div>

        <div class="rc-plan-name">RoadCover</div>
        <div class="rc-plan-price"><span class="rc-plan-price-val">R49</span><span class="rc-plan-price-unit">/mo</span></div>
        <div class="rc-plan-subprice" hidden></div>
      </div>

      <div class="rc-plan-rows">
        <div class="rc-plan-row">
          <span class="rc-plan-row-label">RAF Claim Support</span>
          <span class="rc-plan-row-icon" role="img" aria-label="Included">
            <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><polyline points="20 6 9 17 4 12"></polyline></svg>
          </span>
        </div>
        <div class="rc-plan-row">
          <span class="rc-plan-row-label">Legal Expertise</span>
          <span class="rc-plan-row-icon" role="img" aria-label="Included">
            <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><polyline points="20 6 9 17 4 12"></polyline></svg>
          </span>
        </div>
      </div>

      <div class="rc-plan-cta-block">
        <button class="rc-btn"
                data-plan="RoadCover"
                data-plan-code="RC49"
                data-price="49.00 /Month">Select RoadCover &#8594;</button>
        <div class="rc-plan-cta-hint">No fees. 100% of your payout.</div>
      </div>

    </div><!-- /.rc-plan-card -->

    <!-- Form: hidden until a plan is selected -->
    <div id="rc-form-section">
      <form id="roadcover-form" novalidate>

        <!-- product_code is set programmatically on plan button click -->
        <input type="hidden" name="product_code" id="cover-input">
        <input type="hidden" name="form_id"   value="9a3d492">
        <input type="hidden" name="form_name" value="Get RoadCover">

        <div class="rc-form-inner">

          <div id="selectedPlan" class="rc-selected-badge">Selected: &#8212;</div>
          <p class="rc-form-title">Enter your details</p>

          <div class="rc-field-grid">

            <!-- Row 1: name -->
            <div class="rc-field">
              <label class="rc-field-label" for="rc-first-name">First name *</label>
              <div class="rc-input-row">
                <i class="fa-solid fa-user rc-input-icon" aria-hidden="true"></i>
                <input class="rc-input" type="text" id="rc-first-name"
                       name="first_name" required maxlength="60" placeholder="First name">
              </div>
            </div>

            <div class="rc-field">
              <label class="rc-field-label" for="rc-last-name">Last name *</label>
              <div class="rc-input-row">
                <i class="fa-solid fa-user rc-input-icon" aria-hidden="true"></i>
                <input class="rc-input" type="text" id="rc-last-name"
                       name="last_name" required maxlength="60" placeholder="Last name">
              </div>
            </div>

            <!-- Row 2: identity -->
            <div class="rc-field">
              <label class="rc-field-label" for="rc-id">ID number *</label>
              <div class="rc-input-row">
                <i class="fa-solid fa-id-card rc-input-icon" aria-hidden="true"></i>
                <input class="rc-input" type="text" id="rc-id"
                       name="identificationnr" required pattern="[0-9]{13}"
                       inputmode="numeric" maxlength="13"
                       placeholder="13-digit SA ID number">
              </div>
            </div>

            <div class="rc-field">
              <label class="rc-field-label" for="rc-gender">Gender *</label>
              <div class="rc-input-row">
                <i class="fa-solid fa-venus-mars rc-input-icon" aria-hidden="true"></i>
                <select class="rc-input" id="rc-gender" name="gender" required>
                  <option value="">Select&hellip;</option>
                  <option value="1">Male</option>
                  <option value="2">Female</option>
                </select>
              </div>
            </div>

            <!-- Row 3: contact -->
            <div class="rc-field">
              <label class="rc-field-label" for="rc-email">Email *</label>
              <div class="rc-input-row">
                <i class="fa-solid fa-envelope rc-input-icon" aria-hidden="true"></i>
                <input class="rc-input" type="email" id="rc-email"
                       name="email" required maxlength="254"
                       placeholder="you@example.com">
              </div>
            </div>

            <div class="rc-field">
              <label class="rc-field-label" for="rc-mobile">Mobile *</label>
              <div class="rc-input-row">
                <i class="fa-solid fa-phone rc-input-icon" aria-hidden="true"></i>
                <input class="rc-input" type="tel" id="rc-mobile"
                       name="mobile" required inputmode="tel"
                       placeholder="0XXXXXXXXX or +27XXXXXXXXX">
              </div>
            </div>

            <!-- Row 4: optional -->
            <div class="rc-field rc-field-full">
              <label class="rc-field-label" for="rc-promo">Promo code</label>
              <div class="rc-input-row">
                <i class="fa-solid fa-tag rc-input-icon" aria-hidden="true"></i>
                <input class="rc-input" type="text" id="rc-promo"
                       name="promo_code" maxlength="32" placeholder="Optional">
              </div>
            </div>

          </div><!-- /.rc-field-grid -->

          <label class="rc-terms">
            <input type="checkbox" name="I accept the Terms and Conditions." required>
            <span>I accept the Terms and Conditions.</span>
          </label>

          <button type="submit" id="submit-btn" class="rc-submit">Continue</button>
          <p id="form-error" class="rc-form-error" hidden></p>

          <p class="rc-recaptcha-notice">This site is protected by reCAPTCHA and the Google <a href="https://policies.google.com/privacy" target="_blank" rel="noopener noreferrer">Privacy Policy</a> and <a href="https://policies.google.com/terms" target="_blank" rel="noopener noreferrer">Terms of Service</a> apply.</p>

        </div><!-- /.rc-form-inner -->
      </form>
    </div><!-- /#rc-form-section -->

  </div><!-- /.rc-wrapper -->
</div><!-- /#rc-pricing -->

<script>
(function () {
    var form           = document.getElementById('roadcover-form');
    var errEl          = document.getElementById('form-error');
    var submitBtn      = document.getElementById('submit-btn');
    var coverInput     = document.getElementById('cover-input');
    var formSection    = document.getElementById('rc-form-section');
    var selectedPlanEl = document.getElementById('selectedPlan');
    var pricing        = document.getElementById('rc-pricing');

    var currentPrice   = '';
    var isAnnual       = false;
    var currentPlanBtn = null;

    // ── Plan + billing data ───────────────────────────────────────────────────
    var planData = {
        'RoadCover': {
            monthly: { priceVal: 'R49', unit: '/mo', code: 'RC49',         priceStr: '49.00 /Month',  subprice: '' },
            annual:  { priceVal: 'R550', unit: '/yr', code: 'PRD-CB838AEF', priceStr: '550.00 /Year', subprice: '~R46/mo' }
        }
    };

    // ── Apply billing mode to all price displays and button codes ─────────────
    function applyBilling() {
        var mode = isAnnual ? 'annual' : 'monthly';

        // Plan card price display
        pricing.querySelectorAll('.rc-plan-card[data-plan-key]').forEach(function (card) {
            var d = planData[card.dataset.planKey][mode];
            card.querySelector('.rc-plan-price-val').textContent  = d.priceVal;
            card.querySelector('.rc-plan-price-unit').textContent = d.unit;
            var sub = card.querySelector('.rc-plan-subprice');
            sub.textContent = d.subprice;
            sub.hidden      = !d.subprice;
        });

        // Update data-plan-code on all buttons so selection highlighting still works
        pricing.querySelectorAll('.rc-btn').forEach(function (btn) {
            var key = btn.dataset.plan;
            if (!planData[key]) return;
            btn.dataset.planCode = planData[key][mode].code;
            btn.dataset.price    = planData[key][mode].priceStr;
        });

        // If a plan was already selected, refresh the hidden input + badge + button label
        if (currentPlanBtn) {
            var key     = currentPlanBtn.dataset.plan;
            var d       = planData[key][mode];
            var billing = isAnnual ? 'Annual' : 'Monthly';
            coverInput.value           = d.code;
            currentPrice               = d.priceStr;
            selectedPlanEl.textContent = 'Selected: ' + key + ' (' + billing + ')';
            updateButton();
        }
    }

    // ── Helpers (mirrored in n8n Code node — keep in sync) ───────────────────

    function clean(v) {
        if (v === null || v === undefined) return '';
        var s = String(v);
        s = s.replace(/[\x00-\x08\x0B\x0C\x0E-\x1F\x7F]/g, '');
        s = s.replace(/<script\b[^>]*>[\s\S]*?<\/script\s*>/gi, '');
        s = s.replace(/<\/?[a-zA-Z][^>]*>/g, '');
        s = s.replace(/javascript\s*:/gi, '');
        s = s.replace(/\s+/g, ' ').trim();
        return s;
    }

    function luhnValid(idStr) {
        var sum = 0;
        for (var i = 0; i < 13; i++) {
            var n = parseInt(idStr.charAt(i), 10);
            if (i % 2 === 1) { n *= 2; if (n > 9) n -= 9; }
            sum += n;
        }
        return sum % 10 === 0;
    }

    // Returns { ok: true } or { ok: false, field, message }
    function validate(data) {
        var required = {
            product_code:       'Please select a cover plan.',
            first_name:         'First name is required.',
            last_name:          'Last name is required.',
            email:              'Email is required.',
            mobile:             'Mobile number is required.',
            identificationnr:   'ID number is required.',
            gender:             'Please select your gender.'
        };
        for (var k in required) {
            if (!data[k]) return { ok: false, field: k, message: required[k] };
        }

        if (data.first_name.length > 60)
            return { ok: false, field: 'first_name', message: 'First name is too long (max 60).' };
        if (data.last_name.length > 60)
            return { ok: false, field: 'last_name', message: 'Last name is too long (max 60).' };

        var emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
        if (!emailRegex.test(data.email))
            return { ok: false, field: 'email', message: 'Please enter a valid email address.' };
        if (data.email.length > 254)
            return { ok: false, field: 'email', message: 'Email is too long.' };

        var mobileRegex = /^(\+27|0)[0-9]{9}$/;
        if (!mobileRegex.test(data.mobile))
            return { ok: false, field: 'mobile', message: 'Mobile must be 10 digits starting with 0, or +27 followed by 9 digits.' };

        var genderNum = Number(data.gender);
        if (genderNum !== 1 && genderNum !== 2)
            return { ok: false, field: 'gender', message: 'Please select your gender.' };

        if (!/^[0-9]{13}$/.test(data.identificationnr))
            return { ok: false, field: 'identificationnr', message: 'ID number must be exactly 13 digits.' };

        var yy        = parseInt(data.identificationnr.substring(0, 2), 10);
        var mm        = parseInt(data.identificationnr.substring(2, 4), 10);
        var dd        = parseInt(data.identificationnr.substring(4, 6), 10);
        var now       = new Date();
        var currentYY = now.getFullYear() % 100;
        var fullYear  = (yy > currentYY) ? (1900 + yy) : (2000 + yy);
        var dob       = new Date(fullYear, mm - 1, dd);
        var dobValid  =
            dob.getFullYear() === fullYear &&
            dob.getMonth()    === (mm - 1) &&
            dob.getDate()     === dd       &&
            dob <= now;
        if (!dobValid)
            return { ok: false, field: 'identificationnr', message: 'The first 6 digits of your ID number are not a valid date of birth.' };

        var genderDigits = parseInt(data.identificationnr.substring(6, 10), 10);
        var idGender     = genderDigits >= 5000 ? 1 : 2;
        if (idGender !== genderNum) {
            var expected = idGender === 1 ? 'Male' : 'Female';
            return { ok: false, field: 'identificationnr',
                     message: 'The selected gender does not match your ID number (ID indicates ' + expected + ').' };
        }

        if (!luhnValid(data.identificationnr))
            return { ok: false, field: 'identificationnr', message: 'ID number checksum is invalid. Please check the number.' };

        return { ok: true };
    }

    // ── UI helpers ────────────────────────────────────────────────────────────

    function clearFieldErrors() {
        form.querySelectorAll('.invalid').forEach(function (el) { el.classList.remove('invalid'); });
        form.querySelectorAll('.rc-field-error').forEach(function (el) { el.remove(); });
    }

    function showFieldError(fieldName, message) {
        // product_code is a hidden input — surface as a form-level error
        if (fieldName === 'product_code') {
            showFormError(message);
            return;
        }
        var input = form.querySelector('[name="' + fieldName + '"]');
        if (!input) return;
        input.classList.add('invalid');
        var field = input.closest('.rc-field') || input.parentElement;
        var span  = field.querySelector('.rc-field-error');
        if (!span) {
            span = document.createElement('span');
            span.className = 'rc-field-error';
            field.appendChild(span);
        }
        span.textContent = message;
        input.focus();
    }

    function showFormError(message) {
        errEl.textContent = message;
        errEl.hidden = false;
    }

    function hideFormError() {
        errEl.hidden = true;
        errEl.textContent = '';
    }

    function updateButton() {
        submitBtn.textContent = currentPrice ? ('Continue • R' + currentPrice) : 'Continue';
        submitBtn.disabled    = false;
    }

    // ── Collect & sanitise ────────────────────────────────────────────────────

    function collectData() {
        var fd = new FormData(form);
        return {
            product_code:       clean(fd.get('product_code')),
            first_name:         clean(fd.get('first_name')),
            last_name:          clean(fd.get('last_name')),
            email:              clean(fd.get('email')).toLowerCase(),
            mobile:             clean(fd.get('mobile')),
            identificationnr:   clean(fd.get('identificationnr')),
            gender:             clean(fd.get('gender')),
            promo_code:         clean(fd.get('promo_code'))
        };
    }

    // ── Billing toggle ────────────────────────────────────────────────────────

    pricing.querySelectorAll('.rc-toggle-opt').forEach(function (btn) {
        btn.addEventListener('click', function () {
            if (btn.dataset.billing === (isAnnual ? 'annual' : 'monthly')) return;
            isAnnual = !isAnnual;
            pricing.querySelectorAll('.rc-toggle-opt').forEach(function (b) {
                b.classList.toggle('rc-toggle-active', b.dataset.billing === (isAnnual ? 'annual' : 'monthly'));
            });
            applyBilling();
        });
    });

    // ── Plan selection ────────────────────────────────────────────────────────

    pricing.querySelectorAll('.rc-btn').forEach(function (planBtn) {
        planBtn.addEventListener('click', function () {
            var code    = planBtn.dataset.planCode;
            var plan    = planBtn.dataset.plan;
            var price   = planBtn.dataset.price || '';
            var billing = isAnnual ? 'Annual' : 'Monthly';

            currentPlanBtn = planBtn;

            // Highlight every button sharing the same plan code (desktop + mobile pair)
            pricing.querySelectorAll('.rc-btn').forEach(function (b) {
                b.classList.toggle('rc-selected', b.dataset.planCode === code);
            });

            coverInput.value           = code;
            currentPrice               = price;
            selectedPlanEl.textContent = 'Selected: ' + plan + ' (' + billing + ')';
            updateButton();

            formSection.classList.add('rc-visible');
            formSection.scrollIntoView({ behavior: 'smooth', block: 'nearest' });

            clearFieldErrors();
            hideFormError();
        });
    });

    // ── Initialise billing display ────────────────────────────────────────────
    applyBilling();

    // ── Clear errors on edit ──────────────────────────────────────────────────

    form.addEventListener('input', function (e) {
        if (e.target.classList.contains('invalid')) {
            e.target.classList.remove('invalid');
            var f = e.target.closest('.rc-field');
            if (f) { var s = f.querySelector('.rc-field-error'); if (s) s.remove(); }
        }
        hideFormError();
    });

    form.addEventListener('change', function (e) {
        if (e.target.classList.contains('invalid')) {
            e.target.classList.remove('invalid');
            var f = e.target.closest('.rc-field');
            if (f) { var s = f.querySelector('.rc-field-error'); if (s) s.remove(); }
        }
        if (e.target.type === 'checkbox' && e.target.checked) {
            var label = e.target.closest('label.rc-terms');
            if (label) label.classList.remove('invalid');
            hideFormError();
        }
    });

    // ── Form submit ───────────────────────────────────────────────────────────

    form.addEventListener('submit', async function (e) {
        e.preventDefault();
        hideFormError();
        clearFieldErrors();

        var data   = collectData();
        var result = validate(data);
        if (!result.ok) {
            showFieldError(result.field, result.message);
            return;
        }

        var termsBox = form.querySelector('input[type="checkbox"][required]');
        if (termsBox && !termsBox.checked) {
            var termsLabel = termsBox.closest('label.rc-terms');
            if (termsLabel) termsLabel.classList.add('invalid');
            termsBox.focus();
            showFormError('Please accept the Terms and Conditions to continue.');
            return;
        }

        submitBtn.disabled    = true;
        submitBtn.textContent = 'Processing…';

        // ── reCAPTCHA v3 — must complete before the network request ──────────
        var recaptchaToken = '';
        try {
            recaptchaToken = await new Promise(function (resolve, reject) {
                if (typeof grecaptcha === 'undefined') { reject(new Error('not loaded')); return; }
                grecaptcha.ready(function () {
                    grecaptcha.execute('6LdwjNosAAAAAK5qrEyD0FybwyViVZOqamPK1Fnr', { action: 'submit' })
                        .then(resolve).catch(reject);
                });
            });
        } catch (_) {
            showFormError('Security check could not complete. Please disable any ad blockers and try again.');
            updateButton();
            return;
        }

        try {
            // Send sanitised data so the backend receives cleaned values
            var params = new URLSearchParams();
            for (var k in data) params.append(k, data[k]);
            params.append('form_id',   form.querySelector('[name="form_id"]').value   || '');
            params.append('form_name', form.querySelector('[name="form_name"]').value || '');
            params.append('I accept the Terms and Conditions.', 'on');
            params.append('recaptcha_token', recaptchaToken);

            var res     = await fetch('https://n8n.roadcover.co.za/webhook/form', {
                method:  'POST',
                headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
                body:    params.toString()
            });
            var json    = await res.json();
            var payload = Array.isArray(json) ? json[0] : json;
            var paymentUrl = (payload && payload.data && payload.data.payment_url)
                           || (payload && payload.payment_url);

            if (res.ok && payload && payload.success && paymentUrl) {
                window.location.href = paymentUrl;
            } else if (payload && (payload.error_code === 'DUPLICATE_MEMBER' || payload.error_code === 'DUPLICATE_ACTIVE_MEMBER')) {
                var supportEmail = (payload && payload.support_email) || 'info@roadcover.co.za';
                var refNumber = payload && payload.reference_number;
                showFieldError(
                    (payload && payload.field) || 'identificationnr',
                    'This ID number is already registered on the membership system.'
                );
                var bannerMsg = 'This ID number is already registered as an active member. Please contact support for assistance ' + supportEmail + '.';
                if (refNumber) {
                    bannerMsg += ' Your reference number is ' + refNumber + '.';
                }
                showFormError(bannerMsg);
                updateButton();
            } else {
                var message = (payload && payload.message) || 'Something went wrong. Please try again.';
                if (payload && payload.field) {
                    showFieldError(payload.field, message);
                } else {
                    showFormError(message);
                }
                updateButton();
            }
        } catch (_) {
            showFormError('Could not reach the service. Please try again.');
            updateButton();
        }
    });

})();
</script>
				</div>
				</div>
				</div>
		</div>
						</div>
					</div>
				</div>
				</div>
		]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>A RAF Claim Doesn’t End With Submission, It Needs Proper Management</title>
		<link>https://www.roadcover.co.za/a-raf-claim-doesnt-end-with-submission/</link>
		
		<dc:creator><![CDATA[Amanda Rogaly]]></dc:creator>
		<pubDate>Mon, 14 Sep 2026 09:10:16 +0000</pubDate>
				<category><![CDATA[article]]></category>
		<guid isPermaLink="false">https://www.roadcover.co.za/?p=3030</guid>

					<description><![CDATA[When someone is injured or loses a loved one in a road accident, they expect the Road Accident Fund (RAF) process to deliver fair, efficient compensation.]]></description>
			<style id="elementor-post-3030">.elementor-3030 .elementor-element.elementor-element-4ea229{--display:flex;--padding-top:220px;--padding-bottom:0px;--padding-left:0112px;--padding-right:0112px;}.elementor-3030 .elementor-element.elementor-element-7147388e{--display:flex;--flex-direction:row;--container-widget-width:initial;--container-widget-height:100%;--container-widget-flex-grow:1;--container-widget-align-self:stretch;--flex-wrap-mobile:wrap;--padding-top:0px;--padding-bottom:0px;--padding-left:0px;--padding-right:0px;}.elementor-3030 .elementor-element.elementor-element-460f97b1{--display:flex;--flex-direction:row;--container-widget-width:calc( ( 1 - var( --container-widget-flex-grow ) ) * 100% );--container-widget-height:100%;--container-widget-flex-grow:1;--container-widget-align-self:stretch;--flex-wrap-mobile:wrap;--align-items:center;--padding-top:0px;--padding-bottom:0px;--padding-left:0px;--padding-right:0px;}.elementor-widget-text-editor{font-family:var( --e-global-typography-text-font-family ), Sans-serif;font-weight:var( --e-global-typography-text-font-weight );color:var( --e-global-color-text );}.elementor-widget-text-editor.elementor-drop-cap-view-stacked .elementor-drop-cap{background-color:var( --e-global-color-primary );}.elementor-widget-text-editor.elementor-drop-cap-view-framed .elementor-drop-cap, .elementor-widget-text-editor.elementor-drop-cap-view-default .elementor-drop-cap{color:var( --e-global-color-primary );border-color:var( --e-global-color-primary );}.elementor-3030 .elementor-element.elementor-element-565071fc{font-family:"Raleway", Sans-serif;font-size:14px;font-weight:600;color:#556DDD;}.elementor-widget-button .elementor-button{background-color:var( --e-global-color-accent );font-family:var( --e-global-typography-accent-font-family ), Sans-serif;font-weight:var( --e-global-typography-accent-font-weight );}.elementor-3030 .elementor-element.elementor-element-bc595a8 .elementor-button{background-color:#556DDD1A;font-family:"Raleway", Sans-serif;font-size:12px;font-weight:700;text-transform:uppercase;fill:#2A45AC;color:#2A45AC;border-radius:999px 999px 999px 999px;}.elementor-3030 .elementor-element.elementor-element-77cfbfa6{--display:flex;--padding-top:0px;--padding-bottom:0px;--padding-left:0px;--padding-right:0px;}.elementor-widget-theme-post-title .elementor-heading-title{font-family:var( --e-global-typography-primary-font-family ), Sans-serif;font-weight:var( --e-global-typography-primary-font-weight );color:var( --e-global-color-primary );}.elementor-3030 .elementor-element.elementor-element-2b35a6f4 .elementor-heading-title{font-family:"Raleway", Sans-serif;font-size:3.5vw;font-weight:800;}.elementor-3030 .elementor-element.elementor-element-3437ee6c{--display:flex;--flex-direction:row;--container-widget-width:calc( ( 1 - var( --container-widget-flex-grow ) ) * 100% );--container-widget-height:100%;--container-widget-flex-grow:1;--container-widget-align-self:stretch;--flex-wrap-mobile:wrap;--align-items:center;--padding-top:0px;--padding-bottom:0px;--padding-left:0px;--padding-right:0px;}.elementor-widget-divider{--divider-color:var( --e-global-color-secondary );}.elementor-widget-divider .elementor-divider__text{color:var( --e-global-color-secondary );font-family:var( --e-global-typography-secondary-font-family ), Sans-serif;font-weight:var( --e-global-typography-secondary-font-weight );}.elementor-widget-divider.elementor-view-stacked .elementor-icon{background-color:var( --e-global-color-secondary );}.elementor-widget-divider.elementor-view-framed .elementor-icon, .elementor-widget-divider.elementor-view-default .elementor-icon{color:var( --e-global-color-secondary );border-color:var( --e-global-color-secondary );}.elementor-widget-divider.elementor-view-framed .elementor-icon, .elementor-widget-divider.elementor-view-default .elementor-icon svg{fill:var( --e-global-color-secondary );}.elementor-3030 .elementor-element.elementor-element-266dd468{--divider-border-style:solid;--divider-color:#556DDD1A;--divider-border-width:2px;width:var( --container-widget-width, 28px );max-width:28px;--container-widget-width:28px;--container-widget-flex-grow:0;}.elementor-3030 .elementor-element.elementor-element-266dd468 .elementor-divider-separator{width:28px;}.elementor-3030 .elementor-element.elementor-element-266dd468 .elementor-divider{padding-block-start:15px;padding-block-end:15px;}.elementor-3030 .elementor-element.elementor-element-6ccd057e{font-family:"Raleway", Sans-serif;font-size:14px;font-weight:600;color:#2A45AC;}.elementor-3030 .elementor-element.elementor-element-bf98ae5{--display:flex;--padding-top:50px;--padding-bottom:0px;--padding-left:0px;--padding-right:0px;}.elementor-widget-theme-post-featured-image .widget-image-caption{color:var( --e-global-color-text );font-family:var( --e-global-typography-text-font-family ), Sans-serif;font-weight:var( --e-global-typography-text-font-weight );}.elementor-3030 .elementor-element.elementor-element-51ee76d2 img{border-radius:30px 30px 30px 30px;}.elementor-3030 .elementor-element.elementor-element-9e0f035{--display:flex;--gap:40px 40px;--row-gap:40px;--column-gap:40px;--padding-top:50px;--padding-bottom:080px;--padding-left:0px;--padding-right:0px;}.elementor-3030 .elementor-element.elementor-element-1830f1a0{font-family:"Raleway", Sans-serif;font-size:18px;font-weight:400;color:#2B2B2B;}.elementor-3030 .elementor-element.elementor-element-2860c438{--display:flex;border-style:solid;--border-style:solid;border-width:0px 0px 0px 4px;--border-top-width:0px;--border-right-width:0px;--border-bottom-width:0px;--border-left-width:4px;border-color:#556DDD;--border-color:#556DDD;--border-radius:0px 0px 0px 0px;--padding-top:0px;--padding-bottom:0px;--padding-left:20px;--padding-right:0px;}.elementor-3030 .elementor-element.elementor-element-55694a8{font-family:"Raleway", Sans-serif;font-size:20px;font-weight:600;color:#2A45AC;}.elementor-3030 .elementor-element.elementor-element-6e5bdb29{font-family:"Raleway", Sans-serif;font-size:18px;font-weight:400;color:#2B2B2B;}.elementor-widget-heading .elementor-heading-title{font-family:var( --e-global-typography-primary-font-family ), Sans-serif;font-weight:var( --e-global-typography-primary-font-weight );color:var( --e-global-color-primary );}.elementor-3030 .elementor-element.elementor-element-680c2805{padding:20px 0px 0px 0px;}.elementor-3030 .elementor-element.elementor-element-680c2805 .elementor-heading-title{font-family:"Raleway", Sans-serif;font-size:24px;font-weight:700;color:#2A45AC;}.elementor-3030 .elementor-element.elementor-element-fda8553{font-family:"Raleway", Sans-serif;font-size:18px;font-weight:400;color:#2B2B2B;}.elementor-3030 .elementor-element.elementor-element-c77dd03{padding:20px 0px 0px 0px;}.elementor-3030 .elementor-element.elementor-element-c77dd03 .elementor-heading-title{font-family:"Raleway", Sans-serif;font-size:24px;font-weight:700;color:#2A45AC;}.elementor-3030 .elementor-element.elementor-element-524639f{font-family:"Raleway", Sans-serif;font-size:18px;font-weight:400;color:#2B2B2B;}.elementor-3030 .elementor-element.elementor-element-87e5264{font-family:"Raleway", Sans-serif;font-size:18px;font-weight:400;color:#2B2B2B;}.elementor-3030 .elementor-element.elementor-element-0f7561c{--display:flex;--gap:40px 40px;--row-gap:40px;--column-gap:40px;--padding-top:50px;--padding-bottom:080px;--padding-left:0px;--padding-right:0px;}.elementor-3030 .elementor-element.elementor-element-f797921{font-family:"Raleway", Sans-serif;font-size:18px;font-weight:400;color:#2B2B2B;}.elementor-3030 .elementor-element.elementor-element-ae126ef{--display:flex;--padding-top:0px;--padding-bottom:0px;--padding-left:0px;--padding-right:0px;}@media(max-width:1023px){.elementor-3030 .elementor-element.elementor-element-4ea229{--padding-top:100px;--padding-bottom:0px;--padding-left:030px;--padding-right:30px;}.elementor-3030 .elementor-element.elementor-element-2b35a6f4 .elementor-heading-title{font-size:32px;}.elementor-3030 .elementor-element.elementor-element-3437ee6c{--gap:10px 10px;--row-gap:10px;--column-gap:10px;}.elementor-3030 .elementor-element.elementor-element-bf98ae5{--padding-top:0px;--padding-bottom:0px;--padding-left:10px;--padding-right:010px;}.elementor-3030 .elementor-element.elementor-element-51ee76d2{padding:30px 0px 0px 0px;}.elementor-3030 .elementor-element.elementor-element-9e0f035{--gap:20px 20px;--row-gap:20px;--column-gap:20px;--padding-top:50px;--padding-bottom:80px;--padding-left:020px;--padding-right:20px;}.elementor-3030 .elementor-element.elementor-element-1830f1a0{font-size:16px;}.elementor-3030 .elementor-element.elementor-element-55694a8{font-size:17px;}.elementor-3030 .elementor-element.elementor-element-6e5bdb29{font-size:16px;}.elementor-3030 .elementor-element.elementor-element-680c2805 .elementor-heading-title{font-size:20px;}.elementor-3030 .elementor-element.elementor-element-c77dd03 .elementor-heading-title{font-size:20px;}.elementor-3030 .elementor-element.elementor-element-0f7561c{--gap:20px 20px;--row-gap:20px;--column-gap:20px;--padding-top:50px;--padding-bottom:80px;--padding-left:020px;--padding-right:20px;}.elementor-3030 .elementor-element.elementor-element-f797921{font-size:16px;}}@media(min-width:1024px){.elementor-3030 .elementor-element.elementor-element-4ea229{--content-width:900px;}.elementor-3030 .elementor-element.elementor-element-bf98ae5{--content-width:900px;}.elementor-3030 .elementor-element.elementor-element-9e0f035{--content-width:760px;}.elementor-3030 .elementor-element.elementor-element-0f7561c{--content-width:760px;}}/* Start custom CSS for theme-post-featured-image, class: .elementor-element-51ee76d2 */@media (max-width: 768px) {
  .elementor-3030 .elementor-element.elementor-element-51ee76d2 img {
    height: 200px !important;

  }
}

.elementor-3030 .elementor-element.elementor-element-51ee76d2 img {
  width: 100%;
  height: 480px;
  object-fit: cover;
  object-position: center; /* crop from center — change to 'top' if heads get cut off */
  display: block;
}/* End custom CSS */</style>							<content:encoded><![CDATA[		<div data-elementor-type="wp-post" data-elementor-id="3030" class="elementor elementor-3030" data-elementor-post-type="post">
				<div class="elementor-element elementor-element-4ea229 e-flex e-con-boxed e-con e-parent" data-id="4ea229" data-element_type="container" data-e-type="container">
					<div class="e-con-inner">
		<div class="elementor-element elementor-element-7147388e e-con-full e-flex e-con e-child" data-id="7147388e" data-element_type="container" data-e-type="container">
		<div class="elementor-element elementor-element-460f97b1 e-con-full e-flex e-con e-child" data-id="460f97b1" data-element_type="container" data-e-type="container">
				<div class="elementor-element elementor-element-565071fc elementor-widget elementor-widget-text-editor" data-id="565071fc" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
									<a style="color: #374dc5; text-decoration: none;" href="https://www.roadcover.co.za/articles/">
← Back to Articles
</a>								</div>
				<div class="elementor-element elementor-element-bc595a8 elementor-widget elementor-widget-button" data-id="bc595a8" data-element_type="widget" data-e-type="widget" data-widget_type="button.default">
										<a class="elementor-button elementor-button-link elementor-size-sm" href="https://www.roadcover.co.za/articles/">
						<span class="elementor-button-content-wrapper">
									<span class="elementor-button-text">Road Safety &amp; Public Awareness</span>
					</span>
					</a>
								</div>
				</div>
				</div>
		<div class="elementor-element elementor-element-77cfbfa6 e-con-full e-flex e-con e-child" data-id="77cfbfa6" data-element_type="container" data-e-type="container">
				<div class="elementor-element elementor-element-2b35a6f4 elementor-widget elementor-widget-theme-post-title elementor-page-title elementor-widget-heading" data-id="2b35a6f4" data-element_type="widget" data-e-type="widget" data-widget_type="theme-post-title.default">
					<h1 class="elementor-heading-title elementor-size-default">A RAF Claim Doesn’t End With Submission, It Needs Proper Management</h1>				</div>
				</div>
		<div class="elementor-element elementor-element-3437ee6c e-con-full e-flex e-con e-child" data-id="3437ee6c" data-element_type="container" data-e-type="container">
				<div class="elementor-element elementor-element-266dd468 elementor-widget__width-initial elementor-widget-divider--view-line elementor-widget elementor-widget-divider" data-id="266dd468" data-element_type="widget" data-e-type="widget" data-widget_type="divider.default">
							<div class="elementor-divider">
			<span class="elementor-divider-separator">
						</span>
		</div>
						</div>
				<div class="elementor-element elementor-element-6ccd057e elementor-widget elementor-widget-text-editor" data-id="6ccd057e" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
									<p>Amanda Rogaly</p>								</div>
				</div>
					</div>
				</div>
		<div class="elementor-element elementor-element-bf98ae5 e-flex e-con-boxed e-con e-parent" data-id="bf98ae5" data-element_type="container" data-e-type="container">
					<div class="e-con-inner">
				<div class="elementor-element elementor-element-51ee76d2 elementor-widget elementor-widget-theme-post-featured-image elementor-widget-image" data-id="51ee76d2" data-element_type="widget" data-e-type="widget" data-widget_type="theme-post-featured-image.default">
															<img loading="lazy" decoding="async" width="800" height="534" src="https://www.roadcover.co.za/wp-content/uploads/2026/09/pexels-mikhail-nilov-8730908-1024x684.jpg" class="attachment-large size-large wp-image-3033" alt="A RAF Claim Doesn’t End With Submission, It Needs Proper Management" srcset="https://www.roadcover.co.za/wp-content/uploads/2026/09/pexels-mikhail-nilov-8730908-1024x684.jpg 1024w, https://www.roadcover.co.za/wp-content/uploads/2026/09/pexels-mikhail-nilov-8730908-300x200.jpg 300w, https://www.roadcover.co.za/wp-content/uploads/2026/09/pexels-mikhail-nilov-8730908-768x513.jpg 768w, https://www.roadcover.co.za/wp-content/uploads/2026/09/pexels-mikhail-nilov-8730908-1536x1025.jpg 1536w, https://www.roadcover.co.za/wp-content/uploads/2026/09/pexels-mikhail-nilov-8730908-2048x1367.jpg 2048w" sizes="(max-width: 800px) 100vw, 800px" title="A RAF Claim Doesn’t End With Submission, It Needs Proper Management 10">															</div>
					</div>
				</div>
		<div class="elementor-element elementor-element-9e0f035 e-flex e-con-boxed e-con e-parent" data-id="9e0f035" data-element_type="container" data-e-type="container">
					<div class="e-con-inner">
				<div class="elementor-element elementor-element-1830f1a0 elementor-widget elementor-widget-text-editor" data-id="1830f1a0" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
									<p>When someone is injured or loses a loved one in a road accident, they expect the Road Accident Fund (RAF) process to deliver fair, efficient compensation.</p><p>Unfortunately, newly published findings from Parliament’s Standing Committee on Public Accounts (SCOPA)suggest that the real problem often begins long before a matter reaches court.</p><p>SCOPA’s draft RAF inquiry report concludes that failures to investigate, settle and defend claims timeously have contributed substantially to the billions of rands spent on legal costs.</p><p>According to the draft findings, R8,63 billion was recorded against the 20 largest plaintiff law firms between April 2020 and December 2025. However, this figure was not made up only of attorneys’ fees. It also included expert expenses, interest, sheriff fees and the costs of enforcing payments.</p><p>SCOPA reportedly found that default judgments for costs and fees totalled R15,7 billion over four years. The average cost of settling a claim also increased from R114,008 in 2018/19 to R348,100 in 2024/25.</p><p>These are draft parliamentary findings, not a final report. However, they reveal something that every South African road user needs to understand: <strong>A RAF claim cannot simply be submitted and forgotten.</strong></p>								</div>
		<div class="elementor-element elementor-element-2860c438 e-con-full e-flex e-con e-child" data-id="2860c438" data-element_type="container" data-e-type="container">
				<div class="elementor-element elementor-element-55694a8 elementor-widget elementor-widget-text-editor" data-id="55694a8" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
									<p>This means that every claim requires active management. Documents must be collected, medical and expert reports must be obtained, deadlines must be monitored, evidence must be properly prepared, communication must be followed up and every file must have a clear next step.</p>								</div>
				</div>
				<div class="elementor-element elementor-element-6e5bdb29 elementor-widget elementor-widget-text-editor" data-id="6e5bdb29" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
									<p>When this does not happen, claims can stall for years, costs increase, court dates are missed and already vulnerable claimants are forced to carry even more stress.</p>								</div>
				<div class="elementor-element elementor-element-680c2805 elementor-widget elementor-widget-heading" data-id="680c2805" data-element_type="widget" data-e-type="widget" data-widget_type="heading.default">
					<h3 class="elementor-heading-title elementor-size-default">This is exactly why RoadCover exists</h3>				</div>
				<div class="elementor-element elementor-element-fda8553 elementor-widget elementor-widget-text-editor" data-id="fda8553" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
									<p>RoadCover manages qualifying RAF claims on behalf of its members from start to finish.</p><p>We do not merely submit forms and wait. We manage the documents, evidence, experts, legal process, deadlines and communication required to move the claim forward.</p><p>RoadCover is not an insurer; it is a specialist claims-management service designed to ensure that members have someone actively taking care of the entire RAF journey after an accident.</p><p>Most importantly, no legal fees or expenses are deducted from a successful RoadCover member’s settlement.</p><p><strong>The claimant receives 100% of their RAF settlement.</strong></p><p>This matters because RAF compensation is intended to help an injured person or bereaved family rebuild their lives. It may need to replace lost income, cover medical costs or support children who have lost a breadwinner.</p><p>That money should reach the person for whom it was intended.</p>								</div>
				<div class="elementor-element elementor-element-c77dd03 elementor-widget elementor-widget-heading" data-id="c77dd03" data-element_type="widget" data-e-type="widget" data-widget_type="heading.default">
					<h3 class="elementor-heading-title elementor-size-default">The lesson for every road user</h3>				</div>
				<div class="elementor-element elementor-element-524639f elementor-widget elementor-widget-text-editor" data-id="524639f" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
									<p>Do not wait until after an accident to discover how complicated the RAF process can be. RoadCover membership gives you access to an experienced team that understands the system and manages the work on your behalf when you need it most.</p><p>A RAF claim involves more than paperwork. It requires someone to keep track of every document, deadline and next step throughout the process.</p><p>No fees. No deductions. 100% of the settlement is yours.</p><p><em>The SCOPA findings discussed in this article form part of a draft parliamentary report and may change before the report is finalised.</em></p>								</div>
				<div class="elementor-element elementor-element-87e5264 elementor-widget elementor-widget-text-editor" data-id="87e5264" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
									<h6>Sources: <a href="https://pmg.org.za/committee-meeting/43638/" target="_blank" rel="noopener">Parliamentary Monitoring Group</a> and <a href="https://www.moonstone.co.za/scopa-blames-rafs-litigation-failures-for-billions-in-legal-costs/" target="_blank" rel="noopener">Moonstone Information Refinery</a></h6>								</div>
					</div>
				</div>
		<div class="elementor-element elementor-element-0f7561c e-flex e-con-boxed e-con e-parent" data-id="0f7561c" data-element_type="container" data-e-type="container">
					<div class="e-con-inner">
				<div class="elementor-element elementor-element-f797921 elementor-widget elementor-widget-text-editor" data-id="f797921" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
									<p><strong>Disclaimer:</strong> <em>The information provided in this article was correct at the time of publication and is intended for general guidance only. It is subject to change without notice as laws, regulations and membership terms evolve. RoadCover and the Road Accident Fund operate within dynamic legal frameworks and readers should verify current requirements before making decisions or entering into agreements.</em></p>								</div>
					</div>
				</div>
		<div class="elementor-element elementor-element-ae126ef e-flex e-con-boxed e-con e-parent" data-id="ae126ef" data-element_type="container" data-e-type="container">
					<div class="e-con-inner">
				<div class="elementor-element elementor-element-e385264 elementor-widget elementor-widget-shortcode" data-id="e385264" data-element_type="widget" data-e-type="widget" data-widget_type="shortcode.default">
							<div class="elementor-shortcode">		<div data-elementor-type="container" data-elementor-id="2657" class="elementor elementor-2657" data-elementor-post-type="elementor_library">
				<div class="elementor-element elementor-element-1b2aafda e-con-full e-flex e-con e-parent" data-id="1b2aafda" data-element_type="container" data-e-type="container">
				<div class="elementor-element elementor-element-4e06f177 elementor-widget elementor-widget-html" data-id="4e06f177" data-element_type="widget" data-e-type="widget" data-widget_type="html.default">
					<link href="https://fonts.googleapis.com/css2?family=Raleway:wght@400;500;600;700;800&display=swap" rel="stylesheet">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.0/css/all.min.css">

<script src="https://www.google.com/recaptcha/api.js?render=6LdwjNosAAAAAK5qrEyD0FybwyViVZOqamPK1Fnr" async defer></script>

<style>
/* ===============================================================
   RoadCover — Pricing + Onboarding Form
   All selectors scoped to #rc-pricing to avoid host-page bleed.
   PLN codes live on data-plan-code attributes of .rc-btn elements.
   ================================================================ */

#rc-pricing *, #rc-pricing *::before, #rc-pricing *::after {
    box-sizing: border-box;
}
#rc-pricing {
    font-family: 'Raleway', sans-serif;
    width: 100%;
    color: #1f2937;

    /* Plan-card palette — scoped to the embed, never :root, so the
       host page's own custom properties are left untouched. */
    --rc-blue:      #2B4FD4;
    --rc-blue-dark: #1A3399;
    --rc-gold:      #F5C842;
    --rc-gold-dark: #D4A800;
    --rc-text:      #0D1B3E;
    --rc-muted:     #6B7280;
    --rc-border:    #E4E9F8;
    --rc-success:   #16A34A;
}
.rc-wrapper {
    display: flex;
    flex-direction: column;
    gap: 48px;
}

/* ── Header ─────────────────────────────────────────────────────── */
.rc-header { text-align: center; }
.rc-header h2 {
    font-size: 30px;
    font-weight: 800;
    margin: 0 0 8px;
    color: #111827;
}
.rc-header p {
    font-size: 15px;
    color: #6b7280;
    margin: 0;
}

/* ── Single Plan Card ───────────────────────────────────────────── */
/* One responsive card serves both desktop and mobile — there is no
   longer a separate table/card pair to keep in sync. */
.rc-plan-card {
    position: relative;
    background: #fff;
    border: 1px solid var(--rc-border);
    border-radius: 18px;
    overflow: hidden;
    box-shadow: 0 10px 30px rgba(13, 27, 62, 0.08);
}

.rc-plan-header {
    position: relative;
    overflow: hidden;
    background: linear-gradient(135deg, var(--rc-blue) 0%, var(--rc-blue-dark) 100%);
    padding: 32px 28px 30px;
    text-align: center;
}
.rc-plan-header::before {
    content: '';
    position: absolute;
    width: 220px;
    height: 220px;
    right: -90px;
    top: -70px;
    border-radius: 50%;
    background: rgba(255, 255, 255, 0.08);
}
.rc-plan-header::after {
    content: '';
    position: absolute;
    width: 140px;
    height: 140px;
    left: -50px;
    bottom: -50px;
    border-radius: 50%;
    background: rgba(245, 200, 66, 0.14);
}
.rc-plan-header > * { position: relative; z-index: 2; }

.rc-plan-name {
    font-size: 11px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.1em;
    color: rgba(255, 255, 255, 0.65);
    margin-bottom: 6px;
}
.rc-plan-price {
    font-size: 44px;
    font-weight: 900;
    color: var(--rc-gold);
    line-height: 1.1;
}
.rc-plan-price-unit {
    font-size: 14px;
    font-weight: 600;
    color: rgba(255, 255, 255, 0.6);
}
.rc-plan-subprice {
    margin-top: 6px;
    font-size: 12px;
    font-weight: 600;
    color: var(--rc-gold);
    min-height: 16px;
}

.rc-plan-rows { padding: 6px 28px; }
.rc-plan-row {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    padding: 14px 0;
    border-bottom: 1px solid var(--rc-border);
}
.rc-plan-row:last-child { border-bottom: none; }
.rc-plan-row-label {
    font-size: 13.5px;
    font-weight: 600;
    color: var(--rc-text);
}
.rc-plan-row-icon {
    width: 22px;
    height: 22px;
    flex-shrink: 0;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    background: #ECFDF3;
    color: var(--rc-success);
}
.rc-plan-row-icon svg { width: 13px; height: 13px; display: block; }

.rc-plan-cta-block { padding: 20px 28px 26px; }
.rc-plan-cta-hint {
    text-align: center;
    margin-top: 10px;
    font-size: 11px;
    color: var(--rc-muted);
}

/* ── Plan Select Button (JS hook: .rc-btn) ──────────────────────── */
.rc-btn {
    width: 100%;
    padding: 13px 18px;
    border: none;
    border-radius: 10px;
    background: var(--rc-gold);
    color: var(--rc-text);
    font-family: inherit;
    font-size: 14px;
    font-weight: 800;
    letter-spacing: 0.01em;
    cursor: pointer;
    transition: background 0.15s, transform 0.1s;
}
.rc-btn:hover   { background: var(--rc-gold-dark); }
.rc-btn:active  { transform: scale(0.99); }
.rc-btn.rc-selected { background: var(--rc-gold-dark); }

/* ── Form Section ───────────────────────────────────────────────── */
#rc-form-section { display: none; }
#rc-form-section.rc-visible {
    display: block;
    animation: rc-fadein 0.22s ease;
}
@keyframes rc-fadein {
    from { opacity: 0; transform: translateY(10px); }
    to   { opacity: 1; transform: translateY(0); }
}

.rc-form-inner {
    display: flex;
    flex-direction: column;
    gap: 22px;
    background: linear-gradient(135deg, #2A45AC, #1f358a);
    border-radius: 12px;
    padding: 40px;
}

.rc-selected-badge {
    display: inline-block;
    background: rgba(255, 255, 255, 0.15);
    color: #FFD84D;
    font-size: 13px;
    font-weight: 700;
    border-radius: 6px;
    padding: 7px 13px;
}

.rc-form-title {
    font-size: 20px;
    font-weight: 800;
    color: #fff;
    margin: 0;
}

/* Field grid — first two fields sit side-by-side */
.rc-field-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 14px;
}
.rc-field-full { grid-column: 1 / -1; }

.rc-field {
    display: flex;
    flex-direction: column;
    gap: 5px;
}
.rc-field-label {
    font-size: 11px;
    font-weight: 700;
    color: rgba(255, 255, 255, 0.7);
    text-transform: uppercase;
    letter-spacing: 0.05em;
}

/* Icon floats over the input; no separate column, no column border */
.rc-input-row {
    position: relative;
    border: 1px solid #6f7ec1;
    border-radius: 8px;
    background: #3d54ac;
    transition: border-color 0.15s, box-shadow 0.15s;
}
.rc-input-row:focus-within {
    border-color: #a0aee0;
    box-shadow: 0 0 0 3px rgba(111, 126, 193, 0.3);
}
.rc-input-row:has(.invalid) { border-color: #FF3B30; }
.rc-input-row:has(.invalid):focus-within {
    box-shadow: 0 0 0 3px rgba(129, 12, 12, 0.25);
}

.rc-input-icon {
    position: absolute;
    left: 14px;
    top: 50%;
    transform: translateY(-50%);
    color: rgba(255, 255, 255, 0.55);
    font-size: 14px;
    pointer-events: none;
}

.rc-input {
    display: block;
    width: 100%;
    padding: 11px 14px 11px 44px !important;
    border: 0;
    box-shadow: none;
    border-radius: 8px;
    background: transparent;
    font-family: inherit;
    font-size: 14px;
    color: #fff;
    -webkit-appearance: none;
    appearance: none;
    outline: none;
}
#rc-pricing .rc-input::placeholder { color: rgb(248, 248, 248); }
.rc-input.invalid { /* border shown via :has on .rc-input-row */ }

/* Native select chevron */
select.rc-input {
    padding-right: 36px;
    background-color: #3d54ac;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='7' viewBox='0 0 12 7'%3E%3Cpolyline points='1,1 6,6 11,1' fill='none' stroke='%23a0aee0' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
    background-repeat: no-repeat;
    background-position: right 12px center;
    cursor: pointer;
    color: #fff;
}

.rc-field-error {
    font-size: 12px;
    color: #FF3B30;
    margin: 0;
    line-height: 1.4;
}

/* T&C checkbox */
.rc-terms {
    display: flex;
    align-items: center;
    gap: 10px;
    font-size: 14px;
    color: rgba(255, 255, 255, 0.85);
    cursor: pointer;
    user-select: none;
}
.rc-terms input[type="checkbox"] {
    width: 17px;
    height: 17px;
    cursor: pointer;
    flex-shrink: 0;
    accent-color: #FFD84D;
}
.rc-terms.invalid { color: #FF3B30; }
.rc-terms.invalid input[type="checkbox"] {
    outline: 2px solid #FF3B30;
    outline-offset: 2px;
    border-radius: 2px;
}

.rc-submit:disabled,
.rc-submit:disabled:hover {
    background: #FFD84D; /* same as default */
    cursor: not-allowed;
}
/* Submit button */
.rc-submit {
    width: 100%;
    padding: 14px 20px;
    border: none;
    border-radius: 10px;
    background: #FFD84D;
    color: #1f358a;
    font-family: inherit;
    font-size: 15px;
    font-weight: 700;
    cursor: pointer;
    transition: background 0.15s, transform 0.1s;
    letter-spacing: 0.01em;
}
.rc-submit:hover:not([disabled]) { background: #f5cc35; }
.rc-submit:active:not([disabled]) { transform: scale(0.99); }
.rc-submit[disabled] { opacity: 0.5; cursor: not-allowed; }

.rc-form-error {
    font-size: 13px;
    color: #FF3B30;
    margin: 0;
    line-height: 1.5;
}

.rc-recaptcha-notice {
    font-size: 11px;
    color: rgba(255, 255, 255, 0.45);
    margin: 0;
    line-height: 1.5;
    text-align: center;
}
.rc-recaptcha-notice a {
    color: rgba(255, 255, 255, 0.55);
    text-decoration: underline;
}

/* ── Billing Toggle ─────────────────────────────────────────────── */
/* Sits on the dark gradient header, so it is styled for a dark ground. */
.rc-billing-toggle {
    display: inline-flex;
    background: rgba(255, 255, 255, 0.12);
    border: 1.5px solid rgba(255, 255, 255, 0.2);
    border-radius: 999px;
    padding: 3px;
    gap: 2px;
    margin-bottom: 20px;
}
.rc-toggle-opt {
    padding: 7px 20px;
    border: none;
    border-radius: 999px;
    background: transparent;
    color: rgba(255, 255, 255, 0.75);
    font-family: inherit;
    font-size: 12.5px;
    font-weight: 700;
    cursor: pointer;
    transition: background 0.2s ease, color 0.2s ease;
    white-space: nowrap;
    line-height: 1;
}
.rc-toggle-opt:hover:not(.rc-toggle-active) {
    background: rgba(255, 255, 255, 0.08);
}
.rc-toggle-opt.rc-toggle-active {
    background: var(--rc-gold);
    color: var(--rc-text);
}

.rc-save-badge {
    display: inline-block;
    margin-left: 6px;
    padding: 1px 6px;
    border-radius: 999px;
    font-size: 9.5px;
    font-weight: 800;
    color: rgba(255, 255, 255, 0.85);
    background: rgba(255, 255, 255, 0.16);
}
/* On the gold active pill, white-on-gold is unreadable — invert it. */
.rc-toggle-active .rc-save-badge {
    color: var(--rc-text);
    background: rgba(13, 27, 62, 0.12);
}

/* ── Responsive ─────────────────────────────────────────────────── */
@media (max-width: 700px) {
    #rc-pricing     { padding: 0px 0px; }
    .rc-wrapper     { gap: 32px; }
    .rc-plan-header { padding: 28px 20px 26px; }
    .rc-plan-price  { font-size: 38px; }
    .rc-plan-rows   { padding: 6px 20px; }
    .rc-plan-cta-block { padding: 18px 20px 22px; }
    .rc-field-grid  { grid-template-columns: 1fr; }
    .rc-field-full  { grid-column: 1; }
    .rc-form-inner  { padding: 24px 20px; }
    .rc-header h2   { font-size: 24px; }
}
</style>

<!-- ================================================================
     PRICING TABLE + ONBOARDING FORM
     ================================================================ -->
<div id="rc-pricing">
  <div class="rc-wrapper">

    <!-- Single plan card — one responsive card for desktop and mobile -->
    <div class="rc-plan-card" data-plan-key="RoadCover">

      <div class="rc-plan-header">
        <div class="rc-billing-toggle" role="group" aria-label="Billing period">
          <button type="button" class="rc-toggle-opt rc-toggle-active" data-billing="monthly">Monthly</button>
          <button type="button" class="rc-toggle-opt" data-billing="annual">Annual <span class="rc-save-badge">Save 6%</span></button>
        </div>

        <div class="rc-plan-name">RoadCover</div>
        <div class="rc-plan-price"><span class="rc-plan-price-val">R49</span><span class="rc-plan-price-unit">/mo</span></div>
        <div class="rc-plan-subprice" hidden></div>
      </div>

      <div class="rc-plan-rows">
        <div class="rc-plan-row">
          <span class="rc-plan-row-label">RAF Claim Support</span>
          <span class="rc-plan-row-icon" role="img" aria-label="Included">
            <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><polyline points="20 6 9 17 4 12"></polyline></svg>
          </span>
        </div>
        <div class="rc-plan-row">
          <span class="rc-plan-row-label">Legal Expertise</span>
          <span class="rc-plan-row-icon" role="img" aria-label="Included">
            <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><polyline points="20 6 9 17 4 12"></polyline></svg>
          </span>
        </div>
      </div>

      <div class="rc-plan-cta-block">
        <button class="rc-btn"
                data-plan="RoadCover"
                data-plan-code="RC49"
                data-price="49.00 /Month">Select RoadCover &#8594;</button>
        <div class="rc-plan-cta-hint">No fees. 100% of your payout.</div>
      </div>

    </div><!-- /.rc-plan-card -->

    <!-- Form: hidden until a plan is selected -->
    <div id="rc-form-section">
      <form id="roadcover-form" novalidate>

        <!-- product_code is set programmatically on plan button click -->
        <input type="hidden" name="product_code" id="cover-input">
        <input type="hidden" name="form_id"   value="9a3d492">
        <input type="hidden" name="form_name" value="Get RoadCover">

        <div class="rc-form-inner">

          <div id="selectedPlan" class="rc-selected-badge">Selected: &#8212;</div>
          <p class="rc-form-title">Enter your details</p>

          <div class="rc-field-grid">

            <!-- Row 1: name -->
            <div class="rc-field">
              <label class="rc-field-label" for="rc-first-name">First name *</label>
              <div class="rc-input-row">
                <i class="fa-solid fa-user rc-input-icon" aria-hidden="true"></i>
                <input class="rc-input" type="text" id="rc-first-name"
                       name="first_name" required maxlength="60" placeholder="First name">
              </div>
            </div>

            <div class="rc-field">
              <label class="rc-field-label" for="rc-last-name">Last name *</label>
              <div class="rc-input-row">
                <i class="fa-solid fa-user rc-input-icon" aria-hidden="true"></i>
                <input class="rc-input" type="text" id="rc-last-name"
                       name="last_name" required maxlength="60" placeholder="Last name">
              </div>
            </div>

            <!-- Row 2: identity -->
            <div class="rc-field">
              <label class="rc-field-label" for="rc-id">ID number *</label>
              <div class="rc-input-row">
                <i class="fa-solid fa-id-card rc-input-icon" aria-hidden="true"></i>
                <input class="rc-input" type="text" id="rc-id"
                       name="identificationnr" required pattern="[0-9]{13}"
                       inputmode="numeric" maxlength="13"
                       placeholder="13-digit SA ID number">
              </div>
            </div>

            <div class="rc-field">
              <label class="rc-field-label" for="rc-gender">Gender *</label>
              <div class="rc-input-row">
                <i class="fa-solid fa-venus-mars rc-input-icon" aria-hidden="true"></i>
                <select class="rc-input" id="rc-gender" name="gender" required>
                  <option value="">Select&hellip;</option>
                  <option value="1">Male</option>
                  <option value="2">Female</option>
                </select>
              </div>
            </div>

            <!-- Row 3: contact -->
            <div class="rc-field">
              <label class="rc-field-label" for="rc-email">Email *</label>
              <div class="rc-input-row">
                <i class="fa-solid fa-envelope rc-input-icon" aria-hidden="true"></i>
                <input class="rc-input" type="email" id="rc-email"
                       name="email" required maxlength="254"
                       placeholder="you@example.com">
              </div>
            </div>

            <div class="rc-field">
              <label class="rc-field-label" for="rc-mobile">Mobile *</label>
              <div class="rc-input-row">
                <i class="fa-solid fa-phone rc-input-icon" aria-hidden="true"></i>
                <input class="rc-input" type="tel" id="rc-mobile"
                       name="mobile" required inputmode="tel"
                       placeholder="0XXXXXXXXX or +27XXXXXXXXX">
              </div>
            </div>

            <!-- Row 4: optional -->
            <div class="rc-field rc-field-full">
              <label class="rc-field-label" for="rc-promo">Promo code</label>
              <div class="rc-input-row">
                <i class="fa-solid fa-tag rc-input-icon" aria-hidden="true"></i>
                <input class="rc-input" type="text" id="rc-promo"
                       name="promo_code" maxlength="32" placeholder="Optional">
              </div>
            </div>

          </div><!-- /.rc-field-grid -->

          <label class="rc-terms">
            <input type="checkbox" name="I accept the Terms and Conditions." required>
            <span>I accept the Terms and Conditions.</span>
          </label>

          <button type="submit" id="submit-btn" class="rc-submit">Continue</button>
          <p id="form-error" class="rc-form-error" hidden></p>

          <p class="rc-recaptcha-notice">This site is protected by reCAPTCHA and the Google <a href="https://policies.google.com/privacy" target="_blank" rel="noopener noreferrer">Privacy Policy</a> and <a href="https://policies.google.com/terms" target="_blank" rel="noopener noreferrer">Terms of Service</a> apply.</p>

        </div><!-- /.rc-form-inner -->
      </form>
    </div><!-- /#rc-form-section -->

  </div><!-- /.rc-wrapper -->
</div><!-- /#rc-pricing -->

<script>
(function () {
    var form           = document.getElementById('roadcover-form');
    var errEl          = document.getElementById('form-error');
    var submitBtn      = document.getElementById('submit-btn');
    var coverInput     = document.getElementById('cover-input');
    var formSection    = document.getElementById('rc-form-section');
    var selectedPlanEl = document.getElementById('selectedPlan');
    var pricing        = document.getElementById('rc-pricing');

    var currentPrice   = '';
    var isAnnual       = false;
    var currentPlanBtn = null;

    // ── Plan + billing data ───────────────────────────────────────────────────
    var planData = {
        'RoadCover': {
            monthly: { priceVal: 'R49', unit: '/mo', code: 'RC49',         priceStr: '49.00 /Month',  subprice: '' },
            annual:  { priceVal: 'R550', unit: '/yr', code: 'PRD-CB838AEF', priceStr: '550.00 /Year', subprice: '~R46/mo' }
        }
    };

    // ── Apply billing mode to all price displays and button codes ─────────────
    function applyBilling() {
        var mode = isAnnual ? 'annual' : 'monthly';

        // Plan card price display
        pricing.querySelectorAll('.rc-plan-card[data-plan-key]').forEach(function (card) {
            var d = planData[card.dataset.planKey][mode];
            card.querySelector('.rc-plan-price-val').textContent  = d.priceVal;
            card.querySelector('.rc-plan-price-unit').textContent = d.unit;
            var sub = card.querySelector('.rc-plan-subprice');
            sub.textContent = d.subprice;
            sub.hidden      = !d.subprice;
        });

        // Update data-plan-code on all buttons so selection highlighting still works
        pricing.querySelectorAll('.rc-btn').forEach(function (btn) {
            var key = btn.dataset.plan;
            if (!planData[key]) return;
            btn.dataset.planCode = planData[key][mode].code;
            btn.dataset.price    = planData[key][mode].priceStr;
        });

        // If a plan was already selected, refresh the hidden input + badge + button label
        if (currentPlanBtn) {
            var key     = currentPlanBtn.dataset.plan;
            var d       = planData[key][mode];
            var billing = isAnnual ? 'Annual' : 'Monthly';
            coverInput.value           = d.code;
            currentPrice               = d.priceStr;
            selectedPlanEl.textContent = 'Selected: ' + key + ' (' + billing + ')';
            updateButton();
        }
    }

    // ── Helpers (mirrored in n8n Code node — keep in sync) ───────────────────

    function clean(v) {
        if (v === null || v === undefined) return '';
        var s = String(v);
        s = s.replace(/[\x00-\x08\x0B\x0C\x0E-\x1F\x7F]/g, '');
        s = s.replace(/<script\b[^>]*>[\s\S]*?<\/script\s*>/gi, '');
        s = s.replace(/<\/?[a-zA-Z][^>]*>/g, '');
        s = s.replace(/javascript\s*:/gi, '');
        s = s.replace(/\s+/g, ' ').trim();
        return s;
    }

    function luhnValid(idStr) {
        var sum = 0;
        for (var i = 0; i < 13; i++) {
            var n = parseInt(idStr.charAt(i), 10);
            if (i % 2 === 1) { n *= 2; if (n > 9) n -= 9; }
            sum += n;
        }
        return sum % 10 === 0;
    }

    // Returns { ok: true } or { ok: false, field, message }
    function validate(data) {
        var required = {
            product_code:       'Please select a cover plan.',
            first_name:         'First name is required.',
            last_name:          'Last name is required.',
            email:              'Email is required.',
            mobile:             'Mobile number is required.',
            identificationnr:   'ID number is required.',
            gender:             'Please select your gender.'
        };
        for (var k in required) {
            if (!data[k]) return { ok: false, field: k, message: required[k] };
        }

        if (data.first_name.length > 60)
            return { ok: false, field: 'first_name', message: 'First name is too long (max 60).' };
        if (data.last_name.length > 60)
            return { ok: false, field: 'last_name', message: 'Last name is too long (max 60).' };

        var emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
        if (!emailRegex.test(data.email))
            return { ok: false, field: 'email', message: 'Please enter a valid email address.' };
        if (data.email.length > 254)
            return { ok: false, field: 'email', message: 'Email is too long.' };

        var mobileRegex = /^(\+27|0)[0-9]{9}$/;
        if (!mobileRegex.test(data.mobile))
            return { ok: false, field: 'mobile', message: 'Mobile must be 10 digits starting with 0, or +27 followed by 9 digits.' };

        var genderNum = Number(data.gender);
        if (genderNum !== 1 && genderNum !== 2)
            return { ok: false, field: 'gender', message: 'Please select your gender.' };

        if (!/^[0-9]{13}$/.test(data.identificationnr))
            return { ok: false, field: 'identificationnr', message: 'ID number must be exactly 13 digits.' };

        var yy        = parseInt(data.identificationnr.substring(0, 2), 10);
        var mm        = parseInt(data.identificationnr.substring(2, 4), 10);
        var dd        = parseInt(data.identificationnr.substring(4, 6), 10);
        var now       = new Date();
        var currentYY = now.getFullYear() % 100;
        var fullYear  = (yy > currentYY) ? (1900 + yy) : (2000 + yy);
        var dob       = new Date(fullYear, mm - 1, dd);
        var dobValid  =
            dob.getFullYear() === fullYear &&
            dob.getMonth()    === (mm - 1) &&
            dob.getDate()     === dd       &&
            dob <= now;
        if (!dobValid)
            return { ok: false, field: 'identificationnr', message: 'The first 6 digits of your ID number are not a valid date of birth.' };

        var genderDigits = parseInt(data.identificationnr.substring(6, 10), 10);
        var idGender     = genderDigits >= 5000 ? 1 : 2;
        if (idGender !== genderNum) {
            var expected = idGender === 1 ? 'Male' : 'Female';
            return { ok: false, field: 'identificationnr',
                     message: 'The selected gender does not match your ID number (ID indicates ' + expected + ').' };
        }

        if (!luhnValid(data.identificationnr))
            return { ok: false, field: 'identificationnr', message: 'ID number checksum is invalid. Please check the number.' };

        return { ok: true };
    }

    // ── UI helpers ────────────────────────────────────────────────────────────

    function clearFieldErrors() {
        form.querySelectorAll('.invalid').forEach(function (el) { el.classList.remove('invalid'); });
        form.querySelectorAll('.rc-field-error').forEach(function (el) { el.remove(); });
    }

    function showFieldError(fieldName, message) {
        // product_code is a hidden input — surface as a form-level error
        if (fieldName === 'product_code') {
            showFormError(message);
            return;
        }
        var input = form.querySelector('[name="' + fieldName + '"]');
        if (!input) return;
        input.classList.add('invalid');
        var field = input.closest('.rc-field') || input.parentElement;
        var span  = field.querySelector('.rc-field-error');
        if (!span) {
            span = document.createElement('span');
            span.className = 'rc-field-error';
            field.appendChild(span);
        }
        span.textContent = message;
        input.focus();
    }

    function showFormError(message) {
        errEl.textContent = message;
        errEl.hidden = false;
    }

    function hideFormError() {
        errEl.hidden = true;
        errEl.textContent = '';
    }

    function updateButton() {
        submitBtn.textContent = currentPrice ? ('Continue • R' + currentPrice) : 'Continue';
        submitBtn.disabled    = false;
    }

    // ── Collect & sanitise ────────────────────────────────────────────────────

    function collectData() {
        var fd = new FormData(form);
        return {
            product_code:       clean(fd.get('product_code')),
            first_name:         clean(fd.get('first_name')),
            last_name:          clean(fd.get('last_name')),
            email:              clean(fd.get('email')).toLowerCase(),
            mobile:             clean(fd.get('mobile')),
            identificationnr:   clean(fd.get('identificationnr')),
            gender:             clean(fd.get('gender')),
            promo_code:         clean(fd.get('promo_code'))
        };
    }

    // ── Billing toggle ────────────────────────────────────────────────────────

    pricing.querySelectorAll('.rc-toggle-opt').forEach(function (btn) {
        btn.addEventListener('click', function () {
            if (btn.dataset.billing === (isAnnual ? 'annual' : 'monthly')) return;
            isAnnual = !isAnnual;
            pricing.querySelectorAll('.rc-toggle-opt').forEach(function (b) {
                b.classList.toggle('rc-toggle-active', b.dataset.billing === (isAnnual ? 'annual' : 'monthly'));
            });
            applyBilling();
        });
    });

    // ── Plan selection ────────────────────────────────────────────────────────

    pricing.querySelectorAll('.rc-btn').forEach(function (planBtn) {
        planBtn.addEventListener('click', function () {
            var code    = planBtn.dataset.planCode;
            var plan    = planBtn.dataset.plan;
            var price   = planBtn.dataset.price || '';
            var billing = isAnnual ? 'Annual' : 'Monthly';

            currentPlanBtn = planBtn;

            // Highlight every button sharing the same plan code (desktop + mobile pair)
            pricing.querySelectorAll('.rc-btn').forEach(function (b) {
                b.classList.toggle('rc-selected', b.dataset.planCode === code);
            });

            coverInput.value           = code;
            currentPrice               = price;
            selectedPlanEl.textContent = 'Selected: ' + plan + ' (' + billing + ')';
            updateButton();

            formSection.classList.add('rc-visible');
            formSection.scrollIntoView({ behavior: 'smooth', block: 'nearest' });

            clearFieldErrors();
            hideFormError();
        });
    });

    // ── Initialise billing display ────────────────────────────────────────────
    applyBilling();

    // ── Clear errors on edit ──────────────────────────────────────────────────

    form.addEventListener('input', function (e) {
        if (e.target.classList.contains('invalid')) {
            e.target.classList.remove('invalid');
            var f = e.target.closest('.rc-field');
            if (f) { var s = f.querySelector('.rc-field-error'); if (s) s.remove(); }
        }
        hideFormError();
    });

    form.addEventListener('change', function (e) {
        if (e.target.classList.contains('invalid')) {
            e.target.classList.remove('invalid');
            var f = e.target.closest('.rc-field');
            if (f) { var s = f.querySelector('.rc-field-error'); if (s) s.remove(); }
        }
        if (e.target.type === 'checkbox' && e.target.checked) {
            var label = e.target.closest('label.rc-terms');
            if (label) label.classList.remove('invalid');
            hideFormError();
        }
    });

    // ── Form submit ───────────────────────────────────────────────────────────

    form.addEventListener('submit', async function (e) {
        e.preventDefault();
        hideFormError();
        clearFieldErrors();

        var data   = collectData();
        var result = validate(data);
        if (!result.ok) {
            showFieldError(result.field, result.message);
            return;
        }

        var termsBox = form.querySelector('input[type="checkbox"][required]');
        if (termsBox && !termsBox.checked) {
            var termsLabel = termsBox.closest('label.rc-terms');
            if (termsLabel) termsLabel.classList.add('invalid');
            termsBox.focus();
            showFormError('Please accept the Terms and Conditions to continue.');
            return;
        }

        submitBtn.disabled    = true;
        submitBtn.textContent = 'Processing…';

        // ── reCAPTCHA v3 — must complete before the network request ──────────
        var recaptchaToken = '';
        try {
            recaptchaToken = await new Promise(function (resolve, reject) {
                if (typeof grecaptcha === 'undefined') { reject(new Error('not loaded')); return; }
                grecaptcha.ready(function () {
                    grecaptcha.execute('6LdwjNosAAAAAK5qrEyD0FybwyViVZOqamPK1Fnr', { action: 'submit' })
                        .then(resolve).catch(reject);
                });
            });
        } catch (_) {
            showFormError('Security check could not complete. Please disable any ad blockers and try again.');
            updateButton();
            return;
        }

        try {
            // Send sanitised data so the backend receives cleaned values
            var params = new URLSearchParams();
            for (var k in data) params.append(k, data[k]);
            params.append('form_id',   form.querySelector('[name="form_id"]').value   || '');
            params.append('form_name', form.querySelector('[name="form_name"]').value || '');
            params.append('I accept the Terms and Conditions.', 'on');
            params.append('recaptcha_token', recaptchaToken);

            var res     = await fetch('https://n8n.roadcover.co.za/webhook/form', {
                method:  'POST',
                headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
                body:    params.toString()
            });
            var json    = await res.json();
            var payload = Array.isArray(json) ? json[0] : json;
            var paymentUrl = (payload && payload.data && payload.data.payment_url)
                           || (payload && payload.payment_url);

            if (res.ok && payload && payload.success && paymentUrl) {
                window.location.href = paymentUrl;
            } else if (payload && (payload.error_code === 'DUPLICATE_MEMBER' || payload.error_code === 'DUPLICATE_ACTIVE_MEMBER')) {
                var supportEmail = (payload && payload.support_email) || 'info@roadcover.co.za';
                var refNumber = payload && payload.reference_number;
                showFieldError(
                    (payload && payload.field) || 'identificationnr',
                    'This ID number is already registered on the membership system.'
                );
                var bannerMsg = 'This ID number is already registered as an active member. Please contact support for assistance ' + supportEmail + '.';
                if (refNumber) {
                    bannerMsg += ' Your reference number is ' + refNumber + '.';
                }
                showFormError(bannerMsg);
                updateButton();
            } else {
                var message = (payload && payload.message) || 'Something went wrong. Please try again.';
                if (payload && payload.field) {
                    showFieldError(payload.field, message);
                } else {
                    showFormError(message);
                }
                updateButton();
            }
        } catch (_) {
            showFormError('Could not reach the service. Please try again.');
            updateButton();
        }
    });

})();
</script>
				</div>
				</div>
				</div>
		</div>
						</div>
					</div>
				</div>
				</div>
		]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
