{"id":1471,"date":"2026-06-22T07:00:32","date_gmt":"2026-06-22T07:00:32","guid":{"rendered":"https:\/\/abhidham.mcu.ac.th\/?page_id=1471"},"modified":"2026-09-10T03:07:09","modified_gmt":"2026-09-10T03:07:09","slug":"%e0%b8%aa%e0%b8%a1%e0%b8%b1%e0%b8%84%e0%b8%a3%e0%b9%80%e0%b8%a3%e0%b8%b5%e0%b8%a2%e0%b8%99%e0%b8%9e%e0%b8%a3%e0%b8%b0%e0%b8%ad%e0%b8%a0%e0%b8%b4%e0%b8%98%e0%b8%a3%e0%b8%a3%e0%b8%a1","status":"publish","type":"page","link":"https:\/\/abhidham.mcu.ac.th\/?page_id=1471","title":{"rendered":"\u0e2a\u0e21\u0e31\u0e04\u0e23\u0e40\u0e23\u0e35\u0e22\u0e19\u0e1e\u0e23\u0e30\u0e2d\u0e20\u0e34\u0e18\u0e23\u0e23\u0e21\u0e2d\u0e2d\u0e19\u0e44\u0e25\u0e19\u0e4c"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"1471\" class=\"elementor elementor-1471\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-eb1652a e-flex e-con-boxed e-con e-parent\" data-id=\"eb1652a\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-01f3f8d elementor-widget elementor-widget-html\" data-id=\"01f3f8d\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<!-- \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n     \u0e41\u0e1a\u0e1a\u0e1f\u0e2d\u0e23\u0e4c\u0e21\u0e2a\u0e21\u0e31\u0e04\u0e23\u0e40\u0e23\u0e35\u0e22\u0e19\u0e1e\u0e23\u0e30\u0e2d\u0e20\u0e34\u0e18\u0e23\u0e23\u0e21 \u2014 \u0e40\u0e27\u0e2d\u0e23\u0e4c\u0e0a\u0e31\u0e19 WordPress\/Elementor\n     \u0e27\u0e32\u0e07\u0e42\u0e04\u0e49\u0e14\u0e17\u0e31\u0e49\u0e07\u0e2b\u0e21\u0e14\u0e19\u0e35\u0e49\u0e43\u0e19 Elementor \"HTML widget\" (\u0e44\u0e21\u0e48\u0e43\u0e0a\u0e48 Text editor)\n     \u0e41\u0e19\u0e30\u0e19\u0e33\u0e15\u0e31\u0e49\u0e07\u0e04\u0e48\u0e32 Section \u0e40\u0e1b\u0e47\u0e19 Full Width \u0e41\u0e25\u0e30 Padding = 0\n     \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 -->\n<link rel=\"preconnect\" href=\"https:\/\/fonts.googleapis.com\">\n<link rel=\"preconnect\" href=\"https:\/\/fonts.gstatic.com\" crossorigin>\n<link href=\"https:\/\/fonts.googleapis.com\/css2?family=Mitr:wght@300;400;500;600&family=Sarabun:ital,wght@0,300;0,400;0,500;0,600;0,700;1,400&family=Trirong:wght@400;500;600&display=swap\" rel=\"stylesheet\">\n<script src=\"https:\/\/cdn.jsdelivr.net\/npm\/sweetalert2@11\"><\/script>\n<script>(function(){if(!document.querySelector('meta[name=\"viewport\"]')){var m=document.createElement(\"meta\");m.name=\"viewport\";m.content=\"width=device-width, initial-scale=1, viewport-fit=cover\";document.head.appendChild(m);}})();<\/script>\n<style>\n\/* \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n   \u0e2a\u0e44\u0e15\u0e25\u0e4c\u0e17\u0e31\u0e49\u0e07\u0e2b\u0e21\u0e14\u0e02\u0e2d\u0e07\u0e1f\u0e2d\u0e23\u0e4c\u0e21 \u0e40\u0e23\u0e35\u0e22\u0e07\u0e40\u0e1b\u0e47\u0e19\u0e0a\u0e31\u0e49\u0e19\u0e17\u0e31\u0e1a\u0e01\u0e31\u0e19\u0e15\u0e32\u0e21\u0e25\u0e33\u0e14\u0e31\u0e1a\u0e17\u0e35\u0e48\u0e41\u0e01\u0e49\u0e21\u0e32\n   \u0e0a\u0e31\u0e49\u0e19\u0e17\u0e35\u0e48\u0e2d\u0e22\u0e39\u0e48\u0e25\u0e48\u0e32\u0e07\u0e01\u0e27\u0e48\u0e32\u0e0a\u0e19\u0e30\u0e40\u0e2a\u0e21\u0e2d \u2014 \u0e40\u0e27\u0e25\u0e32\u0e08\u0e30\u0e41\u0e01\u0e49\u0e2d\u0e30\u0e44\u0e23\u0e43\u0e2b\u0e49\u0e44\u0e25\u0e48\u0e2b\u0e32\u0e08\u0e32\u0e01\u0e25\u0e48\u0e32\u0e07\u0e02\u0e36\u0e49\u0e19\u0e1a\u0e19\n\n     \u0e10\u0e32\u0e19        reset, \u0e15\u0e31\u0e27\u0e41\u0e1b\u0e23\u0e2a\u0e35, \u0e42\u0e04\u0e23\u0e07\u0e2b\u0e19\u0e49\u0e32 \u0e41\u0e25\u0e30\u0e17\u0e38\u0e01\u0e04\u0e2d\u0e21\u0e42\u0e1e\u0e40\u0e19\u0e19\u0e15\u0e4c\n     \u0e17\u0e31\u0e1a\u0e0a\u0e31\u0e49\u0e19 1  \u0e42\u0e04\u0e23\u0e07\u0e2b\u0e19\u0e49\u0e32\u0e41\u0e1a\u0e1a\u0e43\u0e2b\u0e21\u0e48 (\u0e41\u0e16\u0e1a\u0e20\u0e32\u0e29\u0e32\u0e25\u0e2d\u0e22\u0e1a\u0e19 hero, \u0e01\u0e32\u0e23\u0e4c\u0e14\u0e17\u0e31\u0e1a hero)\n     \u0e17\u0e31\u0e1a\u0e0a\u0e31\u0e49\u0e19 2\u20135 \u0e40\u0e28\u0e29\u0e17\u0e35\u0e48\u0e22\u0e31\u0e07\u0e21\u0e35\u0e1c\u0e25\u0e08\u0e32\u0e01\u0e18\u0e35\u0e21\u0e17\u0e35\u0e48\u0e40\u0e04\u0e22\u0e25\u0e2d\u0e07\u0e41\u0e25\u0e49\u0e27\u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19\u0e43\u0e08\n     \u0e17\u0e31\u0e1a\u0e0a\u0e31\u0e49\u0e19 6  \u0e0a\u0e38\u0e14\u0e2a\u0e35\u0e41\u0e1a\u0e23\u0e19\u0e14\u0e4c\u0e17\u0e35\u0e48\u0e43\u0e0a\u0e49\u0e08\u0e23\u0e34\u0e07 \u2014 \u0e41\u0e01\u0e49\u0e2a\u0e35\u0e43\u0e2b\u0e49\u0e41\u0e01\u0e49\u0e17\u0e35\u0e48\u0e19\u0e35\u0e48\n     \u0e17\u0e31\u0e1a\u0e0a\u0e31\u0e49\u0e19 7  \u0e1b\u0e23\u0e31\u0e1a\u0e2a\u0e35\u0e43\u0e2b\u0e49\u0e15\u0e23\u0e07\u0e15\u0e31\u0e27\u0e2d\u0e22\u0e48\u0e32\u0e07\u0e17\u0e35\u0e48\u0e44\u0e14\u0e49\u0e23\u0e31\u0e1a\n     \u0e0a\u0e31\u0e49\u0e19\u0e2a\u0e38\u0e14\u0e17\u0e49\u0e32\u0e22 Modern UI polish \u2014 \u0e23\u0e39\u0e1b\u0e17\u0e23\u0e07\/\u0e23\u0e30\u0e22\u0e30\/\u0e2a\u0e40\u0e15\u0e47\u0e1b\u0e40\u0e1b\u0e2d\u0e23\u0e4c\u0e17\u0e35\u0e48\u0e40\u0e2b\u0e47\u0e19\u0e15\u0e2d\u0e19\u0e19\u0e35\u0e49\n\n   \u0e2b\u0e21\u0e32\u0e22\u0e40\u0e2b\u0e15\u0e38: \u0e44\u0e1f\u0e25\u0e4c\u0e19\u0e35\u0e49\u0e1c\u0e48\u0e32\u0e19\u0e01\u0e32\u0e23\u0e15\u0e31\u0e14 declaration \u0e17\u0e35\u0e48\u0e16\u0e39\u0e01\u0e0a\u0e31\u0e49\u0e19\u0e25\u0e48\u0e32\u0e07\u0e17\u0e31\u0e1a\u0e08\u0e19\u0e44\u0e21\u0e48\u0e21\u0e35\u0e1c\u0e25\n   \u0e2d\u0e2d\u0e01\u0e44\u0e1b\u0e41\u0e25\u0e49\u0e27 1,443 \u0e23\u0e32\u0e22\u0e01\u0e32\u0e23 (CSS \u0e40\u0e25\u0e47\u0e01\u0e25\u0e07 58%) \u0e42\u0e14\u0e22\u0e40\u0e17\u0e35\u0e22\u0e1a computed style\n   \u0e02\u0e2d\u0e07\u0e17\u0e38\u0e01 element \u0e43\u0e19 4 \u0e2a\u0e16\u0e32\u0e19\u0e30 \u00d7 7 \u0e04\u0e27\u0e32\u0e21\u0e01\u0e27\u0e49\u0e32\u0e07\u0e08\u0e2d \u0e23\u0e27\u0e21 14,167 \u0e08\u0e38\u0e14\n   \u0e1c\u0e25\u0e15\u0e23\u0e07\u0e01\u0e31\u0e1a\u0e01\u0e48\u0e2d\u0e19\u0e15\u0e31\u0e14\u0e17\u0e38\u0e01\u0e08\u0e38\u0e14 \u2014 \u0e2b\u0e19\u0e49\u0e32\u0e15\u0e32\u0e44\u0e21\u0e48\u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19\u0e41\u0e21\u0e49\u0e41\u0e15\u0e48\u0e1e\u0e34\u0e01\u0e40\u0e0b\u0e25\u0e40\u0e14\u0e35\u0e22\u0e27\n   \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 *\/\n#abjRegApp, #abjRegApp *, #abjRegApp *::before, #abjRegApp *::after { box-sizing:border-box; margin:0; padding:0; }\n\n#abjRegApp {\n    min-height:100vh;\n          }\n@media (prefers-reduced-motion: reduce) {\n#abjRegApp *, #abjRegApp *::before, #abjRegApp *::after { animation:none !important; transition:none !important; }\n}\n#abjRegApp \/* \u2500\u2500\u2500 \u0e41\u0e16\u0e1a\u0e20\u0e32\u0e29\u0e32 \u2500\u2500\u2500 *\/\n  .lang-bar {\n            display:flex; justify-content:flex-end; align-items:center;\n      }\n#abjRegApp .lang-bar button {\n    border:1px solid transparent;\n    font-family:'Sarabun',sans-serif; cursor:pointer;\n      }\n\n#abjRegApp \/* \u2500\u2500\u2500 Hero \u2500\u2500\u2500 *\/\n  .hero-band {\n    position:relative; overflow:hidden; text-align:center;\n          }\n#abjRegApp .hero-band::before {\n    content:\"\"; position:absolute; inset:0; pointer-events:none;\n      }\n#abjRegApp .hero-band::after {\n    content:\"\"; position:absolute; left:0; right:0; bottom:0;\n        opacity:.9;\n  }\n#abjRegApp .hero-band > * { position:relative; }\n#abjRegApp .hero-band h2 {\n    animation:heroIn .6s ease both;\n  }\n#abjRegApp .hero-band p {\n    margin:0 auto;\n    animation:heroIn .6s .1s ease both;\n  }\n#abjRegApp .hero-badge {\n    display:inline-block; font-family:'Trirong',serif; font-weight:500;\n    border:1px solid rgba(255,232,190,.55);\n\n        animation:heroIn .6s ease both;\n  }\n@keyframes heroIn { from{opacity:0; transform:translateY(10px)} to{opacity:1; transform:none} }\n#abjRegApp \/* \u2500\u2500\u2500 \u0e42\u0e04\u0e23\u0e07\u0e2b\u0e25\u0e31\u0e01 \u2500\u2500\u2500 *\/\n  .main-wrap { margin:0 auto; }\n#abjRegApp .mode-switch {\n    display:grid; grid-template-columns:1fr 1fr;\n  }\n#abjRegApp .mode-switch button {\n    padding:10px 12px; border:0; background:transparent;\n    color:var(--text-mid); font-family:'Sarabun',sans-serif; cursor:pointer;\n  }\n\n#abjRegApp .mode-switch button:focus-visible { outline:3px solid #F3B1CE; outline-offset:2px; }\n#abjRegApp .mode-panel[hidden] { display:none !important; }\n#abjRegApp .form-progress {\n    position:sticky; z-index:20; display:grid; grid-template-columns:repeat(4,1fr);\n  }\n#abjRegApp .progress-step {\n    min-width:0; border:0;\n    font-family:'Sarabun',sans-serif; cursor:pointer;\n  }\n#abjRegApp .progress-step .step-no {\n    display:inline-flex; align-items:center; justify-content:center;\n  }\n\/* \u0e0a\u0e37\u0e48\u0e2d\u0e02\u0e31\u0e49\u0e19\u0e15\u0e2d\u0e19\u0e22\u0e32\u0e27\u0e01\u0e27\u0e48\u0e32\u0e04\u0e27\u0e32\u0e21\u0e01\u0e27\u0e49\u0e32\u0e07\u0e0a\u0e48\u0e2d\u0e07 \u0e43\u0e2b\u0e49\u0e02\u0e36\u0e49\u0e19\u0e1a\u0e23\u0e23\u0e17\u0e31\u0e14\u0e43\u0e2b\u0e21\u0e48\u0e41\u0e17\u0e19\u0e01\u0e32\u0e23\u0e15\u0e31\u0e14\u0e04\u0e33\u0e14\u0e49\u0e27\u0e22 \u2026 (Thai \u0e15\u0e31\u0e14\u0e17\u0e35\u0e48 \"\/\" \u0e44\u0e14\u0e49\u0e1e\u0e2d\u0e14\u0e35) *\/\n#abjRegApp .progress-step span:last-child { display:block; white-space:normal; overflow-wrap:break-word; }\n\n#abjRegApp .progress-step:focus-visible { outline:3px solid #F3B1CE; outline-offset:1px; }\n#abjRegApp \/* \u2500\u2500\u2500 Card \u2500\u2500\u2500 *\/\n  .card {\n    position:relative;\n    overflow:hidden;\n              }\n#abjRegApp .card:nth-of-type(2) { animation-delay:.05s }\n#abjRegApp .card:nth-of-type(3) { animation-delay:.1s }\n#abjRegApp .card:nth-of-type(4) { animation-delay:.15s }\n#abjRegApp .card:nth-of-type(5) { animation-delay:.2s }\n#abjRegApp .card:nth-of-type(6) { animation-delay:.25s }\n#abjRegApp .card:nth-of-type(7) { animation-delay:.3s }\n@keyframes rise { from{opacity:0; transform:translateY(16px)} to{opacity:1; transform:none} }\n@media (hover:hover) {\n#abjRegApp .card:hover { box-shadow:0 16px 44px rgba(173,73,112,.13), 0 3px 10px rgba(140,60,100,.08); transform:translateY(-2px); }\n}\n#abjRegApp .card::after {\n    content:\"\"; position:absolute; top:0; left:0; right:0;\n    background:linear-gradient(90deg, #F8C2D7 0%, var(--mcru-light) 45%, var(--mcru) 100%);\n    opacity:.85;\n  }\n#abjRegApp .card-header {\n                display:flex; align-items:center;\n  }\n#abjRegApp .card-header-icon {\n    flex-shrink:0;\n        display:flex; align-items:center; justify-content:center;\n      }\n#abjRegApp .card-header-icon svg { stroke:#fff; fill:none; stroke-width:2; }\n\n#abjRegApp \/* \u2500\u2500\u2500 \u0e1f\u0e2d\u0e23\u0e4c\u0e21 \u2500\u2500\u2500 *\/\n  .form-grid { display:grid; grid-template-columns:repeat(auto-fit, minmax(min(100%, 240px), 1fr)); }\n#abjRegApp .form-grid .span-2 { grid-column:1\/-1; }\n\n#abjRegApp .field-help { font-size:13px; color:var(--text-muted); margin-top:6px; display:none; }\n#abjRegApp .hidden { display:none !important; }\n#abjRegApp .note-secondary { font-size:14px; color:var(--text-mid); line-height:1.7; }\n#abjRegApp input[readonly] { cursor:not-allowed; }\n#abjRegApp #passportInput, #abjRegApp #visaExpiryInput, #abjRegApp #tm30Input,\n#abjRegApp #photoCameraInput, #abjRegApp #passportCameraInput,\n#abjRegApp #visaExpiryCameraInput, #abjRegApp #tm30CameraInput { display:none; }\n\n#abjRegApp .card-gap-top { margin-top:18px; }\n#abjRegApp .icon-shrink { flex-shrink:0; }\n\n#abjRegApp .field input, #abjRegApp .field select, #abjRegApp .field textarea {\n    width:100%;\n    font-family:'Sarabun',sans-serif;\n  }\n\n#abjRegApp .birthdate-grid.invalid, #abjRegApp .photo-upload-wrap.invalid, #abjRegApp .consent-check.invalid { border:1.5px solid #B42318; border-radius:13px; padding:8px; }\n#abjRegApp .field-error { display:block; font-size:13px; line-height:1.45; }\n\/* \u0e43\u0e19 .birthdate-grid \u0e02\u0e49\u0e2d\u0e04\u0e27\u0e32\u0e21 error \u0e40\u0e1b\u0e47\u0e19\u0e44\u0e2d\u0e40\u0e17\u0e21\u0e02\u0e2d\u0e07 grid \u0e15\u0e49\u0e2d\u0e07\u0e43\u0e2b\u0e49\u0e01\u0e34\u0e19\u0e40\u0e15\u0e47\u0e21\u0e41\u0e16\u0e27 \u0e44\u0e21\u0e48\u0e07\u0e31\u0e49\u0e19\u0e08\u0e30\u0e16\u0e39\u0e01\u0e1a\u0e35\u0e1a\u0e2d\u0e22\u0e39\u0e48\u0e04\u0e2d\u0e25\u0e31\u0e21\u0e19\u0e4c\u0e41\u0e23\u0e01 *\/\n#abjRegApp .birthdate-grid .field-error { grid-column:1\/-1; }\n\/* .consent-check \u0e40\u0e1b\u0e47\u0e19 flex \u0e40\u0e0a\u0e48\u0e19\u0e01\u0e31\u0e19 \u2014 \u0e43\u0e2b\u0e49\u0e02\u0e49\u0e2d\u0e04\u0e27\u0e32\u0e21 error \u0e15\u0e01\u0e1a\u0e23\u0e23\u0e17\u0e31\u0e14\u0e43\u0e2b\u0e21\u0e48\u0e40\u0e15\u0e47\u0e21\u0e04\u0e27\u0e32\u0e21\u0e01\u0e27\u0e49\u0e32\u0e07 \u0e44\u0e21\u0e48\u0e16\u0e39\u0e01\u0e40\u0e1a\u0e35\u0e22\u0e14\u0e02\u0e49\u0e32\u0e07\u0e0a\u0e48\u0e2d\u0e07\u0e15\u0e34\u0e4a\u0e01\n   \u0e02\u0e49\u0e2d\u0e04\u0e27\u0e32\u0e21\u0e22\u0e34\u0e19\u0e22\u0e2d\u0e21\u0e15\u0e49\u0e2d\u0e07 flex:1 1 0 + min-width:0 \u0e44\u0e21\u0e48\u0e07\u0e31\u0e49\u0e19 flex-wrap \u0e08\u0e30\u0e14\u0e31\u0e19\u0e43\u0e2b\u0e49\u0e15\u0e01\u0e44\u0e1b\u0e43\u0e15\u0e49\u0e0a\u0e48\u0e2d\u0e07\u0e15\u0e34\u0e4a\u0e01\n   (\u0e02\u0e49\u0e2d\u0e04\u0e27\u0e32\u0e21\u0e44\u0e17\u0e22\u0e22\u0e32\u0e27\u0e2b\u0e32\u0e08\u0e38\u0e14\u0e15\u0e31\u0e14\u0e1a\u0e23\u0e23\u0e17\u0e31\u0e14\u0e44\u0e21\u0e48\u0e44\u0e14\u0e49 min-content \u0e08\u0e36\u0e07\u0e01\u0e27\u0e49\u0e32\u0e07\u0e40\u0e01\u0e34\u0e19) *\/\n#abjRegApp .consent-check { flex-wrap:wrap; }\n#abjRegApp #consentLabel { flex:1 1 0; min-width:0; }\n#abjRegApp .consent-check .field-error { flex:0 0 100%; }\n#abjRegApp .field select {\n    cursor:pointer; appearance:none;\n  }\n#abjRegApp .birthdate-grid { display:grid; grid-template-columns:.8fr 1.2fr 1fr; }\n\n#abjRegApp .monk-only { display:none; }\n#abjRegApp \/* \u2500\u2500\u2500 \u0e23\u0e39\u0e1b\u0e16\u0e48\u0e32\u0e22 \u2500\u2500\u2500 *\/\n  .photo-upload-wrap { flex-wrap:wrap; }\n\n#abjRegApp .photo-preview:hover { box-shadow:var(--shadow-sm); }\n#abjRegApp .photo-preview:focus-visible { outline:3px solid #F3B1CE; outline-offset:3px; border-color:var(--mcru-dark); }\n#abjRegApp .photo-preview img { width:100%; height:100%; object-fit:cover; display:none; }\n#abjRegApp .photo-preview-placeholder { text-align:center; color:var(--text-muted); font-size:12.5px; padding:8px; line-height:1.5; }\n#abjRegApp .photo-preview-placeholder svg { display:block; margin:0 auto 8px; width:32px; height:32px; stroke:var(--mcru); opacity:.6; fill:none; stroke-width:1.5; }\n#abjRegApp .photo-upload-info p { font-size:14px; color:var(--text-mid); line-height:1.7; }\n#abjRegApp .btn-upload {\n    display:inline-block; min-height:44px;\n\n    border:1.5px solid #F4C2D6; cursor:pointer;\n      }\n\n#abjRegApp .btn-photo-remove { display:inline-block; border:1px solid var(--border-md); cursor:pointer; }\n#abjRegApp .btn-photo-remove[hidden] { display:none; }\n#abjRegApp #photoInput { display:none; }\n#abjRegApp .document-upload-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); }\n#abjRegApp .foreign-docs-panel { display:contents; }\n#abjRegApp .document-upload-tile { min-width:0; }\n\n#abjRegApp .upload-tile-head { display:flex; gap:9px; }\n#abjRegApp .upload-step-no { display:inline-flex; flex:0 0 28px; align-items:center; justify-content:center; color:#fff; font-weight:800; }\n#abjRegApp .upload-tile-title { flex:1; color:var(--text); line-height:1.45; }\n#abjRegApp .required-chip { flex:0 0 auto; font-weight:800; line-height:1.4; }\n#abjRegApp .upload-tile-body { display:flex; align-items:flex-start; gap:13px; }\n#abjRegApp .document-upload-tile .photo-preview, #abjRegApp .doc-preview { width:96px; height:118px; flex:0 0 96px; overflow:hidden; display:flex; align-items:center; justify-content:center; cursor:pointer; }\n#abjRegApp .doc-preview:hover, #abjRegApp .doc-preview:focus-visible { border-color:var(--mcru); background:var(--mcru-light); outline:none; }\n#abjRegApp .doc-preview img { width:100%; height:100%; object-fit:cover; display:none; }\n#abjRegApp .doc-placeholder { padding:8px; text-align:center; color:var(--text-muted); font-size:11.5px; line-height:1.35; }\n#abjRegApp .doc-placeholder svg { display:block; width:28px; height:28px; margin:0 auto 6px; stroke:var(--mcru); fill:none; stroke-width:1.5; opacity:.7; }\n#abjRegApp .upload-tile-info { flex:1; min-width:0; }\n#abjRegApp .doc-guidance { min-height:42px; color:var(--text-mid); font-size:12.5px; line-height:1.5; }\n#abjRegApp .upload-actions { display:flex; flex-wrap:wrap; align-items:center; gap:7px; margin-top:9px; }\n\/* \u0e1b\u0e38\u0e48\u0e21 \"\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e44\u0e1f\u0e25\u0e4c\" \u0e01\u0e31\u0e1a \"\u0e16\u0e48\u0e32\u0e22\u0e20\u0e32\u0e1e\" \u0e41\u0e1a\u0e48\u0e07\u0e04\u0e23\u0e36\u0e48\u0e07\u0e41\u0e16\u0e27 \u2014 \u0e44\u0e21\u0e48\u0e43\u0e2b\u0e49\u0e1b\u0e38\u0e48\u0e21\u0e0b\u0e49\u0e2d\u0e19\u0e01\u0e31\u0e19\u0e2a\u0e39\u0e07\u0e40\u0e01\u0e34\u0e19\u0e44\u0e1b *\/\n#abjRegApp .document-upload-tile .btn-upload { flex:1 1 calc(50% - 4px); width:auto; min-width:0; margin:0; padding:9px 12px; text-align:center; font-size:12.5px; }\n\n#abjRegApp .document-upload-tile .btn-photo-remove { width:100%; min-height:38px; margin:0; padding:7px 10px; font-size:12px; }\n#abjRegApp .document-upload-tile .field-help { display:none; margin-top:7px; color:#18733b; font-size:12px; font-weight:700; overflow-wrap:anywhere; }\n#abjRegApp .upload-summary { margin-bottom:16px; }\n#abjRegApp .upload-summary-row { display:flex; justify-content:space-between; gap:12px; color:var(--text-mid); font-size:13.5px; font-weight:700; }\n#abjRegApp .upload-summary-count { color:var(--mcru-dark); }\n#abjRegApp .upload-summary-track { margin-top:9px; overflow:hidden; border-radius:999px; }\n#abjRegApp .upload-summary-bar { display:block; width:0; height:100%; border-radius:inherit; }\n\n#abjRegApp .review-doc-list { display:grid; gap:7px; margin:10px 0 16px; }\n#abjRegApp .review-doc-item { display:flex; justify-content:space-between; gap:12px; padding:9px 11px; font-size:13px; }\n#abjRegApp .review-doc-ok { font-weight:800; }\n#abjRegApp .review-doc-missing { font-weight:800; }\n@media(max-width:600px) {\n  #abjRegApp .document-upload-grid { grid-template-columns:1fr; }\n  #abjRegApp .upload-tile-body { gap:11px; }\n  #abjRegApp .document-upload-tile .photo-preview, #abjRegApp .doc-preview { width:88px; height:108px; flex-basis:88px; }\n  #abjRegApp .document-upload-tile .btn-upload, #abjRegApp .document-upload-tile .btn-photo-remove { min-height:44px; }\n}\n#abjRegApp \/* \u2500\u2500\u2500 \u0e22\u0e34\u0e19\u0e22\u0e2d\u0e21 \/ \u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e2a\u0e33\u0e04\u0e31\u0e0d \u2500\u2500\u2500 *\/\n  .consent-box {\n    color:var(--text-mid); margin-bottom:14px;\n  }\n#abjRegApp .consent-check { display:flex; align-items:flex-start; font-size:15px; cursor:pointer; user-select:none; }\n\n#abjRegApp .consent-check input[type=\"checkbox\"] { flex-shrink:0; margin-top:2px; cursor:pointer; }\n#abjRegApp .payment-note { margin-top:0; }\n#abjRegApp .payment-note p { line-height:1.7; }\n#abjRegApp \/* \u2500\u2500\u2500 \u0e1b\u0e38\u0e48\u0e21\u0e2a\u0e48\u0e07 \u2500\u2500\u2500 *\/\n  .btn-submit {\n    position:relative; overflow:hidden; width:100%; padding:clamp(16px,4vw,19px);\n        border:none;\n    font-weight:500;\n    cursor:pointer;\n      }\n\n#abjRegApp .btn-submit:focus-visible { outline:3px solid var(--gold); outline-offset:3px; }\n#abjRegApp .btn-submit:disabled { background:var(--text-muted); box-shadow:none; cursor:not-allowed; filter:none; }\n\/* \u0e1b\u0e38\u0e48\u0e21\u0e04\u0e31\u0e14\u0e25\u0e2d\u0e01\u0e23\u0e2b\u0e31\u0e2a\u0e2d\u0e22\u0e39\u0e48\u0e43\u0e19 popup \u0e02\u0e2d\u0e07 SweetAlert \u0e0b\u0e36\u0e48\u0e07 render \u0e17\u0e35\u0e48 document.body (\u0e19\u0e2d\u0e01 #abjRegApp)\n   \u0e08\u0e36\u0e07\u0e15\u0e49\u0e2d\u0e07\u0e44\u0e21\u0e48 scope \u0e14\u0e49\u0e27\u0e22 #abjRegApp \u2014 \u0e40\u0e0a\u0e48\u0e19\u0e40\u0e14\u0e35\u0e22\u0e27\u0e01\u0e31\u0e1a .code-display \u0e14\u0e49\u0e32\u0e19\u0e25\u0e48\u0e32\u0e07 *\/\n.copy-code-btn { min-height:44px; margin-top:10px; padding:10px 20px; border:0; border-radius:999px; background:#8E2A57; color:#fff; font-family:'Sarabun',sans-serif; font-size:14.5px; font-weight:700; cursor:pointer; }\n.copy-code-btn:focus-visible { outline:3px solid #F3B1CE; outline-offset:2px; }\n#abjRegApp .note { color:var(--text-muted); text-align:center; line-height:1.7; }\n\n#abjRegApp .check-section .card-header-icon { background:linear-gradient(140deg,#96405C,var(--mcru-dark)); }\n#abjRegApp .check-input-row { display:flex; flex-wrap:wrap; gap:10px; }\n#abjRegApp .check-input-row input {\n    flex:1 1 200px; min-width:0;\n    font-family:'Sarabun',sans-serif;\n\n        text-transform:uppercase;\n  }\n\n\/* \u0e0a\u0e48\u0e2d\u0e07\u0e01\u0e23\u0e2d\u0e01\u0e23\u0e2b\u0e31\u0e2a\u0e2d\u0e22\u0e39\u0e48\u0e04\u0e19\u0e25\u0e30\u0e01\u0e25\u0e48\u0e2d\u0e07\u0e01\u0e31\u0e1a .check-input-row \u0e08\u0e36\u0e07\u0e15\u0e49\u0e2d\u0e07\u0e01\u0e33\u0e2b\u0e19\u0e14\u0e2a\u0e44\u0e15\u0e25\u0e4c\u0e23\u0e2b\u0e31\u0e2a\u0e43\u0e2b\u0e49\u0e40\u0e2d\u0e07 *\/\n#abjRegApp #checkCodeInput { text-transform:uppercase; }\n#abjRegApp .btn-check {\n    flex-shrink:0; padding:clamp(13px,3.2vw,15px) 26px;\n\n    border:none;\n    font-family:'Mitr',sans-serif; font-weight:500; cursor:pointer;\n    transition:filter .2s, transform .15s, box-shadow .2s;\n      }\n\n#abjRegApp .btn-check:active { transform:scale(.98); }\n#abjRegApp .btn-check:disabled { background:var(--text-muted); box-shadow:none; cursor:not-allowed; filter:none; }\n\n#abjRegApp .check-result.found { border:1.5px solid #f9c8db; }\n#abjRegApp .check-result.not-found { border:1.5px solid #f7b6cc; }\n#abjRegApp .check-result-row { display:flex; gap:10px; border-bottom:1px solid rgba(0,0,0,.06); }\n#abjRegApp .check-result-row:last-child { border-bottom:none; }\n#abjRegApp .check-result-label { font-weight:700; min-width:120px; flex-shrink:0; }\n#abjRegApp .check-result-value { color:inherit; }\n#abjRegApp .check-result-code { display:inline-block; padding:4px 16px; background:#fff0f7; border:1.5px solid #f7b7d1; font-family:'Courier New',monospace; font-size:20px; font-weight:700; letter-spacing:.08em; color:#8e2a57; margin:8px 0 4px; }\n#abjRegApp .check-result { margin-top:16px; font-size:14.5px; display:none; animation:rise .35s ease both; }\n#abjRegApp .divider-text { text-align:center; color:var(--text-muted); font-size:14px; margin:26px 0 10px; position:relative; }\n#abjRegApp .divider-text::before, #abjRegApp .divider-text::after {\n    content:\"\"; display:inline-block; width:26%; height:1px; vertical-align:middle; margin:0 12px;\n    background:linear-gradient(90deg, transparent, var(--border-md));\n  }\n#abjRegApp .divider-text::after { background:linear-gradient(90deg, var(--border-md), transparent); }\n#abjRegApp \/* \u2500\u2500\u2500 Modal \u0e2a\u0e23\u0e38\u0e1b\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25 \u2500\u2500\u2500 *\/\n  .review-overlay {\n    display:none; position:fixed; inset:0; z-index:100000;\n\n    align-items:center; justify-content:center; padding:12px; overflow-y:auto;\n  }\n#abjRegApp .review-overlay.open { display:flex; }\n#abjRegApp .review-modal {\n    background:#fff; max-width:600px; width:100%;\n    max-height:90dvh; overflow-y:auto;\n    animation:slideUp .28s ease;\n  }\n@keyframes slideUp { from{transform:translateY(34px);opacity:0} to{transform:translateY(0);opacity:1} }\n#abjRegApp .review-modal-header {\n    position:relative; overflow:hidden;\n        color:#fff;\n    display:flex; align-items:center; gap:12px;\n  }\n#abjRegApp .review-modal-header::after {\n    content:\"\"; position:absolute; left:0; right:0; bottom:0; height:2px;\n    background:linear-gradient(90deg, transparent, var(--gold), transparent);\n  }\n#abjRegApp .review-modal-header h3 { font-weight:500; }\n#abjRegApp .review-modal-header p { font-size:13px; opacity:.9; margin-top:2px; }\n#abjRegApp .review-modal-body { padding:20px 24px; }\n#abjRegApp .review-section-title { font-family:'Mitr',sans-serif; font-weight:500; color:var(--mcru-mid); text-transform:uppercase; margin:18px 0 8px; padding-bottom:6px; border-bottom:2px solid var(--mcru-light); }\n#abjRegApp .review-section-title:first-child { margin-top:0; }\n#abjRegApp .review-row { display:flex; gap:10px; font-size:14.5px; border-bottom:1px solid var(--border); }\n#abjRegApp .review-row:last-child { border-bottom:none; }\n#abjRegApp .review-lbl { font-weight:600; color:var(--text-mid); min-width:130px; flex-shrink:0; }\n#abjRegApp .review-val { color:var(--text); flex:1; word-break:break-word; }\n#abjRegApp .review-photo-wrap { text-align:center; margin:10px 0; }\n#abjRegApp .review-photo-wrap img { width:90px; height:108px; object-fit:cover; border-radius:12px; border:2px solid var(--border-md); box-shadow:var(--shadow-sm); }\n#abjRegApp .review-modal-footer {\n    padding:16px 24px calc(20px + env(safe-area-inset-bottom)); display:flex;\n    border-top:1px solid var(--border); position:sticky; bottom:0; background:#fff;\n    box-shadow:0 -6px 18px rgba(120,30,80,.05);\n  }\n#abjRegApp .btn-review-back {\n    flex:1; padding:14px; color:var(--text-mid);\n    border:none;\n    font-family:'Mitr',sans-serif; font-weight:500; cursor:pointer; transition:background .2s;\n  }\n\n#abjRegApp .btn-review-confirm {\n    flex:2; padding:14px;\n\n    border:none;\n    font-family:'Mitr',sans-serif; font-weight:500; cursor:pointer;\n    transition:filter .2s, transform .15s;\n  }\n#abjRegApp .btn-review-confirm:hover { filter:brightness(1.06); }\n#abjRegApp .btn-review-confirm:active { transform:scale(.98); }\n#abjRegApp .btn-review-confirm:disabled { background:var(--text-muted); box-shadow:none; cursor:not-allowed; filter:none; }\n#abjRegApp .line-btn { display:inline-flex; align-items:center; gap:8px; border:none; border-radius:999px; font-size:15px; text-decoration:none; transition:filter .2s, transform .15s, box-shadow .2s; cursor:pointer; }\n#abjRegApp .line-btn:hover { filter:brightness(1.08); box-shadow:0 6px 18px rgba(6,199,85,.4); }\n#abjRegApp .line-btn:active { transform:scale(.97); }\n.code-display { display:inline-block; margin:12px 0; padding:12px 28px; background:linear-gradient(160deg,#FFE1EE,#fff); color:#8E2A57; border:2px solid #F3BBD3; font-size:24px; font-weight:700; letter-spacing:.08em; font-family:'Courier New',monospace; box-shadow:0 1px 3px rgba(170,70,110,.08); }\n\/* \u2500\u2500\u2500 Mobile \u2500\u2500\u2500 *\/\n\/* \u0e2b\u0e21\u0e32\u0e22\u0e40\u0e2b\u0e15\u0e38: @media \u0e40\u0e1b\u0e47\u0e19 at-rule \u0e08\u0e30\u0e27\u0e32\u0e07\u0e15\u0e48\u0e2d\u0e17\u0e49\u0e32\u0e22 selector (#abjRegApp @media{\u2026}) \u0e44\u0e21\u0e48\u0e44\u0e14\u0e49\n   \u0e40\u0e1a\u0e23\u0e32\u0e27\u0e4c\u0e40\u0e0b\u0e2d\u0e23\u0e4c\u0e08\u0e30 parse selector \u0e44\u0e21\u0e48\u0e1c\u0e48\u0e32\u0e19\u0e41\u0e25\u0e49\u0e27\u0e17\u0e34\u0e49\u0e07\u0e17\u0e31\u0e49\u0e07\u0e1a\u0e25\u0e47\u0e2d\u0e01 \u0e08\u0e36\u0e07\u0e15\u0e49\u0e2d\u0e07\u0e40\u0e1b\u0e34\u0e14 @media \u0e17\u0e35\u0e48\u0e23\u0e30\u0e14\u0e31\u0e1a\u0e1a\u0e19\u0e2a\u0e38\u0e14\n   \u0e41\u0e25\u0e49\u0e27\u0e43\u0e2a\u0e48 #abjRegApp \u0e19\u0e33\u0e2b\u0e19\u0e49\u0e32\u0e17\u0e35\u0e25\u0e30 selector \u2014 \u0e22\u0e01\u0e40\u0e27\u0e49\u0e19\u0e02\u0e2d\u0e07 SweetAlert \u0e17\u0e35\u0e48 render \u0e19\u0e2d\u0e01 #abjRegApp *\/\n@media(max-width:640px) {\n    #abjRegApp .form-grid { grid-template-columns:1fr; }\n    #abjRegApp .form-grid .span-2 { grid-column:1; }\n\n    #abjRegApp .card:hover { transform:none; }\n    #abjRegApp .field label .opt { display:block; margin-top:1px; }\n    #abjRegApp .check-input-row { flex-direction:column; }\n    \/* \u0e41\u0e19\u0e27\u0e15\u0e31\u0e49\u0e07: flex-basis \u0e08\u0e30\u0e01\u0e25\u0e32\u0e22\u0e40\u0e1b\u0e47\u0e19\u0e04\u0e27\u0e32\u0e21\u0e2a\u0e39\u0e07 \u0e17\u0e33\u0e43\u0e2b\u0e49\u0e0a\u0e48\u0e2d\u0e07\u0e01\u0e23\u0e2d\u0e01\u0e2a\u0e39\u0e07\u0e1c\u0e34\u0e14\u0e1b\u0e01\u0e15\u0e34 *\/\n    #abjRegApp .check-input-row input { flex:0 0 auto; width:100%; }\n    #abjRegApp .btn-check { width:100%; }\n\n    \/* Review modal \u2192 bottom sheet *\/\n    #abjRegApp .review-overlay { align-items:flex-end; padding:0; }\n    #abjRegApp .review-modal { max-width:100%; max-height:92dvh; animation:sheetUp .3s ease; }\n    @keyframes sheetUp { from{transform:translateY(100%)} to{transform:translateY(0)} }\n\n    #abjRegApp .review-row { flex-direction:column; gap:2px; }\n    #abjRegApp .review-lbl { min-width:auto; }\n    .swal2-popup { width:94% !important; padding:20px 16px !important; }\n    .swal2-title { font-size:17px !important; }\n    .swal2-html-container { font-size:13.5px !important; }\n    .code-display { word-break:break-all; }\n  }\n@media(max-width:430px) {\n#abjRegApp .photo-upload-info p { font-size:13.5px; line-height:1.6; }\n\n#abjRegApp .review-modal-body { padding:14px 16px; }\n#abjRegApp .review-modal-footer { padding:12px 16px calc(16px + env(safe-area-inset-bottom)); }\n}\n@media(max-width:360px) {\n#abjRegApp .photo-upload-wrap { gap:8px; }\n}\n@media(max-height:480px) and (orientation:landscape) {\n#abjRegApp .hero-band { padding-top:14px; padding-bottom:12px; }\n#abjRegApp .card { margin-bottom:10px; }\n#abjRegApp .review-overlay { align-items:center; padding:10px; }\n}\n.swal2-popup { font-family:'Sarabun',sans-serif !important; }\n.swal2-title { font-family:'Mitr',sans-serif !important; font-size:21px !important; font-weight:500 !important; color:#3A1D32 !important; }\n.swal2-html-container { font-size:15.5px !important; color:#6A4C66 !important; line-height:1.75 !important; }\n\n\/* \u2500\u2500\u2500 \u0e01\u0e31\u0e19\u0e2a\u0e44\u0e15\u0e25\u0e4c\u0e18\u0e35\u0e21 WordPress \u0e23\u0e1a\u0e01\u0e27\u0e19 \u2500\u2500\u2500 *\/\n\n#abjRegApp * { text-indent:0; }\n#abjRegApp .field label, #abjRegApp .photo-upload-info p, #abjRegApp .note { white-space:normal; overflow:visible; }\n#abjRegApp { font-family:'Sarabun',sans-serif; font-size:17px; line-height:1.75; }\n#abjRegApp input, #abjRegApp select, #abjRegApp textarea, #abjRegApp button {\n  font-family:'Sarabun',sans-serif; box-shadow:none; text-transform:none; letter-spacing:normal;\n}\n#abjRegApp img { max-width:100%; border:0; box-shadow:none; }\n\n#abjRegApp h2, #abjRegApp h3 { margin:0; padding:0; border:0; }\n\n.swal2-container { z-index:100001 !important; }\n\n\/* \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n   \u0e17\u0e31\u0e1a\u0e0a\u0e31\u0e49\u0e19 1 \u2014 \u0e42\u0e04\u0e23\u0e07\u0e2b\u0e19\u0e49\u0e32\u0e41\u0e1a\u0e1a\u0e43\u0e2b\u0e21\u0e48\n   \u0e22\u0e49\u0e32\u0e22\u0e41\u0e16\u0e1a\u0e20\u0e32\u0e29\u0e32\u0e44\u0e1b\u0e25\u0e2d\u0e22\u0e1a\u0e19 hero, \u0e01\u0e32\u0e23\u0e4c\u0e14\u0e40\u0e25\u0e37\u0e48\u0e2d\u0e19\u0e02\u0e36\u0e49\u0e19\u0e17\u0e31\u0e1a hero, \u0e1b\u0e23\u0e31\u0e1a field\n   \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 *\/\n\n#abjRegApp {\n  position:relative;\n  }\n#abjRegApp .lang-bar {\n  position:absolute; z-index:4; right:max(16px,env(safe-area-inset-right));\n}\n\n#abjRegApp .lang-bar button + button { margin-left:0; }\n#abjRegApp .hero-band {\n  display:flex; flex-direction:column; align-items:center; justify-content:center;\n  isolation:isolate;\n}\n\n#abjRegApp .main-wrap { padding:0 clamp(12px,3vw,24px) calc(72px + env(safe-area-inset-bottom)); }\n#abjRegApp .mode-switch { position:relative; z-index:3; margin-bottom:16px; }\n\n#abjRegApp .form-progress { margin-bottom:22px; }\n\n#abjRegApp .card::after { height:0; }\n\n#abjRegApp .consent-box { border:1px solid #EBD6DF; }\n\n#abjRegApp .btn-submit::after { content:\"\"; position:absolute; inset:0; background:linear-gradient(110deg,transparent 30%,rgba(255,255,255,.14) 50%,transparent 70%); transform:translateX(-120%); transition:transform .55s ease; }\n#abjRegApp .btn-submit:hover::after { transform:translateX(120%); }\n#abjRegApp .check-section { margin-top:0; }\n\n#abjRegApp .review-modal { border:1px solid rgba(255,255,255,.45); }\n\n\/* \u2500\u2500\u2500 Field polish \u2500\u2500\u2500 *\/\n#abjRegApp .field { position:relative; min-width:0; }\n#abjRegApp .field label {\n  display:flex; align-items:center; gap:5px; min-height:24px;\n  transition:color .18s ease,transform .18s ease;\n}\n\n#abjRegApp .field label .req {\n  display:inline-flex;\n  align-items:center; justify-content:center;\n  font-weight:800; line-height:1;\n}\n#abjRegApp .field label .opt {\n  margin-left:auto;\n  line-height:1.55;\n}\n#abjRegApp .field input,#abjRegApp .field select,#abjRegApp .field textarea {\n  caret-color:#A72F63; outline:none;\n  }\n#abjRegApp .field input::placeholder,#abjRegApp .field textarea::placeholder { opacity:1; }\n\n#abjRegApp .field select:disabled {\n  color:#9A8991; cursor:not-allowed; opacity:1;\n  background-image:none;\n}\n\n#abjRegApp .field input:-webkit-autofill {\n  -webkit-text-fill-color:var(--text); -webkit-box-shadow:0 0 0 1000px #FFF9FC inset;\n  transition:background-color 9999s ease-out;\n}\n#abjRegApp .field input[aria-invalid=\"true\"],#abjRegApp .field select[aria-invalid=\"true\"] {\n  padding-right:42px;\n  background-repeat:no-repeat; background-position:right 16px center;\n}\n\n\/* select \u0e15\u0e49\u0e2d\u0e07\u0e04\u0e07\u0e25\u0e39\u0e01\u0e28\u0e23 dropdown \u0e44\u0e27\u0e49 \u2014 \u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19\u0e40\u0e1b\u0e47\u0e19\u0e2a\u0e35\u0e41\u0e14\u0e07\u0e41\u0e17\u0e19\u0e01\u0e32\u0e23\u0e17\u0e31\u0e1a\u0e14\u0e49\u0e27\u0e22\u0e08\u0e38\u0e14 \u0e44\u0e21\u0e48\u0e07\u0e31\u0e49\u0e19\u0e0a\u0e48\u0e2d\u0e07\u0e17\u0e35\u0e48\u0e1c\u0e34\u0e14\u0e08\u0e30\u0e14\u0e39\u0e40\u0e2b\u0e21\u0e37\u0e2d\u0e19\u0e44\u0e21\u0e48\u0e43\u0e0a\u0e48 dropdown *\/\n\n#abjRegApp .field-error {\n  position:relative; padding-left:19px; margin-top:8px; font-weight:650;\n}\n#abjRegApp .field-error::before {\n  content:\"!\"; position:absolute; left:0; top:1px; width:14px; height:14px; border-radius:50%;\n  display:flex; align-items:center; justify-content:center; color:#fff;\n  font-size:10px; font-weight:800; line-height:1;\n}\n#abjRegApp .birthdate-grid {\n  transition:border-color .18s ease,box-shadow .18s ease,background .18s ease;\n}\n\n#abjRegApp .birthdate-grid select:focus,#abjRegApp .birthdate-grid input:focus { transform:none; border:0; }\n#abjRegApp #phone,#abjRegApp #postalCode,#abjRegApp #checkPhoneInput { font-variant-numeric:tabular-nums; letter-spacing:.045em; }\n#abjRegApp #checkCodeInput { font-family:'Courier New',monospace; font-weight:700; letter-spacing:.12em; }\n#abjRegApp .check-section .field { margin-bottom:18px; }\n#abjRegApp .check-section .field:last-of-type { margin-bottom:0; }\n#abjRegApp .check-input-row { align-items:stretch; }\n\n#abjRegApp .field-help:not(:empty) {\n  display:block;\n  line-height:1.55;\n}\n@media(max-width:640px) {\n  #abjRegApp .lang-bar { right:10px; }\n\n  #abjRegApp .field label { flex-wrap:wrap; }\n  #abjRegApp .field label .opt { margin-left:0; }\n  #abjRegApp .birthdate-grid { grid-template-columns:.72fr 1.18fr 1fr; }\n}\n\n\/* \u2500\u2500 \u0e17\u0e31\u0e1a\u0e0a\u0e31\u0e49\u0e19 2 \u2014 \u0e40\u0e2b\u0e25\u0e37\u0e2d\u0e1c\u0e25\u0e41\u0e04\u0e48\u0e23\u0e30\u0e22\u0e30\u0e1b\u0e49\u0e32\u0e22 * \u0e41\u0e25\u0e30\u0e01\u0e32\u0e23\u0e1b\u0e34\u0e14\u0e40\u0e07\u0e32\u0e1b\u0e38\u0e48\u0e21\u0e2d\u0e31\u0e1b\u0e42\u0e2b\u0e25\u0e14 \u2500\u2500 *\/\n\n#abjRegApp .field label .req {\n  margin-left:1px;\n}\n\n#abjRegApp .btn-upload,#abjRegApp .btn-camera,#abjRegApp .btn-photo-remove {\n  box-shadow:none;\n}\n\n\/* \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n   \u0e17\u0e31\u0e1a\u0e0a\u0e31\u0e49\u0e19 3 \u2014 \u0e1f\u0e2d\u0e19\u0e15\u0e4c Mitr, \u0e17\u0e23\u0e07\u0e1b\u0e49\u0e32\u0e22 * \/ (\u0e44\u0e21\u0e48\u0e1a\u0e31\u0e07\u0e04\u0e31\u0e1a), \u0e1b\u0e38\u0e48\u0e21\u0e2d\u0e31\u0e1b\u0e42\u0e2b\u0e25\u0e14,\n   \u0e21\u0e38\u0e21\u0e42\u0e04\u0e49\u0e07 --radius, \u0e41\u0e2d\u0e19\u0e34\u0e40\u0e21\u0e0a\u0e31\u0e19\u0e01\u0e32\u0e23\u0e4c\u0e14, \u0e1b\u0e23\u0e30\u0e01\u0e32\u0e22 ::after \u0e1a\u0e19\u0e1b\u0e38\u0e48\u0e21\u0e2a\u0e48\u0e07\n   \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 *\/\n#abjRegApp {\n        --radius:22px; --radius-sm:13px;\n}\n\n#abjRegApp .hero-band::before {\n  opacity:.8;\n}\n#abjRegApp .hero-band::after { height:4px; }\n#abjRegApp .hero-badge {\n  backdrop-filter:blur(8px);\n}\n#abjRegApp .hero-band h2 { font-family:'Mitr',sans-serif; font-weight:500; }\n\n#abjRegApp .card {\n  animation:rise .48s ease both;\n}\n#abjRegApp .card:hover { transform:translateY(-1px); }\n\n#abjRegApp .card-header-icon {\n  border:0;\n}\n#abjRegApp .card-header h3 { font-family:'Mitr',sans-serif; font-weight:500; }\n\n#abjRegApp .field label { color:#503D47; }\n\n#abjRegApp .field label .req { width:17px; height:17px; border-radius:50%; font-size:12px; }\n#abjRegApp .field label .opt { border-radius:999px; background:#F7F1F4; color:#806C76; }\n\n#abjRegApp .upload-step-no { border-radius:50%; }\n\n#abjRegApp .btn-upload,#abjRegApp .btn-photo-remove { background:#FFF1F7; border-color:#E3BACD; color:#722043; }\n\n#abjRegApp .btn-submit {\n  font-family:'Mitr',sans-serif;\n}\n#abjRegApp .btn-submit::after { display:block; }\n\n#abjRegApp .review-modal-header h3 { font-family:'Mitr',sans-serif; }\n\n\/* \u2500\u2500 \u0e17\u0e31\u0e1a\u0e0a\u0e31\u0e49\u0e19 4 \u2014 \u0e2a\u0e35\u0e02\u0e2d\u0e07\u0e2a\u0e16\u0e32\u0e19\u0e30\u0e01\u0e23\u0e2d\u0e01\u0e1c\u0e34\u0e14 \/ \u0e40\u0e2d\u0e01\u0e2a\u0e32\u0e23\u0e17\u0e35\u0e48\u0e22\u0e31\u0e07\u0e02\u0e32\u0e14 \u2500\u2500 *\/\n\n#abjRegApp .document-upload-tile.invalid { box-shadow:0 0 0 3px rgba(214,43,115,.13); }\n\n#abjRegApp .review-doc-missing { color:#C42670; }\n\n\/* \u2500\u2500 \u0e17\u0e31\u0e1a\u0e0a\u0e31\u0e49\u0e19 5 \u2014 \u0e15\u0e31\u0e14\u0e40\u0e07\u0e32\u0e02\u0e49\u0e2d\u0e04\u0e27\u0e32\u0e21\u0e2b\u0e31\u0e27\u0e40\u0e23\u0e37\u0e48\u0e2d\u0e07 hero \u2500\u2500 *\/\n\n#abjRegApp .hero-band h2 { text-shadow:none; }\n\n\/* \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n   \u0e17\u0e31\u0e1a\u0e0a\u0e31\u0e49\u0e19 6 \u2014 \u0e0a\u0e38\u0e14\u0e2a\u0e35\u0e41\u0e1a\u0e23\u0e19\u0e14\u0e4c\u0e17\u0e35\u0e48\u0e43\u0e0a\u0e49\u0e08\u0e23\u0e34\u0e07 (\u0e0a\u0e21\u0e1e\u0e39 #FF8DC2 \/ #8E2A57)\n   \u0e15\u0e31\u0e27\u0e41\u0e1b\u0e23\u0e2a\u0e35\u0e17\u0e31\u0e49\u0e07\u0e2b\u0e21\u0e14\u0e16\u0e39\u0e01\u0e01\u0e33\u0e2b\u0e19\u0e14\u0e04\u0e23\u0e31\u0e49\u0e07\u0e2a\u0e38\u0e14\u0e17\u0e49\u0e32\u0e22\u0e17\u0e35\u0e48\u0e19\u0e35\u0e48 \u0e41\u0e01\u0e49\u0e2a\u0e35\u0e43\u0e2b\u0e49\u0e41\u0e01\u0e49\u0e15\u0e23\u0e07\u0e19\u0e35\u0e49\n   \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 *\/\n#abjRegApp {\n  --mcru:#FF8DC2; --mcru-light:#FFE1EE; --mcru-mid:#DB5E95; --mcru-dark:#8E2A57;\n  --mcru-soft:#FFF1F7; --gold:#F7B7D1; --gold-light:#FDE7F0;\n  --cream:#FFF4F9; --surface:#FFFFFF; --border:#F9E4EE; --border-md:#F4C2D6;\n  --text:#3A1D32; --text-mid:#6A4C66; --text-muted:#765F6D;\n    --shadow-md:0 12px 36px rgba(219,94,149,.14);\n    --focus-ring:0 0 0 4px rgba(244,143,177,.30);\n}\n#abjRegApp {\n  color:var(--text);\n  background:\n    radial-gradient(1100px 560px at 88% -8%,rgba(251,223,234,.75) 0%,rgba(252,209,231,0) 60%),\n    radial-gradient(900px 520px at -12% 32%,rgba(254,240,246,.85) 0%,rgba(253,231,243,0) 55%),\n    linear-gradient(180deg,#FFF9FB 0%,#FDF3F7 100%);\n}\n#abjRegApp .hero-band {\n  color:#FFF;\n  background:linear-gradient(135deg,#A33B69 0%,var(--mcru-dark) 58%,#6E2743 100%);\n}\n\n#abjRegApp .hero-band::after {\n  background:linear-gradient(90deg,transparent,var(--gold) 22%,#EEDDBB 50%,var(--gold) 78%,transparent);\n}\n#abjRegApp .hero-band h2,#abjRegApp .hero-band p { color:#FFF; }\n#abjRegApp .hero-band p { opacity:.94; }\n#abjRegApp .hero-badge { color:#FFF; }\n\n#abjRegApp .mode-switch button.active {\n  border-color:var(--mcru-dark);\n  }\n#abjRegApp .mode-switch button:hover { color:var(--mcru-dark); background:var(--mcru-soft); }\n\n#abjRegApp .card-header-icon,\n#abjRegApp #cardPersonal .card-header-icon,\n#abjRegApp #cardAddress .card-header-icon,\n#abjRegApp #cardLocation .card-header-icon,\n#abjRegApp #cardPhoto .card-header-icon {\n  color:#FFF;\n  }\n#abjRegApp .card-header h3 { color:var(--mcru-dark); }\n#abjRegApp .field:focus-within > label { color:var(--mcru-dark); }\n\n#abjRegApp .field input,#abjRegApp .field select,#abjRegApp .field textarea { color:var(--text); }\n\n#abjRegApp .btn-submit {\n  color:#FFF;\n  }\n\n#abjRegApp .btn-check { color:#FFF; }\n\n#abjRegApp .line-btn { color:#FFF; }\n\n#abjRegApp .btn-review-confirm { color:#FFF; }\n\n#abjRegApp .field input[aria-invalid=\"true\"] { background-image:radial-gradient(circle,#B42318 0 4px,transparent 5px); }\n#abjRegApp .field select[aria-invalid=\"true\"] { background-image:url(\"data:image\/svg+xml,%3Csvg xmlns='http:\/\/www.w3.org\/2000\/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1l5 5 5-5' stroke='%23B42318' stroke-width='2' fill='none' stroke-linecap='round' stroke-linejoin='round'\/%3E%3C\/svg%3E\"); }\n\n#abjRegApp .field-error::before { background:#B42318; }\n\n\/* \u2500\u2500 \u0e17\u0e31\u0e1a\u0e0a\u0e31\u0e49\u0e19 7 \u2014 \u0e1b\u0e23\u0e31\u0e1a\u0e2a\u0e35\u0e43\u0e2b\u0e49\u0e15\u0e23\u0e07\u0e01\u0e31\u0e1a\u0e15\u0e31\u0e27\u0e2d\u0e22\u0e48\u0e32\u0e07\u0e17\u0e35\u0e48\u0e44\u0e14\u0e49\u0e23\u0e31\u0e1a \u2500\u2500 *\/\n#abjRegApp .hero-band::before {\n  background:\n    radial-gradient(520px 260px at 18% -20%,rgba(255,255,255,.22),transparent 65%),\n    radial-gradient(640px 340px at 92% 118%,rgba(255,214,170,.20),transparent 60%);\n}\n#abjRegApp .hero-badge {\n  background:rgba(255,255,255,.14);\n  border-color:rgba(255,232,190,.55);\n  box-shadow:inset 0 1px 0 rgba(255,255,255,.25),0 4px 16px rgba(124,46,76,.18);\n}\n\n#abjRegApp .lang-bar button.active {\n  border-color:transparent;\n  }\n#abjRegApp .lang-bar button.inactive {\n  border-color:rgba(255,255,255,.22);\n}\n\n#abjRegApp .mode-switch button.active {\n  color:#FFF; background:var(--mcru-dark);\n  }\n\n#abjRegApp .card:hover {\n  box-shadow:0 16px 44px rgba(173,73,112,.13),0 3px 10px rgba(140,60,100,.08);\n}\n\n#abjRegApp .card-header-icon,\n#abjRegApp #cardPersonal .card-header-icon,\n#abjRegApp #cardAddress .card-header-icon,\n#abjRegApp #cardLocation .card-header-icon,\n#abjRegApp #cardPhoto .card-header-icon {\n  background:linear-gradient(140deg,#F7A8C4 0%,var(--mcru) 55%,var(--mcru-mid) 100%);\n  }\n#abjRegApp .field label .req { color:var(--mcru); background:transparent; }\n\n#abjRegApp .field input:focus,\n#abjRegApp .field select:focus,\n#abjRegApp .field textarea:focus,\n#abjRegApp .birthdate-grid:focus-within {\n  border-color:var(--mcru); background:#FFF; box-shadow:var(--focus-ring);\n}\n\n#abjRegApp .upload-step-no { background:var(--mcru-dark); box-shadow:none; }\n#abjRegApp .required-chip { background:#FDE7EF; color:#9B1C4A; }\n#abjRegApp .btn-upload {\n  color:var(--mcru-dark);\n  background:linear-gradient(135deg,var(--mcru-light),#FFE4F0);\n  border-color:#F4C2D6;\n}\n#abjRegApp .btn-upload:hover {\n  background:#FFE8F4; border-color:var(--mcru);\n  box-shadow:0 4px 12px rgba(219,94,149,.18);\n}\n#abjRegApp .btn-camera {\n  color:#7A4B00;\n  background:linear-gradient(135deg,#FFF0D8,#FFE3B8);\n  border-color:#F0C888;\n}\n#abjRegApp .btn-camera:hover {\n  color:#7A4B00; background:#FFE9C8; border-color:#E0A845;\n  box-shadow:0 4px 12px rgba(200,150,50,.18);\n}\n\n#abjRegApp .upload-summary-bar { background:linear-gradient(90deg,var(--mcru),var(--mcru-dark)); }\n#abjRegApp .consent-box {\n  background:linear-gradient(160deg,var(--mcru-soft),#FFF 140%);\n  border-color:var(--border);\n}\n#abjRegApp .consent-check input[type=\"checkbox\"] { accent-color:var(--mcru); }\n#abjRegApp .btn-submit {\n  background:linear-gradient(135deg,#9F3565 0%,var(--mcru-dark) 100%);\n  }\n#abjRegApp .btn-submit:hover {\n  background:linear-gradient(135deg,#9F3565 0%,var(--mcru-dark) 100%);\n  filter:brightness(1.06);\n  }\n#abjRegApp .btn-check {\n  background:linear-gradient(135deg,#96405C,var(--mcru-dark));\n  box-shadow:0 5px 16px rgba(124,46,76,.28);\n}\n#abjRegApp .check-result.found { background:#FFF5FB; border-color:#F9C8DB; color:#8E2A57; }\n#abjRegApp .check-result.not-found { background:#FFF5F8; border-color:#F7B6CC; color:#A42D4C; }\n#abjRegApp .line-btn {\n  background:#06C755;\n  box-shadow:0 4px 14px rgba(6,199,85,.32);\n}\n#abjRegApp .review-modal-header {\n  background:linear-gradient(135deg,#A33B69,var(--mcru-dark) 65%,#6E2743);\n}\n#abjRegApp .btn-review-confirm {\n  background:linear-gradient(135deg,#A33B69,var(--mcru-dark) 65%,#6E2743);\n  }\n#abjRegApp .field input[aria-invalid=\"true\"],\n#abjRegApp .field select[aria-invalid=\"true\"],\n#abjRegApp .birthdate-grid.invalid,\n#abjRegApp .photo-upload-wrap.invalid,\n#abjRegApp .consent-check.invalid {\n  border-color:#B42318 !important;\n  background-color:#FFF5F5;\n  box-shadow:0 0 0 3px rgba(180,35,24,.12) !important;\n}\n#abjRegApp .field-error { color:#9B1C1C; }\n#abjRegApp .upload-summary.complete { border-color:#A8D8B7; background:#F3FBF5; }\n#abjRegApp .upload-summary.complete .upload-summary-count,\n#abjRegApp .review-doc-ok { color:#18733B; }\n@media(max-width:640px) {\n  #abjRegApp .hero-band {\n    background:linear-gradient(135deg,#A33B69 0%,var(--mcru-dark) 58%,#6E2743 100%);\n  }\n}\n\n\/* \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n   Modern UI polish \u2014 \u0e1b\u0e23\u0e31\u0e1a\u0e2b\u0e19\u0e49\u0e32\u0e15\u0e32\u0e43\u0e2b\u0e49\u0e17\u0e31\u0e19\u0e2a\u0e21\u0e31\u0e22\u0e02\u0e36\u0e49\u0e19\n   \u2022 \u0e04\u0e07\u0e42\u0e17\u0e19\u0e2a\u0e35\u0e41\u0e1a\u0e23\u0e19\u0e14\u0e4c\u0e40\u0e14\u0e34\u0e21 (\u0e0a\u0e21\u0e1e\u0e39\u2013\u0e21\u0e32\u0e40\u0e08\u0e19\u0e15\u0e49\u0e32) \u0e44\u0e27\u0e49\u0e17\u0e31\u0e49\u0e07\u0e2b\u0e21\u0e14\n   \u2022 \u0e1b\u0e23\u0e31\u0e1a\u0e08\u0e31\u0e07\u0e2b\u0e27\u0e30\u0e0a\u0e48\u0e2d\u0e07\u0e44\u0e1f \u0e02\u0e2d\u0e1a\u0e1a\u0e32\u0e07 \u0e40\u0e07\u0e32\u0e19\u0e38\u0e48\u0e21\u0e02\u0e36\u0e49\u0e19 \u0e21\u0e38\u0e21\u0e42\u0e04\u0e49\u0e07\u0e40\u0e1b\u0e47\u0e19\u0e23\u0e30\u0e1a\u0e1a\n   \u2022 \u0e15\u0e31\u0e27\u0e1a\u0e2d\u0e01\u0e02\u0e31\u0e49\u0e19\u0e15\u0e2d\u0e19\u0e41\u0e1a\u0e1a\u0e21\u0e35\u0e40\u0e2a\u0e49\u0e19\u0e40\u0e0a\u0e37\u0e48\u0e2d\u0e21 + \u0e15\u0e34\u0e4a\u0e01\u0e16\u0e39\u0e01\u0e40\u0e21\u0e37\u0e48\u0e2d\u0e1c\u0e48\u0e32\u0e19\u0e41\u0e25\u0e49\u0e27\n   \u2022 \u0e01\u0e32\u0e23\u0e4c\u0e14\u0e2d\u0e31\u0e1b\u0e42\u0e2b\u0e25\u0e14\u0e02\u0e36\u0e49\u0e19\u0e2a\u0e16\u0e32\u0e19\u0e30 \"\u0e2a\u0e33\u0e40\u0e23\u0e47\u0e08\" \u0e2d\u0e31\u0e15\u0e42\u0e19\u0e21\u0e31\u0e15\u0e34\u0e14\u0e49\u0e27\u0e22 :has()\n   \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 *\/\n#abjRegApp {\n  color-scheme:light;\n  --ease:cubic-bezier(.22,.8,.3,1);\n  --r-lg:20px; --r-md:14px; --r-sm:10px;\n  --edge:rgba(142,42,87,.10);\n  --edge-strong:rgba(142,42,87,.18);\n  --ring:0 0 0 3px rgba(255,141,194,.34);\n  --shadow-sm:0 1px 2px rgba(58,29,50,.04),0 2px 8px rgba(142,42,87,.05);\n  --shadow-card:0 1px 2px rgba(58,29,50,.04),0 10px 30px rgba(142,42,87,.07);\n  --shadow-lift:0 2px 6px rgba(58,29,50,.05),0 18px 44px rgba(142,42,87,.11);\n  -webkit-font-smoothing:antialiased;\n}\n#abjRegApp ::selection { background:var(--mcru-light); color:var(--mcru-dark); }\n#abjRegApp :focus-visible { outline:2px solid var(--mcru-mid); outline-offset:2px; }\n\n\/* \u2500\u2500\u2500 Hero: \u0e21\u0e38\u0e21\u0e25\u0e48\u0e32\u0e07\u0e42\u0e04\u0e49\u0e07 + \u0e15\u0e31\u0e27\u0e2d\u0e31\u0e01\u0e29\u0e23\u0e01\u0e23\u0e30\u0e0a\u0e31\u0e1a\u0e02\u0e36\u0e49\u0e19 \u2500\u2500\u2500 *\/\n#abjRegApp .hero-band {\n  min-height:0;\n  padding:clamp(58px,9vw,86px) clamp(18px,5vw,30px) clamp(50px,7.5vw,72px);\n  border-radius:0 0 clamp(22px,5vw,34px) clamp(22px,5vw,34px);\n}\n\/* \u0e40\u0e2a\u0e49\u0e19\u0e17\u0e2d\u0e07\u0e40\u0e14\u0e34\u0e21\u0e2d\u0e22\u0e39\u0e48\u0e02\u0e2d\u0e1a\u0e25\u0e48\u0e32\u0e07\u0e0b\u0e36\u0e48\u0e07\u0e16\u0e39\u0e01\u0e01\u0e32\u0e23\u0e4c\u0e14\u0e1a\u0e31\u0e07 \u2014 \u0e22\u0e49\u0e32\u0e22\u0e21\u0e32\u0e40\u0e1b\u0e47\u0e19\u0e40\u0e2a\u0e49\u0e19\u0e04\u0e31\u0e48\u0e19\u0e2a\u0e31\u0e49\u0e19 \u0e46 \u0e43\u0e15\u0e49\u0e2b\u0e31\u0e27\u0e40\u0e23\u0e37\u0e48\u0e2d\u0e07\u0e41\u0e17\u0e19 *\/\n#abjRegApp .hero-band::after { display:none; }\n#abjRegApp .hero-band h2::after {\n  content:\"\"; display:block; width:72px; height:3px; margin:16px auto 0;\n  border-radius:999px; background:linear-gradient(90deg,var(--gold),#EEDDBB);\n  opacity:.9;\n}\n#abjRegApp .hero-badge {\n  padding:6px 17px; margin-bottom:clamp(14px,3vw,18px);\n  border-radius:999px; font-size:clamp(12px,3vw,13.5px); letter-spacing:.11em;\n}\n#abjRegApp .hero-band h2 {\n  font-size:clamp(26px,5.6vw,40px); line-height:1.3; letter-spacing:-.004em;\n  margin-bottom:13px; text-wrap:balance;\n}\n#abjRegApp .hero-band p {\n  font-size:clamp(14.5px,3.4vw,17px); line-height:1.7; max-width:56ch; text-wrap:pretty;\n}\n\n\/* \u2500\u2500\u2500 \u0e41\u0e16\u0e1a\u0e20\u0e32\u0e29\u0e32: segmented control \u0e41\u0e1a\u0e1a\u0e01\u0e23\u0e30\u0e08\u0e01\u0e1d\u0e49\u0e32 \u2500\u2500\u2500 *\/\n#abjRegApp .lang-bar {\n  top:clamp(12px,3vw,18px); padding:4px; gap:2px;\n  border:1px solid rgba(255,255,255,.28); border-radius:999px;\n  background:rgba(255,255,255,.14);\n  box-shadow:0 6px 20px rgba(58,15,38,.18);\n  backdrop-filter:blur(14px) saturate(1.4);\n}\n#abjRegApp .lang-bar button {\n  min-width:50px; min-height:33px; padding:4px 15px;\n  border-radius:999px; font-size:13px; font-weight:700;\n  transition:background .2s var(--ease),color .2s var(--ease);\n}\n#abjRegApp .lang-bar button.inactive { background:transparent; color:rgba(255,255,255,.86); }\n#abjRegApp .lang-bar button.inactive:hover { background:rgba(255,255,255,.20); color:#fff; }\n#abjRegApp .lang-bar button.active { background:#fff; color:var(--mcru-dark); box-shadow:0 2px 8px rgba(58,15,38,.20); }\n\n\/* \u2500\u2500\u2500 \u0e42\u0e04\u0e23\u0e07\u0e2b\u0e25\u0e31\u0e01 \u2500\u2500\u2500 *\/\n#abjRegApp .main-wrap {\n  max-width:820px; transform:translateY(-26px);\n  padding-bottom:calc(84px + env(safe-area-inset-bottom));\n}\n\n\/* \u2500\u2500\u2500 \u0e2a\u0e27\u0e34\u0e15\u0e0a\u0e4c\u0e42\u0e2b\u0e21\u0e14 \u2500\u2500\u2500 *\/\n#abjRegApp .mode-switch {\n  gap:4px; padding:5px; border:1px solid var(--edge); border-radius:16px;\n  background:rgba(255,255,255,.92); box-shadow:var(--shadow-lift);\n  backdrop-filter:blur(14px) saturate(1.4);\n}\n#abjRegApp .mode-switch button {\n  min-height:50px; border-radius:12px; font-size:15px; font-weight:600; letter-spacing:.004em;\n  transition:background .22s var(--ease),color .22s var(--ease),box-shadow .22s var(--ease);\n}\n#abjRegApp .mode-switch button.active { box-shadow:0 6px 16px rgba(142,42,87,.24); }\n\n\/* \u2500\u2500\u2500 \u0e15\u0e31\u0e27\u0e1a\u0e2d\u0e01\u0e02\u0e31\u0e49\u0e19\u0e15\u0e2d\u0e19: \u0e40\u0e2a\u0e49\u0e19\u0e40\u0e0a\u0e37\u0e48\u0e2d\u0e21 + \u0e15\u0e34\u0e4a\u0e01\u0e16\u0e39\u0e01 \u2500\u2500\u2500 *\/\n#abjRegApp .form-progress {\n  top:10px; gap:6px; padding:11px 8px 9px;\n  border:1px solid var(--edge); border-radius:16px;\n  background:rgba(255,255,255,.86); box-shadow:0 6px 20px rgba(142,42,87,.08);\n  backdrop-filter:blur(16px) saturate(1.6);\n}\n#abjRegApp .progress-step {\n  position:relative; display:flex; flex-direction:column; align-items:center; gap:7px;\n  min-height:0; padding:2px 2px 4px; border-radius:12px; background:transparent;\n  font-size:11.5px; font-weight:600; line-height:1.3; color:var(--text-muted);\n  transition:color .2s var(--ease);\n}\n#abjRegApp .progress-step:hover { background:transparent; color:var(--mcru-mid); }\n#abjRegApp .progress-step.active,\n#abjRegApp .progress-step.done { background:transparent; box-shadow:none; }\n#abjRegApp .progress-step.active { color:var(--mcru-dark); font-weight:700; }\n#abjRegApp .progress-step.done { color:var(--text-mid); }\n\/* \u0e40\u0e2a\u0e49\u0e19\u0e23\u0e32\u0e07\u0e23\u0e30\u0e2b\u0e27\u0e48\u0e32\u0e07\u0e02\u0e31\u0e49\u0e19 \u2014 \u0e27\u0e32\u0e14\u0e08\u0e32\u0e01\u0e01\u0e36\u0e48\u0e07\u0e01\u0e25\u0e32\u0e07\u0e27\u0e07\u0e01\u0e25\u0e21\u0e19\u0e35\u0e49\u0e44\u0e1b\u0e22\u0e31\u0e07\u0e01\u0e36\u0e48\u0e07\u0e01\u0e25\u0e32\u0e07\u0e27\u0e07\u0e16\u0e31\u0e14\u0e44\u0e1b *\/\n#abjRegApp .progress-step::before,\n#abjRegApp .progress-step.done::after {\n  content:\"\"; position:absolute; top:15px; left:calc(50% + 19px); right:calc(13px - 50%);\n  height:2px; border-radius:2px; background:var(--border-md);\n}\n#abjRegApp .progress-step.done::after { background:var(--mcru); }\n#abjRegApp .progress-step:last-child::before,\n#abjRegApp .progress-step:last-child.done::after { display:none; }\n#abjRegApp .progress-step .step-no {\n  position:relative; z-index:1; width:28px; height:28px; margin:0; border-radius:50%;\n  border:1.5px solid var(--border-md); background:#fff; color:var(--text-muted);\n  font-size:12.5px; font-weight:700; box-shadow:0 0 0 4px rgba(255,255,255,.92);\n  transition:background .22s var(--ease),color .22s var(--ease),border-color .22s var(--ease),transform .22s var(--ease);\n}\n#abjRegApp .progress-step.active .step-no {\n  border-color:var(--mcru-dark); background:var(--mcru-dark); color:#fff;\n  transform:scale(1.06); box-shadow:0 0 0 4px rgba(255,255,255,.92),0 4px 12px rgba(142,42,87,.28);\n}\n#abjRegApp .progress-step.done .step-no {\n  border-color:var(--mcru); background:var(--mcru); color:transparent;\n  box-shadow:0 0 0 4px rgba(255,255,255,.92);\n}\n#abjRegApp .progress-step.done .step-no::after {\n  content:\"\u2713\"; position:absolute; inset:0; display:flex; align-items:center; justify-content:center;\n  color:#fff; font-size:14px; font-weight:700; line-height:1;\n}\n\n\/* \u2500\u2500\u2500 \u0e01\u0e32\u0e23\u0e4c\u0e14 \u2500\u2500\u2500 *\/\n#abjRegApp .card {\n  border:1px solid var(--edge); border-radius:var(--r-lg); background:#fff;\n  box-shadow:var(--shadow-card); margin-bottom:clamp(14px,2.6vw,20px);\n  transition:box-shadow .3s var(--ease),border-color .3s var(--ease);\n}\n@media(hover:hover) {\n  #abjRegApp .card:hover { transform:none; border-color:var(--edge-strong); box-shadow:var(--shadow-lift); }\n}\n#abjRegApp .card-header,\n#abjRegApp #cardPersonal .card-header,\n#abjRegApp #cardAddress .card-header,\n#abjRegApp #cardLocation .card-header,\n#abjRegApp #cardPhoto .card-header {\n  min-height:0; gap:14px;\n  padding:clamp(16px,3.4vw,19px) clamp(18px,4vw,26px);\n  background:linear-gradient(180deg,var(--mcru-soft),#fff);\n  border-bottom:1px solid var(--edge);\n}\n#abjRegApp .card-header-icon,\n#abjRegApp #cardPersonal .card-header-icon,\n#abjRegApp #cardAddress .card-header-icon,\n#abjRegApp #cardLocation .card-header-icon,\n#abjRegApp #cardPhoto .card-header-icon {\n  width:42px; height:42px; border-radius:13px;\n  box-shadow:0 5px 14px rgba(219,94,149,.26),inset 0 1px 0 rgba(255,255,255,.34);\n}\n#abjRegApp .card-header-icon svg { width:20px; height:20px; stroke-linecap:round; stroke-linejoin:round; }\n#abjRegApp .card-header h3 {\n  font-size:clamp(16.5px,4vw,19px); line-height:1.4; letter-spacing:.004em; text-wrap:balance;\n}\n#abjRegApp .card-body { padding:clamp(20px,4.2vw,28px); }\n#abjRegApp .form-grid { gap:clamp(16px,3vw,20px) clamp(15px,3vw,20px); }\n\n\/* \u2500\u2500\u2500 \u0e0a\u0e48\u0e2d\u0e07\u0e01\u0e23\u0e2d\u0e01 \u2500\u2500\u2500 *\/\n#abjRegApp .field label { margin-bottom:8px; font-size:14.5px; font-weight:600; letter-spacing:.004em; }\n#abjRegApp .field label .opt { padding:2px 9px; font-size:11.5px; font-weight:500; }\n#abjRegApp .field input,\n#abjRegApp .field select,\n#abjRegApp .field textarea,\n#abjRegApp .check-input-row input {\n  min-height:52px; padding:14px 16px; font-size:16px;\n  border:1.5px solid var(--border-md); border-radius:var(--r-md);\n  background:#fff; box-shadow:none;\n  transition:border-color .18s var(--ease),box-shadow .18s var(--ease),background-color .18s var(--ease);\n}\n#abjRegApp .field input:hover,\n#abjRegApp .field select:hover { border-color:var(--mcru); background:#fff; }\n#abjRegApp .field input:focus,\n#abjRegApp .field select:focus,\n#abjRegApp .field textarea:focus,\n#abjRegApp .check-input-row input:focus {\n  transform:none; border-color:var(--mcru-mid); background:#fff; box-shadow:var(--ring);\n}\n#abjRegApp .field:focus-within > label { transform:none; }\n#abjRegApp .field input::placeholder,\n#abjRegApp .field textarea::placeholder { color:#B29AA6; }\n#abjRegApp .field input:read-only,\n#abjRegApp input[readonly] {\n  border-style:solid; border-color:var(--border); background:#FBF6F9; color:var(--text-mid);\n}\n#abjRegApp .field select {\n  background-image:url(\"data:image\/svg+xml,%3Csvg xmlns='http:\/\/www.w3.org\/2000\/svg' width='14' height='9' viewBox='0 0 14 9'%3E%3Cpath d='M1.5 1.5L7 7l5.5-5.5' stroke='%238E2A57' stroke-width='1.7' fill='none' stroke-linecap='round' stroke-linejoin='round'\/%3E%3C\/svg%3E\");\n  background-repeat:no-repeat; background-size:13px 8px;\n  background-position:right 16px center; padding-right:44px;\n}\n#abjRegApp .field select:disabled { background-color:#FAF6F8; border-color:var(--border); }\n\/* \u0e0a\u0e48\u0e2d\u0e07 \u0e27\u0e31\u0e19\/\u0e40\u0e14\u0e37\u0e2d\u0e19 \u0e41\u0e04\u0e1a\u0e01\u0e27\u0e48\u0e32\u0e1b\u0e01\u0e15\u0e34 \u2014 \u0e25\u0e14\u0e23\u0e30\u0e22\u0e30\u0e25\u0e39\u0e01\u0e28\u0e23\u0e44\u0e21\u0e48\u0e43\u0e2b\u0e49\u0e17\u0e31\u0e1a\u0e02\u0e49\u0e2d\u0e04\u0e27\u0e32\u0e21 *\/\n#abjRegApp .birthdate-grid select {\n  padding-left:12px; padding-right:28px;\n  background-size:11px 7px; background-position:right 9px center;\n}\n#abjRegApp .birthdate-grid {\n  gap:6px; padding:6px; border:1.5px solid var(--border-md); border-radius:var(--r-md); background:#fff;\n}\n#abjRegApp .birthdate-grid:focus-within { border-color:var(--mcru-mid); box-shadow:var(--ring); }\n#abjRegApp .birthdate-grid select,\n#abjRegApp .birthdate-grid input { min-height:44px; border-radius:var(--r-sm); background-color:#FDF8FA; }\n#abjRegApp .birthdate-grid select:focus,\n#abjRegApp .birthdate-grid input:focus { background-color:#fff; box-shadow:inset 0 0 0 1.5px var(--mcru); }\n#abjRegApp .field-help:not(:empty) {\n  padding:11px 13px; margin-top:10px; border-radius:var(--r-sm);\n  background:var(--mcru-soft); color:var(--text-mid); font-size:13.5px;\n}\n\n\/* \u2500\u2500\u2500 \u0e01\u0e32\u0e23\u0e4c\u0e14\u0e2d\u0e31\u0e1b\u0e42\u0e2b\u0e25\u0e14\u0e40\u0e2d\u0e01\u0e2a\u0e32\u0e23 \u2500\u2500\u2500 *\/\n#abjRegApp .document-upload-grid { gap:clamp(13px,2.6vw,16px); }\n\/* \u0e20\u0e32\u0e29\u0e32\u0e44\u0e17\u0e22\u0e44\u0e21\u0e48\u0e15\u0e49\u0e2d\u0e07\u0e41\u0e19\u0e1a\u0e40\u0e2d\u0e01\u0e2a\u0e32\u0e23\u0e15\u0e48\u0e32\u0e07\u0e0a\u0e32\u0e15\u0e34 \u2014 \u0e43\u0e2b\u0e49\u0e01\u0e32\u0e23\u0e4c\u0e14\u0e23\u0e39\u0e1b\u0e16\u0e48\u0e32\u0e22\u0e01\u0e34\u0e19\u0e40\u0e15\u0e47\u0e21\u0e04\u0e27\u0e32\u0e21\u0e01\u0e27\u0e49\u0e32\u0e07\u0e41\u0e17\u0e19\u0e17\u0e35\u0e48\u0e08\u0e30\u0e40\u0e2b\u0e25\u0e37\u0e2d\u0e0a\u0e48\u0e2d\u0e07\u0e27\u0e48\u0e32\u0e07\u0e04\u0e23\u0e36\u0e48\u0e07\u0e41\u0e16\u0e27 *\/\n#abjRegApp .document-upload-grid:has(> .foreign-docs-panel.hidden) { grid-template-columns:minmax(0,1fr); }\n@media(min-width:601px) {\n  #abjRegApp .document-upload-grid:has(> .foreign-docs-panel.hidden) .photo-upload-wrap { gap:22px; }\n  #abjRegApp .document-upload-grid:has(> .foreign-docs-panel.hidden) .photo-preview { width:132px; height:160px; flex:0 0 132px; }\n  #abjRegApp .document-upload-grid:has(> .foreign-docs-panel.hidden) #photoTile .btn-upload { flex:0 1 auto; padding:11px 22px; font-size:13.5px; }\n}\n#abjRegApp .document-upload-tile {\n  padding:16px; border:1.5px solid var(--border); border-radius:var(--r-md);\n  background:#fff; box-shadow:none;\n  transition:border-color .22s var(--ease),box-shadow .22s var(--ease);\n}\n#abjRegApp .document-upload-tile:hover { transform:none; border-color:var(--mcru); box-shadow:var(--shadow-sm); }\n\/* \u0e2d\u0e31\u0e1b\u0e42\u0e2b\u0e25\u0e14\u0e41\u0e25\u0e49\u0e27 \u2192 \u0e02\u0e2d\u0e1a\u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19\u0e40\u0e1b\u0e47\u0e19\u0e2a\u0e35\u0e40\u0e02\u0e35\u0e22\u0e27\u0e1e\u0e23\u0e49\u0e2d\u0e21\u0e15\u0e34\u0e4a\u0e01\u0e16\u0e39\u0e01 (\u0e1b\u0e38\u0e48\u0e21\u0e25\u0e1a\u0e08\u0e30\u0e42\u0e1c\u0e25\u0e48\u0e40\u0e21\u0e37\u0e48\u0e2d\u0e21\u0e35\u0e44\u0e1f\u0e25\u0e4c) *\/\n#abjRegApp .document-upload-tile:has(.btn-photo-remove:not([hidden])) {\n  border-color:#8FCFA6; background:#F7FCF9;\n}\n#abjRegApp .document-upload-tile:has(.btn-photo-remove:not([hidden])) .required-chip {\n  background:#E3F5E9; color:#18733B;\n}\n#abjRegApp .document-upload-tile:has(.btn-photo-remove:not([hidden])) .required-chip::before { content:\"\u2713 \"; }\n#abjRegApp .upload-tile-head { min-height:0; margin-bottom:13px; align-items:center; }\n#abjRegApp .upload-tile-title { font-size:14.5px; font-weight:700; }\n#abjRegApp .required-chip { padding:4px 9px; border-radius:999px; font-size:10.5px; letter-spacing:.02em; }\n#abjRegApp .upload-step-no { width:26px; height:26px; flex-basis:26px; font-size:12.5px; }\n#abjRegApp .photo-preview,\n#abjRegApp .document-upload-tile .photo-preview,\n#abjRegApp .doc-preview {\n  border:1.5px dashed var(--border-md); border-radius:var(--r-md); background:var(--mcru-soft);\n  transition:border-color .22s var(--ease),background .22s var(--ease);\n}\n#abjRegApp .photo-preview:hover,\n#abjRegApp .doc-preview:hover { border-color:var(--mcru); background:var(--mcru-light); }\n#abjRegApp .btn-upload,\n#abjRegApp .btn-camera,\n#abjRegApp .btn-photo-remove {\n  border-radius:999px; font-weight:600;\n  transition:background .2s var(--ease),border-color .2s var(--ease),box-shadow .2s var(--ease),transform .15s var(--ease);\n}\n#abjRegApp .btn-upload:active,\n#abjRegApp .btn-camera:active,\n#abjRegApp .btn-photo-remove:active { transform:scale(.97); }\n#abjRegApp .upload-summary {\n  padding:14px 16px; border:1px solid var(--edge); border-radius:var(--r-md); background:var(--mcru-soft);\n}\n#abjRegApp .upload-summary-track { height:8px; background:#F5E3EC; }\n#abjRegApp .upload-summary-bar { transition:width .35s var(--ease); }\n\n\/* \u2500\u2500\u2500 \u0e22\u0e34\u0e19\u0e22\u0e2d\u0e21 \u2500\u2500\u2500 *\/\n#abjRegApp .consent-box {\n  padding:16px 18px; border-radius:var(--r-md); font-size:14.5px; line-height:1.8;\n  border-left:3px solid var(--mcru);\n}\n#abjRegApp .consent-check {\n  gap:12px; padding:14px; border:1.5px solid var(--border); border-radius:var(--r-md); background:#fff;\n  transition:border-color .2s var(--ease),background .2s var(--ease);\n}\n#abjRegApp .consent-check:hover { border-color:var(--border-md); background:var(--mcru-soft); }\n#abjRegApp .consent-check:has(input:checked) { border-color:var(--mcru); background:var(--mcru-soft); }\n#abjRegApp .consent-check input[type=\"checkbox\"] { width:22px; height:22px; }\n\n\/* \u2500\u2500\u2500 \u0e1b\u0e38\u0e48\u0e21\u0e2b\u0e25\u0e31\u0e01 \u2500\u2500\u2500 *\/\n#abjRegApp .btn-submit {\n  min-height:60px; border-radius:16px; letter-spacing:.012em;\n  font-size:clamp(16.5px,4.2vw,18.5px);\n  box-shadow:0 8px 22px rgba(142,42,87,.26),inset 0 1px 0 rgba(255,255,255,.18);\n  transition:transform .18s var(--ease),box-shadow .28s var(--ease),filter .2s var(--ease);\n}\n#abjRegApp .btn-submit:hover { transform:translateY(-1px); box-shadow:0 14px 32px rgba(142,42,87,.32),inset 0 1px 0 rgba(255,255,255,.26); }\n#abjRegApp .btn-submit:active { transform:translateY(0) scale(.995); }\n#abjRegApp .btn-check { min-height:52px; border-radius:var(--r-md); padding-inline:28px; font-size:15.5px; }\n#abjRegApp .btn-check:hover { filter:brightness(1.06); box-shadow:0 8px 20px rgba(142,42,87,.26); }\n#abjRegApp .note { margin-top:16px; font-size:13px; }\n\n\/* \u2500\u2500\u2500 \u0e1c\u0e25\u0e01\u0e32\u0e23\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e2a\u0e16\u0e32\u0e19\u0e30 \u2500\u2500\u2500 *\/\n#abjRegApp .check-result { padding:18px 20px; border-radius:var(--r-md); }\n#abjRegApp .check-result-row { padding:7px 0; }\n#abjRegApp .check-result-code { border-radius:var(--r-sm); }\n\n\/* \u2500\u2500\u2500 \u0e01\u0e25\u0e48\u0e2d\u0e07\u0e15\u0e34\u0e14\u0e15\u0e48\u0e2d LINE \u2500\u2500\u2500 *\/\n#abjRegApp .payment-note {\n  padding:18px 20px; border:1px solid var(--edge); border-radius:var(--r-md);\n  background:var(--mcru-soft); text-align:center;\n}\n#abjRegApp .payment-note p { margin-top:10px; font-size:14px; color:var(--text-muted); }\n#abjRegApp .line-btn { margin-top:0; min-height:48px; padding:12px 26px; font-weight:700; }\n\n\/* \u2500\u2500\u2500 Modal \u0e2a\u0e23\u0e38\u0e1b\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25 \u2500\u2500\u2500 *\/\n#abjRegApp .review-overlay { background:rgba(52,20,40,.52); backdrop-filter:blur(6px); }\n#abjRegApp .review-modal { border-radius:22px; box-shadow:0 30px 80px rgba(58,15,38,.32); }\n#abjRegApp .review-modal-header { padding:22px 24px; border-radius:22px 22px 0 0; }\n#abjRegApp .review-modal-header h3 { font-size:19px; line-height:1.4; }\n#abjRegApp .review-section-title { font-size:12.5px; letter-spacing:.08em; border-bottom-width:1px; }\n#abjRegApp .review-row { padding:9px 0; border-bottom-color:var(--edge); }\n#abjRegApp .review-doc-item { border-radius:var(--r-sm); background:var(--mcru-soft); }\n#abjRegApp .review-modal-footer { gap:10px; border-top-color:var(--edge); border-radius:0 0 22px 22px; }\n#abjRegApp .btn-review-back,\n#abjRegApp .btn-review-confirm { min-height:52px; border-radius:var(--r-md); font-size:15.5px; }\n#abjRegApp .btn-review-back { background:#F6EEF3; }\n#abjRegApp .btn-review-back:hover { background:#EFE2EA; }\n#abjRegApp .btn-review-confirm { box-shadow:0 8px 20px rgba(142,42,87,.28),inset 0 1px 0 rgba(255,255,255,.22); }\n#abjRegApp .btn-review-confirm:hover { transform:translateY(-1px); }\n#abjRegApp .review-modal::-webkit-scrollbar { width:9px; }\n#abjRegApp .review-modal::-webkit-scrollbar-thumb { border-radius:999px; background:var(--border-md); }\n\n\/* \u2500\u2500\u2500 SweetAlert (render \u0e19\u0e2d\u0e01 #abjRegApp) \u2500\u2500\u2500 *\/\n.swal2-popup { border-radius:22px !important; box-shadow:0 30px 80px rgba(58,15,38,.28) !important; }\n.swal2-styled.swal2-confirm,\n.swal2-styled.swal2-cancel { border-radius:999px !important; padding:11px 26px !important; font-weight:700 !important; }\n.code-display { border-radius:14px; }\n\n@media(max-width:640px) {\n  #abjRegApp .main-wrap { transform:translateY(-20px); padding-left:12px; padding-right:12px; }\n  #abjRegApp .card { border-radius:18px; }\n  #abjRegApp .form-progress { top:6px; gap:4px; padding:10px 6px 8px; border-radius:14px; }\n  #abjRegApp .progress-step { font-size:10.5px; gap:6px; }\n  #abjRegApp .progress-step .step-no { width:26px; height:26px; font-size:12px; }\n  #abjRegApp .progress-step::before,\n  #abjRegApp .progress-step.done::after { top:14px; left:calc(50% + 18px); right:calc(14px - 50%); }\n  #abjRegApp .btn-submit { min-height:58px; border-radius:15px; }\n  #abjRegApp .line-btn { width:100%; justify-content:center; }\n  \/* Bottom sheet \u2014 \u0e40\u0e1e\u0e34\u0e48\u0e21\u0e41\u0e16\u0e1a\u0e08\u0e31\u0e1a\u0e14\u0e49\u0e32\u0e19\u0e1a\u0e19\u0e41\u0e1a\u0e1a\u0e41\u0e2d\u0e1b\u0e21\u0e37\u0e2d\u0e16\u0e37\u0e2d *\/\n  #abjRegApp .review-modal { border-radius:24px 24px 0 0; }\n  #abjRegApp .review-modal-header { padding-top:26px; border-radius:24px 24px 0 0; }\n  #abjRegApp .review-modal-header::before {\n    content:\"\"; position:absolute; top:9px; left:50%; transform:translateX(-50%);\n    width:42px; height:4px; border-radius:999px; background:rgba(255,255,255,.42);\n  }\n  #abjRegApp .review-modal-footer { flex-direction:column; border-radius:0; }\n}\n@media(max-width:380px) {\n  #abjRegApp .progress-step span:last-child { font-size:10px; }\n  #abjRegApp .progress-step .step-no { width:24px; height:24px; }\n  #abjRegApp .progress-step::before,\n  #abjRegApp .progress-step.done::after { top:13px; left:calc(50% + 16px); right:calc(13px - 50%); }\n}\n\n\/* \u2500\u2500 \u0e41\u0e16\u0e1a\u0e41\u0e08\u0e49\u0e07\u0e27\u0e48\u0e32\u0e01\u0e39\u0e49\u0e23\u0e48\u0e32\u0e07\u0e17\u0e35\u0e48\u0e01\u0e23\u0e2d\u0e01\u0e04\u0e49\u0e32\u0e07\u0e44\u0e27\u0e49 \u2500\u2500 *\/\n#abjRegApp .draft-bar {\n  display:flex; align-items:center; gap:12px;\n  padding:12px 14px; margin-bottom:14px;\n  border:1px solid #CDE7D5; border-radius:var(--r-md);\n  background:#F4FBF6; color:#1F5B36; font-size:13.5px; line-height:1.5;\n  animation:rise .4s var(--ease) both;\n}\n#abjRegApp .draft-bar[hidden] { display:none; }\n#abjRegApp .draft-bar-icon {\n  flex:0 0 30px; width:30px; height:30px; border-radius:50%;\n  display:flex; align-items:center; justify-content:center;\n  background:#DFF3E6; color:#18733B; font-size:16px; font-weight:700;\n}\n#abjRegApp .draft-bar-text { flex:1; min-width:0; }\n#abjRegApp .draft-bar-text strong { display:block; font-weight:700; }\n#abjRegApp .draft-bar-text span { color:#3F6B50; font-size:12.5px; }\n#abjRegApp .draft-bar-clear {\n  flex:0 0 auto; min-height:38px; padding:8px 15px;\n  border:1px solid #BEDDC8; border-radius:999px;\n  background:#fff; color:#1F5B36; font-family:'Sarabun',sans-serif;\n  font-size:12.5px; font-weight:700; cursor:pointer;\n  transition:background .2s var(--ease),border-color .2s var(--ease);\n}\n#abjRegApp .draft-bar-clear:hover { background:#EAF7EE; border-color:#8FCFA6; }\n#abjRegApp .draft-bar-clear:active { transform:scale(.97); }\n@media(max-width:480px) {\n  #abjRegApp .draft-bar { flex-wrap:wrap; }\n  #abjRegApp .draft-bar-clear { width:100%; }\n}\n\n\/* \u2500\u2500 \u0e40\u0e01\u0e47\u0e1a\u0e23\u0e32\u0e22\u0e25\u0e30\u0e40\u0e2d\u0e35\u0e22\u0e14\u0e17\u0e35\u0e48\u0e22\u0e31\u0e07\u0e02\u0e31\u0e14\u0e15\u0e32 \u2500\u2500 *\/\n\/* \u0e1b\u0e49\u0e32\u0e22 (\u0e44\u0e21\u0e48\u0e1a\u0e31\u0e07\u0e04\u0e31\u0e1a) \u0e40\u0e04\u0e22\u0e16\u0e39\u0e01\u0e14\u0e31\u0e19\u0e44\u0e1b\u0e0a\u0e34\u0e14\u0e02\u0e27\u0e32\u0e2a\u0e38\u0e14\u0e08\u0e19\u0e14\u0e39\u0e44\u0e21\u0e48\u0e40\u0e01\u0e35\u0e48\u0e22\u0e27\u0e01\u0e31\u0e1a\u0e2b\u0e31\u0e27\u0e02\u0e49\u0e2d \u2014 \u0e43\u0e2b\u0e49\u0e15\u0e48\u0e2d\u0e17\u0e49\u0e32\u0e22\u0e02\u0e49\u0e2d\u0e04\u0e27\u0e32\u0e21\u0e41\u0e17\u0e19 *\/\n#abjRegApp .field label .opt { margin-left:0; margin-right:auto; }\n\/* \u0e1b\u0e38\u0e48\u0e21\u0e43\u0e19\u0e01\u0e32\u0e23\u0e4c\u0e14\u0e40\u0e2d\u0e01\u0e2a\u0e32\u0e23: \u0e02\u0e49\u0e2d\u0e04\u0e27\u0e32\u0e21\u0e2d\u0e31\u0e07\u0e01\u0e24\u0e29\u0e22\u0e32\u0e27 (\"Choose \/ replace file\") \u0e15\u0e01\u0e1a\u0e23\u0e23\u0e17\u0e31\u0e14\u0e08\u0e19\u0e1b\u0e38\u0e48\u0e21\u0e2a\u0e39\u0e07\u0e40\u0e01\u0e34\u0e19 *\/\n#abjRegApp .document-upload-tile .btn-upload {\n  padding:9px 10px; font-size:12px; line-height:1.35;\n}\n\n\/* \u2500\u2500 \u0e0a\u0e48\u0e2d\u0e07\u0e08\u0e31\u0e07\u0e2b\u0e27\u0e31\u0e14: \u0e1e\u0e34\u0e21\u0e1e\u0e4c\u0e41\u0e25\u0e49\u0e27\u0e04\u0e32\u0e14\u0e40\u0e14\u0e32 (combobox) \u2500\u2500\n   <select id=\"province\"> \u0e22\u0e31\u0e07\u0e2d\u0e22\u0e39\u0e48\u0e04\u0e23\u0e1a\u0e41\u0e25\u0e30\u0e40\u0e1b\u0e47\u0e19\u0e15\u0e31\u0e27\u0e40\u0e01\u0e47\u0e1a\u0e04\u0e48\u0e32\u0e08\u0e23\u0e34\u0e07 (validate\/\u0e23\u0e48\u0e32\u0e07\/\u0e2a\u0e48\u0e07\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25 \u0e2d\u0e48\u0e32\u0e19\u0e08\u0e32\u0e01\u0e15\u0e31\u0e27\u0e19\u0e35\u0e49)\n   \u0e41\u0e04\u0e48\u0e0b\u0e48\u0e2d\u0e19\u0e44\u0e27\u0e49 \u0e41\u0e25\u0e49\u0e27\u0e43\u0e2b\u0e49\u0e1c\u0e39\u0e49\u0e43\u0e0a\u0e49\u0e1e\u0e34\u0e21\u0e1e\u0e4c\u0e1c\u0e48\u0e32\u0e19 #provinceSearch \u0e41\u0e17\u0e19 *\/\n#abjRegApp .combo-native { display:none !important; }\n#abjRegApp .combo { position:relative; }\n#abjRegApp .combo-input {\n  background-image:url(\"data:image\/svg+xml,%3Csvg xmlns='http:\/\/www.w3.org\/2000\/svg' width='14' height='9' viewBox='0 0 14 9'%3E%3Cpath d='M1.5 1.5L7 7l5.5-5.5' stroke='%238E2A57' stroke-width='1.7' fill='none' stroke-linecap='round' stroke-linejoin='round'\/%3E%3C\/svg%3E\");\n  background-repeat:no-repeat; background-size:13px 8px;\n  background-position:right 16px center; padding-right:44px;\n}\n#abjRegApp .combo-input[aria-invalid=\"true\"] { padding-right:44px; }\n\/* \u0e23\u0e30\u0e2b\u0e27\u0e48\u0e32\u0e07\u0e23\u0e2d\u0e42\u0e2b\u0e25\u0e14\u0e23\u0e32\u0e22\u0e0a\u0e37\u0e48\u0e2d\u0e08\u0e31\u0e07\u0e2b\u0e27\u0e31\u0e14 \u0e0a\u0e48\u0e2d\u0e07\u0e16\u0e39\u0e01 disable \u0e44\u0e27\u0e49 \u2014 \u0e15\u0e49\u0e2d\u0e07\u0e14\u0e39\u0e2d\u0e2d\u0e01\u0e27\u0e48\u0e32\u0e22\u0e31\u0e07\u0e1e\u0e34\u0e21\u0e1e\u0e4c\u0e44\u0e21\u0e48\u0e44\u0e14\u0e49 (\u0e43\u0e2b\u0e49\u0e40\u0e2b\u0e21\u0e37\u0e2d\u0e19 select:disabled) *\/\n#abjRegApp .combo-input:disabled {\n  color:#9A8991; cursor:not-allowed; opacity:1;\n  background-color:#FAF6F8; border-color:var(--border);\n}\n#abjRegApp .combo-list {\n  position:absolute; z-index:60; top:calc(100% + 6px); left:0; right:0;\n  max-height:270px; overflow-y:auto; overscroll-behavior:contain; -webkit-overflow-scrolling:touch;\n  margin:0; padding:6px; list-style:none;\n  border:1.5px solid var(--mcru-mid); border-radius:var(--r-md);\n  background:#fff; box-shadow:0 18px 40px rgba(142,42,87,.18);\n}\n#abjRegApp .combo-list[hidden] { display:none; }\n#abjRegApp .combo-option {\n  padding:11px 13px; border-radius:10px;\n  font-family:'Sarabun',sans-serif; font-size:15.5px; line-height:1.4; color:var(--text);\n  cursor:pointer; transition:background-color .12s var(--ease);\n}\n#abjRegApp .combo-option mark { background:transparent; color:var(--mcru-mid); font-weight:700; }\n#abjRegApp .combo-option:hover { background:#FDEFF5; }\n#abjRegApp .combo-option.active { background:#FBE0EC; color:var(--mcru-dark); }\n#abjRegApp .combo-empty { padding:11px 13px; font-size:14.5px; color:var(--text-muted); }\n\/* \u0e15\u0e31\u0e27\u0e2d\u0e31\u0e01\u0e29\u0e23\u0e17\u0e35\u0e48\u0e23\u0e30\u0e1a\u0e1a\u0e40\u0e14\u0e32\u0e15\u0e48\u0e2d\u0e43\u0e2b\u0e49 (highlight \u0e2d\u0e22\u0e39\u0e48\u0e43\u0e19\u0e0a\u0e48\u0e2d\u0e07) \u0e15\u0e49\u0e2d\u0e07\u0e2d\u0e48\u0e32\u0e19\u0e2d\u0e2d\u0e01\u0e17\u0e31\u0e49\u0e07\u0e1a\u0e19\u0e1e\u0e37\u0e49\u0e19\u0e02\u0e32\u0e27\u0e41\u0e25\u0e30\u0e1e\u0e37\u0e49\u0e19\u0e42\u0e1f\u0e01\u0e31\u0e2a *\/\n#abjRegApp .combo-input::selection { background:#F7C9DC; color:var(--text); }\n@media(max-width:640px) {\n  #abjRegApp .combo-list { max-height:min(45vh,300px); }\n  #abjRegApp .combo-option { padding:12px 13px; font-size:16px; }\n}\n<\/style>\n<div id=\"abjRegApp\">\n<!-- \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n     Modal \u0e2a\u0e23\u0e38\u0e1b\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e01\u0e48\u0e2d\u0e19\u0e22\u0e37\u0e19\u0e22\u0e31\u0e19\n\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 -->\n<div class=\"review-overlay\" id=\"reviewOverlay\" role=\"dialog\" aria-modal=\"true\" aria-labelledby=\"reviewModalTitle\">\n  <div class=\"review-modal\">\n    <div class=\"review-modal-header\">\n      <div>\n        <h3 id=\"reviewModalTitle\">\ud83d\udccb <span id=\"rvTitle\">\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e01\u0e48\u0e2d\u0e19\u0e22\u0e37\u0e19\u0e22\u0e31\u0e19<\/span><\/h3>\n        <p id=\"rvSubtitle\">\u0e01\u0e23\u0e38\u0e13\u0e32\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e43\u0e2b\u0e49\u0e16\u0e39\u0e01\u0e15\u0e49\u0e2d\u0e07\u0e01\u0e48\u0e2d\u0e19\u0e01\u0e14\u0e22\u0e37\u0e19\u0e22\u0e31\u0e19<\/p>\n      <\/div>\n    <\/div>\n    <div class=\"review-modal-body\" id=\"reviewModalBody\">\n      <!-- \u0e2a\u0e23\u0e49\u0e32\u0e07\u0e42\u0e14\u0e22 JS -->\n    <\/div>\n    <div class=\"review-modal-footer\">\n      <button type=\"button\" class=\"btn-review-back\" id=\"btnReviewBack\">\u2190 <span id=\"rvBack\">\u0e41\u0e01\u0e49\u0e44\u0e02<\/span><\/button>\n      <button type=\"button\" class=\"btn-review-confirm\" id=\"btnReviewConfirm\">\u2726 <span id=\"rvConfirm\">\u0e22\u0e37\u0e19\u0e22\u0e31\u0e19\u0e01\u0e32\u0e23\u0e2a\u0e21\u0e31\u0e04\u0e23<\/span><\/button>\n    <\/div>\n  <\/div>\n<\/div>\n<div class=\"lang-bar\">\n  <button type=\"button\" id=\"btnTH\" onclick=\"setLanguage('th')\" class=\"active\" aria-pressed=\"true\">\u0e44\u0e17\u0e22<\/button>\n  <button type=\"button\" id=\"btnEN\" onclick=\"setLanguage('en')\" class=\"inactive\" aria-pressed=\"false\">EN<\/button>\n<\/div>\n<div class=\"hero-band\">\n  <div class=\"hero-badge\" id=\"academicYearBadge\">\u2726 \u0e1b\u0e35\u0e01\u0e32\u0e23\u0e28\u0e36\u0e01\u0e29\u0e32 \u2726<\/div>\n  <h2 id=\"heroTitle\">\u0e41\u0e1a\u0e1a\u0e1f\u0e2d\u0e23\u0e4c\u0e21\u0e2a\u0e21\u0e31\u0e04\u0e23\u0e40\u0e23\u0e35\u0e22\u0e19\u0e1e\u0e23\u0e30\u0e2d\u0e20\u0e34\u0e18\u0e23\u0e23\u0e21<\/h2>\n  <p id=\"heroSub\">\u0e01\u0e23\u0e2d\u0e01\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e43\u0e2b\u0e49\u0e04\u0e23\u0e1a\u0e16\u0e49\u0e27\u0e19 \u2014 \u0e23\u0e30\u0e1a\u0e1a\u0e08\u0e30\u0e2d\u0e2d\u0e01\u0e23\u0e2b\u0e31\u0e2a\u0e0a\u0e31\u0e48\u0e27\u0e04\u0e23\u0e32\u0e27\u0e43\u0e2b\u0e49\u0e2b\u0e25\u0e31\u0e07\u0e2a\u0e21\u0e31\u0e04\u0e23\u0e2a\u0e33\u0e40\u0e23\u0e47\u0e08<\/p>\n<\/div>\n<div class=\"main-wrap\">\n<div class=\"mode-switch\" role=\"tablist\" aria-label=\"\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e1a\u0e23\u0e34\u0e01\u0e32\u0e23\">\n  <button type=\"button\" id=\"modeRegister\" class=\"active\" role=\"tab\" aria-selected=\"true\" aria-controls=\"regForm\" onclick=\"setAppMode('register',true)\">\ud83d\udcdd <span id=\"modeRegisterText\">\u0e2a\u0e21\u0e31\u0e04\u0e23\u0e40\u0e23\u0e35\u0e22\u0e19<\/span><\/button>\n  <button type=\"button\" id=\"modeStatus\" role=\"tab\" aria-selected=\"false\" aria-controls=\"statusPanel\" onclick=\"setAppMode('status',true)\">\ud83d\udd0e <span id=\"modeStatusText\">\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e2a\u0e16\u0e32\u0e19\u0e30<\/span><\/button>\n<\/div>\n<form id=\"regForm\" class=\"mode-panel\" role=\"tabpanel\" aria-labelledby=\"modeRegister\" novalidate>\n  <div class=\"draft-bar\" id=\"draftBar\" role=\"status\" hidden>\n    <span class=\"draft-bar-icon\" aria-hidden=\"true\">\u21ba<\/span>\n    <span class=\"draft-bar-text\">\n      <strong id=\"draftBarTitle\">\u0e01\u0e39\u0e49\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e17\u0e35\u0e48\u0e01\u0e23\u0e2d\u0e01\u0e04\u0e49\u0e32\u0e07\u0e44\u0e27\u0e49\u0e43\u0e2b\u0e49\u0e41\u0e25\u0e49\u0e27<\/strong>\n      <span id=\"draftBarNote\">\u0e40\u0e01\u0e47\u0e1a\u0e44\u0e27\u0e49\u0e43\u0e19\u0e40\u0e04\u0e23\u0e37\u0e48\u0e2d\u0e07\u0e19\u0e35\u0e49 24 \u0e0a\u0e31\u0e48\u0e27\u0e42\u0e21\u0e07 \u2014 \u0e23\u0e39\u0e1b\u0e20\u0e32\u0e1e\u0e15\u0e49\u0e2d\u0e07\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e43\u0e2b\u0e21\u0e48<\/span>\n    <\/span>\n    <button type=\"button\" class=\"draft-bar-clear\" id=\"draftClearBtn\" onclick=\"discardDraft()\">\u0e25\u0e49\u0e32\u0e07\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25<\/button>\n  <\/div>\n  <!-- \u0e41\u0e2a\u0e14\u0e07\u0e40\u0e21\u0e37\u0e48\u0e2d\u0e01\u0e33\u0e25\u0e31\u0e07\u0e41\u0e01\u0e49\u0e44\u0e02\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e17\u0e35\u0e48\u0e40\u0e04\u0e22\u0e2a\u0e21\u0e31\u0e04\u0e23\u0e44\u0e27\u0e49 (\u0e21\u0e32\u0e08\u0e32\u0e01\u0e1b\u0e38\u0e48\u0e21 \"\u0e41\u0e01\u0e49\u0e44\u0e02\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\" \u0e43\u0e19\u0e2b\u0e19\u0e49\u0e32\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e2a\u0e16\u0e32\u0e19\u0e30) -->\n  <div class=\"draft-bar\" id=\"editModeBar\" role=\"status\" hidden>\n    <span class=\"draft-bar-icon\" aria-hidden=\"true\">\u270f\ufe0f<\/span>\n    <span class=\"draft-bar-text\">\n      <strong id=\"editModeBarTitle\">\u0e01\u0e33\u0e25\u0e31\u0e07\u0e41\u0e01\u0e49\u0e44\u0e02\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25<\/strong>\n      <span id=\"editModeBarNote\">\u0e41\u0e01\u0e49\u0e40\u0e09\u0e1e\u0e32\u0e30\u0e08\u0e38\u0e14\u0e17\u0e35\u0e48\u0e1c\u0e34\u0e14 \u0e41\u0e25\u0e49\u0e27\u0e01\u0e14\u0e1a\u0e31\u0e19\u0e17\u0e36\u0e01\u0e14\u0e49\u0e32\u0e19\u0e25\u0e48\u0e32\u0e07<\/span>\n    <\/span>\n    <button type=\"button\" class=\"draft-bar-clear\" id=\"editModeCancelBtn\" onclick=\"cancelEditMode()\">\u0e22\u0e01\u0e40\u0e25\u0e34\u0e01<\/button>\n  <\/div>\n  <nav class=\"form-progress\" aria-label=\"\u0e04\u0e27\u0e32\u0e21\u0e04\u0e37\u0e1a\u0e2b\u0e19\u0e49\u0e32\u0e01\u0e32\u0e23\u0e01\u0e23\u0e2d\u0e01\u0e41\u0e1a\u0e1a\u0e1f\u0e2d\u0e23\u0e4c\u0e21\">\n    <button type=\"button\" class=\"progress-step active\" data-target=\"cardPersonal\"><span class=\"step-no\">1<\/span><span id=\"stepPersonal\">\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e2a\u0e48\u0e27\u0e19\u0e15\u0e31\u0e27<\/span><\/button>\n    <button type=\"button\" class=\"progress-step\" data-target=\"cardAddress\"><span class=\"step-no\">2<\/span><span id=\"stepAddress\">\u0e17\u0e35\u0e48\u0e2d\u0e22\u0e39\u0e48<\/span><\/button>\n    <button type=\"button\" class=\"progress-step\" data-target=\"cardLocation\"><span class=\"step-no\">3<\/span><span id=\"stepLocation\">\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\/\u0e2b\u0e19\u0e48\u0e27\u0e22\u0e1a\u0e23\u0e34\u0e01\u0e32\u0e23<\/span><\/button>\n    <button type=\"button\" class=\"progress-step\" data-target=\"cardPhoto\"><span class=\"step-no\">4<\/span><span id=\"stepPhoto\">\u0e23\u0e39\u0e1b\u0e41\u0e25\u0e30\u0e22\u0e37\u0e19\u0e22\u0e31\u0e19<\/span><\/button>\n  <\/nav>\n  <!-- \u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e2a\u0e48\u0e27\u0e19\u0e15\u0e31\u0e27 -->\n  <div class=\"card\" id=\"cardPersonal\">\n    <div class=\"card-header\">\n      <div class=\"card-header-icon\">\n        <svg viewBox=\"0 0 24 24\"><circle cx=\"12\" cy=\"8\" r=\"4\"\/><path d=\"M4 20c0-4 3.6-7 8-7s8 3 8 7\"\/><\/svg>\n      <\/div>\n      <h3 id=\"secPersonal\">\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e2a\u0e48\u0e27\u0e19\u0e15\u0e31\u0e27<\/h3>\n    <\/div>\n    <div class=\"card-body\">\n      <div class=\"form-grid\">\n        <div class=\"field span-1\">\n          <label for=\"prefix\" id=\"lbPrefix\">\u0e04\u0e33\u0e19\u0e33\u0e2b\u0e19\u0e49\u0e32 <span class=\"req\">*<\/span><\/label>\n          <select id=\"prefix\" name=\"prefix\" onchange=\"onPrefixChange()\" required>\n            <option value=\"\">\u2014 \u0e40\u0e25\u0e37\u0e2d\u0e01\u0e04\u0e33\u0e19\u0e33\u0e2b\u0e19\u0e49\u0e32 \u2014<\/option>\n            <optgroup label=\"\u0e06\u0e23\u0e32\u0e27\u0e32\u0e2a\">\n              <option value=\"\u0e19\u0e32\u0e22\">\u0e19\u0e32\u0e22<\/option>\n              <option value=\"\u0e19\u0e32\u0e07\">\u0e19\u0e32\u0e07<\/option>\n              <option value=\"\u0e19\u0e32\u0e07\u0e2a\u0e32\u0e27\">\u0e19\u0e32\u0e07\u0e2a\u0e32\u0e27<\/option>\n              <option value=\"\u0e14.\u0e0a.\">\u0e14.\u0e0a.<\/option>\n              <option value=\"\u0e14.\u0e0d.\">\u0e14.\u0e0d.<\/option>\n            <\/optgroup>\n            <optgroup label=\"\u0e27\u0e38\u0e12\u0e34\u0e17\u0e32\u0e07\u0e27\u0e34\u0e0a\u0e32\u0e01\u0e32\u0e23\">\n              <option value=\"\u0e14\u0e23.\">\u0e14\u0e23.<\/option>\n              <option value=\"\u0e1c\u0e28.\">\u0e1c\u0e28.<\/option>\n              <option value=\"\u0e1c\u0e28.\u0e14\u0e23.\">\u0e1c\u0e28.\u0e14\u0e23.<\/option>\n              <option value=\"\u0e23\u0e28.\">\u0e23\u0e28.<\/option>\n              <option value=\"\u0e23\u0e28.\u0e14\u0e23.\">\u0e23\u0e28.\u0e14\u0e23.<\/option>\n              <option value=\"\u0e28.\">\u0e28.<\/option>\n              <option value=\"\u0e28.\u0e14\u0e23.\">\u0e28.\u0e14\u0e23.<\/option>\n            <\/optgroup>\n            <optgroup label=\"\u0e1e\u0e23\u0e30\u0e20\u0e34\u0e01\u0e29\u0e38 \/ \u0e2a\u0e32\u0e21\u0e40\u0e13\u0e23\">\n              <option value=\"\u0e1e\u0e23\u0e30\">\u0e1e\u0e23\u0e30<\/option>\n              <option value=\"\u0e2a\u0e32\u0e21\u0e40\u0e13\u0e23\">\u0e2a\u0e32\u0e21\u0e40\u0e13\u0e23<\/option>\n              <option value=\"\u0e1e\u0e23\u0e30\u0e21\u0e2b\u0e32\">\u0e1e\u0e23\u0e30\u0e21\u0e2b\u0e32<\/option>\n              <option value=\"\u0e1e\u0e23\u0e30\u0e2d\u0e18\u0e34\u0e01\u0e32\u0e23\">\u0e1e\u0e23\u0e30\u0e2d\u0e18\u0e34\u0e01\u0e32\u0e23<\/option>\n              <option value=\"\u0e40\u0e08\u0e49\u0e32\u0e2d\u0e18\u0e34\u0e01\u0e32\u0e23\">\u0e40\u0e08\u0e49\u0e32\u0e2d\u0e18\u0e34\u0e01\u0e32\u0e23<\/option>\n              <option value=\"\u0e1e\u0e23\u0e30\u0e1b\u0e25\u0e31\u0e14\">\u0e1e\u0e23\u0e30\u0e1b\u0e25\u0e31\u0e14<\/option>\n              <option value=\"\u0e1e\u0e23\u0e30\u0e2a\u0e21\u0e38\u0e2b\u0e4c\">\u0e1e\u0e23\u0e30\u0e2a\u0e21\u0e38\u0e2b\u0e4c<\/option>\n              <option value=\"\u0e1e\u0e23\u0e30\u0e43\u0e1a\u0e0e\u0e35\u0e01\u0e32\">\u0e1e\u0e23\u0e30\u0e43\u0e1a\u0e0e\u0e35\u0e01\u0e32<\/option>\n              <option value=\"\u0e1e\u0e23\u0e30\u0e04\u0e23\u0e39\">\u0e1e\u0e23\u0e30\u0e04\u0e23\u0e39<\/option>\n              <option value=\"\u0e1e\u0e23\u0e30\u0e04\u0e23\u0e39\u0e1b\u0e25\u0e31\u0e14\">\u0e1e\u0e23\u0e30\u0e04\u0e23\u0e39\u0e1b\u0e25\u0e31\u0e14<\/option>\n              <option value=\"\u0e1e\u0e23\u0e30\u0e04\u0e23\u0e39\u0e18\u0e23\u0e23\u0e21\u0e18\u0e23\">\u0e1e\u0e23\u0e30\u0e04\u0e23\u0e39\u0e18\u0e23\u0e23\u0e21\u0e18\u0e23<\/option>\n              <option value=\"\u0e1e\u0e23\u0e30\u0e04\u0e23\u0e39\u0e27\u0e34\u0e19\u0e31\u0e22\u0e18\u0e23\">\u0e1e\u0e23\u0e30\u0e04\u0e23\u0e39\u0e27\u0e34\u0e19\u0e31\u0e22\u0e18\u0e23<\/option>\n              <option value=\"\u0e1e\u0e23\u0e30\u0e04\u0e23\u0e39\u0e2a\u0e31\u0e07\u0e06\u0e23\u0e31\u0e01\u0e29\u0e4c\">\u0e1e\u0e23\u0e30\u0e04\u0e23\u0e39\u0e2a\u0e31\u0e07\u0e06\u0e23\u0e31\u0e01\u0e29\u0e4c<\/option>\n              <option value=\"\u0e1e\u0e23\u0e30\u0e04\u0e23\u0e39\u0e2a\u0e21\u0e38\u0e2b\u0e4c\">\u0e1e\u0e23\u0e30\u0e04\u0e23\u0e39\u0e2a\u0e21\u0e38\u0e2b\u0e4c<\/option>\n              <option value=\"\u0e1e\u0e23\u0e30\u0e04\u0e23\u0e39\u0e43\u0e1a\u0e0e\u0e35\u0e01\u0e32\">\u0e1e\u0e23\u0e30\u0e04\u0e23\u0e39\u0e43\u0e1a\u0e0e\u0e35\u0e01\u0e32<\/option>\n            <\/optgroup>\n            <optgroup label=\"\u0e20\u0e34\u0e01\u0e29\u0e38\u0e13\u0e35 \/ \u0e19\u0e31\u0e01\u0e1a\u0e27\u0e0a\u0e2b\u0e0d\u0e34\u0e07\">\n              <option value=\"\u0e20\u0e34\u0e01\u0e29\u0e38\u0e13\u0e35\">\u0e20\u0e34\u0e01\u0e29\u0e38\u0e13\u0e35<\/option>\n              <option value=\"\u0e2a\u0e32\u0e21\u0e40\u0e13\u0e23\u0e35\">\u0e2a\u0e32\u0e21\u0e40\u0e13\u0e23\u0e35<\/option>\n              <option value=\"\u0e41\u0e21\u0e48\u0e0a\u0e35\">\u0e41\u0e21\u0e48\u0e0a\u0e35<\/option>\n            <\/optgroup>\n          <\/select>\n        <\/div>\n        <div class=\"field span-1\">\n          <label for=\"firstName\" id=\"firstNameLabel\">\u0e0a\u0e37\u0e48\u0e2d <span class=\"req\">*<\/span><\/label>\n          <input type=\"text\" id=\"firstName\" name=\"firstName\" placeholder=\"\u0e0a\u0e37\u0e48\u0e2d \/ \u0e09\u0e32\u0e22\u0e32\" required>\n        <\/div>\n        <div class=\"field span-1\" id=\"lastNameField\">\n          <label for=\"lastName\" id=\"lastNameLabel\">\u0e19\u0e32\u0e21\u0e2a\u0e01\u0e38\u0e25<\/label>\n          <input type=\"text\" id=\"lastName\" name=\"lastName\" placeholder=\"\u0e19\u0e32\u0e21\u0e2a\u0e01\u0e38\u0e25\">\n        <\/div>\n        <div class=\"field span-1 monk-only\" id=\"templeFieldWrap\">\n          <label for=\"temple\" id=\"lbTemple\">\u0e27\u0e31\u0e14 \/ \u0e2a\u0e33\u0e19\u0e31\u0e01<\/label>\n          <input type=\"text\" id=\"temple\" name=\"temple\" placeholder=\"\u0e0a\u0e37\u0e48\u0e2d\u0e27\u0e31\u0e14 \/ \u0e2a\u0e33\u0e19\u0e31\u0e01\">\n        <\/div>\n        <div class=\"field span-1\">\n          <label id=\"lbBirthdate\">\u0e27\u0e31\u0e19\u0e40\u0e14\u0e37\u0e2d\u0e19\u0e1b\u0e35\u0e40\u0e01\u0e34\u0e14 (\u0e1e.\u0e28.) <span class=\"req\">*<\/span><\/label>\n          <div class=\"birthdate-grid\">\n            <select id=\"birthDay\" aria-label=\"\u0e27\u0e31\u0e19\u0e40\u0e01\u0e34\u0e14\"><\/select>\n            <select id=\"birthMonth\" aria-label=\"\u0e40\u0e14\u0e37\u0e2d\u0e19\u0e40\u0e01\u0e34\u0e14\"><\/select>\n            <input type=\"text\" id=\"birthYear\" aria-label=\"\u0e1b\u0e35\u0e40\u0e01\u0e34\u0e14\" inputmode=\"numeric\" maxlength=\"4\" autocomplete=\"off\" placeholder=\"\u0e1b\u0e35 2510\">\n          <\/div>\n          <input type=\"hidden\" id=\"birthdate\" name=\"birthdate\" required>\n        <\/div>\n        <div class=\"field span-1\">\n          <label for=\"phone\" id=\"lbPhone\">\u0e42\u0e17\u0e23\u0e28\u0e31\u0e1e\u0e17\u0e4c <span class=\"req\">*<\/span><\/label>\n          <input type=\"tel\" id=\"phone\" name=\"phone\" placeholder=\"08x-xxx-xxxx\" autocomplete=\"tel\" inputmode=\"tel\" required maxlength=\"15\">\n        <\/div>\n        <div class=\"field span-2\">\n          <label for=\"education\" id=\"lbEducation\">\u0e27\u0e38\u0e12\u0e34\u0e01\u0e32\u0e23\u0e28\u0e36\u0e01\u0e29\u0e32\u0e2a\u0e32\u0e21\u0e31\u0e0d <span class=\"opt\">(\u0e17\u0e32\u0e07\u0e42\u0e25\u0e01 \u2014 \u0e44\u0e21\u0e48\u0e1a\u0e31\u0e07\u0e04\u0e31\u0e1a)<\/span><\/label>\n          <select id=\"education\" name=\"education\">\n            <option value=\"\">\u2014 \u0e44\u0e21\u0e48\u0e23\u0e30\u0e1a\u0e38 \u2014<\/option>\n            <option value=\"\u0e1b\u0e23\u0e30\u0e16\u0e21\u0e28\u0e36\u0e01\u0e29\u0e32\">\u0e1b\u0e23\u0e30\u0e16\u0e21\u0e28\u0e36\u0e01\u0e29\u0e32<\/option>\n            <option value=\"\u0e21\u0e31\u0e18\u0e22\u0e21\u0e28\u0e36\u0e01\u0e29\u0e32\u0e15\u0e2d\u0e19\u0e15\u0e49\u0e19 (\u0e21.3)\">\u0e21\u0e31\u0e18\u0e22\u0e21\u0e28\u0e36\u0e01\u0e29\u0e32\u0e15\u0e2d\u0e19\u0e15\u0e49\u0e19 (\u0e21.3)<\/option>\n            <option value=\"\u0e21\u0e31\u0e18\u0e22\u0e21\u0e28\u0e36\u0e01\u0e29\u0e32\u0e15\u0e2d\u0e19\u0e1b\u0e25\u0e32\u0e22 (\u0e21.6)\">\u0e21\u0e31\u0e18\u0e22\u0e21\u0e28\u0e36\u0e01\u0e29\u0e32\u0e15\u0e2d\u0e19\u0e1b\u0e25\u0e32\u0e22 (\u0e21.6)<\/option>\n            <option value=\"\u0e1b\u0e27\u0e0a.\">\u0e1b\u0e27\u0e0a.<\/option>\n            <option value=\"\u0e1b\u0e27\u0e2a. \/ \u0e2d\u0e19\u0e38\u0e1b\u0e23\u0e34\u0e0d\u0e0d\u0e32\">\u0e1b\u0e27\u0e2a. \/ \u0e2d\u0e19\u0e38\u0e1b\u0e23\u0e34\u0e0d\u0e0d\u0e32<\/option>\n            <option value=\"\u0e1b\u0e23\u0e34\u0e0d\u0e0d\u0e32\u0e15\u0e23\u0e35\">\u0e1b\u0e23\u0e34\u0e0d\u0e0d\u0e32\u0e15\u0e23\u0e35<\/option>\n            <option value=\"\u0e1b\u0e23\u0e34\u0e0d\u0e0d\u0e32\u0e42\u0e17\">\u0e1b\u0e23\u0e34\u0e0d\u0e0d\u0e32\u0e42\u0e17<\/option>\n            <option value=\"\u0e1b\u0e23\u0e34\u0e0d\u0e0d\u0e32\u0e40\u0e2d\u0e01\">\u0e1b\u0e23\u0e34\u0e0d\u0e0d\u0e32\u0e40\u0e2d\u0e01<\/option>\n          <\/select>\n        <\/div>\n        <div class=\"field span-1\">\n          <label for=\"pali\" id=\"lbPali\">\u0e40\u0e1b\u0e23\u0e35\u0e22\u0e0d\u0e18\u0e23\u0e23\u0e21 (\u0e1a\u0e32\u0e25\u0e35) <span class=\"opt\">(\u0e44\u0e21\u0e48\u0e1a\u0e31\u0e07\u0e04\u0e31\u0e1a)<\/span><\/label>\n          <select id=\"pali\" name=\"pali\">\n            <option value=\"\">\u2014 \u0e44\u0e21\u0e48\u0e23\u0e30\u0e1a\u0e38 \u2014<\/option>\n            <option value=\"\u0e1b\u0e23\u0e30\u0e42\u0e22\u0e04 1-2\">\u0e1b\u0e23\u0e30\u0e42\u0e22\u0e04 1-2<\/option>\n            <option value=\"\u0e1b.\u0e18.3\">\u0e1b.\u0e18.3<\/option><option value=\"\u0e1b.\u0e18.4\">\u0e1b.\u0e18.4<\/option>\n            <option value=\"\u0e1b.\u0e18.5\">\u0e1b.\u0e18.5<\/option><option value=\"\u0e1b.\u0e18.6\">\u0e1b.\u0e18.6<\/option>\n            <option value=\"\u0e1b.\u0e18.7\">\u0e1b.\u0e18.7<\/option><option value=\"\u0e1b.\u0e18.8\">\u0e1b.\u0e18.8<\/option>\n            <option value=\"\u0e1b.\u0e18.9\">\u0e1b.\u0e18.9<\/option>\n          <\/select>\n        <\/div>\n        <div class=\"field span-1\">\n          <label for=\"dhamma\" id=\"lbDhamma\">\u0e19\u0e31\u0e01\u0e18\u0e23\u0e23\u0e21 \/ \u0e18\u0e23\u0e23\u0e21\u0e28\u0e36\u0e01\u0e29\u0e32 <span class=\"opt\">(\u0e44\u0e21\u0e48\u0e1a\u0e31\u0e07\u0e04\u0e31\u0e1a)<\/span><\/label>\n          <select id=\"dhamma\" name=\"dhamma\">\n            <option value=\"\">\u2014 \u0e44\u0e21\u0e48\u0e23\u0e30\u0e1a\u0e38 \u2014<\/option>\n            <optgroup label=\"\u0e1e\u0e23\u0e30\u0e20\u0e34\u0e01\u0e29\u0e38 \/ \u0e2a\u0e32\u0e21\u0e40\u0e13\u0e23\">\n              <option value=\"\u0e19\u0e31\u0e01\u0e18\u0e23\u0e23\u0e21\u0e0a\u0e31\u0e49\u0e19\u0e15\u0e23\u0e35\">\u0e19\u0e31\u0e01\u0e18\u0e23\u0e23\u0e21\u0e0a\u0e31\u0e49\u0e19\u0e15\u0e23\u0e35<\/option>\n              <option value=\"\u0e19\u0e31\u0e01\u0e18\u0e23\u0e23\u0e21\u0e0a\u0e31\u0e49\u0e19\u0e42\u0e17\">\u0e19\u0e31\u0e01\u0e18\u0e23\u0e23\u0e21\u0e0a\u0e31\u0e49\u0e19\u0e42\u0e17<\/option>\n              <option value=\"\u0e19\u0e31\u0e01\u0e18\u0e23\u0e23\u0e21\u0e0a\u0e31\u0e49\u0e19\u0e40\u0e2d\u0e01\">\u0e19\u0e31\u0e01\u0e18\u0e23\u0e23\u0e21\u0e0a\u0e31\u0e49\u0e19\u0e40\u0e2d\u0e01<\/option>\n            <\/optgroup>\n            <optgroup label=\"\u0e06\u0e23\u0e32\u0e27\u0e32\u0e2a\">\n              <option value=\"\u0e18\u0e23\u0e23\u0e21\u0e28\u0e36\u0e01\u0e29\u0e32\u0e0a\u0e31\u0e49\u0e19\u0e15\u0e23\u0e35\">\u0e18\u0e23\u0e23\u0e21\u0e28\u0e36\u0e01\u0e29\u0e32\u0e0a\u0e31\u0e49\u0e19\u0e15\u0e23\u0e35<\/option>\n              <option value=\"\u0e18\u0e23\u0e23\u0e21\u0e28\u0e36\u0e01\u0e29\u0e32\u0e0a\u0e31\u0e49\u0e19\u0e42\u0e17\">\u0e18\u0e23\u0e23\u0e21\u0e28\u0e36\u0e01\u0e29\u0e32\u0e0a\u0e31\u0e49\u0e19\u0e42\u0e17<\/option>\n              <option value=\"\u0e18\u0e23\u0e23\u0e21\u0e28\u0e36\u0e01\u0e29\u0e32\u0e0a\u0e31\u0e49\u0e19\u0e40\u0e2d\u0e01\">\u0e18\u0e23\u0e23\u0e21\u0e28\u0e36\u0e01\u0e29\u0e32\u0e0a\u0e31\u0e49\u0e19\u0e40\u0e2d\u0e01<\/option>\n            <\/optgroup>\n          <\/select>\n        <\/div>\n      <\/div>\n    <\/div>\n  <\/div>\n  <!-- \u0e17\u0e35\u0e48\u0e2d\u0e22\u0e39\u0e48 -->\n  <div class=\"card\" id=\"cardAddress\">\n    <div class=\"card-header\">\n      <div class=\"card-header-icon\">\n        <svg viewBox=\"0 0 24 24\"><path d=\"M12 2C8.13 2 5 5.13 5 9c0 5.25 7 13 7 13s7-7.75 7-13c0-3.87-3.13-7-7-7z\"\/><circle cx=\"12\" cy=\"9\" r=\"2.5\"\/><\/svg>\n      <\/div>\n      <h3 id=\"secAddress\">\u0e17\u0e35\u0e48\u0e2d\u0e22\u0e39\u0e48\u0e1b\u0e31\u0e08\u0e08\u0e38\u0e1a\u0e31\u0e19<\/h3>\n    <\/div>\n    <div class=\"card-body\">\n      <div class=\"form-grid\">\n        <div class=\"field span-1\">\n          <label for=\"address\" id=\"lbAddress\">\u0e40\u0e25\u0e02\u0e17\u0e35\u0e48 <span class=\"req\">*<\/span><\/label>\n          <input type=\"text\" id=\"address\" name=\"address\" placeholder=\"\u0e1a\u0e49\u0e32\u0e19\u0e40\u0e25\u0e02\u0e17\u0e35\u0e48\" required>\n        <\/div>\n        <div class=\"field span-1\">\n          <label for=\"soi\" id=\"lbSoi\">\u0e0b\u0e2d\u0e22 \/ \u0e2b\u0e21\u0e39\u0e48 <span class=\"opt\">(\u0e16\u0e49\u0e32\u0e21\u0e35)<\/span><\/label>\n          <input type=\"text\" id=\"soi\" name=\"soi\" placeholder=\"\u0e0b\u0e2d\u0e22 \/ \u0e2b\u0e21\u0e39\u0e48\u0e1a\u0e49\u0e32\u0e19\">\n        <\/div>\n        <div class=\"field span-1\">\n          <label for=\"provinceSearch\" id=\"lbProvince\">\u0e08\u0e31\u0e07\u0e2b\u0e27\u0e31\u0e14 <span class=\"req\">*<\/span><\/label>\n          <!-- \u0e0a\u0e48\u0e2d\u0e07\u0e17\u0e35\u0e48\u0e1c\u0e39\u0e49\u0e43\u0e0a\u0e49\u0e1e\u0e34\u0e21\u0e1e\u0e4c \u2014 \u0e23\u0e30\u0e1a\u0e1a\u0e04\u0e32\u0e14\u0e40\u0e14\u0e32\u0e41\u0e25\u0e30\u0e40\u0e15\u0e34\u0e21\u0e0a\u0e37\u0e48\u0e2d\u0e08\u0e31\u0e07\u0e2b\u0e27\u0e31\u0e14\u0e43\u0e2b\u0e49 \u0e2a\u0e48\u0e27\u0e19\u0e04\u0e48\u0e32\u0e08\u0e23\u0e34\u0e07\u0e40\u0e01\u0e47\u0e1a\u0e43\u0e19 <select id=\"province\"> \u0e17\u0e35\u0e48\u0e0b\u0e48\u0e2d\u0e19\u0e2d\u0e22\u0e39\u0e48 -->\n          <div class=\"combo\" id=\"provinceCombo\">\n            <input type=\"text\" id=\"provinceSearch\" class=\"combo-input\" role=\"combobox\"\n                   aria-expanded=\"false\" aria-autocomplete=\"list\" aria-controls=\"provinceListbox\" aria-haspopup=\"listbox\"\n                   autocomplete=\"off\" autocapitalize=\"off\" spellcheck=\"false\" data-error-proxy=\"province\"\n                   placeholder=\"\u23f3 \u0e01\u0e33\u0e25\u0e31\u0e07\u0e42\u0e2b\u0e25\u0e14\u2026\" disabled>\n            <ul class=\"combo-list\" id=\"provinceListbox\" role=\"listbox\" aria-label=\"\u0e08\u0e31\u0e07\u0e2b\u0e27\u0e31\u0e14\" hidden><\/ul>\n          <\/div>\n          <select id=\"province\" name=\"province\" class=\"combo-native\" data-error-proxy=\"provinceSearch\" tabindex=\"-1\" aria-hidden=\"true\" required>\n            <option value=\"\">\u23f3 \u0e01\u0e33\u0e25\u0e31\u0e07\u0e42\u0e2b\u0e25\u0e14\u2026<\/option>\n          <\/select>\n        <\/div>\n        <div class=\"field span-1\">\n          <label for=\"district\" id=\"lbDistrict\">\u0e2d\u0e33\u0e40\u0e20\u0e2d \/ \u0e40\u0e02\u0e15 <span class=\"req\">*<\/span><\/label>\n          <select id=\"district\" name=\"district\" required disabled>\n            <option value=\"\">\u2014 \u0e40\u0e25\u0e37\u0e2d\u0e01\u0e08\u0e31\u0e07\u0e2b\u0e27\u0e31\u0e14\u0e01\u0e48\u0e2d\u0e19 \u2014<\/option>\n          <\/select>\n        <\/div>\n        <div class=\"field span-1\">\n          <label for=\"subdistrict\" id=\"lbSubdistrict\">\u0e15\u0e33\u0e1a\u0e25 \/ \u0e41\u0e02\u0e27\u0e07 <span class=\"req\">*<\/span><\/label>\n          <select id=\"subdistrict\" name=\"subdistrict\" required disabled>\n            <option value=\"\">\u2014 \u0e40\u0e25\u0e37\u0e2d\u0e01\u0e2d\u0e33\u0e40\u0e20\u0e2d\u0e01\u0e48\u0e2d\u0e19 \u2014<\/option>\n          <\/select>\n        <\/div>\n        <div class=\"field span-1\">\n          <label for=\"postalCode\" id=\"lbPostal\">\u0e23\u0e2b\u0e31\u0e2a\u0e44\u0e1b\u0e23\u0e29\u0e13\u0e35\u0e22\u0e4c <span class=\"req\">*<\/span><\/label>\n          <input type=\"text\" id=\"postalCode\" name=\"postalCode\" placeholder=\"\u0e40\u0e15\u0e34\u0e21\u0e2d\u0e31\u0e15\u0e42\u0e19\u0e21\u0e31\u0e15\u0e34\" maxlength=\"5\" required readonly>\n        <\/div>\n      <\/div>\n    <\/div>\n  <\/div>\n  <!-- \u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e43\u0e01\u0e25\u0e49\u0e1a\u0e49\u0e32\u0e19 -->\n  <div class=\"card\" id=\"cardLocation\">\n    <div class=\"card-header\">\n      <div class=\"card-header-icon\">\n        <svg viewBox=\"0 0 24 24\"><path d=\"M4 10v10h16V10\"\/><path d=\"M2 10l10-7 10 7\"\/><path d=\"M10 20v-6h4v6\"\/><\/svg>\n      <\/div>\n      <h3 id=\"secLocation\">\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\/\u0e2b\u0e19\u0e48\u0e27\u0e22\u0e1a\u0e23\u0e34\u0e01\u0e32\u0e23 <span class=\"req\">*<\/span><\/h3>\n    <\/div>\n    <div class=\"card-body\">\n      <div class=\"field\">\n        <label for=\"serviceLocation\" id=\"lbServiceLocation\">\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e2b\u0e19\u0e48\u0e27\u0e22\u0e1a\u0e23\u0e34\u0e01\u0e32\u0e23\u0e17\u0e35\u0e48\u0e2a\u0e30\u0e14\u0e27\u0e01\u0e40\u0e14\u0e34\u0e19\u0e17\u0e32\u0e07 <span class=\"req\">*<\/span><\/label>\n        <select id=\"serviceLocation\" name=\"serviceLocation\" required>\n          <option value=\"\">\u23f3 \u0e01\u0e33\u0e25\u0e31\u0e07\u0e42\u0e2b\u0e25\u0e14\u0e23\u0e32\u0e22\u0e0a\u0e37\u0e48\u0e2d\u2026<\/option>\n        <\/select>\n        <p id=\"serviceLocationAddr\" class=\"field-help\"><\/p>\n      <\/div>\n    <\/div>\n  <\/div>\n  <!-- \u0e23\u0e39\u0e1b\u0e20\u0e32\u0e1e\u0e41\u0e25\u0e30\u0e40\u0e2d\u0e01\u0e2a\u0e32\u0e23 -->\n  <div class=\"card\" id=\"cardPhoto\">\n    <div class=\"card-header\">\n      <div class=\"card-header-icon\">\n        <svg viewBox=\"0 0 24 24\"><rect x=\"3\" y=\"3\" width=\"18\" height=\"18\" rx=\"2\"\/><circle cx=\"8.5\" cy=\"8.5\" r=\"1.5\"\/><path d=\"M21 15l-5-5L5 21\"\/><\/svg>\n      <\/div>\n      <h3 id=\"secPhoto\">\u0e23\u0e39\u0e1b\u0e16\u0e48\u0e32\u0e22 <span class=\"req\">*<\/span><\/h3>\n    <\/div>\n    <div class=\"card-body\">\n      <div class=\"upload-summary english-only hidden\" id=\"uploadSummary\" aria-live=\"polite\">\n        <div class=\"upload-summary-row\">\n          <span id=\"uploadSummaryLabel\">Document upload progress<\/span>\n          <span class=\"upload-summary-count\" id=\"uploadSummaryCount\">0 of 4 uploaded<\/span>\n        <\/div>\n        <div class=\"upload-summary-track\"><span class=\"upload-summary-bar\" id=\"uploadSummaryBar\"><\/span><\/div>\n      <\/div>\n      <div class=\"document-upload-grid\">\n        <div class=\"document-upload-tile\" id=\"photoTile\">\n          <div class=\"upload-tile-head\">\n            <span class=\"upload-step-no\">1<\/span>\n            <strong class=\"upload-tile-title\" id=\"photoTileTitle\">\u0e20\u0e32\u0e1e\u0e16\u0e48\u0e32\u0e22\u0e2b\u0e19\u0e49\u0e32\u0e15\u0e23\u0e07<\/strong>\n            <span class=\"required-chip\" id=\"photoRequiredChip\">\u0e08\u0e33\u0e40\u0e1b\u0e47\u0e19<\/span>\n          <\/div>\n          <div class=\"upload-tile-body photo-upload-wrap\">\n            <div class=\"photo-preview\" id=\"photoPreview\" role=\"button\" tabindex=\"0\" aria-label=\"\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e23\u0e39\u0e1b\u0e16\u0e48\u0e32\u0e22\" onclick=\"document.getElementById('photoInput').click()\" onkeydown=\"if(event.key==='Enter'||event.key===' '){event.preventDefault();document.getElementById('photoInput').click();}\">\n              <img id=\"photoImg\" alt=\"\u0e23\u0e39\u0e1b\u0e16\u0e48\u0e32\u0e22\">\n              <div class=\"photo-preview-placeholder\" id=\"photoPlaceholder\">\n                <svg viewBox=\"0 0 24 24\"><rect x=\"3\" y=\"3\" width=\"18\" height=\"18\" rx=\"2\"\/><circle cx=\"12\" cy=\"10\" r=\"3\"\/><path d=\"M6 20c0-3.3 2.7-5 6-5s6 1.7 6 5\"\/><\/svg>\n                <span id=\"photoPlaceholderText\">\u0e04\u0e25\u0e34\u0e01\u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e2d\u0e31\u0e1b\u0e42\u0e2b\u0e25\u0e14<\/span>\n              <\/div>\n            <\/div>\n            <div class=\"upload-tile-info photo-upload-info\">\n              <p class=\"doc-guidance\" id=\"photoHint\">\u2022 \u0e23\u0e39\u0e1b\u0e2b\u0e19\u0e49\u0e32\u0e15\u0e23\u0e07 \u0e02\u0e19\u0e32\u0e14 1 \u0e19\u0e34\u0e49\u0e27 \u0e2b\u0e23\u0e37\u0e2d 3x4 \u0e0b\u0e21.<br>\u2022 \u0e44\u0e1f\u0e25\u0e4c JPG, PNG \u0e02\u0e19\u0e32\u0e14\u0e44\u0e21\u0e48\u0e40\u0e01\u0e34\u0e19 10 MB<br>\u2022 \u0e41\u0e15\u0e48\u0e07\u0e01\u0e32\u0e22\u0e2a\u0e38\u0e20\u0e32\u0e1e \/ \u0e04\u0e23\u0e2d\u0e07\u0e08\u0e35\u0e27\u0e23\u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a\u0e1e\u0e23\u0e30\u0e2a\u0e07\u0e06\u0e4c<\/p>\n              <div class=\"upload-actions\">\n                <label class=\"btn-upload\" for=\"photoInput\" id=\"btnPhoto\">\ud83d\udcf7 \u0e40\u0e25\u0e37\u0e2d\u0e01\u0e23\u0e39\u0e1b\u0e20\u0e32\u0e1e<\/label>\n                <label class=\"btn-upload btn-camera\" for=\"photoCameraInput\" id=\"btnPhotoCamera\">\ud83d\udcf8 \u0e16\u0e48\u0e32\u0e22\u0e20\u0e32\u0e1e<\/label>\n                <button type=\"button\" class=\"btn-photo-remove\" id=\"btnPhotoRemove\" hidden onclick=\"removePhoto()\">\u2715 <span id=\"btnPhotoRemoveText\">\u0e25\u0e1a\u0e23\u0e39\u0e1b<\/span><\/button>\n              <\/div>\n              <input type=\"file\" id=\"photoInput\" accept=\"image\/jpeg,image\/png\" onchange=\"onPhotoChange(event)\">\n              <!-- capture=user \u0e40\u0e1b\u0e34\u0e14\u0e01\u0e25\u0e49\u0e2d\u0e07\u0e2b\u0e19\u0e49\u0e32\u0e40\u0e1b\u0e47\u0e19\u0e04\u0e48\u0e32\u0e40\u0e23\u0e34\u0e48\u0e21\u0e15\u0e49\u0e19 (\u0e2a\u0e25\u0e31\u0e1a\u0e40\u0e1b\u0e47\u0e19\u0e01\u0e25\u0e49\u0e2d\u0e07\u0e2b\u0e25\u0e31\u0e07\u0e44\u0e14\u0e49\u0e43\u0e19\u0e41\u0e2d\u0e1b\u0e01\u0e25\u0e49\u0e2d\u0e07) -->\n              <input type=\"file\" id=\"photoCameraInput\" accept=\"image\/jpeg,image\/png\" capture=\"user\" onchange=\"onPhotoChange(event)\">\n            <\/div>\n          <\/div>\n        <\/div>\n\n        <div class=\"foreign-docs-panel hidden\" id=\"foreignDocsCard\">\n          <div class=\"document-upload-tile\" id=\"passportTile\">\n            <div class=\"upload-tile-head\">\n              <span class=\"upload-step-no\">2<\/span>\n              <strong class=\"upload-tile-title\" id=\"lbPassport\">Passport first page<\/strong>\n              <span class=\"required-chip\" id=\"passportRequiredChip\">Required<\/span>\n            <\/div>\n            <div class=\"upload-tile-body\">\n              <div class=\"doc-preview\" id=\"passportPreview\" role=\"button\" tabindex=\"0\" onclick=\"document.getElementById('passportInput').click()\" onkeydown=\"if(event.key==='Enter'||event.key===' '){event.preventDefault();document.getElementById('passportInput').click();}\">\n                <img id=\"passportImg\" alt=\"Passport first page preview\">\n                <div class=\"doc-placeholder\" id=\"passportPlaceholder\"><svg viewBox=\"0 0 24 24\"><path d=\"M6 2h9l4 4v16H6z\"\/><path d=\"M14 2v5h5M9 12h7M9 16h7\"\/><\/svg><span id=\"passportPlaceholderText\">Click to upload<\/span><\/div>\n              <\/div>\n              <div class=\"upload-tile-info\">\n                <p class=\"doc-guidance\" id=\"passportHint\">Upload the page containing your photo and personal details.<\/p>\n                <div class=\"upload-actions\">\n                  <label class=\"btn-upload\" for=\"passportInput\" id=\"btnPassport\">\ud83d\udcf7 Choose file<\/label>\n                  <label class=\"btn-upload btn-camera\" for=\"passportCameraInput\" id=\"btnPassportCamera\">\ud83d\udcf8 Take photo<\/label>\n                  <button type=\"button\" class=\"btn-photo-remove\" id=\"btnPassportRemove\" hidden onclick=\"removeDoc('passport')\">\u2715 <span id=\"btnPassportRemoveText\">Remove<\/span><\/button>\n                <\/div>\n                <input type=\"file\" id=\"passportInput\" accept=\"image\/jpeg,image\/png\" onchange=\"onDocChange(event,'passport')\">\n                <input type=\"file\" id=\"passportCameraInput\" accept=\"image\/jpeg,image\/png\" capture=\"environment\" onchange=\"onDocChange(event,'passport')\">\n                <p id=\"passportName\" class=\"field-help\"><\/p>\n              <\/div>\n            <\/div>\n          <\/div>\n\n          <div class=\"document-upload-tile\" id=\"visaExpiryTile\">\n            <div class=\"upload-tile-head\">\n              <span class=\"upload-step-no\">3<\/span>\n              <strong class=\"upload-tile-title\" id=\"lbVisaExpiry\">Visa expiry page<\/strong>\n              <span class=\"required-chip\" id=\"visaExpiryRequiredChip\">Required<\/span>\n            <\/div>\n            <div class=\"upload-tile-body\">\n              <div class=\"doc-preview\" id=\"visaExpiryPreview\" role=\"button\" tabindex=\"0\" onclick=\"document.getElementById('visaExpiryInput').click()\" onkeydown=\"if(event.key==='Enter'||event.key===' '){event.preventDefault();document.getElementById('visaExpiryInput').click();}\">\n                <img id=\"visaExpiryImg\" alt=\"Visa expiry page preview\">\n                <div class=\"doc-placeholder\" id=\"visaExpiryPlaceholder\"><svg viewBox=\"0 0 24 24\"><path d=\"M6 2h9l4 4v16H6z\"\/><path d=\"M14 2v5h5M9 12h7M9 16h7\"\/><\/svg><span id=\"visaExpiryPlaceholderText\">Click to upload<\/span><\/div>\n              <\/div>\n              <div class=\"upload-tile-info\">\n                <p class=\"doc-guidance\" id=\"visaExpiryHint\">Make sure the visa expiry date is clearly visible.<\/p>\n                <div class=\"upload-actions\">\n                  <label class=\"btn-upload\" for=\"visaExpiryInput\" id=\"btnVisaExpiry\">\ud83d\udcf7 Choose file<\/label>\n                  <label class=\"btn-upload btn-camera\" for=\"visaExpiryCameraInput\" id=\"btnVisaExpiryCamera\">\ud83d\udcf8 Take photo<\/label>\n                  <button type=\"button\" class=\"btn-photo-remove\" id=\"btnVisaExpiryRemove\" hidden onclick=\"removeDoc('visaExpiry')\">\u2715 <span id=\"btnVisaExpiryRemoveText\">Remove<\/span><\/button>\n                <\/div>\n                <input type=\"file\" id=\"visaExpiryInput\" accept=\"image\/jpeg,image\/png\" onchange=\"onDocChange(event,'visaExpiry')\">\n                <input type=\"file\" id=\"visaExpiryCameraInput\" accept=\"image\/jpeg,image\/png\" capture=\"environment\" onchange=\"onDocChange(event,'visaExpiry')\">\n                <p id=\"visaExpiryName\" class=\"field-help\"><\/p>\n              <\/div>\n            <\/div>\n          <\/div>\n\n          <div class=\"document-upload-tile\" id=\"tm30Tile\">\n            <div class=\"upload-tile-head\">\n              <span class=\"upload-step-no\">4<\/span>\n              <strong class=\"upload-tile-title\" id=\"lbTM30\">TM.30<\/strong>\n              <span class=\"required-chip\" id=\"tm30RequiredChip\">Required<\/span>\n            <\/div>\n            <div class=\"upload-tile-body\">\n              <div class=\"doc-preview\" id=\"tm30Preview\" role=\"button\" tabindex=\"0\" onclick=\"document.getElementById('tm30Input').click()\" onkeydown=\"if(event.key==='Enter'||event.key===' '){event.preventDefault();document.getElementById('tm30Input').click();}\">\n                <img id=\"tm30Img\" alt=\"TM.30 preview\">\n                <div class=\"doc-placeholder\" id=\"tm30Placeholder\"><svg viewBox=\"0 0 24 24\"><path d=\"M6 2h9l4 4v16H6z\"\/><path d=\"M14 2v5h5M9 12h7M9 16h7\"\/><\/svg><span id=\"tm30PlaceholderText\">Click to upload<\/span><\/div>\n              <\/div>\n              <div class=\"upload-tile-info\">\n                <p class=\"doc-guidance\" id=\"tm30Hint\">Upload a clear and complete image of the TM.30 document.<\/p>\n                <div class=\"upload-actions\">\n                  <label class=\"btn-upload\" for=\"tm30Input\" id=\"btnTM30\">\ud83d\udcf7 Choose file<\/label>\n                  <label class=\"btn-upload btn-camera\" for=\"tm30CameraInput\" id=\"btnTM30Camera\">\ud83d\udcf8 Take photo<\/label>\n                  <button type=\"button\" class=\"btn-photo-remove\" id=\"btnTM30Remove\" hidden onclick=\"removeDoc('tm30')\">\u2715 <span id=\"btnTM30RemoveText\">Remove<\/span><\/button>\n                <\/div>\n                <input type=\"file\" id=\"tm30Input\" accept=\"image\/jpeg,image\/png\" onchange=\"onDocChange(event,'tm30')\">\n                <input type=\"file\" id=\"tm30CameraInput\" accept=\"image\/jpeg,image\/png\" capture=\"environment\" onchange=\"onDocChange(event,'tm30')\">\n                <p id=\"tm30Name\" class=\"field-help\"><\/p>\n              <\/div>\n            <\/div>\n          <\/div>\n        <\/div>\n      <\/div>\n    <\/div>\n  <\/div>\n  <!-- \u0e22\u0e34\u0e19\u0e22\u0e2d\u0e21 -->\n  <div class=\"card\" id=\"cardConfirm\">\n    <div class=\"card-body\">\n      <div class=\"consent-box\" id=\"consentText\">\n        \u0e02\u0e49\u0e32\u0e1e\u0e40\u0e08\u0e49\u0e32\u0e22\u0e34\u0e19\u0e22\u0e2d\u0e21\u0e43\u0e2b\u0e49\u0e2d\u0e20\u0e34\u0e18\u0e23\u0e23\u0e21\u0e42\u0e0a\u0e15\u0e34\u0e01\u0e30\u0e27\u0e34\u0e17\u0e22\u0e32\u0e25\u0e31\u0e22 \u0e21\u0e2b\u0e32\u0e27\u0e34\u0e17\u0e22\u0e32\u0e25\u0e31\u0e22\u0e21\u0e2b\u0e32\u0e08\u0e38\u0e2c\u0e32\u0e25\u0e07\u0e01\u0e23\u0e13\u0e23\u0e32\u0e0a\u0e27\u0e34\u0e17\u0e22\u0e32\u0e25\u0e31\u0e22\n        \u0e40\u0e01\u0e47\u0e1a\u0e23\u0e27\u0e1a\u0e23\u0e27\u0e21\u0e41\u0e25\u0e30\u0e43\u0e0a\u0e49\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e2a\u0e48\u0e27\u0e19\u0e1a\u0e38\u0e04\u0e04\u0e25\u0e17\u0e35\u0e48\u0e43\u0e2b\u0e49\u0e44\u0e27\u0e49\u0e43\u0e19\u0e41\u0e1a\u0e1a\u0e1f\u0e2d\u0e23\u0e4c\u0e21\u0e19\u0e35\u0e49 \u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e27\u0e31\u0e15\u0e16\u0e38\u0e1b\u0e23\u0e30\u0e2a\u0e07\u0e04\u0e4c\u0e43\u0e19\u0e01\u0e32\u0e23\u0e2a\u0e21\u0e31\u0e04\u0e23\u0e40\u0e23\u0e35\u0e22\u0e19\n        \u0e01\u0e32\u0e23\u0e15\u0e34\u0e14\u0e15\u0e48\u0e2d\u0e2a\u0e37\u0e48\u0e2d\u0e2a\u0e32\u0e23 \u0e41\u0e25\u0e30\u0e01\u0e32\u0e23\u0e08\u0e31\u0e14\u0e01\u0e32\u0e23\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e19\u0e31\u0e01\u0e28\u0e36\u0e01\u0e29\u0e32 \u0e15\u0e32\u0e21\u0e1e\u0e23\u0e30\u0e23\u0e32\u0e0a\u0e1a\u0e31\u0e0d\u0e0d\u0e31\u0e15\u0e34\u0e04\u0e38\u0e49\u0e21\u0e04\u0e23\u0e2d\u0e07\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e2a\u0e48\u0e27\u0e19\u0e1a\u0e38\u0e04\u0e04\u0e25 \u0e1e.\u0e28. \u0e52\u0e55\u0e56\u0e52\n      <\/div>\n      <label class=\"consent-check\">\n        <input type=\"checkbox\" id=\"consent\" required>\n        <span id=\"consentLabel\">\u0e02\u0e49\u0e32\u0e1e\u0e40\u0e08\u0e49\u0e32\u0e2d\u0e48\u0e32\u0e19\u0e41\u0e25\u0e30\u0e22\u0e34\u0e19\u0e22\u0e2d\u0e21\u0e15\u0e32\u0e21\u0e40\u0e07\u0e37\u0e48\u0e2d\u0e19\u0e44\u0e02\u0e02\u0e49\u0e32\u0e07\u0e15\u0e49\u0e19 <span style=\"color:var(--mcru)\">*<\/span><\/span>\n      <\/label>\n    <\/div>\n  <\/div>\n  <button type=\"submit\" class=\"btn-submit\" id=\"submitBtn\">\ud83d\udd0d <span id=\"submitBtnText\">\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e01\u0e48\u0e2d\u0e19\u0e22\u0e37\u0e19\u0e22\u0e31\u0e19<\/span><\/button>\n  <p class=\"note\" id=\"formNote\">* \u0e1a\u0e31\u0e07\u0e04\u0e31\u0e1a\u0e01\u0e23\u0e2d\u0e01 &nbsp;|&nbsp; \u0e2b\u0e25\u0e31\u0e07\u0e2a\u0e21\u0e31\u0e04\u0e23\u0e2a\u0e33\u0e40\u0e23\u0e47\u0e08\u0e23\u0e30\u0e1a\u0e1a\u0e08\u0e30\u0e41\u0e2a\u0e14\u0e07 <strong>\u0e23\u0e2b\u0e31\u0e2a\u0e0a\u0e31\u0e48\u0e27\u0e04\u0e23\u0e32\u0e27<\/strong> \u0e42\u0e1b\u0e23\u0e14\u0e1a\u0e31\u0e19\u0e17\u0e36\u0e01\u0e44\u0e27\u0e49<\/p>\n<\/form>\n<!-- \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n     \u0e15\u0e23\u0e27\u0e08\u0e2a\u0e16\u0e32\u0e19\u0e30\u0e01\u0e32\u0e23\u0e2a\u0e21\u0e31\u0e04\u0e23\n\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 -->\n<div class=\"check-section mode-panel\" id=\"statusPanel\" role=\"tabpanel\" aria-labelledby=\"modeStatus\" hidden>\n  <div class=\"card\">\n    <div class=\"card-header\">\n      <div class=\"card-header-icon dark-bg\">\n        <svg viewBox=\"0 0 24 24\"><circle cx=\"11\" cy=\"11\" r=\"7\"\/><path d=\"M21 21l-4.35-4.35\"\/><\/svg>\n      <\/div>\n      <h3 id=\"secCheck\">\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e2a\u0e16\u0e32\u0e19\u0e30\u0e01\u0e32\u0e23\u0e2a\u0e21\u0e31\u0e04\u0e23<\/h3>\n    <\/div>\n    <div class=\"card-body\">\n      <div class=\"field note-secondary\">\n        <label for=\"checkCodeInput\" id=\"lbCheckCode\">\u0e01\u0e23\u0e2d\u0e01\u0e23\u0e2b\u0e31\u0e2a\u0e0a\u0e31\u0e48\u0e27\u0e04\u0e23\u0e32\u0e27\u0e17\u0e35\u0e48\u0e44\u0e14\u0e49\u0e23\u0e31\u0e1a\u0e2b\u0e25\u0e31\u0e07\u0e2a\u0e21\u0e31\u0e04\u0e23 <span class=\"req\">*<\/span><\/label>\n        <input type=\"text\" id=\"checkCodeInput\" placeholder=\"0001\" maxlength=\"10\" inputmode=\"numeric\" autocomplete=\"off\" spellcheck=\"false\">\n      <\/div>\n      <div class=\"field note-secondary\">\n        <label for=\"checkPhoneInput\" id=\"lbCheckPhone\">\u0e40\u0e25\u0e02\u0e17\u0e49\u0e32\u0e22\u0e42\u0e17\u0e23\u0e28\u0e31\u0e1e\u0e17\u0e4c 4 \u0e2b\u0e25\u0e31\u0e01\u0e17\u0e35\u0e48\u0e43\u0e0a\u0e49\u0e2a\u0e21\u0e31\u0e04\u0e23 <span class=\"req\">*<\/span><\/label>\n        <div class=\"check-input-row\">\n          <input type=\"text\" id=\"checkPhoneInput\" placeholder=\"1234\" maxlength=\"4\" inputmode=\"numeric\" autocomplete=\"off\">\n          <button type=\"button\" class=\"btn-check\" id=\"btnCheck\" onclick=\"doCheckStatus()\">\ud83d\udd0d <span id=\"checkBtnText\">\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a<\/span><\/button>\n        <\/div>\n      <\/div>\n      <div class=\"check-result\" id=\"checkResult\"><\/div>\n    <\/div>\n  <\/div>\n<\/div>\n  <div class=\"card extra-field\">\n    <div class=\"card-body\">\n      <div class=\"payment-note\" id=\"paymentNoteBottom\">\n        <a href=\"https:\/\/line.me\/R\/ti\/p\/@993yaytf\" target=\"_blank\" rel=\"noopener\" class=\"line-btn\" id=\"lineBtn\">\n          <svg viewBox=\"0 0 24 24\" width=\"20\" height=\"20\" fill=\"currentColor\" class=\"icon-shrink\"><path d=\"M12 2C6.48 2 2 5.64 2 10.13c0 4.02 3.55 7.39 8.35 8.03.32.07.77.21.88.49.1.25.06.64.03.89l-.14.85c-.04.25-.2.99.87.54s5.77-3.4 7.87-5.82C21.41 13.5 22 11.9 22 10.13 22 5.64 17.52 2 12 2zM8.1 12.6H6.06c-.3 0-.54-.24-.54-.54V8.02c0-.3.24-.54.54-.54s.54.24.54.54v3.5H8.1c.3 0 .54.24.54.54s-.24.54-.54.54zm2.12-.54c0 .3-.24.54-.54.54s-.54-.24-.54-.54V8.02c0-.3.24-.54.54-.54s.54.24.54.54v4.04zm4.79 0c0 .23-.15.44-.37.51-.06.02-.12.03-.17.03-.17 0-.33-.08-.43-.22l-2.07-2.82v2.5c0 .3-.24.54-.54.54s-.54-.24-.54-.54V8.02c0-.23.15-.44.37-.51.06-.02.11-.03.17-.03.17 0 .33.08.43.22l2.07 2.82v-2.5c0-.3.24-.54.54-.54s.54.24.54.54v4.04zm3.29-2.56c.3 0 .54.24.54.54s-.24.54-.54.54h-1.5v.94h1.5c.3 0 .54.24.54.54s-.24.54-.54.54h-2.04c-.3 0-.54-.24-.54-.54V8.02c0-.3.24-.54.54-.54h2.04c.3 0 .54.24.54.54s-.24.54-.54.54h-1.5v.94h1.5z\"\/><\/svg>\n          <span id=\"lineBtnText\">\u0e15\u0e34\u0e14\u0e15\u0e48\u0e2d LINE Official Account<\/span>\n        <\/a>\n        <p id=\"paymentNoteText\">\u0e15\u0e34\u0e14\u0e15\u0e48\u0e2d\u0e2a\u0e2d\u0e1a\u0e16\u0e32\u0e21<\/p>\n      <\/div>\n    <\/div>\n  <\/div>\n<\/div><!-- \/main-wrap -->\n<\/div><!-- \/abjRegApp -->\n<script>\n\/\/ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n\/\/ CONFIG\n\/\/ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\nvar GAS_URL = \"https:\/\/script.google.com\/macros\/s\/AKfycbxCOvTDDL1p6rRV55cfCs5BHHA6GgiFBGuBDuLnSUY22sKgXvKZPmbD6HLfaPJ67DoB\/exec\";\nvar formStartedAt = Date.now();\n\n\/\/ \u0e2a\u0e25\u0e31\u0e1a\u0e23\u0e30\u0e2b\u0e27\u0e48\u0e32\u0e07\u0e2a\u0e21\u0e31\u0e04\u0e23\u0e43\u0e2b\u0e21\u0e48\u0e41\u0e25\u0e30\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e2a\u0e16\u0e32\u0e19\u0e30\nfunction setAppMode(mode, shouldFocus){\n  var isRegister = mode !== \"status\";\n  var reg = document.getElementById(\"regForm\"), status = document.getElementById(\"statusPanel\");\n  var regBtn = document.getElementById(\"modeRegister\"), statusBtn = document.getElementById(\"modeStatus\");\n  reg.hidden = !isRegister; status.hidden = isRegister;\n  regBtn.classList.toggle(\"active\", isRegister); statusBtn.classList.toggle(\"active\", !isRegister);\n  regBtn.setAttribute(\"aria-selected\", String(isRegister)); statusBtn.setAttribute(\"aria-selected\", String(!isRegister));\n  if(shouldFocus){\n    var target = isRegister ? document.getElementById(\"prefix\") : document.getElementById(\"checkCodeInput\");\n    setTimeout(function(){ target.focus(); target.scrollIntoView({behavior:\"smooth\",block:\"center\"}); }, 40);\n  }\n}\n\n\/\/ \u0e1b\u0e38\u0e48\u0e21\u0e19\u0e33\u0e17\u0e32\u0e07\u0e04\u0e27\u0e32\u0e21\u0e04\u0e37\u0e1a\u0e2b\u0e19\u0e49\u0e32\nvar progressTargets = [\"cardPersonal\",\"cardAddress\",\"cardLocation\",\"cardPhoto\"];\nfunction setProgress(index){\n  document.querySelectorAll(\"#abjRegApp .progress-step\").forEach(function(btn,i){\n    btn.classList.toggle(\"active\", i===index); btn.classList.toggle(\"done\", i<index);\n    if(i===index) btn.setAttribute(\"aria-current\",\"step\"); else btn.removeAttribute(\"aria-current\");\n  });\n}\ndocument.querySelectorAll(\"#abjRegApp .progress-step\").forEach(function(btn,index){\n  btn.addEventListener(\"click\",function(){\n    var target=document.getElementById(btn.getAttribute(\"data-target\"));\n    setProgress(index); if(target) target.scrollIntoView({behavior:\"smooth\",block:\"start\"});\n  });\n});\nwindow.addEventListener(\"scroll\",function(){\n  if(document.getElementById(\"regForm\").hidden) return;\n  var current=0;\n  progressTargets.forEach(function(id,i){ var el=document.getElementById(id); if(el && el.getBoundingClientRect().top<=180) current=i; });\n  setProgress(current);\n},{passive:true});\n\/\/ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n\/\/ \u0e1b\u0e35\u0e01\u0e32\u0e23\u0e28\u0e36\u0e01\u0e29\u0e32\n\/\/ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\nfunction getBuddhistYear() { return new Date().getFullYear() + 543; }\nfunction toThaiDigits(n) {\n  return String(n).replace(\/[0-9]\/g, function(d){ return \"\u0e50\u0e51\u0e52\u0e53\u0e54\u0e55\u0e56\u0e57\u0e58\u0e59\"[+d]; });\n}\n(function(){\n  var el = document.getElementById(\"academicYearBadge\");\n  if(el) el.textContent = \"\u2726 \u0e1b\u0e35\u0e01\u0e32\u0e23\u0e28\u0e36\u0e01\u0e29\u0e32 \" + toThaiDigits(getBuddhistYear()) + \" \u2726\";\n})();\n\/\/ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n\/\/ \u0e27\u0e31\u0e19\u0e40\u0e14\u0e37\u0e2d\u0e19\u0e1b\u0e35\u0e40\u0e01\u0e34\u0e14\n\/\/ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\nvar MONTHS_TH = [\"\u0e21\u0e01\u0e23\u0e32\u0e04\u0e21\",\"\u0e01\u0e38\u0e21\u0e20\u0e32\u0e1e\u0e31\u0e19\u0e18\u0e4c\",\"\u0e21\u0e35\u0e19\u0e32\u0e04\u0e21\",\"\u0e40\u0e21\u0e29\u0e32\u0e22\u0e19\",\"\u0e1e\u0e24\u0e29\u0e20\u0e32\u0e04\u0e21\",\"\u0e21\u0e34\u0e16\u0e38\u0e19\u0e32\u0e22\u0e19\",\n                 \"\u0e01\u0e23\u0e01\u0e0e\u0e32\u0e04\u0e21\",\"\u0e2a\u0e34\u0e07\u0e2b\u0e32\u0e04\u0e21\",\"\u0e01\u0e31\u0e19\u0e22\u0e32\u0e22\u0e19\",\"\u0e15\u0e38\u0e25\u0e32\u0e04\u0e21\",\"\u0e1e\u0e24\u0e28\u0e08\u0e34\u0e01\u0e32\u0e22\u0e19\",\"\u0e18\u0e31\u0e19\u0e27\u0e32\u0e04\u0e21\"];\nfunction pad2(v){ return (\"0\"+v).slice(-2); }\n\/\/ \u0e23\u0e27\u0e21 \u0e27\u0e31\u0e19\/\u0e40\u0e14\u0e37\u0e2d\u0e19\/\u0e1b\u0e35 \u0e40\u0e1b\u0e47\u0e19 DD\/MM\/YYYY (\u0e1e.\u0e28.) \u0e40\u0e01\u0e47\u0e1a\u0e44\u0e27\u0e49\u0e43\u0e19 #birthdate\n\/\/ \u0e1b\u0e35\u0e17\u0e35\u0e48\u0e1e\u0e34\u0e21\u0e1e\u0e4c\u0e23\u0e31\u0e1a\u0e44\u0e14\u0e49\u0e17\u0e31\u0e49\u0e07 \u0e1e.\u0e28. \u0e41\u0e25\u0e30 \u0e04.\u0e28. \u0e41\u0e15\u0e48\u0e40\u0e01\u0e47\u0e1a\u0e40\u0e1b\u0e47\u0e19 \u0e1e.\u0e28. \u0e40\u0e2a\u0e21\u0e2d\n\/\/ \u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e43\u0e2b\u0e49\u0e23\u0e39\u0e1b\u0e41\u0e1a\u0e1a\u0e27\u0e31\u0e19\u0e40\u0e01\u0e34\u0e14\u0e43\u0e19\u0e0a\u0e35\u0e15\u0e15\u0e23\u0e07\u0e01\u0e31\u0e19\u0e17\u0e38\u0e01\u0e41\u0e16\u0e27 (\u0e01\u0e32\u0e23\u0e01\u0e31\u0e19\u0e2a\u0e21\u0e31\u0e04\u0e23\u0e0b\u0e49\u0e33\u0e40\u0e17\u0e35\u0e22\u0e1a\u0e04\u0e48\u0e32\u0e19\u0e35\u0e49)\nfunction syncBirthdate(){\n  var d    = document.getElementById(\"birthDay\").value;\n  var m    = document.getElementById(\"birthMonth\").value;\n  var rawY = document.getElementById(\"birthYear\").value.trim();\n  var out  = \"\";\n  if(d && m && \/^\\d{4}$\/.test(rawY)){\n    var y = parseInt(rawY,10);\n    if(y <= 2400) y += 543;   \/\/ \u0e1c\u0e39\u0e49\u0e43\u0e0a\u0e49\u0e1e\u0e34\u0e21\u0e1e\u0e4c\u0e40\u0e1b\u0e47\u0e19 \u0e04.\u0e28. \u2192 \u0e41\u0e1b\u0e25\u0e07\u0e40\u0e1b\u0e47\u0e19 \u0e1e.\u0e28.\n    out = d+\"\/\"+m+\"\/\"+y;\n  }\n  document.getElementById(\"birthdate\").value = out;\n}\nfunction initBirthdate(){\n  var dayEl  = document.getElementById(\"birthDay\");\n  var monEl  = document.getElementById(\"birthMonth\");\n  var yearEl = document.getElementById(\"birthYear\");\n  var dHtml = '<option value=\"\">\u0e27\u0e31\u0e19<\/option>';\n  for(var d=1;d<=31;d++) dHtml += '<option value=\"'+pad2(d)+'\">'+d+'<\/option>';\n  dayEl.innerHTML = dHtml;\n  var mHtml = '<option value=\"\">\u0e40\u0e14\u0e37\u0e2d\u0e19<\/option>';\n  MONTHS_TH.forEach(function(n,i){ mHtml += '<option value=\"'+pad2(i+1)+'\">'+n+'<\/option>'; });\n  monEl.innerHTML = mHtml;\n  \/\/ \u0e1b\u0e35\u0e40\u0e01\u0e34\u0e14\u0e40\u0e1b\u0e47\u0e19\u0e0a\u0e48\u0e2d\u0e07\u0e1e\u0e34\u0e21\u0e1e\u0e4c \u2014 \u0e40\u0e23\u0e47\u0e27\u0e01\u0e27\u0e48\u0e32\u0e40\u0e25\u0e37\u0e48\u0e2d\u0e19\u0e2b\u0e32\u0e43\u0e19\u0e23\u0e32\u0e22\u0e01\u0e32\u0e23 121 \u0e1b\u0e35\u0e1a\u0e19\u0e21\u0e37\u0e2d\u0e16\u0e37\u0e2d\n  dayEl.addEventListener(\"change\",syncBirthdate);\n  monEl.addEventListener(\"change\",syncBirthdate);\n  yearEl.addEventListener(\"input\",syncBirthdate);\n  attachInputFilter(yearEl, \/\\D\/g);\n}\ninitBirthdate();\n\/\/ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n\/\/ \u0e04\u0e33\u0e19\u0e33\u0e2b\u0e19\u0e49\u0e32\n\/\/ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\nfunction isMonkPrefix(p){\n  return p && (p.indexOf(\"\u0e1e\u0e23\u0e30\")===0 || p.indexOf(\"\u0e40\u0e08\u0e49\u0e32\u0e2d\u0e18\u0e34\u0e01\u0e32\u0e23\")===0 ||\n               p.indexOf(\"\u0e2a\u0e32\u0e21\u0e40\u0e13\u0e23\")===0 || p.indexOf(\"\u0e20\u0e34\u0e01\u0e29\u0e38\u0e13\u0e35\")===0);\n}\nfunction isOrdained(p){ return isMonkPrefix(p) || p===\"\u0e41\u0e21\u0e48\u0e0a\u0e35\"; }\nfunction onPrefixChange(){\n  var p = document.getElementById(\"prefix\").value;\n  document.querySelectorAll(\"#abjRegApp .monk-only\").forEach(function(el){\n    el.style.display = isOrdained(p) ? \"block\" : \"none\";\n  });\n  var fnL = document.getElementById(\"firstNameLabel\");\n  var lnL = document.getElementById(\"lastNameLabel\");\n  var req = ' <span class=\"req\">*<\/span>';\n  if(isMonkPrefix(p)){\n    fnL.innerHTML = (LANG===\"en\" ? T(\"monkFirstName\") : \"\u0e0a\u0e37\u0e48\u0e2d \/ \u0e09\u0e32\u0e22\u0e32\") + req;\n    lnL.innerHTML = T(\"lastNameLabel\");\n  } else {\n    fnL.innerHTML = T(\"firstNameLabel\") + req;\n    lnL.innerHTML = T(\"lastNameLabel\");\n  }\n}\n\/\/ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n\/\/ \u0e17\u0e35\u0e48\u0e2d\u0e22\u0e39\u0e48\u0e44\u0e17\u0e22 \u2014 CDN\n\/\/ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\nvar thaiAddrData = null;\nvar ADDR_CDNS = [\n  \"https:\/\/cdn.jsdelivr.net\/gh\/kongvut\/thai-province-data@master\/api\/latest\/province_with_district_and_sub_district.json\",\n  \"https:\/\/raw.githubusercontent.com\/kongvut\/thai-province-data\/master\/api\/latest\/province_with_district_and_sub_district.json\",\n  \"https:\/\/unpkg.com\/thai-province-data@latest\/dist\/province_with_district_and_sub_district.json\"\n];\nfunction loadThaiAddress(){\n  var idx = 0;\n  function tryNext(){\n    if(idx >= ADDR_CDNS.length){ useFallback(); return; }\n    var url = ADDR_CDNS[idx++];\n    fetch(url)\n      .then(function(r){ if(!r.ok) throw new Error(r.status); return r.json(); })\n      .then(function(data){ onAddrLoaded(data); })\n      .catch(function(){ tryNext(); });\n  }\n  tryNext();\n}\nfunction addrName(obj){\n  if(LANG===\"en\" && obj.name_en) return obj.name_en;\n  return obj.name_th;\n}\nfunction onAddrLoaded(data){\n  thaiAddrData = data;\n  var sorted = data.slice().sort(function(a,b){ return a.name_th.localeCompare(b.name_th,\"th\"); });\n  var html = '<option value=\"\">'+T(\"selProvince\")+'<\/option>';\n  sorted.forEach(function(prov){\n    var oi = data.indexOf(prov);\n    html += '<option value=\"'+esc(prov.name_th)+'\" data-idx=\"'+oi+'\" data-en=\"'+esc(prov.name_en||\"\")+'\">'+esc(addrName(prov))+'<\/option>';\n  });\n  var sel = document.getElementById(\"province\");\n  sel.innerHTML = html;\n  sel.disabled = false;\n  initProvinceCombo();\n}\nfunction useFallback(){\n  var placeholders = {\n    province: T(\"phProvince\") || \"\u0e08\u0e31\u0e07\u0e2b\u0e27\u0e31\u0e14\",\n    district: T(\"phDistrict\") || \"\u0e2d\u0e33\u0e40\u0e20\u0e2d\/\u0e40\u0e02\u0e15\",\n    subdistrict: T(\"phSubdistrict\") || \"\u0e15\u0e33\u0e1a\u0e25\/\u0e41\u0e02\u0e27\u0e07\"\n  };\n  \/\/ \u0e44\u0e21\u0e48\u0e21\u0e35\u0e23\u0e32\u0e22\u0e0a\u0e37\u0e48\u0e2d\u0e08\u0e31\u0e07\u0e2b\u0e27\u0e31\u0e14\u0e43\u0e2b\u0e49\u0e04\u0e32\u0e14\u0e40\u0e14\u0e32\u0e41\u0e25\u0e49\u0e27 \u2014 \u0e40\u0e2d\u0e32 combobox \u0e2d\u0e2d\u0e01 \u0e40\u0e2b\u0e25\u0e37\u0e2d\u0e0a\u0e48\u0e2d\u0e07\u0e1e\u0e34\u0e21\u0e1e\u0e4c\u0e18\u0e23\u0e23\u0e21\u0e14\u0e32\n  var provCombo = document.getElementById(\"provinceCombo\");\n  if(provCombo) provCombo.parentNode.removeChild(provCombo);\n  var provLabel = document.getElementById(\"lbProvince\");\n  if(provLabel) provLabel.setAttribute(\"for\",\"province\");\n  [\"province\",\"district\",\"subdistrict\"].forEach(function(id){\n    var el = document.getElementById(id);\n    if(!el || el.tagName !== \"SELECT\") return;\n    var inp = document.createElement(\"input\");\n    inp.type=\"text\"; inp.id=id; inp.name=id; inp.required=true;\n    inp.placeholder = placeholders[id] || \"\";\n    inp.className = el.className.replace(\"combo-native\",\"\").trim();   \/\/ \u0e2b\u0e49\u0e32\u0e21\u0e15\u0e34\u0e14\u0e04\u0e25\u0e32\u0e2a\u0e17\u0e35\u0e48\u0e0b\u0e48\u0e2d\u0e19\u0e0a\u0e48\u0e2d\u0e07\u0e21\u0e32\u0e14\u0e49\u0e27\u0e22\n    el.parentNode.replaceChild(inp,el);\n  });\n  var pc = document.getElementById(\"postalCode\");\n  if(pc){\n    pc.readOnly = false;\n    pc.style.background = \"\";\n    pc.style.cursor = \"\";\n    pc.placeholder = T(\"phPostal\") || \"\u0e23\u0e2b\u0e31\u0e2a\u0e44\u0e1b\u0e23\u0e29\u0e13\u0e35\u0e22\u0e4c 5 \u0e2b\u0e25\u0e31\u0e01\";\n  }\n}\nloadThaiAddress();\ndocument.getElementById(\"abjRegApp\").addEventListener(\"change\", function(e){\n  var target = e.target;\n  if(!target || !target.id) return;\n  if(target.id === \"province\"){\n    if(target.tagName !== \"SELECT\") return;\n    var distSel = document.getElementById(\"district\");\n    var subSel  = document.getElementById(\"subdistrict\");\n    if(distSel && distSel.tagName === \"SELECT\" && subSel && subSel.tagName === \"SELECT\"){\n      distSel.innerHTML = '<option value=\"\">'+T(\"selDistrict\")+'<\/option>';\n      subSel.innerHTML  = '<option value=\"\">'+T(\"selSubWait\")+'<\/option>';\n      distSel.disabled = true; subSel.disabled = true;\n      document.getElementById(\"postalCode\").value = \"\";\n      var opt = target.options[target.selectedIndex];\n      if(!opt || !opt.value || !thaiAddrData) return;\n      var prov = thaiAddrData[parseInt(opt.dataset.idx,10)];\n      var amps = (prov.amphure||prov.districts||[]).slice()\n        .sort(function(a,b){ return a.name_th.localeCompare(b.name_th,\"th\"); });\n      amps.forEach(function(amp){\n        var oi = (prov.amphure||prov.districts||[]).indexOf(amp);\n        var o = document.createElement(\"option\");\n        o.value = amp.name_th; o.textContent = addrName(amp);\n        o.dataset.en = amp.name_en || \"\";\n        o.dataset.pidx = opt.dataset.idx; o.dataset.aidx = oi;\n        distSel.appendChild(o);\n      });\n      distSel.disabled = false;\n    }\n    return;\n  }\n  if(target.id === \"district\"){\n    if(target.tagName !== \"SELECT\") return;\n    var subSel = document.getElementById(\"subdistrict\");\n    if(!subSel || subSel.tagName !== \"SELECT\") return;\n    subSel.innerHTML = '<option value=\"\">'+T(\"selSubdistrict\")+'<\/option>';\n    subSel.disabled = true;\n    document.getElementById(\"postalCode\").value = \"\";\n    var opt = target.options[target.selectedIndex];\n    if(!opt || !opt.value || !thaiAddrData) return;\n    var prov = thaiAddrData[parseInt(opt.dataset.pidx,10)];\n    var amp  = (prov.amphure||prov.districts||[])[parseInt(opt.dataset.aidx,10)];\n    var tambons = (amp.tambon||amp.sub_districts||[]).slice()\n      .sort(function(a,b){ return a.name_th.localeCompare(b.name_th,\"th\"); });\n    tambons.forEach(function(t){\n      var o = document.createElement(\"option\");\n      o.value = t.name_th; o.textContent = addrName(t);\n      o.dataset.en = t.name_en || \"\";\n      o.dataset.zip = (t.zip_code || t.zipcode || t.postal_code || \"\");\n      subSel.appendChild(o);\n    });\n    subSel.disabled = false;\n    return;\n  }\n  if(target.id === \"subdistrict\"){\n    \/\/ \u0e42\u0e2b\u0e21\u0e14 fallback (\u0e42\u0e2b\u0e25\u0e14\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e17\u0e35\u0e48\u0e2d\u0e22\u0e39\u0e48\u0e44\u0e21\u0e48\u0e2a\u0e33\u0e40\u0e23\u0e47\u0e08) \u0e1c\u0e39\u0e49\u0e43\u0e0a\u0e49\u0e1e\u0e34\u0e21\u0e1e\u0e4c\u0e23\u0e2b\u0e31\u0e2a\u0e44\u0e1b\u0e23\u0e29\u0e13\u0e35\u0e22\u0e4c\u0e40\u0e2d\u0e07 \u2014 \u0e2b\u0e49\u0e32\u0e21\u0e25\u0e49\u0e32\u0e07\u0e02\u0e2d\u0e07\u0e17\u0e35\u0e48\u0e1e\u0e34\u0e21\u0e1e\u0e4c\u0e44\u0e27\u0e49\n    if(target.tagName !== \"SELECT\") return;\n    var opt = target.options[target.selectedIndex];\n    var pc  = document.getElementById(\"postalCode\");\n    pc.value = (opt && opt.dataset.zip) || \"\";\n    \/\/ \u0e40\u0e15\u0e34\u0e21\u0e04\u0e48\u0e32\u0e14\u0e49\u0e27\u0e22\u0e2a\u0e04\u0e23\u0e34\u0e1b\u0e15\u0e4c\u0e44\u0e21\u0e48\u0e40\u0e01\u0e34\u0e14 event input\/change \u0e15\u0e49\u0e2d\u0e07\u0e25\u0e49\u0e32\u0e07 error \u0e40\u0e2d\u0e07\u0e44\u0e21\u0e48\u0e07\u0e31\u0e49\u0e19\u0e01\u0e23\u0e2d\u0e1a\u0e41\u0e14\u0e07\u0e04\u0e49\u0e32\u0e07\u0e17\u0e31\u0e49\u0e07\u0e17\u0e35\u0e48\u0e21\u0e35\u0e40\u0e25\u0e02\u0e41\u0e25\u0e49\u0e27\n    if(pc.value) clearErrorFor(pc);\n  }\n});\n\/\/ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n\/\/ \u0e08\u0e31\u0e07\u0e2b\u0e27\u0e31\u0e14 \u2014 \u0e1e\u0e34\u0e21\u0e1e\u0e4c\u0e41\u0e25\u0e49\u0e27\u0e04\u0e32\u0e14\u0e40\u0e14\u0e32 (combobox)\n\/\/ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n\/\/ \u0e04\u0e48\u0e32\u0e08\u0e23\u0e34\u0e07\u0e22\u0e31\u0e07\u0e40\u0e01\u0e47\u0e1a\u0e43\u0e19 <select id=\"province\"> \u0e40\u0e2b\u0e21\u0e37\u0e2d\u0e19\u0e40\u0e14\u0e34\u0e21\u0e17\u0e38\u0e01\u0e1b\u0e23\u0e30\u0e01\u0e32\u0e23 (validate \/ \u0e23\u0e48\u0e32\u0e07 \/ \u0e2a\u0e48\u0e07\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25 \/ cascade \u0e2d\u0e33\u0e40\u0e20\u0e2d)\n\/\/ \u0e0a\u0e48\u0e2d\u0e07 #provinceSearch \u0e40\u0e1b\u0e47\u0e19\u0e40\u0e1e\u0e35\u0e22\u0e07\u0e2b\u0e19\u0e49\u0e32\u0e01\u0e32\u0e01\u0e43\u0e2b\u0e49\u0e1e\u0e34\u0e21\u0e1e\u0e4c\u0e04\u0e49\u0e19\u0e2b\u0e32 \u0e41\u0e25\u0e49\u0e27 set \u0e04\u0e48\u0e32\u0e25\u0e07 select \u0e1e\u0e23\u0e49\u0e2d\u0e21 dispatch change\nvar PROV_ALIAS = {\n  \"\u0e01\u0e23\u0e38\u0e07\u0e40\u0e17\u0e1e\u0e21\u0e2b\u0e32\u0e19\u0e04\u0e23\": [\"\u0e01\u0e17\u0e21\",\"\u0e01\u0e23\u0e38\u0e07\u0e40\u0e17\u0e1e\",\"\u0e1a\u0e32\u0e07\u0e01\u0e2d\u0e01\",\"bangkok\",\"bkk\",\"krungthep\"]\n};\nvar provItems = [], provFiltered = [], provActive = -1;\nvar provComposing = false, provComboWired = false;\n\nfunction provEls(){\n  return {\n    sel:   document.getElementById(\"province\"),\n    input: document.getElementById(\"provinceSearch\"),\n    list:  document.getElementById(\"provinceListbox\")\n  };\n}\nfunction provComboReady(){\n  var e = provEls();\n  return !!(e.sel && e.sel.tagName === \"SELECT\" && e.input && e.list);\n}\n\/\/ \u0e15\u0e31\u0e14\u0e2a\u0e34\u0e48\u0e07\u0e17\u0e35\u0e48\u0e44\u0e21\u0e48\u0e0a\u0e48\u0e27\u0e22\u0e04\u0e49\u0e19\u0e2b\u0e32\u0e2d\u0e2d\u0e01: \u0e0a\u0e48\u0e2d\u0e07\u0e27\u0e48\u0e32\u0e07 \u0e41\u0e25\u0e30\u0e04\u0e33\u0e19\u0e33\u0e2b\u0e19\u0e49\u0e32 \"\u0e08\u0e31\u0e07\u0e2b\u0e27\u0e31\u0e14\"\/\"\u0e08.\"\n\/\/ \u0e2b\u0e49\u0e32\u0e21\u0e15\u0e31\u0e14 \"\u0e08\" \u0e40\u0e14\u0e35\u0e48\u0e22\u0e27 \u0e46 \u0e44\u0e21\u0e48\u0e07\u0e31\u0e49\u0e19 \"\u0e08\u0e31\u0e19\u0e17\u0e1a\u0e38\u0e23\u0e35\" \u0e08\u0e30\u0e40\u0e2b\u0e25\u0e37\u0e2d \"\u0e31\u0e19\u0e17\u0e1a\u0e38\u0e23\u0e35\"\nfunction provNorm(s){\n  return String(s||\"\").toLowerCase().replace(\/\\s+\/g,\"\").replace(\/^(\u0e08\u0e31\u0e07\u0e2b\u0e27\u0e31\u0e14|\u0e08\\.)\/,\"\");\n}\n\/\/ 0 = \u0e02\u0e36\u0e49\u0e19\u0e15\u0e49\u0e19\u0e15\u0e23\u0e07 (\u0e43\u0e2b\u0e49\u0e02\u0e36\u0e49\u0e19\u0e01\u0e48\u0e2d\u0e19), 1 = \u0e21\u0e35\u0e04\u0e33\u0e19\u0e31\u0e49\u0e19\u0e2d\u0e22\u0e39\u0e48\u0e01\u0e25\u0e32\u0e07\u0e0a\u0e37\u0e48\u0e2d, -1 = \u0e44\u0e21\u0e48\u0e15\u0e23\u0e07\nfunction provScore(item, n){\n  var i;\n  for(i=0;i<item.keys.length;i++) if(item.keys[i].indexOf(n) === 0) return 0;\n  for(i=0;i<item.keys.length;i++) if(item.keys[i].indexOf(n) > 0)  return 1;\n  return -1;\n}\nfunction provBuildItems(){\n  provItems = [];\n  if(!provComboReady()) return;\n  var opts = provEls().sel.options;\n  for(var i=0;i<opts.length;i++){\n    var o = opts[i];\n    if(!o.value) continue;\n    var en = o.getAttribute(\"data-en\") || \"\";\n    var keys = [provNorm(o.value)];\n    if(en) keys.push(provNorm(en));\n    (PROV_ALIAS[o.value]||[]).forEach(function(a){ keys.push(provNorm(a)); });\n    provItems.push({ value:o.value, label:(o.textContent||\"\").trim() || o.value, keys:keys });\n  }\n}\nfunction provLabelOf(value){\n  for(var i=0;i<provItems.length;i++) if(provItems[i].value === value) return provItems[i].label;\n  return value || \"\";\n}\nfunction provFilter(q){\n  var n = provNorm(q);\n  if(!n) return provItems.slice();\n  var starts = [], contains = [];\n  provItems.forEach(function(it){\n    var s = provScore(it, n);\n    if(s === 0) starts.push(it); else if(s === 1) contains.push(it);\n  });\n  return starts.concat(contains);\n}\nfunction provHighlight(label, raw){\n  raw = String(raw||\"\").trim();\n  if(!raw) return esc(label);\n  var i = label.toLowerCase().indexOf(raw.toLowerCase());\n  if(i < 0) return esc(label);\n  return esc(label.slice(0,i)) + \"<mark>\" + esc(label.slice(i,i+raw.length)) + \"<\/mark>\" + esc(label.slice(i+raw.length));\n}\nfunction provOpen(){\n  var e = provEls();\n  e.list.hidden = false;\n  e.input.setAttribute(\"aria-expanded\",\"true\");\n}\nfunction provClose(){\n  if(!provComboReady()) return;\n  var e = provEls();\n  e.list.hidden = true;\n  e.input.setAttribute(\"aria-expanded\",\"false\");\n  e.input.removeAttribute(\"aria-activedescendant\");\n  provActive = -1;\n}\nfunction provScrollIntoList(el){\n  var box = el.parentNode;\n  if(el.offsetTop < box.scrollTop) box.scrollTop = el.offsetTop - 6;\n  else if(el.offsetTop + el.offsetHeight > box.scrollTop + box.clientHeight)\n    box.scrollTop = el.offsetTop + el.offsetHeight - box.clientHeight + 6;\n}\nfunction provSetActive(i, scroll){\n  var e = provEls(), opts = e.list.querySelectorAll(\".combo-option\");\n  provActive = i;\n  for(var k=0;k<opts.length;k++){\n    var on = (k === i);\n    opts[k].classList.toggle(\"active\", on);\n    opts[k].setAttribute(\"aria-selected\", on ? \"true\" : \"false\");\n    if(on){\n      e.input.setAttribute(\"aria-activedescendant\", opts[k].id);\n      if(scroll) provScrollIntoList(opts[k]);\n    }\n  }\n  if(i < 0) e.input.removeAttribute(\"aria-activedescendant\");\n}\nfunction provRender(list, raw){\n  var e = provEls();\n  provFiltered = list;\n  if(!list.length){\n    e.list.innerHTML = '<li class=\"combo-empty\">' + esc(T(\"provNoMatch\")) + '<\/li>';\n  } else {\n    var html = \"\";\n    list.forEach(function(it, i){\n      html += '<li class=\"combo-option\" role=\"option\" id=\"provOpt'+i+'\" data-i=\"'+i+'\" aria-selected=\"false\">'\n            + provHighlight(it.label, raw) + '<\/li>';\n    });\n    e.list.innerHTML = html;\n  }\n  provOpen();\n  \/\/ \u0e40\u0e1b\u0e34\u0e14\u0e23\u0e32\u0e22\u0e01\u0e32\u0e23\u0e40\u0e1b\u0e25\u0e48\u0e32 \u0e46 (\u0e22\u0e31\u0e07\u0e44\u0e21\u0e48\u0e44\u0e14\u0e49\u0e1e\u0e34\u0e21\u0e1e\u0e4c) \u2192 \u0e44\u0e2e\u0e44\u0e25\u0e15\u0e4c\u0e08\u0e31\u0e07\u0e2b\u0e27\u0e31\u0e14\u0e17\u0e35\u0e48\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e44\u0e27\u0e49\u0e40\u0e14\u0e34\u0e21\n  \/\/ \u0e41\u0e15\u0e48\u0e16\u0e49\u0e32\u0e01\u0e33\u0e25\u0e31\u0e07\u0e1e\u0e34\u0e21\u0e1e\u0e4c\u0e2d\u0e22\u0e39\u0e48 \u0e15\u0e49\u0e2d\u0e07\u0e44\u0e2e\u0e44\u0e25\u0e15\u0e4c\u0e15\u0e31\u0e27\u0e17\u0e35\u0e48\u0e15\u0e23\u0e07\u0e17\u0e35\u0e48\u0e2a\u0e38\u0e14\u0e40\u0e2a\u0e21\u0e2d \u0e43\u0e2b\u0e49\u0e15\u0e23\u0e07\u0e01\u0e31\u0e1a\u0e17\u0e35\u0e48\u0e23\u0e30\u0e1a\u0e1a\u0e40\u0e14\u0e32\u0e40\u0e15\u0e34\u0e21\u0e43\u0e19\u0e0a\u0e48\u0e2d\u0e07\n  var start = 0;\n  if(!raw){\n    var cur = e.sel.value;\n    if(cur) for(var i=0;i<list.length;i++) if(list[i].value === cur){ start = i; break; }\n  }\n  provSetActive(list.length ? start : -1, list.length > 0);\n}\nfunction provCommit(item){\n  var e = provEls();\n  var next = item ? item.value : \"\";\n  e.input.value = item ? item.label : \"\";\n  provClose();\n  if(e.sel.value !== next){\n    e.sel.value = next;\n    e.sel.dispatchEvent(new Event(\"change\", { bubbles:true }));\n  }\n  if(item) clearErrorFor(e.input);\n}\n\/\/ \u0e40\u0e15\u0e34\u0e21\u0e02\u0e49\u0e2d\u0e04\u0e27\u0e32\u0e21\u0e43\u0e19\u0e0a\u0e48\u0e2d\u0e07\u0e43\u0e2b\u0e49\u0e15\u0e23\u0e07\u0e01\u0e31\u0e1a\u0e04\u0e48\u0e32\u0e43\u0e19 select (\u0e43\u0e0a\u0e49\u0e15\u0e2d\u0e19\u0e01\u0e39\u0e49\u0e23\u0e48\u0e32\u0e07 \/ \u0e25\u0e49\u0e32\u0e07\u0e1f\u0e2d\u0e23\u0e4c\u0e21 \/ \u0e2a\u0e25\u0e31\u0e1a\u0e20\u0e32\u0e29\u0e32)\nfunction provSyncFromSelect(){\n  if(!provComboReady()) return;\n  var e = provEls();\n  e.input.value = e.sel.value ? provLabelOf(e.sel.value) : \"\";\n}\n\/\/ \u0e40\u0e14\u0e32\u0e15\u0e48\u0e2d\u0e43\u0e2b\u0e49\u0e2d\u0e31\u0e15\u0e42\u0e19\u0e21\u0e31\u0e15\u0e34: \u0e40\u0e15\u0e34\u0e21\u0e2a\u0e48\u0e27\u0e19\u0e17\u0e35\u0e48\u0e40\u0e2b\u0e25\u0e37\u0e2d\u0e02\u0e2d\u0e07\u0e0a\u0e37\u0e48\u0e2d\u0e08\u0e31\u0e07\u0e2b\u0e27\u0e31\u0e14\u0e41\u0e25\u0e49\u0e27\u0e44\u0e2e\u0e44\u0e25\u0e15\u0e4c\u0e44\u0e27\u0e49\n\/\/ \u0e1e\u0e34\u0e21\u0e1e\u0e4c\u0e15\u0e31\u0e27\u0e16\u0e31\u0e14\u0e44\u0e1b\u0e08\u0e30\u0e17\u0e31\u0e1a\u0e2a\u0e48\u0e27\u0e19\u0e17\u0e35\u0e48\u0e40\u0e14\u0e32\u0e17\u0e31\u0e19\u0e17\u0e35 \u0e2a\u0e48\u0e27\u0e19\u0e01\u0e14 Backspace \u0e01\u0e47\u0e25\u0e1a\u0e17\u0e34\u0e49\u0e07\u0e44\u0e14\u0e49\nvar provInlineAllowed = null;\nfunction provInlineOK(){\n  if(provInlineAllowed === null)\n    provInlineAllowed = !!(window.matchMedia && window.matchMedia(\"(pointer: fine)\").matches);\n  return provInlineAllowed;\n}\nfunction provInlineComplete(typed, best){\n  \/\/ \u0e40\u0e02\u0e35\u0e22\u0e19\u0e17\u0e31\u0e1a\u0e02\u0e49\u0e2d\u0e04\u0e27\u0e32\u0e21\u0e23\u0e30\u0e2b\u0e27\u0e48\u0e32\u0e07\u0e1e\u0e34\u0e21\u0e1e\u0e4c\u0e17\u0e33\u0e43\u0e2b\u0e49\u0e04\u0e35\u0e22\u0e4c\u0e1a\u0e2d\u0e23\u0e4c\u0e14\u0e04\u0e32\u0e14\u0e40\u0e14\u0e32\u0e02\u0e2d\u0e07\u0e21\u0e37\u0e2d\u0e16\u0e37\u0e2d\u0e23\u0e27\u0e19 (\u0e15\u0e31\u0e27\u0e2d\u0e31\u0e01\u0e29\u0e23\u0e0b\u0e49\u0e33\/\u0e2b\u0e32\u0e22)\n  \/\/ \u0e1a\u0e19\u0e21\u0e37\u0e2d\u0e16\u0e37\u0e2d\u0e08\u0e36\u0e07\u0e43\u0e2b\u0e49 \"\u0e23\u0e32\u0e22\u0e01\u0e32\u0e23\u0e17\u0e35\u0e48\u0e15\u0e23\u0e07\u0e01\u0e31\u0e19\" \u0e14\u0e49\u0e32\u0e19\u0e25\u0e48\u0e32\u0e07\u0e17\u0e33\u0e2b\u0e19\u0e49\u0e32\u0e17\u0e35\u0e48\u0e04\u0e32\u0e14\u0e40\u0e14\u0e32\u0e41\u0e17\u0e19\n  if(!provInlineOK()) return;\n  if(!typed || !best) return;\n  var e = provEls(), lbl = best.label;\n  if(lbl.length <= typed.length) return;\n  if(lbl.toLowerCase().indexOf(typed.toLowerCase()) !== 0) return;\n  if(e.input.selectionStart !== typed.length) return;   \/\/ \u0e41\u0e01\u0e49\u0e01\u0e25\u0e32\u0e07\u0e04\u0e33\u0e2d\u0e22\u0e39\u0e48 \u0e2d\u0e22\u0e48\u0e32\u0e44\u0e1b\u0e15\u0e48\u0e2d\u0e17\u0e49\u0e32\u0e22\u0e43\u0e2b\u0e49\n  e.input.value = typed + lbl.slice(typed.length);\n  try { e.input.setSelectionRange(typed.length, lbl.length); } catch(err){ \/* \u0e1a\u0e32\u0e07 browser \u0e44\u0e21\u0e48\u0e23\u0e2d\u0e07\u0e23\u0e31\u0e1a *\/ }\n}\nfunction provOnType(ev){\n  var e = provEls(), typed = e.input.value;\n  var deleting = !!(ev && ev.inputType && ev.inputType.indexOf(\"delete\") === 0);\n  var list = provFilter(typed);\n  provRender(list, typed.trim());\n  if(!deleting && !provComposing) provInlineComplete(typed, list[0]);\n}\n\/\/ \u0e2d\u0e2d\u0e01\u0e08\u0e32\u0e01\u0e0a\u0e48\u0e2d\u0e07 (blur\/Tab): \u0e16\u0e49\u0e32\u0e17\u0e35\u0e48\u0e1e\u0e34\u0e21\u0e1e\u0e4c\u0e15\u0e23\u0e07\u0e08\u0e31\u0e07\u0e2b\u0e27\u0e31\u0e14\u0e43\u0e14\u0e01\u0e47\u0e22\u0e37\u0e19\u0e22\u0e31\u0e19\u0e43\u0e2b\u0e49\u0e40\u0e25\u0e22\n\/\/ \u0e16\u0e49\u0e32\u0e44\u0e21\u0e48\u0e15\u0e23\u0e07\u0e40\u0e25\u0e22 \u0e43\u0e2b\u0e49\u0e22\u0e49\u0e2d\u0e19\u0e01\u0e25\u0e31\u0e1a\u0e44\u0e1b\u0e04\u0e48\u0e32\u0e17\u0e35\u0e48\u0e22\u0e37\u0e19\u0e22\u0e31\u0e19\u0e44\u0e27\u0e49\u0e25\u0e48\u0e32\u0e2a\u0e38\u0e14 \u2014 \u0e02\u0e49\u0e2d\u0e04\u0e27\u0e32\u0e21\u0e04\u0e49\u0e32\u0e07\u0e17\u0e35\u0e48\u0e44\u0e21\u0e48\u0e43\u0e0a\u0e48\u0e08\u0e31\u0e07\u0e2b\u0e27\u0e31\u0e14\u0e08\u0e23\u0e34\u0e07\u0e08\u0e30\u0e17\u0e33\u0e43\u0e2b\u0e49\u0e40\u0e02\u0e49\u0e32\u0e43\u0e08\u0e1c\u0e34\u0e14\nfunction provResolveOnLeave(){\n  if(!provComboReady()) return;\n  var e = provEls();\n  provClose();\n  var typed = e.input.value.trim();\n  if(!typed){ provCommit(null); runBlurCheck(\"province\"); return; }\n  var n = provNorm(typed), exact = null, starts = [];\n  provItems.forEach(function(it){\n    if(!exact && it.keys.indexOf(n) >= 0) exact = it;\n    if(provScore(it, n) === 0) starts.push(it);\n  });\n  var pick = exact || (starts.length === 1 ? starts[0] : null);\n  if(pick) provCommit(pick); else provSyncFromSelect();\n  runBlurCheck(\"province\");\n}\n\/\/ \u0e40\u0e1b\u0e34\u0e14\u0e23\u0e32\u0e22\u0e01\u0e32\u0e23\u0e43\u0e2b\u0e49\u0e40\u0e2b\u0e21\u0e32\u0e30\u0e01\u0e31\u0e1a\u0e2a\u0e34\u0e48\u0e07\u0e17\u0e35\u0e48\u0e2d\u0e22\u0e39\u0e48\u0e43\u0e19\u0e0a\u0e48\u0e2d\u0e07\u0e15\u0e2d\u0e19\u0e19\u0e35\u0e49\n\/\/ \u0e16\u0e49\u0e32\u0e02\u0e49\u0e2d\u0e04\u0e27\u0e32\u0e21\u0e04\u0e37\u0e2d\u0e08\u0e31\u0e07\u0e2b\u0e27\u0e31\u0e14\u0e17\u0e35\u0e48\u0e22\u0e37\u0e19\u0e22\u0e31\u0e19\u0e44\u0e27\u0e49\u0e41\u0e25\u0e49\u0e27 \u2192 \u0e40\u0e1b\u0e34\u0e14\u0e17\u0e31\u0e49\u0e07\u0e2b\u0e21\u0e14 (\u0e08\u0e30\u0e44\u0e14\u0e49\u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19\u0e40\u0e1b\u0e47\u0e19\u0e08\u0e31\u0e07\u0e2b\u0e27\u0e31\u0e14\u0e2d\u0e37\u0e48\u0e19\u0e44\u0e14\u0e49)\n\/\/ \u0e16\u0e49\u0e32\u0e01\u0e33\u0e25\u0e31\u0e07\u0e1e\u0e34\u0e21\u0e1e\u0e4c\u0e04\u0e49\u0e32\u0e07\u0e44\u0e27\u0e49 \u2192 \u0e01\u0e23\u0e2d\u0e07\u0e15\u0e32\u0e21\u0e17\u0e35\u0e48\u0e1e\u0e34\u0e21\u0e1e\u0e4c\nfunction provOpenForCurrent(){\n  var e = provEls();\n  var q = (e.sel.value && e.input.value === provLabelOf(e.sel.value)) ? \"\" : e.input.value;\n  provRender(provFilter(q), q.trim());\n}\nfunction initProvinceCombo(){\n  if(!provComboReady()) return;\n  provBuildItems();\n  var e = provEls();\n  e.input.disabled = false;\n  e.input.placeholder = T(\"phProvinceSearch\");\n  provSyncFromSelect();\n  if(provComboWired) return;\n  provComboWired = true;\n\n  e.input.addEventListener(\"compositionstart\", function(){ provComposing = true; });\n  e.input.addEventListener(\"compositionend\",   function(){ provComposing = false; provOnType(null); });\n  e.input.addEventListener(\"input\", provOnType);\n  e.input.addEventListener(\"focus\", function(){\n    if(provItems.length) provOpenForCurrent();\n  });\n  e.input.addEventListener(\"blur\", provResolveOnLeave);\n  e.input.addEventListener(\"keydown\", function(ev){\n    var open = !e.list.hidden;\n    if(ev.key === \"ArrowDown\" || ev.key === \"ArrowUp\"){\n      ev.preventDefault();\n      if(!open){ if(provItems.length) provOpenForCurrent(); return; }\n      if(!provFiltered.length) return;\n      var next = provActive + (ev.key === \"ArrowDown\" ? 1 : -1);\n      if(next < 0) next = provFiltered.length - 1;\n      if(next >= provFiltered.length) next = 0;\n      provSetActive(next, true);\n    } else if(ev.key === \"Enter\"){\n      if(open && provFiltered.length){\n        ev.preventDefault();          \/\/ \u0e2d\u0e22\u0e48\u0e32\u0e43\u0e2b\u0e49 Enter \u0e44\u0e1b\u0e01\u0e14\u0e2a\u0e48\u0e07\u0e1f\u0e2d\u0e23\u0e4c\u0e21\n        provCommit(provFiltered[provActive >= 0 ? provActive : 0]);\n      }\n    } else if(ev.key === \"Escape\"){\n      if(open){ ev.preventDefault(); ev.stopPropagation(); provClose(); provSyncFromSelect(); }\n    } else if(ev.key === \"Tab\"){\n      \/\/ Tab = \u0e22\u0e37\u0e19\u0e22\u0e31\u0e19\u0e15\u0e31\u0e27\u0e17\u0e35\u0e48\u0e44\u0e2e\u0e44\u0e25\u0e15\u0e4c\u0e2d\u0e22\u0e39\u0e48 (blur \u0e08\u0e30\u0e17\u0e33\u0e07\u0e32\u0e19\u0e15\u0e48\u0e2d\u0e40\u0e2d\u0e07\u0e2d\u0e35\u0e01\u0e17\u0e35)\n      if(open && provFiltered.length && provActive >= 0) provCommit(provFiltered[provActive]);\n    }\n  });\n  \/\/ \u0e43\u0e0a\u0e49 mousedown \u0e44\u0e21\u0e48\u0e43\u0e0a\u0e48 click \u2014 \u0e44\u0e21\u0e48\u0e07\u0e31\u0e49\u0e19 blur \u0e08\u0e30\u0e1b\u0e34\u0e14\u0e23\u0e32\u0e22\u0e01\u0e32\u0e23\u0e44\u0e1b\u0e01\u0e48\u0e2d\u0e19\u0e17\u0e35\u0e48 click \u0e08\u0e30\u0e40\u0e01\u0e34\u0e14\n  e.list.addEventListener(\"mousedown\", function(ev){\n    ev.preventDefault();\n    var li = ev.target && ev.target.closest ? ev.target.closest(\".combo-option\") : null;\n    if(!li) return;\n    provCommit(provFiltered[parseInt(li.dataset.i,10)]);\n    e.input.focus();\n  });\n  \/\/ \u0e04\u0e48\u0e32\u0e16\u0e39\u0e01\u0e15\u0e31\u0e49\u0e07\u0e08\u0e32\u0e01\u0e17\u0e35\u0e48\u0e2d\u0e37\u0e48\u0e19 (\u0e01\u0e39\u0e49\u0e23\u0e48\u0e32\u0e07 \/ \u0e25\u0e49\u0e32\u0e07\u0e1f\u0e2d\u0e23\u0e4c\u0e21) \u0e15\u0e49\u0e2d\u0e07\u0e2d\u0e31\u0e1b\u0e40\u0e14\u0e15\u0e02\u0e49\u0e2d\u0e04\u0e27\u0e32\u0e21\u0e43\u0e19\u0e0a\u0e48\u0e2d\u0e07\u0e15\u0e32\u0e21\n  e.sel.addEventListener(\"change\", provSyncFromSelect);\n  document.addEventListener(\"mousedown\", function(ev){\n    var combo = document.getElementById(\"provinceCombo\");\n    if(combo && !combo.contains(ev.target)) provClose();\n  });\n}\n\/\/ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n\/\/ \u0e2b\u0e19\u0e48\u0e27\u0e22\u0e1a\u0e23\u0e34\u0e01\u0e32\u0e23 \u2014 JSONP\n\/\/ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\nvar serviceLocationsData = [];\nvar FALLBACK_LOCATIONS = [\n  \"\u0e2d\u0e20\u0e34\u0e18\u0e23\u0e23\u0e21\u0e42\u0e0a\u0e15\u0e34\u0e01\u0e30\u0e27\u0e34\u0e17\u0e22\u0e32\u0e25\u0e31\u0e22 (\u0e2a\u0e48\u0e27\u0e19\u0e01\u0e25\u0e32\u0e07)\",\n  \"\u0e27\u0e31\u0e14\u0e01\u0e25\u0e32\u0e07 (\u0e1a\u0e32\u0e07\u0e1b\u0e25\u0e32\u0e21\u0e49\u0e32)\",\n  \"\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e01\u0e25\u0e38\u0e48\u0e21\u0e18\u0e23\u0e23\u0e21\u0e2a\u0e23\u0e32\u0e0d\u0e23\u0e21\u0e22\u0e4c \u0e01\u0e23\u0e30\u0e17\u0e23\u0e27\u0e07\u0e01\u0e32\u0e23\u0e15\u0e48\u0e32\u0e07\u0e1b\u0e23\u0e30\u0e40\u0e17\u0e28\",\n  \"\u0e27\u0e31\u0e14\u0e40\u0e01\u0e48\u0e32\u0e42\u0e1a\u0e23\u0e32\u0e13\",\n  \"\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e27\u0e31\u0e14\u0e40\u0e02\u0e32\u0e17\u0e38\u0e48\u0e07\u0e27\u0e31\u0e27\",\n  \"\u0e27\u0e31\u0e14\u0e40\u0e02\u0e32\u0e1e\u0e38\u0e17\u0e18\u0e42\u0e04\u0e14\u0e21\",\n  \"\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e27\u0e31\u0e14\u0e08\u0e31\u0e19\u0e17\u0e23\u0e2a\u0e38\u0e02\",\n  \"\u0e27\u0e31\u0e14\u0e08\u0e32\u0e01\u0e41\u0e14\u0e07\",\n  \"\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e27\u0e31\u0e14\u0e40\u0e08\u0e23\u0e34\u0e0d\u0e18\u0e23\u0e23\u0e21\u0e32\u0e23\u0e32\u0e21\",\n  \"\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e27\u0e31\u0e14\u0e40\u0e08\u0e23\u0e34\u0e0d\u0e2a\u0e21\u0e13\u0e01\u0e34\u0e08(\u0e2b\u0e25\u0e31\u0e07\u0e28\u0e32\u0e25)\",\n  \"\u0e27\u0e31\u0e14\u0e15\u0e36\u0e01 (\u0e2d\u0e22\u0e38\u0e18\u0e22\u0e32)\",\n  \"\u0e27\u0e31\u0e14\u0e17\u0e48\u0e32\u0e21\u0e30\u0e42\u0e2d\",\n  \"\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e27\u0e31\u0e14\u0e18\u0e23\u0e23\u0e21\u0e32\u0e21\u0e39\u0e25\u0e27\u0e23\u0e27\u0e34\u0e2b\u0e32\u0e23\",\n  \"\u0e27\u0e31\u0e14\u0e19\u0e32\u0e1e\u0e23\u0e49\u0e32\u0e27\u0e40\u0e01\u0e48\u0e32\",\n  \"\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e27\u0e31\u0e14\u0e19\u0e34\u0e2a\u0e2a\u0e23\u0e13\u0e27\u0e19\u0e32\u0e23\u0e32\u0e21\",\n  \"\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e27\u0e31\u0e14\u0e1b\u0e48\u0e32\u0e0a\u0e31\u0e22\u0e21\u0e07\u0e04\u0e25\",\n  \"\u0e27\u0e31\u0e14\u0e1b\u0e48\u0e32\u0e18\u0e23\u0e23\u0e21\u0e42\u0e2a\u0e20\u0e13\",\n  \"\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e27\u0e31\u0e14\u0e1b\u0e48\u0e32\u0e27\u0e0a\u0e34\u0e23\u0e1a\u0e23\u0e23\u0e1e\u0e15\",\n  \"\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e27\u0e31\u0e14\u0e1c\u0e48\u0e2d\u0e07\u0e1e\u0e25\u0e2d\u0e22\u0e27\u0e34\u0e23\u0e34\u0e22\u0e32\u0e23\u0e32\u0e21\",\n  \"\u0e27\u0e31\u0e14\u0e1e\u0e23\u0e2b\u0e21\u0e08\u0e23\u0e34\u0e22\u0e32\u0e27\u0e32\u0e2a\",\n  \"\u0e27\u0e31\u0e14\u0e1e\u0e23\u0e30\u0e18\u0e32\u0e15\u0e38\u0e28\u0e23\u0e35\u0e08\u0e2d\u0e21\u0e17\u0e2d\u0e07\u0e27\u0e23\u0e27\u0e34\u0e2b\u0e32\u0e23\",\n  \"\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e27\u0e31\u0e14\u0e1e\u0e38\u0e17\u0e18\u0e1a\u0e39\u0e0a\u0e32\",\n  \"\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e1e\u0e38\u0e17\u0e18\u0e2a\u0e21\u0e32\u0e04\u0e21\u0e2f \u0e27\u0e31\u0e14\u0e2b\u0e31\u0e27\u0e04\u0e39\u0e49\",\n  \"\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e1e\u0e38\u0e17\u0e18\u0e2a\u0e21\u0e32\u0e04\u0e21\u0e2f \u0e27\u0e31\u0e14\u0e2d\u0e23\u0e31\u0e0d\u0e0d\u0e34\u0e01\",\n  \"\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e1e\u0e38\u0e17\u0e18\u0e2a\u0e21\u0e32\u0e04\u0e21\u0e41\u0e2b\u0e48\u0e07\u0e1b\u0e23\u0e30\u0e40\u0e17\u0e28\u0e44\u0e17\u0e22\",\n  \"\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e27\u0e31\u0e14\u0e40\u0e1e\u0e25\u0e07(\u0e01\u0e25\u0e32\u0e07\u0e2a\u0e27\u0e19)\",\n  \"\u0e27\u0e31\u0e14\u0e21\u0e2b\u0e32\u0e18\u0e32\u0e15\u0e38\u0e27\u0e23\u0e27\u0e34\u0e2b\u0e32\u0e23 (\u0e23\u0e32\u0e0a\u0e1a\u0e38\u0e23\u0e35)\",\n  \"\u0e27\u0e31\u0e14\u0e21\u0e40\u0e2b\u0e22\u0e07\u0e04\u0e13\u0e4c\",\n  \"\u0e27\u0e31\u0e14\u0e40\u0e21\u0e37\u0e2d\u0e07\u0e21\u0e32\u0e07\",\n  \"\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e27\u0e31\u0e14\u0e22\u0e32\u0e19\u0e19\u0e32\u0e27\u0e32\",\n  \"\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e22\u0e38\u0e27\u0e1e\u0e38\u0e17\u0e18\u0e34\u0e01\u0e2a\u0e21\u0e32\u0e04\u0e21\",\n  \"\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e27\u0e31\u0e14\u0e23\u0e32\u0e0a\u0e04\u0e24\u0e2b\u0e4c \u0e27\u0e23\u0e27\u0e34\u0e2b\u0e32\u0e23\",\n  \"\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e27\u0e31\u0e14\u0e23\u0e32\u0e0a\u0e32\u0e18\u0e34\u0e27\u0e32\u0e2a\u0e27\u0e34\u0e2b\u0e32\u0e23\",\n  \"\u0e27\u0e31\u0e14\u0e23\u0e4d\u0e48\u0e32\u0e40\u0e1b\u0e34\u0e07 (\u0e15\u0e42\u0e1b\u0e17\u0e32\u0e23\u0e32\u0e21)\",\n  \"\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e27\u0e31\u0e14\u0e27\u0e31\u0e07\u0e2b\u0e34\u0e19\",\n  \"\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e27\u0e31\u0e14\u0e27\u0e34\u0e2b\u0e32\u0e23\u0e18\u0e23\u0e23\u0e21\",\n  \"\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e27\u0e31\u0e14\u0e28\u0e34\u0e23\u0e34\u0e1e\u0e07\u0e29\u0e4c\u0e18\u0e23\u0e23\u0e21\u0e19\u0e34\u0e21\u0e34\u0e15\",\n  \"\u0e28\u0e39\u0e19\u0e22\u0e4c\u0e1b\u0e0f\u0e34\u0e1a\u0e31\u0e15\u0e34\u0e18\u0e23\u0e23\u0e21\u0e2f (\u0e40\u0e02\u0e32\u0e14\u0e34\u0e19\u0e2b\u0e19\u0e2d\u0e07\u0e41\u0e2a\u0e07)\",\n  \"\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e2a\u0e16\u0e32\u0e19\u0e1b\u0e0f\u0e34\u0e1a\u0e31\u0e15\u0e34\u0e18\u0e23\u0e23\u0e21\u0e1e\u0e34\u0e28\u0e0d\u0e32\u0e18\u0e23\u0e23\u0e21\u0e2a\u0e16\u0e32\u0e19\",\n  \"\u0e27\u0e31\u0e14\u0e2a\u0e23\u0e30\u0e1a\u0e31\u0e27\",\n  \"\u0e27\u0e31\u0e14\u0e2a\u0e27\u0e48\u0e32\u0e07\u0e21\u0e35\u0e0a\u0e31\u0e22\",\n  \"\u0e27\u0e31\u0e14\u0e2a\u0e32\u0e21\u0e0a\u0e38\u0e01\",\n  \"\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e27\u0e31\u0e14\u0e2a\u0e32\u0e21\u0e1e\u0e23\u0e30\u0e22\u0e32\",\n  \"\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e2a\u0e33\u0e19\u0e31\u0e01\u0e2a\u0e31\u0e19\u0e15\u0e34\u0e19\u0e34\u0e27\u0e32\u0e2a (\u0e1b\u0e23\u0e30\u0e08\u0e27\u0e1a\u0e2f)\",\n  \"\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e2a\u0e33\u0e19\u0e31\u0e01\u0e41\u0e21\u0e48\u0e0a\u0e35\u0e44\u0e17\u0e22 \u0e28\u0e32\u0e25\u0e32\u0e22\u0e32\",\n  \"\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e27\u0e31\u0e14\u0e2a\u0e38\u0e17\u0e18\u0e08\u0e34\u0e19\u0e14\u0e32\",\n  \"\u0e27\u0e31\u0e14\u0e2a\u0e38\u0e27\u0e23\u0e23\u0e13\u0e1b\u0e23\u0e30\u0e2a\u0e34\u0e17\u0e18\u0e34\",\n  \"\u0e27\u0e31\u0e14\u0e2b\u0e32\u0e14\u0e43\u0e2b\u0e0d\u0e48\u0e2a\u0e34\u0e15\u0e32\u0e23\u0e32\u0e21\",\n  \"\u0e2d\u0e20\u0e34\u0e18\u0e23\u0e23\u0e21\u0e17\u0e32\u0e07\u0e44\u0e01\u0e25 (\u0e27\u0e31\u0e14\u0e18\u0e23\u0e23\u0e21\u0e21\u0e31\u0e07\u0e04\u0e25\u0e32\u0e23\u0e32\u0e21)\",\n  \"\u0e27\u0e31\u0e14\u0e2d\u0e38\u0e14\u0e21\u0e21\u0e07\u0e04\u0e25\",\n  \"\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e27\u0e31\u0e14\u0e2d\u0e38\u0e1a\u0e25\u0e27\u0e19\u0e32\u0e23\u0e32\u0e21\"\n].map(function(n){ return {name:n, address:\"\"}; });\nvar LOCATION_EN = {\n  \"\u0e2d\u0e20\u0e34\u0e18\u0e23\u0e23\u0e21\u0e42\u0e0a\u0e15\u0e34\u0e01\u0e30\u0e27\u0e34\u0e17\u0e22\u0e32\u0e25\u0e31\u0e22 (\u0e2a\u0e48\u0e27\u0e19\u0e01\u0e25\u0e32\u0e07)\":\"Abhidhamma Jotikavidyalaya (Central), MCU\",\n  \"\u0e27\u0e31\u0e14\u0e01\u0e25\u0e32\u0e07 (\u0e1a\u0e32\u0e07\u0e1b\u0e25\u0e32\u0e21\u0e49\u0e32)\":\"Wat Klang (Bang Pla Ma)\",\n  \"\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e01\u0e25\u0e38\u0e48\u0e21\u0e18\u0e23\u0e23\u0e21\u0e2a\u0e23\u0e32\u0e0d\u0e23\u0e21\u0e22\u0e4c \u0e01\u0e23\u0e30\u0e17\u0e23\u0e27\u0e07\u0e01\u0e32\u0e23\u0e15\u0e48\u0e32\u0e07\u0e1b\u0e23\u0e30\u0e40\u0e17\u0e28\":\"Dhamma Saranrom Group, Ministry of Foreign Affairs\",\n  \"\u0e27\u0e31\u0e14\u0e40\u0e01\u0e48\u0e32\u0e42\u0e1a\u0e23\u0e32\u0e13\":\"Wat Kao Boran\",\n  \"\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e27\u0e31\u0e14\u0e40\u0e02\u0e32\u0e17\u0e38\u0e48\u0e07\u0e27\u0e31\u0e27\":\"Wat Khao Thung Wua Study Center\",\n  \"\u0e27\u0e31\u0e14\u0e40\u0e02\u0e32\u0e1e\u0e38\u0e17\u0e18\u0e42\u0e04\u0e14\u0e21\":\"Wat Khao Phutthakhodom\",\n  \"\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e27\u0e31\u0e14\u0e08\u0e31\u0e19\u0e17\u0e23\u0e2a\u0e38\u0e02\":\"Wat Chanthrasuk Study Center\",\n  \"\u0e27\u0e31\u0e14\u0e08\u0e32\u0e01\u0e41\u0e14\u0e07\":\"Wat Chak Daeng\",\n  \"\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e27\u0e31\u0e14\u0e40\u0e08\u0e23\u0e34\u0e0d\u0e18\u0e23\u0e23\u0e21\u0e32\u0e23\u0e32\u0e21\":\"Wat Charoen Thammaram Study Center\",\n  \"\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e27\u0e31\u0e14\u0e40\u0e08\u0e23\u0e34\u0e0d\u0e2a\u0e21\u0e13\u0e01\u0e34\u0e08(\u0e2b\u0e25\u0e31\u0e07\u0e28\u0e32\u0e25)\":\"Wat Charoen Samanakit Study Center (Behind the Court)\",\n  \"\u0e27\u0e31\u0e14\u0e15\u0e36\u0e01 (\u0e2d\u0e22\u0e38\u0e18\u0e22\u0e32)\":\"Wat Tuek (Ayutthaya)\",\n  \"\u0e27\u0e31\u0e14\u0e17\u0e48\u0e32\u0e21\u0e30\u0e42\u0e2d\":\"Wat Tha Ma-O\",\n  \"\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e27\u0e31\u0e14\u0e18\u0e23\u0e23\u0e21\u0e32\u0e21\u0e39\u0e25\u0e27\u0e23\u0e27\u0e34\u0e2b\u0e32\u0e23\":\"Wat Thammamun Worawihan Study Center\",\n  \"\u0e27\u0e31\u0e14\u0e19\u0e32\u0e1e\u0e23\u0e49\u0e32\u0e27\u0e40\u0e01\u0e48\u0e32\":\"Wat Na Phrao Kao\",\n  \"\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e27\u0e31\u0e14\u0e19\u0e34\u0e2a\u0e2a\u0e23\u0e13\u0e27\u0e19\u0e32\u0e23\u0e32\u0e21\":\"Wat Nitsaranawanaram Study Center\",\n  \"\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e27\u0e31\u0e14\u0e1b\u0e48\u0e32\u0e0a\u0e31\u0e22\u0e21\u0e07\u0e04\u0e25\":\"Wat Pa Chai Mongkhon Study Center\",\n  \"\u0e27\u0e31\u0e14\u0e1b\u0e48\u0e32\u0e18\u0e23\u0e23\u0e21\u0e42\u0e2a\u0e20\u0e13\":\"Wat Pa Thammasophon\",\n  \"\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e27\u0e31\u0e14\u0e1b\u0e48\u0e32\u0e27\u0e0a\u0e34\u0e23\u0e1a\u0e23\u0e23\u0e1e\u0e15\":\"Wat Pa Wachirabanphot Study Center\",\n  \"\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e27\u0e31\u0e14\u0e1c\u0e48\u0e2d\u0e07\u0e1e\u0e25\u0e2d\u0e22\u0e27\u0e34\u0e23\u0e34\u0e22\u0e32\u0e23\u0e32\u0e21\":\"Wat Phong Phloi Wiriyaram Study Center\",\n  \"\u0e27\u0e31\u0e14\u0e1e\u0e23\u0e2b\u0e21\u0e08\u0e23\u0e34\u0e22\u0e32\u0e27\u0e32\u0e2a\":\"Wat Phrom Chariyawat\",\n  \"\u0e27\u0e31\u0e14\u0e1e\u0e23\u0e30\u0e18\u0e32\u0e15\u0e38\u0e28\u0e23\u0e35\u0e08\u0e2d\u0e21\u0e17\u0e2d\u0e07\u0e27\u0e23\u0e27\u0e34\u0e2b\u0e32\u0e23\":\"Wat Phra That Si Chom Thong Worawihan\",\n  \"\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e27\u0e31\u0e14\u0e1e\u0e38\u0e17\u0e18\u0e1a\u0e39\u0e0a\u0e32\":\"Wat Phuttha Bucha Study Center\",\n  \"\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e1e\u0e38\u0e17\u0e18\u0e2a\u0e21\u0e32\u0e04\u0e21\u0e2f \u0e27\u0e31\u0e14\u0e2b\u0e31\u0e27\u0e04\u0e39\u0e49\":\"Buddhist Association Study Center, Wat Hua Khu\",\n  \"\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e1e\u0e38\u0e17\u0e18\u0e2a\u0e21\u0e32\u0e04\u0e21\u0e2f \u0e27\u0e31\u0e14\u0e2d\u0e23\u0e31\u0e0d\u0e0d\u0e34\u0e01\":\"Buddhist Association Study Center, Wat Aranyik\",\n  \"\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e1e\u0e38\u0e17\u0e18\u0e2a\u0e21\u0e32\u0e04\u0e21\u0e41\u0e2b\u0e48\u0e07\u0e1b\u0e23\u0e30\u0e40\u0e17\u0e28\u0e44\u0e17\u0e22\":\"Buddhist Association of Thailand Study Center\",\n  \"\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e27\u0e31\u0e14\u0e40\u0e1e\u0e25\u0e07(\u0e01\u0e25\u0e32\u0e07\u0e2a\u0e27\u0e19)\":\"Wat Phleng (Klang Suan) Study Center\",\n  \"\u0e27\u0e31\u0e14\u0e21\u0e2b\u0e32\u0e18\u0e32\u0e15\u0e38\u0e27\u0e23\u0e27\u0e34\u0e2b\u0e32\u0e23 (\u0e23\u0e32\u0e0a\u0e1a\u0e38\u0e23\u0e35)\":\"Wat Mahathat Worawihan (Ratchaburi)\",\n  \"\u0e27\u0e31\u0e14\u0e21\u0e40\u0e2b\u0e22\u0e07\u0e04\u0e13\u0e4c\":\"Wat Maheyong\",\n  \"\u0e27\u0e31\u0e14\u0e40\u0e21\u0e37\u0e2d\u0e07\u0e21\u0e32\u0e07\":\"Wat Mueang Mang\",\n  \"\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e27\u0e31\u0e14\u0e22\u0e32\u0e19\u0e19\u0e32\u0e27\u0e32\":\"Wat Yannawa Study Center\",\n  \"\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e22\u0e38\u0e27\u0e1e\u0e38\u0e17\u0e18\u0e34\u0e01\u0e2a\u0e21\u0e32\u0e04\u0e21\":\"Young Buddhists Association Study Center\",\n  \"\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e27\u0e31\u0e14\u0e23\u0e32\u0e0a\u0e04\u0e24\u0e2b\u0e4c \u0e27\u0e23\u0e27\u0e34\u0e2b\u0e32\u0e23\":\"Wat Ratchakhrue Worawihan Study Center\",\n  \"\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e27\u0e31\u0e14\u0e23\u0e32\u0e0a\u0e32\u0e18\u0e34\u0e27\u0e32\u0e2a\u0e27\u0e34\u0e2b\u0e32\u0e23\":\"Wat Rachathiwat Wihan Study Center\",\n  \"\u0e27\u0e31\u0e14\u0e23\u0e4d\u0e48\u0e32\u0e40\u0e1b\u0e34\u0e07 (\u0e15\u0e42\u0e1b\u0e17\u0e32\u0e23\u0e32\u0e21)\":\"Wat Ram Poeng (Tapotaram)\",\n  \"\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e27\u0e31\u0e14\u0e27\u0e31\u0e07\u0e2b\u0e34\u0e19\":\"Wat Wang Hin Study Center\",\n  \"\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e27\u0e31\u0e14\u0e27\u0e34\u0e2b\u0e32\u0e23\u0e18\u0e23\u0e23\u0e21\":\"Wat Wihan Tham Study Center\",\n  \"\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e27\u0e31\u0e14\u0e28\u0e34\u0e23\u0e34\u0e1e\u0e07\u0e29\u0e4c\u0e18\u0e23\u0e23\u0e21\u0e19\u0e34\u0e21\u0e34\u0e15\":\"Wat Siriphong Thammanimit Study Center\",\n  \"\u0e28\u0e39\u0e19\u0e22\u0e4c\u0e1b\u0e0f\u0e34\u0e1a\u0e31\u0e15\u0e34\u0e18\u0e23\u0e23\u0e21\u0e2f (\u0e40\u0e02\u0e32\u0e14\u0e34\u0e19\u0e2b\u0e19\u0e2d\u0e07\u0e41\u0e2a\u0e07)\":\"Dhamma Practice Center (Khao Din Nong Saeng)\",\n  \"\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e2a\u0e16\u0e32\u0e19\u0e1b\u0e0f\u0e34\u0e1a\u0e31\u0e15\u0e34\u0e18\u0e23\u0e23\u0e21\u0e1e\u0e34\u0e28\u0e0d\u0e32\u0e18\u0e23\u0e23\u0e21\u0e2a\u0e16\u0e32\u0e19\":\"Phitsaya Dhamma Practice Center Study Center\",\n  \"\u0e27\u0e31\u0e14\u0e2a\u0e23\u0e30\u0e1a\u0e31\u0e27\":\"Wat Sa Bua\",\n  \"\u0e27\u0e31\u0e14\u0e2a\u0e27\u0e48\u0e32\u0e07\u0e21\u0e35\u0e0a\u0e31\u0e22\":\"Wat Sawang Mi Chai\",\n  \"\u0e27\u0e31\u0e14\u0e2a\u0e32\u0e21\u0e0a\u0e38\u0e01\":\"Wat Sam Chuk\",\n  \"\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e27\u0e31\u0e14\u0e2a\u0e32\u0e21\u0e1e\u0e23\u0e30\u0e22\u0e32\":\"Wat Sam Phraya Study Center\",\n  \"\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e2a\u0e33\u0e19\u0e31\u0e01\u0e2a\u0e31\u0e19\u0e15\u0e34\u0e19\u0e34\u0e27\u0e32\u0e2a (\u0e1b\u0e23\u0e30\u0e08\u0e27\u0e1a\u0e2f)\":\"Santiniwat Institute Study Center (Prachuap Khiri Khan)\",\n  \"\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e2a\u0e33\u0e19\u0e31\u0e01\u0e41\u0e21\u0e48\u0e0a\u0e35\u0e44\u0e17\u0e22 \u0e28\u0e32\u0e25\u0e32\u0e22\u0e32\":\"Thai Nuns Institute Study Center, Salaya\",\n  \"\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e27\u0e31\u0e14\u0e2a\u0e38\u0e17\u0e18\u0e08\u0e34\u0e19\u0e14\u0e32\":\"Wat Sutthachinda Study Center\",\n  \"\u0e27\u0e31\u0e14\u0e2a\u0e38\u0e27\u0e23\u0e23\u0e13\u0e1b\u0e23\u0e30\u0e2a\u0e34\u0e17\u0e18\u0e34\":\"Wat Suwan Prasit\",\n  \"\u0e27\u0e31\u0e14\u0e2b\u0e32\u0e14\u0e43\u0e2b\u0e0d\u0e48\u0e2a\u0e34\u0e15\u0e32\u0e23\u0e32\u0e21\":\"Wat Hat Yai Sitaram\",\n  \"\u0e2d\u0e20\u0e34\u0e18\u0e23\u0e23\u0e21\u0e17\u0e32\u0e07\u0e44\u0e01\u0e25 (\u0e27\u0e31\u0e14\u0e18\u0e23\u0e23\u0e21\u0e21\u0e31\u0e07\u0e04\u0e25\u0e32\u0e23\u0e32\u0e21)\":\"Distance Learning (Wat Thammangkhalaram)\",\n  \"\u0e27\u0e31\u0e14\u0e2d\u0e38\u0e14\u0e21\u0e21\u0e07\u0e04\u0e25\":\"Wat Udom Mongkhon\",\n  \"\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e27\u0e31\u0e14\u0e2d\u0e38\u0e1a\u0e25\u0e27\u0e19\u0e32\u0e23\u0e32\u0e21\":\"Wat Ubon Wanaram Study Center\"\n};\nfunction locDisplayName(thName){\n  return (LANG===\"en\" && LOCATION_EN[thName]) ? LOCATION_EN[thName] : thName;\n}\nfunction renderServiceLocations(items){\n  serviceLocationsData = items || [];\n  var sel = document.getElementById(\"serviceLocation\");\n  if(!serviceLocationsData.length){\n    sel.innerHTML = '<option value=\"\">'+T(\"selServiceNone\")+'<\/option>';\n    return;\n  }\n  var html = '<option value=\"\">'+T(\"selService\")+'<\/option>';\n  serviceLocationsData.forEach(function(item){\n    html += '<option value=\"'+esc(item.name)+'\">'+esc(locDisplayName(item.name))+'<\/option>';\n  });\n  sel.innerHTML = html;\n}\nvar usingFallbackLocations = false;\nvar LOCATIONS_TIMEOUT_MS = 15000;   \/\/ GAS cold start \u0e40\u0e01\u0e34\u0e19 8 \u0e27\u0e34\u0e44\u0e14\u0e49\u0e1a\u0e48\u0e2d\u0e22\nfunction loadServiceLocations(isRetry){\n  var cbName = \"locCb_\" + Date.now() + \"_\" + Math.floor(Math.random()*100000);\n  var scriptEl = null;\n  var timer = setTimeout(function(){ cleanup(); onFail(); }, LOCATIONS_TIMEOUT_MS);\n  function cleanup(){\n    clearTimeout(timer);\n    delete window[cbName];\n    if(scriptEl && scriptEl.parentNode) scriptEl.parentNode.removeChild(scriptEl);\n  }\n  \/\/ \u0e23\u0e32\u0e22\u0e0a\u0e37\u0e48\u0e2d\u0e2a\u0e33\u0e23\u0e2d\u0e07\u0e1d\u0e31\u0e07\u0e43\u0e19\u0e2b\u0e19\u0e49\u0e32\u0e40\u0e27\u0e47\u0e1a\u0e2d\u0e32\u0e08\u0e44\u0e21\u0e48\u0e15\u0e23\u0e07\u0e01\u0e31\u0e1a\u0e0a\u0e35\u0e15 backend \u0e08\u0e30\u0e1b\u0e0f\u0e34\u0e40\u0e2a\u0e18\u0e2b\u0e25\u0e31\u0e07\u0e2d\u0e31\u0e1b\u0e42\u0e2b\u0e25\u0e14\u0e23\u0e39\u0e1b\u0e40\u0e2a\u0e23\u0e47\u0e08\u0e41\u0e25\u0e49\u0e27\n  \/\/ \u0e08\u0e36\u0e07\u0e25\u0e2d\u0e07\u0e14\u0e36\u0e07\u0e23\u0e32\u0e22\u0e0a\u0e37\u0e48\u0e2d\u0e08\u0e23\u0e34\u0e07\u0e0b\u0e49\u0e33\u0e2d\u0e35\u0e01\u0e04\u0e23\u0e31\u0e49\u0e07\u0e43\u0e19\u0e40\u0e1a\u0e37\u0e49\u0e2d\u0e07\u0e2b\u0e25\u0e31\u0e07\n  function onFail(){\n    if(isRetry) return;                      \/\/ \u0e43\u0e0a\u0e49\u0e23\u0e32\u0e22\u0e0a\u0e37\u0e48\u0e2d\u0e2a\u0e33\u0e23\u0e2d\u0e07\u0e17\u0e35\u0e48\u0e41\u0e2a\u0e14\u0e07\u0e2d\u0e22\u0e39\u0e48\u0e15\u0e48\u0e2d\u0e44\u0e1b\n    usingFallbackLocations = true;\n    renderServiceLocations(FALLBACK_LOCATIONS);\n    setTimeout(function(){ loadServiceLocations(true); }, 5000);\n  }\n  window[cbName] = function(data){\n    cleanup();\n    var items = (data && data.ok && data.items && data.items.length) ? data.items : null;\n    if(!items){ onFail(); return; }\n    var picked = document.getElementById(\"serviceLocation\").value;\n    usingFallbackLocations = false;\n    renderServiceLocations(items);\n    if(picked) document.getElementById(\"serviceLocation\").value = picked;   \/\/ \u0e27\u0e48\u0e32\u0e07\u0e40\u0e2d\u0e07\u0e16\u0e49\u0e32\u0e0a\u0e37\u0e48\u0e2d\u0e19\u0e31\u0e49\u0e19\u0e44\u0e21\u0e48\u0e21\u0e35\u0e43\u0e19\u0e0a\u0e35\u0e15\u0e41\u0e25\u0e49\u0e27\n  };\n  scriptEl = document.createElement(\"script\");\n  scriptEl.src = GAS_URL + \"?action=getLocations&callback=\" + encodeURIComponent(cbName);\n  scriptEl.onerror = function(){ cleanup(); onFail(); };\n  document.body.appendChild(scriptEl);\n}\nloadServiceLocations();\ndocument.getElementById(\"serviceLocation\").addEventListener(\"change\",function(){\n  var addrEl = document.getElementById(\"serviceLocationAddr\");\n  var picked = this.value;\n  if(!picked){ addrEl.style.display=\"none\"; return; }\n  for(var i=0; i<serviceLocationsData.length; i++){\n    if(serviceLocationsData[i].name === picked){\n      var addr = serviceLocationsData[i].address;\n      addrEl.style.display = addr ? \"block\" : \"none\";\n      if(addr) addrEl.textContent = \"\ud83d\udccd \" + addr;\n      return;\n    }\n  }\n  addrEl.style.display = \"none\";\n});\n\/\/ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n\/\/ \u0e23\u0e39\u0e1b\u0e20\u0e32\u0e1e\n\/\/ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\nvar photoBase64 = \"\";\nvar activeSubmissionId = \"\";\n\/\/ \u0e42\u0e2b\u0e21\u0e14\u0e41\u0e01\u0e49\u0e44\u0e02\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e17\u0e35\u0e48\u0e40\u0e04\u0e22\u0e2a\u0e21\u0e31\u0e04\u0e23\u0e44\u0e27\u0e49 (\u0e21\u0e32\u0e08\u0e32\u0e01\u0e1b\u0e38\u0e48\u0e21 \"\u0e41\u0e01\u0e49\u0e44\u0e02\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\" \u0e43\u0e19\u0e2b\u0e19\u0e49\u0e32\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e2a\u0e16\u0e32\u0e19\u0e30)\n\/\/ editAuth \u0e40\u0e01\u0e47\u0e1a\u0e23\u0e2b\u0e31\u0e2a+\u0e40\u0e1a\u0e2d\u0e23\u0e4c\u0e17\u0e49\u0e32\u0e22\u0e17\u0e35\u0e48\u0e43\u0e0a\u0e49\u0e22\u0e37\u0e19\u0e22\u0e31\u0e19\u0e15\u0e31\u0e27\u0e15\u0e19\u0e44\u0e27\u0e49 \u0e43\u0e0a\u0e49\u0e2a\u0e48\u0e07\u0e0b\u0e49\u0e33\u0e15\u0e2d\u0e19\u0e01\u0e14\u0e1a\u0e31\u0e19\u0e17\u0e36\u0e01\u0e08\u0e23\u0e34\u0e07\nvar isEditMode = false;\nvar editAuth = null;\nfunction showFileReadError(){\n  Swal.fire({icon:\"error\",title:T(\"photoReadFail\"),text:T(\"photoReadFailMsg\"),confirmButtonColor:\"#AD4970\"});\n}\nfunction createSubmissionId(){\n  if(window.crypto && typeof window.crypto.randomUUID === \"function\") return window.crypto.randomUUID();\n  return \"reg_\" + Date.now().toString(36) + \"_\" + Math.random().toString(36).slice(2) + Math.random().toString(36).slice(2);\n}\nfunction onPhotoChange(e){\n  var file = e.target.files[0];\n  if(!file) return;\n  \/\/ \u0e25\u0e49\u0e32\u0e07\u0e2d\u0e35\u0e01\u0e0a\u0e48\u0e2d\u0e07\u0e2b\u0e19\u0e36\u0e48\u0e07 (\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e44\u0e1f\u0e25\u0e4c \/ \u0e16\u0e48\u0e32\u0e22\u0e20\u0e32\u0e1e) \u0e43\u0e2b\u0e49\u0e40\u0e2b\u0e25\u0e37\u0e2d\u0e41\u0e2b\u0e25\u0e48\u0e07\u0e40\u0e14\u0e35\u0e22\u0e27\n  var otherPhoto = document.getElementById(e.target.id === \"photoInput\" ? \"photoCameraInput\" : \"photoInput\");\n  if(otherPhoto) otherPhoto.value = \"\";\n  if(!\/^image\\\/(jpeg|png)$\/.test(file.type)){\n    e.target.value=\"\";\n    Swal.fire({icon:\"warning\",title:T(\"photoWrongType\"),text:T(\"photoWrongTypeMsg\"),confirmButtonColor:\"#AD4970\"});\n    return;\n  }\n  if(file.size > 10*1024*1024){\n    e.target.value=\"\";\n    Swal.fire({icon:\"warning\",title:T(\"photoTooBig\"),text:T(\"photoTooBigMsg\"),confirmButtonColor:\"#AD4970\"});\n    return;\n  }\n  var reader = new FileReader();\n  var input  = e.target;\n  reader.onerror = function(){ input.value=\"\"; showFileReadError(); };\n  reader.onload = function(ev){\n    var img = new Image();\n    \/\/ \u0e44\u0e1f\u0e25\u0e4c\u0e19\u0e32\u0e21\u0e2a\u0e01\u0e38\u0e25\u0e16\u0e39\u0e01\u0e41\u0e15\u0e48\u0e40\u0e19\u0e37\u0e49\u0e2d\u0e43\u0e19\u0e40\u0e2a\u0e35\u0e22 \u0e08\u0e30\u0e44\u0e21\u0e48\u0e40\u0e02\u0e49\u0e32 onload \u0e40\u0e25\u0e22 \u0e15\u0e49\u0e2d\u0e07\u0e41\u0e08\u0e49\u0e07\u0e1c\u0e39\u0e49\u0e43\u0e0a\u0e49 \u0e44\u0e21\u0e48\u0e43\u0e0a\u0e48\u0e40\u0e07\u0e35\u0e22\u0e1a\n    img.onerror = function(){ input.value=\"\"; showFileReadError(); };\n    img.onload = function(){\n      var mW=1200, mH=1600, ratio=Math.min(mW\/img.width, mH\/img.height, 1);\n      var w=Math.round(img.width*ratio), h=Math.round(img.height*ratio);\n      var canvas = document.createElement(\"canvas\");\n      canvas.width=w; canvas.height=h;\n      var ctx = canvas.getContext(\"2d\");\n      ctx.fillStyle=\"#fff\"; ctx.fillRect(0,0,w,h);\n      ctx.drawImage(img,0,0,w,h);\n      photoBase64 = canvas.toDataURL(\"image\/jpeg\",0.88);\n      uploadedUrls.photo = \"\";        \/\/ \u0e23\u0e39\u0e1b\u0e43\u0e2b\u0e21\u0e48 \u0e15\u0e49\u0e2d\u0e07\u0e2d\u0e31\u0e1b\u0e42\u0e2b\u0e25\u0e14\u0e43\u0e2b\u0e21\u0e48\n      document.getElementById(\"photoImg\").src = photoBase64;\n      document.getElementById(\"photoImg\").style.display = \"block\";\n      document.getElementById(\"photoPlaceholder\").style.display = \"none\";\n      document.getElementById(\"btnPhotoRemove\").hidden = false;\n      clearErrorFor(document.getElementById(\"photoInput\"));\n      updateUploadSummary();\n    };\n    img.src = ev.target.result;\n  };\n  reader.readAsDataURL(file);\n}\nfunction removePhoto(){\n  photoBase64=\"\"; uploadedUrls.photo=\"\";\n  var input=document.getElementById(\"photoInput\"), img=document.getElementById(\"photoImg\");\n  var camInput=document.getElementById(\"photoCameraInput\");\n  input.value=\"\"; if(camInput) camInput.value=\"\";   \/\/ \u0e15\u0e49\u0e2d\u0e07\u0e25\u0e49\u0e32\u0e07\u0e17\u0e31\u0e49\u0e07\u0e04\u0e39\u0e48 \u0e44\u0e21\u0e48\u0e07\u0e31\u0e49\u0e19\u0e40\u0e25\u0e37\u0e2d\u0e01\/\u0e16\u0e48\u0e32\u0e22\u0e23\u0e39\u0e1b\u0e40\u0e14\u0e34\u0e21\u0e0b\u0e49\u0e33\u0e41\u0e25\u0e49\u0e27 change \u0e44\u0e21\u0e48\u0e17\u0e33\u0e07\u0e32\u0e19\n  img.src=\"\"; img.style.display=\"none\";\n  document.getElementById(\"photoPlaceholder\").style.display=\"\";\n  document.getElementById(\"btnPhotoRemove\").hidden=true;\n  updateUploadSummary();\n}\n\/\/ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n\/\/ \u0e40\u0e2d\u0e01\u0e2a\u0e32\u0e23\u0e15\u0e48\u0e32\u0e07\u0e0a\u0e32\u0e15\u0e34\n\/\/ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\nvar passportBase64 = \"\";\nvar visaExpiryBase64 = \"\";\nvar tm30Base64 = \"\";\nfunction docUI(kind){\n  var prefix = kind === \"visaExpiry\" ? \"visaExpiry\" : kind;\n  return {\n    input:document.getElementById(prefix+\"Input\"),\n    camera:document.getElementById(prefix+\"CameraInput\"),\n    img:document.getElementById(prefix+\"Img\"),\n    placeholder:document.getElementById(prefix+\"Placeholder\"),\n    name:document.getElementById(prefix+\"Name\"),\n    remove:document.getElementById(kind===\"passport\"?\"btnPassportRemove\":kind===\"visaExpiry\"?\"btnVisaExpiryRemove\":\"btnTM30Remove\"),\n    tile:document.getElementById(prefix+\"Tile\")\n  };\n}\nfunction onDocChange(e, kind){\n  var file = e.target.files[0];\n  if(!file) return;\n  \/\/ \u0e25\u0e49\u0e32\u0e07\u0e2d\u0e35\u0e01\u0e0a\u0e48\u0e2d\u0e07\u0e2b\u0e19\u0e36\u0e48\u0e07 (\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e44\u0e1f\u0e25\u0e4c \/ \u0e16\u0e48\u0e32\u0e22\u0e20\u0e32\u0e1e) \u0e43\u0e2b\u0e49\u0e40\u0e2b\u0e25\u0e37\u0e2d\u0e41\u0e2b\u0e25\u0e48\u0e07\u0e40\u0e14\u0e35\u0e22\u0e27\n  var du = docUI(kind);\n  var otherDoc = (e.target === du.camera) ? du.input : du.camera;\n  if(otherDoc) otherDoc.value = \"\";\n  if(!\/^image\\\/(jpeg|png)$\/.test(file.type)){\n    e.target.value=\"\";\n    Swal.fire({icon:\"warning\",title:T(\"photoWrongType\"),text:T(\"photoWrongTypeMsg\"),confirmButtonColor:\"#AD4970\"});\n    return;\n  }\n  if(file.size > 10*1024*1024){\n    e.target.value=\"\";\n    Swal.fire({icon:\"warning\",title:T(\"photoTooBig\"),text:T(\"photoTooBigMsg\"),confirmButtonColor:\"#AD4970\"});\n    return;\n  }\n  var reader = new FileReader();\n  var input  = e.target;\n  reader.onerror = function(){ input.value=\"\"; showFileReadError(); };\n  reader.onload = function(ev){\n    if(kind === \"passport\") passportBase64 = ev.target.result;\n    else if(kind === \"visaExpiry\") visaExpiryBase64 = ev.target.result;\n    else tm30Base64 = ev.target.result;\n    uploadedUrls[kind] = \"\";        \/\/ \u0e44\u0e1f\u0e25\u0e4c\u0e43\u0e2b\u0e21\u0e48 \u0e15\u0e49\u0e2d\u0e07\u0e2d\u0e31\u0e1b\u0e42\u0e2b\u0e25\u0e14\u0e43\u0e2b\u0e21\u0e48\n    var ui=docUI(kind);\n    ui.img.src=ev.target.result; ui.img.style.display=\"block\";\n    ui.placeholder.style.display=\"none\";\n    ui.name.textContent=\"\u2713 \"+file.name; ui.name.style.display=\"block\";\n    ui.remove.hidden=false;\n    clearErrorFor(ui.input);\n    updateUploadSummary();\n  };\n  reader.readAsDataURL(file);\n}\nfunction removeDoc(kind){\n  if(kind === \"passport\") passportBase64=\"\";\n  else if(kind === \"visaExpiry\") visaExpiryBase64=\"\";\n  else tm30Base64=\"\";\n  uploadedUrls[kind] = \"\";\n  var ui=docUI(kind);\n  ui.input.value=\"\"; if(ui.camera) ui.camera.value=\"\";   \/\/ \u0e25\u0e49\u0e32\u0e07\u0e17\u0e31\u0e49\u0e07\u0e04\u0e39\u0e48 \u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e43\u0e2b\u0e49\u0e16\u0e48\u0e32\u0e22\/\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e44\u0e1f\u0e25\u0e4c\u0e40\u0e14\u0e34\u0e21\u0e0b\u0e49\u0e33\u0e44\u0e14\u0e49\n  ui.img.src=\"\"; ui.img.style.display=\"none\";\n  ui.placeholder.style.display=\"\";\n  ui.name.textContent=\"\"; ui.name.style.display=\"none\";\n  ui.remove.hidden=true;\n  clearErrorFor(ui.input);\n  updateUploadSummary();\n}\nfunction updateUploadSummary(){\n  var values=LANG===\"en\"?[photoBase64,passportBase64,visaExpiryBase64,tm30Base64]:[photoBase64];\n  var count=values.filter(function(v){return !!v;}).length;\n  var total=values.length;\n  var summary=document.getElementById(\"uploadSummary\");\n  var countEl=document.getElementById(\"uploadSummaryCount\");\n  var bar=document.getElementById(\"uploadSummaryBar\");\n  if(countEl) countEl.textContent=LANG===\"en\"?(count+\" of \"+total+\" uploaded\"):(\"\u0e2d\u0e31\u0e1b\u0e42\u0e2b\u0e25\u0e14\u0e41\u0e25\u0e49\u0e27 \"+count+\" \u0e08\u0e32\u0e01 \"+total);\n  if(bar) bar.style.width=Math.round((count\/total)*100)+\"%\";\n  if(summary) summary.classList.toggle(\"complete\",count===total);\n}\n\/\/ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n\/\/ ImgBB Key\n\/\/ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\nvar IMGBB_KEY = \"398be2705548b93db3327df0ff1f1baa\";\n\/\/ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n\/\/ Modal \u0e2a\u0e23\u0e38\u0e1b\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e01\u0e48\u0e2d\u0e19\u0e22\u0e37\u0e19\u0e22\u0e31\u0e19\n\/\/ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\nfunction fieldDisplayValue(id){\n  var el=document.getElementById(id);\n  if(!el) return \"\";\n  if(el.tagName===\"SELECT\" && el.selectedIndex>=0){\n    if(!el.value) return \"\";\n    return (el.options[el.selectedIndex].textContent||\"\").trim();\n  }\n  return (el.value||\"\").trim();\n}\nfunction displayBirthdate(value){\n  if(LANG!==\"en\" || !value) return value;\n  var parts=value.split(\"\/\");\n  if(parts.length!==3) return value;\n  var year=parseInt(parts[2],10);\n  if(year>2400) year-=543;\n  return parts[0]+\"\/\"+parts[1]+\"\/\"+year;\n}\nfunction buildReviewHTML(){\n  var prefix    = document.getElementById(\"prefix\").value;\n  var prefixDisplay = fieldDisplayValue(\"prefix\");\n  var firstName = document.getElementById(\"firstName\").value.trim();\n  var lastName  = document.getElementById(\"lastName\").value.trim();\n  var temple    = (document.getElementById(\"temple\") && document.getElementById(\"temple\").value.trim()) || \"\";\n  var birthdate = displayBirthdate(document.getElementById(\"birthdate\").value);\n  var phone     = document.getElementById(\"phone\").value.trim();\n  var education = fieldDisplayValue(\"education\");\n  var pali      = fieldDisplayValue(\"pali\");\n  var dhamma    = fieldDisplayValue(\"dhamma\");\n  var address   = document.getElementById(\"address\").value.trim();\n  var soi       = document.getElementById(\"soi\").value.trim();\n  var sub       = fieldDisplayValue(\"subdistrict\");\n  var dist      = fieldDisplayValue(\"district\");\n  var prov      = fieldDisplayValue(\"province\");\n  var postal    = document.getElementById(\"postalCode\").value.trim();\n  var service   = locDisplayName(document.getElementById(\"serviceLocation\").value);\n  var fullName  = (prefixDisplay + \" \" + firstName + (lastName?\" \"+lastName:\"\")).trim();\n  var isLang = LANG === \"en\";\n  var addrFull  = isLang\n    ? [address,soi,sub,dist,prov,postal].filter(function(v){return !!v;}).join(\", \")\n    : address + (soi?\" \"+soi:\"\") + \" \u0e15.\" + sub + \" \u0e2d.\" + dist + \" \u0e08.\" + prov + \" \" + postal;\n  var L = function(th,en){ return isLang ? en : th; };\n  var html = \"\";\n  \/\/ \u0e23\u0e39\u0e1b\u0e16\u0e48\u0e32\u0e22\n  if(photoBase64){\n    html += '<div class=\"review-photo-wrap\"><img decoding=\"async\" src=\"'+photoBase64+'\" alt=\"'+L(\"\u0e23\u0e39\u0e1b\u0e16\u0e48\u0e32\u0e22\",\"Photo\")+'\"><\/div>';\n  }\n  \/\/ \u0e2a\u0e16\u0e32\u0e19\u0e30\u0e40\u0e2d\u0e01\u0e2a\u0e32\u0e23\n  html += '<div class=\"review-section-title\">'+L(\"\u0e23\u0e39\u0e1b\u0e20\u0e32\u0e1e\",\"Photos and Required Documents\")+'<\/div>';\n  var docs = isLang\n    ? [[\"Front-facing photo\",photoBase64],[\"Passport first page\",passportBase64],[\"Visa expiry page\",visaExpiryBase64],[\"TM.30\",tm30Base64]]\n    : [[\"\u0e23\u0e39\u0e1b\u0e16\u0e48\u0e32\u0e22\u0e2b\u0e19\u0e49\u0e32\u0e15\u0e23\u0e07\",photoBase64]];\n  html += '<div class=\"review-doc-list\">';\n  docs.forEach(function(item){\n    var ok=!!item[1];\n    html += '<div class=\"review-doc-item\"><span>'+esc2(item[0])+'<\/span><span class=\"'+(ok?\"review-doc-ok\":\"review-doc-missing\")+'\">'+(ok?L(\"\u0e2d\u0e31\u0e1b\u0e42\u0e2b\u0e25\u0e14\u0e41\u0e25\u0e49\u0e27 \u2713\",\"Uploaded \u2713\"):L(\"\u0e22\u0e31\u0e07\u0e44\u0e21\u0e48\u0e21\u0e35\u0e44\u0e1f\u0e25\u0e4c\",\"Missing\"))+'<\/span><\/div>';\n  });\n  html += '<\/div>';\n  \/\/ \u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e2a\u0e48\u0e27\u0e19\u0e15\u0e31\u0e27\n  html += '<div class=\"review-section-title\">'+L(\"\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e2a\u0e48\u0e27\u0e19\u0e15\u0e31\u0e27\",\"Personal Information\")+'<\/div>';\n  html += rvRow(L(\"\u0e0a\u0e37\u0e48\u0e2d-\u0e19\u0e32\u0e21\u0e2a\u0e01\u0e38\u0e25\",\"Full Name\"), fullName);\n  if(isOrdained(prefix) && temple) html += rvRow(L(\"\u0e27\u0e31\u0e14\/\u0e2a\u0e33\u0e19\u0e31\u0e01\",\"Temple\"), temple);\n  html += rvRow(L(\"\u0e27\u0e31\u0e19\u0e40\u0e14\u0e37\u0e2d\u0e19\u0e1b\u0e35\u0e40\u0e01\u0e34\u0e14\",\"Date of Birth\"), birthdate);\n  html += rvRow(L(\"\u0e42\u0e17\u0e23\u0e28\u0e31\u0e1e\u0e17\u0e4c\",\"Phone\"), phone);\n  if(education) html += rvRow(L(\"\u0e27\u0e38\u0e12\u0e34\u0e01\u0e32\u0e23\u0e28\u0e36\u0e01\u0e29\u0e32\",\"Education\"), education);\n  if(pali)      html += rvRow(L(\"\u0e40\u0e1b\u0e23\u0e35\u0e22\u0e0d\u0e18\u0e23\u0e23\u0e21\",\"Pali\"), pali);\n  if(dhamma)    html += rvRow(L(\"\u0e19\u0e31\u0e01\u0e18\u0e23\u0e23\u0e21\",\"Dhamma\"), dhamma);\n  \/\/ \u0e17\u0e35\u0e48\u0e2d\u0e22\u0e39\u0e48\n  html += '<div class=\"review-section-title\">'+L(\"\u0e17\u0e35\u0e48\u0e2d\u0e22\u0e39\u0e48\",\"Address\")+'<\/div>';\n  html += rvRow(L(\"\u0e17\u0e35\u0e48\u0e2d\u0e22\u0e39\u0e48\u0e1b\u0e31\u0e08\u0e08\u0e38\u0e1a\u0e31\u0e19\",\"Current Address\"), addrFull);\n  \/\/ \u0e2b\u0e19\u0e48\u0e27\u0e22\u0e1a\u0e23\u0e34\u0e01\u0e32\u0e23\n  html += '<div class=\"review-section-title\">'+L(\"\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\/\u0e2b\u0e19\u0e48\u0e27\u0e22\u0e1a\u0e23\u0e34\u0e01\u0e32\u0e23\",\"Study Center Near You\")+'<\/div>';\n  html += rvRow(L(\"\u0e2b\u0e19\u0e48\u0e27\u0e22\u0e1a\u0e23\u0e34\u0e01\u0e32\u0e23\",\"Study Center\"), service || L(\"\u0e22\u0e31\u0e07\u0e44\u0e21\u0e48\u0e44\u0e14\u0e49\u0e40\u0e25\u0e37\u0e2d\u0e01\",\"Not selected\"));\n  \/\/ \u0e02\u0e49\u0e2d\u0e04\u0e27\u0e32\u0e21\u0e40\u0e15\u0e37\u0e2d\u0e19\n  html += '<div style=\"margin-top:16px;padding:12px 14px;background:#fff8e8;border:1px solid #f5d67a;border-radius:10px;font-size:13.5px;color:#7a5a00;line-height:1.7;\">';\n  html += L(\"\u26a0\ufe0f \u0e01\u0e23\u0e38\u0e13\u0e32\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e43\u0e2b\u0e49\u0e16\u0e39\u0e01\u0e15\u0e49\u0e2d\u0e07\u0e01\u0e48\u0e2d\u0e19\u0e01\u0e14\u0e22\u0e37\u0e19\u0e22\u0e31\u0e19 \u0e2b\u0e32\u0e01\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e44\u0e21\u0e48\u0e16\u0e39\u0e01\u0e15\u0e49\u0e2d\u0e07 \u0e01\u0e23\u0e38\u0e13\u0e32\u0e01\u0e14\u0e1b\u0e38\u0e48\u0e21 <strong>\u0e41\u0e01\u0e49\u0e44\u0e02<\/strong>\",\n            \"\u26a0\ufe0f Please verify all information before confirming. Press <strong>Edit<\/strong> to make changes.\");\n  html += '<\/div>';\n  return html;\n}\nfunction rvRow(label, value){\n  return '<div class=\"review-row\"><div class=\"review-lbl\">'+esc2(label)+'<\/div><div class=\"review-val\">'+esc2(value||\"\u2014\")+'<\/div><\/div>';\n}\nfunction showReviewModal(){\n  document.getElementById(\"reviewModalBody\").innerHTML = buildReviewHTML();\n  \/\/ \u0e42\u0e2b\u0e21\u0e14\u0e41\u0e01\u0e49\u0e44\u0e02: \u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19\u0e04\u0e33\u0e43\u0e19\u0e1b\u0e38\u0e48\u0e21\u0e22\u0e37\u0e19\u0e22\u0e31\u0e19\u0e44\u0e21\u0e48\u0e43\u0e2b\u0e49\u0e1e\u0e39\u0e14\u0e27\u0e48\u0e32 \"\u0e2a\u0e21\u0e31\u0e04\u0e23\" \u2014 \u0e20\u0e32\u0e29\u0e32\u0e2d\u0e37\u0e48\u0e19\u0e01\u0e25\u0e31\u0e1a\u0e40\u0e1b\u0e47\u0e19\u0e04\u0e48\u0e32\u0e40\u0e14\u0e34\u0e21\u0e2d\u0e31\u0e15\u0e42\u0e19\u0e21\u0e31\u0e15\u0e34\u0e40\u0e21\u0e37\u0e48\u0e2d\u0e2a\u0e25\u0e31\u0e1a\u0e20\u0e32\u0e29\u0e32\/\u0e25\u0e49\u0e32\u0e07\u0e1f\u0e2d\u0e23\u0e4c\u0e21\n  document.getElementById(\"rvConfirm\").textContent = isEditMode\n    ? (LANG===\"en\" ? \"Confirm Changes\" : \"\u0e22\u0e37\u0e19\u0e22\u0e31\u0e19\u0e01\u0e32\u0e23\u0e41\u0e01\u0e49\u0e44\u0e02\")\n    : T(\"rvConfirm\");\n  var overlay = document.getElementById(\"reviewOverlay\");\n  lastModalFocus = document.activeElement;\n  overlay.classList.add(\"open\");\n  overlay.scrollTop = 0;\n  document.getElementById(\"btnReviewConfirm\").disabled = false;\n  setTimeout(function(){ document.getElementById(\"btnReviewBack\").focus(); },0);\n}\nvar lastModalFocus = null;\nfunction closeReviewModal(returnFocus){\n  document.getElementById(\"reviewOverlay\").classList.remove(\"open\");\n  if(returnFocus !== false && lastModalFocus && lastModalFocus.focus) lastModalFocus.focus();\n}\ndocument.getElementById(\"btnReviewBack\").addEventListener(\"click\", function(){\n  closeReviewModal();\n});\n\/\/ \u0e1b\u0e34\u0e14 modal \u0e40\u0e21\u0e37\u0e48\u0e2d\u0e04\u0e25\u0e34\u0e01\u0e1e\u0e37\u0e49\u0e19\u0e2b\u0e25\u0e31\u0e07\ndocument.getElementById(\"reviewOverlay\").addEventListener(\"click\", function(e){\n  if(e.target === this) closeReviewModal();\n});\ndocument.getElementById(\"reviewOverlay\").addEventListener(\"keydown\", function(e){\n  if(e.key === \"Escape\"){ e.preventDefault(); closeReviewModal(); return; }\n  if(e.key !== \"Tab\") return;\n  var items=this.querySelectorAll('button:not([disabled]),[href],input:not([disabled]),select:not([disabled]),[tabindex]:not([tabindex=\"-1\"])');\n  if(!items.length) return;\n  var first=items[0], last=items[items.length-1];\n  if(e.shiftKey && document.activeElement===first){ e.preventDefault(); last.focus(); }\n  else if(!e.shiftKey && document.activeElement===last){ e.preventDefault(); first.focus(); }\n});\n\/\/ \u0e1b\u0e38\u0e48\u0e21\u0e22\u0e37\u0e19\u0e22\u0e31\u0e19\u0e43\u0e19 modal\ndocument.getElementById(\"btnReviewConfirm\").addEventListener(\"click\", function(){\n  this.disabled = true;\n  closeReviewModal(false);\n  startUploadAndSubmit();\n});\n\/\/ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n\/\/ SUBMIT \u2014 \u0e01\u0e14 \"\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e01\u0e48\u0e2d\u0e19\u0e22\u0e37\u0e19\u0e22\u0e31\u0e19\"\n\/\/ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\ndocument.getElementById(\"regForm\").addEventListener(\"submit\", function(e){\n  e.preventDefault();\n  if(!validate()) return;\n  showReviewModal();\n});\n\/\/ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n\/\/ \u0e2d\u0e31\u0e1b\u0e42\u0e2b\u0e25\u0e14\u0e41\u0e25\u0e30\u0e2a\u0e48\u0e07\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e08\u0e23\u0e34\u0e07 (\u0e40\u0e23\u0e35\u0e22\u0e01\u0e2b\u0e25\u0e31\u0e07 modal \u0e22\u0e37\u0e19\u0e22\u0e31\u0e19)\n\/\/ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\nfunction startUploadAndSubmit(){\n  var btn = document.getElementById(\"submitBtn\");\n  if(!activeSubmissionId) activeSubmissionId = createSubmissionId();\n  btn.disabled = true;\n  Swal.fire({\n    title: T(\"uploading1\"),\n    html: T(\"uploading1sub\"),\n    allowOutsideClick: false,\n    didOpen: function(){ Swal.showLoading(); }\n  });\n  var tempFilename = \"abj_photo_\" + Date.now();\n  \/\/ \u0e40\u0e2d\u0e01\u0e2a\u0e32\u0e23\u0e15\u0e48\u0e32\u0e07\u0e0a\u0e32\u0e15\u0e34\u0e02\u0e2d\u0e40\u0e09\u0e1e\u0e32\u0e30\u0e1f\u0e2d\u0e23\u0e4c\u0e21\u0e20\u0e32\u0e29\u0e32\u0e2d\u0e31\u0e07\u0e01\u0e24\u0e29 \u2014 \u0e16\u0e49\u0e32\u0e1c\u0e39\u0e49\u0e43\u0e0a\u0e49\u0e2d\u0e31\u0e1b\u0e42\u0e2b\u0e25\u0e14\u0e44\u0e27\u0e49\u0e41\u0e25\u0e49\u0e27\u0e2a\u0e25\u0e31\u0e1a\u0e01\u0e25\u0e31\u0e1a\u0e40\u0e1b\u0e47\u0e19\u0e44\u0e17\u0e22\n  \/\/ \u0e15\u0e49\u0e2d\u0e07\u0e44\u0e21\u0e48\u0e2a\u0e48\u0e07\u0e02\u0e36\u0e49\u0e19\u0e44\u0e1b (\u0e44\u0e1f\u0e25\u0e4c\u0e22\u0e31\u0e07\u0e2d\u0e22\u0e39\u0e48\u0e43\u0e19\u0e2b\u0e19\u0e49\u0e32\u0e40\u0e27\u0e47\u0e1a \u0e2a\u0e25\u0e31\u0e1a\u0e01\u0e25\u0e31\u0e1a\u0e40\u0e1b\u0e47\u0e19 EN \u0e41\u0e25\u0e49\u0e27\u0e43\u0e0a\u0e49\u0e15\u0e48\u0e2d\u0e44\u0e14\u0e49)\n  var wantForeignDocs = LANG === \"en\";\n  var uploads = [ cachedUpload(\"photo\", photoBase64, tempFilename + \"_photo\") ];\n  uploads.push( wantForeignDocs ? cachedUpload(\"passport\",   passportBase64,   tempFilename + \"_passport_first_page\") : Promise.resolve(\"\") );\n  uploads.push( wantForeignDocs ? cachedUpload(\"visaExpiry\", visaExpiryBase64, tempFilename + \"_visa_expiry_page\")   : Promise.resolve(\"\") );\n  uploads.push( wantForeignDocs ? cachedUpload(\"tm30\",       tm30Base64,       tempFilename + \"_tm30\")               : Promise.resolve(\"\") );\n  Promise.all(uploads)\n    .then(function(urls){\n      Swal.fire({\n        title: T(\"uploading2\"),\n        html: T(\"uploading2sub\"),\n        allowOutsideClick: false,\n        didOpen: function(){ Swal.showLoading(); }\n      });\n      if(isEditMode) submitUpdateForm(urls[0], btn, urls[1], urls[2], urls[3]);\n      else           submitForm(urls[0], btn, urls[1], urls[2], urls[3]);\n    })\n    .catch(function(err){\n      btn.disabled=false;\n      Swal.fire({\n        icon:\"error\",\n        title:T(\"uploadFail\"),\n        text:(err && err.message) || T(\"retry\"),\n        confirmButtonColor:\"#AD4970\"\n      });\n    });\n}\n\/\/ \u0e08\u0e33 URL \u0e17\u0e35\u0e48\u0e2d\u0e31\u0e1b\u0e42\u0e2b\u0e25\u0e14\u0e2a\u0e33\u0e40\u0e23\u0e47\u0e08\u0e41\u0e25\u0e49\u0e27\u0e02\u0e2d\u0e07\u0e44\u0e1f\u0e25\u0e4c\u0e41\u0e15\u0e48\u0e25\u0e30\u0e0a\u0e48\u0e2d\u0e07 \u2014 \u0e01\u0e14\u0e2a\u0e48\u0e07\u0e43\u0e2b\u0e21\u0e48\u0e2b\u0e25\u0e31\u0e07\u0e1e\u0e25\u0e32\u0e14 (\u0e40\u0e0a\u0e48\u0e19 \u0e40\u0e19\u0e47\u0e15\u0e2b\u0e25\u0e38\u0e14, \u0e2b\u0e19\u0e48\u0e27\u0e22\u0e1a\u0e23\u0e34\u0e01\u0e32\u0e23\u0e44\u0e21\u0e48\u0e1c\u0e48\u0e32\u0e19)\n\/\/ \u0e08\u0e30\u0e44\u0e14\u0e49\u0e44\u0e21\u0e48\u0e2d\u0e31\u0e1b\u0e42\u0e2b\u0e25\u0e14\u0e23\u0e39\u0e1b\u0e40\u0e14\u0e34\u0e21\u0e0b\u0e49\u0e33\u0e02\u0e36\u0e49\u0e19 ImgBB \u0e2d\u0e35\u0e01\u0e0a\u0e38\u0e14 \u0e25\u0e49\u0e32\u0e07\u0e40\u0e21\u0e37\u0e48\u0e2d\u0e1c\u0e39\u0e49\u0e43\u0e0a\u0e49\u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19\/\u0e25\u0e1a\u0e44\u0e1f\u0e25\u0e4c\u0e19\u0e31\u0e49\u0e19\nvar uploadedUrls = { photo:\"\", passport:\"\", visaExpiry:\"\", tm30:\"\" };\nfunction cachedUpload(slot, base64, filename){\n  if(!base64) return Promise.resolve(\"\");\n  if(uploadedUrls[slot]) return Promise.resolve(uploadedUrls[slot]);\n  return uploadFile(base64, filename).then(function(url){ uploadedUrls[slot] = url; return url; });\n}\nfunction uploadFile(base64, filename){\n  if(!base64) return Promise.resolve(\"\");\n  var b64 = base64.replace(\/^data:[^;]+;base64,\/, \"\");\n  var form = new FormData();\n  form.append(\"key\",   IMGBB_KEY);\n  form.append(\"image\", b64);\n  form.append(\"name\",  filename);\n  return fetch(\"https:\/\/api.imgbb.com\/1\/upload\", { method:\"POST\", body:form })\n    .then(function(r){ if(!r.ok) throw new Error(\"ImgBB HTTP \"+r.status); return r.json(); })\n    .then(function(data){\n      if(!data.success) throw new Error(data.error && data.error.message || \"Upload failed\");\n      return data.data.url;\n    });\n}\n\/\/ \u0e40\u0e21\u0e37\u0e48\u0e2d\u0e21\u0e35\u0e1c\u0e39\u0e49\u0e2a\u0e21\u0e31\u0e04\u0e23\u0e1e\u0e23\u0e49\u0e2d\u0e21\u0e01\u0e31\u0e19\u0e2b\u0e25\u0e32\u0e22\u0e04\u0e19 Google Apps Script \u0e15\u0e49\u0e2d\u0e07\u0e40\u0e02\u0e49\u0e32\u0e04\u0e34\u0e27\u0e40\u0e02\u0e35\u0e22\u0e19\u0e0a\u0e35\u0e15\u0e17\u0e35\u0e25\u0e30\u0e23\u0e32\u0e22\n\/\/ \u0e08\u0e36\u0e07\u0e15\u0e49\u0e2d\u0e07\u0e23\u0e2d\u0e19\u0e32\u0e19\u0e01\u0e27\u0e48\u0e32\u0e40\u0e14\u0e34\u0e21 \u0e41\u0e25\u0e30\u0e2a\u0e48\u0e07\u0e0b\u0e49\u0e33\u0e2d\u0e31\u0e15\u0e42\u0e19\u0e21\u0e31\u0e15\u0e34\u0e40\u0e21\u0e37\u0e48\u0e2d\u0e16\u0e39\u0e01\u0e1b\u0e0f\u0e34\u0e40\u0e2a\u0e18\u0e40\u0e1e\u0e23\u0e32\u0e30\u0e04\u0e34\u0e27\u0e40\u0e15\u0e47\u0e21\n\/\/ \u0e01\u0e32\u0e23\u0e2a\u0e48\u0e07\u0e0b\u0e49\u0e33\u0e1b\u0e25\u0e2d\u0e14\u0e20\u0e31\u0e22 \u0e40\u0e1e\u0e23\u0e32\u0e30\u0e43\u0e0a\u0e49 clientSubmissionId \u0e40\u0e14\u0e34\u0e21 \u2192 \u0e1d\u0e31\u0e48\u0e07\u0e40\u0e0b\u0e34\u0e23\u0e4c\u0e1f\u0e40\u0e27\u0e2d\u0e23\u0e4c\u0e04\u0e37\u0e19\u0e1c\u0e25\u0e40\u0e14\u0e34\u0e21\u0e42\u0e14\u0e22\u0e44\u0e21\u0e48\u0e1a\u0e31\u0e19\u0e17\u0e36\u0e01\u0e0b\u0e49\u0e33\nvar REG_TIMEOUT_MS   = 90000;\nvar REG_MAX_ATTEMPTS = 3;\n\nfunction submitForm(imageUrl, btn, passportUrl, visaExpiryUrl, tm30Url){\n  var params = {\n    action:\"register\", language:LANG, prefix:document.getElementById(\"prefix\").value,\n    firstName:document.getElementById(\"firstName\").value.trim(),\n    lastName:document.getElementById(\"lastName\").value.trim(),\n    temple:(document.getElementById(\"temple\") && document.getElementById(\"temple\").value.trim()) || \"\",\n    birthdate:document.getElementById(\"birthdate\").value,\n    phone:document.getElementById(\"phone\").value.trim(),\n    education:document.getElementById(\"education\").value,\n    pali:document.getElementById(\"pali\").value,\n    dhamma:document.getElementById(\"dhamma\").value,\n    address:document.getElementById(\"address\").value.trim(),\n    soi:document.getElementById(\"soi\").value.trim(),\n    subdistrict:document.getElementById(\"subdistrict\").value.trim(),\n    district:document.getElementById(\"district\").value.trim(),\n    province:document.getElementById(\"province\").value,\n    postalCode:document.getElementById(\"postalCode\").value.trim(),\n    serviceLocation:document.getElementById(\"serviceLocation\").value,\n    imageUrl:imageUrl,\n    passportUrl:passportUrl||\"\",\n    visaExpiryUrl:visaExpiryUrl||\"\",\n    tm30Url:tm30Url||\"\",\n    clientSubmissionId:activeSubmissionId,\n    \/\/ \u0e2a\u0e48\u0e07 \"\u0e23\u0e30\u0e22\u0e30\u0e40\u0e27\u0e25\u0e32\u0e17\u0e35\u0e48\u0e40\u0e1b\u0e34\u0e14\u0e1f\u0e2d\u0e23\u0e4c\u0e21\" \u0e17\u0e35\u0e48\u0e04\u0e33\u0e19\u0e27\u0e13\u0e08\u0e32\u0e01\u0e19\u0e32\u0e2c\u0e34\u0e01\u0e32\u0e40\u0e04\u0e23\u0e37\u0e48\u0e2d\u0e07\u0e1c\u0e39\u0e49\u0e43\u0e0a\u0e49\u0e40\u0e2d\u0e07 (\u0e15\u0e2d\u0e19\u0e42\u0e2b\u0e25\u0e14 vs \u0e15\u0e2d\u0e19\u0e2a\u0e48\u0e07 = \u0e19\u0e32\u0e2c\u0e34\u0e01\u0e32\u0e40\u0e14\u0e35\u0e22\u0e27\u0e01\u0e31\u0e19)\n    \/\/ \u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e44\u0e21\u0e48\u0e43\u0e2b\u0e49\u0e04\u0e48\u0e32\u0e40\u0e1e\u0e35\u0e49\u0e22\u0e19\u0e40\u0e21\u0e37\u0e48\u0e2d\u0e19\u0e32\u0e2c\u0e34\u0e01\u0e32\u0e40\u0e04\u0e23\u0e37\u0e48\u0e2d\u0e07\u0e1c\u0e39\u0e49\u0e43\u0e0a\u0e49\u0e44\u0e21\u0e48\u0e15\u0e23\u0e07\u0e01\u0e31\u0e1a\u0e19\u0e32\u0e2c\u0e34\u0e01\u0e32\u0e40\u0e0b\u0e34\u0e23\u0e4c\u0e1f\u0e40\u0e27\u0e2d\u0e23\u0e4c\n    formElapsedMs:String(Date.now() - formStartedAt),\n    website:\"\"\n  };\n  sendRegistration(params, btn, 1);\n}\n\n\/\/ \u0e2a\u0e48\u0e07 \"\u0e1a\u0e31\u0e19\u0e17\u0e36\u0e01\u0e01\u0e32\u0e23\u0e41\u0e01\u0e49\u0e44\u0e02\" \u2014 action:\"update\" \u0e22\u0e37\u0e19\u0e22\u0e31\u0e19\u0e15\u0e31\u0e27\u0e14\u0e49\u0e27\u0e22\u0e23\u0e2b\u0e31\u0e2a+\u0e40\u0e1a\u0e2d\u0e23\u0e4c\u0e17\u0e49\u0e32\u0e22\u0e40\u0e14\u0e34\u0e21 (editAuth) \u0e41\u0e17\u0e19 clientSubmissionId\n\/\/ \u0e40\u0e02\u0e35\u0e22\u0e19\u0e17\u0e31\u0e1a\u0e41\u0e16\u0e27\u0e40\u0e14\u0e34\u0e21\u0e43\u0e19\u0e0a\u0e35\u0e15 \u0e44\u0e21\u0e48\u0e2a\u0e23\u0e49\u0e32\u0e07\u0e41\u0e16\u0e27\/\u0e40\u0e25\u0e02\u0e17\u0e35\u0e48\/\u0e23\u0e2b\u0e31\u0e2a\u0e43\u0e2b\u0e21\u0e48\nfunction submitUpdateForm(imageUrl, btn, passportUrl, visaExpiryUrl, tm30Url){\n  var params = {\n    action:\"update\", language:LANG,\n    code: editAuth.code, phoneLast4: editAuth.phoneLast4,\n    prefix:document.getElementById(\"prefix\").value,\n    firstName:document.getElementById(\"firstName\").value.trim(),\n    lastName:document.getElementById(\"lastName\").value.trim(),\n    temple:(document.getElementById(\"temple\") && document.getElementById(\"temple\").value.trim()) || \"\",\n    birthdate:document.getElementById(\"birthdate\").value,\n    phone:document.getElementById(\"phone\").value.trim(),\n    education:document.getElementById(\"education\").value,\n    pali:document.getElementById(\"pali\").value,\n    dhamma:document.getElementById(\"dhamma\").value,\n    address:document.getElementById(\"address\").value.trim(),\n    soi:document.getElementById(\"soi\").value.trim(),\n    subdistrict:document.getElementById(\"subdistrict\").value.trim(),\n    district:document.getElementById(\"district\").value.trim(),\n    province:document.getElementById(\"province\").value,\n    postalCode:document.getElementById(\"postalCode\").value.trim(),\n    serviceLocation:document.getElementById(\"serviceLocation\").value,\n    imageUrl:imageUrl,\n    passportUrl:passportUrl||\"\",\n    visaExpiryUrl:visaExpiryUrl||\"\",\n    tm30Url:tm30Url||\"\",\n    website:\"\"\n  };\n  sendRegistration(params, btn, 1, showUpdateSuccess);\n}\n\nfunction sendRegistration(params, btn, attempt, onSuccess){\n  onSuccess = onSuccess || showRegSuccess;   \/\/ \u0e15\u0e2d\u0e19\u0e41\u0e01\u0e49\u0e44\u0e02\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e08\u0e30\u0e2a\u0e48\u0e07 showUpdateSuccess \u0e21\u0e32\u0e41\u0e17\u0e19\n  var settled  = false;\n  var controller = window.AbortController ? new AbortController() : null;\n\n  var timer = setTimeout(function(){\n    if(settled) return; settled = true;\n    if(controller) controller.abort();\n    cleanup();\n    retryOrFail(T(\"timeout\"), T(\"timeoutMsg\"));\n  }, REG_TIMEOUT_MS);\n\n  function cleanup(){\n    clearTimeout(timer);\n  }\n  function showError(title, msg){\n    btn.disabled = false;\n    Swal.fire({icon:\"error\",title:title,text:msg,confirmButtonColor:\"#AD4970\"});\n  }\n  \/\/ \u0e2a\u0e48\u0e07\u0e0b\u0e49\u0e33\u0e2d\u0e31\u0e15\u0e42\u0e19\u0e21\u0e31\u0e15\u0e34\u0e14\u0e49\u0e27\u0e22\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e0a\u0e38\u0e14\u0e40\u0e14\u0e34\u0e21 (submission id \u0e40\u0e14\u0e34\u0e21) \u2014 \u0e44\u0e21\u0e48\u0e17\u0e33\u0e43\u0e2b\u0e49\u0e40\u0e01\u0e34\u0e14\u0e41\u0e16\u0e27\u0e0b\u0e49\u0e33\n  function retryOrFail(title, msg){\n    if(attempt >= REG_MAX_ATTEMPTS){ showError(title, msg); return; }\n    Swal.fire({\n      title: T(\"regBusy\"),\n      html: T(\"regBusySub\"),\n      allowOutsideClick:false,\n      didOpen:function(){ Swal.showLoading(); }\n    });\n    setTimeout(function(){ sendRegistration(params, btn, attempt + 1, onSuccess); }, 3000 * attempt);\n  }\n\n  var body = Object.keys(params).map(function(k){\n    return encodeURIComponent(k)+\"=\"+encodeURIComponent(params[k]);\n  }).join(\"&\");\n  var options = {\n    method:\"POST\",\n    headers:{\"Content-Type\":\"application\/x-www-form-urlencoded;charset=UTF-8\"},\n    body:body\n  };\n  if(controller) options.signal = controller.signal;\n  fetch(GAS_URL, options)\n    .then(function(r){ if(!r.ok) throw new Error(\"HTTP \"+r.status); return r.json(); })\n    .then(function(data){\n      if(settled) return; settled = true;\n      cleanup();\n      if(data && data.ok){ onSuccess(data, btn); return; }\n      if(data && data.retryable){ retryOrFail(T(\"errTitle\"), data.message || T(\"retry\")); return; }\n      Swal.close();\n      showError(T(\"errTitle\"), (data && data.message) || T(\"retry\"));\n    })\n    .catch(function(err){\n      if(settled) return; settled = true;\n      cleanup();\n      retryOrFail(T(\"connErr\"), (err && err.message) || T(\"connErrMsg\"));\n    });\n}\n\nfunction showRegSuccess(data, btn){\n  Swal.close();\n  btn.disabled = false;\n  \/\/ data.resubmitted = \u0e04\u0e33\u0e02\u0e2d\u0e43\u0e1a\u0e40\u0e14\u0e34\u0e21\u0e02\u0e2d\u0e07\u0e40\u0e23\u0e32\u0e40\u0e2d\u0e07\u0e17\u0e35\u0e48\u0e16\u0e39\u0e01\u0e2a\u0e48\u0e07\u0e0b\u0e49\u0e33\u0e2d\u0e31\u0e15\u0e42\u0e19\u0e21\u0e31\u0e15\u0e34 \u0e44\u0e21\u0e48\u0e43\u0e0a\u0e48\u0e01\u0e32\u0e23\u0e2a\u0e21\u0e31\u0e04\u0e23\u0e0b\u0e49\u0e33 \u0e08\u0e36\u0e07\u0e16\u0e37\u0e2d\u0e27\u0e48\u0e32\u0e2a\u0e33\u0e40\u0e23\u0e47\u0e08\u0e1b\u0e01\u0e15\u0e34\n  var already = !!data.alreadySubmitted && !data.resubmitted;\n  var greeting = already\n    ? (LANG===\"en\" ? \"You have already registered, \" : \"\u0e17\u0e48\u0e32\u0e19\u0e40\u0e04\u0e22\u0e2a\u0e21\u0e31\u0e04\u0e23\u0e44\u0e27\u0e49\u0e41\u0e25\u0e49\u0e27 \")\n    : (LANG===\"en\" ? \"Welcome, \" : \"\u0e22\u0e34\u0e19\u0e14\u0e35\u0e15\u0e49\u0e2d\u0e19\u0e23\u0e31\u0e1a \");\n  var successHtml =\n    \"<p style='margin-bottom:6px'>\"+greeting+\"<strong>\"+esc2(data.name)+\"<\/strong><\/p>\" +\n    \"<p style='font-size:13px;color:#888;margin-bottom:12px'>\"+T(\"successDate\")+\": \"+esc2(data.regDateTime||data.regDate)+\" | \"+T(\"successSeq\")+\": \"+esc2(String(data.seqNo))+\"<\/p>\" +\n    \"<p style='font-size:14px;margin-bottom:6px'>\"+T(\"successCodeLabel\")+\"<\/p>\" +\n    \"<div class='code-display' id='successTempCode'>\"+esc2(data.tempCode)+\"<\/div><br>\" +\n    \"<button type='button' class='copy-code-btn' id='copyTempCode'>\ud83d\udccb \"+(LANG===\"en\"?\"Copy code\":\"\u0e04\u0e31\u0e14\u0e25\u0e2d\u0e01\u0e23\u0e2b\u0e31\u0e2a\")+\"<\/button>\" +\n    \"<p style='font-size:13px;color:#8E2A57;margin-top:10px'>\"+T(\"successCodeNote\")+\"<\/p>\";\n  Swal.fire({\n    icon: already ? \"info\" : \"success\",\n    title: already ? (LANG===\"en\" ? \"Existing registration found\" : \"\u0e1e\u0e1a\u0e01\u0e32\u0e23\u0e2a\u0e21\u0e31\u0e04\u0e23\u0e40\u0e14\u0e34\u0e21\u0e02\u0e2d\u0e07\u0e17\u0e48\u0e32\u0e19\") : T(\"successTitle\"),\n    html: successHtml,\n    confirmButtonText: T(\"successConfirm\"),\n    confirmButtonColor: \"#8E2A57\",\n    allowOutsideClick: false,\n    didOpen:function(){\n      var copyBtn=document.getElementById(\"copyTempCode\");\n      if(copyBtn) copyBtn.addEventListener(\"click\",function(){ copyText(data.tempCode,copyBtn); });\n    }\n  }).then(function(){ resetForm(); });\n}\n\/\/ \u0e41\u0e08\u0e49\u0e07\u0e1c\u0e25\u0e2a\u0e33\u0e40\u0e23\u0e47\u0e08\u0e15\u0e2d\u0e19 \"\u0e41\u0e01\u0e49\u0e44\u0e02\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\" \u2014 \u0e41\u0e22\u0e01\u0e08\u0e32\u0e01 showRegSuccess \u0e40\u0e1e\u0e23\u0e32\u0e30\u0e02\u0e49\u0e2d\u0e04\u0e27\u0e32\u0e21\/\u0e2b\u0e31\u0e27\u0e40\u0e23\u0e37\u0e48\u0e2d\u0e07\u0e15\u0e49\u0e2d\u0e07\u0e44\u0e21\u0e48\u0e1e\u0e39\u0e14\u0e27\u0e48\u0e32 \"\u0e2a\u0e21\u0e31\u0e04\u0e23\u0e2a\u0e33\u0e40\u0e23\u0e47\u0e08\"\nfunction showUpdateSuccess(data, btn){\n  Swal.close();\n  btn.disabled = false;\n  var successHtml =\n    \"<p style='margin-bottom:6px'>\"+(LANG===\"en\"?\"Updated information for \":\"\u0e41\u0e01\u0e49\u0e44\u0e02\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e02\u0e2d\u0e07 \")+\"<strong>\"+esc2(data.name)+\"<\/strong><\/p>\" +\n    \"<p style='font-size:13px;color:#888;margin-bottom:12px'>\"+T(\"successSeq\")+\": \"+esc2(String(data.seqNo))+\" | \"+(LANG===\"en\"?\"Code\":\"\u0e23\u0e2b\u0e31\u0e2a\")+\": \"+esc2(data.tempCode)+\"<\/p>\" +\n    \"<p style='font-size:13.5px;color:#8E2A57'>\"+(LANG===\"en\"\n      ? \"Your information has been updated successfully.\"\n      : \"\u0e1a\u0e31\u0e19\u0e17\u0e36\u0e01\u0e01\u0e32\u0e23\u0e41\u0e01\u0e49\u0e44\u0e02\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e40\u0e23\u0e35\u0e22\u0e1a\u0e23\u0e49\u0e2d\u0e22\u0e41\u0e25\u0e49\u0e27\")+\"<\/p>\";\n  Swal.fire({\n    icon: \"success\",\n    title: LANG===\"en\" ? \"Information Updated! \u2705\" : \"\u0e41\u0e01\u0e49\u0e44\u0e02\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e2a\u0e33\u0e40\u0e23\u0e47\u0e08! \u2705\",\n    html: successHtml,\n    confirmButtonText: T(\"successConfirm\"),\n    confirmButtonColor: \"#8E2A57\",\n    allowOutsideClick: false\n  }).then(function(){ resetForm(); setAppMode(\"status\", false); });\n}\n\/\/ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n\/\/ Reset form\n\/\/ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\nfunction copyText(text,button){\n  function done(){ button.textContent=LANG===\"en\"?\"\u2713 Copied\":\"\u2713 \u0e04\u0e31\u0e14\u0e25\u0e2d\u0e01\u0e41\u0e25\u0e49\u0e27\"; }\n  function fail(){ button.textContent=T(\"copyFail\"); }\n  \/\/ \u0e27\u0e34\u0e18\u0e35\u0e2a\u0e33\u0e23\u0e2d\u0e07: textarea + execCommand \u0e43\u0e0a\u0e49\u0e44\u0e14\u0e49\u0e01\u0e31\u0e1a\u0e40\u0e1a\u0e23\u0e32\u0e27\u0e4c\u0e40\u0e0b\u0e2d\u0e23\u0e4c\u0e40\u0e01\u0e48\u0e32\/\u0e2b\u0e19\u0e49\u0e32\u0e17\u0e35\u0e48\u0e44\u0e21\u0e48\u0e43\u0e0a\u0e48 https\n  function legacyCopy(){\n    var area=document.createElement(\"textarea\");\n    area.value=text; area.style.position=\"fixed\"; area.style.opacity=\"0\";\n    document.body.appendChild(area); area.select();\n    var ok=false;\n    try{ ok=document.execCommand(\"copy\"); } catch(err){ ok=false; } finally{ area.remove(); }\n    if(ok) done(); else fail();\n  }\n  if(navigator.clipboard && window.isSecureContext){\n    \/\/ \u0e16\u0e49\u0e32 clipboard API \u0e16\u0e39\u0e01\u0e1b\u0e0f\u0e34\u0e40\u0e2a\u0e18 (\u0e2a\u0e34\u0e17\u0e18\u0e34\u0e4c\/\u0e42\u0e1f\u0e01\u0e31\u0e2a) \u0e15\u0e49\u0e2d\u0e07\u0e15\u0e01\u0e21\u0e32\u0e43\u0e0a\u0e49\u0e27\u0e34\u0e18\u0e35\u0e2a\u0e33\u0e23\u0e2d\u0e07 \u0e44\u0e21\u0e48\u0e43\u0e0a\u0e48\u0e40\u0e07\u0e35\u0e22\u0e1a\u0e44\u0e1b\u0e40\u0e09\u0e22 \u0e46\n    navigator.clipboard.writeText(text).then(done).catch(legacyCopy);\n    return;\n  }\n  legacyCopy();\n}\nfunction resetForm(){\n  document.getElementById(\"regForm\").reset();\n  clearDraft();                 \/\/ \u0e2a\u0e21\u0e31\u0e04\u0e23\u0e2a\u0e33\u0e40\u0e23\u0e47\u0e08\/\u0e25\u0e49\u0e32\u0e07\u0e1f\u0e2d\u0e23\u0e4c\u0e21\u0e41\u0e25\u0e49\u0e27 \u0e44\u0e21\u0e48\u0e15\u0e49\u0e2d\u0e07\u0e40\u0e01\u0e47\u0e1a\u0e23\u0e48\u0e32\u0e07\u0e44\u0e27\u0e49\u0e43\u0e19\u0e40\u0e04\u0e23\u0e37\u0e48\u0e2d\u0e07\u0e2d\u0e35\u0e01\n  var draftBar = document.getElementById(\"draftBar\");\n  if(draftBar) draftBar.hidden = true;\n  clearFieldErrors();\n  hasAttemptedSubmit = false;   \/\/ \u0e40\u0e23\u0e34\u0e48\u0e21\u0e1f\u0e2d\u0e23\u0e4c\u0e21\u0e43\u0e2b\u0e21\u0e48 \u0e44\u0e21\u0e48\u0e15\u0e49\u0e2d\u0e07\u0e40\u0e15\u0e37\u0e2d\u0e19\u0e0a\u0e48\u0e2d\u0e07\u0e27\u0e48\u0e32\u0e07\u0e08\u0e19\u0e01\u0e27\u0e48\u0e32\u0e08\u0e30\u0e01\u0e14\u0e2a\u0e48\u0e07\u0e2d\u0e35\u0e01\u0e04\u0e23\u0e31\u0e49\u0e07\n  photoBase64 = \"\";\n  uploadedUrls = { photo:\"\", passport:\"\", visaExpiry:\"\", tm30:\"\" };\n  activeSubmissionId = \"\";\n  formStartedAt = Date.now();\n  document.getElementById(\"photoImg\").style.display = \"none\";\n  document.getElementById(\"photoImg\").src = \"\";\n  document.getElementById(\"photoPlaceholder\").style.display = \"\";\n  document.getElementById(\"btnPhotoRemove\").hidden = true;\n  passportBase64 = \"\"; visaExpiryBase64 = \"\"; tm30Base64 = \"\";\n  [\"passport\",\"visaExpiry\",\"tm30\"].forEach(function(kind){\n    var ui=docUI(kind); ui.img.src=\"\"; ui.img.style.display=\"none\"; ui.placeholder.style.display=\"\";\n    ui.name.style.display=\"none\"; ui.name.textContent=\"\"; ui.remove.hidden=true;\n  });\n  updateUploadSummary();\n  document.getElementById(\"birthdate\").value = \"\";\n  provSyncFromSelect();\n  var distSel = document.getElementById(\"district\");\n  var subSel  = document.getElementById(\"subdistrict\");\n  if(distSel && distSel.tagName===\"SELECT\"){ distSel.innerHTML='<option value=\"\">'+T(\"selDistrictWait\")+'<\/option>'; distSel.disabled=true; }\n  if(subSel  && subSel.tagName ===\"SELECT\"){ subSel.innerHTML ='<option value=\"\">'+T(\"selSubWait\")+'<\/option>';     subSel.disabled=true; }\n  document.getElementById(\"postalCode\").value = \"\";\n  document.getElementById(\"serviceLocationAddr\").style.display = \"none\";\n  var chkRes = document.getElementById(\"checkResult\");\n  if(chkRes){ chkRes.style.display=\"none\"; chkRes.className=\"check-result\"; chkRes.innerHTML=\"\"; }\n  document.getElementById(\"checkCodeInput\").value = \"\";\n  document.getElementById(\"checkPhoneInput\").value = \"\";\n  onPrefixChange();\n  \/\/ \u0e25\u0e49\u0e32\u0e07\u0e2a\u0e16\u0e32\u0e19\u0e30\u0e42\u0e2b\u0e21\u0e14\u0e41\u0e01\u0e49\u0e44\u0e02 (\u0e16\u0e49\u0e32\u0e21\u0e35) \u0e01\u0e25\u0e31\u0e1a\u0e40\u0e1b\u0e47\u0e19\u0e1f\u0e2d\u0e23\u0e4c\u0e21\u0e2a\u0e21\u0e31\u0e04\u0e23\u0e43\u0e2b\u0e21\u0e48\u0e1b\u0e01\u0e15\u0e34\u0e40\u0e2a\u0e21\u0e2d\n  isEditMode = false;\n  editAuth = null;\n  var editBar = document.getElementById(\"editModeBar\");\n  if(editBar) editBar.hidden = true;\n  var submitTxt = document.getElementById(\"submitBtnText\");\n  if(submitTxt) submitTxt.textContent = T(\"submitBtn\");\n  window.scrollTo({top:0, behavior:\"smooth\"});\n}\n\/\/ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n\/\/ Validate\n\/\/ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\nfunction clearFieldErrors(){\n  document.querySelectorAll(\"#regForm .field-error\").forEach(function(el){el.remove();});\n  document.querySelectorAll('#regForm [aria-invalid=\"true\"]').forEach(function(el){el.removeAttribute(\"aria-invalid\");el.removeAttribute(\"aria-describedby\");});\n  document.querySelectorAll(\"#regForm .invalid\").forEach(function(el){el.classList.remove(\"invalid\");});\n}\nfunction clearErrorFor(el){\n  if(!el) return;\n  var box = el.closest(\".birthdate-grid\") || el.closest(\".field\") || el.closest(\".document-upload-tile\") || el.closest(\".photo-upload-wrap\") || el.closest(\".consent-check\");\n  if(!box && el.id===\"photoInput\") box=document.querySelector(\".photo-upload-wrap\");\n  if(box){ box.classList.remove(\"invalid\"); var err=box.querySelector(\".field-error\"); if(err) err.remove(); }\n  if(box && box.classList.contains(\"birthdate-grid\")){ var hiddenBirth=document.getElementById(\"birthdate\"); hiddenBirth.removeAttribute(\"aria-invalid\"); hiddenBirth.removeAttribute(\"aria-describedby\"); }\n  el.removeAttribute(\"aria-invalid\"); el.removeAttribute(\"aria-describedby\");\n  var proxy = el.dataset && el.dataset.errorProxy ? document.getElementById(el.dataset.errorProxy) : null;\n  if(proxy){ proxy.removeAttribute(\"aria-invalid\"); proxy.removeAttribute(\"aria-describedby\"); }\n}\nfunction markInvalid(id,message,boxSelector,focusId){\n  var el=document.getElementById(id), box=boxSelector?document.querySelector(boxSelector):(el && el.closest(\".field\"));\n  if(!box || !el) return null;\n  var err=document.createElement(\"span\"), errId=\"err_\"+id;\n  err.className=\"field-error\"; err.id=errId; err.setAttribute(\"role\",\"alert\"); err.textContent=message; box.appendChild(err);\n  el.setAttribute(\"aria-invalid\",\"true\"); el.setAttribute(\"aria-describedby\",errId);\n  \/\/ \u0e0a\u0e48\u0e2d\u0e07\u0e08\u0e31\u0e07\u0e2b\u0e27\u0e31\u0e14\u0e40\u0e01\u0e47\u0e1a\u0e04\u0e48\u0e32\u0e44\u0e27\u0e49\u0e43\u0e19 select \u0e17\u0e35\u0e48\u0e0b\u0e48\u0e2d\u0e19\u0e2d\u0e22\u0e39\u0e48 \u2014 \u0e01\u0e23\u0e2d\u0e1a\u0e41\u0e14\u0e07\u0e41\u0e25\u0e30\u0e42\u0e1f\u0e01\u0e31\u0e2a\u0e15\u0e49\u0e2d\u0e07\u0e44\u0e1b\u0e25\u0e07\u0e17\u0e35\u0e48\u0e0a\u0e48\u0e2d\u0e07\u0e1e\u0e34\u0e21\u0e1e\u0e4c\u0e17\u0e35\u0e48\u0e1c\u0e39\u0e49\u0e43\u0e0a\u0e49\u0e40\u0e2b\u0e47\u0e19\u0e08\u0e23\u0e34\u0e07\n  var proxy = el.dataset.errorProxy ? document.getElementById(el.dataset.errorProxy) : null;\n  if(proxy){ proxy.setAttribute(\"aria-invalid\",\"true\"); proxy.setAttribute(\"aria-describedby\",errId); }\n  if(boxSelector) box.classList.add(\"invalid\");\n  if(focusId) return document.getElementById(focusId) || el;\n  return proxy || el;\n}\nfunction isValidBirthdateValue(value){\n  var parts=String(value||\"\").split(\"\/\");\n  if(parts.length!==3) return false;\n  var d=parseInt(parts[0],10), m=parseInt(parts[1],10), y=parseInt(parts[2],10);\n  if(y>2400) y-=543;\n  if(!d || !m || !y) return false;\n  var date=new Date(y,m-1,d), today=new Date();\n  return date.getFullYear()===y && date.getMonth()===m-1 && date.getDate()===d && date<=today && y>=today.getFullYear()-120;\n}\nfunction validate(){\n  hasAttemptedSubmit = true;   \/\/ \u0e15\u0e31\u0e49\u0e07\u0e41\u0e15\u0e48\u0e19\u0e35\u0e49\u0e44\u0e1b \u0e0a\u0e48\u0e2d\u0e07\u0e17\u0e35\u0e48\u0e40\u0e27\u0e49\u0e19\u0e27\u0e48\u0e32\u0e07\u0e08\u0e30\u0e40\u0e15\u0e37\u0e2d\u0e19\u0e15\u0e2d\u0e19 blur \u0e14\u0e49\u0e27\u0e22\n  clearFieldErrors();\n  var errs=[], first=null;\n  function add(id,message,box,focus){ var f=markInvalid(id,message,box,focus); errs.push(message); if(!first) first=f; }\n  if(!document.getElementById(\"prefix\").value) add(\"prefix\",T(\"vPrefix\"));\n  if(!document.getElementById(\"firstName\").value.trim()) add(\"firstName\",T(\"vFirstName\"));\n  if(!isValidBirthdateValue(document.getElementById(\"birthdate\").value)){\n    var bdComplete = document.getElementById(\"birthDay\").value && document.getElementById(\"birthMonth\").value\n                  && \/^\\d{4}$\/.test(document.getElementById(\"birthYear\").value.trim());\n    add(\"birthdate\",T(bdComplete ? \"vBirthInvalid\" : \"vBirth\"),\".birthdate-grid\",\"birthDay\");\n  }\n  var phone=document.getElementById(\"phone\").value.replace(\/\\D\/g,\"\");\n  if(!\/^\\d{9,10}$\/.test(phone)) add(\"phone\",T(\"vPhone\"));\n  if(!document.getElementById(\"address\").value.trim()) add(\"address\",T(\"vAddress\"));\n  if(!document.getElementById(\"province\").value) add(\"province\",T(\"vProvince\"));\n  if(!document.getElementById(\"district\").value) add(\"district\",T(\"vDistrict\"));\n  if(!document.getElementById(\"subdistrict\").value) add(\"subdistrict\",T(\"vSubdistrict\"));\n  if(!\/^\\d{5}$\/.test(document.getElementById(\"postalCode\").value.trim())) add(\"postalCode\",T(\"vPostal\"));\n  if(!document.getElementById(\"serviceLocation\").value) add(\"serviceLocation\",T(\"vService\"));\n  if(!photoBase64) add(\"photoInput\",T(\"vPhoto\"),\"#photoTile\",\"photoPreview\");\n  if(LANG===\"en\" && !passportBase64) add(\"passportInput\",T(\"vPassport\"),\"#passportTile\",\"passportPreview\");\n  if(LANG===\"en\" && !visaExpiryBase64) add(\"visaExpiryInput\",T(\"vVisaExpiry\"),\"#visaExpiryTile\",\"visaExpiryPreview\");\n  if(LANG===\"en\" && !tm30Base64) add(\"tm30Input\",T(\"vTM30\"),\"#tm30Tile\",\"tm30Preview\");\n  if(!document.getElementById(\"consent\").checked) add(\"consent\",T(\"vConsent\"),\".consent-check\");\n  if(errs.length){\n    var target=first;\n    Swal.fire({icon:\"warning\",title:T(\"validTitle\"),text:LANG===\"en\"?\"Please check the highlighted fields.\":\"\u0e01\u0e23\u0e38\u0e13\u0e32\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e0a\u0e48\u0e2d\u0e07\u0e17\u0e35\u0e48\u0e17\u0e33\u0e40\u0e04\u0e23\u0e37\u0e48\u0e2d\u0e07\u0e2b\u0e21\u0e32\u0e22\u0e44\u0e27\u0e49\",confirmButtonColor:\"#8E2A57\"})\n      .then(function(){ if(target){ target.focus(); target.scrollIntoView({behavior:\"smooth\",block:\"center\"}); } });\n    return false;\n  }\n  return true;\n}\ndocument.getElementById(\"regForm\").addEventListener(\"input\",function(e){ clearErrorFor(e.target); });\ndocument.getElementById(\"regForm\").addEventListener(\"change\",function(e){ clearErrorFor(e.target); });\n\/\/ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n\/\/ \u0e01\u0e23\u0e2d\u0e07\u0e2d\u0e31\u0e01\u0e02\u0e23\u0e30\u0e02\u0e13\u0e30\u0e1e\u0e34\u0e21\u0e1e\u0e4c\n\/\/ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n\/\/ \u0e15\u0e31\u0e14\u0e2d\u0e31\u0e01\u0e02\u0e23\u0e30\u0e17\u0e35\u0e48\u0e43\u0e0a\u0e49\u0e44\u0e21\u0e48\u0e44\u0e14\u0e49\u0e17\u0e34\u0e49\u0e07\u0e17\u0e31\u0e19\u0e17\u0e35\u0e17\u0e35\u0e48\u0e1e\u0e34\u0e21\u0e1e\u0e4c \u0e1c\u0e39\u0e49\u0e43\u0e0a\u0e49\u0e08\u0e36\u0e07\u0e44\u0e21\u0e48\u0e15\u0e49\u0e2d\u0e07\u0e23\u0e2d\u0e40\u0e08\u0e2d error \u0e15\u0e2d\u0e19\u0e01\u0e14\u0e2a\u0e48\u0e07\n\/\/ \u0e23\u0e31\u0e01\u0e29\u0e32\u0e15\u0e33\u0e41\u0e2b\u0e19\u0e48\u0e07\u0e40\u0e04\u0e2d\u0e23\u0e4c\u0e40\u0e0b\u0e2d\u0e23\u0e4c\u0e44\u0e27\u0e49 \u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e43\u0e2b\u0e49\u0e41\u0e01\u0e49\u0e01\u0e25\u0e32\u0e07\u0e02\u0e49\u0e2d\u0e04\u0e27\u0e32\u0e21\u0e44\u0e14\u0e49\u0e15\u0e32\u0e21\u0e1b\u0e01\u0e15\u0e34\nfunction attachInputFilter(el, disallowed){\n  if(!el) return;\n  el.addEventListener(\"input\", function(){\n    var before = el.value;\n    var after  = before.replace(disallowed, \"\");\n    if(before === after) return;\n    var caret = el.selectionStart;\n    var newCaret = (caret === null) ? after.length\n                 : before.slice(0, caret).replace(disallowed, \"\").length;\n    el.value = after;\n    try { el.setSelectionRange(newCaret, newCaret); } catch(err){ \/* \u0e1a\u0e32\u0e07 browser \u0e44\u0e21\u0e48\u0e23\u0e2d\u0e07\u0e23\u0e31\u0e1a *\/ }\n  });\n}\n\/\/ \u0e42\u0e17\u0e23\u0e28\u0e31\u0e1e\u0e17\u0e4c: \u0e2d\u0e19\u0e38\u0e0d\u0e32\u0e15\u0e15\u0e31\u0e27\u0e40\u0e25\u0e02 \u0e02\u0e35\u0e14 \u0e41\u0e25\u0e30\u0e40\u0e27\u0e49\u0e19\u0e27\u0e23\u0e23\u0e04 (\u0e15\u0e23\u0e07\u0e01\u0e31\u0e1a placeholder 08x-xxx-xxxx)\nattachInputFilter(document.getElementById(\"phone\"), \/[^\\d\\-\\s]\/g);\n\/\/ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n\/\/ \u0e15\u0e23\u0e27\u0e08\u0e17\u0e35\u0e25\u0e30\u0e0a\u0e48\u0e2d\u0e07\u0e40\u0e21\u0e37\u0e48\u0e2d\u0e2d\u0e2d\u0e01\u0e08\u0e32\u0e01\u0e0a\u0e48\u0e2d\u0e07 (blur)\n\/\/ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n\/\/ \u0e2b\u0e25\u0e31\u0e01\u0e01\u0e32\u0e23: \"\u0e01\u0e23\u0e2d\u0e01\u0e1c\u0e34\u0e14\u0e23\u0e39\u0e1b\u0e41\u0e1a\u0e1a\" \u0e40\u0e15\u0e37\u0e2d\u0e19\u0e17\u0e31\u0e19\u0e17\u0e35\u0e17\u0e35\u0e48\u0e2d\u0e2d\u0e01\u0e08\u0e32\u0e01\u0e0a\u0e48\u0e2d\u0e07 (\u0e40\u0e0a\u0e48\u0e19 \u0e40\u0e1a\u0e2d\u0e23\u0e4c\u0e42\u0e17\u0e23\u0e44\u0e21\u0e48\u0e04\u0e23\u0e1a)\n\/\/ \u0e41\u0e15\u0e48 \"\u0e0a\u0e48\u0e2d\u0e07\u0e17\u0e35\u0e48\u0e22\u0e31\u0e07\u0e27\u0e48\u0e32\u0e07\" \u0e08\u0e30\u0e40\u0e15\u0e37\u0e2d\u0e19\u0e15\u0e48\u0e2d\u0e40\u0e21\u0e37\u0e48\u0e2d\u0e40\u0e04\u0e22\u0e01\u0e14\u0e2a\u0e48\u0e07\u0e44\u0e1b\u0e41\u0e25\u0e49\u0e27 1 \u0e04\u0e23\u0e31\u0e49\u0e07\n\/\/ \u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e44\u0e21\u0e48\u0e43\u0e2b\u0e49\u0e02\u0e36\u0e49\u0e19\u0e40\u0e15\u0e37\u0e2d\u0e19\u0e23\u0e31\u0e27 \u0e46 \u0e23\u0e30\u0e2b\u0e27\u0e48\u0e32\u0e07\u0e17\u0e35\u0e48\u0e1c\u0e39\u0e49\u0e43\u0e0a\u0e49\u0e22\u0e31\u0e07\u0e44\u0e25\u0e48\u0e01\u0e23\u0e2d\u0e01\u0e2d\u0e22\u0e39\u0e48\nvar hasAttemptedSubmit = false;\nvar BLUR_RULES = {\n  prefix:          { emptyKey:\"vPrefix\" },\n  firstName:       { emptyKey:\"vFirstName\" },\n  address:         { emptyKey:\"vAddress\" },\n  province:        { emptyKey:\"vProvince\" },\n  district:        { emptyKey:\"vDistrict\" },\n  subdistrict:     { emptyKey:\"vSubdistrict\" },\n  serviceLocation: { emptyKey:\"vService\" },\n  phone:           { emptyKey:\"vPhone\",  ok:function(v){ return \/^\\d{9,10}$\/.test(v.replace(\/\\D\/g,\"\")); } },\n  postalCode:      { emptyKey:\"vPostal\", ok:function(v){ return \/^\\d{5}$\/.test(v); } }\n};\nfunction runBlurCheck(id){\n  var rule = BLUR_RULES[id], el = document.getElementById(id);\n  if(!rule || !el) return;\n  var v = (el.value||\"\").trim();\n  clearErrorFor(el);                       \/\/ \u0e25\u0e1a\u0e02\u0e49\u0e2d\u0e04\u0e27\u0e32\u0e21\u0e40\u0e14\u0e34\u0e21\u0e01\u0e48\u0e2d\u0e19 \u0e01\u0e31\u0e19\u0e0b\u0e49\u0e2d\u0e19\u0e01\u0e31\u0e19\n  if(!v){\n    if(hasAttemptedSubmit) markInvalid(id, T(rule.emptyKey));\n    return;\n  }\n  if(rule.ok && !rule.ok(v)) markInvalid(id, T(rule.emptyKey));\n}\n\/\/ \u0e27\u0e31\u0e19\u0e40\u0e14\u0e37\u0e2d\u0e19\u0e1b\u0e35\u0e40\u0e01\u0e34\u0e14\u0e43\u0e0a\u0e49 3 \u0e0a\u0e48\u0e2d\u0e07\u0e23\u0e48\u0e27\u0e21\u0e01\u0e31\u0e19 \u0e08\u0e36\u0e07\u0e15\u0e23\u0e27\u0e08\u0e23\u0e27\u0e21\u0e17\u0e35\u0e40\u0e14\u0e35\u0e22\u0e27\nfunction runBirthdateCheck(){\n  var yEl = document.getElementById(\"birthYear\");\n  var d = document.getElementById(\"birthDay\").value;\n  var m = document.getElementById(\"birthMonth\").value;\n  var y = yEl.value.trim();\n  clearErrorFor(yEl);\n  var complete = d && m && \/^\\d{4}$\/.test(y);\n  var invalid  = !complete || !isValidBirthdateValue(document.getElementById(\"birthdate\").value);\n  if(!invalid) return;\n  \/\/ \u0e22\u0e31\u0e07\u0e44\u0e21\u0e48\u0e41\u0e15\u0e30\u0e2d\u0e30\u0e44\u0e23\u0e40\u0e25\u0e22 \u2192 \u0e40\u0e15\u0e37\u0e2d\u0e19\u0e40\u0e09\u0e1e\u0e32\u0e30\u0e2b\u0e25\u0e31\u0e07\u0e40\u0e04\u0e22\u0e01\u0e14\u0e2a\u0e48\u0e07\n  if(!d && !m && !y && !hasAttemptedSubmit) return;\n  \/\/ \u0e01\u0e23\u0e2d\u0e01\u0e04\u0e23\u0e1a\u0e41\u0e25\u0e49\u0e27\u0e41\u0e15\u0e48\u0e44\u0e21\u0e48\u0e16\u0e39\u0e01\u0e15\u0e49\u0e2d\u0e07 (\u0e40\u0e0a\u0e48\u0e19 31 \u0e01\u0e38\u0e21\u0e20\u0e32\u0e1e\u0e31\u0e19\u0e18\u0e4c) \u0e15\u0e49\u0e2d\u0e07\u0e1a\u0e2d\u0e01\u0e43\u0e2b\u0e49\u0e15\u0e23\u0e07\u0e40\u0e2b\u0e15\u0e38 \u0e44\u0e21\u0e48\u0e43\u0e0a\u0e48 \"\u0e01\u0e23\u0e2d\u0e01\u0e44\u0e21\u0e48\u0e04\u0e23\u0e1a\"\n  if(y || hasAttemptedSubmit) markInvalid(\"birthdate\", T(complete ? \"vBirthInvalid\" : \"vBirth\"), \".birthdate-grid\", \"birthDay\");\n}\n\/\/ blur \u0e44\u0e21\u0e48 bubble \u0e08\u0e36\u0e07\u0e15\u0e49\u0e2d\u0e07\u0e14\u0e31\u0e01\u0e17\u0e35\u0e48 capture phase\ndocument.getElementById(\"regForm\").addEventListener(\"blur\", function(e){\n  var id = e.target && e.target.id;\n  if(BLUR_RULES[id]) runBlurCheck(id);\n  else if(id === \"birthYear\") runBirthdateCheck();\n}, true);\n\/\/ \u0e25\u0e07\u0e17\u0e30\u0e40\u0e1a\u0e35\u0e22\u0e19\u0e2b\u0e25\u0e31\u0e07 listener clearErrorFor \u0e14\u0e49\u0e32\u0e19\u0e1a\u0e19 \u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e43\u0e2b\u0e49\u0e15\u0e23\u0e27\u0e08\u0e0b\u0e49\u0e33\u0e2b\u0e25\u0e31\u0e07\u0e02\u0e49\u0e2d\u0e04\u0e27\u0e32\u0e21\u0e40\u0e14\u0e34\u0e21\u0e16\u0e39\u0e01\u0e25\u0e49\u0e32\u0e07\u0e41\u0e25\u0e49\u0e27\ndocument.getElementById(\"regForm\").addEventListener(\"change\", function(e){\n  var id = e.target && e.target.id;\n  if((id===\"birthDay\" || id===\"birthMonth\") && document.getElementById(\"birthYear\").value.trim()) runBirthdateCheck();\n});\n\/\/ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n\/\/ \u0e15\u0e23\u0e27\u0e08\u0e2a\u0e16\u0e32\u0e19\u0e30\u0e01\u0e32\u0e23\u0e2a\u0e21\u0e31\u0e04\u0e23\n\/\/ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\nfunction doCheckStatus(){\n  var code = document.getElementById(\"checkCodeInput\").value.trim().toUpperCase();\n  var phoneLast4 = document.getElementById(\"checkPhoneInput\").value.replace(\/\\D\/g, \"\");\n  var resEl = document.getElementById(\"checkResult\");\n  var btn   = document.getElementById(\"btnCheck\");\n  if(!code || !\/^\\d{4}$\/.test(phoneLast4)){\n    resEl.className = \"check-result not-found\";\n    resEl.style.display = \"block\";\n    resEl.innerHTML = \"\u26a0\ufe0f \" + (LANG===\"en\" ? \"Please enter the code and the last 4 phone digits.\" : \"\u0e01\u0e23\u0e38\u0e13\u0e32\u0e01\u0e23\u0e2d\u0e01\u0e23\u0e2b\u0e31\u0e2a\u0e41\u0e25\u0e30\u0e40\u0e25\u0e02\u0e17\u0e49\u0e32\u0e22\u0e42\u0e17\u0e23\u0e28\u0e31\u0e1e\u0e17\u0e4c 4 \u0e2b\u0e25\u0e31\u0e01\");\n    return;\n  }\n  btn.disabled = true;\n  resEl.className = \"check-result\";\n  resEl.style.display = \"block\";\n  resEl.innerHTML = \"\u23f3 \" + (LANG===\"en\" ? \"Searching\u2026\" : \"\u0e01\u0e33\u0e25\u0e31\u0e07\u0e04\u0e49\u0e19\u0e2b\u0e32\u2026\");\n  var cbName   = \"chkCb_\" + Date.now();\n  var scriptEl = null;\n  var timer    = setTimeout(function(){\n    cleanup();\n    btn.disabled = false;\n    resEl.className = \"check-result not-found\";\n    resEl.innerHTML = \"\u26a0\ufe0f \" + (LANG===\"en\" ? \"Request timed out. Please try again.\" : \"\u0e2b\u0e21\u0e14\u0e40\u0e27\u0e25\u0e32\u0e40\u0e0a\u0e37\u0e48\u0e2d\u0e21\u0e15\u0e48\u0e2d \u0e01\u0e23\u0e38\u0e13\u0e32\u0e25\u0e2d\u0e07\u0e43\u0e2b\u0e21\u0e48\");\n  }, 20000);\n  function cleanup(){\n    clearTimeout(timer);\n    delete window[cbName];\n    if(scriptEl && scriptEl.parentNode) scriptEl.parentNode.removeChild(scriptEl);\n  }\n  window[cbName] = function(data){\n    cleanup();\n    btn.disabled = false;\n    if(data && data.ok){\n      resEl.className = \"check-result found\";\n      var isLang = LANG === \"en\";\n      var L = function(th,en){ return isLang ? en : th; };\n      resEl.innerHTML =\n        \"<div style='font-weight:700;font-size:15px;margin-bottom:10px;color:#1a6633'>\u2705 \"+L(\"\u0e1e\u0e1a\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e01\u0e32\u0e23\u0e2a\u0e21\u0e31\u0e04\u0e23\",\"Registration found\")+\"<\/div>\" +\n        \"<div class='check-result-code'>\"+esc2(code)+\"<\/div>\" +\n        \"<div style='margin-top:12px'>\" +\n        ckRow(L(\"\u0e0a\u0e37\u0e48\u0e2d-\u0e19\u0e32\u0e21\u0e2a\u0e01\u0e38\u0e25\",\"Full Name\"),     displayStoredName(data.name)) +\n        ckRow(L(\"\u0e40\u0e25\u0e02\u0e17\u0e35\u0e48\u0e43\u0e1a\u0e2a\u0e21\u0e31\u0e04\u0e23\",\"Registration No.\"), String(data.seqNo||\"\")) +\n        ckRow(L(\"\u0e27\u0e31\u0e19\u0e40\u0e27\u0e25\u0e32\u0e17\u0e35\u0e48\u0e2a\u0e21\u0e31\u0e04\u0e23\",\"Date & Time\"),   String(data.regDateTime||data.regDate||\"\")) +\n        (data.serviceLocation ? ckRow(L(\"\u0e2b\u0e19\u0e48\u0e27\u0e22\u0e1a\u0e23\u0e34\u0e01\u0e32\u0e23\",\"Study Center\"), locDisplayName(data.serviceLocation)) : \"\") +\n        \"<\/div>\" +\n        \"<div style='margin-top:12px;font-size:13px;color:#2e7d52'>\"+\n          L(\"\ud83d\udccc \u0e01\u0e23\u0e38\u0e13\u0e32\u0e41\u0e08\u0e49\u0e07\u0e23\u0e2b\u0e31\u0e2a\u0e19\u0e35\u0e49\u0e41\u0e01\u0e48\u0e40\u0e08\u0e49\u0e32\u0e2b\u0e19\u0e49\u0e32\u0e17\u0e35\u0e48\u0e43\u0e19\u0e27\u0e31\u0e19\u0e2a\u0e21\u0e31\u0e04\u0e23\",\n            \"\ud83d\udccc Please present this code to staff on registration day\")+\"<\/div>\" +\n        \"<button type='button' class='btn-check' id='btnGoEdit' style='margin-top:14px;width:100%'>\u270f\ufe0f \"+\n          L(\"\u0e41\u0e01\u0e49\u0e44\u0e02\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\",\"Edit Information\")+\"<\/button>\";\n      var editBtn = document.getElementById(\"btnGoEdit\");\n      if(editBtn) editBtn.addEventListener(\"click\", function(){ startEditFlow(code, phoneLast4, editBtn); });\n    } else {\n      resEl.className = \"check-result not-found\";\n      resEl.innerHTML =\n        \"<div style='font-weight:700;font-size:15px;margin-bottom:6px;color:#8b1a1a'>\u274c \"+\n        (LANG===\"en\"?\"Registration not found\":\"\u0e44\u0e21\u0e48\u0e1e\u0e1a\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e01\u0e32\u0e23\u0e2a\u0e21\u0e31\u0e04\u0e23\")+\"<\/div>\" +\n        \"<div style='font-size:14px;margin-top:4px'>\"+\n        (LANG===\"en\"?\"Please check the code and phone digits, then try again.\"\n                    :\"\u0e01\u0e23\u0e38\u0e13\u0e32\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e23\u0e2b\u0e31\u0e2a\u0e41\u0e25\u0e30\u0e40\u0e25\u0e02\u0e17\u0e49\u0e32\u0e22\u0e42\u0e17\u0e23\u0e28\u0e31\u0e1e\u0e17\u0e4c\u0e41\u0e25\u0e49\u0e27\u0e25\u0e2d\u0e07\u0e2d\u0e35\u0e01\u0e04\u0e23\u0e31\u0e49\u0e07\")+\"<\/div>\";\n    }\n  };\n  scriptEl = document.createElement(\"script\");\n  scriptEl.src = GAS_URL + \"?action=check&code=\" + encodeURIComponent(code) +\n    \"&phoneLast4=\" + encodeURIComponent(phoneLast4) + \"&language=\" + encodeURIComponent(LANG) +\n    \"&callback=\" + encodeURIComponent(cbName);\n  scriptEl.onerror = function(){\n    cleanup(); btn.disabled = false;\n    resEl.className = \"check-result not-found\";\n    resEl.innerHTML = \"\u26a0\ufe0f \" + (LANG===\"en\" ? \"Connection error. Please try again.\" : \"\u0e40\u0e0a\u0e37\u0e48\u0e2d\u0e21\u0e15\u0e48\u0e2d\u0e44\u0e21\u0e48\u0e44\u0e14\u0e49 \u0e01\u0e23\u0e38\u0e13\u0e32\u0e25\u0e2d\u0e07\u0e43\u0e2b\u0e21\u0e48\");\n  };\n  document.body.appendChild(scriptEl);\n}\n\/\/ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n\/\/ \u0e41\u0e01\u0e49\u0e44\u0e02\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e17\u0e35\u0e48\u0e40\u0e04\u0e22\u0e2a\u0e21\u0e31\u0e04\u0e23\u0e44\u0e27\u0e49 \u2014 \u0e22\u0e37\u0e19\u0e22\u0e31\u0e19\u0e15\u0e31\u0e27\u0e14\u0e49\u0e27\u0e22\u0e23\u0e2b\u0e31\u0e2a+\u0e40\u0e1a\u0e2d\u0e23\u0e4c\u0e17\u0e49\u0e32\u0e22\u0e40\u0e14\u0e34\u0e21 (\u0e41\u0e1a\u0e1a\u0e40\u0e14\u0e35\u0e22\u0e27\u0e01\u0e31\u0e1a\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e16\u0e32\u0e19\u0e30)\n\/\/ \u0e41\u0e25\u0e49\u0e27\u0e14\u0e36\u0e07\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e21\u0e32\u0e40\u0e15\u0e34\u0e21\u0e1f\u0e2d\u0e23\u0e4c\u0e21\u0e2a\u0e21\u0e31\u0e04\u0e23\u0e40\u0e14\u0e34\u0e21 \u0e43\u0e2b\u0e49\u0e41\u0e01\u0e49\u0e40\u0e09\u0e1e\u0e32\u0e30\u0e08\u0e38\u0e14\u0e17\u0e35\u0e48\u0e1c\u0e34\u0e14\u0e41\u0e25\u0e49\u0e27\u0e01\u0e14\u0e1a\u0e31\u0e19\u0e17\u0e36\u0e01\u0e17\u0e31\u0e1a\u0e41\u0e16\u0e27\u0e40\u0e14\u0e34\u0e21 (\u0e44\u0e21\u0e48\u0e2a\u0e23\u0e49\u0e32\u0e07\u0e41\u0e16\u0e27\u0e43\u0e2b\u0e21\u0e48)\n\/\/ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\nfunction startEditFlow(code, phoneLast4, btn){\n  if(btn) btn.disabled = true;\n  Swal.fire({\n    title: LANG===\"en\" ? \"Fetching your information\u2026\" : \"\u0e01\u0e33\u0e25\u0e31\u0e07\u0e14\u0e36\u0e07\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u2026\",\n    allowOutsideClick: false,\n    didOpen: function(){ Swal.showLoading(); }\n  });\n  var body = \"action=getRecord&code=\"+encodeURIComponent(code)+\n    \"&phoneLast4=\"+encodeURIComponent(phoneLast4)+\"&language=\"+encodeURIComponent(LANG);\n  fetch(GAS_URL, { method:\"POST\", headers:{\"Content-Type\":\"application\/x-www-form-urlencoded;charset=UTF-8\"}, body:body })\n    .then(function(r){ if(!r.ok) throw new Error(\"HTTP \"+r.status); return r.json(); })\n    .then(function(data){\n      if(btn) btn.disabled = false;\n      Swal.close();\n      if(!data || !data.ok){\n        Swal.fire({icon:\"error\", title:T(\"errTitle\"), text:(data&&data.message)||T(\"retry\"), confirmButtonColor:\"#AD4970\"});\n        return;\n      }\n      applyRecordToForm(data, code, phoneLast4);\n    })\n    .catch(function(err){\n      if(btn) btn.disabled = false;\n      Swal.close();\n      Swal.fire({icon:\"error\", title:T(\"connErr\"), text:(err&&err.message)||T(\"connErrMsg\"), confirmButtonColor:\"#AD4970\"});\n    });\n}\n\/\/ \u0e40\u0e15\u0e34\u0e21\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e17\u0e35\u0e48\u0e14\u0e36\u0e07\u0e21\u0e32\u0e25\u0e07\u0e43\u0e19\u0e1f\u0e2d\u0e23\u0e4c\u0e21\u0e2a\u0e21\u0e31\u0e04\u0e23\u0e40\u0e14\u0e34\u0e21 \u0e41\u0e25\u0e49\u0e27\u0e2a\u0e25\u0e31\u0e1a\u0e40\u0e1b\u0e47\u0e19\u0e42\u0e2b\u0e21\u0e14\u0e41\u0e01\u0e49\u0e44\u0e02\nfunction applyRecordToForm(rec, code, phoneLast4){\n  resetForm();   \/\/ \u0e40\u0e23\u0e34\u0e48\u0e21\u0e08\u0e32\u0e01\u0e1f\u0e2d\u0e23\u0e4c\u0e21\u0e27\u0e48\u0e32\u0e07\u0e2a\u0e30\u0e2d\u0e32\u0e14\u0e01\u0e48\u0e2d\u0e19\u0e40\u0e2a\u0e21\u0e2d (\u0e25\u0e49\u0e32\u0e07 isEditMode \u0e44\u0e1b\u0e14\u0e49\u0e27\u0e22 \u0e08\u0e36\u0e07\u0e15\u0e49\u0e2d\u0e07\u0e15\u0e31\u0e49\u0e07\u0e43\u0e2b\u0e21\u0e48\u0e14\u0e49\u0e32\u0e19\u0e25\u0e48\u0e32\u0e07)\n  isEditMode = true;\n  editAuth = { code: code, phoneLast4: phoneLast4 };\n\n  \/\/ \u0e1c\u0e39\u0e49\u0e2a\u0e21\u0e31\u0e04\u0e23\u0e15\u0e48\u0e32\u0e07\u0e0a\u0e32\u0e15\u0e34 (\u0e21\u0e35\u0e40\u0e2d\u0e01\u0e2a\u0e32\u0e23 Passport\/TM.30) \u0e15\u0e49\u0e2d\u0e07\u0e1a\u0e31\u0e07\u0e04\u0e31\u0e1a\u0e40\u0e1b\u0e47\u0e19\u0e1f\u0e2d\u0e23\u0e4c\u0e21\u0e20\u0e32\u0e29\u0e32\u0e2d\u0e31\u0e07\u0e01\u0e24\u0e29\u0e40\u0e2a\u0e21\u0e2d\u0e15\u0e2d\u0e19\u0e41\u0e01\u0e49\u0e44\u0e02\n  \/\/ \u0e40\u0e1e\u0e23\u0e32\u0e30\u0e0a\u0e48\u0e2d\u0e07\u0e2d\u0e31\u0e1b\u0e42\u0e2b\u0e25\u0e14\u0e40\u0e2d\u0e01\u0e2a\u0e32\u0e23\u0e15\u0e48\u0e32\u0e07\u0e0a\u0e32\u0e15\u0e34\u0e08\u0e30\u0e16\u0e39\u0e01\u0e2a\u0e48\u0e07\/\u0e2d\u0e31\u0e1b\u0e42\u0e2b\u0e25\u0e14\u0e43\u0e2b\u0e21\u0e48\u0e01\u0e47\u0e15\u0e48\u0e2d\u0e40\u0e21\u0e37\u0e48\u0e2d LANG===\"en\" \u0e40\u0e17\u0e48\u0e32\u0e19\u0e31\u0e49\u0e19\n  \/\/ \u0e16\u0e49\u0e32\u0e1b\u0e25\u0e48\u0e2d\u0e22\u0e15\u0e32\u0e21\u0e20\u0e32\u0e29\u0e32\u0e1b\u0e31\u0e08\u0e08\u0e38\u0e1a\u0e31\u0e19\u0e02\u0e2d\u0e07\u0e2b\u0e19\u0e49\u0e32\u0e40\u0e27\u0e47\u0e1a (\u0e40\u0e0a\u0e48\u0e19 \u0e1c\u0e39\u0e49\u0e14\u0e39\u0e41\u0e25\u0e40\u0e1b\u0e34\u0e14\u0e40\u0e1b\u0e47\u0e19\u0e44\u0e17\u0e22\u0e2d\u0e22\u0e39\u0e48) \u0e01\u0e14\u0e1a\u0e31\u0e19\u0e17\u0e36\u0e01\u0e08\u0e30\u0e40\u0e02\u0e35\u0e22\u0e19\u0e17\u0e31\u0e1a\u0e40\u0e2d\u0e01\u0e2a\u0e32\u0e23\u0e40\u0e14\u0e34\u0e21\u0e43\u0e2b\u0e49\u0e27\u0e48\u0e32\u0e07\u0e44\u0e1b\u0e42\u0e14\u0e22\u0e44\u0e21\u0e48\u0e15\u0e31\u0e49\u0e07\u0e43\u0e08\n  if((rec.passportUrl || rec.visaExpiryUrl || rec.tm30Url) && LANG !== \"en\") setLanguage(\"en\");\n\n  setAppMode(\"register\", false);\n\n  var setVal = function(id, v){ var el=document.getElementById(id); if(el && v!=null) el.value = v; };\n  setVal(\"prefix\",    rec.prefix);\n  setVal(\"firstName\", rec.firstName);\n  setVal(\"lastName\",  rec.lastName);\n  setVal(\"temple\",    rec.temple);\n  setVal(\"phone\",     rec.phone);\n  setVal(\"education\", rec.education);\n  setVal(\"pali\",      rec.pali);\n  setVal(\"dhamma\",    rec.dhamma);\n  setVal(\"address\",   rec.address);\n  setVal(\"soi\",       rec.soi);\n  onPrefixChange();\n  translateOptions(LANG);\n\n  var bParts = String(rec.birthdate || \"\").split(\"\/\");\n  if(bParts.length === 3){\n    var yearBE = parseInt(bParts[2], 10);\n    \/\/ \u0e04\u0e48\u0e32\u0e17\u0e35\u0e48\u0e40\u0e01\u0e47\u0e1a\u0e44\u0e27\u0e49\u0e40\u0e1b\u0e47\u0e19 \u0e1e.\u0e28. \u0e40\u0e2a\u0e21\u0e2d \u0e41\u0e15\u0e48\u0e0a\u0e48\u0e2d\u0e07\u0e1b\u0e35\u0e43\u0e19\u0e42\u0e2b\u0e21\u0e14\u0e2d\u0e31\u0e07\u0e01\u0e24\u0e29\u0e41\u0e2a\u0e14\u0e07\u0e40\u0e1b\u0e47\u0e19 \u0e04.\u0e28. \u2014 \u0e41\u0e1b\u0e25\u0e07\u0e43\u0e2b\u0e49\u0e15\u0e23\u0e07\u0e15\u0e32\u0e21\u0e17\u0e35\u0e48 setLanguage \u0e17\u0e33\n    var displayYear = (LANG === \"en\" && yearBE > 2400) ? String(yearBE - 543) : bParts[2];\n    setVal(\"birthDay\",   bParts[0]);\n    setVal(\"birthMonth\", bParts[1]);\n    setVal(\"birthYear\",  displayYear);\n  }\n  syncBirthdate();\n\n  \/\/ \u0e08\u0e31\u0e07\u0e2b\u0e27\u0e31\u0e14\/\u0e2d\u0e33\u0e40\u0e20\u0e2d\/\u0e15\u0e33\u0e1a\u0e25\/\u0e2b\u0e19\u0e48\u0e27\u0e22\u0e1a\u0e23\u0e34\u0e01\u0e32\u0e23 \u0e15\u0e31\u0e27\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e42\u0e2b\u0e25\u0e14\u0e08\u0e32\u0e01 CDN\/\u0e0a\u0e35\u0e15\u0e41\u0e1a\u0e1a async \u2014 \u0e43\u0e0a\u0e49\u0e15\u0e31\u0e27\u0e0a\u0e48\u0e27\u0e22\u0e15\u0e31\u0e27\u0e40\u0e14\u0e35\u0e22\u0e27\u0e01\u0e31\u0e1a\u0e01\u0e39\u0e49\u0e23\u0e48\u0e32\u0e07\n  \/\/ \u0e17\u0e35\u0e48\u0e23\u0e2d\u0e08\u0e19\u0e01\u0e27\u0e48\u0e32 <option> \u0e08\u0e30\u0e1e\u0e23\u0e49\u0e2d\u0e21\u0e41\u0e25\u0e49\u0e27\u0e04\u0e48\u0e2d\u0e22\u0e15\u0e31\u0e49\u0e07\u0e04\u0e48\u0e32+\u0e44\u0e25\u0e48 cascade \u0e15\u0e48\u0e2d\u0e01\u0e31\u0e19\u0e40\u0e1b\u0e47\u0e19\u0e17\u0e2d\u0e14 \u0e46\n  \/\/ draftAborted \u0e40\u0e1b\u0e47\u0e19\u0e2a\u0e27\u0e34\u0e15\u0e0a\u0e4c\u0e17\u0e32\u0e07\u0e40\u0e14\u0e35\u0e22\u0e27 (\u0e15\u0e31\u0e49\u0e07 true \u0e15\u0e2d\u0e19\u0e01\u0e14 \"\u0e25\u0e49\u0e32\u0e07\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\" \u0e02\u0e2d\u0e07\u0e23\u0e48\u0e32\u0e07\u0e2a\u0e21\u0e31\u0e04\u0e23\u0e43\u0e2b\u0e21\u0e48 \u0e41\u0e25\u0e49\u0e27\u0e44\u0e21\u0e48\u0e40\u0e04\u0e22\u0e16\u0e39\u0e01\u0e23\u0e35\u0e40\u0e0b\u0e47\u0e15\u0e2d\u0e35\u0e01\u0e40\u0e25\u0e22\n  \/\/ \u0e17\u0e31\u0e49\u0e07\u0e40\u0e0b\u0e2a\u0e0a\u0e31\u0e19) \u0e16\u0e49\u0e32\u0e1c\u0e39\u0e49\u0e43\u0e0a\u0e49\u0e40\u0e04\u0e22\u0e01\u0e14\u0e25\u0e49\u0e32\u0e07\u0e23\u0e48\u0e32\u0e07\u0e21\u0e32\u0e01\u0e48\u0e2d\u0e19\u0e2b\u0e19\u0e49\u0e32\u0e19\u0e35\u0e49\u0e43\u0e19\u0e2b\u0e19\u0e49\u0e32\u0e40\u0e14\u0e35\u0e22\u0e27\u0e01\u0e31\u0e19 draftSetSelect \u0e14\u0e49\u0e32\u0e19\u0e25\u0e48\u0e32\u0e07\u0e08\u0e30\u0e44\u0e21\u0e48\u0e17\u0e33\u0e07\u0e32\u0e19\u0e40\u0e07\u0e35\u0e22\u0e1a \u0e46\n  \/\/ \u0e08\u0e36\u0e07\u0e15\u0e49\u0e2d\u0e07\u0e23\u0e35\u0e40\u0e0b\u0e47\u0e15\u0e43\u0e2b\u0e49\u0e01\u0e48\u0e2d\u0e19\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19\u0e23\u0e2d\u0e1a\u0e19\u0e35\u0e49 \u2014 \u0e44\u0e21\u0e48\u0e01\u0e23\u0e30\u0e17\u0e1a\u0e23\u0e30\u0e1a\u0e1a\u0e01\u0e39\u0e49\u0e23\u0e48\u0e32\u0e07\u0e40\u0e14\u0e34\u0e21\u0e40\u0e1e\u0e23\u0e32\u0e30\u0e21\u0e31\u0e19\u0e23\u0e31\u0e19\u0e41\u0e04\u0e48\u0e04\u0e23\u0e31\u0e49\u0e07\u0e40\u0e14\u0e35\u0e22\u0e27\u0e15\u0e2d\u0e19\u0e42\u0e2b\u0e25\u0e14\u0e2b\u0e19\u0e49\u0e32\u0e44\u0e1b\u0e41\u0e25\u0e49\u0e27\n  draftAborted = false;\n  draftSetSelect(\"serviceLocation\", rec.serviceLocation);\n  draftSetSelect(\"province\", rec.province, function(){\n    draftSetSelect(\"district\", rec.district, function(){\n      draftSetSelect(\"subdistrict\", rec.subdistrict, function(){\n        var pc = document.getElementById(\"postalCode\");\n        if(pc) pc.value = rec.postalCode || \"\";\n      });\n    });\n  });\n\n  \/\/ \u0e23\u0e39\u0e1b\/\u0e40\u0e2d\u0e01\u0e2a\u0e32\u0e23 \u2014 \u0e43\u0e0a\u0e49 URL \u0e40\u0e14\u0e34\u0e21\u0e17\u0e35\u0e48\u0e40\u0e04\u0e22\u0e2d\u0e31\u0e1b\u0e42\u0e2b\u0e25\u0e14\u0e44\u0e27\u0e49\u0e42\u0e14\u0e22\u0e44\u0e21\u0e48\u0e15\u0e49\u0e2d\u0e07\u0e2d\u0e31\u0e1b\u0e42\u0e2b\u0e25\u0e14\u0e0b\u0e49\u0e33 (cachedUpload \u0e08\u0e30\u0e04\u0e37\u0e19 URL \u0e19\u0e35\u0e49\u0e17\u0e31\u0e19\u0e17\u0e35)\n  \/\/ \u0e08\u0e19\u0e01\u0e27\u0e48\u0e32\u0e1c\u0e39\u0e49\u0e2a\u0e21\u0e31\u0e04\u0e23\u0e08\u0e30\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e44\u0e1f\u0e25\u0e4c\u0e43\u0e2b\u0e21\u0e48\u0e2b\u0e23\u0e37\u0e2d\u0e01\u0e14\u0e25\u0e1a\u0e40\u0e2d\u0e07\n  if(rec.imageUrl){\n    photoBase64 = rec.imageUrl;\n    uploadedUrls.photo = rec.imageUrl;\n    document.getElementById(\"photoImg\").src = rec.imageUrl;\n    document.getElementById(\"photoImg\").style.display = \"block\";\n    document.getElementById(\"photoPlaceholder\").style.display = \"none\";\n    document.getElementById(\"btnPhotoRemove\").hidden = false;\n  }\n  [[\"passport\", rec.passportUrl], [\"visaExpiry\", rec.visaExpiryUrl], [\"tm30\", rec.tm30Url]].forEach(function(pair){\n    var kind = pair[0], url = pair[1];\n    if(!url) return;\n    if(kind === \"passport\") passportBase64 = url;\n    else if(kind === \"visaExpiry\") visaExpiryBase64 = url;\n    else tm30Base64 = url;\n    uploadedUrls[kind] = url;\n    var ui = docUI(kind);\n    ui.img.src = url; ui.img.style.display = \"block\";\n    ui.placeholder.style.display = \"none\";\n    ui.name.textContent = LANG === \"en\" ? \"\u2713 Existing file kept\" : \"\u2713 \u0e43\u0e0a\u0e49\u0e44\u0e1f\u0e25\u0e4c\u0e40\u0e14\u0e34\u0e21\";\n    ui.name.style.display = \"block\";\n    ui.remove.hidden = false;\n  });\n  updateUploadSummary();\n\n  var bar = document.getElementById(\"editModeBar\");\n  if(bar){\n    document.getElementById(\"editModeBarTitle\").textContent =\n      (LANG === \"en\" ? \"Editing registration No. \" : \"\u0e01\u0e33\u0e25\u0e31\u0e07\u0e41\u0e01\u0e49\u0e44\u0e02\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e40\u0e25\u0e02\u0e17\u0e35\u0e48 \") + (rec.seqNo || \"\");\n    document.getElementById(\"editModeBarNote\").textContent = LANG === \"en\"\n      ? \"Change only what's wrong, then save below.\"\n      : \"\u0e41\u0e01\u0e49\u0e40\u0e09\u0e1e\u0e32\u0e30\u0e08\u0e38\u0e14\u0e17\u0e35\u0e48\u0e1c\u0e34\u0e14 \u0e41\u0e25\u0e49\u0e27\u0e01\u0e14\u0e1a\u0e31\u0e19\u0e17\u0e36\u0e01\u0e14\u0e49\u0e32\u0e19\u0e25\u0e48\u0e32\u0e07\";\n    document.getElementById(\"editModeCancelBtn\").textContent = LANG === \"en\" ? \"Cancel\" : \"\u0e22\u0e01\u0e40\u0e25\u0e34\u0e01\";\n    bar.hidden = false;\n  }\n  var submitTxt = document.getElementById(\"submitBtnText\");\n  if(submitTxt) submitTxt.textContent = LANG === \"en\" ? \"Review Changes\" : \"\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e01\u0e48\u0e2d\u0e19\u0e1a\u0e31\u0e19\u0e17\u0e36\u0e01\";\n\n  setTimeout(function(){\n    var target = document.getElementById(\"cardPersonal\");\n    if(target) target.scrollIntoView({behavior:\"smooth\", block:\"start\"});\n  }, 50);\n}\nfunction cancelEditMode(){\n  resetForm();\n  setAppMode(\"status\", true);\n}\nfunction displayStoredName(name){\n  var value=String(name||\"\");\n  if(LANG!==\"en\" || !value || !OPT_EN || !OPT_EN.prefix) return value;\n  var prefixes=Object.keys(OPT_EN.prefix).filter(function(k){return !!k;}).sort(function(a,b){return b.length-a.length;});\n  for(var i=0;i<prefixes.length;i++){\n    var th=prefixes[i];\n    if(value===th || value.indexOf(th+\" \")===0){\n      return OPT_EN.prefix[th]+value.substring(th.length);\n    }\n  }\n  return value;\n}\nfunction ckRow(label, value){\n  return '<div class=\"check-result-row\"><div class=\"check-result-label\">'+esc2(label)+'<\/div><div class=\"check-result-value\">'+esc2(value||\"\u2014\")+'<\/div><\/div>';\n}\n\/\/ Enter \u0e43\u0e19\u0e0a\u0e48\u0e2d\u0e07\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e16\u0e32\u0e19\u0e30\n[\"checkCodeInput\",\"checkPhoneInput\"].forEach(function(id){\n  document.getElementById(id).addEventListener(\"keydown\", function(e){\n    if(e.key === \"Enter\"){ e.preventDefault(); doCheckStatus(); }\n  });\n});\n\/\/ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n\/\/ i18n\n\/\/ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\nvar LANG = \"th\";\nvar I18N = {\n  th: {\n    heroTitle:\"\u0e41\u0e1a\u0e1a\u0e1f\u0e2d\u0e23\u0e4c\u0e21\u0e2a\u0e21\u0e31\u0e04\u0e23\u0e40\u0e23\u0e35\u0e22\u0e19\u0e1e\u0e23\u0e30\u0e2d\u0e20\u0e34\u0e18\u0e23\u0e23\u0e21\",\n    heroSub:\"\u0e01\u0e23\u0e2d\u0e01\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e43\u0e2b\u0e49\u0e04\u0e23\u0e1a\u0e16\u0e49\u0e27\u0e19 \u2014 \u0e23\u0e30\u0e1a\u0e1a\u0e08\u0e30\u0e2d\u0e2d\u0e01\u0e23\u0e2b\u0e31\u0e2a\u0e0a\u0e31\u0e48\u0e27\u0e04\u0e23\u0e32\u0e27\u0e43\u0e2b\u0e49\u0e2b\u0e25\u0e31\u0e07\u0e2a\u0e21\u0e31\u0e04\u0e23\u0e2a\u0e33\u0e40\u0e23\u0e47\u0e08\",\n    secPersonal:\"\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e2a\u0e48\u0e27\u0e19\u0e15\u0e31\u0e27\", secAddress:\"\u0e17\u0e35\u0e48\u0e2d\u0e22\u0e39\u0e48\u0e1b\u0e31\u0e08\u0e08\u0e38\u0e1a\u0e31\u0e19\",\n    secLocation:\"\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\/\u0e2b\u0e19\u0e48\u0e27\u0e22\u0e1a\u0e23\u0e34\u0e01\u0e32\u0e23\",\n    secPhoto:\"\u0e23\u0e39\u0e1b\u0e16\u0e48\u0e32\u0e22\", secCheck:\"\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e2a\u0e16\u0e32\u0e19\u0e30\u0e01\u0e32\u0e23\u0e2a\u0e21\u0e31\u0e04\u0e23\",\n    lbPrefix:\"\u0e04\u0e33\u0e19\u0e33\u0e2b\u0e19\u0e49\u0e32\", firstNameLabel:\"\u0e0a\u0e37\u0e48\u0e2d\", lastNameLabel:\"\u0e19\u0e32\u0e21\u0e2a\u0e01\u0e38\u0e25\",\n    lbTemple:\"\u0e27\u0e31\u0e14 \/ \u0e2a\u0e33\u0e19\u0e31\u0e01\", lbBirthdate:\"\u0e27\u0e31\u0e19\u0e40\u0e14\u0e37\u0e2d\u0e19\u0e1b\u0e35\u0e40\u0e01\u0e34\u0e14 (\u0e1e.\u0e28.)\", lbPhone:\"\u0e42\u0e17\u0e23\u0e28\u0e31\u0e1e\u0e17\u0e4c\",\n    lbEducation:\"\u0e27\u0e38\u0e12\u0e34\u0e01\u0e32\u0e23\u0e28\u0e36\u0e01\u0e29\u0e32\u0e2a\u0e32\u0e21\u0e31\u0e0d\", lbPali:\"\u0e40\u0e1b\u0e23\u0e35\u0e22\u0e0d\u0e18\u0e23\u0e23\u0e21 (\u0e1a\u0e32\u0e25\u0e35)\",\n    lbDhamma:\"\u0e19\u0e31\u0e01\u0e18\u0e23\u0e23\u0e21 \/ \u0e18\u0e23\u0e23\u0e21\u0e28\u0e36\u0e01\u0e29\u0e32\", lbAddress:\"\u0e40\u0e25\u0e02\u0e17\u0e35\u0e48\", lbSoi:\"\u0e0b\u0e2d\u0e22 \/ \u0e2b\u0e21\u0e39\u0e48\",\n    lbProvince:\"\u0e08\u0e31\u0e07\u0e2b\u0e27\u0e31\u0e14\", lbDistrict:\"\u0e2d\u0e33\u0e40\u0e20\u0e2d \/ \u0e40\u0e02\u0e15\", lbSubdistrict:\"\u0e15\u0e33\u0e1a\u0e25 \/ \u0e41\u0e02\u0e27\u0e07\",\n    lbPostal:\"\u0e23\u0e2b\u0e31\u0e2a\u0e44\u0e1b\u0e23\u0e29\u0e13\u0e35\u0e22\u0e4c\", lbServiceLocation:\"\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e2b\u0e19\u0e48\u0e27\u0e22\u0e1a\u0e23\u0e34\u0e01\u0e32\u0e23\u0e17\u0e35\u0e48\u0e2a\u0e30\u0e14\u0e27\u0e01\u0e40\u0e14\u0e34\u0e19\u0e17\u0e32\u0e07\",\n    lbCheckCode:\"\u0e01\u0e23\u0e2d\u0e01\u0e23\u0e2b\u0e31\u0e2a\u0e0a\u0e31\u0e48\u0e27\u0e04\u0e23\u0e32\u0e27\u0e17\u0e35\u0e48\u0e44\u0e14\u0e49\u0e23\u0e31\u0e1a\u0e2b\u0e25\u0e31\u0e07\u0e2a\u0e21\u0e31\u0e04\u0e23\",\n    lbCheckPhone:\"\u0e40\u0e25\u0e02\u0e17\u0e49\u0e32\u0e22\u0e42\u0e17\u0e23\u0e28\u0e31\u0e1e\u0e17\u0e4c 4 \u0e2b\u0e25\u0e31\u0e01\u0e17\u0e35\u0e48\u0e43\u0e0a\u0e49\u0e2a\u0e21\u0e31\u0e04\u0e23\",\n    phCheckCode:\"0001\", phCheckPhone:\"1234\",\n    paymentNoteText:\"\u0e15\u0e34\u0e14\u0e15\u0e48\u0e2d\u0e2a\u0e2d\u0e1a\u0e16\u0e32\u0e21\", lineBtnText:\"\u0e15\u0e34\u0e14\u0e15\u0e48\u0e2d LINE Official Account\",\n    btnPhoto:\"\ud83d\udcf7 \u0e40\u0e25\u0e37\u0e2d\u0e01\u0e23\u0e39\u0e1b\u0e20\u0e32\u0e1e\", btnPhotoCamera:\"\ud83d\udcf8 \u0e16\u0e48\u0e32\u0e22\u0e20\u0e32\u0e1e\", photoPlaceholderText:\"\u0e04\u0e25\u0e34\u0e01\u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e2d\u0e31\u0e1b\u0e42\u0e2b\u0e25\u0e14\",\n    docRequired:\"\u0e08\u0e33\u0e40\u0e1b\u0e47\u0e19\", docRemove:\"\u0e25\u0e1a\u0e44\u0e1f\u0e25\u0e4c\",\n    photoHint:\"\u2022 \u0e23\u0e39\u0e1b\u0e2b\u0e19\u0e49\u0e32\u0e15\u0e23\u0e07 \u0e02\u0e19\u0e32\u0e14 1 \u0e19\u0e34\u0e49\u0e27 \u0e2b\u0e23\u0e37\u0e2d 3x4 \u0e0b\u0e21.<br>\u2022 \u0e44\u0e1f\u0e25\u0e4c JPG, PNG \u0e02\u0e19\u0e32\u0e14\u0e44\u0e21\u0e48\u0e40\u0e01\u0e34\u0e19 10 MB<br>\u2022 \u0e41\u0e15\u0e48\u0e07\u0e01\u0e32\u0e22\u0e2a\u0e38\u0e20\u0e32\u0e1e \/ \u0e04\u0e23\u0e2d\u0e07\u0e08\u0e35\u0e27\u0e23\u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a\u0e1e\u0e23\u0e30\u0e2a\u0e07\u0e06\u0e4c\",\n    consentText:\"\u0e02\u0e49\u0e32\u0e1e\u0e40\u0e08\u0e49\u0e32\u0e22\u0e34\u0e19\u0e22\u0e2d\u0e21\u0e43\u0e2b\u0e49\u0e2d\u0e20\u0e34\u0e18\u0e23\u0e23\u0e21\u0e42\u0e0a\u0e15\u0e34\u0e01\u0e30\u0e27\u0e34\u0e17\u0e22\u0e32\u0e25\u0e31\u0e22 \u0e21\u0e2b\u0e32\u0e27\u0e34\u0e17\u0e22\u0e32\u0e25\u0e31\u0e22\u0e21\u0e2b\u0e32\u0e08\u0e38\u0e2c\u0e32\u0e25\u0e07\u0e01\u0e23\u0e13\u0e23\u0e32\u0e0a\u0e27\u0e34\u0e17\u0e22\u0e32\u0e25\u0e31\u0e22 \u0e40\u0e01\u0e47\u0e1a\u0e23\u0e27\u0e1a\u0e23\u0e27\u0e21\u0e41\u0e25\u0e30\u0e43\u0e0a\u0e49\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e2a\u0e48\u0e27\u0e19\u0e1a\u0e38\u0e04\u0e04\u0e25\u0e17\u0e35\u0e48\u0e43\u0e2b\u0e49\u0e44\u0e27\u0e49\u0e43\u0e19\u0e41\u0e1a\u0e1a\u0e1f\u0e2d\u0e23\u0e4c\u0e21\u0e19\u0e35\u0e49 \u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e27\u0e31\u0e15\u0e16\u0e38\u0e1b\u0e23\u0e30\u0e2a\u0e07\u0e04\u0e4c\u0e43\u0e19\u0e01\u0e32\u0e23\u0e2a\u0e21\u0e31\u0e04\u0e23\u0e40\u0e23\u0e35\u0e22\u0e19 \u0e01\u0e32\u0e23\u0e15\u0e34\u0e14\u0e15\u0e48\u0e2d\u0e2a\u0e37\u0e48\u0e2d\u0e2a\u0e32\u0e23 \u0e41\u0e25\u0e30\u0e01\u0e32\u0e23\u0e08\u0e31\u0e14\u0e01\u0e32\u0e23\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e19\u0e31\u0e01\u0e28\u0e36\u0e01\u0e29\u0e32 \u0e15\u0e32\u0e21\u0e1e\u0e23\u0e30\u0e23\u0e32\u0e0a\u0e1a\u0e31\u0e0d\u0e0d\u0e31\u0e15\u0e34\u0e04\u0e38\u0e49\u0e21\u0e04\u0e23\u0e2d\u0e07\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e2a\u0e48\u0e27\u0e19\u0e1a\u0e38\u0e04\u0e04\u0e25 \u0e1e.\u0e28. \u0e52\u0e55\u0e56\u0e52\",\n    consentLabel:'\u0e02\u0e49\u0e32\u0e1e\u0e40\u0e08\u0e49\u0e32\u0e2d\u0e48\u0e32\u0e19\u0e41\u0e25\u0e30\u0e22\u0e34\u0e19\u0e22\u0e2d\u0e21\u0e15\u0e32\u0e21\u0e40\u0e07\u0e37\u0e48\u0e2d\u0e19\u0e44\u0e02\u0e02\u0e49\u0e32\u0e07\u0e15\u0e49\u0e19 <span style=\"color:var(--mcru)\">*<\/span>',\n    submitBtn:\"\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e01\u0e48\u0e2d\u0e19\u0e22\u0e37\u0e19\u0e22\u0e31\u0e19\",\n    formNote:'* \u0e1a\u0e31\u0e07\u0e04\u0e31\u0e1a\u0e01\u0e23\u0e2d\u0e01 &nbsp;|&nbsp; \u0e2b\u0e25\u0e31\u0e07\u0e2a\u0e21\u0e31\u0e04\u0e23\u0e2a\u0e33\u0e40\u0e23\u0e47\u0e08\u0e23\u0e30\u0e1a\u0e1a\u0e08\u0e30\u0e41\u0e2a\u0e14\u0e07 <strong>\u0e23\u0e2b\u0e31\u0e2a\u0e0a\u0e31\u0e48\u0e27\u0e04\u0e23\u0e32\u0e27<\/strong> \u0e42\u0e1b\u0e23\u0e14\u0e1a\u0e31\u0e19\u0e17\u0e36\u0e01\u0e44\u0e27\u0e49',\n    rvTitle:\"\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e01\u0e48\u0e2d\u0e19\u0e22\u0e37\u0e19\u0e22\u0e31\u0e19\", rvSubtitle:\"\u0e01\u0e23\u0e38\u0e13\u0e32\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e43\u0e2b\u0e49\u0e16\u0e39\u0e01\u0e15\u0e49\u0e2d\u0e07\u0e01\u0e48\u0e2d\u0e19\u0e01\u0e14\u0e22\u0e37\u0e19\u0e22\u0e31\u0e19\",\n    rvBack:\"\u0e41\u0e01\u0e49\u0e44\u0e02\", rvConfirm:\"\u0e22\u0e37\u0e19\u0e22\u0e31\u0e19\u0e01\u0e32\u0e23\u0e2a\u0e21\u0e31\u0e04\u0e23\",\n    checkBtnText:\"\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\",\n    phFirstName:\"\u0e0a\u0e37\u0e48\u0e2d \/ \u0e09\u0e32\u0e22\u0e32\", phLastName:\"\u0e19\u0e32\u0e21\u0e2a\u0e01\u0e38\u0e25\", phTemple:\"\u0e0a\u0e37\u0e48\u0e2d\u0e27\u0e31\u0e14 \/ \u0e2a\u0e33\u0e19\u0e31\u0e01\",\n    phAddress:\"\u0e1a\u0e49\u0e32\u0e19\u0e40\u0e25\u0e02\u0e17\u0e35\u0e48\", phSoi:\"\u0e0b\u0e2d\u0e22 \/ \u0e2b\u0e21\u0e39\u0e48\u0e1a\u0e49\u0e32\u0e19\", phProvince:\"\u0e08\u0e31\u0e07\u0e2b\u0e27\u0e31\u0e14\", phProvinceSearch:\"\u0e1e\u0e34\u0e21\u0e1e\u0e4c\u0e0a\u0e37\u0e48\u0e2d\u0e08\u0e31\u0e07\u0e2b\u0e27\u0e31\u0e14 \u0e40\u0e0a\u0e48\u0e19 \u0e40\u0e0a\u0e35\u0e22\u0e07\u0e43\u0e2b\u0e21\u0e48\", provNoMatch:\"\u0e44\u0e21\u0e48\u0e1e\u0e1a\u0e08\u0e31\u0e07\u0e2b\u0e27\u0e31\u0e14\u0e17\u0e35\u0e48\u0e15\u0e23\u0e07\u0e01\u0e31\u0e1a\u0e17\u0e35\u0e48\u0e1e\u0e34\u0e21\u0e1e\u0e4c\", phDistrict:\"\u0e2d\u0e33\u0e40\u0e20\u0e2d\/\u0e40\u0e02\u0e15\", phSubdistrict:\"\u0e15\u0e33\u0e1a\u0e25\/\u0e41\u0e02\u0e27\u0e07\", phPostal:\"\u0e40\u0e15\u0e34\u0e21\u0e2d\u0e31\u0e15\u0e42\u0e19\u0e21\u0e31\u0e15\u0e34\",\n    bdDay:\"\u0e27\u0e31\u0e19\", bdMonth:\"\u0e40\u0e14\u0e37\u0e2d\u0e19\", phBirthYear:\"\u0e1b\u0e35 2510\",\n    selProvince:\"\u2014 \u0e40\u0e25\u0e37\u0e2d\u0e01\u0e08\u0e31\u0e07\u0e2b\u0e27\u0e31\u0e14 \u2014\", selDistrict:\"\u2014 \u0e40\u0e25\u0e37\u0e2d\u0e01\u0e2d\u0e33\u0e40\u0e20\u0e2d\/\u0e40\u0e02\u0e15 \u2014\",\n    selDistrictWait:\"\u2014 \u0e40\u0e25\u0e37\u0e2d\u0e01\u0e08\u0e31\u0e07\u0e2b\u0e27\u0e31\u0e14\u0e01\u0e48\u0e2d\u0e19 \u2014\", selSubdistrict:\"\u2014 \u0e40\u0e25\u0e37\u0e2d\u0e01\u0e15\u0e33\u0e1a\u0e25\/\u0e41\u0e02\u0e27\u0e07 \u2014\",\n    selSubWait:\"\u2014 \u0e40\u0e25\u0e37\u0e2d\u0e01\u0e2d\u0e33\u0e40\u0e20\u0e2d\u0e01\u0e48\u0e2d\u0e19 \u2014\", selService:\"\u2014 \u0e40\u0e25\u0e37\u0e2d\u0e01\u0e2b\u0e19\u0e48\u0e27\u0e22\u0e1a\u0e23\u0e34\u0e01\u0e32\u0e23 \u2014\", selServiceNone:\"\u2014 \u0e44\u0e21\u0e48\u0e1e\u0e1a\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e2b\u0e19\u0e48\u0e27\u0e22\u0e1a\u0e23\u0e34\u0e01\u0e32\u0e23 \u2014\",\n    photoWrongType:\"\u0e0a\u0e19\u0e34\u0e14\u0e44\u0e1f\u0e25\u0e4c\u0e44\u0e21\u0e48\u0e16\u0e39\u0e01\u0e15\u0e49\u0e2d\u0e07\", photoWrongTypeMsg:\"\u0e01\u0e23\u0e38\u0e13\u0e32\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e23\u0e39\u0e1b JPG \u0e2b\u0e23\u0e37\u0e2d PNG \u0e40\u0e17\u0e48\u0e32\u0e19\u0e31\u0e49\u0e19\",\n    photoTooBig:\"\u0e44\u0e1f\u0e25\u0e4c\u0e43\u0e2b\u0e0d\u0e48\u0e40\u0e01\u0e34\u0e19\u0e44\u0e1b\", photoTooBigMsg:\"\u0e01\u0e23\u0e38\u0e13\u0e32\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e23\u0e39\u0e1b\u0e02\u0e19\u0e32\u0e14\u0e44\u0e21\u0e48\u0e40\u0e01\u0e34\u0e19 10 MB\",\n    photoReadFail:\"\u0e40\u0e1b\u0e34\u0e14\u0e44\u0e1f\u0e25\u0e4c\u0e23\u0e39\u0e1b\u0e44\u0e21\u0e48\u0e2a\u0e33\u0e40\u0e23\u0e47\u0e08\", photoReadFailMsg:\"\u0e44\u0e1f\u0e25\u0e4c\u0e2d\u0e32\u0e08\u0e40\u0e2a\u0e35\u0e22\u0e2b\u0e32\u0e22\u0e2b\u0e23\u0e37\u0e2d\u0e44\u0e21\u0e48\u0e23\u0e2d\u0e07\u0e23\u0e31\u0e1a \u0e01\u0e23\u0e38\u0e13\u0e32\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e23\u0e39\u0e1b\u0e43\u0e2b\u0e21\u0e48\u0e2d\u0e35\u0e01\u0e04\u0e23\u0e31\u0e49\u0e07\",\n    copyFail:\"\u0e04\u0e31\u0e14\u0e25\u0e2d\u0e01\u0e44\u0e21\u0e48\u0e2a\u0e33\u0e40\u0e23\u0e47\u0e08 \u0e01\u0e23\u0e38\u0e13\u0e32\u0e01\u0e14\u0e04\u0e49\u0e32\u0e07\u0e17\u0e35\u0e48\u0e23\u0e2b\u0e31\u0e2a\u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e04\u0e31\u0e14\u0e25\u0e2d\u0e01\u0e40\u0e2d\u0e07\",\n    uploading1:\"\u0e01\u0e33\u0e25\u0e31\u0e07\u0e2d\u0e31\u0e1b\u0e42\u0e2b\u0e25\u0e14\u0e23\u0e39\u0e1b\u0e20\u0e32\u0e1e\u2026\", uploading1sub:\"\u0e01\u0e23\u0e38\u0e13\u0e32\u0e23\u0e2d\u0e2a\u0e31\u0e01\u0e04\u0e23\u0e39\u0e48 (\u0e02\u0e31\u0e49\u0e19\u0e15\u0e2d\u0e19 1\/2)\",\n    uploading2:\"\u0e01\u0e33\u0e25\u0e31\u0e07\u0e1a\u0e31\u0e19\u0e17\u0e36\u0e01\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u2026\", uploading2sub:\"\u0e01\u0e23\u0e38\u0e13\u0e32\u0e23\u0e2d\u0e2a\u0e31\u0e01\u0e04\u0e23\u0e39\u0e48 (\u0e02\u0e31\u0e49\u0e19\u0e15\u0e2d\u0e19 2\/2)\",\n    uploadFail:\"\u0e2d\u0e31\u0e1b\u0e42\u0e2b\u0e25\u0e14\u0e23\u0e39\u0e1b\u0e44\u0e21\u0e48\u0e2a\u0e33\u0e40\u0e23\u0e47\u0e08\", timeout:\"\u0e2b\u0e21\u0e14\u0e40\u0e27\u0e25\u0e32\",\n    timeoutMsg:\"\u0e44\u0e21\u0e48\u0e44\u0e14\u0e49\u0e23\u0e31\u0e1a\u0e01\u0e32\u0e23\u0e15\u0e2d\u0e1a\u0e01\u0e25\u0e31\u0e1a\u0e08\u0e32\u0e01\u0e23\u0e30\u0e1a\u0e1a \u0e01\u0e23\u0e38\u0e13\u0e32\u0e25\u0e2d\u0e07\u0e43\u0e2b\u0e21\u0e48\",\n    connErr:\"\u0e40\u0e0a\u0e37\u0e48\u0e2d\u0e21\u0e15\u0e48\u0e2d\u0e44\u0e21\u0e48\u0e44\u0e14\u0e49\", connErrMsg:\"\u0e01\u0e23\u0e38\u0e13\u0e32\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e2d\u0e34\u0e19\u0e40\u0e17\u0e2d\u0e23\u0e4c\u0e40\u0e19\u0e47\u0e15\u0e41\u0e25\u0e49\u0e27\u0e25\u0e2d\u0e07\u0e43\u0e2b\u0e21\u0e48\",\n    errTitle:\"\u0e40\u0e01\u0e34\u0e14\u0e02\u0e49\u0e2d\u0e1c\u0e34\u0e14\u0e1e\u0e25\u0e32\u0e14\", retry:\"\u0e01\u0e23\u0e38\u0e13\u0e32\u0e25\u0e2d\u0e07\u0e43\u0e2b\u0e21\u0e48\",\n    regBusy:\"\u0e23\u0e30\u0e1a\u0e1a\u0e01\u0e33\u0e25\u0e31\u0e07\u0e1a\u0e31\u0e19\u0e17\u0e36\u0e01\u0e02\u0e2d\u0e07\u0e1c\u0e39\u0e49\u0e2a\u0e21\u0e31\u0e04\u0e23\u0e17\u0e48\u0e32\u0e19\u0e2d\u0e37\u0e48\u0e19\u2026\",\n    regBusySub:\"\u0e01\u0e33\u0e25\u0e31\u0e07\u0e2a\u0e48\u0e07\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e02\u0e2d\u0e07\u0e17\u0e48\u0e32\u0e19\u0e2d\u0e35\u0e01\u0e04\u0e23\u0e31\u0e49\u0e07\u0e42\u0e14\u0e22\u0e2d\u0e31\u0e15\u0e42\u0e19\u0e21\u0e31\u0e15\u0e34<br>\u0e01\u0e23\u0e38\u0e13\u0e32\u0e2d\u0e22\u0e48\u0e32\u0e1b\u0e34\u0e14\u0e2b\u0e19\u0e49\u0e32\u0e19\u0e35\u0e49\",\n    successTitle:\"\u0e2a\u0e21\u0e31\u0e04\u0e23\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2a\u0e33\u0e40\u0e23\u0e47\u0e08! \ud83c\udf89\", successDate:\"\u0e27\u0e31\u0e19\u0e40\u0e27\u0e25\u0e32\u0e17\u0e35\u0e48\u0e2a\u0e21\u0e31\u0e04\u0e23\", successSeq:\"\u0e40\u0e25\u0e02\u0e17\u0e35\u0e48\",\n    successCodeLabel:\"\u0e23\u0e2b\u0e31\u0e2a\u0e0a\u0e31\u0e48\u0e27\u0e04\u0e23\u0e32\u0e27\u0e02\u0e2d\u0e07\u0e17\u0e48\u0e32\u0e19\u0e04\u0e37\u0e2d\",\n    successCodeNote:\"\ud83d\udccc \u0e01\u0e23\u0e38\u0e13\u0e32\u0e08\u0e14\u0e23\u0e2b\u0e31\u0e2a\u0e19\u0e35\u0e49\u0e44\u0e27\u0e49 \u0e01\u0e32\u0e23\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e16\u0e32\u0e19\u0e30\u0e2d\u0e2d\u0e19\u0e44\u0e25\u0e19\u0e4c\u0e15\u0e49\u0e2d\u0e07\u0e43\u0e0a\u0e49\u0e40\u0e25\u0e02\u0e17\u0e49\u0e32\u0e22\u0e42\u0e17\u0e23\u0e28\u0e31\u0e1e\u0e17\u0e4c 4 \u0e2b\u0e25\u0e31\u0e01\u0e23\u0e48\u0e27\u0e21\u0e14\u0e49\u0e27\u0e22\",\n    successConfirm:\"\u0e23\u0e31\u0e1a\u0e17\u0e23\u0e32\u0e1a \u2713\",\n    validTitle:\"\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e44\u0e21\u0e48\u0e04\u0e23\u0e1a\u0e16\u0e49\u0e27\u0e19\",\n    vPrefix:\"\u0e01\u0e23\u0e38\u0e13\u0e32\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e04\u0e33\u0e19\u0e33\u0e2b\u0e19\u0e49\u0e32\", vFirstName:\"\u0e01\u0e23\u0e38\u0e13\u0e32\u0e01\u0e23\u0e2d\u0e01\u0e0a\u0e37\u0e48\u0e2d\/\u0e09\u0e32\u0e22\u0e32\",\n    vBirth:\"\u0e01\u0e23\u0e38\u0e13\u0e32\u0e01\u0e23\u0e2d\u0e01\u0e27\u0e31\u0e19\u0e40\u0e14\u0e37\u0e2d\u0e19\u0e1b\u0e35\u0e40\u0e01\u0e34\u0e14\u0e43\u0e2b\u0e49\u0e04\u0e23\u0e1a (\u0e1b\u0e35 \u0e1e.\u0e28. 4 \u0e2b\u0e25\u0e31\u0e01)\",\n    vBirthInvalid:\"\u0e27\u0e31\u0e19\u0e40\u0e14\u0e37\u0e2d\u0e19\u0e1b\u0e35\u0e40\u0e01\u0e34\u0e14\u0e44\u0e21\u0e48\u0e16\u0e39\u0e01\u0e15\u0e49\u0e2d\u0e07 \u0e01\u0e23\u0e38\u0e13\u0e32\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e2d\u0e35\u0e01\u0e04\u0e23\u0e31\u0e49\u0e07\",\n    vPhone:\"\u0e01\u0e23\u0e38\u0e13\u0e32\u0e01\u0e23\u0e2d\u0e01\u0e40\u0e1a\u0e2d\u0e23\u0e4c\u0e42\u0e17\u0e23 9\u201310 \u0e2b\u0e25\u0e31\u0e01\",\n    vAddress:\"\u0e01\u0e23\u0e38\u0e13\u0e32\u0e01\u0e23\u0e2d\u0e01\u0e40\u0e25\u0e02\u0e17\u0e35\u0e48\u0e2d\u0e22\u0e39\u0e48\", vProvince:\"\u0e01\u0e23\u0e38\u0e13\u0e32\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e08\u0e31\u0e07\u0e2b\u0e27\u0e31\u0e14\",\n    vDistrict:\"\u0e01\u0e23\u0e38\u0e13\u0e32\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e2d\u0e33\u0e40\u0e20\u0e2d\/\u0e40\u0e02\u0e15\", vSubdistrict:\"\u0e01\u0e23\u0e38\u0e13\u0e32\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e15\u0e33\u0e1a\u0e25\/\u0e41\u0e02\u0e27\u0e07\",\n    vPostal:\"\u0e01\u0e23\u0e38\u0e13\u0e32\u0e01\u0e23\u0e2d\u0e01\u0e23\u0e2b\u0e31\u0e2a\u0e44\u0e1b\u0e23\u0e29\u0e13\u0e35\u0e22\u0e4c 5 \u0e2b\u0e25\u0e31\u0e01\", vService:\"\u0e01\u0e23\u0e38\u0e13\u0e32\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\/\u0e2b\u0e19\u0e48\u0e27\u0e22\u0e1a\u0e23\u0e34\u0e01\u0e32\u0e23\",\n    vConsent:\"\u0e01\u0e23\u0e38\u0e13\u0e32\u0e22\u0e34\u0e19\u0e22\u0e2d\u0e21\u0e15\u0e32\u0e21\u0e40\u0e07\u0e37\u0e48\u0e2d\u0e19\u0e44\u0e02\", vPhoto:\"\u0e01\u0e23\u0e38\u0e13\u0e32\u0e2d\u0e31\u0e1b\u0e42\u0e2b\u0e25\u0e14\u0e23\u0e39\u0e1b\u0e16\u0e48\u0e32\u0e22\",\n    vPassport:\"\u0e01\u0e23\u0e38\u0e13\u0e32\u0e2d\u0e31\u0e1b\u0e42\u0e2b\u0e25\u0e14\u0e1e\u0e32\u0e2a\u0e1b\u0e2d\u0e23\u0e4c\u0e15\u0e2b\u0e19\u0e49\u0e32\u0e41\u0e23\u0e01\", vVisaExpiry:\"\u0e01\u0e23\u0e38\u0e13\u0e32\u0e2d\u0e31\u0e1b\u0e42\u0e2b\u0e25\u0e14\u0e2b\u0e19\u0e49\u0e32\u0e17\u0e35\u0e48\u0e21\u0e35\u0e27\u0e31\u0e19\u0e2b\u0e21\u0e14\u0e2d\u0e32\u0e22\u0e38\u0e27\u0e35\u0e0b\u0e48\u0e32\", vTM30:\"\u0e01\u0e23\u0e38\u0e13\u0e32\u0e2d\u0e31\u0e1b\u0e42\u0e2b\u0e25\u0e14\u0e40\u0e2d\u0e01\u0e2a\u0e32\u0e23 TM.30\",\n    monkFirstName:\"\u0e0a\u0e37\u0e48\u0e2d \/ \u0e09\u0e32\u0e22\u0e32\",\n    optOpt:\"\u0e44\u0e21\u0e48\u0e1a\u0e31\u0e07\u0e04\u0e31\u0e1a\", optLayEdu:\"\u0e17\u0e32\u0e07\u0e42\u0e25\u0e01 \u2014 \u0e44\u0e21\u0e48\u0e1a\u0e31\u0e07\u0e04\u0e31\u0e1a\"\n  },\n  en: {\n    heroTitle:\"Abhidhamma Study Registration Form\",\n    heroSub:\"Please fill in all required fields \u2014 a temporary code will be issued upon completion\",\n    secPersonal:\"Personal Information\", secAddress:\"Current Address\",\n    secLocation:\"Study Center Near You\",\n    secPhoto:\"Photos and Required Documents\", secCheck:\"Check Registration Status\",\n    lbPrefix:\"Title \/ Prefix\", firstNameLabel:\"First Name\", lastNameLabel:\"Last Name\",\n    lbTemple:\"Temple \/ Monastery\", lbBirthdate:\"Date of Birth\", lbPhone:\"Phone Number\",\n    lbEducation:\"Secular Education\", lbPali:\"Pali Studies\", lbDhamma:\"Dhamma Studies\",\n    lbAddress:\"House No.\", lbSoi:\"Soi \/ Village\", lbProvince:\"Province\",\n    lbDistrict:\"District\", lbSubdistrict:\"Subdistrict\", lbPostal:\"Postal Code\",\n    lbServiceLocation:\"Select the most convenient study center\",\n    lbCheckCode:\"Enter the temporary code received after registration\",\n    lbCheckPhone:\"Last 4 digits of the phone number used to register\",\n    phCheckCode:\"0001\", phCheckPhone:\"1234\",\n    paymentNoteText:\"Contact for more information\", lineBtnText:\"Contact via LINE Official Account\",\n    btnPhoto:\"\ud83d\udcf7 Choose Photo\", btnPhotoCamera:\"\ud83d\udcf8 Take photo\", photoPlaceholderText:\"Click to upload\",\n    docRequired:\"Required\", docRemove:\"Remove\",\n    photoHint:\"\u2022 Front-facing portrait, 1 inch or 3\u00d74 cm<br>\u2022 JPG or PNG, max 10 MB<br>\u2022 Smart attire \/ monastic robe for clergy\",\n    consentText:\"I consent to Abhidhamma Jotikavidyalaya, MCU collecting and using the personal data provided in this form for the purposes of study registration, communication, and student record management, in accordance with the Personal Data Protection Act B.E. 2562 (2019).\",\n    consentLabel:'I have read and agree to the above terms <span style=\"color:var(--mcru)\">*<\/span>',\n    submitBtn:\"Review Before Submitting\",\n    formNote:'* Required fields &nbsp;|&nbsp; A <strong>temporary registration code<\/strong> will be shown after successful submission',\n    rvTitle:\"Review Your Information\", rvSubtitle:\"Please verify all details before confirming\",\n    rvBack:\"Edit\", rvConfirm:\"Confirm Registration\",\n    checkBtnText:\"Search\",\n    phFirstName:\"First name \/ Religious name\", phLastName:\"Last name\",\n    phTemple:\"Temple \/ Monastery name\", phAddress:\"House number\",\n    phSoi:\"Soi \/ Village\", phProvince:\"Province\", phProvinceSearch:\"Type a province, e.g. Chiang Mai\", provNoMatch:\"No province matches what you typed\", phDistrict:\"District\", phSubdistrict:\"Subdistrict\", phPostal:\"Auto-filled\",\n    bdDay:\"Day\", bdMonth:\"Month\", phBirthYear:\"Year 1967\",\n    selProvince:\"\u2014 Select province \u2014\", selDistrict:\"\u2014 Select district \u2014\",\n    selDistrictWait:\"\u2014 Select province first \u2014\", selSubdistrict:\"\u2014 Select subdistrict \u2014\",\n    selSubWait:\"\u2014 Select district first \u2014\", selService:\"\u2014 Select study center \u2014\", selServiceNone:\"\u2014 No study centers found \u2014\",\n    photoWrongType:\"Invalid file type\", photoWrongTypeMsg:\"Please select a JPG or PNG image\",\n    photoTooBig:\"File too large\", photoTooBigMsg:\"Please select an image under 10 MB\",\n    photoReadFail:\"Could not open the image\", photoReadFailMsg:\"The file may be corrupted or unsupported. Please choose another image.\",\n    copyFail:\"Copy failed \u2014 please select the code and copy it manually\",\n    uploading1:\"Uploading photo\u2026\", uploading1sub:\"Please wait (step 1\/2)\",\n    uploading2:\"Saving registration\u2026\", uploading2sub:\"Please wait (step 2\/2)\",\n    uploadFail:\"Photo upload failed\", timeout:\"Request timed out\",\n    timeoutMsg:\"No response from server. Please try again.\",\n    connErr:\"Connection error\", connErrMsg:\"Please check your internet connection and try again.\",\n    errTitle:\"An error occurred\", retry:\"Please try again\",\n    regBusy:\"Server is saving other submissions\u2026\",\n    regBusySub:\"Automatically resending your registration.<br>Please keep this page open.\",\n    successTitle:\"Registration Successful! \ud83c\udf89\", successDate:\"Date & Time\", successSeq:\"No.\",\n    successCodeLabel:\"Your temporary code is\",\n    successCodeNote:\"\ud83d\udccc Keep this code. Online status checks also require the last 4 digits of your phone number.\",\n    successConfirm:\"Acknowledged \u2713\",\n    validTitle:\"Incomplete information\",\n    vPrefix:\"Please select a title\/prefix\", vFirstName:\"Please enter your first name\",\n    vBirth:\"Please complete your date of birth\",\n    vBirthInvalid:\"That date of birth is not valid. Please check again.\",\n    vPhone:\"Please enter a 9\u201310 digit phone number\",\n    vAddress:\"Please enter your house number\", vProvince:\"Please select a province\",\n    vDistrict:\"Please select a district\", vSubdistrict:\"Please select a subdistrict\",\n    vPostal:\"Please enter a valid 5-digit postal code\", vService:\"Please select a study center\",\n    vConsent:\"Please agree to the terms\", vPhoto:\"Please upload a front-facing photo\",\n    vPassport:\"Please upload the passport first page\", vVisaExpiry:\"Please upload the visa expiry page\", vTM30:\"Please upload the TM.30 document\",\n    monkFirstName:\"First name \/ Religious name\",\n    optOpt:\"optional\", optLayEdu:\"secular \u2014 optional\"\n  }\n};\nfunction T(key){ return (I18N[LANG] && I18N[LANG][key]) || (I18N[\"th\"][key]) || key; }\nfunction setLanguage(lang){\n  LANG = lang;\n  document.getElementById(\"btnTH\").className = lang===\"th\" ? \"active\" : \"inactive\";\n  document.getElementById(\"btnEN\").className = lang===\"en\" ? \"active\" : \"inactive\";\n  document.getElementById(\"btnTH\").setAttribute(\"aria-pressed\",String(lang===\"th\"));\n  document.getElementById(\"btnEN\").setAttribute(\"aria-pressed\",String(lang===\"en\"));\n  var navText=lang===\"en\"\n    ? {reg:\"Apply\",status:\"Check status\",personal:\"Personal\",address:\"Address\",location:\"Study center\",photo:\"Photo & confirm\",remove:\"Remove photo\"}\n    : {reg:\"\u0e2a\u0e21\u0e31\u0e04\u0e23\u0e40\u0e23\u0e35\u0e22\u0e19\",status:\"\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e2a\u0e16\u0e32\u0e19\u0e30\",personal:\"\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e2a\u0e48\u0e27\u0e19\u0e15\u0e31\u0e27\",address:\"\u0e17\u0e35\u0e48\u0e2d\u0e22\u0e39\u0e48\",location:\"\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\/\u0e2b\u0e19\u0e48\u0e27\u0e22\u0e1a\u0e23\u0e34\u0e01\u0e32\u0e23\",photo:\"\u0e23\u0e39\u0e1b\u0e41\u0e25\u0e30\u0e22\u0e37\u0e19\u0e22\u0e31\u0e19\",remove:\"\u0e25\u0e1a\u0e23\u0e39\u0e1b\"};\n  document.getElementById(\"modeRegisterText\").textContent=navText.reg;\n  document.getElementById(\"modeStatusText\").textContent=navText.status;\n  document.getElementById(\"stepPersonal\").textContent=navText.personal;\n  document.getElementById(\"stepAddress\").textContent=navText.address;\n  document.getElementById(\"stepLocation\").textContent=navText.location;\n  document.getElementById(\"stepPhoto\").textContent=navText.photo;\n  document.getElementById(\"btnPhotoRemoveText\").textContent=navText.remove;\n  function setLabel(id, key, req, optText){\n    var el = document.getElementById(id); if(!el) return;\n    var txt = T(key);\n    if(req)     txt += ' <span class=\"req\">*<\/span>';\n    if(optText) txt += ' <span class=\"opt\">('+optText+')<\/span>';\n    el.innerHTML = txt;\n  }\n  function setText(id, key){ var el=document.getElementById(id); if(!el) return; el.textContent=T(key); }\n  function setHTML(id, key){ var el=document.getElementById(id); if(!el) return; el.innerHTML=T(key); }\n  setText(\"heroTitle\",\"heroTitle\"); setText(\"heroSub\",\"heroSub\");\n  setText(\"secPersonal\",\"secPersonal\"); setText(\"secAddress\",\"secAddress\");\n  setLabel(\"secLocation\",\"secLocation\",true);\n  setLabel(\"secPhoto\",\"secPhoto\",true);\n  setText(\"secCheck\",\"secCheck\");\n  setLabel(\"lbPrefix\",\"lbPrefix\",true);\n  setLabel(\"firstNameLabel\",\"firstNameLabel\",true);\n  setText(\"lastNameLabel\",\"lastNameLabel\");\n  setText(\"lbTemple\",\"lbTemple\");\n  setLabel(\"lbBirthdate\",\"lbBirthdate\",true);\n  setLabel(\"lbPhone\",\"lbPhone\",true);\n  setLabel(\"lbEducation\",\"lbEducation\",false,T(\"optLayEdu\"));\n  setLabel(\"lbPali\",\"lbPali\",false,T(\"optOpt\"));\n  setLabel(\"lbDhamma\",\"lbDhamma\",false,T(\"optOpt\"));\n  setLabel(\"lbAddress\",\"lbAddress\",true);\n  setLabel(\"lbSoi\",\"lbSoi\",false,lang===\"th\"?\"\u0e16\u0e49\u0e32\u0e21\u0e35\":\"if any\");\n  setLabel(\"lbProvince\",\"lbProvince\",true);\n  setLabel(\"lbDistrict\",\"lbDistrict\",true);\n  setLabel(\"lbSubdistrict\",\"lbSubdistrict\",true);\n  setLabel(\"lbPostal\",\"lbPostal\",true);\n  setLabel(\"lbServiceLocation\",\"lbServiceLocation\",true);\n  setLabel(\"lbCheckCode\",\"lbCheckCode\",true);\n  setLabel(\"lbCheckPhone\",\"lbCheckPhone\",true);\n  setText(\"paymentNoteText\",\"paymentNoteText\"); setText(\"lineBtnText\",\"lineBtnText\");\n  setText(\"btnPhoto\",\"btnPhoto\"); setText(\"btnPhotoCamera\",\"btnPhotoCamera\"); setHTML(\"photoHint\",\"photoHint\");\n  setText(\"photoPlaceholderText\",\"photoPlaceholderText\");\n  setHTML(\"consentText\",\"consentText\"); setHTML(\"consentLabel\",\"consentLabel\");\n  setHTML(\"formNote\",\"formNote\");\n  setText(\"checkBtnText\",\"checkBtnText\");\n  setText(\"rvTitle\",\"rvTitle\"); setText(\"rvSubtitle\",\"rvSubtitle\");\n  setText(\"rvBack\",\"rvBack\"); setText(\"rvConfirm\",\"rvConfirm\");\n  setHTML(\"submitBtnText\",\"submitBtn\");\n  \/\/ placeholder\n  function setPH(id, key){ var el=document.getElementById(id); if(!el) return; el.placeholder=T(key); }\n  setPH(\"firstName\",\"phFirstName\"); setPH(\"lastName\",\"phLastName\");\n  var templeEl=document.getElementById(\"temple\"); if(templeEl) templeEl.placeholder=T(\"phTemple\");\n  setPH(\"address\",\"phAddress\"); setPH(\"soi\",\"phSoi\"); setPH(\"province\",\"phProvince\"); setPH(\"district\",\"phDistrict\"); setPH(\"subdistrict\",\"phSubdistrict\"); setPH(\"postalCode\",\"phPostal\");\n  \/\/ \u0e0a\u0e48\u0e2d\u0e07\u0e1e\u0e34\u0e21\u0e1e\u0e4c\u0e08\u0e31\u0e07\u0e2b\u0e27\u0e31\u0e14: \u0e23\u0e30\u0e2b\u0e27\u0e48\u0e32\u0e07\u0e22\u0e31\u0e07\u0e42\u0e2b\u0e25\u0e14\u0e23\u0e32\u0e22\u0e0a\u0e37\u0e48\u0e2d\u0e44\u0e21\u0e48\u0e40\u0e2a\u0e23\u0e47\u0e08\u0e43\u0e2b\u0e49\u0e1a\u0e2d\u0e01\u0e2a\u0e16\u0e32\u0e19\u0e30 \u0e44\u0e21\u0e48\u0e43\u0e0a\u0e48\u0e02\u0e36\u0e49\u0e19\u0e04\u0e33\u0e43\u0e1a\u0e49\u0e43\u0e2b\u0e49\u0e1e\u0e34\u0e21\u0e1e\u0e4c\u0e17\u0e31\u0e49\u0e07\u0e17\u0e35\u0e48\u0e22\u0e31\u0e07\u0e1e\u0e34\u0e21\u0e1e\u0e4c\u0e44\u0e21\u0e48\u0e44\u0e14\u0e49\n  var provSearchEl=document.getElementById(\"provinceSearch\");\n  if(provSearchEl) provSearchEl.placeholder = thaiAddrData ? T(\"phProvinceSearch\") : (lang===\"en\" ? \"\u23f3 Loading\u2026\" : \"\u23f3 \u0e01\u0e33\u0e25\u0e31\u0e07\u0e42\u0e2b\u0e25\u0e14\u2026\");\n  setPH(\"checkCodeInput\",\"phCheckCode\");\n  setPH(\"checkPhoneInput\",\"phCheckPhone\");\n  \/\/ birthdate dropdowns\n  var dayEl=document.getElementById(\"birthDay\"), monEl=document.getElementById(\"birthMonth\"), yearEl=document.getElementById(\"birthYear\");\n  if(dayEl && monEl && yearEl){\n    var savedD=dayEl.value, savedM=monEl.value;\n    var dHtml='<option value=\"\">'+T(\"bdDay\")+'<\/option>';\n    for(var d=1;d<=31;d++) dHtml+='<option value=\"'+pad2(d)+'\">'+d+'<\/option>';\n    dayEl.innerHTML=dHtml; dayEl.value=savedD;\n    dayEl.setAttribute(\"aria-label\",lang===\"en\"?\"Day of birth\":\"\u0e27\u0e31\u0e19\u0e40\u0e01\u0e34\u0e14\");\n    monEl.setAttribute(\"aria-label\",lang===\"en\"?\"Month of birth\":\"\u0e40\u0e14\u0e37\u0e2d\u0e19\u0e40\u0e01\u0e34\u0e14\");\n    var MONTHS_EN=[\"January\",\"February\",\"March\",\"April\",\"May\",\"June\",\"July\",\"August\",\"September\",\"October\",\"November\",\"December\"];\n    var mNames=lang===\"en\"?MONTHS_EN:MONTHS_TH;\n    var mHtml='<option value=\"\">'+T(\"bdMonth\")+'<\/option>';\n    mNames.forEach(function(n,i){ mHtml+='<option value=\"'+pad2(i+1)+'\">'+n+'<\/option>'; });\n    monEl.innerHTML=mHtml; monEl.value=savedM;\n    \/\/ \u0e1b\u0e35\u0e40\u0e01\u0e34\u0e14\u0e40\u0e1b\u0e47\u0e19\u0e0a\u0e48\u0e2d\u0e07\u0e1e\u0e34\u0e21\u0e1e\u0e4c: \u0e2a\u0e25\u0e31\u0e1a\u0e01\u0e32\u0e23\u0e41\u0e2a\u0e14\u0e07\u0e1c\u0e25 \u0e1e.\u0e28. \u2194 \u0e04.\u0e28. \u0e15\u0e32\u0e21\u0e20\u0e32\u0e29\u0e32\n    \/\/ (\u0e04\u0e48\u0e32\u0e17\u0e35\u0e48\u0e40\u0e01\u0e47\u0e1a\u0e43\u0e19 #birthdate \u0e22\u0e31\u0e07\u0e40\u0e1b\u0e47\u0e19 \u0e1e.\u0e28. \u0e40\u0e2a\u0e21\u0e2d)\n    yearEl.placeholder=T(\"phBirthYear\");\n    yearEl.setAttribute(\"aria-label\",lang===\"en\"?\"Year of birth\":\"\u0e1b\u0e35\u0e40\u0e01\u0e34\u0e14\");\n    var typedY=yearEl.value.trim();\n    if(\/^\\d{4}$\/.test(typedY)){\n      var yv=parseInt(typedY,10);\n      if(lang===\"en\" && yv>2400)      yearEl.value=String(yv-543);\n      else if(lang!==\"en\" && yv<=2400) yearEl.value=String(yv+543);\n    }\n    syncBirthdate();\n  }\n  \/\/ \u0e15\u0e31\u0e27\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e41\u0e23\u0e01 (placeholder) \u0e15\u0e49\u0e2d\u0e07\u0e41\u0e1b\u0e25\u0e17\u0e38\u0e01\u0e04\u0e23\u0e31\u0e49\u0e07\u0e17\u0e35\u0e48\u0e2a\u0e25\u0e31\u0e1a\u0e20\u0e32\u0e29\u0e32\n  \/\/ \u0e40\u0e14\u0e34\u0e21\u0e40\u0e0a\u0e47\u0e04 options.length===1 \u0e17\u0e33\u0e43\u0e2b\u0e49\u0e1e\u0e2d\u0e42\u0e2b\u0e25\u0e14 77 \u0e08\u0e31\u0e07\u0e2b\u0e27\u0e31\u0e14\u0e40\u0e2a\u0e23\u0e47\u0e08\u0e41\u0e25\u0e49\u0e27\u0e44\u0e21\u0e48\u0e40\u0e04\u0e22\u0e16\u0e39\u0e01\u0e41\u0e1b\u0e25\u0e2d\u0e35\u0e01\u0e40\u0e25\u0e22\n  function setSelectPlaceholder(sel, text){\n    if(!sel || sel.tagName!==\"SELECT\" || !sel.options.length) return;\n    if(sel.options[0].value !== \"\") return;\n    sel.options[0].text = text;\n  }\n  var distSel=document.getElementById(\"district\"), subSel=document.getElementById(\"subdistrict\");\n  var provSel=document.getElementById(\"province\");\n  setSelectPlaceholder(provSel, thaiAddrData ? T(\"selProvince\") : (lang===\"en\" ? \"\u23f3 Loading\u2026\" : \"\u23f3 \u0e01\u0e33\u0e25\u0e31\u0e07\u0e42\u0e2b\u0e25\u0e14\u2026\"));\n  setSelectPlaceholder(distSel, T(distSel && distSel.disabled ? \"selDistrictWait\" : \"selDistrict\"));\n  setSelectPlaceholder(subSel,  T(subSel  && subSel.disabled  ? \"selSubWait\"      : \"selSubdistrict\"));\n  \/\/ \u0e1b\u0e35\u0e01\u0e32\u0e23\u0e28\u0e36\u0e01\u0e29\u0e32\n  var badge=document.getElementById(\"academicYearBadge\");\n  if(badge){\n    var yr=getBuddhistYear();\n    badge.textContent=lang===\"en\"?\"\u2726 Academic Year \"+(yr-543)+\" \u2726\":\"\u2726 \u0e1b\u0e35\u0e01\u0e32\u0e23\u0e28\u0e36\u0e01\u0e29\u0e32 \"+toThaiDigits(yr)+\" \u2726\";\n  }\n  document.documentElement.lang = lang===\"en\" ? \"en\" : \"th\";\n  \/\/ \u0e40\u0e2d\u0e01\u0e2a\u0e32\u0e23\u0e15\u0e48\u0e32\u0e07\u0e0a\u0e32\u0e15\u0e34\n  var fdCard=document.getElementById(\"foreignDocsCard\");\n  if(fdCard) fdCard.classList.toggle(\"hidden\",lang!==\"en\");\n  var uploadSummary=document.getElementById(\"uploadSummary\");\n  if(uploadSummary) uploadSummary.classList.toggle(\"hidden\",lang!==\"en\");\n  var fd={\n    en:{secForeignDocs:\"Photos and Required Documents\",\n        foreignDocsHint:\"Upload all four required images. JPG or PNG, maximum 10 MB per file.\",\n        lbPassport:\"Passport first page\",\n        lbVisaExpiry:\"Passport page showing visa expiry date\",\n        lbTM30:\"TM.30\",\n        passportHint:\"Upload the page containing your photo and personal details.\",\n        visaExpiryHint:\"Make sure the visa expiry date is clearly visible.\",\n        tm30Hint:\"Upload a clear and complete image of the TM.30 document.\",\n        btnPassport:\"\ud83d\udcf7 Choose \/ replace file\", btnVisaExpiry:\"\ud83d\udcf7 Choose \/ replace file\", btnTM30:\"\ud83d\udcf7 Choose \/ replace file\"},\n    th:{secForeignDocs:\"\u0e23\u0e39\u0e1b\u0e20\u0e32\u0e1e\u0e41\u0e25\u0e30\u0e40\u0e2d\u0e01\u0e2a\u0e32\u0e23\u0e1b\u0e23\u0e30\u0e01\u0e2d\u0e1a\",\n        foreignDocsHint:\"\u0e01\u0e23\u0e38\u0e13\u0e32\u0e2d\u0e31\u0e1b\u0e42\u0e2b\u0e25\u0e14\u0e44\u0e1f\u0e25\u0e4c JPG \u0e2b\u0e23\u0e37\u0e2d PNG \u0e02\u0e19\u0e32\u0e14\u0e44\u0e21\u0e48\u0e40\u0e01\u0e34\u0e19 10 MB \u0e15\u0e48\u0e2d\u0e44\u0e1f\u0e25\u0e4c\",\n        lbPassport:\"\u0e1e\u0e32\u0e2a\u0e1b\u0e2d\u0e23\u0e4c\u0e15\u0e2b\u0e19\u0e49\u0e32\u0e41\u0e23\u0e01\",\n        lbVisaExpiry:\"\u0e1e\u0e32\u0e2a\u0e1b\u0e2d\u0e23\u0e4c\u0e15\u0e2b\u0e19\u0e49\u0e32\u0e17\u0e35\u0e48\u0e21\u0e35\u0e27\u0e31\u0e19\u0e2b\u0e21\u0e14\u0e2d\u0e32\u0e22\u0e38\u0e27\u0e35\u0e0b\u0e48\u0e32\",\n        lbTM30:\"\u0e41\u0e1a\u0e1a \u0e15\u0e21.30 (TM.30)\",\n        passportHint:\"\u0e2b\u0e19\u0e49\u0e32\u0e17\u0e35\u0e48\u0e21\u0e35\u0e23\u0e39\u0e1b\u0e16\u0e48\u0e32\u0e22\u0e41\u0e25\u0e30\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e2a\u0e48\u0e27\u0e19\u0e1a\u0e38\u0e04\u0e04\u0e25\",\n        visaExpiryHint:\"\u0e27\u0e31\u0e19\u0e17\u0e35\u0e48\u0e2b\u0e21\u0e14\u0e2d\u0e32\u0e22\u0e38\u0e27\u0e35\u0e0b\u0e48\u0e32\u0e15\u0e49\u0e2d\u0e07\u0e21\u0e2d\u0e07\u0e40\u0e2b\u0e47\u0e19\u0e44\u0e14\u0e49\u0e0a\u0e31\u0e14\u0e40\u0e08\u0e19\",\n        tm30Hint:\"\u0e16\u0e48\u0e32\u0e22\u0e40\u0e2d\u0e01\u0e2a\u0e32\u0e23 TM.30 \u0e43\u0e2b\u0e49\u0e40\u0e2b\u0e47\u0e19\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e04\u0e23\u0e1a\u0e16\u0e49\u0e27\u0e19\",\n        btnPassport:\"\ud83d\udcf7 \u0e40\u0e25\u0e37\u0e2d\u0e01 \/ \u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19\u0e44\u0e1f\u0e25\u0e4c\", btnVisaExpiry:\"\ud83d\udcf7 \u0e40\u0e25\u0e37\u0e2d\u0e01 \/ \u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19\u0e44\u0e1f\u0e25\u0e4c\", btnTM30:\"\ud83d\udcf7 \u0e40\u0e25\u0e37\u0e2d\u0e01 \/ \u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19\u0e44\u0e1f\u0e25\u0e4c\"}\n  };\n  var fdL=fd[lang]||fd.th;\n  var sF=function(id,html){ var el=document.getElementById(id); if(el) el.innerHTML=html; };\n  sF(\"lbPassport\",fdL.lbPassport); sF(\"lbVisaExpiry\",fdL.lbVisaExpiry); sF(\"lbTM30\",fdL.lbTM30);\n  sF(\"passportHint\",fdL.passportHint); sF(\"visaExpiryHint\",fdL.visaExpiryHint); sF(\"tm30Hint\",fdL.tm30Hint);\n  sF(\"btnPassport\",fdL.btnPassport); sF(\"btnVisaExpiry\",fdL.btnVisaExpiry); sF(\"btnTM30\",fdL.btnTM30);\n  var photoTileTitle=document.getElementById(\"photoTileTitle\");\n  if(photoTileTitle) photoTileTitle.textContent=lang===\"en\"?\"Front-facing photo\":\"\u0e20\u0e32\u0e1e\u0e16\u0e48\u0e32\u0e22\u0e2b\u0e19\u0e49\u0e32\u0e15\u0e23\u0e07\";\n  \/\/ \u0e1b\u0e49\u0e32\u0e22 \"\u0e08\u0e33\u0e40\u0e1b\u0e47\u0e19\" \/ \"\u0e04\u0e25\u0e34\u0e01\u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e2d\u0e31\u0e1b\u0e42\u0e2b\u0e25\u0e14\" \/ \"\u0e25\u0e1a\u0e44\u0e1f\u0e25\u0e4c\" \u0e02\u0e2d\u0e07\u0e17\u0e38\u0e01\u0e01\u0e32\u0e23\u0e4c\u0e14 (\u0e40\u0e14\u0e34\u0e21\u0e01\u0e32\u0e23\u0e4c\u0e14\u0e40\u0e2d\u0e01\u0e2a\u0e32\u0e23\u0e15\u0e48\u0e32\u0e07\u0e0a\u0e32\u0e15\u0e34 hardcode \u0e2d\u0e31\u0e07\u0e01\u0e24\u0e29\u0e44\u0e27\u0e49)\n  [\"photo\",\"passport\",\"visaExpiry\",\"tm30\"].forEach(function(k){\n    var chip=document.getElementById(k+\"RequiredChip\");\n    if(chip) chip.textContent=T(\"docRequired\");\n    var ph=document.getElementById(k+\"PlaceholderText\");\n    if(ph) ph.textContent=T(\"photoPlaceholderText\");\n  });\n  [\"btnPassportRemoveText\",\"btnVisaExpiryRemoveText\",\"btnTM30RemoveText\"].forEach(function(id){\n    var el=document.getElementById(id);\n    if(el) el.textContent=T(\"docRemove\");\n  });\n  sF(\"btnPassportCamera\",T(\"btnPhotoCamera\")); sF(\"btnVisaExpiryCamera\",T(\"btnPhotoCamera\")); sF(\"btnTM30Camera\",T(\"btnPhotoCamera\"));\n  var summaryLabel=document.getElementById(\"uploadSummaryLabel\");\n  if(summaryLabel) summaryLabel.textContent=lang===\"en\"?\"Document upload progress\":\"\u0e04\u0e27\u0e32\u0e21\u0e04\u0e23\u0e1a\u0e16\u0e49\u0e27\u0e19\u0e02\u0e2d\u0e07\u0e40\u0e2d\u0e01\u0e2a\u0e32\u0e23\";\n  updateUploadSummary();  \/\/ address options\n  [\"province\",\"district\",\"subdistrict\"].forEach(function(selId){\n    var sel=document.getElementById(selId);\n    if(!sel || sel.tagName!==\"SELECT\") return;\n    for(var i=0;i<sel.options.length;i++){\n      var o=sel.options[i]; if(!o.value) continue;\n      var en=o.getAttribute(\"data-en\");\n      o.textContent=(lang===\"en\" && en)?en:o.value;\n    }\n  });\n  provBuildItems(); provSyncFromSelect();   \/\/ \u0e23\u0e32\u0e22\u0e0a\u0e37\u0e48\u0e2d\u0e17\u0e35\u0e48\u0e43\u0e0a\u0e49\u0e04\u0e32\u0e14\u0e40\u0e14\u0e32\u0e15\u0e49\u0e2d\u0e07\u0e40\u0e1b\u0e47\u0e19\u0e20\u0e32\u0e29\u0e32\u0e40\u0e14\u0e35\u0e22\u0e27\u0e01\u0e31\u0e1a\u0e17\u0e35\u0e48\u0e41\u0e2a\u0e14\u0e07\n  \/\/ render service locations\n  var svcSel=document.getElementById(\"serviceLocation\");\n  if(svcSel && serviceLocationsData.length){\n    var savedSvc=svcSel.value;\n    renderServiceLocations(serviceLocationsData);\n    svcSel.value=savedSvc;\n  }\n  translateOptions(lang);\n  onPrefixChange();\n}\n\/\/ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n\/\/ \u0e41\u0e1b\u0e25 dropdown options\n\/\/ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\nvar OPT_EN = {\n  prefix:{\n    \"\":\"\u2014 Select title \u2014\",\n    \"\u0e19\u0e32\u0e22\":\"Mr.\",\"\u0e19\u0e32\u0e07\":\"Mrs.\",\"\u0e19\u0e32\u0e07\u0e2a\u0e32\u0e27\":\"Ms.\",\"\u0e14.\u0e0a.\":\"Master\",\"\u0e14.\u0e0d.\":\"Miss\",\n    \"\u0e14\u0e23.\":\"Dr.\",\"\u0e1c\u0e28.\":\"Asst. Prof.\",\"\u0e1c\u0e28.\u0e14\u0e23.\":\"Asst. Prof. Dr.\",\"\u0e23\u0e28.\":\"Assoc. Prof.\",\n    \"\u0e23\u0e28.\u0e14\u0e23.\":\"Assoc. Prof. Dr.\",\"\u0e28.\":\"Prof.\",\"\u0e28.\u0e14\u0e23.\":\"Prof. Dr.\",\n    \"\u0e1e\u0e23\u0e30\":\"Phra (Monk)\",\"\u0e2a\u0e32\u0e21\u0e40\u0e13\u0e23\":\"Samanera (Novice)\",\"\u0e1e\u0e23\u0e30\u0e21\u0e2b\u0e32\":\"Phra Maha\",\n    \"\u0e1e\u0e23\u0e30\u0e2d\u0e18\u0e34\u0e01\u0e32\u0e23\":\"Phra Athikan\",\"\u0e40\u0e08\u0e49\u0e32\u0e2d\u0e18\u0e34\u0e01\u0e32\u0e23\":\"Chao Athikan\",\"\u0e1e\u0e23\u0e30\u0e1b\u0e25\u0e31\u0e14\":\"Phra Palad\",\n    \"\u0e1e\u0e23\u0e30\u0e2a\u0e21\u0e38\u0e2b\u0e4c\":\"Phra Samu\",\"\u0e1e\u0e23\u0e30\u0e43\u0e1a\u0e0e\u0e35\u0e01\u0e32\":\"Phra Baidika\",\"\u0e1e\u0e23\u0e30\u0e04\u0e23\u0e39\":\"Phra Khru\",\n    \"\u0e1e\u0e23\u0e30\u0e04\u0e23\u0e39\u0e1b\u0e25\u0e31\u0e14\":\"Phra Khru Palad\",\"\u0e1e\u0e23\u0e30\u0e04\u0e23\u0e39\u0e18\u0e23\u0e23\u0e21\u0e18\u0e23\":\"Phra Khru Thammathon\",\n    \"\u0e1e\u0e23\u0e30\u0e04\u0e23\u0e39\u0e27\u0e34\u0e19\u0e31\u0e22\u0e18\u0e23\":\"Phra Khru Winaithon\",\"\u0e1e\u0e23\u0e30\u0e04\u0e23\u0e39\u0e2a\u0e31\u0e07\u0e06\u0e23\u0e31\u0e01\u0e29\u0e4c\":\"Phra Khru Sangkharak\",\n    \"\u0e1e\u0e23\u0e30\u0e04\u0e23\u0e39\u0e2a\u0e21\u0e38\u0e2b\u0e4c\":\"Phra Khru Samu\",\"\u0e1e\u0e23\u0e30\u0e04\u0e23\u0e39\u0e43\u0e1a\u0e0e\u0e35\u0e01\u0e32\":\"Phra Khru Baidika\",\n    \"\u0e20\u0e34\u0e01\u0e29\u0e38\u0e13\u0e35\":\"Bhikkhuni\",\"\u0e2a\u0e32\u0e21\u0e40\u0e13\u0e23\u0e35\":\"Samaneri\",\"\u0e41\u0e21\u0e48\u0e0a\u0e35\":\"Mae Chi (Nun)\"\n  },\n  education:{\n    \"\":\"\u2014 Not specified \u2014\",\n    \"\u0e1b\u0e23\u0e30\u0e16\u0e21\u0e28\u0e36\u0e01\u0e29\u0e32\":\"Primary School\",\"\u0e21\u0e31\u0e18\u0e22\u0e21\u0e28\u0e36\u0e01\u0e29\u0e32\u0e15\u0e2d\u0e19\u0e15\u0e49\u0e19 (\u0e21.3)\":\"Lower Secondary (M.3)\",\n    \"\u0e21\u0e31\u0e18\u0e22\u0e21\u0e28\u0e36\u0e01\u0e29\u0e32\u0e15\u0e2d\u0e19\u0e1b\u0e25\u0e32\u0e22 (\u0e21.6)\":\"Upper Secondary (M.6)\",\"\u0e1b\u0e27\u0e0a.\":\"Vocational Certificate\",\n    \"\u0e1b\u0e27\u0e2a. \/ \u0e2d\u0e19\u0e38\u0e1b\u0e23\u0e34\u0e0d\u0e0d\u0e32\":\"Diploma\",\"\u0e1b\u0e23\u0e34\u0e0d\u0e0d\u0e32\u0e15\u0e23\u0e35\":\"Bachelor's Degree\",\n    \"\u0e1b\u0e23\u0e34\u0e0d\u0e0d\u0e32\u0e42\u0e17\":\"Master's Degree\",\"\u0e1b\u0e23\u0e34\u0e0d\u0e0d\u0e32\u0e40\u0e2d\u0e01\":\"Doctorate\"\n  },\n  pali:{\n    \"\":\"\u2014 Not specified \u2014\",\"\u0e1b\u0e23\u0e30\u0e42\u0e22\u0e04 1-2\":\"Grade 1-2\",\"\u0e1b.\u0e18.3\":\"Pali Grade 3\",\n    \"\u0e1b.\u0e18.4\":\"Pali Grade 4\",\"\u0e1b.\u0e18.5\":\"Pali Grade 5\",\"\u0e1b.\u0e18.6\":\"Pali Grade 6\",\n    \"\u0e1b.\u0e18.7\":\"Pali Grade 7\",\"\u0e1b.\u0e18.8\":\"Pali Grade 8\",\"\u0e1b.\u0e18.9\":\"Pali Grade 9\"\n  },\n  dhamma:{\n    \"\":\"\u2014 Not specified \u2014\",\n    \"\u0e19\u0e31\u0e01\u0e18\u0e23\u0e23\u0e21\u0e0a\u0e31\u0e49\u0e19\u0e15\u0e23\u0e35\":\"Dhamma Grade 3 (Monk)\",\"\u0e19\u0e31\u0e01\u0e18\u0e23\u0e23\u0e21\u0e0a\u0e31\u0e49\u0e19\u0e42\u0e17\":\"Dhamma Grade 2 (Monk)\",\n    \"\u0e19\u0e31\u0e01\u0e18\u0e23\u0e23\u0e21\u0e0a\u0e31\u0e49\u0e19\u0e40\u0e2d\u0e01\":\"Dhamma Grade 1 (Monk)\",\n    \"\u0e18\u0e23\u0e23\u0e21\u0e28\u0e36\u0e01\u0e29\u0e32\u0e0a\u0e31\u0e49\u0e19\u0e15\u0e23\u0e35\":\"Dhamma Studies Grade 3\",\"\u0e18\u0e23\u0e23\u0e21\u0e28\u0e36\u0e01\u0e29\u0e32\u0e0a\u0e31\u0e49\u0e19\u0e42\u0e17\":\"Dhamma Studies Grade 2\",\n    \"\u0e18\u0e23\u0e23\u0e21\u0e28\u0e36\u0e01\u0e29\u0e32\u0e0a\u0e31\u0e49\u0e19\u0e40\u0e2d\u0e01\":\"Dhamma Studies Grade 1\"\n  }\n};\n\/\/ \u0e0a\u0e37\u0e48\u0e2d\u0e01\u0e25\u0e38\u0e48\u0e21\u0e44\u0e21\u0e48\u0e43\u0e2a\u0e48\u0e02\u0e35\u0e14\u0e15\u0e01\u0e41\u0e15\u0e48\u0e07 \u2014 \u0e1a\u0e19\u0e21\u0e37\u0e2d\u0e16\u0e37\u0e2d\u0e23\u0e30\u0e1a\u0e1a\u0e41\u0e2a\u0e14\u0e07\u0e23\u0e32\u0e22\u0e01\u0e32\u0e23\u0e40\u0e15\u0e47\u0e21\u0e08\u0e2d \u0e02\u0e35\u0e14\u0e22\u0e32\u0e27\u0e08\u0e30\u0e15\u0e31\u0e14\u0e1a\u0e23\u0e23\u0e17\u0e31\u0e14\u0e14\u0e39\u0e23\u0e01\n\/\/ \u0e41\u0e25\u0e30\u0e15\u0e31\u0e27\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e23\u0e32\u0e22\u0e01\u0e32\u0e23\u0e41\u0e1a\u0e1a native \u0e41\u0e22\u0e01\u0e2b\u0e31\u0e27\u0e02\u0e49\u0e2d\u0e01\u0e25\u0e38\u0e48\u0e21\u0e43\u0e2b\u0e49\u0e0a\u0e31\u0e14\u0e2d\u0e22\u0e39\u0e48\u0e41\u0e25\u0e49\u0e27\nvar OPTGROUP_EN = {\n  \"\u0e06\u0e23\u0e32\u0e27\u0e32\u0e2a\":\"Laypersons\",\n  \"\u0e27\u0e38\u0e12\u0e34\u0e17\u0e32\u0e07\u0e27\u0e34\u0e0a\u0e32\u0e01\u0e32\u0e23\":\"Academic Titles\",\n  \"\u0e1e\u0e23\u0e30\u0e20\u0e34\u0e01\u0e29\u0e38 \/ \u0e2a\u0e32\u0e21\u0e40\u0e13\u0e23\":\"Monks \/ Novices\",\n  \"\u0e20\u0e34\u0e01\u0e29\u0e38\u0e13\u0e35 \/ \u0e19\u0e31\u0e01\u0e1a\u0e27\u0e0a\u0e2b\u0e0d\u0e34\u0e07\":\"Female Monastics\"\n};\nfunction translateOptions(lang){\n  [\"prefix\",\"education\",\"pali\",\"dhamma\"].forEach(function(selId){\n    var sel=document.getElementById(selId); if(!sel || sel.tagName !== \"SELECT\") return;\n    var saved=sel.value;\n    sel.querySelectorAll(\"option\").forEach(function(o){\n      if(!o.hasAttribute(\"data-th\")) o.setAttribute(\"data-th\",o.textContent);\n      var th=o.getAttribute(\"data-th\");\n      var map=OPT_EN[selId];\n      o.textContent=(lang===\"en\" && map && map[o.value]!==undefined)?map[o.value]:th;\n    });\n    sel.querySelectorAll(\"optgroup\").forEach(function(g){\n      if(!g.hasAttribute(\"data-th\")) g.setAttribute(\"data-th\",g.label);\n      var th=g.getAttribute(\"data-th\");\n      g.label=(lang===\"en\" && OPTGROUP_EN[th])?OPTGROUP_EN[th]:th;\n    });\n    sel.value=saved;\n  });\n}\n\/\/ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n\/\/ Helpers\n\/\/ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n\/\/ esc \u0e16\u0e39\u0e01\u0e43\u0e0a\u0e49\u0e17\u0e31\u0e49\u0e07\u0e43\u0e19 attribute \u0e41\u0e25\u0e30\u0e40\u0e19\u0e37\u0e49\u0e2d\u0e2b\u0e32\u0e02\u0e2d\u0e07 <option> (\u0e0a\u0e37\u0e48\u0e2d\u0e2b\u0e19\u0e48\u0e27\u0e22\u0e1a\u0e23\u0e34\u0e01\u0e32\u0e23\u0e21\u0e32\u0e08\u0e32\u0e01\u0e0a\u0e35\u0e15)\n\/\/ \u0e08\u0e36\u0e07\u0e15\u0e49\u0e2d\u0e07\u0e2b\u0e19\u0e35 < > \u0e14\u0e49\u0e27\u0e22 \u0e44\u0e21\u0e48\u0e07\u0e31\u0e49\u0e19\u0e0a\u0e37\u0e48\u0e2d\u0e17\u0e35\u0e48\u0e21\u0e35\u0e2d\u0e31\u0e01\u0e02\u0e23\u0e30\u0e40\u0e2b\u0e25\u0e48\u0e32\u0e19\u0e35\u0e49\u0e08\u0e30\u0e17\u0e33\u0e43\u0e2b\u0e49 dropdown \u0e40\u0e1e\u0e35\u0e49\u0e22\u0e19\nfunction esc(s){ return String(s).replace(\/&\/g,\"&amp;\").replace(\/<\/g,\"&lt;\").replace(\/>\/g,\"&gt;\").replace(\/\"\/g,\"&quot;\").replace(\/'\/g,\"&#39;\"); }\nfunction esc2(s){ return String(s).replace(\/&\/g,\"&amp;\").replace(\/<\/g,\"&lt;\").replace(\/>\/g,\"&gt;\"); }\n\/\/ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n\/\/ \u0e23\u0e48\u0e32\u0e07\u0e2d\u0e31\u0e15\u0e42\u0e19\u0e21\u0e31\u0e15\u0e34 \u2014 \u0e01\u0e31\u0e19\u0e01\u0e23\u0e2d\u0e01\u0e43\u0e2b\u0e21\u0e48\u0e17\u0e31\u0e49\u0e07\u0e0a\u0e38\u0e14\u0e40\u0e21\u0e37\u0e48\u0e2d\u0e40\u0e1c\u0e25\u0e2d\u0e1b\u0e34\u0e14\u0e41\u0e17\u0e47\u0e1a \/ \u0e40\u0e19\u0e47\u0e15\u0e2b\u0e25\u0e38\u0e14\n\/\/  \u2022 \u0e40\u0e01\u0e47\u0e1a\u0e40\u0e09\u0e1e\u0e32\u0e30\u0e02\u0e49\u0e2d\u0e04\u0e27\u0e32\u0e21\u0e17\u0e35\u0e48\u0e01\u0e23\u0e2d\u0e01 \u0e44\u0e21\u0e48\u0e40\u0e01\u0e47\u0e1a\u0e23\u0e39\u0e1b\u0e16\u0e48\u0e32\u0e22\u0e41\u0e25\u0e30\u0e40\u0e2d\u0e01\u0e2a\u0e32\u0e23 (\u0e43\u0e2b\u0e0d\u0e48\u0e40\u0e01\u0e34\u0e19 localStorage\n\/\/    \u0e41\u0e25\u0e30\u0e40\u0e1b\u0e47\u0e19\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e2d\u0e48\u0e2d\u0e19\u0e44\u0e2b\u0e27\u0e17\u0e35\u0e48\u0e44\u0e21\u0e48\u0e04\u0e27\u0e23\u0e04\u0e49\u0e32\u0e07\u0e43\u0e19\u0e40\u0e04\u0e23\u0e37\u0e48\u0e2d\u0e07)\n\/\/  \u2022 \u0e44\u0e21\u0e48\u0e01\u0e39\u0e49\u0e0a\u0e48\u0e2d\u0e07\u0e22\u0e34\u0e19\u0e22\u0e2d\u0e21 PDPA \u2014 \u0e1c\u0e39\u0e49\u0e2a\u0e21\u0e31\u0e04\u0e23\u0e15\u0e49\u0e2d\u0e07\u0e15\u0e34\u0e4a\u0e01\u0e40\u0e2d\u0e07\n\/\/  \u2022 \u0e2b\u0e21\u0e14\u0e2d\u0e32\u0e22\u0e38\u0e43\u0e19 24 \u0e0a\u0e21. \u0e25\u0e1a\u0e17\u0e31\u0e19\u0e17\u0e35\u0e17\u0e35\u0e48\u0e2a\u0e21\u0e31\u0e04\u0e23\u0e2a\u0e33\u0e40\u0e23\u0e47\u0e08 \u0e41\u0e25\u0e30\u0e21\u0e35\u0e1b\u0e38\u0e48\u0e21\u0e25\u0e49\u0e32\u0e07\u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a\u0e40\u0e04\u0e23\u0e37\u0e48\u0e2d\u0e07\u0e2a\u0e32\u0e18\u0e32\u0e23\u0e13\u0e30\n\/\/ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\nvar DRAFT_KEY = \"abjRegDraft_v1\";\nvar DRAFT_TTL_MS = 24 * 60 * 60 * 1000;\nvar DRAFT_FIELDS = [\"prefix\",\"firstName\",\"lastName\",\"temple\",\"birthDay\",\"birthMonth\",\"birthYear\",\n  \"phone\",\"education\",\"pali\",\"dhamma\",\"address\",\"soi\",\"province\",\"district\",\"subdistrict\",\n  \"postalCode\",\"serviceLocation\"];\nvar DRAFT_TXT = {\n  th:{ title:\"\u0e01\u0e39\u0e49\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e17\u0e35\u0e48\u0e01\u0e23\u0e2d\u0e01\u0e04\u0e49\u0e32\u0e07\u0e44\u0e27\u0e49\u0e43\u0e2b\u0e49\u0e41\u0e25\u0e49\u0e27\", note:\"\u0e40\u0e01\u0e47\u0e1a\u0e44\u0e27\u0e49\u0e43\u0e19\u0e40\u0e04\u0e23\u0e37\u0e48\u0e2d\u0e07\u0e19\u0e35\u0e49 24 \u0e0a\u0e31\u0e48\u0e27\u0e42\u0e21\u0e07 \u2014 \u0e23\u0e39\u0e1b\u0e20\u0e32\u0e1e\u0e15\u0e49\u0e2d\u0e07\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e43\u0e2b\u0e21\u0e48\", clear:\"\u0e25\u0e49\u0e32\u0e07\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\" },\n  en:{ title:\"Restored your unfinished form\", note:\"Kept on this device for 24 hours \u2014 photos must be selected again\", clear:\"Clear\" }\n};\n\/\/ localStorage \u0e43\u0e0a\u0e49\u0e44\u0e21\u0e48\u0e44\u0e14\u0e49\u0e43\u0e19\u0e42\u0e2b\u0e21\u0e14\u0e2a\u0e48\u0e27\u0e19\u0e15\u0e31\u0e27\u0e1a\u0e32\u0e07\u0e40\u0e1a\u0e23\u0e32\u0e27\u0e4c\u0e40\u0e0b\u0e2d\u0e23\u0e4c \/ \u0e16\u0e39\u0e01\u0e1b\u0e34\u0e14\u0e44\u0e27\u0e49 \u2014 \u0e15\u0e49\u0e2d\u0e07\u0e44\u0e21\u0e48\u0e17\u0e33\u0e43\u0e2b\u0e49\u0e1f\u0e2d\u0e23\u0e4c\u0e21\u0e1e\u0e31\u0e07\nvar draftStore = (function(){\n  try { var k=\"__abjtest\"; localStorage.setItem(k,\"1\"); localStorage.removeItem(k); return localStorage; }\n  catch(e){ return null; }\n})();\nvar draftTimer = null;\nvar draftRestoring = false;\nvar draftAborted = false;   \/\/ \u0e1c\u0e39\u0e49\u0e43\u0e0a\u0e49\u0e01\u0e14\u0e25\u0e49\u0e32\u0e07\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e23\u0e30\u0e2b\u0e27\u0e48\u0e32\u0e07\u0e17\u0e35\u0e48\u0e22\u0e31\u0e07\u0e01\u0e39\u0e49\u0e44\u0e21\u0e48\u0e40\u0e2a\u0e23\u0e47\u0e08\n\nfunction saveDraft(){\n  \/\/ \u0e01\u0e33\u0e25\u0e31\u0e07\u0e41\u0e01\u0e49\u0e44\u0e02\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e17\u0e35\u0e48\u0e40\u0e04\u0e22\u0e2a\u0e21\u0e31\u0e04\u0e23\u0e44\u0e27\u0e49 \u2014 \u0e2b\u0e49\u0e32\u0e21\u0e17\u0e31\u0e1a\u0e23\u0e48\u0e32\u0e07\u0e02\u0e2d\u0e07\u0e01\u0e32\u0e23 \"\u0e2a\u0e21\u0e31\u0e04\u0e23\u0e43\u0e2b\u0e21\u0e48\" \u0e1b\u0e01\u0e15\u0e34 \u0e44\u0e21\u0e48\u0e07\u0e31\u0e49\u0e19\u0e04\u0e23\u0e31\u0e49\u0e07\u0e16\u0e31\u0e14\u0e44\u0e1b\u0e17\u0e35\u0e48\n  \/\/ \u0e40\u0e1b\u0e34\u0e14\u0e1f\u0e2d\u0e23\u0e4c\u0e21\u0e2a\u0e21\u0e31\u0e04\u0e23\u0e43\u0e2b\u0e21\u0e48\u0e08\u0e30\u0e16\u0e39\u0e01\u0e40\u0e15\u0e34\u0e21\u0e14\u0e49\u0e27\u0e22\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e02\u0e2d\u0e07\u0e04\u0e19\u0e17\u0e35\u0e48\u0e40\u0e1e\u0e34\u0e48\u0e07\u0e41\u0e01\u0e49\u0e44\u0e02\u0e44\u0e1b\u0e41\u0e17\u0e19 (\u0e23\u0e31\u0e48\u0e27\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\/\u0e2a\u0e31\u0e1a\u0e2a\u0e19\u0e1a\u0e19\u0e40\u0e04\u0e23\u0e37\u0e48\u0e2d\u0e07\u0e2a\u0e32\u0e18\u0e32\u0e23\u0e13\u0e30)\n  if(!draftStore || draftRestoring || isEditMode) return;\n  var data = { at:Date.now(), v:{} }, any = false;\n  DRAFT_FIELDS.forEach(function(id){\n    var el = document.getElementById(id);\n    if(!el || !el.value) return;\n    data.v[id] = el.value; any = true;\n  });\n  try {\n    if(any) draftStore.setItem(DRAFT_KEY, JSON.stringify(data));\n    else    draftStore.removeItem(DRAFT_KEY);\n  } catch(e){}   \/\/ \u0e40\u0e15\u0e47\u0e21\u0e2b\u0e23\u0e37\u0e2d\u0e16\u0e39\u0e01\u0e1b\u0e0f\u0e34\u0e40\u0e2a\u0e18 \u2014 \u0e02\u0e49\u0e32\u0e21\u0e44\u0e1b \u0e44\u0e21\u0e48\u0e15\u0e49\u0e2d\u0e07\u0e23\u0e1a\u0e01\u0e27\u0e19\u0e1c\u0e39\u0e49\u0e43\u0e0a\u0e49\n}\nfunction scheduleSaveDraft(){\n  if(!draftStore) return;\n  clearTimeout(draftTimer);\n  draftTimer = setTimeout(saveDraft, 600);\n}\nfunction clearDraft(){\n  if(!draftStore) return;\n  try { draftStore.removeItem(DRAFT_KEY); } catch(e){}\n}\nfunction readDraft(){\n  if(!draftStore) return null;\n  try {\n    var raw = draftStore.getItem(DRAFT_KEY);\n    if(!raw) return null;\n    var d = JSON.parse(raw);\n    if(!d || !d.v || !d.at || (Date.now() - d.at) > DRAFT_TTL_MS){ clearDraft(); return null; }\n    return d;\n  } catch(e){ clearDraft(); return null; }\n}\nfunction applyDraftLang(){\n  var t = DRAFT_TXT[LANG] || DRAFT_TXT.th;\n  var a = document.getElementById(\"draftBarTitle\");\n  var b = document.getElementById(\"draftBarNote\");\n  var c = document.getElementById(\"draftClearBtn\");\n  if(a) a.textContent = t.title;\n  if(b) b.textContent = t.note;\n  if(c) c.textContent = t.clear;\n}\nfunction discardDraft(){\n  \/\/ \u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e17\u0e35\u0e48\u0e2d\u0e22\u0e39\u0e48\u0e42\u0e2b\u0e25\u0e14\u0e0a\u0e49\u0e32\u0e01\u0e27\u0e48\u0e32\u0e0a\u0e48\u0e2d\u0e07\u0e2d\u0e37\u0e48\u0e19 \u0e01\u0e32\u0e23\u0e01\u0e39\u0e49\u0e2d\u0e32\u0e08\u0e22\u0e31\u0e07\u0e04\u0e49\u0e32\u0e07\u0e2d\u0e22\u0e39\u0e48\u0e15\u0e2d\u0e19\u0e01\u0e14\u0e25\u0e49\u0e32\u0e07\n  \/\/ \u0e16\u0e49\u0e32\u0e44\u0e21\u0e48\u0e2b\u0e22\u0e38\u0e14\u0e44\u0e27\u0e49 \u0e17\u0e35\u0e48\u0e2d\u0e22\u0e39\u0e48\u0e08\u0e30\u0e16\u0e39\u0e01\u0e40\u0e15\u0e34\u0e21\u0e01\u0e25\u0e31\u0e1a\u0e21\u0e32\u0e41\u0e25\u0e49\u0e27\u0e1a\u0e31\u0e19\u0e17\u0e36\u0e01\u0e43\u0e2b\u0e21\u0e48\u0e2b\u0e25\u0e31\u0e07\u0e25\u0e49\u0e32\u0e07\u0e44\u0e1b\u0e41\u0e25\u0e49\u0e27\n  draftAborted = true;\n  draftRestoring = false;\n  clearTimeout(draftTimer);\n  clearDraft();\n  var bar = document.getElementById(\"draftBar\");\n  if(bar) bar.hidden = true;\n  resetForm();\n  setTimeout(clearDraft, 100);   \/\/ \u0e40\u0e01\u0e47\u0e1a\u0e01\u0e27\u0e32\u0e14 event \u0e17\u0e35\u0e48\u0e22\u0e31\u0e07\u0e04\u0e49\u0e32\u0e07\u0e43\u0e19\u0e04\u0e34\u0e27\n}\n\/\/ \u0e15\u0e31\u0e49\u0e07\u0e04\u0e48\u0e32\u0e43\u0e2b\u0e49\u0e0a\u0e48\u0e2d\u0e07\u0e17\u0e35\u0e48\u0e15\u0e31\u0e27\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e16\u0e39\u0e01\u0e40\u0e15\u0e34\u0e21\u0e17\u0e35\u0e2b\u0e25\u0e31\u0e07 (\u0e08\u0e31\u0e07\u0e2b\u0e27\u0e31\u0e14\/\u0e2d\u0e33\u0e40\u0e20\u0e2d\/\u0e15\u0e33\u0e1a\u0e25\/\u0e2b\u0e19\u0e48\u0e27\u0e22\u0e1a\u0e23\u0e34\u0e01\u0e32\u0e23)\n\/\/ \u0e16\u0e49\u0e32\u0e22\u0e31\u0e07\u0e44\u0e21\u0e48\u0e21\u0e35\u0e15\u0e31\u0e27\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e19\u0e31\u0e49\u0e19\u0e43\u0e2b\u0e49\u0e23\u0e2d\u0e41\u0e25\u0e49\u0e27\u0e25\u0e2d\u0e07\u0e43\u0e2b\u0e21\u0e48 \u2014 \u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e17\u0e35\u0e48\u0e2d\u0e22\u0e39\u0e48\u0e14\u0e36\u0e07\u0e08\u0e32\u0e01 CDN \u0e43\u0e0a\u0e49\u0e40\u0e27\u0e25\u0e32\u0e2a\u0e31\u0e01\u0e04\u0e23\u0e39\u0e48\nfunction draftSetSelect(id, want, done){\n  if(!want){ if(done) done(); return; }\n  var tries = 0;\n  (function attempt(){\n    if(draftAborted) return;\n    var el = document.getElementById(id);\n    if(!el){ if(done) done(); return; }\n    if(el.value && el.value !== want){ if(done) done(); return; }   \/\/ \u0e1c\u0e39\u0e49\u0e43\u0e0a\u0e49\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e40\u0e2d\u0e07\u0e44\u0e1b\u0e41\u0e25\u0e49\u0e27 \u0e2d\u0e22\u0e48\u0e32\u0e17\u0e31\u0e1a\n    el.value = want;\n    if(el.value === want){\n      el.dispatchEvent(new Event(\"change\", { bubbles:true }));\n      if(done) done();\n      return;\n    }\n    if(++tries > 45){ if(done) done(); return; }                    \/\/ ~18 \u0e27\u0e34\u0e19\u0e32\u0e17\u0e35\n    setTimeout(attempt, 400);\n  })();\n}\nfunction restoreDraft(){\n  var d = readDraft();\n  if(!d) return;\n  var v = d.v;\n  draftRestoring = true;\n\n  [\"prefix\",\"firstName\",\"lastName\",\"temple\",\"phone\",\"education\",\"pali\",\"dhamma\",\"address\",\"soi\"]\n    .forEach(function(id){\n      var el = document.getElementById(id);\n      if(el && !el.value && v[id]) el.value = v[id];\n    });\n  onPrefixChange();\n  translateOptions(LANG);\n\n  [\"birthDay\",\"birthMonth\",\"birthYear\"].forEach(function(id){\n    var el = document.getElementById(id);\n    if(el && !el.value && v[id]) el.value = v[id];\n  });\n  syncBirthdate();\n\n  draftSetSelect(\"serviceLocation\", v.serviceLocation);\n  draftSetSelect(\"province\", v.province, function(){\n    draftSetSelect(\"district\", v.district, function(){\n      draftSetSelect(\"subdistrict\", v.subdistrict, function(){\n        if(draftAborted) return;\n        var pc = document.getElementById(\"postalCode\");\n        if(pc && !pc.value && v.postalCode) pc.value = v.postalCode;\n        draftRestoring = false;\n      });\n    });\n  });\n  setTimeout(function(){ draftRestoring = false; }, 20000);   \/\/ \u0e01\u0e31\u0e19\u0e04\u0e49\u0e32\u0e07\u0e16\u0e49\u0e32\u0e42\u0e2b\u0e25\u0e14\u0e17\u0e35\u0e48\u0e2d\u0e22\u0e39\u0e48\u0e44\u0e21\u0e48\u0e2a\u0e33\u0e40\u0e23\u0e47\u0e08\n\n  var bar = document.getElementById(\"draftBar\");\n  if(bar){ applyDraftLang(); bar.hidden = false; }\n}\n(function initDraft(){\n  if(!draftStore) return;\n  var form = document.getElementById(\"regForm\");\n  form.addEventListener(\"input\",  scheduleSaveDraft);\n  form.addEventListener(\"change\", scheduleSaveDraft);\n  \/\/ \u0e2a\u0e25\u0e31\u0e1a\u0e20\u0e32\u0e29\u0e32\u0e41\u0e25\u0e49\u0e27\u0e15\u0e49\u0e2d\u0e07\u0e41\u0e1b\u0e25\u0e02\u0e49\u0e2d\u0e04\u0e27\u0e32\u0e21\u0e1a\u0e19\u0e41\u0e16\u0e1a\u0e14\u0e49\u0e27\u0e22 \u2014 \u0e2b\u0e48\u0e2d setLanguage \u0e40\u0e14\u0e34\u0e21\u0e44\u0e27\u0e49\n  var baseSetLanguage = setLanguage;\n  setLanguage = function(lang){ baseSetLanguage(lang); applyDraftLang(); };\n  restoreDraft();\n})();\n<\/script>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-9121687 e-flex e-con-boxed e-con e-parent\" data-id=\"9121687\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-40fc714 e-flex e-con-boxed e-con e-parent\" data-id=\"40fc714\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-d795a39 e-flex e-con-boxed e-con e-parent\" data-id=\"d795a39\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>\ud83d\udccb \u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e01\u0e48\u0e2d\u0e19\u0e22\u0e37\u0e19\u0e22\u0e31\u0e19 \u0e01\u0e23\u0e38\u0e13\u0e32\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e43\u0e2b\u0e49\u0e16\u0e39\u0e01\u0e15\u0e49\u0e2d\u0e07\u0e01\u0e48\u0e2d\u0e19\u0e01\u0e14\u0e22\u0e37\u0e19\u0e22\u0e31\u0e19 \u2190 \u0e41\u0e01\u0e49\u0e44\u0e02 \u2726 \u0e22\u0e37\u0e19\u0e22\u0e31\u0e19\u0e01\u0e32\u0e23\u0e2a\u0e21\u0e31\u0e04\u0e23 \u0e44\u0e17\u0e22 EN \u2726 \u0e1b\u0e35\u0e01\u0e32\u0e23\u0e28\u0e36\u0e01\u0e29\u0e32 \u2726 \u0e41\u0e1a\u0e1a\u0e1f\u0e2d\u0e23\u0e4c\u0e21\u0e2a\u0e21\u0e31\u0e04\u0e23\u0e40\u0e23\u0e35\u0e22\u0e19\u0e1e\u0e23\u0e30\u0e2d\u0e20\u0e34\u0e18\u0e23\u0e23\u0e21 \u0e01\u0e23\u0e2d\u0e01\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e43\u0e2b\u0e49\u0e04\u0e23\u0e1a\u0e16\u0e49\u0e27\u0e19 \u2014 \u0e23\u0e30\u0e1a\u0e1a\u0e08\u0e30\u0e2d\u0e2d\u0e01\u0e23\u0e2b\u0e31\u0e2a\u0e0a\u0e31\u0e48\u0e27\u0e04\u0e23\u0e32\u0e27\u0e43\u0e2b\u0e49\u0e2b\u0e25\u0e31\u0e07\u0e2a\u0e21\u0e31\u0e04\u0e23\u0e2a\u0e33\u0e40\u0e23\u0e47\u0e08 \ud83d\udcdd \u0e2a\u0e21\u0e31\u0e04\u0e23\u0e40\u0e23\u0e35\u0e22\u0e19 \ud83d\udd0e \u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e2a\u0e16\u0e32\u0e19\u0e30 \u21ba \u0e01\u0e39\u0e49\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e17\u0e35\u0e48\u0e01\u0e23\u0e2d\u0e01\u0e04\u0e49\u0e32\u0e07\u0e44\u0e27\u0e49\u0e43\u0e2b\u0e49\u0e41\u0e25\u0e49\u0e27 \u0e40\u0e01\u0e47\u0e1a\u0e44\u0e27\u0e49\u0e43\u0e19\u0e40\u0e04\u0e23\u0e37\u0e48\u0e2d\u0e07\u0e19\u0e35\u0e49 24 \u0e0a\u0e31\u0e48\u0e27\u0e42\u0e21\u0e07 \u2014 \u0e23\u0e39\u0e1b\u0e20\u0e32\u0e1e\u0e15\u0e49\u0e2d\u0e07\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e43\u0e2b\u0e21\u0e48 \u0e25\u0e49\u0e32\u0e07\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25 \u270f\ufe0f \u0e01\u0e33\u0e25\u0e31\u0e07\u0e41\u0e01\u0e49\u0e44\u0e02\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25 \u0e41\u0e01\u0e49\u0e40\u0e09\u0e1e\u0e32\u0e30\u0e08\u0e38\u0e14\u0e17\u0e35\u0e48\u0e1c\u0e34\u0e14 \u0e41\u0e25\u0e49\u0e27\u0e01\u0e14\u0e1a\u0e31\u0e19\u0e17\u0e36\u0e01\u0e14\u0e49\u0e32\u0e19\u0e25\u0e48\u0e32\u0e07 \u0e22\u0e01\u0e40\u0e25\u0e34\u0e01 1\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e2a\u0e48\u0e27\u0e19\u0e15\u0e31\u0e27 2\u0e17\u0e35\u0e48\u0e2d\u0e22\u0e39\u0e48 3\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\/\u0e2b\u0e19\u0e48\u0e27\u0e22\u0e1a\u0e23\u0e34\u0e01\u0e32\u0e23 4\u0e23\u0e39\u0e1b\u0e41\u0e25\u0e30\u0e22\u0e37\u0e19\u0e22\u0e31\u0e19 \u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e2a\u0e48\u0e27\u0e19\u0e15\u0e31\u0e27 \u0e04\u0e33\u0e19\u0e33\u0e2b\u0e19\u0e49\u0e32 * \u2014 \u0e40\u0e25\u0e37\u0e2d\u0e01\u0e04\u0e33\u0e19\u0e33\u0e2b\u0e19\u0e49\u0e32 \u2014\u0e19\u0e32\u0e22\u0e19\u0e32\u0e07\u0e19\u0e32\u0e07\u0e2a\u0e32\u0e27\u0e14.\u0e0a.\u0e14.\u0e0d. \u0e14\u0e23.\u0e1c\u0e28.\u0e1c\u0e28.\u0e14\u0e23.\u0e23\u0e28.\u0e23\u0e28.\u0e14\u0e23.\u0e28.\u0e28.\u0e14\u0e23. \u0e1e\u0e23\u0e30\u0e2a\u0e32\u0e21\u0e40\u0e13\u0e23\u0e1e\u0e23\u0e30\u0e21\u0e2b\u0e32\u0e1e\u0e23\u0e30\u0e2d\u0e18\u0e34\u0e01\u0e32\u0e23\u0e40\u0e08\u0e49\u0e32\u0e2d\u0e18\u0e34\u0e01\u0e32\u0e23\u0e1e\u0e23\u0e30\u0e1b\u0e25\u0e31\u0e14\u0e1e\u0e23\u0e30\u0e2a\u0e21\u0e38\u0e2b\u0e4c\u0e1e\u0e23\u0e30\u0e43\u0e1a\u0e0e\u0e35\u0e01\u0e32\u0e1e\u0e23\u0e30\u0e04\u0e23\u0e39\u0e1e\u0e23\u0e30\u0e04\u0e23\u0e39\u0e1b\u0e25\u0e31\u0e14\u0e1e\u0e23\u0e30\u0e04\u0e23\u0e39\u0e18\u0e23\u0e23\u0e21\u0e18\u0e23\u0e1e\u0e23\u0e30\u0e04\u0e23\u0e39\u0e27\u0e34\u0e19\u0e31\u0e22\u0e18\u0e23\u0e1e\u0e23\u0e30\u0e04\u0e23\u0e39\u0e2a\u0e31\u0e07\u0e06\u0e23\u0e31\u0e01\u0e29\u0e4c\u0e1e\u0e23\u0e30\u0e04\u0e23\u0e39\u0e2a\u0e21\u0e38\u0e2b\u0e4c\u0e1e\u0e23\u0e30\u0e04\u0e23\u0e39\u0e43\u0e1a\u0e0e\u0e35\u0e01\u0e32 \u0e20\u0e34\u0e01\u0e29\u0e38\u0e13\u0e35\u0e2a\u0e32\u0e21\u0e40\u0e13\u0e23\u0e35\u0e41\u0e21\u0e48\u0e0a\u0e35 \u0e0a\u0e37\u0e48\u0e2d * \u0e19\u0e32\u0e21\u0e2a\u0e01\u0e38\u0e25 \u0e27\u0e31\u0e14 \/ \u0e2a\u0e33\u0e19\u0e31\u0e01 \u0e27\u0e31\u0e19\u0e40\u0e14\u0e37\u0e2d\u0e19\u0e1b\u0e35\u0e40\u0e01\u0e34\u0e14 (\u0e1e.\u0e28.) * [&hellip;]<\/p>\n","protected":false},"author":3,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-1471","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/abhidham.mcu.ac.th\/index.php?rest_route=\/wp\/v2\/pages\/1471","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/abhidham.mcu.ac.th\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/abhidham.mcu.ac.th\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/abhidham.mcu.ac.th\/index.php?rest_route=\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/abhidham.mcu.ac.th\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1471"}],"version-history":[{"count":230,"href":"https:\/\/abhidham.mcu.ac.th\/index.php?rest_route=\/wp\/v2\/pages\/1471\/revisions"}],"predecessor-version":[{"id":4106,"href":"https:\/\/abhidham.mcu.ac.th\/index.php?rest_route=\/wp\/v2\/pages\/1471\/revisions\/4106"}],"wp:attachment":[{"href":"https:\/\/abhidham.mcu.ac.th\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1471"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}