{"id":5268,"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\/ms\/admissions\/","title":{"rendered":"Admission"},"content":{"rendered":"<!--\n  SEO Title: Kemasukan | Daftar di GL Academy Kuala Lumpur\n  Meta Description: Mohon ke Global Leaders Academy \u2014 borang kemasukan asli kami menghantar butiran anda terus kepada pasukan kemasukan kami. Sekolah bahasa & tuisyen akademik di Kuala Lumpur.\n  Focus Keyword: kemasukan 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=\"ms\">\n  <div class=\"adm3-layout\">\n\n    <div class=\"adm3-head\">\n      <span class=\"adm3-eyebrow\">Daftar Sekarang<\/span>\n      <h1 class=\"adm3-h1\">Kemasukan <span class=\"adm3-grad\">Pelajar<\/span><\/h1>\n      <p class=\"adm3-lead\">Daftar kursus bahasa Inggeris di GL Academy dengan mudah: tiga langkah ringkas, dan balasan daripada pasukan kemasukan kami dalam masa 3 hari bekerja.<\/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\">Pemohon<\/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\">Nama anda<\/p>\n              <p class=\"adm3-idc__prog is-ph\" id=\"adm3-cprog\">Program anda<\/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 daripada 7 butiran<\/span><\/div>\n        <\/div>\n      <\/div>\n      <p class=\"adm3-aside__note\">Kami membalas dalam masa 3 hari bekerja untuk mengesahkan tempat anda.<\/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\">Langkah 1<\/span><span class=\"adm3-stepbtn__t\">Tentang anda<\/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\">Langkah 2<\/span><span class=\"adm3-stepbtn__t\">Program<\/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\">Langkah 3<\/span><span class=\"adm3-stepbtn__t\">Sahkan<\/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\">Permohonan diterima<\/h2>\n          <p class=\"adm3-done__text\">Terima kasih. Pasukan kemasukan kami akan menghubungi anda dalam masa 3 hari bekerja.<\/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> Tambah pemohon lain<\/button>\n        <\/div>\n\n        <form class=\"adm3-form\" id=\"adm-form\" novalidate>\n          <p class=\"adm3-reqnote\"><span class=\"adm-req\">*<\/span> Wajib diisi<\/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\">Langkah 1 daripada 3: Tentang anda<\/h2>\n            <p class=\"adm3-note\">Sila lengkapkan borang ini menggunakan <strong>abjad Inggeris<\/strong> (huruf Latin) supaya rekod kami sepadan dengan dokumen rasmi anda.<\/p>\n            <div class=\"adm3-grid\">\n              <div class=\"adm3-field adm3-col-2\">\n                <label class=\"adm3-label\" for=\"adm-name\">Nama Penuh <span class=\"adm-req\">*<\/span><\/label>\n                <input class=\"adm3-input\" id=\"adm-name\" name=\"full_name\" type=\"text\" required autocomplete=\"name\" placeholder=\"Seperti dalam IC \/ pasport\" aria-describedby=\"adm-name-hint adm-name-err\">\n                <span class=\"adm3-hint\" id=\"adm-name-hint\">Gunakan huruf Inggeris sahaja.<\/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\">Jantina <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\">Lelaki<\/button>\n                    <button type=\"button\" class=\"adm3-gbtn\" role=\"radio\" aria-checked=\"false\" tabindex=\"-1\" data-value=\"female\">Perempuan<\/button>\n                    <button type=\"button\" class=\"adm3-gbtn\" role=\"radio\" aria-checked=\"false\" tabindex=\"-1\" data-value=\"prefer_not\">Tidak mahu menyatakan<\/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\">Warganegara <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=\"Taip untuk cari atau pilih\u2026\">\n                  <ul class=\"adm3-combo__list\" id=\"adm-nat-list\" role=\"listbox\" aria-label=\"Warganegara\" 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 \/ No. Pasport <span class=\"adm-req\">*<\/span><\/label>\n                <input class=\"adm3-input\" id=\"adm-ic\" name=\"ic_passport\" type=\"text\" required autocomplete=\"off\" placeholder=\"cth. 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\">Tarikh Lahir <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=\"DD \/ MM \/ YYYY\" 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\">Hari \/ bulan \/ tahun<\/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\">Telefon <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=\"Kod negara\">\n                        <option value=\"MY\" data-dial=\"60\" selected>Malaysia (+60)<\/option>\n                        <option value=\"CN\" data-dial=\"86\">China (+86)<\/option>\n                        <option value=\"KR\" data-dial=\"82\">Korea Selatan (+82)<\/option>\n                        <option value=\"JP\" data-dial=\"81\">Jepun (+81)<\/option>\n                        <option value=\"ID\" data-dial=\"62\">Indonesia (+62)<\/option>\n                        <option value=\"RU\" data-dial=\"7\">Rusia (+7)<\/option>\n                        <option value=\"SA\" data-dial=\"966\">Arab Saudi (+966)<\/option>\n                        <option value=\"DE\" data-dial=\"49\">Jerman (+49)<\/option>\n                        <option value=\"SG\" data-dial=\"65\">Singapura (+65)<\/option>\n                        <option value=\"TH\" data-dial=\"66\">Thailand (+66)<\/option>\n                        <option value=\"VN\" data-dial=\"84\">Vietnam (+84)<\/option>\n                        <option value=\"AE\" data-dial=\"971\">Emiriah Arab Bersatu (+971)<\/option>\n                        <option value=\"GB\" data-dial=\"44\">United Kingdom (+44)<\/option>\n                        <option value=\"US\" data-dial=\"1\">Amerika Syarikat (+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\">Afrika Selatan (+27)<\/option>\n                        <option value=\"AL\" data-dial=\"355\">Albania (+355)<\/option>\n                        <option value=\"DZ\" data-dial=\"213\">Algeria (+213)<\/option>\n                        <option value=\"US\" data-dial=\"1\">Amerika Syarikat (+1)<\/option>\n                        <option value=\"AD\" data-dial=\"376\">Andorra (+376)<\/option>\n                        <option value=\"AO\" data-dial=\"244\">Angola (+244)<\/option>\n                        <option value=\"AG\" data-dial=\"1\">Antigua dan Barbuda (+1)<\/option>\n                        <option value=\"SA\" data-dial=\"966\">Arab Saudi (+966)<\/option>\n                        <option value=\"AR\" data-dial=\"54\">Argentina (+54)<\/option>\n                        <option value=\"AM\" data-dial=\"374\">Armenia (+374)<\/option>\n                        <option value=\"AU\" data-dial=\"61\">Australia (+61)<\/option>\n                        <option value=\"AT\" data-dial=\"43\">Austria (+43)<\/option>\n                        <option value=\"AZ\" data-dial=\"994\">Azerbaijan (+994)<\/option>\n                        <option value=\"BS\" data-dial=\"1\">Bahamas (+1)<\/option>\n                        <option value=\"BH\" data-dial=\"973\">Bahrain (+973)<\/option>\n                        <option value=\"BD\" data-dial=\"880\">Bangladesh (+880)<\/option>\n                        <option value=\"BB\" data-dial=\"1\">Barbados (+1)<\/option>\n                        <option value=\"NL\" data-dial=\"31\">Belanda (+31)<\/option>\n                        <option value=\"BY\" data-dial=\"375\">Belarus (+375)<\/option>\n                        <option value=\"BE\" data-dial=\"32\">Belgium (+32)<\/option>\n                        <option value=\"BZ\" data-dial=\"501\">Belize (+501)<\/option>\n                        <option value=\"BJ\" data-dial=\"229\">Benin (+229)<\/option>\n                        <option value=\"BT\" data-dial=\"975\">Bhutan (+975)<\/option>\n                        <option value=\"BO\" data-dial=\"591\">Bolivia (+591)<\/option>\n                        <option value=\"BA\" data-dial=\"387\">Bosnia dan Herzegovina (+387)<\/option>\n                        <option value=\"BW\" data-dial=\"267\">Botswana (+267)<\/option>\n                        <option value=\"BR\" data-dial=\"55\">Brazil (+55)<\/option>\n                        <option value=\"BN\" data-dial=\"673\">Brunei (+673)<\/option>\n                        <option value=\"BG\" data-dial=\"359\">Bulgaria (+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=\"CM\" data-dial=\"237\">Cameroon (+237)<\/option>\n                        <option value=\"CV\" data-dial=\"238\">Cape Verde (+238)<\/option>\n                        <option value=\"TD\" data-dial=\"235\">Chad (+235)<\/option>\n                        <option value=\"CL\" data-dial=\"56\">Chile (+56)<\/option>\n                        <option value=\"CN\" data-dial=\"86\">China (+86)<\/option>\n                        <option value=\"CO\" data-dial=\"57\">Colombia (+57)<\/option>\n                        <option value=\"KM\" data-dial=\"269\">Comoros (+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=\"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\">Croatia (+385)<\/option>\n                        <option value=\"CU\" data-dial=\"53\">Cuba (+53)<\/option>\n                        <option value=\"CY\" data-dial=\"357\">Cyprus (+357)<\/option>\n                        <option value=\"CZ\" data-dial=\"420\">Czechia (+420)<\/option>\n                        <option value=\"DK\" data-dial=\"45\">Denmark (+45)<\/option>\n                        <option value=\"DJ\" data-dial=\"253\">Djibouti (+253)<\/option>\n                        <option value=\"DM\" data-dial=\"1\">Dominica (+1)<\/option>\n                        <option value=\"EC\" data-dial=\"593\">Ecuador (+593)<\/option>\n                        <option value=\"SV\" data-dial=\"503\">El Salvador (+503)<\/option>\n                        <option value=\"AE\" data-dial=\"971\">Emiriah Arab Bersatu (+971)<\/option>\n                        <option value=\"ER\" data-dial=\"291\">Eritrea (+291)<\/option>\n                        <option value=\"EE\" data-dial=\"372\">Estonia (+372)<\/option>\n                        <option value=\"SZ\" data-dial=\"268\">Eswatini (+268)<\/option>\n                        <option value=\"ET\" data-dial=\"251\">Ethiopia (+251)<\/option>\n                        <option value=\"FJ\" data-dial=\"679\">Fiji (+679)<\/option>\n                        <option value=\"PH\" data-dial=\"63\">Filipina (+63)<\/option>\n                        <option value=\"FI\" data-dial=\"358\">Finland (+358)<\/option>\n                        <option value=\"GA\" data-dial=\"241\">Gabon (+241)<\/option>\n                        <option value=\"GM\" data-dial=\"220\">Gambia (+220)<\/option>\n                        <option value=\"GE\" data-dial=\"995\">Georgia (+995)<\/option>\n                        <option value=\"GH\" data-dial=\"233\">Ghana (+233)<\/option>\n                        <option value=\"GR\" data-dial=\"30\">Greece (+30)<\/option>\n                        <option value=\"GD\" data-dial=\"1\">Grenada (+1)<\/option>\n                        <option value=\"GT\" data-dial=\"502\">Guatemala (+502)<\/option>\n                        <option value=\"GN\" data-dial=\"224\">Guinea (+224)<\/option>\n                        <option value=\"GW\" data-dial=\"245\">Guinea Bissau (+245)<\/option>\n                        <option value=\"GQ\" data-dial=\"240\">Guinea Khatulistiwa (+240)<\/option>\n                        <option value=\"GY\" data-dial=\"592\">Guyana (+592)<\/option>\n                        <option value=\"HT\" data-dial=\"509\">Haiti (+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\">Hungary (+36)<\/option>\n                        <option value=\"IS\" data-dial=\"354\">Iceland (+354)<\/option>\n                        <option value=\"IN\" data-dial=\"91\">India (+91)<\/option>\n                        <option value=\"ID\" data-dial=\"62\">Indonesia (+62)<\/option>\n                        <option value=\"IR\" data-dial=\"98\">Iran (+98)<\/option>\n                        <option value=\"IQ\" data-dial=\"964\">Iraq (+964)<\/option>\n                        <option value=\"IE\" data-dial=\"353\">Ireland (+353)<\/option>\n                        <option value=\"IL\" data-dial=\"972\">Israel (+972)<\/option>\n                        <option value=\"IT\" data-dial=\"39\">Itali (+39)<\/option>\n                        <option value=\"JM\" data-dial=\"1\">Jamaica (+1)<\/option>\n                        <option value=\"JP\" data-dial=\"81\">Jepun (+81)<\/option>\n                        <option value=\"DE\" data-dial=\"49\">Jerman (+49)<\/option>\n                        <option value=\"JO\" data-dial=\"962\">Jordan (+962)<\/option>\n                        <option value=\"CA\" data-dial=\"1\">Kanada (+1)<\/option>\n                        <option value=\"KZ\" data-dial=\"7\">Kazakhstan (+7)<\/option>\n                        <option value=\"KH\" data-dial=\"855\">Kemboja (+855)<\/option>\n                        <option value=\"KE\" data-dial=\"254\">Kenya (+254)<\/option>\n                        <option value=\"MH\" data-dial=\"692\">Kepulauan Marshall (+692)<\/option>\n                        <option value=\"SB\" data-dial=\"677\">Kepulauan Solomon (+677)<\/option>\n                        <option value=\"KI\" data-dial=\"686\">Kiribati (+686)<\/option>\n                        <option value=\"KR\" data-dial=\"82\">Korea Selatan (+82)<\/option>\n                        <option value=\"KP\" data-dial=\"850\">Korea Utara (+850)<\/option>\n                        <option value=\"XK\" data-dial=\"383\">Kosovo (+383)<\/option>\n                        <option value=\"VA\" data-dial=\"39\">Kota Vatican (+39)<\/option>\n                        <option value=\"KW\" data-dial=\"965\">Kuwait (+965)<\/option>\n                        <option value=\"KG\" data-dial=\"996\">Kyrgyzstan (+996)<\/option>\n                        <option value=\"LA\" data-dial=\"856\">Laos (+856)<\/option>\n                        <option value=\"LV\" data-dial=\"371\">Latvia (+371)<\/option>\n                        <option value=\"LS\" data-dial=\"266\">Lesotho (+266)<\/option>\n                        <option value=\"LR\" data-dial=\"231\">Liberia (+231)<\/option>\n                        <option value=\"LY\" data-dial=\"218\">Libya (+218)<\/option>\n                        <option value=\"LI\" data-dial=\"423\">Liechtenstein (+423)<\/option>\n                        <option value=\"LT\" data-dial=\"370\">Lithuania (+370)<\/option>\n                        <option value=\"LB\" data-dial=\"961\">Lubnan (+961)<\/option>\n                        <option value=\"LU\" data-dial=\"352\">Luxembourg (+352)<\/option>\n                        <option value=\"MO\" data-dial=\"853\">Macau (+853)<\/option>\n                        <option value=\"MK\" data-dial=\"389\">Macedonia Utara (+389)<\/option>\n                        <option value=\"MG\" data-dial=\"261\">Madagaskar (+261)<\/option>\n                        <option value=\"MA\" data-dial=\"212\">Maghribi (+212)<\/option>\n                        <option value=\"MW\" data-dial=\"265\">Malawi (+265)<\/option>\n                        <option value=\"MY\" data-dial=\"60\">Malaysia (+60)<\/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\">Malta (+356)<\/option>\n                        <option value=\"MR\" data-dial=\"222\">Mauritania (+222)<\/option>\n                        <option value=\"MU\" data-dial=\"230\">Mauritius (+230)<\/option>\n                        <option value=\"EG\" data-dial=\"20\">Mesir (+20)<\/option>\n                        <option value=\"MX\" data-dial=\"52\">Mexico (+52)<\/option>\n                        <option value=\"FM\" data-dial=\"691\">Micronesia (+691)<\/option>\n                        <option value=\"MD\" data-dial=\"373\">Moldova (+373)<\/option>\n                        <option value=\"MC\" data-dial=\"377\">Monaco (+377)<\/option>\n                        <option value=\"MN\" data-dial=\"976\">Mongolia (+976)<\/option>\n                        <option value=\"ME\" data-dial=\"382\">Montenegro (+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\">Namibia (+264)<\/option>\n                        <option value=\"NR\" data-dial=\"674\">Nauru (+674)<\/option>\n                        <option value=\"NP\" data-dial=\"977\">Nepal (+977)<\/option>\n                        <option value=\"NZ\" data-dial=\"64\">New Zealand (+64)<\/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\">Norway (+47)<\/option>\n                        <option value=\"OM\" data-dial=\"968\">Oman (+968)<\/option>\n                        <option value=\"PK\" data-dial=\"92\">Pakistan (+92)<\/option>\n                        <option value=\"PW\" data-dial=\"680\">Palau (+680)<\/option>\n                        <option value=\"PS\" data-dial=\"970\">Palestin (+970)<\/option>\n                        <option value=\"PA\" data-dial=\"507\">Panama (+507)<\/option>\n                        <option value=\"PG\" data-dial=\"675\">Papua New Guinea (+675)<\/option>\n                        <option value=\"PY\" data-dial=\"595\">Paraguay (+595)<\/option>\n                        <option value=\"FR\" data-dial=\"33\">Perancis (+33)<\/option>\n                        <option value=\"PE\" data-dial=\"51\">Peru (+51)<\/option>\n                        <option value=\"PL\" data-dial=\"48\">Poland (+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\">Republik Afrika Tengah (+236)<\/option>\n                        <option value=\"DO\" data-dial=\"1\">Republik Dominica (+1)<\/option>\n                        <option value=\"RO\" data-dial=\"40\">Romania (+40)<\/option>\n                        <option value=\"RU\" data-dial=\"7\">Rusia (+7)<\/option>\n                        <option value=\"RW\" data-dial=\"250\">Rwanda (+250)<\/option>\n                        <option value=\"KN\" data-dial=\"1\">Saint Kitts dan Nevis (+1)<\/option>\n                        <option value=\"LC\" data-dial=\"1\">Saint Lucia (+1)<\/option>\n                        <option value=\"VC\" data-dial=\"1\">Saint Vincent dan Grenadines (+1)<\/option>\n                        <option value=\"WS\" data-dial=\"685\">Samoa (+685)<\/option>\n                        <option value=\"SM\" data-dial=\"378\">San Marino (+378)<\/option>\n                        <option value=\"ST\" data-dial=\"239\">Sao Tome dan Principe (+239)<\/option>\n                        <option value=\"SN\" data-dial=\"221\">Senegal (+221)<\/option>\n                        <option value=\"ES\" data-dial=\"34\">Sepanyol (+34)<\/option>\n                        <option value=\"RS\" data-dial=\"381\">Serbia (+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\">Singapura (+65)<\/option>\n                        <option value=\"SK\" data-dial=\"421\">Slovakia (+421)<\/option>\n                        <option value=\"SI\" data-dial=\"386\">Slovenia (+386)<\/option>\n                        <option value=\"SO\" data-dial=\"252\">Somalia (+252)<\/option>\n                        <option value=\"LK\" data-dial=\"94\">Sri Lanka (+94)<\/option>\n                        <option value=\"SD\" data-dial=\"249\">Sudan (+249)<\/option>\n                        <option value=\"SS\" data-dial=\"211\">Sudan Selatan (+211)<\/option>\n                        <option value=\"SR\" data-dial=\"597\">Surinam (+597)<\/option>\n                        <option value=\"SE\" data-dial=\"46\">Sweden (+46)<\/option>\n                        <option value=\"CH\" data-dial=\"41\">Switzerland (+41)<\/option>\n                        <option value=\"SY\" data-dial=\"963\">Syria (+963)<\/option>\n                        <option value=\"TW\" data-dial=\"886\">Taiwan (+886)<\/option>\n                        <option value=\"TJ\" data-dial=\"992\">Tajikistan (+992)<\/option>\n                        <option value=\"TZ\" data-dial=\"255\">Tanzania (+255)<\/option>\n                        <option value=\"TH\" data-dial=\"66\">Thailand (+66)<\/option>\n                        <option value=\"TL\" data-dial=\"670\">Timor-Leste (+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\">Trinidad dan Tobago (+1)<\/option>\n                        <option value=\"TN\" data-dial=\"216\">Tunisia (+216)<\/option>\n                        <option value=\"TR\" data-dial=\"90\">Turkiye (+90)<\/option>\n                        <option value=\"TM\" data-dial=\"993\">Turkmenistan (+993)<\/option>\n                        <option value=\"TV\" data-dial=\"688\">Tuvalu (+688)<\/option>\n                        <option value=\"UG\" data-dial=\"256\">Uganda (+256)<\/option>\n                        <option value=\"UA\" data-dial=\"380\">Ukraine (+380)<\/option>\n                        <option value=\"GB\" data-dial=\"44\">United Kingdom (+44)<\/option>\n                        <option value=\"UY\" data-dial=\"598\">Uruguay (+598)<\/option>\n                        <option value=\"UZ\" data-dial=\"998\">Uzbekistan (+998)<\/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\">Yaman (+967)<\/option>\n                        <option value=\"ZM\" data-dial=\"260\">Zambia (+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\">Emel <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\">Alamat<\/label>\n                <input class=\"adm3-input\" id=\"adm-address\" name=\"address\" type=\"text\" autocomplete=\"street-address\" placeholder=\"Jalan, bandar, poskod\">\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\">Langkah 2 daripada 3: Program<\/h2>\n            <div class=\"adm3-grid\">\n              <div class=\"adm3-field adm3-col-2\">\n                <label class=\"adm3-label\" for=\"adm-course\">Program Yang Diminati <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>Pilih program\u2026<\/option>\n                  <optgroup label=\"Sekolah Bahasa\">\n                      <option>Intensive English Programme (IEP)<\/option>\n                      <option>Junior Intensive English Programme (JIEP)<\/option>\n                      <option>Business English Programme<\/option>\n                      <option>IELTS \/ TOEFL iBT Preparation<\/option>\n                      <option>Intensive IELTS Preparation<\/option>\n                      <option>Daily Conversational Class<\/option>\n                      <option>Private VIP Class<\/option>\n                      <option>Summer \/ Winter Camp<\/option>\n                  <\/optgroup>\n                  <optgroup label=\"Pembangunan Akademik\">\n                      <option>Primary Tuition<\/option>\n                      <option>Lower Secondary Tuition<\/option>\n                      <option>IGCSE<\/option>\n                      <option>A-Level<\/option>\n                      <option>IB Diploma (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\">Tarikh Mula Pilihan<\/label>\n                <select class=\"adm3-input\" id=\"adm-start\" name=\"preferred_start\">\n                    <option value=\"\" selected>Pilih\u2026<\/option>\n                    <option value=\"As soon as possible\">Secepat mungkin<\/option>\n                  <\/select>\n              <\/div>\n              <div class=\"adm3-field\">\n                <label class=\"adm3-label\" for=\"adm-hear\">Bagaimana anda mengetahui tentang kami? <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>Sila pilih\u2026<\/option>\n                    <option value=\"Carian Google\">Carian 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=\"Rakan \/ Rujukan\">Rakan \/ Rujukan<\/option>\n                    <option value=\"Ejen\">Ejen<\/option>\n                    <option value=\"Datang Sendiri\">Datang Sendiri<\/option>\n                    <option value=\"Lain-lain\">Lain-lain<\/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>Pemohon berumur di bawah 18 tahun \u2014 tambah ibu bapa \/ penjaga<\/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\">Ibu Bapa \/ Penjaga <span>(pemohon berumur di bawah 18 tahun)<\/span><\/p>\n              <div class=\"adm3-grid\">\n                <div class=\"adm3-field\">\n                  <label class=\"adm3-label\" for=\"adm-gname\">Nama Penuh Penjaga <span class=\"adm-req\">*<\/span><\/label>\n                  <input class=\"adm3-input\" id=\"adm-gname\" name=\"guardian_name\" type=\"text\" autocomplete=\"off\" placeholder=\"Huruf Inggeris sahaja\" 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\">Hubungan<\/label>\n                  <select class=\"adm3-input\" id=\"adm-grel\" name=\"guardian_relationship\">\n                    <option value=\"\" selected disabled>Pilih\u2026<\/option>\n                    <option value=\"Bapa\">Bapa<\/option>\n                    <option value=\"Ibu\">Ibu<\/option>\n                    <option value=\"Penjaga Sah\">Penjaga Sah<\/option>\n                    <option value=\"Lain-lain\">Lain-lain<\/option>\n                  <\/select>\n                <\/div>\n                <div class=\"adm3-field\">\n                  <label class=\"adm3-label\" for=\"adm-gemail\">Emel Penjaga <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\">Telefon Penjaga <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=\"Kod negara\"><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\">Langkah 3 daripada 3: Sahkan<\/h2>\n            <div class=\"adm3-grid\">\n              <div class=\"adm3-field adm3-col-2\">\n                <label class=\"adm3-label\" for=\"adm-doc\">Salinan Pasport \/ 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\">Lepaskan fail di sini atau pilih fail<\/span><span class=\"adm3-drop__s\" id=\"adm-drop-s\">PDF atau foto (JPG\/PNG). Maksimum 10 MB.<\/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\">Ada apa-apa lagi yang perlu kami tahu?<\/label>\n                <textarea class=\"adm3-input\" id=\"adm-notes\" name=\"notes\" rows=\"3\" placeholder=\"Pilihan \u2014 matlamat, soalan, jadual pilihan\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>Saya telah membaca dan bersetuju dengan <a href=\"https:\/\/glacademy.edu.my\/terms-of-enrolment\/\" target=\"_blank\" rel=\"noopener\">Terma &amp; Syarat Pendaftaran<\/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>Saya bersetuju GL Academy memproses data peribadi saya menurut <a href=\"https:\/\/glacademy.edu.my\/ms\/privacy-policy\/\" target=\"_blank\" rel=\"noopener\">Dasar Privasi &amp; Notis 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\">Tandatangan pemohon<\/span><span data-signer=\"guardian\" hidden>Tandatangan ibu bapa \/ penjaga<\/span> <span class=\"adm-req\">*<\/span><\/span>\n                  <button type=\"button\" class=\"adm3-link\" id=\"adm-sig-clear\">Padam<\/button>\n                <\/div>\n                <p class=\"adm3-sig__stmt\"><span data-signer=\"self\">Dengan menandatangani, saya mengesahkan bahawa maklumat dalam permohonan ini adalah benar dan lengkap.<\/span><span data-signer=\"guardian\" hidden>Dengan menandatangani, saya mengesahkan bahawa saya ialah ibu bapa atau penjaga sah pemohon dan bahawa maklumat dalam permohonan ini adalah benar dan lengkap.<\/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=\"Kotak tandatangan\" 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\">Taip nama penuh anda<\/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\">Tandatangan di dalam kotak dengan jari atau tetikus anda.<\/span>\n                  <button type=\"button\" class=\"adm3-link\" id=\"adm-sig-mode\">Taip nama anda sebagai ganti<\/button>\n                <\/div>\n                <p class=\"adm3-sig__as\">Ditandatangani oleh: <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> Kembali<\/button>\n            <button class=\"adm3-btn\" id=\"adm-submit\" type=\"submit\"><span class=\"adm-submit__label\">Teruskan<\/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\">Lebih suka berbual dahulu?<\/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> WhatsApp Kami<\/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\">Daftar Kursus Bahasa Inggeris di GL Academy: Cara Ia Berfungsi<\/h2>\n        <p>Satu permohonan merangkumi setiap program GL Academy, daripada Program Bahasa Inggeris Intensif, persediaan IELTS dan kem cuti sekolah hingga tuisyen Sekolah Rendah, IGCSE, A-Level dan IB. Sama ada anda mahu daftar kursus bahasa Inggeris atau kelas akademik, inilah yang berlaku selepas anda menekan Hantar Permohonan.<\/p>\n        <p>Tidak pasti program mana yang sesuai? Pilih yang paling hampir dan ceritakan lebih lanjut pada langkah terakhir; kami akan mencadangkan kelas yang betul.<\/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=\"Daftar kursus bahasa Inggeris di GL Academy: pelajar belajar di dalam kelas di Kuala Lumpur\" 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>Selepas anda daftar kursus bahasa Inggeris, kelas anda berlangsung di kampus kami di E-10-20, Plaza Mont Kiara, Kuala Lumpur.<\/figcaption>\n      <\/figure>\n    <\/div>\n\n    <ol class=\"adm3-guide__steps\">\n      <li><h3>Mohon dalam talian<\/h3><p>Lengkapkan tiga langkah di atas untuk daftar kursus bahasa Inggeris atau program lain, kemudian tandatangan. Pemohon berumur di bawah 18 tahun menambah ibu bapa atau penjaga, yang menandatangani bagi pihak mereka.<\/p><\/li>\n      <li><h3>Kami mengesahkan tempat anda<\/h3><p>Pasukan kemasukan kami membalas dalam masa 3 hari bekerja untuk mengesahkan tempat anda.<\/p><\/li>\n      <li><h3>Ujian penempatan<\/h3><p>Setiap pelajar baharu mengambil ujian penempatan sebelum kelas pertama, supaya anda menyertai tahap yang betul. Cuba <a href=\"\/placement-test\/\">ujian penempatan bahasa Inggeris percuma<\/a> kami pada bila-bila masa.<\/p><\/li>\n      <li><h3>Visa pelajar, jika perlu<\/h3><p>Untuk kursus 4 bulan atau lebih, GL Academy memohon Student Pass anda melalui <a href=\"https:\/\/educationmalaysia.gov.my\/\" target=\"_blank\" rel=\"noopener\">Education Malaysia Global Services (EMGS)<\/a>. Lihat panduan <a href=\"https:\/\/glacademy.edu.my\/ms\/visa\/\">visa pelajar Malaysia<\/a> kami.<\/p><\/li>\n    <\/ol>\n\n    <div class=\"adm3-guide__cols\">\n      <div>\n        <h3>Senarai semak untuk daftar kursus bahasa Inggeris<\/h3>\n        <ul>\n          <li>Nama penuh anda dalam abjad Inggeris, seperti dalam pasport atau NRIC<\/li>\n          <li>Kewarganegaraan, tarikh lahir, nombor telefon dan e-mel<\/li>\n          <li>Salinan pasport atau NRIC anda (PDF atau foto, di bawah 10 MB)<\/li>\n          <li>Program yang diminati dan tarikh mula pilihan anda<\/li>\n          <li>Nama, e-mel dan telefon ibu bapa atau penjaga jika pemohon berumur di bawah 18 tahun<\/li>\n          <li>Persetujuan kepada <a href=\"\/terms-of-enrolment\/\">Terma &amp; Syarat Pendaftaran<\/a> dan <a href=\"https:\/\/glacademy.edu.my\/ms\/privacy-policy\/\">Dasar Privasi<\/a> kami<\/li>\n        <\/ul>\n      <\/div>\n      <div>\n        <h3>Siapa yang boleh memohon?<\/h3>\n        <p>Sesiapa sahaja boleh daftar kursus bahasa Inggeris di GL Academy, daripada pemula sepenuhnya hingga tahap lanjutan: ujian penempatan yang menentukan kelas anda, bukan tekaan. Kanak-kanak boleh menyertai <a href=\"https:\/\/glacademy.edu.my\/ms\/jiep\/\">Program Bahasa Inggeris Intensif Junior<\/a> kami (umur 5 tahun ke atas) dan <a href=\"https:\/\/glacademy.edu.my\/ms\/holiday-camp\/\">kem cuti sekolah<\/a> (umur 5\u201316 tahun).<\/p>\n        <p>Ada soalan sebelum anda daftar kursus bahasa Inggeris? Hubungi <a href=\"tel:+60364612232\">+603-6461-2232<\/a>, hantar mesej kepada kami di WhatsApp, atau <a href=\"https:\/\/glacademy.edu.my\/ms\/contact-us\/\">lawati pusat kami<\/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\": \"ms-MY\", \"course_ph\": \"Pilih program\u2026\", \"req\": \"Medan ini diperlukan.\", \"choose\": \"Sila pilih satu.\", \"name_err\": \"Sila gunakan abjad Inggeris (huruf Latin sahaja).\", \"email_err\": \"Sila masukkan alamat e-mel yang sah.\", \"dob_err\": \"Sila masukkan tarikh lahir yang sah (DD \/ MM \/ YYYY).\", \"dob_hint\": \"Hari \/ bulan \/ tahun\", \"phone_err\": \"Sila masukkan nombor telefon yang sah.\", \"doc_err\": \"Sila lampirkan fail PDF atau imej di bawah 10 MB.\", \"e_doc\": \"Sila lampirkan salinan pasport atau IC anda (PDF atau foto, di bawah 10 MB).\", \"e_glatin\": \"Sila tulis nama penjaga menggunakan abjad Inggeris.\", \"e_terms\": \"Sila bersetuju dengan Terma & Syarat Pendaftaran.\", \"e_privacy\": \"Sila bersetuju dengan Dasar Privasi untuk meneruskan.\", \"sig_err\": \"Sila tandatangan di dalam kotak.\", \"e_required\": \"Sila lengkapkan semua medan yang diperlukan (*).\", \"submitting\": \"Menghantar\u2026\", \"submit\": \"Hantar Permohonan\", \"cont\": \"Teruskan\", \"ref\": \"Rujukan: \", \"e_generic\": \"Sesuatu telah berlaku. Sila cuba lagi atau hubungi kami di WhatsApp.\", \"e_network\": \"Tidak dapat menghantar sekarang. Sila cuba lagi atau hubungi kami di WhatsApp.\", \"asap\": \"Secepat mungkin\", \"starts\": \"Mula {m}\", \"details\": \"{n} daripada 7 butiran\", \"tag_app\": \"Pemohon\", \"tag_ready\": \"Sedia dihantar\", \"card_name\": \"Nama anda\", \"card_prog\": \"Program anda\", \"sig_type\": \"Taip nama anda sebagai ganti\", \"sig_draw\": \"Lukis tandatangan\", \"nat_none\": \"Tiada negara yang sepadan\", \"upload_title\": \"Lepaskan fail di sini atau pilih fail\", \"upload_sub\": \"PDF atau foto (JPG\/PNG). Maksimum 10 MB.\", \"upload_change\": \"Pilih fail lain\"};\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\", \"Afrika Selatan\", \"ZA\", \"South Africa\", \"\"], [\"Albania\", \"Albania\", \"AL\", \"Albania\", \"\"], [\"Algeria\", \"Algeria\", \"DZ\", \"Algeria\", \"\"], [\"United States\", \"Amerika Syarikat\", \"US\", \"United States\", \"USA America United States of America\"], [\"Andorra\", \"Andorra\", \"AD\", \"Andorra\", \"\"], [\"Angola\", \"Angola\", \"AO\", \"Angola\", \"\"], [\"Antigua and Barbuda\", \"Antigua dan Barbuda\", \"AG\", \"Antigua and Barbuda\", \"\"], [\"Saudi Arabia\", \"Arab Saudi\", \"SA\", \"Saudi Arabia\", \"KSA\"], [\"Argentina\", \"Argentina\", \"AR\", \"Argentina\", \"\"], [\"Armenia\", \"Armenia\", \"AM\", \"Armenia\", \"\"], [\"Australia\", \"Australia\", \"AU\", \"Australia\", \"\"], [\"Austria\", \"Austria\", \"AT\", \"Austria\", \"\"], [\"Azerbaijan\", \"Azerbaijan\", \"AZ\", \"Azerbaijan\", \"\"], [\"Bahamas\", \"Bahamas\", \"BS\", \"Bahamas\", \"\"], [\"Bahrain\", \"Bahrain\", \"BH\", \"Bahrain\", \"\"], [\"Bangladesh\", \"Bangladesh\", \"BD\", \"Bangladesh\", \"\"], [\"Barbados\", \"Barbados\", \"BB\", \"Barbados\", \"\"], [\"Netherlands\", \"Belanda\", \"NL\", \"Netherlands\", \"Holland\"], [\"Belarus\", \"Belarus\", \"BY\", \"Belarus\", \"\"], [\"Belgium\", \"Belgium\", \"BE\", \"Belgium\", \"\"], [\"Belize\", \"Belize\", \"BZ\", \"Belize\", \"\"], [\"Benin\", \"Benin\", \"BJ\", \"Benin\", \"\"], [\"Bhutan\", \"Bhutan\", \"BT\", \"Bhutan\", \"\"], [\"Bolivia\", \"Bolivia\", \"BO\", \"Bolivia\", \"\"], [\"Bosnia and Herzegovina\", \"Bosnia dan Herzegovina\", \"BA\", \"Bosnia and Herzegovina\", \"\"], [\"Botswana\", \"Botswana\", \"BW\", \"Botswana\", \"\"], [\"Brazil\", \"Brazil\", \"BR\", \"Brazil\", \"\"], [\"Brunei\", \"Brunei\", \"BN\", \"Brunei\", \"Brunei Darussalam\"], [\"Bulgaria\", \"Bulgaria\", \"BG\", \"Bulgaria\", \"\"], [\"Burkina Faso\", \"Burkina Faso\", \"BF\", \"Burkina Faso\", \"\"], [\"Burundi\", \"Burundi\", \"BI\", \"Burundi\", \"\"], [\"Cameroon\", \"Cameroon\", \"CM\", \"Cameroon\", \"\"], [\"Cabo Verde\", \"Cape Verde\", \"CV\", \"Cabo Verde\", \"Cape Verde\"], [\"Chad\", \"Chad\", \"TD\", \"Chad\", \"\"], [\"Chile\", \"Chile\", \"CL\", \"Chile\", \"\"], [\"China\", \"China\", \"CN\", \"China\", \"PRC \u4e2d\u534e\u4eba\u6c11\u5171\u548c\u56fd\"], [\"Colombia\", \"Colombia\", \"CO\", \"Colombia\", \"\"], [\"Comoros\", \"Comoros\", \"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\"], [\"Costa Rica\", \"Costa Rica\", \"CR\", \"Costa Rica\", \"\"], [\"C\u00f4te d'Ivoire\", \"C\u00f4te d'Ivoire\", \"CI\", \"C\u00f4te d'Ivoire\", \"Ivory Coast\"], [\"Croatia\", \"Croatia\", \"HR\", \"Croatia\", \"\"], [\"Cuba\", \"Cuba\", \"CU\", \"Cuba\", \"\"], [\"Cyprus\", \"Cyprus\", \"CY\", \"Cyprus\", \"\"], [\"Czechia\", \"Czechia\", \"CZ\", \"Czechia\", \"Czech Republic\"], [\"Denmark\", \"Denmark\", \"DK\", \"Denmark\", \"\"], [\"Djibouti\", \"Djibouti\", \"DJ\", \"Djibouti\", \"\"], [\"Dominica\", \"Dominica\", \"DM\", \"Dominica\", \"\"], [\"Ecuador\", \"Ecuador\", \"EC\", \"Ecuador\", \"\"], [\"El Salvador\", \"El Salvador\", \"SV\", \"El Salvador\", \"\"], [\"United Arab Emirates\", \"Emiriah Arab Bersatu\", \"AE\", \"United Arab Emirates\", \"UAE Emirates Dubai\"], [\"Eritrea\", \"Eritrea\", \"ER\", \"Eritrea\", \"\"], [\"Estonia\", \"Estonia\", \"EE\", \"Estonia\", \"\"], [\"Eswatini\", \"Eswatini\", \"SZ\", \"Eswatini\", \"Swaziland\"], [\"Ethiopia\", \"Ethiopia\", \"ET\", \"Ethiopia\", \"\"], [\"Fiji\", \"Fiji\", \"FJ\", \"Fiji\", \"\"], [\"Philippines\", \"Filipina\", \"PH\", \"Philippines\", \"\"], [\"Finland\", \"Finland\", \"FI\", \"Finland\", \"\"], [\"Gabon\", \"Gabon\", \"GA\", \"Gabon\", \"\"], [\"Gambia\", \"Gambia\", \"GM\", \"Gambia\", \"\"], [\"Georgia\", \"Georgia\", \"GE\", \"Georgia\", \"\"], [\"Ghana\", \"Ghana\", \"GH\", \"Ghana\", \"\"], [\"Greece\", \"Greece\", \"GR\", \"Greece\", \"\"], [\"Grenada\", \"Grenada\", \"GD\", \"Grenada\", \"\"], [\"Guatemala\", \"Guatemala\", \"GT\", \"Guatemala\", \"\"], [\"Guinea\", \"Guinea\", \"GN\", \"Guinea\", \"\"], [\"Guinea-Bissau\", \"Guinea Bissau\", \"GW\", \"Guinea-Bissau\", \"\"], [\"Equatorial Guinea\", \"Guinea Khatulistiwa\", \"GQ\", \"Equatorial Guinea\", \"\"], [\"Guyana\", \"Guyana\", \"GY\", \"Guyana\", \"\"], [\"Haiti\", \"Haiti\", \"HT\", \"Haiti\", \"\"], [\"Honduras\", \"Honduras\", \"HN\", \"Honduras\", \"\"], [\"Hungary\", \"Hungary\", \"HU\", \"Hungary\", \"\"], [\"Iceland\", \"Iceland\", \"IS\", \"Iceland\", \"\"], [\"India\", \"India\", \"IN\", \"India\", \"\"], [\"Indonesia\", \"Indonesia\", \"ID\", \"Indonesia\", \"\"], [\"Iran\", \"Iran\", \"IR\", \"Iran\", \"Persia\"], [\"Iraq\", \"Iraq\", \"IQ\", \"Iraq\", \"\"], [\"Ireland\", \"Ireland\", \"IE\", \"Ireland\", \"\"], [\"Israel\", \"Israel\", \"IL\", \"Israel\", \"\"], [\"Italy\", \"Itali\", \"IT\", \"Italy\", \"\"], [\"Jamaica\", \"Jamaica\", \"JM\", \"Jamaica\", \"\"], [\"Japan\", \"Jepun\", \"JP\", \"Japan\", \"\"], [\"Germany\", \"Jerman\", \"DE\", \"Germany\", \"\"], [\"Jordan\", \"Jordan\", \"JO\", \"Jordan\", \"\"], [\"Canada\", \"Kanada\", \"CA\", \"Canada\", \"\"], [\"Kazakhstan\", \"Kazakhstan\", \"KZ\", \"Kazakhstan\", \"\"], [\"Cambodia\", \"Kemboja\", \"KH\", \"Cambodia\", \"\"], [\"Kenya\", \"Kenya\", \"KE\", \"Kenya\", \"\"], [\"Marshall Islands\", \"Kepulauan Marshall\", \"MH\", \"Marshall Islands\", \"\"], [\"Solomon Islands\", \"Kepulauan Solomon\", \"SB\", \"Solomon Islands\", \"\"], [\"Kiribati\", \"Kiribati\", \"KI\", \"Kiribati\", \"\"], [\"South Korea\", \"Korea Selatan\", \"KR\", \"South Korea\", \"Korea \ud55c\uad6d \u97d3\u56fd \u97e9\u56fd\"], [\"North Korea\", \"Korea Utara\", \"KP\", \"North Korea\", \"DPRK\"], [\"Kosovo\", \"Kosovo\", \"XK\", \"Kosovo\", \"\"], [\"Vatican City\", \"Kota Vatican\", \"VA\", \"Vatican City\", \"Holy See Vatican\"], [\"Kuwait\", \"Kuwait\", \"KW\", \"Kuwait\", \"\"], [\"Kyrgyzstan\", \"Kyrgyzstan\", \"KG\", \"Kyrgyzstan\", \"\"], [\"Laos\", \"Laos\", \"LA\", \"Laos\", \"Lao\"], [\"Latvia\", \"Latvia\", \"LV\", \"Latvia\", \"\"], [\"Lesotho\", \"Lesotho\", \"LS\", \"Lesotho\", \"\"], [\"Liberia\", \"Liberia\", \"LR\", \"Liberia\", \"\"], [\"Libya\", \"Libya\", \"LY\", \"Libya\", \"\"], [\"Liechtenstein\", \"Liechtenstein\", \"LI\", \"Liechtenstein\", \"\"], [\"Lithuania\", \"Lithuania\", \"LT\", \"Lithuania\", \"\"], [\"Lebanon\", \"Lubnan\", \"LB\", \"Lebanon\", \"\"], [\"Luxembourg\", \"Luxembourg\", \"LU\", \"Luxembourg\", \"\"], [\"North Macedonia\", \"Macedonia Utara\", \"MK\", \"North Macedonia\", \"Macedonia\"], [\"Madagascar\", \"Madagaskar\", \"MG\", \"Madagascar\", \"\"], [\"Morocco\", \"Maghribi\", \"MA\", \"Morocco\", \"\"], [\"Malawi\", \"Malawi\", \"MW\", \"Malawi\", \"\"], [\"Malaysia\", \"Malaysia\", \"MY\", \"Malaysia\", \"Malaysian\"], [\"Maldives\", \"Maldives\", \"MV\", \"Maldives\", \"\"], [\"Mali\", \"Mali\", \"ML\", \"Mali\", \"\"], [\"Malta\", \"Malta\", \"MT\", \"Malta\", \"\"], [\"Mauritania\", \"Mauritania\", \"MR\", \"Mauritania\", \"\"], [\"Mauritius\", \"Mauritius\", \"MU\", \"Mauritius\", \"\"], [\"Egypt\", \"Mesir\", \"EG\", \"Egypt\", \"\"], [\"Mexico\", \"Mexico\", \"MX\", \"Mexico\", \"\"], [\"Micronesia\", \"Micronesia\", \"FM\", \"Micronesia\", \"\"], [\"Moldova\", \"Moldova\", \"MD\", \"Moldova\", \"\"], [\"Monaco\", \"Monaco\", \"MC\", \"Monaco\", \"\"], [\"Mongolia\", \"Mongolia\", \"MN\", \"Mongolia\", \"\"], [\"Montenegro\", \"Montenegro\", \"ME\", \"Montenegro\", \"\"], [\"Mozambique\", \"Mozambique\", \"MZ\", \"Mozambique\", \"\"], [\"Myanmar\", \"Myanmar\", \"MM\", \"Myanmar\", \"Burma\"], [\"Namibia\", \"Namibia\", \"NA\", \"Namibia\", \"\"], [\"Nauru\", \"Nauru\", \"NR\", \"Nauru\", \"\"], [\"Nepal\", \"Nepal\", \"NP\", \"Nepal\", \"\"], [\"New Zealand\", \"New Zealand\", \"NZ\", \"New Zealand\", \"\"], [\"Nicaragua\", \"Nicaragua\", \"NI\", \"Nicaragua\", \"\"], [\"Niger\", \"Niger\", \"NE\", \"Niger\", \"\"], [\"Nigeria\", \"Nigeria\", \"NG\", \"Nigeria\", \"\"], [\"Norway\", \"Norway\", \"NO\", \"Norway\", \"\"], [\"Oman\", \"Oman\", \"OM\", \"Oman\", \"\"], [\"Pakistan\", \"Pakistan\", \"PK\", \"Pakistan\", \"\"], [\"Palau\", \"Palau\", \"PW\", \"Palau\", \"\"], [\"Palestine\", \"Palestin\", \"PS\", \"Palestine\", \"Palestinian\"], [\"Panama\", \"Panama\", \"PA\", \"Panama\", \"\"], [\"Papua New Guinea\", \"Papua New Guinea\", \"PG\", \"Papua New Guinea\", \"\"], [\"Paraguay\", \"Paraguay\", \"PY\", \"Paraguay\", \"\"], [\"France\", \"Perancis\", \"FR\", \"France\", \"\"], [\"Peru\", \"Peru\", \"PE\", \"Peru\", \"\"], [\"Poland\", \"Poland\", \"PL\", \"Poland\", \"\"], [\"Portugal\", \"Portugal\", \"PT\", \"Portugal\", \"\"], [\"Qatar\", \"Qatar\", \"QA\", \"Qatar\", \"\"], [\"Central African Republic\", \"Republik Afrika Tengah\", \"CF\", \"Central African Republic\", \"\"], [\"Dominican Republic\", \"Republik Dominica\", \"DO\", \"Dominican Republic\", \"\"], [\"Romania\", \"Romania\", \"RO\", \"Romania\", \"\"], [\"Russia\", \"Rusia\", \"RU\", \"Russia\", \"Russian Federation\"], [\"Rwanda\", \"Rwanda\", \"RW\", \"Rwanda\", \"\"], [\"Saint Kitts and Nevis\", \"Saint Kitts dan Nevis\", \"KN\", \"Saint Kitts and Nevis\", \"\"], [\"Saint Lucia\", \"Saint Lucia\", \"LC\", \"Saint Lucia\", \"\"], [\"Saint Vincent and the Grenadines\", \"Saint Vincent dan Grenadines\", \"VC\", \"Saint Vincent and the Grenadines\", \"\"], [\"Samoa\", \"Samoa\", \"WS\", \"Samoa\", \"\"], [\"San Marino\", \"San Marino\", \"SM\", \"San Marino\", \"\"], [\"Sao Tome and Principe\", \"Sao Tome dan Principe\", \"ST\", \"Sao Tome and Principe\", \"\"], [\"Senegal\", \"Senegal\", \"SN\", \"Senegal\", \"\"], [\"Spain\", \"Sepanyol\", \"ES\", \"Spain\", \"\"], [\"Serbia\", \"Serbia\", \"RS\", \"Serbia\", \"\"], [\"Seychelles\", \"Seychelles\", \"SC\", \"Seychelles\", \"\"], [\"Sierra Leone\", \"Sierra Leone\", \"SL\", \"Sierra Leone\", \"\"], [\"Singapore\", \"Singapura\", \"SG\", \"Singapore\", \"\"], [\"Slovakia\", \"Slovakia\", \"SK\", \"Slovakia\", \"\"], [\"Slovenia\", \"Slovenia\", \"SI\", \"Slovenia\", \"\"], [\"Somalia\", \"Somalia\", \"SO\", \"Somalia\", \"\"], [\"Sri Lanka\", \"Sri Lanka\", \"LK\", \"Sri Lanka\", \"\"], [\"Sudan\", \"Sudan\", \"SD\", \"Sudan\", \"\"], [\"South Sudan\", \"Sudan Selatan\", \"SS\", \"South Sudan\", \"\"], [\"Suriname\", \"Surinam\", \"SR\", \"Suriname\", \"\"], [\"Sweden\", \"Sweden\", \"SE\", \"Sweden\", \"\"], [\"Switzerland\", \"Switzerland\", \"CH\", \"Switzerland\", \"\"], [\"Syria\", \"Syria\", \"SY\", \"Syria\", \"Syrian\"], [\"Taiwan\", \"Taiwan\", \"TW\", \"Taiwan\", \"Taiwan ROC \u81fa\u7063\"], [\"Tajikistan\", \"Tajikistan\", \"TJ\", \"Tajikistan\", \"\"], [\"Tanzania\", \"Tanzania\", \"TZ\", \"Tanzania\", \"\"], [\"Thailand\", \"Thailand\", \"TH\", \"Thailand\", \"\"], [\"Timor-Leste\", \"Timor-Leste\", \"TL\", \"Timor-Leste\", \"East Timor\"], [\"Togo\", \"Togo\", \"TG\", \"Togo\", \"\"], [\"Tonga\", \"Tonga\", \"TO\", \"Tonga\", \"\"], [\"Trinidad and Tobago\", \"Trinidad dan Tobago\", \"TT\", \"Trinidad and Tobago\", \"\"], [\"Tunisia\", \"Tunisia\", \"TN\", \"Tunisia\", \"\"], [\"Turkey\", \"Turkiye\", \"TR\", \"Turkey\", \"T\u00fcrkiye Turkiye\"], [\"Turkmenistan\", \"Turkmenistan\", \"TM\", \"Turkmenistan\", \"\"], [\"Tuvalu\", \"Tuvalu\", \"TV\", \"Tuvalu\", \"\"], [\"Uganda\", \"Uganda\", \"UG\", \"Uganda\", \"\"], [\"Ukraine\", \"Ukraine\", \"UA\", \"Ukraine\", \"\"], [\"United Kingdom\", \"United Kingdom\", \"GB\", \"United Kingdom\", \"UK Britain Great Britain England Scotland Wales\"], [\"Uruguay\", \"Uruguay\", \"UY\", \"Uruguay\", \"\"], [\"Uzbekistan\", \"Uzbekistan\", \"UZ\", \"Uzbekistan\", \"\"], [\"Vanuatu\", \"Vanuatu\", \"VU\", \"Vanuatu\", \"\"], [\"Venezuela\", \"Venezuela\", \"VE\", \"Venezuela\", \"\"], [\"Vietnam\", \"Vietnam\", \"VN\", \"Vietnam\", \"\"], [\"Yemen\", \"Yaman\", \"YE\", \"Yemen\", \"\"], [\"Zambia\", \"Zambia\", \"ZM\", \"Zambia\", \"\"], [\"Zimbabwe\", \"Zimbabwe\", \"ZW\", \"Zimbabwe\", \"\"], [\"Other\", \"Lain-lain\", \"\", \"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-ms');\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-5268","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/glacademy.edu.my\/ms\/wp-json\/wp\/v2\/pages\/5268","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/glacademy.edu.my\/ms\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/glacademy.edu.my\/ms\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/glacademy.edu.my\/ms\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/glacademy.edu.my\/ms\/wp-json\/wp\/v2\/comments?post=5268"}],"version-history":[{"count":0,"href":"https:\/\/glacademy.edu.my\/ms\/wp-json\/wp\/v2\/pages\/5268\/revisions"}],"wp:attachment":[{"href":"https:\/\/glacademy.edu.my\/ms\/wp-json\/wp\/v2\/media?parent=5268"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}