| main_content | | string | <meta charset="UTF-8" /><meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title></title>
<link href="https://fonts.googleapis.com" rel="preconnect" />
<link crossorigin="" href="https://fonts.gstatic.com" rel="preconnect" />
<link href="https://fonts.googleapis.com/css2?family=Fraunces:opsz,[email protected],500;9..144,600;9..144,700&family=Source+Sans+3:wght@400;500;600;700&display=swap" rel="stylesheet" />
<style type="text/css">:root{
--navy-deep:#0A2036;
--navy:#0F2C4C;
--navy-mid:#17406B;
--brass:#A9814C;
--brass-light:#C9A66B;
--cream:#F6F3EC;
--paper:#FFFFFF;
--ink:#16232F;
--ink-soft:#51606D;
--line:#DDD6C7;
--good:#3E6B52;
--radius:2px;
--serif:'Fraunces', Georgia, serif;
--sans:'Source Sans 3', -apple-system, BlinkMacSystemFont, sans-serif;
}
*{box-sizing:border-box;}
html,body{margin:0;padding:0;}
body{
font-family:var(--sans);
background:var(--cream);
color:var(--ink);
-webkit-font-smoothing:antialiased;
}
.rpl-app{
max-width:960px;
margin:0 auto;
padding:32px 20px 64px;
}
/* ---------- Header ---------- */
.rpl-header{
display:flex;
align-items:flex-end;
justify-content:space-between;
gap:16px;
border-bottom:1px solid var(--line);
padding-bottom:20px;
margin-bottom:28px;
}
.rpl-eyebrow{
font-family:var(--sans);
font-size:11px;
letter-spacing:.14em;
text-transform:uppercase;
color:var(--brass);
font-weight:700;
margin:0 0 6px;
}
.rpl-title{
font-family:var(--serif);
font-optical-sizing:auto;
font-weight:600;
font-size:clamp(24px,4vw,34px);
line-height:1.15;
margin:0;
color:var(--navy-deep);
}
.rpl-restart{
background:none;
border:1px solid var(--line);
color:var(--ink-soft);
font-family:var(--sans);
font-size:13px;
padding:8px 14px;
border-radius:var(--radius);
cursor:pointer;
white-space:nowrap;
transition:border-color .15s ease, color .15s ease;
}
.rpl-restart:hover{border-color:var(--brass); color:var(--navy-deep);}
.rpl-restart:focus-visible{outline:2px solid var(--brass); outline-offset:2px;}
/* ---------- Trail (the signature element) ---------- */
.rpl-trail{
display:flex;
flex-wrap:wrap;
gap:8px 0;
margin-bottom:32px;
font-family:var(--sans);
}
.rpl-trail-item{
display:flex;
align-items:center;
font-size:13px;
color:var(--ink-soft);
max-width:100%;
}
.rpl-trail-item .dot{
width:6px;height:6px;border-radius:50%;
background:var(--brass);
margin-right:8px;
flex:none;
}
.rpl-trail-item .ans{
font-weight:600;
color:var(--navy);
margin-left:6px;
}
.rpl-trail-sep{
width:22px;height:1px;background:var(--line);
margin:0 10px;
align-self:center;
}
@media (max-width:640px){
.rpl-trail{display:none;}
.rpl-progress-mobile{display:flex;}
}
.rpl-progress-mobile{
display:none;
align-items:center;
gap:6px;
margin-bottom:24px;
}
.rpl-progress-mobile .seg{
height:3px; flex:1;
background:var(--line);
border-radius:2px;
}
.rpl-progress-mobile .seg.filled{ background:var(--brass); }
/* ---------- Card / stage ---------- */
.rpl-stage{
background:var(--paper);
border:1px solid var(--line);
border-radius:var(--radius);
padding:clamp(24px,4vw,44px);
position:relative;
overflow:hidden;
}
.rpl-stage::before{
content:"";
position:absolute;
top:0; left:0;
width:4px; height:100%;
background:var(--brass);
}
.rpl-kicker{
font-family:var(--sans);
font-size:12px;
letter-spacing:.1em;
text-transform:uppercase;
color:var(--brass);
font-weight:700;
margin:0 0 12px;
}
.rpl-question{
font-family:var(--serif);
font-weight:600;
font-size:clamp(20px,3vw,28px);
line-height:1.25;
color:var(--navy-deep);
margin:0 0 8px;
}
.rpl-subtext{
font-size:18px;
color:var(--ink-soft);
line-height:1.65;
margin:0 0 28px;
max-width:56ch;
}
.rpl-subtext strong{color:var(--ink);}
.rpl-options{
display:flex;
gap:14px;
flex-wrap:wrap;
}
.rpl-option{
flex:1 1 200px;
display:flex;
align-items:center;
justify-content:space-between;
gap:10px;
padding:16px 20px;
border:1px solid var(--line);
background:var(--cream);
border-radius:var(--radius);
font-family:var(--sans);
font-size:16px;
font-weight:600;
color:var(--navy-deep);
cursor:pointer;
text-align:left;
transition:border-color .15s ease, background .15s ease, transform .1s ease;
}
.rpl-option:hover{
border-color:var(--brass);
background:#FBF8F1;
}
.rpl-option:active{ transform:scale(0.99); }
.rpl-option:focus-visible{ outline:2px solid var(--brass); outline-offset:2px; }
.rpl-option .arrow{
color:var(--brass);
font-size:18px;
transition:transform .15s ease;
}
.rpl-option:hover .arrow{ transform:translateX(3px); }
.rpl-back{
display:inline-flex;
align-items:center;
gap:6px;
background:none;
border:none;
color:var(--ink-soft);
font-family:var(--sans);
font-size:13px;
padding:0;
margin-bottom:18px;
cursor:pointer;
}
.rpl-back:hover{ color:var(--navy-deep); }
.rpl-back:focus-visible{ outline:2px solid var(--brass); outline-offset:2px; }
/* ---------- Result ---------- */
.rpl-result-badge{
display:inline-block;
font-family:var(--sans);
font-size:11px;
letter-spacing:.12em;
text-transform:uppercase;
font-weight:700;
padding:5px 10px;
border-radius:2px;
margin-bottom:16px;
}
.badge-award{ background:#EAF1EC; color:var(--good); }
.badge-info{ background:#EFF2F6; color:var(--navy-mid); }
.badge-check{ background:#FBF3E7; color:var(--brass); }
.rpl-result-title{
font-family:var(--serif);
font-weight:700;
font-size:clamp(22px,3.4vw,30px);
color:var(--navy-deep);
margin:0 0 14px;
line-height:1.2;
}
.rpl-result-body{
font-size:16px;
line-height:1.65;
color:var(--ink);
margin:0 0 28px;
max-width:60ch;
}
.rpl-result-body strong{ color:var(--navy-deep); }
.rpl-cta-row{
display:flex;
gap:12px;
flex-wrap:wrap;
}
.rpl-cta{
display:inline-flex;
align-items:center;
gap:8px;
font-family:var(--sans);
font-weight:600;
font-size:14px;
padding:13px 22px;
border-radius:2px;
text-decoration:none;
cursor:pointer;
border:1px solid transparent;
}
.rpl-cta.primary{ background:var(--navy-deep); color:#fff; }
.rpl-cta.primary:hover{ background:var(--navy); }
.rpl-cta.secondary{ background:none; border-color:var(--line); color:var(--navy-deep); }
.rpl-cta.secondary:hover{ border-color:var(--brass); }
.rpl-cta:focus-visible{ outline:2px solid var(--brass); outline-offset:2px; }
@media (prefers-reduced-motion: reduce){
.rpl-option, .rpl-option .arrow, .rpl-restart, .rpl-back { transition:none; }
}
</style>
<div class="rpl-app" id="rplApp">
<div class="rpl-header">
<div>
<p class="rpl-eyebrow">Recognition of Prior Learning</p>
<h1 class="rpl-title">Find your route to Chartered Banker status</h1>
</div>
<button class="rpl-restart" id="restartBtn" type="button">Start over</button></div>
<div class="rpl-progress-mobile" id="mobileProgress"> </div>
<div class="rpl-trail" id="trail"> </div>
<div class="rpl-stage" id="stage"> </div>
</div>
<p dir="ltr"><strong>Recognition of Prior Learning</strong></p>
<p dir="ltr">If you already hold a banking-related qualification, or have significant experience working in banking, you may not need to start your Chartered Banker journey from scratch. Our Recognition of Prior Learning (RPL) process reviews what you've already achieved and matches it against our qualification themes; and you only complete the learning you actually need.</p>
<p dir="ltr">Depending on your background, this could mean:</p>
<ul dir="ltr">
<li><strong>An exemption</strong> from one or more modules of our Associate Chartered Banker or Chartered Banker qualifications</li>
<li><strong>Associate Chartered Banker status</strong>, awarded directly, with a route to full Chartered Banker status through our Enhanced Route</li>
<li><strong>Full Chartered Banker status</strong>, awarded directly, if your qualifications and experience meet all the requirements</li>
</ul>
<p dir="ltr">To find out which applies to you, you'll need:</p>
<ul dir="ltr">
<li>Details of your existing qualification(s), including credit level where relevant</li>
<li>Attested evidence (transcripts, certificates) supporting what you've completed</li>
<li>An understanding of whether your prior studies covered professional ethics</li>
</ul>
<p dir="ltr"><strong>Not sure where you stand?</strong> Check our <a href="https://www.charteredbanker.com/our-qualifications/recognition-of-prior-learning-2026.html"><u>RPL page</u></a> for guidance on eligibility and attestation, or <span id="start-application">start your application</span> below.</p>
<h1><a id="RPLapply" name="RPLapply"> <span id="start-application">Start your RPL application. </span></a></h1>
<script>
(function(){
// ---------- Flow definition (mirrors the RPL flow chart) ----------
// Each node is either type "question" or type "info" (a routed statement,
// e.g. the "ensure documentation is attested" loop-back) or type "result".
const FLOW = {
q_banking: {
type: "question",
kicker: "Step 1",
question: "Is your qualification banking related?",
subtext: "Tell us whether the qualification you already hold sits within banking or financial services.",
options: [
{ label: "Yes, it's banking related", next: "q_attested" },
{ label: "No, it's a different field", next: "q_experience" }
]
},
q_experience: {
type: "question",
kicker: "Step 2",
question: "Do you have 10+ years of business experience, with at least 5 of which are banking/financial services sector?",
subtext: "Even without a banking qualification, substantial hands-on experience may open another route.",
options: [
{ label: "Yes, 5+ years in banking/financial services sector", next: "r_experience_route" },
{ label: "No, less than 5 years in banking/financial services sector", next: "r_other_qualifications" }
]
},
q_attested: {
type: "question",
kicker: "Step 2",
question: "Has all relevant information been included, and is it attested?",
subtext: "We need your full qualification details, transcripts and evidence, properly attested before we can assess your application.",
options: [
{ label: "Yes, it's complete and attested", next: "q_degree" },
{ label: "No, something's missing", next: "i_attest" }
]
},
i_attest: {
type: "info",
kicker: "Before you continue",
question: "Make sure your documentation is properly attested",
subtext: "Your application can't be assessed until your evidence is complete and correctly attested. Check the FAQs for exactly what attestation involves, then come back to confirm.",
options: [
{ label: "See FAQs for attestation guidance", href: "https://www.charteredbanker.com/static/69856d4a-1862-4995-9a3d051871d63da3/RPL-FAQs.pdf", external: true },
{ label: "My documents are now in order", next: "q_degree" }
]
},
q_degree: {
type: "question",
kicker: "Step 3",
question: "Do you hold a relevant qualification?",
subtext: "Specifically: a degree-level banking qualification of at least 60 credits, or the equivalent to Chartered Banker status with another professional body.",
options: [
{ label: "Yes, I meet this", next: "q_ethics" },
{ label: "No, I don't", next: "r_acbd_review" }
]
},
q_ethics: {
type: "question",
kicker: "Step 4",
question: "Did you cover ethics in your prior studies?",
subtext: "Ethics is a required theme for full Chartered Banker status.",
options: [
{ label: "Yes, ethics was covered", next: "r_chartered_awarded" },
{ label: "No, it wasn't covered", next: "r_associate_enhanced" }
]
},
// ---------- Results ----------
r_experience_route: {
type: "result",
badge: "Worth exploring", badgeClass: "badge-check",
title: "Chartered Banker by Experience may be a good fit",
body: "With 5 or more years of banking experience, our <strong>Chartered Banker by Experience</strong> route may let you work toward Chartered Banker status without starting from a formal banking qualification. Check the FAQs for eligibility and evidence requirements.",
ctas: [
{ label: "Read the FAQs", href: "https://www.charteredbanker.com/static/69856d4a-1862-4995-9a3d051871d63da3/RPL-FAQs.pdf", primary: true },
{ label: "Explore Chartered Banker by Experience", href: "https://www.charteredbanker.com/qualification/chartered-by-experience.html" }
]
},
r_other_qualifications: {
type: "result",
badge: "Next step", badgeClass: "badge-info",
title: "Start with one of our qualifications",
body: "Recognition of Prior Learning isn't the right route yet — but our qualifications are designed to take you from wherever you're starting. Browse the full suite to find the one that fits your career stage.",
ctas: [
{ label: "Browse qualifications", href: "https://www.charteredbanker.com/learning/qualifications.html", primary: true }
]
},
r_acbd_review: {
type: "result",
badge: "Under review", badgeClass: "badge-info",
title: "We'll assess your application against our module themes",
body: "Your application and evidence will be reviewed against the <strong>Associate Chartered Banker Diploma</strong> and <strong>Chartered Banker Diploma</strong> themes to see whether your qualification is a sufficient match for an exemption from either module. We'll contact you directly with a decision once your form is submitted.",
ctas: [
{ label: "Submit your application", href: "https://www.charteredbanker.com/learning/recognition-of-prior-learning.html#start-application", primary: true },
{ label: "See FAQs", href: "https://www.charteredbanker.com/static/69856d4a-1862-4995-9a3d051871d63da3/RPL-FAQs.pdf" }
]
},
r_associate_enhanced: {
type: "result",
badge: "Award", badgeClass: "badge-award",
title: "Associate Chartered Banker status can be awarded",
body: "You're likely to be eligible for <strong>Associate Chartered Banker</strong> status now. Full Chartered Banker status can then be attained, if you wish, by joining our <strong>Enhanced Route to Chartered Banker</strong> programme, which covers ethics, for an additional fee.",
ctas: [
{ label: "About the Enhanced Route", href: "https://www.charteredbanker.com/learning/become-a-chartered-banker.html", primary: true },
{ label: "See FAQs", href: "https://www.charteredbanker.com/static/69856d4a-1862-4995-9a3d051871d63da3/RPL-FAQs.pdf" }
]
},
r_chartered_awarded: {
type: "result",
badge: "Award", badgeClass: "badge-award",
title: "You may be eligible to be awarded Chartered Banker status",
body: "Based on your qualification, experience and ethics coverage, you may be eligible to be awarded <strong>Chartered Banker status</strong> directly. Check the FAQs for what happens next and how to complete your application.",
ctas: [
{ label: "See FAQs", href: "https://www.charteredbanker.com/static/69856d4a-1862-4995-9a3d051871d63da3/RPL-FAQs.pdf", primary: true },
{ label: "Submit your application", href: "https://www.charteredbanker.com/learning/recognition-of-prior-learning.html#start-application" }
]
}
};
const START = "q_banking";
// Rough max depth, used only for the mobile progress bar (visual, non-binding)
const MAX_STEPS = 4;
let history = []; // [{nodeId, answerLabel}]
let current = START;
const stageEl = document.getElementById('stage');
const trailEl = document.getElementById('trail');
const mobileProgressEl = document.getElementById('mobileProgress');
const restartBtn = document.getElementById('restartBtn');
function renderTrail(){
trailEl.innerHTML = '';
history.forEach((h, i) => {
if(i>0){
const sep = document.createElement('span');
sep.className = 'rpl-trail-sep';
trailEl.appendChild(sep);
}
const item = document.createElement('span');
item.className = 'rpl-trail-item';
item.innerHTML = '<span class="dot"></span>' + h.questionShort + '<span class="ans">' + h.answerLabel + '</span>';
trailEl.appendChild(item);
});
// mobile bar
mobileProgressEl.innerHTML = '';
const steps = Math.max(history.length, 0);
for(let i=0;i<MAX_STEPS;i++){
const seg = document.createElement('span');
seg.className = 'seg' + (i < steps ? ' filled' : '');
mobileProgressEl.appendChild(seg);
}
}
function renderStage(){
const node = FLOW[current];
stageEl.innerHTML = '';
const backRow = document.createElement('div');
if(history.length > 0){
const back = document.createElement('button');
back.className = 'rpl-back';
back.type = 'button';
back.innerHTML = '← Back';
back.addEventListener('click', goBack);
backRow.appendChild(back);
}
stageEl.appendChild(backRow);
if(node.type === 'question' || node.type === 'info'){
const kicker = document.createElement('p');
kicker.className = 'rpl-kicker';
kicker.textContent = node.kicker;
stageEl.appendChild(kicker);
const q = document.createElement('h2');
q.className = 'rpl-question';
q.textContent = node.question;
stageEl.appendChild(q);
const sub = document.createElement('p');
sub.className = 'rpl-subtext';
sub.textContent = node.subtext;
stageEl.appendChild(sub);
const optWrap = document.createElement('div');
optWrap.className = 'rpl-options';
node.options.forEach(opt => {
const btn = document.createElement(opt.href ? 'a' : 'button');
btn.className = 'rpl-option';
if(opt.href){
btn.href = opt.href;
btn.target = '_blank';
btn.rel = 'noopener';
} else {
btn.type = 'button';
}
btn.innerHTML = '<span>' + opt.label + '</span><span class="arrow">' +
(opt.href ? '↗' : '→') + '</span>';
if(opt.next){
btn.addEventListener('click', () => selectOption(node, opt));
}
optWrap.appendChild(btn);
});
stageEl.appendChild(optWrap);
}
if(node.type === 'result'){
const badge = document.createElement('span');
badge.className = 'rpl-result-badge ' + node.badgeClass;
badge.textContent = node.badge;
stageEl.appendChild(badge);
const title = document.createElement('h2');
title.className = 'rpl-result-title';
title.textContent = node.title;
stageEl.appendChild(title);
const body = document.createElement('p');
body.className = 'rpl-result-body';
body.innerHTML = node.body;
stageEl.appendChild(body);
const ctaRow = document.createElement('div');
ctaRow.className = 'rpl-cta-row';
node.ctas.forEach(c => {
const a = document.createElement('a');
a.className = 'rpl-cta ' + (c.primary ? 'primary' : 'secondary');
a.href = c.href;
a.target = '_blank';
a.rel = 'noopener';
a.textContent = c.label;
ctaRow.appendChild(a);
});
stageEl.appendChild(ctaRow);
}
stageEl.scrollIntoView({behavior:'smooth', block:'start'});
}
function selectOption(node, opt){
// don't push a trail entry for the "info" loop-back re-confirmation step
if(node.type === 'question'){
history.push({
questionShort: shortLabel(node.question),
answerLabel: opt.label.replace(/^Yes,?\s*/i,'Yes').replace(/^No,?\s*/i,'No')
});
}
current = opt.next;
renderTrail();
renderStage();
}
function shortLabel(q){
if(q.length <= 34) return q;
return q.slice(0,31) + '…';
}
function goBack(){
if(history.length === 0) return;
history.pop();
// Recompute current by replaying — simplest robust approach: walk from START
current = START;
let replay = history.slice();
history = [];
replay.forEach(h => {
// find the option in current node whose resulting answerLabel matches
const node = FLOW[current];
const opt = node.options.find(o => {
const normalized = o.label.replace(/^Yes,?\s*/i,'Yes').replace(/^No,?\s*/i,'No');
return normalized === h.answerLabel;
});
if(opt){
history.push({ questionShort: shortLabel(node.question), answerLabel: h.answerLabel });
current = opt.next;
}
});
renderTrail();
renderStage();
}
restartBtn.addEventListener('click', () => {
history = [];
current = START;
renderTrail();
renderStage();
});
renderTrail();
renderStage();
})();</script> |
|