{"id":5265,"date":"2026-05-30T08:33:51","date_gmt":"2026-05-30T08:33:51","guid":{"rendered":"https:\/\/glacademy.edu.my\/admissions\/"},"modified":"2026-05-30T08:33:51","modified_gmt":"2026-05-30T08:33:51","slug":"admissions","status":"publish","type":"page","link":"https:\/\/glacademy.edu.my\/fr\/admissions\/","title":{"rendered":"Admission"},"content":{"rendered":"<!--\n  SEO Title: Admission | Inscrivez-vous \u00e0 la GL Academy Kuala Lumpur\n  Meta Description: Postulez \u00e0 la Global Leaders Academy \u2014 notre formulaire d'admission natif envoie vos informations directement \u00e0 notre \u00e9quipe des admissions. \u00c9cole de langues et soutien scolaire \u00e0 Kuala Lumpur.\n  Focus Keyword: admission GL Academy\n  Slug: admission\n\n  Student Admission, three steps (design handoff ADMISSION-PAGE.md, option 3a) with a signature on\n  the last step. Submits to the WordPress route \/wp-json\/glacademy\/v1\/erp-register, which forwards\n  the lead to the GL Academy ERP server-side (the API key never touches the browser). Markup, ids and\n  field names are identical across the 8 language files; only visible text differs. Styles and\n  script are self-contained below. The consent sentences must stay VERBATIM what the ERP stores for\n  this page's consent_version (backend\/tests\/test_consent_chain.py checks it).\n-->\n<style id=\"adm3-css\">\n\/* Student Admission, three steps (docs\/design admission option 3a). Everything is scoped under .adm3. *\/\n.adm3{--navy:#052868;--navy9:#021C49;--royal:#1556B5;--ink:#0F172A;--body:#3D4757;--muted:#6B7385;--faint:#9AA3B2;--line:#E4E7EE;--line2:#EFF1F5;--paper2:#F6F7FA;--err:#B42318;--ok:#1D9E75;--grad:linear-gradient(95deg,#1556B5 0%,#2178E0 55%,#9C7C2E 100%);\n  font-family:'Montserrat',sans-serif;color:var(--ink);-webkit-font-smoothing:antialiased;\n  background:linear-gradient(180deg,#F4F8FE 0%,#FFFFFF 420px);padding:56px 28px 96px}\n:where(.adm3) *,:where(.adm3) *::before,:where(.adm3) *::after{box-sizing:border-box}\n:where(.adm3) :is(p,h1,h2,ol,fieldset,legend){margin:0;padding:0}\n:where(.adm3) ol{list-style:none}\n:where(.adm3) fieldset{border:0;min-width:0}\n:where(.adm3) a{text-decoration:none}\n.adm3 [hidden]{display:none!important}\n.adm3 :is(button,input,select,textarea){font-family:inherit}\n.adm3-sr{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}\n.adm3 .adm3-ltr{direction:ltr;unicode-bidi:isolate}\n\n.adm3-layout{max-width:1200px;margin:0 auto;display:grid;grid-template-columns:minmax(0,1fr) 420px;grid-template-areas:\"head aside\" \"main aside\";column-gap:56px;align-items:start}\n.adm3-head{grid-area:head}\n.adm3-main{grid-area:main;min-width:0}\n.adm3-aside{grid-area:aside;position:sticky;top:120px;padding-top:40px}\n.adm3-eyebrow{display:inline-block;font-size:11.5px;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:var(--royal);background:#DCE7F5;padding:5px 12px;border-radius:999px}\n.adm3-h1{font-size:clamp(34px,5vw,48px);font-weight:800;line-height:1.05;letter-spacing:-.03em;color:var(--navy);margin:16px 0 0}\n.adm3-grad{background:var(--grad);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;color:transparent}\n\n\/* step bar *\/\n.adm3-steps{scroll-margin-top:120px;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin:28px 0 18px}\n.adm3-stepbtn{display:flex;flex-direction:column;gap:8px;width:100%;text-align:start;background:none;border:0;padding:0 0 4px;cursor:pointer;border-radius:4px}\n.adm3-stepbtn__bar{height:4px;border-radius:999px;background:var(--line);transition:background .25s}\n.adm3-stepbtn__n{font-size:12px;font-weight:700;color:var(--faint)}\n.adm3-stepbtn__t{font-size:15px;font-weight:700;color:var(--faint);line-height:1.25;overflow-wrap:anywhere;hyphens:auto}\n.adm3-stepbtn.is-on .adm3-stepbtn__bar{background:var(--navy)}\n.adm3-stepbtn.is-on .adm3-stepbtn__n{color:var(--royal)}\n.adm3-stepbtn.is-on .adm3-stepbtn__t{color:var(--navy)}\n\n\/* form card *\/\n.adm3-card-form{background:#fff;border:1px solid var(--line);border-radius:20px;padding:36px 40px}\n.adm3-note{font-size:13px;line-height:1.6;color:var(--muted);background:var(--paper2);border-radius:10px;padding:12px 14px;margin-bottom:22px}\n.adm3-note strong{color:var(--body)}\n.adm3-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px 20px}\n.adm3-col-2{grid-column:1\/-1}\n.adm3-field{min-width:0;display:flex;flex-direction:column}\n.adm3-label{display:block;font-size:13px;font-weight:600;color:var(--navy);margin-bottom:8px;line-height:1.35}\n.adm3 .adm-req{color:#D92D20;font-weight:700}\n.adm3-reqnote{font-size:12.5px;color:var(--muted);text-align:end;margin:0 0 10px}\n.adm3-input{width:100%;height:48px;font-size:15px;color:var(--ink);background:#fff;border:1.5px solid var(--line);border-radius:10px;padding:0 14px;outline:none;box-shadow:none;margin:0;transition:border-color .15s}\n.adm3-input::placeholder{color:var(--faint);opacity:1}\n.adm3-input:hover{border-color:#CDD3DE}\n.adm3 :is(.adm3-input,.adm3-gbtn,.adm3-stepbtn,.adm3-btn,.adm3-back,.adm3-link,.adm3-dial select):focus-visible,\n.adm3 .adm3-drop:focus-within,.adm3 .adm3-consent input:focus-visible,.adm3 a:focus-visible{outline:2px solid var(--royal);outline-offset:2px}\n.adm3-input[aria-invalid=\"true\"]{border-color:var(--err)}\n.adm3 textarea.adm3-input{height:auto;min-height:104px;padding:12px 14px;line-height:1.55;resize:vertical}\n.adm3 select.adm3-input{-webkit-appearance:none;appearance:none;padding-inline-end:40px;cursor:pointer;background:#fff url(\"data:image\/svg+xml,%3Csvg xmlns='http:\/\/www.w3.org\/2000\/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%231556B5' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'\/%3E%3C\/svg%3E\") no-repeat right 14px center}\n.adm3[dir=\"rtl\"] select.adm3-input{background-position:left 14px center}\n.adm3 select.adm3-input:invalid,.adm3 select.adm3-input.is-empty{color:var(--faint)}\n.adm3 select.adm3-input option{color:var(--ink)}\n.adm3-hint{font-size:12.5px;line-height:1.5;color:var(--muted);margin-top:6px}\n.adm3-err{font-size:12.5px;line-height:1.5;font-weight:600;color:var(--err);margin-top:6px}\n\n\/* nationality: type to search *\/\n.adm3-combo{position:relative}\n.adm3 .adm3-combo__input{padding-inline-end:40px;background:#fff url(\"data:image\/svg+xml,%3Csvg xmlns='http:\/\/www.w3.org\/2000\/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%231556B5' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'\/%3E%3C\/svg%3E\") no-repeat right 14px center;scroll-margin-top:96px}\n.adm3[dir=\"rtl\"] .adm3-combo__input{background-position:left 14px center}\n.adm3-combo__list{position:absolute;z-index:40;top:calc(100% + 6px);left:0;right:0;max-height:300px;overflow-y:auto;overscroll-behavior:contain;margin:0;padding:6px;list-style:none;background:#fff;border:1px solid var(--line);border-radius:12px;box-shadow:0 18px 40px -16px rgba(5,40,104,.35)}\n.adm3-combo__list > li{margin:0;list-style:none}\n.adm3-combo__opt{display:flex;justify-content:space-between;align-items:baseline;gap:12px;padding:10px 12px;border-radius:8px;font-size:15px;line-height:1.3;color:var(--ink);cursor:pointer}\n.adm3-combo__opt:hover,.adm3-combo__opt.is-active{background:#EEF4FF}\n.adm3-combo__opt[aria-selected=\"true\"]{font-weight:700;color:var(--navy)}\n.adm3-combo__en{font-size:12.5px;font-weight:500;color:var(--muted);white-space:nowrap}\n.adm3-combo__sep{height:1px;background:var(--line2);margin:6px 4px}\n.adm3-combo__none{padding:10px 12px 4px;font-size:13.5px;color:var(--muted)}\n\n\/* gender *\/\n.adm3-gender{display:grid;grid-template-columns:1fr 1fr 1.6fr;gap:10px;max-width:520px}\n.adm3-gbtn{display:flex;align-items:center;justify-content:center;min-height:48px;padding:6px 10px;border-radius:10px;border:1.5px solid var(--line);background:#fff;color:var(--navy);font-size:15px;font-weight:600;line-height:1.2;text-align:center;cursor:pointer;transition:background .18s,border-color .18s,color .18s}\n.adm3-gbtn:hover{border-color:#C3CAD6}\n.adm3-gbtn[aria-checked=\"true\"]{background:var(--navy);border-color:var(--navy);color:#fff}\n.adm3-gender[aria-invalid=\"true\"] .adm3-gbtn{border-color:var(--err)}\n\n\/* phone: country code + number, always left-to-right *\/\n.adm3-phone{display:flex;direction:ltr}\n.adm3-dial{position:relative;flex:0 0 112px;height:48px}\n.adm3-dial__val{position:absolute;inset:0;z-index:1;display:flex;align-items:center;padding:0 28px 0 12px;font-size:15px;font-weight:600;color:var(--navy);pointer-events:none;white-space:nowrap;overflow:hidden}\n.adm3-dial__val::after{content:\"\";position:absolute;right:10px;top:50%;width:14px;height:14px;margin-top:-7px;background:url(\"data:image\/svg+xml,%3Csvg xmlns='http:\/\/www.w3.org\/2000\/svg' width='14' height='14' viewBox='0 0 24 24' fill='none' stroke='%231556B5' stroke-width='2.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'\/%3E%3C\/svg%3E\") no-repeat center}\n.adm3-dial select{position:absolute;inset:0;width:100%;height:48px;margin:0;-webkit-appearance:none;appearance:none;background:var(--paper2);border:1.5px solid var(--line);border-right:0;border-radius:10px 0 0 10px;color:transparent;font-size:15px;cursor:pointer;outline:none;padding:0 12px}\n.adm3-dial select option{color:var(--ink);background:#fff}\n.adm3-phone .adm3-input{flex:1;min-width:0;border-radius:0 10px 10px 0;text-align:left}\n\n\/* guardian *\/\n.adm3-switch{display:flex;gap:12px;align-items:flex-start;font-size:14px;line-height:1.5;color:var(--body);cursor:pointer}\n.adm3-guardian{border-top:1px solid var(--line2);padding-top:18px;margin-top:2px}\n.adm3-guardian__title{font-size:14px;font-weight:700;color:var(--navy);margin-bottom:14px}\n.adm3-guardian__title span{font-weight:500;color:var(--muted)}\n\n\/* checkboxes (consent + under-18 switch) *\/\n.adm3 .adm3-check{-webkit-appearance:none;appearance:none;flex:0 0 20px;width:20px;height:20px;margin:1px 0 0;border:2px solid #C3CAD6;border-radius:6px;background:#fff center\/12px no-repeat;cursor:pointer;transition:background-color .15s,border-color .15s}\n.adm3 .adm3-check:checked{background-color:var(--navy);border-color:var(--navy);background-image:url(\"data:image\/svg+xml,%3Csvg xmlns='http:\/\/www.w3.org\/2000\/svg' viewBox='0 0 24 24' fill='none' stroke='%23fff' stroke-width='3.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='20 6 9 17 4 12'\/%3E%3C\/svg%3E\")}\n.adm3 .adm3-check:disabled{opacity:.6;cursor:default}\n.adm3 .adm3-check[aria-invalid=\"true\"]{border-color:var(--err)}\n.adm3-consent{display:flex;gap:12px;align-items:flex-start;font-size:14px;line-height:1.55;color:var(--body);cursor:pointer}\n.adm3-consent a{font-weight:600;color:var(--royal);text-decoration:underline;text-underline-offset:2px}\n\n\/* upload *\/\n.adm3-drop{display:flex;align-items:center;gap:16px;border:1.5px dashed #C3D6F2;border-radius:12px;background:#F8FAFE;padding:16px 18px;cursor:pointer;transition:border-color .15s,background .15s;margin:0}\n.adm3-drop:hover,.adm3-drop.is-over{border-color:var(--royal);background:#F1F6FE}\n.adm3-drop[aria-invalid=\"true\"]{border-color:var(--err)}\n.adm3-drop__icon{flex:0 0 40px;width:40px;height:40px;border-radius:10px;background:#fff;border:1px solid var(--line);display:grid;place-items:center}\n.adm3-drop__t,.adm3-drop__s{display:block}\n.adm3-drop__t{font-size:14px;font-weight:700;color:var(--navy);margin:0;overflow-wrap:anywhere}\n.adm3-drop__s{font-size:12px;color:var(--muted);margin:2px 0 0}\n\n\/* signature *\/\n.adm3-sig__head{display:flex;justify-content:space-between;align-items:baseline;gap:12px}\n.adm3-sig__head .adm3-label{margin-bottom:6px}\n.adm3-sig__stmt{font-size:13px;line-height:1.6;color:var(--body);margin:0 0 10px}\n.adm3-sig__pad{position:relative;height:170px;border:1.5px dashed #C3D6F2;border-radius:12px;background:#fff;overflow:hidden;touch-action:none}\n.adm3-sig__pad[aria-invalid=\"true\"]{border-color:var(--err)}\n.adm3-sig__pad canvas{position:absolute;inset:0;width:100%;height:100%;cursor:crosshair;touch-action:none}\n.adm3-sig__line{position:absolute;left:24px;right:24px;bottom:42px;border-bottom:1px solid var(--line);pointer-events:none}\n.adm3-sig__typed .adm3-input{margin-bottom:10px}\n.adm3-sig__preview{height:88px;border:1.5px dashed #C3D6F2;border-radius:12px;background:#fff;display:flex;align-items:center;justify-content:center;padding:0 16px;font:italic 400 34px\/1.1 \"Segoe Script\",\"Brush Script MT\",\"Snell Roundhand\",\"Apple Chancery\",cursive;color:var(--ink);overflow:hidden;white-space:nowrap}\n.adm3-sig__foot{display:flex;justify-content:space-between;align-items:baseline;gap:12px;flex-wrap:wrap}\n.adm3-sig__as{font-size:12.5px;color:var(--muted);margin-top:6px}\n.adm3-sig__as strong{color:var(--navy);font-weight:700}\n.adm3-link{background:none;border:0;padding:2px 0;font-size:13px;font-weight:600;color:var(--royal);text-decoration:underline;text-underline-offset:2px;cursor:pointer;border-radius:4px}\n\n\/* footer *\/\n.adm3-foot{display:flex;justify-content:space-between;align-items:center;gap:16px;margin-top:28px;padding-top:22px;border-top:1px solid var(--line2)}\n.adm3-back{display:inline-flex;align-items:center;gap:8px;background:none;border:0;padding:8px 2px;cursor:pointer;font-size:15px;font-weight:600;color:var(--navy);border-radius:6px}\n.adm3-back.is-hidden{visibility:hidden}\n.adm3-btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:52px;padding:0 28px;border-radius:999px;border:0;background:var(--navy);color:#fff;font-size:15px;font-weight:600;line-height:1.2;text-align:center;cursor:pointer;box-shadow:0 10px 24px -10px rgba(5,40,104,.55);transition:background .18s}\n.adm3-btn:hover{background:var(--navy9)}\n.adm3-btn:disabled{opacity:.6;cursor:progress}\n.adm3[dir=\"rtl\"] .adm3-arrow{transform:scaleX(-1)}\n.adm3-formerr{font-size:13.5px;font-weight:600;color:var(--err);margin-top:14px}\n.adm3-formerr:empty{display:none}\n\n\/* done *\/\n.adm3-done{text-align:center;padding:24px 8px}\n.adm3-done__icon{width:64px;height:64px;border-radius:50%;background:#E7F6F0;color:var(--ok);display:grid;place-items:center;margin:0 auto 18px}\n.adm3-done__title{font-size:24px;font-weight:800;color:var(--navy);margin:0 0 10px}\n.adm3-done__text{font-size:15px;line-height:1.6;color:var(--body);margin:0 auto;max-width:420px}\n.adm3-done__ref{font-size:13px;font-weight:700;color:var(--muted);margin-top:12px;letter-spacing:.04em}\n.adm3-again{display:inline-flex;align-items:center;gap:8px;margin-top:22px;min-height:48px;padding:0 22px;border-radius:999px;border:1.5px solid rgba(5,40,104,.22);background:#fff;color:var(--navy);font-size:15px;font-weight:600;cursor:pointer}\n.adm3-again:hover{border-color:rgba(5,40,104,.45)}\n\n\/* talk first *\/\n.adm3-talk{margin-top:22px;display:flex;flex-wrap:wrap;align-items:center;gap:10px 12px}\n.adm3-talk__t{font-size:14px;font-weight:700;color:var(--navy);margin-inline-end:4px}\n.adm3-talk a,.adm3-talk__chip{display:inline-flex;align-items:center;gap:8px;min-height:40px;padding:0 14px;border-radius:999px;background:#fff;border:1px solid var(--line);font-size:13.5px;font-weight:600;color:var(--navy);transition:border-color .15s}\n.adm3-talk a:hover{border-color:#C3CAD6;color:var(--navy)}\n.adm3-talk__chip strong{font-weight:800}\n\n\/* applicant card *\/\n.adm3-tilt{transform:rotate(-2deg)}\n.adm3[dir=\"rtl\"] .adm3-tilt{transform:rotate(2deg)}\n.adm3-idc{position:relative;overflow:hidden;border-radius:22px;aspect-ratio:1.586\/1;background:radial-gradient(60% 80% at 100% 0%,rgba(33,120,224,.28),transparent 70%),radial-gradient(50% 70% at 0% 100%,rgba(201,169,97,.22),transparent 70%),linear-gradient(160deg,#F4F8FE,#FFFFFF);border:1px solid #DCE7F5;box-shadow:0 30px 60px -30px rgba(5,40,104,.45);padding:24px 26px;display:flex;flex-direction:column}\n.adm3-idc__top{display:flex;justify-content:space-between;align-items:center;gap:12px}\n.adm3-idc__top img{height:26px;width:auto;display:block}\n.adm3-idc__tag{font-size:10px;font-weight:800;text-transform:uppercase;letter-spacing:.14em;color:#8C6A1F;transition:color .25s}\n.adm3-idc__tag.is-ready{color:var(--ok)}\n.adm3-idc__row{display:flex;gap:18px;align-items:center;margin-top:auto}\n.adm3-idc__ph{flex:0 0 72px;width:72px;height:88px;border-radius:12px;background:#DCE7F5;overflow:hidden;display:grid;place-items:center;font-size:28px;font-weight:900;color:var(--navy)}\n.adm3-idc__ph svg{width:100%;height:100%;display:block}\n.adm3-idc__txt{min-width:0;display:flex;flex-direction:column;gap:6px}\n.adm3-idc__name{font-size:21px;font-weight:800;letter-spacing:-.02em;line-height:1.12;color:var(--navy);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}\n.adm3-idc__prog{font-size:13px;font-weight:700;line-height:1.3;color:var(--royal);overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}\n.adm3-idc__name.is-ph,.adm3-idc__prog.is-ph{color:var(--faint)}\n.adm3-idc__meta{display:flex;flex-wrap:wrap;gap:4px 14px;font-size:12px;font-weight:600;color:var(--muted);min-height:15px}\n.adm3-idc__meter{display:flex;align-items:center;gap:10px;margin-top:18px}\n.adm3-idc__track{flex:1;height:5px;border-radius:999px;background:rgba(5,40,104,.1);overflow:hidden}\n.adm3-idc__fill{display:block;height:100%;width:0;background:var(--navy);border-radius:999px;transition:width .32s cubic-bezier(.22,.61,.36,1),background .25s}\n.adm3-idc__fill.is-full{background:var(--ok)}\n.adm3-idc__count{font-size:11px;font-weight:700;color:var(--body);white-space:nowrap}\n.adm3-aside__note{font-size:13px;line-height:1.6;color:var(--muted);text-align:center;margin:26px 0 0}\n\n@media (max-width:1023px){\n  .adm3{overflow-x:hidden}\n  .adm3-layout{grid-template-columns:minmax(0,1fr);grid-template-areas:\"head\" \"aside\" \"main\"}\n  .adm3-aside{position:static;padding-top:0;width:100%;max-width:360px;margin:28px auto 4px}\n  .adm3-aside__note{margin-top:18px}\n}\n@media (max-width:640px){\n  .adm3{padding:32px 16px 72px}\n  .adm3-card-form{padding:24px 18px;border-radius:16px}\n  .adm3 :is(.adm3-input,.adm3-dial select,.adm3-dial__val){font-size:16px}\n  .adm3-steps{margin-top:24px}\n  .adm3-stepbtn__t{font-size:13.5px}\n  .adm3-idc{padding:18px 20px}\n  .adm3-idc__row{gap:14px}\n  .adm3-idc__name{font-size:19px}\n  .adm3-foot{flex-wrap:wrap}\n  .adm3-btn{flex:1 1 auto;padding:0 20px}\n}\n@media (max-width:560px){\n  .adm3-grid{grid-template-columns:minmax(0,1fr)}\n}\n@media (max-width:420px){\n  .adm3-gender{grid-template-columns:1fr 1fr}\n  .adm3-gender .adm3-gbtn:last-child{grid-column:1\/-1}\n}\n@media (prefers-reduced-motion:reduce){\n  .adm3 *,.adm3 *::before,.adm3 *::after{transition:none!important}\n}\n<\/style>\n\n<section class=\"adm3 adm3-hero\" data-lang=\"fr\">\n  <div class=\"adm3-layout\">\n\n    <div class=\"adm3-head\">\n      <span class=\"adm3-eyebrow\">Inscription \u00e9cole d'anglais \u00e0 Kuala Lumpur<\/span>\n      <h1 class=\"adm3-h1\">Admission <span class=\"adm3-grad\">des \u00e9tudiants<\/span><\/h1>\n      <p class=\"adm3-lead\">Inscription \u00e9cole d'anglais en toute simplicit\u00e9 : trois \u00e9tapes courtes, et une r\u00e9ponse de notre \u00e9quipe des admissions sous 3 jours ouvrables.<\/p>\n    <\/div>\n\n    <!-- The applicant card: a live, decorative preview of what is being typed. -->\n    <div class=\"adm3-aside\">\n      <div class=\"adm3-tilt\" aria-hidden=\"true\">\n        <div class=\"adm3-idc\">\n          <div class=\"adm3-idc__top\"><img src=\"https:\/\/glacademy.edu.my\/wp-content\/plugins\/gl-academy-pages\/assets\/img\/w\/u-2026-09-logo-horizontal-768.webp\" alt=\"\" width=\"116\" height=\"26\" decoding=\"async\" srcset=\"https:\/\/glacademy.edu.my\/wp-content\/plugins\/gl-academy-pages\/assets\/img\/w\/u-2026-09-logo-horizontal-400.webp 400w, https:\/\/glacademy.edu.my\/wp-content\/plugins\/gl-academy-pages\/assets\/img\/w\/u-2026-09-logo-horizontal-768.webp 768w\" sizes=\"(max-width: 600px) 32vw, (max-width: 1100px) 15vw, 117px\"><span class=\"adm3-idc__tag\" id=\"adm3-ctag\">Candidat<\/span><\/div>\n          <div class=\"adm3-idc__row\">\n            <span class=\"adm3-idc__ph\"><span id=\"adm3-cini\">?<\/span><svg class=\"adm3-av\" data-av=\"male\" viewBox=\"0 0 72 88\" hidden><path d=\"M4 88C6 70 20 62 36 62s30 8 32 26z\" fill=\"#1556B5\"\/><rect x=\"30\" y=\"50\" width=\"12\" height=\"14\" rx=\"4\" fill=\"#EEF4FF\"\/><circle cx=\"36\" cy=\"38\" r=\"15\" fill=\"#EEF4FF\"\/><path d=\"M21 37c-1-11 6-18 15-18 10 0 16 6 15 16-4-5-9-7-15-7-7 0-11 3-15 9z\" fill=\"#052868\"\/><\/svg><svg class=\"adm3-av\" data-av=\"female\" viewBox=\"0 0 72 88\" hidden><path d=\"M18 42c-1-15 7-23 18-23s19 8 18 23l1 22c-6-3-12-4-19-4s-13 1-19 4z\" fill=\"#052868\"\/><path d=\"M4 88C6 70 20 62 36 62s30 8 32 26z\" fill=\"#2E6FCB\"\/><rect x=\"30\" y=\"50\" width=\"12\" height=\"14\" rx=\"4\" fill=\"#EEF4FF\"\/><circle cx=\"36\" cy=\"38\" r=\"14.5\" fill=\"#EEF4FF\"\/><path d=\"M22 36c2-10 8-14 15-14 8 0 13 5 13 12-6-3-13-5-20-4-3 1-6 3-8 6z\" fill=\"#052868\"\/><\/svg><svg class=\"adm3-av\" data-av=\"prefer_not\" viewBox=\"0 0 72 88\" hidden><path d=\"M4 88C6 70 20 62 36 62s30 8 32 26z\" fill=\"#8FB6E8\"\/><rect x=\"30\" y=\"50\" width=\"12\" height=\"14\" rx=\"4\" fill=\"#EEF4FF\"\/><circle cx=\"36\" cy=\"38\" r=\"15\" fill=\"#EEF4FF\"\/><\/svg><\/span>\n            <div class=\"adm3-idc__txt\">\n              <p class=\"adm3-idc__name is-ph\" id=\"adm3-cname\">Votre nom<\/p>\n              <p class=\"adm3-idc__prog is-ph\" id=\"adm3-cprog\">Votre programme<\/p>\n              <p class=\"adm3-idc__meta\"><span id=\"adm3-cnat\"><\/span><span id=\"adm3-cstart\"><\/span><\/p>\n            <\/div>\n          <\/div>\n          <div class=\"adm3-idc__meter\"><span class=\"adm3-idc__track\"><span class=\"adm3-idc__fill\" id=\"adm3-cfill\"><\/span><\/span><span class=\"adm3-idc__count\" id=\"adm3-ccount\">0 sur 7 informations<\/span><\/div>\n        <\/div>\n      <\/div>\n      <p class=\"adm3-aside__note\">Nous r\u00e9pondons sous 3 jours ouvrables pour confirmer votre place.<\/p>\n    <\/div>\n\n    <div class=\"adm3-main\">\n      <ol class=\"adm3-steps\" id=\"adm-steps\">\n      <li><button type=\"button\" class=\"adm3-stepbtn is-on\" data-go=\"1\" aria-current=\"step\"><span class=\"adm3-stepbtn__bar\" aria-hidden=\"true\"><\/span><span class=\"adm3-stepbtn__n\">\u00c9tape 1<\/span><span class=\"adm3-stepbtn__t\">Vos informations<\/span><\/button><\/li>\n      <li><button type=\"button\" class=\"adm3-stepbtn\" data-go=\"2\"><span class=\"adm3-stepbtn__bar\" aria-hidden=\"true\"><\/span><span class=\"adm3-stepbtn__n\">\u00c9tape 2<\/span><span class=\"adm3-stepbtn__t\">Programme<\/span><\/button><\/li>\n      <li><button type=\"button\" class=\"adm3-stepbtn\" data-go=\"3\"><span class=\"adm3-stepbtn__bar\" aria-hidden=\"true\"><\/span><span class=\"adm3-stepbtn__n\">\u00c9tape 3<\/span><span class=\"adm3-stepbtn__t\">Confirmation<\/span><\/button><\/li>\n      <\/ol>\n\n      <div class=\"adm3-card-form\">\n\n        <!-- Success panel (hidden until submitted) -->\n        <div class=\"adm3-done\" id=\"adm-done\" hidden>\n          <div class=\"adm3-done__icon\"><svg width=\"30\" height=\"30\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><polyline points=\"20 6 9 17 4 12\"\/><\/svg><\/div>\n          <h2 class=\"adm3-done__title\" id=\"adm-done-title\" tabindex=\"-1\">Candidature re\u00e7ue<\/h2>\n          <p class=\"adm3-done__text\">Merci. Notre \u00e9quipe des admissions vous contactera dans un d\u00e9lai de 3 jours ouvrables.<\/p>\n          <p class=\"adm3-done__ref\" id=\"adm-done-ref\"><\/p>\n          <button type=\"button\" class=\"adm3-again\" id=\"adm-again\"><svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><line x1=\"12\" y1=\"5\" x2=\"12\" y2=\"19\"\/><line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"\/><\/svg> Ajouter un autre candidat<\/button>\n        <\/div>\n\n        <form class=\"adm3-form\" id=\"adm-form\" novalidate>\n          <p class=\"adm3-reqnote\"><span class=\"adm-req\">*<\/span> Obligatoire<\/p>\n\n          <!-- \u2500\u2500 Step 1 \u00b7 About you \u2500\u2500 -->\n          <fieldset class=\"adm3-step\" data-step=\"1\">\n            <h2 class=\"adm3-sr adm3-steph\" tabindex=\"-1\">\u00c9tape 1 sur 3: Vos informations<\/h2>\n            <p class=\"adm3-note\">Veuillez remplir ce formulaire en <strong>alphabet latin<\/strong> (lettres latines) afin que nos dossiers correspondent \u00e0 vos documents officiels.<\/p>\n            <div class=\"adm3-grid\">\n              <div class=\"adm3-field adm3-col-2\">\n                <label class=\"adm3-label\" for=\"adm-name\">Nom complet <span class=\"adm-req\">*<\/span><\/label>\n                <input class=\"adm3-input\" id=\"adm-name\" name=\"full_name\" type=\"text\" required autocomplete=\"name\" placeholder=\"Tel qu&#x27;indiqu\u00e9 sur la CI \/ le passeport\" aria-describedby=\"adm-name-hint adm-name-err\">\n                <span class=\"adm3-hint\" id=\"adm-name-hint\">Utilisez uniquement des lettres latines.<\/span>\n                <span class=\"adm3-err\" id=\"adm-name-err\" role=\"alert\" hidden><\/span>\n              <\/div>\n              <div class=\"adm3-field adm3-col-2\">\n                <span class=\"adm3-label\" id=\"adm-gender-lbl\">Genre <span class=\"adm-req\">*<\/span><\/span>\n                <div class=\"adm3-gender\" id=\"adm-gender\" role=\"radiogroup\" aria-labelledby=\"adm-gender-lbl\" aria-required=\"true\" aria-describedby=\"adm-gender-err\">\n                    <button type=\"button\" class=\"adm3-gbtn\" role=\"radio\" aria-checked=\"false\" tabindex=\"0\" data-value=\"male\">Homme<\/button>\n                    <button type=\"button\" class=\"adm3-gbtn\" role=\"radio\" aria-checked=\"false\" tabindex=\"-1\" data-value=\"female\">Femme<\/button>\n                    <button type=\"button\" class=\"adm3-gbtn\" role=\"radio\" aria-checked=\"false\" tabindex=\"-1\" data-value=\"prefer_not\">Pr\u00e9f\u00e8re ne pas r\u00e9pondre<\/button>\n                <\/div>\n                <input type=\"hidden\" name=\"gender\" id=\"adm-gender-val\" value=\"\">\n                <span class=\"adm3-err\" id=\"adm-gender-err\" role=\"alert\" hidden><\/span>\n              <\/div>\n              <div class=\"adm3-field\">\n                <label class=\"adm3-label\" for=\"adm-nat\">Nationalit\u00e9 <span class=\"adm-req\">*<\/span><\/label>\n                <div class=\"adm3-combo\">\n                  <input class=\"adm3-input adm3-combo__input\" id=\"adm-nat\" type=\"text\" role=\"combobox\" aria-autocomplete=\"list\" aria-expanded=\"false\" aria-controls=\"adm-nat-list\" aria-required=\"true\" aria-describedby=\"adm-nat-err\" autocomplete=\"off\" autocapitalize=\"off\" spellcheck=\"false\" placeholder=\"Tapez pour chercher ou choisissez\u2026\">\n                  <ul class=\"adm3-combo__list\" id=\"adm-nat-list\" role=\"listbox\" aria-label=\"Nationalit\u00e9\" hidden><\/ul>\n                <\/div>\n                <input type=\"hidden\" name=\"nationality\" id=\"adm-nat-val\" value=\"\">\n                <span class=\"adm3-err\" id=\"adm-nat-err\" role=\"alert\" hidden><\/span>\n              <\/div>\n              <div class=\"adm3-field\">\n                <label class=\"adm3-label\" for=\"adm-ic\">NRIC \/ N\u00b0 de passeport <span class=\"adm-req\">*<\/span><\/label>\n                <input class=\"adm3-input\" id=\"adm-ic\" name=\"ic_passport\" type=\"text\" required autocomplete=\"off\" placeholder=\"ex. A1234567\" aria-describedby=\"adm-ic-err\">\n                <span class=\"adm3-err\" id=\"adm-ic-err\" role=\"alert\" hidden><\/span>\n              <\/div>\n              <div class=\"adm3-field\">\n                <label class=\"adm3-label\" for=\"adm-dob\">Date de naissance <span class=\"adm-req\">*<\/span><\/label>\n                <input class=\"adm3-input\" id=\"adm-dob\" type=\"text\" inputmode=\"numeric\" maxlength=\"14\" autocomplete=\"bday\" dir=\"ltr\" placeholder=\"JJ \/ MM \/ AAAA\" required aria-describedby=\"adm-dob-hint adm-dob-err\">\n                <input type=\"hidden\" name=\"date_of_birth\" id=\"adm-dob-iso\" value=\"\">\n                <span class=\"adm3-hint\" id=\"adm-dob-hint\" aria-live=\"polite\">Jour \/ mois \/ ann\u00e9e<\/span>\n                <span class=\"adm3-err\" id=\"adm-dob-err\" role=\"alert\" hidden><\/span>\n              <\/div>\n              <div class=\"adm3-field\">\n                <label class=\"adm3-label\" for=\"adm-phone\">T\u00e9l\u00e9phone <span class=\"adm-req\">*<\/span><\/label>\n                <div class=\"adm3-phone\">\n                    <div class=\"adm3-dial\"><span class=\"adm3-dial__val\" aria-hidden=\"true\">MY +60<\/span>\n                      <select id=\"adm-dial\" aria-label=\"Indicatif du pays\">\n                        <option value=\"MY\" data-dial=\"60\" selected>Malaisie (+60)<\/option>\n                        <option value=\"CN\" data-dial=\"86\">Chine (+86)<\/option>\n                        <option value=\"KR\" data-dial=\"82\">Cor\u00e9e du Sud (+82)<\/option>\n                        <option value=\"JP\" data-dial=\"81\">Japon (+81)<\/option>\n                        <option value=\"ID\" data-dial=\"62\">Indon\u00e9sie (+62)<\/option>\n                        <option value=\"RU\" data-dial=\"7\">Russie (+7)<\/option>\n                        <option value=\"SA\" data-dial=\"966\">Arabie saoudite (+966)<\/option>\n                        <option value=\"DE\" data-dial=\"49\">Allemagne (+49)<\/option>\n                        <option value=\"SG\" data-dial=\"65\">Singapour (+65)<\/option>\n                        <option value=\"TH\" data-dial=\"66\">Tha\u00eflande (+66)<\/option>\n                        <option value=\"VN\" data-dial=\"84\">Vietnam (+84)<\/option>\n                        <option value=\"AE\" data-dial=\"971\">\u00c9mirats arabes unis (+971)<\/option>\n                        <option value=\"GB\" data-dial=\"44\">Royaume-Uni (+44)<\/option>\n                        <option value=\"US\" data-dial=\"1\">\u00c9tats-Unis (+1)<\/option>\n                        <option disabled>\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500<\/option>\n                        <option value=\"AF\" data-dial=\"93\">Afghanistan (+93)<\/option>\n                        <option value=\"ZA\" data-dial=\"27\">Afrique du Sud (+27)<\/option>\n                        <option value=\"AL\" data-dial=\"355\">Albanie (+355)<\/option>\n                        <option value=\"DZ\" data-dial=\"213\">Alg\u00e9rie (+213)<\/option>\n                        <option value=\"DE\" data-dial=\"49\">Allemagne (+49)<\/option>\n                        <option value=\"AD\" data-dial=\"376\">Andorre (+376)<\/option>\n                        <option value=\"AO\" data-dial=\"244\">Angola (+244)<\/option>\n                        <option value=\"AG\" data-dial=\"1\">Antigua-et-Barbuda (+1)<\/option>\n                        <option value=\"SA\" data-dial=\"966\">Arabie saoudite (+966)<\/option>\n                        <option value=\"AR\" data-dial=\"54\">Argentine (+54)<\/option>\n                        <option value=\"AM\" data-dial=\"374\">Arm\u00e9nie (+374)<\/option>\n                        <option value=\"AU\" data-dial=\"61\">Australie (+61)<\/option>\n                        <option value=\"AT\" data-dial=\"43\">Autriche (+43)<\/option>\n                        <option value=\"AZ\" data-dial=\"994\">Azerba\u00efdjan (+994)<\/option>\n                        <option value=\"BS\" data-dial=\"1\">Bahamas (+1)<\/option>\n                        <option value=\"BH\" data-dial=\"973\">Bahre\u00efn (+973)<\/option>\n                        <option value=\"BD\" data-dial=\"880\">Bangladesh (+880)<\/option>\n                        <option value=\"BB\" data-dial=\"1\">Barbade (+1)<\/option>\n                        <option value=\"BE\" data-dial=\"32\">Belgique (+32)<\/option>\n                        <option value=\"BZ\" data-dial=\"501\">Belize (+501)<\/option>\n                        <option value=\"BJ\" data-dial=\"229\">B\u00e9nin (+229)<\/option>\n                        <option value=\"BT\" data-dial=\"975\">Bhoutan (+975)<\/option>\n                        <option value=\"BY\" data-dial=\"375\">Bi\u00e9lorussie (+375)<\/option>\n                        <option value=\"BO\" data-dial=\"591\">Bolivie (+591)<\/option>\n                        <option value=\"BA\" data-dial=\"387\">Bosnie-Herz\u00e9govine (+387)<\/option>\n                        <option value=\"BW\" data-dial=\"267\">Botswana (+267)<\/option>\n                        <option value=\"BR\" data-dial=\"55\">Br\u00e9sil (+55)<\/option>\n                        <option value=\"BN\" data-dial=\"673\">Brunei (+673)<\/option>\n                        <option value=\"BG\" data-dial=\"359\">Bulgarie (+359)<\/option>\n                        <option value=\"BF\" data-dial=\"226\">Burkina Faso (+226)<\/option>\n                        <option value=\"BI\" data-dial=\"257\">Burundi (+257)<\/option>\n                        <option value=\"KH\" data-dial=\"855\">Cambodge (+855)<\/option>\n                        <option value=\"CM\" data-dial=\"237\">Cameroun (+237)<\/option>\n                        <option value=\"CA\" data-dial=\"1\">Canada (+1)<\/option>\n                        <option value=\"CV\" data-dial=\"238\">Cap-Vert (+238)<\/option>\n                        <option value=\"CL\" data-dial=\"56\">Chili (+56)<\/option>\n                        <option value=\"CN\" data-dial=\"86\">Chine (+86)<\/option>\n                        <option value=\"CY\" data-dial=\"357\">Chypre (+357)<\/option>\n                        <option value=\"VA\" data-dial=\"39\">Cit\u00e9 du Vatican (+39)<\/option>\n                        <option value=\"CO\" data-dial=\"57\">Colombie (+57)<\/option>\n                        <option value=\"KM\" data-dial=\"269\">Comores (+269)<\/option>\n                        <option value=\"CG\" data-dial=\"242\">Congo (Brazzaville) (+242)<\/option>\n                        <option value=\"CD\" data-dial=\"243\">Congo (Kinshasa) (+243)<\/option>\n                        <option value=\"KP\" data-dial=\"850\">Cor\u00e9e du Nord (+850)<\/option>\n                        <option value=\"KR\" data-dial=\"82\">Cor\u00e9e du Sud (+82)<\/option>\n                        <option value=\"CR\" data-dial=\"506\">Costa Rica (+506)<\/option>\n                        <option value=\"CI\" data-dial=\"225\">C\u00f4te d&#x27;Ivoire (+225)<\/option>\n                        <option value=\"HR\" data-dial=\"385\">Croatie (+385)<\/option>\n                        <option value=\"CU\" data-dial=\"53\">Cuba (+53)<\/option>\n                        <option value=\"DK\" data-dial=\"45\">Danemark (+45)<\/option>\n                        <option value=\"DJ\" data-dial=\"253\">Djibouti (+253)<\/option>\n                        <option value=\"DM\" data-dial=\"1\">Dominique (+1)<\/option>\n                        <option value=\"EG\" data-dial=\"20\">\u00c9gypte (+20)<\/option>\n                        <option value=\"AE\" data-dial=\"971\">\u00c9mirats arabes unis (+971)<\/option>\n                        <option value=\"EC\" data-dial=\"593\">\u00c9quateur (+593)<\/option>\n                        <option value=\"ER\" data-dial=\"291\">\u00c9rythr\u00e9e (+291)<\/option>\n                        <option value=\"ES\" data-dial=\"34\">Espagne (+34)<\/option>\n                        <option value=\"EE\" data-dial=\"372\">Estonie (+372)<\/option>\n                        <option value=\"SZ\" data-dial=\"268\">Eswatini (+268)<\/option>\n                        <option value=\"US\" data-dial=\"1\">\u00c9tats-Unis (+1)<\/option>\n                        <option value=\"ET\" data-dial=\"251\">\u00c9thiopie (+251)<\/option>\n                        <option value=\"FJ\" data-dial=\"679\">Fidji (+679)<\/option>\n                        <option value=\"FI\" data-dial=\"358\">Finlande (+358)<\/option>\n                        <option value=\"FR\" data-dial=\"33\">France (+33)<\/option>\n                        <option value=\"GA\" data-dial=\"241\">Gabon (+241)<\/option>\n                        <option value=\"GM\" data-dial=\"220\">Gambie (+220)<\/option>\n                        <option value=\"GE\" data-dial=\"995\">G\u00e9orgie (+995)<\/option>\n                        <option value=\"GH\" data-dial=\"233\">Ghana (+233)<\/option>\n                        <option value=\"GR\" data-dial=\"30\">Gr\u00e8ce (+30)<\/option>\n                        <option value=\"GD\" data-dial=\"1\">Grenade (+1)<\/option>\n                        <option value=\"GT\" data-dial=\"502\">Guatemala (+502)<\/option>\n                        <option value=\"GN\" data-dial=\"224\">Guin\u00e9e (+224)<\/option>\n                        <option value=\"GQ\" data-dial=\"240\">Guin\u00e9e \u00e9quatoriale (+240)<\/option>\n                        <option value=\"GW\" data-dial=\"245\">Guin\u00e9e-Bissau (+245)<\/option>\n                        <option value=\"GY\" data-dial=\"592\">Guyana (+592)<\/option>\n                        <option value=\"HT\" data-dial=\"509\">Ha\u00efti (+509)<\/option>\n                        <option value=\"HN\" data-dial=\"504\">Honduras (+504)<\/option>\n                        <option value=\"HK\" data-dial=\"852\">Hong Kong (+852)<\/option>\n                        <option value=\"HU\" data-dial=\"36\">Hongrie (+36)<\/option>\n                        <option value=\"MH\" data-dial=\"692\">\u00celes Marshall (+692)<\/option>\n                        <option value=\"SB\" data-dial=\"677\">\u00celes Salomon (+677)<\/option>\n                        <option value=\"IN\" data-dial=\"91\">Inde (+91)<\/option>\n                        <option value=\"ID\" data-dial=\"62\">Indon\u00e9sie (+62)<\/option>\n                        <option value=\"IQ\" data-dial=\"964\">Irak (+964)<\/option>\n                        <option value=\"IR\" data-dial=\"98\">Iran (+98)<\/option>\n                        <option value=\"IE\" data-dial=\"353\">Irlande (+353)<\/option>\n                        <option value=\"IS\" data-dial=\"354\">Islande (+354)<\/option>\n                        <option value=\"IL\" data-dial=\"972\">Isra\u00ebl (+972)<\/option>\n                        <option value=\"IT\" data-dial=\"39\">Italie (+39)<\/option>\n                        <option value=\"JM\" data-dial=\"1\">Jama\u00efque (+1)<\/option>\n                        <option value=\"JP\" data-dial=\"81\">Japon (+81)<\/option>\n                        <option value=\"JO\" data-dial=\"962\">Jordanie (+962)<\/option>\n                        <option value=\"KZ\" data-dial=\"7\">Kazakhstan (+7)<\/option>\n                        <option value=\"KE\" data-dial=\"254\">Kenya (+254)<\/option>\n                        <option value=\"KG\" data-dial=\"996\">Kirghizstan (+996)<\/option>\n                        <option value=\"KI\" data-dial=\"686\">Kiribati (+686)<\/option>\n                        <option value=\"XK\" data-dial=\"383\">Kosovo (+383)<\/option>\n                        <option value=\"KW\" data-dial=\"965\">Kowe\u00eft (+965)<\/option>\n                        <option value=\"LA\" data-dial=\"856\">Laos (+856)<\/option>\n                        <option value=\"LS\" data-dial=\"266\">Lesotho (+266)<\/option>\n                        <option value=\"LV\" data-dial=\"371\">Lettonie (+371)<\/option>\n                        <option value=\"LB\" data-dial=\"961\">Liban (+961)<\/option>\n                        <option value=\"LR\" data-dial=\"231\">Liberia (+231)<\/option>\n                        <option value=\"LY\" data-dial=\"218\">Libye (+218)<\/option>\n                        <option value=\"LI\" data-dial=\"423\">Liechtenstein (+423)<\/option>\n                        <option value=\"LT\" data-dial=\"370\">Lituanie (+370)<\/option>\n                        <option value=\"LU\" data-dial=\"352\">Luxembourg (+352)<\/option>\n                        <option value=\"MO\" data-dial=\"853\">Macao (+853)<\/option>\n                        <option value=\"MK\" data-dial=\"389\">Mac\u00e9doine du Nord (+389)<\/option>\n                        <option value=\"MG\" data-dial=\"261\">Madagascar (+261)<\/option>\n                        <option value=\"MY\" data-dial=\"60\">Malaisie (+60)<\/option>\n                        <option value=\"MW\" data-dial=\"265\">Malawi (+265)<\/option>\n                        <option value=\"MV\" data-dial=\"960\">Maldives (+960)<\/option>\n                        <option value=\"ML\" data-dial=\"223\">Mali (+223)<\/option>\n                        <option value=\"MT\" data-dial=\"356\">Malte (+356)<\/option>\n                        <option value=\"MA\" data-dial=\"212\">Maroc (+212)<\/option>\n                        <option value=\"MU\" data-dial=\"230\">Maurice (+230)<\/option>\n                        <option value=\"MR\" data-dial=\"222\">Mauritanie (+222)<\/option>\n                        <option value=\"MX\" data-dial=\"52\">Mexique (+52)<\/option>\n                        <option value=\"FM\" data-dial=\"691\">Micron\u00e9sie (+691)<\/option>\n                        <option value=\"MD\" data-dial=\"373\">Moldavie (+373)<\/option>\n                        <option value=\"MC\" data-dial=\"377\">Monaco (+377)<\/option>\n                        <option value=\"MN\" data-dial=\"976\">Mongolie (+976)<\/option>\n                        <option value=\"ME\" data-dial=\"382\">Mont\u00e9n\u00e9gro (+382)<\/option>\n                        <option value=\"MZ\" data-dial=\"258\">Mozambique (+258)<\/option>\n                        <option value=\"MM\" data-dial=\"95\">Myanmar (+95)<\/option>\n                        <option value=\"NA\" data-dial=\"264\">Namibie (+264)<\/option>\n                        <option value=\"NR\" data-dial=\"674\">Nauru (+674)<\/option>\n                        <option value=\"NP\" data-dial=\"977\">N\u00e9pal (+977)<\/option>\n                        <option value=\"NI\" data-dial=\"505\">Nicaragua (+505)<\/option>\n                        <option value=\"NE\" data-dial=\"227\">Niger (+227)<\/option>\n                        <option value=\"NG\" data-dial=\"234\">Nigeria (+234)<\/option>\n                        <option value=\"NO\" data-dial=\"47\">Norv\u00e8ge (+47)<\/option>\n                        <option value=\"NZ\" data-dial=\"64\">Nouvelle-Z\u00e9lande (+64)<\/option>\n                        <option value=\"OM\" data-dial=\"968\">Oman (+968)<\/option>\n                        <option value=\"UG\" data-dial=\"256\">Ouganda (+256)<\/option>\n                        <option value=\"UZ\" data-dial=\"998\">Ouzb\u00e9kistan (+998)<\/option>\n                        <option value=\"PK\" data-dial=\"92\">Pakistan (+92)<\/option>\n                        <option value=\"PW\" data-dial=\"680\">Palaos (+680)<\/option>\n                        <option value=\"PS\" data-dial=\"970\">Palestine (+970)<\/option>\n                        <option value=\"PA\" data-dial=\"507\">Panama (+507)<\/option>\n                        <option value=\"PG\" data-dial=\"675\">Papouasie-Nouvelle-Guin\u00e9e (+675)<\/option>\n                        <option value=\"PY\" data-dial=\"595\">Paraguay (+595)<\/option>\n                        <option value=\"NL\" data-dial=\"31\">Pays-Bas (+31)<\/option>\n                        <option value=\"PE\" data-dial=\"51\">P\u00e9rou (+51)<\/option>\n                        <option value=\"PH\" data-dial=\"63\">Philippines (+63)<\/option>\n                        <option value=\"PL\" data-dial=\"48\">Pologne (+48)<\/option>\n                        <option value=\"PT\" data-dial=\"351\">Portugal (+351)<\/option>\n                        <option value=\"QA\" data-dial=\"974\">Qatar (+974)<\/option>\n                        <option value=\"CF\" data-dial=\"236\">R\u00e9publique centrafricaine (+236)<\/option>\n                        <option value=\"DO\" data-dial=\"1\">R\u00e9publique dominicaine (+1)<\/option>\n                        <option value=\"RO\" data-dial=\"40\">Roumanie (+40)<\/option>\n                        <option value=\"GB\" data-dial=\"44\">Royaume-Uni (+44)<\/option>\n                        <option value=\"RU\" data-dial=\"7\">Russie (+7)<\/option>\n                        <option value=\"RW\" data-dial=\"250\">Rwanda (+250)<\/option>\n                        <option value=\"KN\" data-dial=\"1\">Saint-Christophe-et-Ni\u00e9v\u00e8s (+1)<\/option>\n                        <option value=\"SM\" data-dial=\"378\">Saint-Marin (+378)<\/option>\n                        <option value=\"VC\" data-dial=\"1\">Saint-Vincent-et-les Grenadines (+1)<\/option>\n                        <option value=\"LC\" data-dial=\"1\">Sainte-Lucie (+1)<\/option>\n                        <option value=\"SV\" data-dial=\"503\">Salvador (+503)<\/option>\n                        <option value=\"WS\" data-dial=\"685\">Samoa (+685)<\/option>\n                        <option value=\"ST\" data-dial=\"239\">Sao Tom\u00e9-et-Principe (+239)<\/option>\n                        <option value=\"SN\" data-dial=\"221\">S\u00e9n\u00e9gal (+221)<\/option>\n                        <option value=\"RS\" data-dial=\"381\">Serbie (+381)<\/option>\n                        <option value=\"SC\" data-dial=\"248\">Seychelles (+248)<\/option>\n                        <option value=\"SL\" data-dial=\"232\">Sierra Leone (+232)<\/option>\n                        <option value=\"SG\" data-dial=\"65\">Singapour (+65)<\/option>\n                        <option value=\"SK\" data-dial=\"421\">Slovaquie (+421)<\/option>\n                        <option value=\"SI\" data-dial=\"386\">Slov\u00e9nie (+386)<\/option>\n                        <option value=\"SO\" data-dial=\"252\">Somalie (+252)<\/option>\n                        <option value=\"SD\" data-dial=\"249\">Soudan (+249)<\/option>\n                        <option value=\"SS\" data-dial=\"211\">Soudan du Sud (+211)<\/option>\n                        <option value=\"LK\" data-dial=\"94\">Sri Lanka (+94)<\/option>\n                        <option value=\"SE\" data-dial=\"46\">Su\u00e8de (+46)<\/option>\n                        <option value=\"CH\" data-dial=\"41\">Suisse (+41)<\/option>\n                        <option value=\"SR\" data-dial=\"597\">Suriname (+597)<\/option>\n                        <option value=\"SY\" data-dial=\"963\">Syrie (+963)<\/option>\n                        <option value=\"TJ\" data-dial=\"992\">Tadjikistan (+992)<\/option>\n                        <option value=\"TW\" data-dial=\"886\">Ta\u00efwan (+886)<\/option>\n                        <option value=\"TZ\" data-dial=\"255\">Tanzanie (+255)<\/option>\n                        <option value=\"TD\" data-dial=\"235\">Tchad (+235)<\/option>\n                        <option value=\"CZ\" data-dial=\"420\">Tch\u00e9quie (+420)<\/option>\n                        <option value=\"TH\" data-dial=\"66\">Tha\u00eflande (+66)<\/option>\n                        <option value=\"TL\" data-dial=\"670\">Timor oriental (+670)<\/option>\n                        <option value=\"TG\" data-dial=\"228\">Togo (+228)<\/option>\n                        <option value=\"TO\" data-dial=\"676\">Tonga (+676)<\/option>\n                        <option value=\"TT\" data-dial=\"1\">Trinit\u00e9-et-Tobago (+1)<\/option>\n                        <option value=\"TN\" data-dial=\"216\">Tunisie (+216)<\/option>\n                        <option value=\"TM\" data-dial=\"993\">Turkm\u00e9nistan (+993)<\/option>\n                        <option value=\"TR\" data-dial=\"90\">Turquie (+90)<\/option>\n                        <option value=\"TV\" data-dial=\"688\">Tuvalu (+688)<\/option>\n                        <option value=\"UA\" data-dial=\"380\">Ukraine (+380)<\/option>\n                        <option value=\"UY\" data-dial=\"598\">Uruguay (+598)<\/option>\n                        <option value=\"VU\" data-dial=\"678\">Vanuatu (+678)<\/option>\n                        <option value=\"VE\" data-dial=\"58\">Venezuela (+58)<\/option>\n                        <option value=\"VN\" data-dial=\"84\">Vietnam (+84)<\/option>\n                        <option value=\"YE\" data-dial=\"967\">Y\u00e9men (+967)<\/option>\n                        <option value=\"ZM\" data-dial=\"260\">Zambie (+260)<\/option>\n                        <option value=\"ZW\" data-dial=\"263\">Zimbabwe (+263)<\/option>\n                      <\/select>\n                    <\/div>\n                    <input class=\"adm3-input\" id=\"adm-phone\" name=\"phone\" type=\"tel\" inputmode=\"tel\" autocomplete=\"tel-national\" dir=\"ltr\" placeholder=\"12 345 6789\" aria-describedby=\"adm-phone-err\">\n                  <\/div>\n                <span class=\"adm3-err\" id=\"adm-phone-err\" role=\"alert\" hidden><\/span>\n              <\/div>\n              <div class=\"adm3-field adm3-col-2\">\n                <label class=\"adm3-label\" for=\"adm-email\">E-mail <span class=\"adm-req\">*<\/span><\/label>\n                <input class=\"adm3-input\" id=\"adm-email\" name=\"email\" type=\"email\" required autocomplete=\"email\" dir=\"ltr\" placeholder=\"you@email.com\" aria-describedby=\"adm-email-err\">\n                <span class=\"adm3-err\" id=\"adm-email-err\" role=\"alert\" hidden><\/span>\n              <\/div>\n              <div class=\"adm3-field adm3-col-2\">\n                <label class=\"adm3-label\" for=\"adm-address\">Adresse<\/label>\n                <input class=\"adm3-input\" id=\"adm-address\" name=\"address\" type=\"text\" autocomplete=\"street-address\" placeholder=\"Rue, ville, code postal\">\n              <\/div>\n            <\/div>\n          <\/fieldset>\n\n          <!-- \u2500\u2500 Step 2 \u00b7 Programme \u2500\u2500 -->\n          <fieldset class=\"adm3-step\" data-step=\"2\" hidden>\n            <h2 class=\"adm3-sr adm3-steph\" tabindex=\"-1\">\u00c9tape 2 sur 3: Programme<\/h2>\n            <div class=\"adm3-grid\">\n              <div class=\"adm3-field adm3-col-2\">\n                <label class=\"adm3-label\" for=\"adm-course\">Programme qui vous int\u00e9resse <span class=\"adm-req\">*<\/span><\/label>\n                <select class=\"adm3-input\" id=\"adm-course\" name=\"course\" required aria-describedby=\"adm-course-err\">\n                  <option value=\"\" selected disabled>S\u00e9lectionnez un programme\u2026<\/option>\n                  <optgroup label=\"\u00c9cole de langues\">\n                      <option>Programme d&#x27;anglais intensif (IEP)<\/option>\n                      <option>Programme d&#x27;anglais intensif junior (JIEP)<\/option>\n                      <option>Programme d&#x27;anglais des affaires<\/option>\n                      <option>Pr\u00e9paration IELTS \/ TOEFL iBT<\/option>\n                      <option>Pr\u00e9paration intensive \u00e0 l&#x27;IELTS<\/option>\n                      <option>Cours de conversation quotidien<\/option>\n                      <option>Cours priv\u00e9 VIP<\/option>\n                      <option>Camp d&#x27;\u00e9t\u00e9 \/ d&#x27;hiver<\/option>\n                  <\/optgroup>\n                  <optgroup label=\"D\u00e9veloppement acad\u00e9mique\">\n                      <option>Soutien scolaire primaire<\/option>\n                      <option>Soutien scolaire secondaire inf\u00e9rieur<\/option>\n                      <option>IGCSE<\/option>\n                      <option>A-Level<\/option>\n                      <option>Dipl\u00f4me IB (IBDP)<\/option>\n                  <\/optgroup>\n                <\/select>\n                <span class=\"adm3-err\" id=\"adm-course-err\" role=\"alert\" hidden><\/span>\n              <\/div>\n              <div class=\"adm3-field\">\n                <label class=\"adm3-label\" for=\"adm-start\">D\u00e9but souhait\u00e9<\/label>\n                <select class=\"adm3-input\" id=\"adm-start\" name=\"preferred_start\">\n                    <option value=\"\" selected>S\u00e9lectionnez\u2026<\/option>\n                    <option value=\"As soon as possible\">D\u00e8s que possible<\/option>\n                  <\/select>\n              <\/div>\n              <div class=\"adm3-field\">\n                <label class=\"adm3-label\" for=\"adm-hear\">Comment avez-vous entendu parler de nous ? <span class=\"adm-req\">*<\/span><\/label>\n                <select class=\"adm3-input\" id=\"adm-hear\" name=\"how_did_you_hear\" required aria-describedby=\"adm-hear-err\">\n                    <option value=\"\" selected disabled>Veuillez s\u00e9lectionner\u2026<\/option>\n                    <option value=\"Recherche Google\">Recherche Google<\/option>\n                    <option value=\"Instagram\">Instagram<\/option>\n                    <option value=\"Facebook\">Facebook<\/option>\n                    <option value=\"WeChat \/ RedNote\">WeChat \/ RedNote<\/option>\n                    <option value=\"Naver \/ KakaoTalk\">Naver \/ KakaoTalk<\/option>\n                    <option value=\"Ami \/ Recommandation\">Ami \/ Recommandation<\/option>\n                    <option value=\"Agent\">Agent<\/option>\n                    <option value=\"Visite sur place\">Visite sur place<\/option>\n                    <option value=\"Autre\">Autre<\/option>\n                  <\/select>\n                <span class=\"adm3-err\" id=\"adm-hear-err\" role=\"alert\" hidden><\/span>\n              <\/div>\n              <label class=\"adm3-switch adm3-col-2\">\n                <input type=\"checkbox\" class=\"adm3-check\" id=\"adm-minor\">\n                <span>Le candidat a moins de 18 ans \u2014 ajouter un parent \/ tuteur<\/span>\n              <\/label>\n            <\/div>\n\n            <!-- Parent \/ guardian: shown for an applicant under 18 (from the date of birth), or by hand -->\n            <div class=\"adm3-guardian\" id=\"adm-guardian\" hidden>\n              <p class=\"adm3-guardian__title\">Parent \/ Tuteur <span>(le candidat a moins de 18 ans)<\/span><\/p>\n              <div class=\"adm3-grid\">\n                <div class=\"adm3-field\">\n                  <label class=\"adm3-label\" for=\"adm-gname\">Nom complet du tuteur <span class=\"adm-req\">*<\/span><\/label>\n                  <input class=\"adm3-input\" id=\"adm-gname\" name=\"guardian_name\" type=\"text\" autocomplete=\"off\" placeholder=\"Lettres latines uniquement\" aria-describedby=\"adm-gname-err\">\n                  <span class=\"adm3-err\" id=\"adm-gname-err\" role=\"alert\" hidden><\/span>\n                <\/div>\n                <div class=\"adm3-field\">\n                  <label class=\"adm3-label\" for=\"adm-grel\">Lien de parent\u00e9<\/label>\n                  <select class=\"adm3-input\" id=\"adm-grel\" name=\"guardian_relationship\">\n                    <option value=\"\" selected disabled>S\u00e9lectionnez\u2026<\/option>\n                    <option value=\"P\u00e8re\">P\u00e8re<\/option>\n                    <option value=\"M\u00e8re\">M\u00e8re<\/option>\n                    <option value=\"Tuteur l\u00e9gal\">Tuteur l\u00e9gal<\/option>\n                    <option value=\"Autre\">Autre<\/option>\n                  <\/select>\n                <\/div>\n                <div class=\"adm3-field\">\n                  <label class=\"adm3-label\" for=\"adm-gemail\">E-mail du tuteur <span class=\"adm-req\">*<\/span><\/label>\n                  <input class=\"adm3-input\" id=\"adm-gemail\" name=\"guardian_email\" type=\"email\" autocomplete=\"off\" dir=\"ltr\" placeholder=\"guardian@email.com\" aria-describedby=\"adm-gemail-err\">\n                  <span class=\"adm3-err\" id=\"adm-gemail-err\" role=\"alert\" hidden><\/span>\n                <\/div>\n                <div class=\"adm3-field\">\n                  <label class=\"adm3-label\" for=\"adm-gphone\">T\u00e9l\u00e9phone du tuteur <span class=\"adm-req\">*<\/span><\/label>\n                  <div class=\"adm3-phone\">\n                    <div class=\"adm3-dial\"><span class=\"adm3-dial__val\" aria-hidden=\"true\">MY +60<\/span>\n                      <select id=\"adm-gdial\" aria-label=\"Indicatif du pays\"><option value=\"MY\" data-dial=\"60\" selected>Malaysia (+60)<\/option><\/select>\n                    <\/div>\n                    <input class=\"adm3-input\" id=\"adm-gphone\" name=\"guardian_phone\" type=\"tel\" inputmode=\"tel\" autocomplete=\"off\" dir=\"ltr\" placeholder=\"12 345 6789\" aria-describedby=\"adm-gphone-err\">\n                  <\/div>\n                  <span class=\"adm3-err\" id=\"adm-gphone-err\" role=\"alert\" hidden><\/span>\n                <\/div>\n              <\/div>\n            <\/div>\n          <\/fieldset>\n\n          <!-- \u2500\u2500 Step 3 \u00b7 Confirm \u2500\u2500 -->\n          <fieldset class=\"adm3-step\" data-step=\"3\" hidden>\n            <h2 class=\"adm3-sr adm3-steph\" tabindex=\"-1\">\u00c9tape 3 sur 3: Confirmation<\/h2>\n            <div class=\"adm3-grid\">\n              <div class=\"adm3-field adm3-col-2\">\n                <label class=\"adm3-label\" for=\"adm-doc\">Copie du passeport \/ NRIC <span class=\"adm-req\">*<\/span><\/label>\n                <label class=\"adm3-drop\" id=\"adm-drop\">\n                  <input class=\"adm3-sr\" id=\"adm-doc\" name=\"document\" type=\"file\" accept=\".pdf,.jpg,.jpeg,.png,.webp,.heic,image\/*,application\/pdf\" required aria-describedby=\"adm-drop-s adm-doc-err\">\n                  <span class=\"adm3-drop__icon\"><svg width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#1556B5\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><path d=\"M21 15v4a2 2 0 01-2 2H5a2 2 0 01-2-2v-4\"\/><polyline points=\"17 8 12 3 7 8\"\/><line x1=\"12\" y1=\"3\" x2=\"12\" y2=\"15\"\/><\/svg><\/span>\n                  <span><span class=\"adm3-drop__t\" id=\"adm-drop-t\">D\u00e9posez un fichier ou parcourez<\/span><span class=\"adm3-drop__s\" id=\"adm-drop-s\">PDF ou photo (JPG\/PNG). 10 Mo maximum.<\/span><\/span>\n                <\/label>\n                <span class=\"adm3-err\" id=\"adm-doc-err\" role=\"alert\" hidden><\/span>\n              <\/div>\n              <div class=\"adm3-field adm3-col-2\">\n                <label class=\"adm3-label\" for=\"adm-notes\">Y a-t-il autre chose que nous devrions savoir ?<\/label>\n                <textarea class=\"adm3-input\" id=\"adm-notes\" name=\"notes\" rows=\"3\" placeholder=\"Facultatif \u2014 objectifs, questions, horaire souhait\u00e9\u2026\"><\/textarea>\n              <\/div>\n              <div class=\"adm3-col-2\">\n                <label class=\"adm3-consent\">\n                  <input type=\"checkbox\" class=\"adm3-check\" id=\"adm-terms\" name=\"terms\" required aria-describedby=\"adm-terms-err\">\n                  <span>J'ai lu et j'accepte les <a href=\"https:\/\/glacademy.edu.my\/terms-of-enrolment\/\" target=\"_blank\" rel=\"noopener\">Conditions g\u00e9n\u00e9rales d'inscription<\/a>. <span class=\"adm-req\">*<\/span><\/span>\n                <\/label>\n                <span class=\"adm3-err\" id=\"adm-terms-err\" role=\"alert\" hidden><\/span>\n              <\/div>\n              <div class=\"adm3-col-2\">\n                <label class=\"adm3-consent\">\n                  <input type=\"checkbox\" class=\"adm3-check\" id=\"adm-consent\" name=\"consent\" required aria-describedby=\"adm-consent-err\">\n                  <span>J'accepte que GL Academy traite mes donn\u00e9es personnelles conform\u00e9ment \u00e0 la <a href=\"https:\/\/glacademy.edu.my\/fr\/privacy-policy\/\" target=\"_blank\" rel=\"noopener\">Politique de confidentialit\u00e9 et \u00e0 l'avis PDPA<\/a>. <span class=\"adm-req\">*<\/span><\/span>\n                <\/label>\n                <span class=\"adm3-err\" id=\"adm-consent-err\" role=\"alert\" hidden><\/span>\n              <\/div>\n\n              <!-- Signature: the applicant's, or the parent \/ guardian's when there is one -->\n              <div class=\"adm3-field adm3-col-2 adm3-sig\" id=\"adm-sig\" data-err=\"adm-sig-err\">\n                <div class=\"adm3-sig__head\">\n                  <span class=\"adm3-label\" id=\"adm-sig-lbl\"><span data-signer=\"self\">Signature du candidat<\/span><span data-signer=\"guardian\" hidden>Signature du parent \/ tuteur<\/span> <span class=\"adm-req\">*<\/span><\/span>\n                  <button type=\"button\" class=\"adm3-link\" id=\"adm-sig-clear\">Effacer<\/button>\n                <\/div>\n                <p class=\"adm3-sig__stmt\"><span data-signer=\"self\">En signant, je confirme que les informations fournies dans cette candidature sont exactes et compl\u00e8tes.<\/span><span data-signer=\"guardian\" hidden>En signant, je confirme \u00eatre le parent ou le tuteur l\u00e9gal du candidat et que les informations fournies dans cette candidature sont exactes et compl\u00e8tes.<\/span><\/p>\n                <div class=\"adm3-sig__pad\" id=\"adm-sig-pad\">\n                  <span class=\"adm3-sig__line\" aria-hidden=\"true\"><\/span>\n                  <canvas id=\"adm-sig-canvas\" role=\"img\" aria-label=\"Zone de signature\" aria-describedby=\"adm-sig-lbl adm-sig-hint\"><\/canvas>\n                <\/div>\n                <div class=\"adm3-sig__typed\" id=\"adm-sig-typed\" hidden>\n                  <label class=\"adm3-label\" for=\"adm-sig-text\">Saisissez votre nom complet<\/label>\n                  <input class=\"adm3-input\" id=\"adm-sig-text\" type=\"text\" autocomplete=\"off\" aria-describedby=\"adm-sig-err\">\n                  <div class=\"adm3-sig__preview\" id=\"adm-sig-preview\" aria-hidden=\"true\"><\/div>\n                <\/div>\n                <div class=\"adm3-sig__foot\">\n                  <span class=\"adm3-hint\" id=\"adm-sig-hint\">Signez dans le cadre avec votre doigt ou votre souris.<\/span>\n                  <button type=\"button\" class=\"adm3-link\" id=\"adm-sig-mode\">Saisir mon nom \u00e0 la place<\/button>\n                <\/div>\n                <p class=\"adm3-sig__as\">Signataire: <strong id=\"adm-sig-as\">\u2014<\/strong><\/p>\n                <span class=\"adm3-err\" id=\"adm-sig-err\" role=\"alert\" hidden><\/span>\n              <\/div>\n            <\/div>\n\n            <!-- Honeypot (anti-spam; leave empty) -->\n            <div class=\"adm-hp\" aria-hidden=\"true\" style=\"position:absolute!important;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);clip-path:inset(50%);white-space:nowrap;border:0\">\n              <label>Website<input type=\"text\" name=\"website\" tabindex=\"-1\" autocomplete=\"off\"><\/label>\n            <\/div>\n          <\/fieldset>\n\n          <div class=\"adm3-foot\">\n            <button type=\"button\" class=\"adm3-back is-hidden\" id=\"adm-back\"><svg class=\"adm3-arrow\" width=\"15\" height=\"15\" viewBox=\"0 0 16 16\" fill=\"none\" aria-hidden=\"true\"><path d=\"M13 8H3M7 4L3 8l4 4\" stroke=\"currentColor\" stroke-width=\"1.6\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><\/svg> Retour<\/button>\n            <button class=\"adm3-btn\" id=\"adm-submit\" type=\"submit\"><span class=\"adm-submit__label\">Continuer<\/span><svg class=\"adm3-arrow\" width=\"15\" height=\"15\" viewBox=\"0 0 16 16\" fill=\"none\" aria-hidden=\"true\"><path d=\"M3 8h10M9 4l4 4-4 4\" stroke=\"currentColor\" stroke-width=\"1.6\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><\/svg><\/button>\n          <\/div>\n          <p class=\"adm3-formerr\" id=\"adm-error\" role=\"alert\"><\/p>\n        <\/form>\n      <\/div>\n\n      <div class=\"adm3-talk\">\n        <p class=\"adm3-talk__t\">Vous pr\u00e9f\u00e9rez d'abord en parler ?<\/p>\n        <a href=\"https:\/\/wa.me\/601154397010\" target=\"_blank\" rel=\"noopener\"><svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"#25D366\" aria-hidden=\"true\"><path d=\"M17.472 14.382c-.297-.149-1.758-.867-2.03-.967-.273-.099-.471-.148-.67.15-.197.297-.767.966-.94 1.164-.173.199-.347.223-.644.075-.297-.15-1.255-.463-2.39-1.475-.883-.788-1.48-1.761-1.653-2.059-.173-.297-.018-.458.13-.606.134-.133.298-.347.446-.52.149-.174.198-.298.298-.497.099-.198.05-.371-.025-.52-.075-.149-.669-1.612-.916-2.207-.242-.579-.487-.5-.669-.51-.173-.008-.371-.01-.57-.01-.198 0-.52.074-.792.372-.272.297-1.04 1.016-1.04 2.479 0 1.462 1.065 2.875 1.213 3.074.149.198 2.096 3.2 5.077 4.487.709.306 1.262.489 1.694.625.712.227 1.36.195 1.871.118.571-.085 1.758-.719 2.006-1.413.248-.694.248-1.289.173-1.413-.074-.124-.272-.198-.57-.347m-5.421 7.403h-.004a9.87 9.87 0 01-5.031-1.378l-.361-.214-3.741.982.998-3.648-.235-.374a9.86 9.86 0 01-1.51-5.26c.001-5.45 4.436-9.884 9.888-9.884 2.64 0 5.122 1.03 6.988 2.898a9.825 9.825 0 012.893 6.994c-.003 5.45-4.437 9.884-9.885 9.884m8.413-18.297A11.815 11.815 0 0012.05 0C5.495 0 .16 5.335.157 11.892c0 2.096.547 4.142 1.588 5.945L.057 24l6.305-1.654a11.882 11.882 0 005.683 1.448h.005c6.554 0 11.89-5.335 11.893-11.893a11.821 11.821 0 00-3.48-8.413z\"\/><\/svg> \u00c9crivez-nous sur WhatsApp<\/a>\n        <a href=\"https:\/\/t.me\/glacademy_my\" target=\"_blank\" rel=\"noopener\"><svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"#26A5E4\" aria-hidden=\"true\"><path d=\"M11.944 0A12 12 0 0 0 0 12a12 12 0 0 0 12 12 12 12 0 0 0 12-12A12 12 0 0 0 12 0a12 12 0 0 0-.056 0zm4.962 7.224c.1-.002.321.023.465.14a.506.506 0 0 1 .171.325c.016.093.036.306.02.472-.18 1.898-.962 6.502-1.36 8.627-.168.9-.499 1.201-.82 1.23-.696.065-1.225-.46-1.9-.902-1.056-.693-1.653-1.124-2.678-1.8-1.185-.78-.417-1.21.258-1.91.177-.184 3.247-2.977 3.307-3.23.007-.032.014-.15-.056-.212s-.174-.041-.249-.024c-.106.024-1.793 1.14-5.061 3.345-.48.33-.913.49-1.302.48-.428-.008-1.252-.241-1.865-.44-.752-.245-1.349-.374-1.297-.789.027-.216.325-.437.893-.663 3.498-1.524 5.83-2.529 6.998-3.014 3.332-1.386 4.025-1.627 4.476-1.635z\"\/><\/svg> Telegram<\/a>\n        <a href=\"https:\/\/pf.kakao.com\/_xaRENG\/chat\" target=\"_blank\" rel=\"noopener\"><svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"#3A1D1D\" aria-hidden=\"true\"><path d=\"M12 3C6.477 3 2 6.477 2 10.8c0 2.765 1.696 5.19 4.25 6.662L5.08 21l4.577-2.397A11.8 11.8 0 0012 18.6c5.523 0 10-3.477 10-7.8S17.523 3 12 3z\"\/><\/svg> KakaoTalk<\/a>\n        <span class=\"adm3-talk__chip\"><svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"#07C160\" aria-hidden=\"true\"><path d=\"M8.69 3C4.47 3 1 6.02 1 9.77c0 2.01 1.01 3.8 2.6 5.02l-.65 1.96 2.3-1.14c.77.2 1.58.32 2.44.32.22 0 .43-.01.64-.03-.14-.44-.21-.9-.21-1.38 0-3.41 3.12-6.18 6.97-6.18.23 0 .46.01.68.03C14.93 5.56 12.06 3 8.69 3zm-1.9 3.4c.5 0 .9.4.9.9s-.4.9-.9.9-.9-.4-.9-.9.4-.9.9-.9zm3.8 0c.5 0 .9.4.9.9s-.4.9-.9.9-.9-.4-.9-.9.4-.9.9-.9z\"\/><path d=\"M22.5 14.5c0-3.03-2.93-5.5-6.55-5.5S9.4 11.47 9.4 14.5s2.93 5.5 6.55 5.5c.7 0 1.38-.1 2.01-.28l1.95.97-.55-1.67C21.28 17.88 22.5 16.31 22.5 14.5zm-8.65-1c-.42 0-.75-.34-.75-.75s.33-.75.75-.75.75.34.75.75-.33.75-.75.75zm4.2 0c-.42 0-.75-.34-.75-.75s.33-.75.75-.75.75.34.75.75-.33.75-.75.75z\"\/><\/svg> WeChat : <strong class=\"adm3-ltr\">GLACADEMY_KL<\/strong><\/span>\n        <a href=\"tel:+60364612232\"><svg width=\"15\" height=\"15\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#1556B5\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><path d=\"M22 16.92v3a2 2 0 01-2.18 2 19.79 19.79 0 01-8.63-3.07A19.5 19.5 0 013.07 10.8a19.79 19.79 0 01-3.07-8.7A2 2 0 012 0h3a2 2 0 012 1.72c.127.96.361 1.903.7 2.81a2 2 0 01-.45 2.11L6.09 7.91a16 16 0 006 6l1.27-1.27a2 2 0 012.11-.45c.907.339 1.85.573 2.81.7A2 2 0 0122 16.92z\"\/><\/svg> <span class=\"adm3-ltr\">+603-6461-2232<\/span><\/a>\n      <\/div>\n    <\/div>\n\n  <\/div>\n<\/section>\n\n<style id=\"adm3-guide-css\">\n.adm3-lead{font-size:16px;line-height:1.65;color:#3D4757;max-width:560px;margin:14px 0 0}\n.adm3-guide{font-family:'Montserrat',sans-serif;color:#3D4757;background:#fff;padding:72px 28px 88px;border-top:1px solid #EFF1F5}\n.adm3-guide *{box-sizing:border-box}\n.adm3-guide__in{max-width:1100px;margin:0 auto}\n.adm3-guide__top{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(0,1fr);gap:48px;align-items:center;margin-bottom:44px}\n.adm3-guide__h{font-size:clamp(26px,3.4vw,34px);font-weight:800;line-height:1.15;letter-spacing:-.02em;color:#052868;margin:0 0 16px}\n.adm3-guide p{font-size:15.5px;line-height:1.7;margin:0 0 14px}\n.adm3-guide__fig{margin:0}\n.adm3-guide__fig img{display:block;width:100%;height:auto;border-radius:18px;box-shadow:0 18px 40px rgba(5,40,104,.12)}\n.adm3-guide__fig figcaption{font-size:13px;color:#6B7385;margin-top:10px;text-align:center}\n.adm3-guide__steps{list-style:none;margin:0 0 44px;padding:0;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:18px;counter-reset:admg}\n.adm3-guide__steps li{counter-increment:admg;background:#F6F7FA;border:1px solid #E4E7EE;border-radius:16px;padding:22px 20px}\n.adm3-guide__steps li::before{content:counter(admg);display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;border-radius:50%;background:#052868;color:#fff;font-weight:800;font-size:14px;margin-bottom:12px}\n.adm3-guide h3{font-size:17px;font-weight:800;color:#052868;margin:0 0 8px;line-height:1.3}\n.adm3-guide__steps p{font-size:14.5px;margin:0}\n.adm3-guide a{color:#1556B5;font-weight:600}\n.adm3-guide__cols{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:36px}\n.adm3-guide ul{margin:0;padding-left:20px}\n.adm3-guide li{font-size:15px;line-height:1.65;margin-bottom:6px}\n.adm3-guide__steps li{margin-bottom:0}\n@media (max-width:1023px){.adm3-guide__steps{grid-template-columns:repeat(2,minmax(0,1fr))}.adm3-guide__top{grid-template-columns:1fr;gap:28px}}\n@media (max-width:640px){.adm3-guide{padding:52px 16px 64px}.adm3-guide__steps,.adm3-guide__cols{grid-template-columns:1fr}}\n<\/style>\n\n<section class=\"adm3-guide\" aria-labelledby=\"adm3-guide-h\">\n  <div class=\"adm3-guide__in\">\n    <div class=\"adm3-guide__top\">\n      <div>\n        <h2 class=\"adm3-guide__h\" id=\"adm3-guide-h\">Inscription \u00e9cole d'anglais \u00e0 Kuala Lumpur : comment \u00e7a se passe<\/h2>\n        <p>Un seul formulaire d'inscription \u00e9cole d'anglais couvre tous les programmes de GL Academy, du Programme d'anglais intensif, de la pr\u00e9paration \u00e0 l'IELTS et des camps de vacances jusqu'au soutien scolaire Primaire, IGCSE, A-Level et IB. Voici ce qui se passe une fois que vous avez cliqu\u00e9 sur \u00ab Envoyer la candidature \u00bb.<\/p>\n        <p>Vous ne savez pas quel programme choisir ? S\u00e9lectionnez le plus proche et pr\u00e9cisez votre besoin \u00e0 la derni\u00e8re \u00e9tape : nous vous proposerons la bonne classe.<\/p>\n      <\/div>\n      <figure class=\"adm3-guide__fig\">\n        <img loading=\"lazy\" src=\"https:\/\/glacademy.edu.my\/wp-content\/plugins\/gl-academy-pages\/assets\/img\/w\/u-2026-05-GLA21U4A7880-2000.webp\" alt=\"Inscription \u00e9cole d'anglais \u00e0 Kuala Lumpur : \u00e9l\u00e8ves en cours chez GL Academy\" loading=\"lazy\" decoding=\"async\" width=\"2000\" height=\"1334\" srcset=\"https:\/\/glacademy.edu.my\/wp-content\/plugins\/gl-academy-pages\/assets\/img\/w\/u-2026-05-GLA21U4A7880-400.webp 400w, https:\/\/glacademy.edu.my\/wp-content\/plugins\/gl-academy-pages\/assets\/img\/w\/u-2026-05-GLA21U4A7880-800.webp 800w, https:\/\/glacademy.edu.my\/wp-content\/plugins\/gl-academy-pages\/assets\/img\/w\/u-2026-05-GLA21U4A7880-1200.webp 1200w, https:\/\/glacademy.edu.my\/wp-content\/plugins\/gl-academy-pages\/assets\/img\/w\/u-2026-05-GLA21U4A7880-1560.webp 1560w, https:\/\/glacademy.edu.my\/wp-content\/plugins\/gl-academy-pages\/assets\/img\/w\/u-2026-05-GLA21U4A7880-2000.webp 2000w\" sizes=\"auto, (max-width: 600px) 92vw, (max-width: 1100px) 94vw, 490px\">\n        <figcaption>Apr\u00e8s votre inscription \u00e9cole d'anglais, vous \u00e9tudierez dans nos salles de classe au E-10-20, Plaza Mont Kiara, \u00e0 Kuala Lumpur.<\/figcaption>\n      <\/figure>\n    <\/div>\n\n    <ol class=\"adm3-guide__steps\">\n      <li><h3>Postulez en ligne<\/h3><p>Remplissez les trois \u00e9tapes ci-dessus et signez. Les candidats de moins de 18 ans ajoutent un parent ou un tuteur, qui signe pour eux.<\/p><\/li>\n      <li><h3>Nous confirmons votre place<\/h3><p>Notre \u00e9quipe des admissions vous r\u00e9pond sous 3 jours ouvrables pour confirmer votre place.<\/p><\/li>\n      <li><h3>Test de niveau<\/h3><p>Chaque nouvel \u00e9l\u00e8ve passe un test de niveau avant son premier cours, afin de rejoindre le bon niveau. Essayez notre <a href=\"\/placement-test\/\">test de niveau d'anglais gratuit<\/a> quand vous le souhaitez.<\/p><\/li>\n      <li><h3>Visa \u00e9tudiant, si n\u00e9cessaire<\/h3><p>Pour un cours de 4 mois ou plus, GL Academy demande votre Student Pass aupr\u00e8s d'<a href=\"https:\/\/educationmalaysia.gov.my\/\" target=\"_blank\" rel=\"noopener\">Education Malaysia Global Services (EMGS)<\/a>. Consultez notre guide du <a href=\"https:\/\/glacademy.edu.my\/fr\/visa\/\">visa \u00e9tudiant en Malaisie<\/a>.<\/p><\/li>\n    <\/ol>\n\n    <div class=\"adm3-guide__cols\">\n      <div>\n        <h3>Inscription \u00e9cole d'anglais : les pi\u00e8ces \u00e0 pr\u00e9parer<\/h3>\n        <ul>\n          <li>Votre nom complet en alphabet latin, tel qu'il figure sur votre passeport ou votre NRIC<\/li>\n          <li>Nationalit\u00e9, date de naissance, num\u00e9ro de t\u00e9l\u00e9phone et e-mail<\/li>\n          <li>Une copie de votre passeport ou de votre NRIC (PDF ou photo, 10 Mo maximum)<\/li>\n          <li>Le programme qui vous int\u00e9resse et la date de d\u00e9but souhait\u00e9e<\/li>\n          <li>Le nom, l'e-mail et le t\u00e9l\u00e9phone d'un parent ou d'un tuteur si le candidat a moins de 18 ans<\/li>\n          <li>L'acceptation de nos <a href=\"\/terms-of-enrolment\/\">Conditions g\u00e9n\u00e9rales d'inscription<\/a> et de notre <a href=\"https:\/\/glacademy.edu.my\/fr\/privacy-policy\/\">Politique de confidentialit\u00e9<\/a><\/li>\n        <\/ul>\n      <\/div>\n      <div>\n        <h3>Qui peut s'inscrire ?<\/h3>\n        <p>L'inscription \u00e9cole d'anglais chez GL Academy est ouverte \u00e0 tous les niveaux, du d\u00e9butant complet \u00e0 l'avanc\u00e9 : c'est le test de niveau qui d\u00e9termine votre classe, pas une estimation. Les enfants peuvent rejoindre notre <a href=\"https:\/\/glacademy.edu.my\/fr\/jiep\/\">Programme d'anglais intensif junior<\/a> (d\u00e8s 5 ans) et nos <a href=\"https:\/\/glacademy.edu.my\/fr\/holiday-camp\/\">camps de vacances<\/a> (de 5 \u00e0 16 ans).<\/p>\n        <p>Des questions sur votre inscription \u00e9cole d'anglais avant de postuler ? Appelez le <a href=\"tel:+60364612232\">+603-6461-2232<\/a>, \u00e9crivez-nous sur WhatsApp ou <a href=\"https:\/\/glacademy.edu.my\/fr\/contact-us\/\">venez visiter notre centre<\/a>.<\/p>\n      <\/div>\n    <\/div>\n  <\/div>\n<\/section>\n\n<script>\n(function(){\n  var form = document.getElementById('adm-form');\n  if (!form || form.dataset.admInit) return;\n  form.dataset.admInit = '1';\n  var T = {\"locale\": \"fr-FR\", \"course_ph\": \"S\u00e9lectionnez un programme\u2026\", \"req\": \"Ce champ est obligatoire.\", \"choose\": \"Veuillez faire un choix.\", \"name_err\": \"Veuillez utiliser l'alphabet latin (lettres latines uniquement).\", \"email_err\": \"Veuillez saisir une adresse e-mail valide.\", \"dob_err\": \"Veuillez saisir une date de naissance valide (JJ \/ MM \/ AAAA).\", \"dob_hint\": \"Jour \/ mois \/ ann\u00e9e\", \"phone_err\": \"Veuillez saisir un num\u00e9ro de t\u00e9l\u00e9phone valide.\", \"doc_err\": \"Veuillez joindre un fichier PDF ou image de moins de 10 Mo.\", \"e_doc\": \"Veuillez joindre la copie de votre passeport ou de votre CI (PDF ou photo, moins de 10 Mo).\", \"e_glatin\": \"Veuillez \u00e9crire le nom du tuteur en utilisant l\u2019alphabet latin.\", \"e_terms\": \"Veuillez accepter les Conditions g\u00e9n\u00e9rales d\u2019inscription.\", \"e_privacy\": \"Veuillez accepter la Politique de confidentialit\u00e9 pour continuer.\", \"sig_err\": \"Veuillez signer dans le cadre.\", \"e_required\": \"Veuillez remplir tous les champs obligatoires (*).\", \"submitting\": \"Envoi en cours\u2026\", \"submit\": \"Envoyer la candidature\", \"cont\": \"Continuer\", \"ref\": \"R\u00e9f\u00e9rence : \", \"e_generic\": \"Une erreur s\u2019est produite. Veuillez r\u00e9essayer ou nous contacter sur WhatsApp.\", \"e_network\": \"Impossible d\u2019envoyer pour le moment. Veuillez r\u00e9essayer ou nous joindre sur WhatsApp.\", \"asap\": \"D\u00e8s que possible\", \"starts\": \"D\u00e9but : {m}\", \"details\": \"{n} sur 7 informations\", \"tag_app\": \"Candidat\", \"tag_ready\": \"Pr\u00eat \u00e0 envoyer\", \"card_name\": \"Votre nom\", \"card_prog\": \"Votre programme\", \"sig_type\": \"Saisir mon nom \u00e0 la place\", \"sig_draw\": \"Signer \u00e0 la main\", \"nat_none\": \"Aucun pays correspondant\", \"upload_title\": \"D\u00e9posez un fichier ou parcourez\", \"upload_sub\": \"PDF ou photo (JPG\/PNG). 10 Mo maximum.\", \"upload_change\": \"Choisir un autre fichier\"};\n  var API = '\/wp-json\/glacademy\/v1';\n  var $ = function(id){ return document.getElementById(id); };\n  var LATIN = \/^[A-Za-z0-9 .,'\\\/()\\-]+$\/;\n  var EMAIL = \/^[A-Za-z0-9._%+\\-]+@[A-Za-z0-9.\\-]+\\.[A-Za-z]{2,}$\/;\n  var NATS = [[\"Afghanistan\", \"Afghanistan\", \"AF\", \"Afghanistan\", \"\"], [\"South Africa\", \"Afrique du Sud\", \"ZA\", \"South Africa\", \"\"], [\"Albania\", \"Albanie\", \"AL\", \"Albania\", \"\"], [\"Algeria\", \"Alg\u00e9rie\", \"DZ\", \"Algeria\", \"\"], [\"Germany\", \"Allemagne\", \"DE\", \"Germany\", \"\"], [\"Andorra\", \"Andorre\", \"AD\", \"Andorra\", \"\"], [\"Angola\", \"Angola\", \"AO\", \"Angola\", \"\"], [\"Antigua and Barbuda\", \"Antigua-et-Barbuda\", \"AG\", \"Antigua and Barbuda\", \"\"], [\"Saudi Arabia\", \"Arabie saoudite\", \"SA\", \"Saudi Arabia\", \"KSA\"], [\"Argentina\", \"Argentine\", \"AR\", \"Argentina\", \"\"], [\"Armenia\", \"Arm\u00e9nie\", \"AM\", \"Armenia\", \"\"], [\"Australia\", \"Australie\", \"AU\", \"Australia\", \"\"], [\"Austria\", \"Autriche\", \"AT\", \"Austria\", \"\"], [\"Azerbaijan\", \"Azerba\u00efdjan\", \"AZ\", \"Azerbaijan\", \"\"], [\"Bahamas\", \"Bahamas\", \"BS\", \"Bahamas\", \"\"], [\"Bahrain\", \"Bahre\u00efn\", \"BH\", \"Bahrain\", \"\"], [\"Bangladesh\", \"Bangladesh\", \"BD\", \"Bangladesh\", \"\"], [\"Barbados\", \"Barbade\", \"BB\", \"Barbados\", \"\"], [\"Belgium\", \"Belgique\", \"BE\", \"Belgium\", \"\"], [\"Belize\", \"Belize\", \"BZ\", \"Belize\", \"\"], [\"Benin\", \"B\u00e9nin\", \"BJ\", \"Benin\", \"\"], [\"Bhutan\", \"Bhoutan\", \"BT\", \"Bhutan\", \"\"], [\"Belarus\", \"Bi\u00e9lorussie\", \"BY\", \"Belarus\", \"\"], [\"Bolivia\", \"Bolivie\", \"BO\", \"Bolivia\", \"\"], [\"Bosnia and Herzegovina\", \"Bosnie-Herz\u00e9govine\", \"BA\", \"Bosnia and Herzegovina\", \"\"], [\"Botswana\", \"Botswana\", \"BW\", \"Botswana\", \"\"], [\"Brazil\", \"Br\u00e9sil\", \"BR\", \"Brazil\", \"\"], [\"Brunei\", \"Brunei\", \"BN\", \"Brunei\", \"Brunei Darussalam\"], [\"Bulgaria\", \"Bulgarie\", \"BG\", \"Bulgaria\", \"\"], [\"Burkina Faso\", \"Burkina Faso\", \"BF\", \"Burkina Faso\", \"\"], [\"Burundi\", \"Burundi\", \"BI\", \"Burundi\", \"\"], [\"Cambodia\", \"Cambodge\", \"KH\", \"Cambodia\", \"\"], [\"Cameroon\", \"Cameroun\", \"CM\", \"Cameroon\", \"\"], [\"Canada\", \"Canada\", \"CA\", \"Canada\", \"\"], [\"Cabo Verde\", \"Cap-Vert\", \"CV\", \"Cabo Verde\", \"Cape Verde\"], [\"Chile\", \"Chili\", \"CL\", \"Chile\", \"\"], [\"China\", \"Chine\", \"CN\", \"China\", \"PRC \u4e2d\u534e\u4eba\u6c11\u5171\u548c\u56fd\"], [\"Cyprus\", \"Chypre\", \"CY\", \"Cyprus\", \"\"], [\"Vatican City\", \"Cit\u00e9 du Vatican\", \"VA\", \"Vatican City\", \"Holy See Vatican\"], [\"Colombia\", \"Colombie\", \"CO\", \"Colombia\", \"\"], [\"Comoros\", \"Comores\", \"KM\", \"Comoros\", \"\"], [\"Congo (Brazzaville)\", \"Congo (Brazzaville)\", \"CG\", \"Congo (Brazzaville)\", \"Republic of the Congo\"], [\"Congo (Kinshasa)\", \"Congo (Kinshasa)\", \"CD\", \"Congo (Kinshasa)\", \"DRC Democratic Republic of the Congo\"], [\"North Korea\", \"Cor\u00e9e du Nord\", \"KP\", \"North Korea\", \"DPRK\"], [\"South Korea\", \"Cor\u00e9e du Sud\", \"KR\", \"South Korea\", \"Korea \ud55c\uad6d \u97d3\u56fd \u97e9\u56fd\"], [\"Costa Rica\", \"Costa Rica\", \"CR\", \"Costa Rica\", \"\"], [\"C\u00f4te d'Ivoire\", \"C\u00f4te d'Ivoire\", \"CI\", \"C\u00f4te d'Ivoire\", \"Ivory Coast\"], [\"Croatia\", \"Croatie\", \"HR\", \"Croatia\", \"\"], [\"Cuba\", \"Cuba\", \"CU\", \"Cuba\", \"\"], [\"Denmark\", \"Danemark\", \"DK\", \"Denmark\", \"\"], [\"Djibouti\", \"Djibouti\", \"DJ\", \"Djibouti\", \"\"], [\"Dominica\", \"Dominique\", \"DM\", \"Dominica\", \"\"], [\"Egypt\", \"\u00c9gypte\", \"EG\", \"Egypt\", \"\"], [\"United Arab Emirates\", \"\u00c9mirats arabes unis\", \"AE\", \"United Arab Emirates\", \"UAE Emirates Dubai\"], [\"Ecuador\", \"\u00c9quateur\", \"EC\", \"Ecuador\", \"\"], [\"Eritrea\", \"\u00c9rythr\u00e9e\", \"ER\", \"Eritrea\", \"\"], [\"Spain\", \"Espagne\", \"ES\", \"Spain\", \"\"], [\"Estonia\", \"Estonie\", \"EE\", \"Estonia\", \"\"], [\"Eswatini\", \"Eswatini\", \"SZ\", \"Eswatini\", \"Swaziland\"], [\"United States\", \"\u00c9tats-Unis\", \"US\", \"United States\", \"USA America United States of America\"], [\"Ethiopia\", \"\u00c9thiopie\", \"ET\", \"Ethiopia\", \"\"], [\"Fiji\", \"Fidji\", \"FJ\", \"Fiji\", \"\"], [\"Finland\", \"Finlande\", \"FI\", \"Finland\", \"\"], [\"France\", \"France\", \"FR\", \"France\", \"\"], [\"Gabon\", \"Gabon\", \"GA\", \"Gabon\", \"\"], [\"Gambia\", \"Gambie\", \"GM\", \"Gambia\", \"\"], [\"Georgia\", \"G\u00e9orgie\", \"GE\", \"Georgia\", \"\"], [\"Ghana\", \"Ghana\", \"GH\", \"Ghana\", \"\"], [\"Greece\", \"Gr\u00e8ce\", \"GR\", \"Greece\", \"\"], [\"Grenada\", \"Grenade\", \"GD\", \"Grenada\", \"\"], [\"Guatemala\", \"Guatemala\", \"GT\", \"Guatemala\", \"\"], [\"Guinea\", \"Guin\u00e9e\", \"GN\", \"Guinea\", \"\"], [\"Equatorial Guinea\", \"Guin\u00e9e \u00e9quatoriale\", \"GQ\", \"Equatorial Guinea\", \"\"], [\"Guinea-Bissau\", \"Guin\u00e9e-Bissau\", \"GW\", \"Guinea-Bissau\", \"\"], [\"Guyana\", \"Guyana\", \"GY\", \"Guyana\", \"\"], [\"Haiti\", \"Ha\u00efti\", \"HT\", \"Haiti\", \"\"], [\"Honduras\", \"Honduras\", \"HN\", \"Honduras\", \"\"], [\"Hungary\", \"Hongrie\", \"HU\", \"Hungary\", \"\"], [\"Marshall Islands\", \"\u00celes Marshall\", \"MH\", \"Marshall Islands\", \"\"], [\"Solomon Islands\", \"\u00celes Salomon\", \"SB\", \"Solomon Islands\", \"\"], [\"India\", \"Inde\", \"IN\", \"India\", \"\"], [\"Indonesia\", \"Indon\u00e9sie\", \"ID\", \"Indonesia\", \"\"], [\"Iraq\", \"Irak\", \"IQ\", \"Iraq\", \"\"], [\"Iran\", \"Iran\", \"IR\", \"Iran\", \"Persia\"], [\"Ireland\", \"Irlande\", \"IE\", \"Ireland\", \"\"], [\"Iceland\", \"Islande\", \"IS\", \"Iceland\", \"\"], [\"Israel\", \"Isra\u00ebl\", \"IL\", \"Israel\", \"\"], [\"Italy\", \"Italie\", \"IT\", \"Italy\", \"\"], [\"Jamaica\", \"Jama\u00efque\", \"JM\", \"Jamaica\", \"\"], [\"Japan\", \"Japon\", \"JP\", \"Japan\", \"\"], [\"Jordan\", \"Jordanie\", \"JO\", \"Jordan\", \"\"], [\"Kazakhstan\", \"Kazakhstan\", \"KZ\", \"Kazakhstan\", \"\"], [\"Kenya\", \"Kenya\", \"KE\", \"Kenya\", \"\"], [\"Kyrgyzstan\", \"Kirghizstan\", \"KG\", \"Kyrgyzstan\", \"\"], [\"Kiribati\", \"Kiribati\", \"KI\", \"Kiribati\", \"\"], [\"Kosovo\", \"Kosovo\", \"XK\", \"Kosovo\", \"\"], [\"Kuwait\", \"Kowe\u00eft\", \"KW\", \"Kuwait\", \"\"], [\"Laos\", \"Laos\", \"LA\", \"Laos\", \"Lao\"], [\"Lesotho\", \"Lesotho\", \"LS\", \"Lesotho\", \"\"], [\"Latvia\", \"Lettonie\", \"LV\", \"Latvia\", \"\"], [\"Lebanon\", \"Liban\", \"LB\", \"Lebanon\", \"\"], [\"Liberia\", \"Liberia\", \"LR\", \"Liberia\", \"\"], [\"Libya\", \"Libye\", \"LY\", \"Libya\", \"\"], [\"Liechtenstein\", \"Liechtenstein\", \"LI\", \"Liechtenstein\", \"\"], [\"Lithuania\", \"Lituanie\", \"LT\", \"Lithuania\", \"\"], [\"Luxembourg\", \"Luxembourg\", \"LU\", \"Luxembourg\", \"\"], [\"North Macedonia\", \"Mac\u00e9doine du Nord\", \"MK\", \"North Macedonia\", \"Macedonia\"], [\"Madagascar\", \"Madagascar\", \"MG\", \"Madagascar\", \"\"], [\"Malaysia\", \"Malaisie\", \"MY\", \"Malaysia\", \"Malaysian\"], [\"Malawi\", \"Malawi\", \"MW\", \"Malawi\", \"\"], [\"Maldives\", \"Maldives\", \"MV\", \"Maldives\", \"\"], [\"Mali\", \"Mali\", \"ML\", \"Mali\", \"\"], [\"Malta\", \"Malte\", \"MT\", \"Malta\", \"\"], [\"Morocco\", \"Maroc\", \"MA\", \"Morocco\", \"\"], [\"Mauritius\", \"Maurice\", \"MU\", \"Mauritius\", \"\"], [\"Mauritania\", \"Mauritanie\", \"MR\", \"Mauritania\", \"\"], [\"Mexico\", \"Mexique\", \"MX\", \"Mexico\", \"\"], [\"Micronesia\", \"Micron\u00e9sie\", \"FM\", \"Micronesia\", \"\"], [\"Moldova\", \"Moldavie\", \"MD\", \"Moldova\", \"\"], [\"Monaco\", \"Monaco\", \"MC\", \"Monaco\", \"\"], [\"Mongolia\", \"Mongolie\", \"MN\", \"Mongolia\", \"\"], [\"Montenegro\", \"Mont\u00e9n\u00e9gro\", \"ME\", \"Montenegro\", \"\"], [\"Mozambique\", \"Mozambique\", \"MZ\", \"Mozambique\", \"\"], [\"Myanmar\", \"Myanmar\", \"MM\", \"Myanmar\", \"Burma\"], [\"Namibia\", \"Namibie\", \"NA\", \"Namibia\", \"\"], [\"Nauru\", \"Nauru\", \"NR\", \"Nauru\", \"\"], [\"Nepal\", \"N\u00e9pal\", \"NP\", \"Nepal\", \"\"], [\"Nicaragua\", \"Nicaragua\", \"NI\", \"Nicaragua\", \"\"], [\"Niger\", \"Niger\", \"NE\", \"Niger\", \"\"], [\"Nigeria\", \"Nigeria\", \"NG\", \"Nigeria\", \"\"], [\"Norway\", \"Norv\u00e8ge\", \"NO\", \"Norway\", \"\"], [\"New Zealand\", \"Nouvelle-Z\u00e9lande\", \"NZ\", \"New Zealand\", \"\"], [\"Oman\", \"Oman\", \"OM\", \"Oman\", \"\"], [\"Uganda\", \"Ouganda\", \"UG\", \"Uganda\", \"\"], [\"Uzbekistan\", \"Ouzb\u00e9kistan\", \"UZ\", \"Uzbekistan\", \"\"], [\"Pakistan\", \"Pakistan\", \"PK\", \"Pakistan\", \"\"], [\"Palau\", \"Palaos\", \"PW\", \"Palau\", \"\"], [\"Palestine\", \"Palestine\", \"PS\", \"Palestine\", \"Palestinian\"], [\"Panama\", \"Panama\", \"PA\", \"Panama\", \"\"], [\"Papua New Guinea\", \"Papouasie-Nouvelle-Guin\u00e9e\", \"PG\", \"Papua New Guinea\", \"\"], [\"Paraguay\", \"Paraguay\", \"PY\", \"Paraguay\", \"\"], [\"Netherlands\", \"Pays-Bas\", \"NL\", \"Netherlands\", \"Holland\"], [\"Peru\", \"P\u00e9rou\", \"PE\", \"Peru\", \"\"], [\"Philippines\", \"Philippines\", \"PH\", \"Philippines\", \"\"], [\"Poland\", \"Pologne\", \"PL\", \"Poland\", \"\"], [\"Portugal\", \"Portugal\", \"PT\", \"Portugal\", \"\"], [\"Qatar\", \"Qatar\", \"QA\", \"Qatar\", \"\"], [\"Central African Republic\", \"R\u00e9publique centrafricaine\", \"CF\", \"Central African Republic\", \"\"], [\"Dominican Republic\", \"R\u00e9publique dominicaine\", \"DO\", \"Dominican Republic\", \"\"], [\"Romania\", \"Roumanie\", \"RO\", \"Romania\", \"\"], [\"United Kingdom\", \"Royaume-Uni\", \"GB\", \"United Kingdom\", \"UK Britain Great Britain England Scotland Wales\"], [\"Russia\", \"Russie\", \"RU\", \"Russia\", \"Russian Federation\"], [\"Rwanda\", \"Rwanda\", \"RW\", \"Rwanda\", \"\"], [\"Saint Kitts and Nevis\", \"Saint-Christophe-et-Ni\u00e9v\u00e8s\", \"KN\", \"Saint Kitts and Nevis\", \"\"], [\"San Marino\", \"Saint-Marin\", \"SM\", \"San Marino\", \"\"], [\"Saint Vincent and the Grenadines\", \"Saint-Vincent-et-les Grenadines\", \"VC\", \"Saint Vincent and the Grenadines\", \"\"], [\"Saint Lucia\", \"Sainte-Lucie\", \"LC\", \"Saint Lucia\", \"\"], [\"El Salvador\", \"Salvador\", \"SV\", \"El Salvador\", \"\"], [\"Samoa\", \"Samoa\", \"WS\", \"Samoa\", \"\"], [\"Sao Tome and Principe\", \"Sao Tom\u00e9-et-Principe\", \"ST\", \"Sao Tome and Principe\", \"\"], [\"Senegal\", \"S\u00e9n\u00e9gal\", \"SN\", \"Senegal\", \"\"], [\"Serbia\", \"Serbie\", \"RS\", \"Serbia\", \"\"], [\"Seychelles\", \"Seychelles\", \"SC\", \"Seychelles\", \"\"], [\"Sierra Leone\", \"Sierra Leone\", \"SL\", \"Sierra Leone\", \"\"], [\"Singapore\", \"Singapour\", \"SG\", \"Singapore\", \"\"], [\"Slovakia\", \"Slovaquie\", \"SK\", \"Slovakia\", \"\"], [\"Slovenia\", \"Slov\u00e9nie\", \"SI\", \"Slovenia\", \"\"], [\"Somalia\", \"Somalie\", \"SO\", \"Somalia\", \"\"], [\"Sudan\", \"Soudan\", \"SD\", \"Sudan\", \"\"], [\"South Sudan\", \"Soudan du Sud\", \"SS\", \"South Sudan\", \"\"], [\"Sri Lanka\", \"Sri Lanka\", \"LK\", \"Sri Lanka\", \"\"], [\"Sweden\", \"Su\u00e8de\", \"SE\", \"Sweden\", \"\"], [\"Switzerland\", \"Suisse\", \"CH\", \"Switzerland\", \"\"], [\"Suriname\", \"Suriname\", \"SR\", \"Suriname\", \"\"], [\"Syria\", \"Syrie\", \"SY\", \"Syria\", \"Syrian\"], [\"Tajikistan\", \"Tadjikistan\", \"TJ\", \"Tajikistan\", \"\"], [\"Taiwan\", \"Ta\u00efwan\", \"TW\", \"Taiwan\", \"Taiwan ROC \u81fa\u7063\"], [\"Tanzania\", \"Tanzanie\", \"TZ\", \"Tanzania\", \"\"], [\"Chad\", \"Tchad\", \"TD\", \"Chad\", \"\"], [\"Czechia\", \"Tch\u00e9quie\", \"CZ\", \"Czechia\", \"Czech Republic\"], [\"Thailand\", \"Tha\u00eflande\", \"TH\", \"Thailand\", \"\"], [\"Timor-Leste\", \"Timor oriental\", \"TL\", \"Timor-Leste\", \"East Timor\"], [\"Togo\", \"Togo\", \"TG\", \"Togo\", \"\"], [\"Tonga\", \"Tonga\", \"TO\", \"Tonga\", \"\"], [\"Trinidad and Tobago\", \"Trinit\u00e9-et-Tobago\", \"TT\", \"Trinidad and Tobago\", \"\"], [\"Tunisia\", \"Tunisie\", \"TN\", \"Tunisia\", \"\"], [\"Turkmenistan\", \"Turkm\u00e9nistan\", \"TM\", \"Turkmenistan\", \"\"], [\"Turkey\", \"Turquie\", \"TR\", \"Turkey\", \"T\u00fcrkiye Turkiye\"], [\"Tuvalu\", \"Tuvalu\", \"TV\", \"Tuvalu\", \"\"], [\"Ukraine\", \"Ukraine\", \"UA\", \"Ukraine\", \"\"], [\"Uruguay\", \"Uruguay\", \"UY\", \"Uruguay\", \"\"], [\"Vanuatu\", \"Vanuatu\", \"VU\", \"Vanuatu\", \"\"], [\"Venezuela\", \"Venezuela\", \"VE\", \"Venezuela\", \"\"], [\"Vietnam\", \"Vietnam\", \"VN\", \"Vietnam\", \"\"], [\"Yemen\", \"Y\u00e9men\", \"YE\", \"Yemen\", \"\"], [\"Zambia\", \"Zambie\", \"ZM\", \"Zambia\", \"\"], [\"Zimbabwe\", \"Zimbabwe\", \"ZW\", \"Zimbabwe\", \"\"], [\"Other\", \"Autre\", \"\", \"Other\", \"\"]], PIN = [\"MY\", \"CN\", \"KR\", \"JP\", \"ID\", \"RU\", \"SA\", \"DE\", \"SG\", \"TH\", \"VN\", \"AE\", \"GB\", \"US\"];\n\n  var elName = $('adm-name'), elIc = $('adm-ic'), elNat = $('adm-nat'), elNatVal = $('adm-nat-val'), elDob = $('adm-dob'),\n      elDobIso = $('adm-dob-iso'), elDobHint = $('adm-dob-hint'), elEmail = $('adm-email'),\n      elPhone = $('adm-phone'), elDial = $('adm-dial'), elAddress = $('adm-address'),\n      elGender = $('adm-gender'), elGenderVal = $('adm-gender-val'),\n      elCourse = $('adm-course'), elStart = $('adm-start'), elHear = $('adm-hear'),\n      elMinor = $('adm-minor'), elGuardian = $('adm-guardian'), elGName = $('adm-gname'),\n      elGRel = $('adm-grel'), elGEmail = $('adm-gemail'), elGPhone = $('adm-gphone'), elGDial = $('adm-gdial'),\n      elDoc = $('adm-doc'), elDrop = $('adm-drop'), elDropT = $('adm-drop-t'), elDropS = $('adm-drop-s'),\n      elNotes = $('adm-notes'), elTerms = $('adm-terms'), elConsent = $('adm-consent'),\n      elErr = $('adm-error'), elDone = $('adm-done'), elDoneRef = $('adm-done-ref'),\n      elBtn = $('adm-submit'), elBack = $('adm-back'), elAgain = $('adm-again'), elStepsNav = $('adm-steps');\n  var steps = [].slice.call(form.querySelectorAll('.adm3-step'));\n  var stepBtns = [].slice.call(document.querySelectorAll('.adm3-stepbtn'));\n  var cur = 1;\n\n  \/* \u2500\u2500 errors: one message under each field \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n  function errEl(ctrl){ return $(ctrl.getAttribute('data-err') || (ctrl.id + '-err')); }\n  function setErr(ctrl, msg){\n    var e = errEl(ctrl); if (e) { e.textContent = msg; e.hidden = false; }\n    (ctrl._mark || ctrl).setAttribute('aria-invalid', 'true');\n  }\n  function clearErr(ctrl){\n    var e = errEl(ctrl); if (e) { e.hidden = true; e.textContent = ''; }\n    (ctrl._mark || ctrl).removeAttribute('aria-invalid');\n  }\n\n  \/* \u2500\u2500 1. programmes: the ERP's real list, so each maps to a course_id \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n  var courseMap = {};\n  fetch(API + '\/erp-courses', { headers: { 'Accept': 'application\/json' } })\n    .then(function(r){ return r.ok ? r.json() : []; })\n    .then(function(list){\n      if (!Array.isArray(list) || !list.length) return;\n      var keep = elCourse.value;\n      elCourse.innerHTML = '<option value=\"\" selected disabled>' + T.course_ph + '<\/option>';\n      list.forEach(function(c){\n        if (!c || !c.name) return;\n        courseMap[c.name] = c.id;\n        var o = document.createElement('option');\n        o.value = c.name; o.textContent = c.name;\n        elCourse.appendChild(o);\n      });\n      if (keep && courseMap[keep]) elCourse.value = keep;\n      syncEmpty(elCourse); updateCard();\n    })\n    .catch(function(){ \/* keep the static options *\/ });\n\n  \/* \u2500\u2500 2. preferred start: ASAP + the next 12 months (sent in English, shown in this language).\n     After the 15th this month is too late to plan for, so the list starts at the next one. *\/\n  (function(){\n    var d = new Date(), late = d.getDate() > 15; d.setDate(1); if (late) d.setMonth(d.getMonth() + 1);\n    for (var i = 0; i < 12; i++) {\n      d.setMonth(d.getMonth() + (i ? 1 : 0));\n      var o = document.createElement('option');\n      try {\n        o.value = d.toLocaleDateString('en-GB', { month: 'long', year: 'numeric' });\n        o.textContent = d.toLocaleDateString(T.locale, { month: 'long', year: 'numeric' });\n      } catch (e) { o.value = o.textContent = (d.getMonth() + 1) + '\/' + d.getFullYear(); }\n      elStart.appendChild(o);\n    }\n  })();\n  function syncEmpty(sel){ sel.classList.toggle('is-empty', !sel.value); }\n  [elCourse, elStart, elHear, elGRel].forEach(function(s){ if (s) { syncEmpty(s); s.addEventListener('change', function(){ syncEmpty(s); }); } });\n\n  \/* \u2500\u2500 3. gender: a radio group made of buttons (arrow keys move and select) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n  var gBtns = [].slice.call(elGender.querySelectorAll('.adm3-gbtn'));\n  elGender._mark = elGender;\n  function pickGender(btn, focus){\n    gBtns.forEach(function(b){ var on = (b === btn); b.setAttribute('aria-checked', on ? 'true' : 'false'); b.tabIndex = on ? 0 : -1; });\n    elGenderVal.value = btn.getAttribute('data-value');\n    if (focus) btn.focus();\n    clearErr(elGender); updateCard();\n  }\n  gBtns.forEach(function(b, i){\n    b.addEventListener('click', function(){ pickGender(b, false); });\n    b.addEventListener('keydown', function(e){\n      var rtl = getComputedStyle(elGender).direction === 'rtl', k = e.key, step = 0;\n      if (k === 'ArrowDown' || k === (rtl ? 'ArrowLeft' : 'ArrowRight')) step = 1;\n      if (k === 'ArrowUp' || k === (rtl ? 'ArrowRight' : 'ArrowLeft')) step = -1;\n      if (k === ' ' || k === 'Enter') { e.preventDefault(); pickGender(b, false); return; }\n      if (!step) return;\n      e.preventDefault();\n      pickGender(gBtns[(i + step + gBtns.length) % gBtns.length], true);\n    });\n  });\n\n  \/* \u2500\u2500 4. date of birth: DD \/ MM \/ YYYY with the slashes typed for you \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n  function dobParse(){\n    var d = elDob.value.replace(\/\\D\/g, '');\n    if (d.length !== 8) return null;\n    var dd = +d.slice(0, 2), mm = +d.slice(2, 4), yy = +d.slice(4);\n    var dt = new Date(Date.UTC(yy, mm - 1, dd));\n    if (dt.getUTCFullYear() !== yy || dt.getUTCMonth() !== mm - 1 || dt.getUTCDate() !== dd) return null;\n    if (yy < 1900 || dt.getTime() > Date.now()) return null;\n    return { d: dd, m: mm, y: yy, iso: d.slice(4) + '-' + d.slice(2, 4) + '-' + d.slice(0, 2), date: dt };\n  }\n  function ageOf(p){\n    var t = new Date(), a = t.getFullYear() - p.y;\n    if (t.getMonth() + 1 < p.m || (t.getMonth() + 1 === p.m && t.getDate() < p.d)) a--;\n    return a;\n  }\n  elDob.addEventListener('input', function(){\n    var d = elDob.value.replace(\/\\D\/g, '').slice(0, 8);\n    elDob.value = d.slice(0, 2) + (d.length > 2 ? ' \/ ' + d.slice(2, 4) : '') + (d.length > 4 ? ' \/ ' + d.slice(4) : '');\n    var p = dobParse();\n    elDobIso.value = p ? p.iso : '';\n    \/* Echo the date back in words: 03\/05 reads as 3 May here and as March 5 to half the world. *\/\n    if (p) {\n      try { elDobHint.textContent = p.date.toLocaleDateString(T.locale, { day: 'numeric', month: 'long', year: 'numeric', timeZone: 'UTC' }); }\n      catch (e) { elDobHint.textContent = p.iso; }\n    } else { elDobHint.textContent = T.dob_hint; }\n    if (p || !elDob.value) clearErr(elDob);\n    syncGuardian(); updateCard();\n  });\n\n  \/* \u2500\u2500 5. guardian: shown when the date of birth says under 18, or by hand \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n  var minorByDob = false;\n  function guardianOn(){ return !elGuardian.hidden; }\n  function syncGuardian(){\n    var p = dobParse(), was = minorByDob;\n    minorByDob = !!(p && ageOf(p) < 18);\n    if (minorByDob) { elMinor.checked = true; elMinor.disabled = true; }\n    else { elMinor.disabled = false; if (was) elMinor.checked = false; }\n    elGuardian.hidden = !elMinor.checked;\n    syncSigner();\n  }\n  elMinor.addEventListener('change', syncGuardian);\n\n  \/* \u2500\u2500 6. phone: country code follows nationality until changed by hand \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n  var dialTouched = false, gDialTouched = false;\n  elGDial.innerHTML = elDial.innerHTML; elGDial.value = 'MY';\n  function showDial(sel){\n    var o = sel.options[sel.selectedIndex];\n    sel.parentNode.querySelector('.adm3-dial__val').textContent = o ? (o.value + ' +' + o.getAttribute('data-dial')) : '';\n  }\n  function setDial(sel, iso){ if (sel.value !== iso) { sel.value = iso; if (sel.selectedIndex < 0) sel.value = 'MY'; } showDial(sel); }\n  elDial.addEventListener('change', function(){ dialTouched = true; showDial(elDial); if (!gDialTouched) setDial(elGDial, elDial.value); });\n  elGDial.addEventListener('change', function(){ gDialTouched = true; showDial(elGDial); });\n  showDial(elDial); showDial(elGDial);\n\n  \/* \u2500\u2500 6b. nationality: type to search, in this language or in English \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n     What is SENT is always the English name (the ERP stores it and staff read it); what is\n     shown and searched is this page's language, plus the English name and common aliases. *\/\n  var natList = $('adm-nat-list'), natBy = {}, natShown = [], natActive = -1;\n  function norm(s){\n    s = String(s || '').toLowerCase();\n    try { s = s.normalize('NFD').replace(\/[\\u0300-\\u036f]\/g, ''); } catch (e) {}\n    return s.replace(\/[\\u0623\\u0625\\u0622]\/g, '\\u0627').replace(\/\\u0629\/g, '\\u0647').replace(\/\\u0649\/g, '\\u064a')\n            .replace(\/[\\u2019'`.,()\\-\\u2013\\s]+\/g, ' ').trim();\n  }\n  NATS.forEach(function(n, i){\n    natBy[n[0]] = n; n.i = i;\n    n.l = norm(n[1]); n.e = norm(n[3] || n[0]); n.k = norm([n[1], n[0], n[3], n[4]].join(' ')); n.a = ' ' + norm(n[4]) + ' ';\n  });\n  function natLabel(v){ return natBy[v] ? natBy[v][1] : ''; }\n  function natScore(n, q){\n    if (n.a.indexOf(' ' + q + ' ') >= 0) return 0;   \/* an exact alias beats everything: UK, USA, UAE, \ud55c\uad6d *\/\n    if (n.l.indexOf(q) === 0) return 1;\n    if (n.e.indexOf(q) === 0 || (n[2] && n[2].toLowerCase() === q)) return 2;\n    if ((' ' + n.k).indexOf(' ' + q) >= 0) return 3;\n    return n.k.indexOf(q) >= 0 ? 4 : -1;\n  }\n  function natOption(n){\n    var li = document.createElement('li');\n    natShown.push(n);\n    li.id = 'adm-nat-o' + (natShown.length - 1); li.className = 'adm3-combo__opt';\n    li.setAttribute('role', 'option');\n    li.setAttribute('aria-selected', elNatVal.value === n[0] ? 'true' : 'false');\n    var t = document.createElement('span'); t.textContent = n[1]; li.appendChild(t);\n    if (n[3] && n[3] !== n[1]) { var e = document.createElement('span'); e.className = 'adm3-combo__en'; e.textContent = n[3]; li.appendChild(e); }\n    li.addEventListener('mousedown', function(ev){ ev.preventDefault(); });   \/* keep focus in the box *\/\n    li.addEventListener('click', function(){ natChoose(n); });\n    natList.appendChild(li);\n  }\n  function natRender(q){\n    natList.innerHTML = ''; natShown = []; natActive = -1;\n    var nq = norm(q), rows;\n    if (!nq) {\n      PIN.forEach(function(iso){ var n = NATS.filter(function(x){ return x[2] === iso; })[0]; if (n) natOption(n); });\n      var hr = document.createElement('li'); hr.className = 'adm3-combo__sep'; hr.setAttribute('role', 'separator'); natList.appendChild(hr);\n      NATS.forEach(natOption);\n      return;\n    }\n    rows = NATS.map(function(n){ return [natScore(n, nq), n]; }).filter(function(x){ return x[0] >= 0; })\n      .sort(function(a, b){ return a[0] - b[0] || a[1].i - b[1].i; });\n    if (!rows.length) {\n      var none = document.createElement('li'); none.className = 'adm3-combo__none'; none.textContent = T.nat_none; natList.appendChild(none);\n      rows = [[0, NATS[NATS.length - 1]]];   \/* \"Other\" is always a way out *\/\n    }\n    rows.forEach(function(x){ natOption(x[1]); });\n    natMove(0);\n  }\n  function natMove(i){\n    var opts = natList.querySelectorAll('.adm3-combo__opt');\n    if (!opts.length) return;\n    i = Math.max(0, Math.min(opts.length - 1, i));\n    if (opts[natActive]) opts[natActive].classList.remove('is-active');\n    natActive = i; opts[i].classList.add('is-active');\n    elNat.setAttribute('aria-activedescendant', opts[i].id);\n    var top = opts[i].offsetTop, bot = top + opts[i].offsetHeight;\n    if (top < natList.scrollTop) natList.scrollTop = top - 6;\n    else if (bot > natList.scrollTop + natList.clientHeight) natList.scrollTop = bot - natList.clientHeight + 6;\n  }\n  function natOpen(q){\n    natRender(q);\n    natList.hidden = false; elNat.setAttribute('aria-expanded', 'true');\n    if (!norm(q) && elNatVal.value) {\n      for (var i = 0; i < natShown.length; i++) if (natShown[i][0] === elNatVal.value) { natMove(i); break; }\n    }\n  }\n  function natClose(){\n    natList.hidden = true; natActive = -1;\n    elNat.setAttribute('aria-expanded', 'false'); elNat.removeAttribute('aria-activedescendant');\n  }\n  function natChoose(n){\n    var changed = elNatVal.value !== n[0];\n    elNatVal.value = n[0]; elNat.value = n[1];\n    natClose(); clearErr(elNat);\n    if (changed) natChanged();\n  }\n  function natChanged(){\n    if (!dialTouched) { setDial(elDial, (natBy[elNatVal.value] || [])[2] || 'MY'); if (!gDialTouched) setDial(elGDial, elDial.value); }\n    updateCard();\n  }\n  elNat.addEventListener('focus', function(){\n    elNat.select(); natOpen('');\n    \/* on a phone, lift the box up so the list is not hidden behind the keyboard *\/\n    if (window.innerWidth < 640 && elNat.getBoundingClientRect().top > window.innerHeight * .35)\n      setTimeout(function(){ elNat.scrollIntoView({ behavior: 'smooth', block: 'start' }); }, 250);\n  });\n  elNat.addEventListener('click', function(){ if (natList.hidden) natOpen(''); });\n  elNat.addEventListener('input', function(){ natOpen(elNat.value); });\n  elNat.addEventListener('keydown', function(e){\n    var k = e.key;\n    if (k === 'ArrowDown' || k === 'ArrowUp') {\n      e.preventDefault();\n      if (natList.hidden) natOpen(''); else natMove(natActive + (k === 'ArrowDown' ? 1 : -1));\n    } else if (k === 'Enter') {\n      if (!natList.hidden && natActive >= 0) { e.preventDefault(); natChoose(natShown[natActive]); }\n    } else if (k === 'Escape') {\n      if (!natList.hidden) { e.preventDefault(); natClose(); elNat.value = natLabel(elNatVal.value); }\n    } else if (k === 'Tab') {\n      if (!natList.hidden && natActive >= 0 && norm(elNat.value) && elNat.value !== natLabel(elNatVal.value)) natChoose(natShown[natActive]);\n    }\n  });\n  elNat.addEventListener('blur', function(){\n    setTimeout(function(){\n      if (document.activeElement === elNat) return;\n      natClose();\n      var q = norm(elNat.value);\n      if (!q) { if (elNatVal.value) { elNatVal.value = ''; natChanged(); } return; }\n      if (elNat.value === natLabel(elNatVal.value)) return;\n      \/* typed a whole name and left without picking: take it if it is exactly one of ours *\/\n      var hit = NATS.filter(function(n){ return n.l === q || n.e === q || norm(n[0]) === q; })[0];\n      if (hit) natChoose(hit); else elNat.value = natLabel(elNatVal.value);\n    }, 150);\n  });\n  \/* E.164 from what was typed: +CC then the national number without its trunk prefix. *\/\n  function e164(sel, input){\n    var raw = input.value.trim(); if (!raw) return '';\n    var digits = raw.replace(\/\\D\/g, '');\n    if (\/^\\+\/.test(raw)) return '+' + digits;\n    if (\/^00\/.test(raw)) return '+' + digits.slice(2);\n    var iso = sel.value, dial = sel.options[sel.selectedIndex].getAttribute('data-dial');\n    if (iso !== 'IT' && iso !== 'VA' && iso !== 'SM') digits = digits.replace(\/^0+\/, '');\n    if ((iso === 'RU' || iso === 'KZ') && digits.length === 11 && digits.charAt(0) === '8') digits = digits.slice(1);\n    return '+' + dial + digits;\n  }\n  function phoneOk(sel, input){ var n = e164(sel, input).length - 1; return n >= 8 && n <= 15; }\n  function dialLabel(sel){ var o = sel.options[sel.selectedIndex]; return o.value + ' +' + o.getAttribute('data-dial'); }\n\n  \/* \u2500\u2500 7. passport \/ NRIC upload \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n  elDoc._mark = elDrop;\n  var OKEXT = \/\\.(pdf|jpe?g|png|webp|heic)$\/i;\n  function docValid(){ var f = elDoc.files && elDoc.files[0]; return !!(f && OKEXT.test(f.name) && f.size <= 10 * 1024 * 1024); }\n  function showDoc(){\n    var f = elDoc.files && elDoc.files[0];\n    if (!f) { elDropT.textContent = T.upload_title; elDropS.textContent = T.upload_sub; return; }\n    elDropT.textContent = f.name;\n    elDropS.textContent = (f.size \/ 1048576).toFixed(1) + ' MB \u00b7 ' + T.upload_change;\n    if (docValid()) clearErr(elDoc); else setErr(elDoc, T.doc_err);\n  }\n  elDoc.addEventListener('change', showDoc);\n  ['dragenter', 'dragover'].forEach(function(ev){ elDrop.addEventListener(ev, function(e){ e.preventDefault(); elDrop.classList.add('is-over'); }); });\n  ['dragleave', 'drop'].forEach(function(ev){ elDrop.addEventListener(ev, function(){ elDrop.classList.remove('is-over'); }); });\n  elDrop.addEventListener('drop', function(e){\n    e.preventDefault();\n    if (e.dataTransfer && e.dataTransfer.files && e.dataTransfer.files.length) {\n      try { elDoc.files = e.dataTransfer.files; } catch (x) {}\n      showDoc();\n    }\n  });\n\n  \/* \u2500\u2500 8. signature \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n  var pad = $('adm-sig-pad'), cv = $('adm-sig-canvas'), ctx = cv.getContext('2d'),\n      elSigTyped = $('adm-sig-typed'), elSigText = $('adm-sig-text'), elSigPrev = $('adm-sig-preview'),\n      elSigMode = $('adm-sig-mode'), elSigHint = $('adm-sig-hint'), elSigAs = $('adm-sig-as'), elSigField = $('adm-sig');\n  elSigField._mark = pad;\n  var strokes = [], drawing = null, typed = false;\n  function fit(){\n    var r = pad.getBoundingClientRect(); if (!r.width) return;\n    var k = Math.min(window.devicePixelRatio || 1, 3);\n    cv.width = Math.round(r.width * k); cv.height = Math.round(r.height * k);\n    ctx.setTransform(k, 0, 0, k, 0, 0); redraw();\n  }\n  function redraw(){\n    var w = pad.clientWidth, h = pad.clientHeight;\n    ctx.clearRect(0, 0, pad.clientWidth, pad.clientHeight);\n    ctx.lineCap = ctx.lineJoin = 'round'; ctx.strokeStyle = '#0F172A'; ctx.lineWidth = 2.4;\n    strokes.forEach(function(s){\n      ctx.beginPath();\n      s.forEach(function(p, i){\n        var x = p[0] * w, y = p[1] * h;\n        if (!i) { ctx.moveTo(x, y); ctx.lineTo(x + .01, y); }\n        else { var q = s[i - 1]; ctx.quadraticCurveTo(q[0] * w, q[1] * h, (q[0] * w + x) \/ 2, (q[1] * h + y) \/ 2); }\n      });\n      ctx.stroke();\n    });\n  }\n  function pt(e){ var r = cv.getBoundingClientRect(); return [(e.clientX - r.left) \/ r.width, (e.clientY - r.top) \/ r.height]; }\n  cv.addEventListener('pointerdown', function(e){\n    if (e.button > 0) return;\n    e.preventDefault(); cv.setPointerCapture && cv.setPointerCapture(e.pointerId);\n    drawing = [pt(e)]; strokes.push(drawing); redraw();\n  });\n  cv.addEventListener('pointermove', function(e){\n    if (!drawing) return; e.preventDefault();\n    var list = e.getCoalescedEvents ? e.getCoalescedEvents() : [e];\n    (list.length ? list : [e]).forEach(function(ev){ drawing.push(pt(ev)); });\n    redraw();\n  });\n  function endStroke(){ if (drawing) { drawing = null; if (sigOk()) clearErr(elSigField); } }\n  cv.addEventListener('pointerup', endStroke); cv.addEventListener('pointercancel', endStroke);\n  function inkLength(){\n    var w = pad.clientWidth || 1, h = pad.clientHeight || 1, L = 0;\n    strokes.forEach(function(s){ for (var i = 1; i < s.length; i++) L += Math.hypot((s[i][0] - s[i-1][0]) * w, (s[i][1] - s[i-1][1]) * h); });\n    return L;\n  }\n  function sigOk(){ return typed ? elSigText.value.trim().length >= 2 : inkLength() >= 30; }\n  $('adm-sig-clear').addEventListener('click', function(){ strokes = []; redraw(); elSigText.value = ''; elSigPrev.textContent = ''; });\n  elSigMode.addEventListener('click', function(){\n    typed = !typed;\n    pad.hidden = typed; elSigTyped.hidden = !typed;\n    elSigMode.textContent = typed ? T.sig_draw : T.sig_type;\n    elSigHint.hidden = typed;\n    elSigField._mark = typed ? elSigText : pad;\n    clearErr(elSigField);\n    if (typed) elSigText.focus(); else fit();\n  });\n  elSigText.addEventListener('input', function(){ elSigPrev.textContent = elSigText.value; if (sigOk()) clearErr(elSigField); });\n  function sigDataUrl(){\n    if (!typed) return cv.toDataURL('image\/png');\n    var c = document.createElement('canvas'), x = c.getContext('2d'), s = elSigText.value.trim(), size = 72;\n    c.width = 900; c.height = 220;\n    var font = function(n){ return 'italic ' + n + 'px \"Segoe Script\",\"Brush Script MT\",\"Snell Roundhand\",\"Apple Chancery\",cursive'; };\n    x.font = font(size); while (size > 24 && x.measureText(s).width > 840) { size -= 4; x.font = font(size); }\n    x.fillStyle = '#0F172A'; x.textAlign = 'center'; x.textBaseline = 'middle'; x.fillText(s, 450, 115);\n    return c.toDataURL('image\/png');\n  }\n  if (window.ResizeObserver) new ResizeObserver(fit).observe(pad); else window.addEventListener('resize', fit);\n\n  \/* who is signing: the guardian when there is one, otherwise the applicant *\/\n  function syncSigner(){\n    var g = guardianOn();\n    [].forEach.call(document.querySelectorAll('[data-signer]'), function(n){ n.hidden = (n.getAttribute('data-signer') === 'guardian') !== g; });\n    elSigAs.textContent = (g ? elGName.value : elName.value).trim() || '\u2014';\n  }\n  elName.addEventListener('input', syncSigner); elGName.addEventListener('input', syncSigner);\n\n  \/* \u2500\u2500 9. validation, one step at a time \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n  function need(ctrl, ok, msg, bad){ if (ok) { clearErr(ctrl); return true; } setErr(ctrl, msg || T.req); bad.push(ctrl); return false; }\n  function check(step){\n    var bad = [];\n    if (step === 1) {\n      var name = elName.value.trim();\n      if (need(elName, !!name, T.req, bad)) need(elName, LATIN.test(name), T.name_err, bad);\n      need(elGender, !!elGenderVal.value, T.choose, bad);\n      need(elNat, !!elNatVal.value, T.choose, bad);\n      need(elIc, !!elIc.value.trim(), T.req, bad);\n      if (need(elDob, !!elDob.value.trim(), T.req, bad)) need(elDob, !!dobParse(), T.dob_err, bad);\n      if (need(elPhone, !!elPhone.value.trim(), T.req, bad)) need(elPhone, phoneOk(elDial, elPhone), T.phone_err, bad);\n      var em = elEmail.value.trim();\n      if (need(elEmail, !!em, T.req, bad)) need(elEmail, EMAIL.test(em), T.email_err, bad);\n    }\n    if (step === 2) {\n      need(elCourse, !!elCourse.value, T.choose, bad);\n      need(elHear, !!elHear.value, T.choose, bad);\n      if (guardianOn()) {\n        var gn = elGName.value.trim();\n        if (need(elGName, !!gn, T.req, bad)) need(elGName, LATIN.test(gn), T.e_glatin, bad);\n        var ge = elGEmail.value.trim();\n        if (need(elGEmail, !!ge, T.req, bad)) need(elGEmail, EMAIL.test(ge), T.email_err, bad);\n        if (need(elGPhone, !!elGPhone.value.trim(), T.req, bad)) need(elGPhone, phoneOk(elGDial, elGPhone), T.phone_err, bad);\n      }\n    }\n    if (step === 3) {\n      need(elDoc, docValid(), T.e_doc, bad);\n      need(elTerms, elTerms.checked, T.e_terms, bad);\n      need(elConsent, elConsent.checked, T.e_privacy, bad);\n      need(elSigField, sigOk(), T.sig_err, bad);\n    }\n    return bad;\n  }\n  function showFirst(bad){\n    var el = bad[0], target = el._mark || el;\n    if (el === elGender) target = gBtns.filter(function(b){ return b.tabIndex === 0; })[0] || gBtns[0];\n    if (el === elSigField) target = typed ? elSigText : pad;\n    target.scrollIntoView({ behavior: 'smooth', block: 'center' });\n    var f = (target === pad) ? $('adm-sig-clear') : (target === elDrop ? elDoc : target);\n    try { f.focus({ preventScroll: true }); } catch (e) { f.focus(); }\n  }\n  \/* clear a field's message as soon as it is being fixed *\/\n  form.addEventListener('input', function(e){ var t = e.target; if (t.getAttribute('aria-invalid') === 'true' && t !== elDob && t !== elName) clearErr(t); updateCard(); });\n  elName.addEventListener('input', function(){ var v = elName.value.trim(); if (v && !LATIN.test(v)) setErr(elName, T.name_err); else clearErr(elName); });\n  elEmail.addEventListener('blur', function(){ var v = elEmail.value.trim(); if (v && !EMAIL.test(v)) setErr(elEmail, T.email_err); });\n  form.addEventListener('change', function(e){ var t = e.target; if (t.type === 'checkbox' && t.checked) clearErr(t); if (t.tagName === 'SELECT' && t.value) clearErr(t); updateCard(); });\n\n  \/* \u2500\u2500 10. moving between steps \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n  function show(n){\n    cur = n;\n    steps.forEach(function(s){ s.hidden = (+s.getAttribute('data-step') !== n); });\n    stepBtns.forEach(function(b){\n      var k = +b.getAttribute('data-go');\n      b.classList.toggle('is-on', k <= n);\n      if (k === n) b.setAttribute('aria-current', 'step'); else b.removeAttribute('aria-current');\n    });\n    elBack.classList.toggle('is-hidden', n === 1);\n    elBtn.querySelector('.adm-submit__label').textContent = (n === 3) ? T.submit : T.cont;\n    elErr.textContent = '';\n    if (n === 3) { syncSigner(); fit(); }\n    updateCard();\n    var h = steps[n - 1].querySelector('.adm3-steph');\n    var top = elStepsNav.getBoundingClientRect().top;\n    if (top < 80 || top > window.innerHeight) elStepsNav.scrollIntoView({ behavior: 'smooth', block: 'start' });\n    try { h.focus({ preventScroll: true }); } catch (e) { h.focus(); }\n  }\n  function go(target){\n    if (target <= cur) { show(target); return; }\n    for (var s = cur; s < target; s++) {\n      var bad = check(s);\n      if (bad.length) { if (s !== cur) show(s); showFirst(bad); return; }\n    }\n    show(target);\n  }\n  stepBtns.forEach(function(b){ b.addEventListener('click', function(){ go(+b.getAttribute('data-go')); }); });\n  elBack.addEventListener('click', function(){ if (cur > 1) show(cur - 1); });\n  if (elAgain) elAgain.addEventListener('click', function(){ window.location.reload(); });\n\n  \/* \u2500\u2500 11. the applicant card (decorative; the form is the source of truth) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n  var cName = $('adm3-cname'), cIni = $('adm3-cini'), cProg = $('adm3-cprog'), cNat = $('adm3-cnat'),\n      cStart = $('adm3-cstart'), cTag = $('adm3-ctag'), cFill = $('adm3-cfill'), cCount = $('adm3-ccount');\n  var avatars = [].slice.call(document.querySelectorAll('.adm3-av'));\n  function updateCard(){\n    var name = elName.value.trim(), words = name.split(\/\\s+\/).filter(Boolean);\n    cName.textContent = name || T.card_name; cName.classList.toggle('is-ph', !name);\n    var g = elGenderVal.value;\n    avatars.forEach(function(a){ if (a.getAttribute('data-av') === g) a.removeAttribute('hidden'); else a.setAttribute('hidden', ''); });\n    cIni.hidden = !!g;\n    cIni.textContent = words.length ? (words[0].charAt(0) + (words[1] ? words[1].charAt(0) : '')).toUpperCase() : '?';\n    var co = elCourse.value ? elCourse.options[elCourse.selectedIndex].textContent : '';\n    cProg.textContent = co || T.card_prog; cProg.classList.toggle('is-ph', !co);\n    cNat.textContent = natLabel(elNatVal.value);\n    var st = elStart.value ? (elStart.selectedIndex === 1 ? T.asap : elStart.options[elStart.selectedIndex].textContent) : '';\n    cStart.textContent = st ? T.starts.replace('{m}', st) : '';\n    var n = [!!name, !!g, !!elNatVal.value, !!dobParse(), EMAIL.test(elEmail.value.trim()), !!elCourse.value, !!elStart.value]\n      .filter(Boolean).length;\n    cFill.style.width = (n \/ 7 * 100) + '%';\n    cFill.classList.toggle('is-full', n === 7);\n    cCount.textContent = T.details.replace('{n}', n);\n    var ready = (cur === 3);\n    cTag.textContent = ready ? T.tag_ready : T.tag_app;\n    cTag.classList.toggle('is-ready', ready);\n  }\n  updateCard();\n\n  \/* \u2500\u2500 12. submit (Enter on steps 1\u20132 means Continue) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n  form.addEventListener('submit', function(e){\n    e.preventDefault();\n    if (cur < 3) { go(cur + 1); return; }\n    elErr.textContent = '';\n    for (var s = 1; s <= 3; s++) {\n      var bad = check(s);\n      if (bad.length) { if (s !== 3) show(s); showFirst(bad); if (s === 3) elErr.textContent = T.e_required; return; }\n    }\n    if (form.website && form.website.value) { return; } \/* honeypot *\/\n\n    var guardian = guardianOn();\n    var fd = new FormData();\n    fd.append('full_name', elName.value.trim());\n    fd.append('gender', elGenderVal.value);\n    fd.append('ic_passport', elIc.value.trim());\n    fd.append('email', elEmail.value.trim());\n    fd.append('phone', e164(elDial, elPhone));\n    fd.append('phone_country', dialLabel(elDial));\n    fd.append('phone_number', elPhone.value.trim());\n    fd.append('nationality', elNatVal.value);\n    fd.append('date_of_birth', elDobIso.value);\n    fd.append('address', elAddress.value.trim());\n    fd.append('course', elCourse.value);\n    fd.append('course_id', courseMap[elCourse.value] || '');\n    fd.append('notes', elNotes.value.trim());\n    fd.append('how_did_you_hear', elHear.value);\n    fd.append('preferred_start', elStart.value);\n    fd.append('website', form.website ? form.website.value : '');\n    fd.append('document', elDoc.files[0]);\n    \/* CONSENT \u2014 the evidence, not just the gate. The version tells the ERP which wording was\n       on THIS page, so rewording it later cannot change what a past applicant agreed to. *\/\n    fd.append('consent_terms',   elTerms.checked   ? '1' : '');\n    fd.append('consent_privacy', elConsent.checked ? '1' : '');\n    fd.append('consent_version', '2026-08-fr');\n    fd.append('consent_at', new Date().toISOString());\n    if (guardian) {\n      fd.append('guardian_name', elGName.value.trim());\n      fd.append('guardian_relationship', elGRel.value);\n      fd.append('guardian_email', elGEmail.value.trim());\n      fd.append('guardian_phone', e164(elGDial, elGPhone));\n      fd.append('guardian_phone_country', dialLabel(elGDial));\n      fd.append('guardian_phone_number', elGPhone.value.trim());\n    }\n    \/* SIGNATURE \u2014 the image, who signed, as whom, and the sentence above the box verbatim. *\/\n    fd.append('signature', sigDataUrl());\n    fd.append('signature_name', (guardian ? elGName.value : elName.value).trim());\n    fd.append('signed_as', guardian ? 'guardian' : 'self');\n    fd.append('signature_method', typed ? 'typed' : 'drawn');\n    var stmt = document.querySelector('.adm3-sig__stmt [data-signer]:not([hidden])');\n    fd.append('signature_statement', stmt ? stmt.textContent.trim() : '');\n\n    elBtn.disabled = true;\n    elBtn.querySelector('.adm-submit__label').textContent = T.submitting;\n    function fail(msg){\n      elErr.textContent = msg;\n      elBtn.disabled = false;\n      elBtn.querySelector('.adm-submit__label').textContent = T.submit;\n    }\n    fetch(API + '\/erp-register', { method: 'POST', body: fd })\n    .then(function(r){ return r.json().then(function(j){ return { ok: r.ok, body: j }; }); })\n    .then(function(res){\n      if (res.ok && res.body && res.body.ok) {\n        \/* Google Ads (theme: gla_google_ads_tag): a real application, saved in the ERP (ref) or\n           held by WordPress while the ERP was unreachable (held). A honeypot hit returns neither. *\/\n        try {   \/* tracking must never stop the thank-you screen *\/\n          if (window.glaConversion && (res.body.ref || res.body.held)) {\n            var tel = e164(elDial, elPhone), ud = { email: elEmail.value.trim().toLowerCase() };\n            if (\/^\\+\\d{8,15}$\/.test(tel)) ud.phone_number = tel;\n            window.glaConversion('application', { id: 'app-' + (res.body.ref || 'wp' + res.body.held), userData: ud });\n          }\n        } catch (e) {}\n        form.hidden = true; elStepsNav.hidden = true;\n        elDone.hidden = false;\n        if (res.body.ref) { elDoneRef.textContent = T.ref + String(res.body.ref).slice(0, 8).toUpperCase(); }\n        elDone.scrollIntoView({ behavior: 'smooth', block: 'center' });\n        try { $('adm-done-title').focus({ preventScroll: true }); } catch (e) {}\n      } else {\n        fail((res.body && (res.body.message || res.body.error)) || T.e_generic);\n      }\n    })\n    .catch(function(){ fail(T.e_network); });\n  });\n})();\n<\/script>\n\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-5265","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/glacademy.edu.my\/fr\/wp-json\/wp\/v2\/pages\/5265","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/glacademy.edu.my\/fr\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/glacademy.edu.my\/fr\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/glacademy.edu.my\/fr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/glacademy.edu.my\/fr\/wp-json\/wp\/v2\/comments?post=5265"}],"version-history":[{"count":0,"href":"https:\/\/glacademy.edu.my\/fr\/wp-json\/wp\/v2\/pages\/5265\/revisions"}],"wp:attachment":[{"href":"https:\/\/glacademy.edu.my\/fr\/wp-json\/wp\/v2\/media?parent=5265"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}