{"id":35257,"date":"2024-12-25T18:18:22","date_gmt":"2024-12-25T10:18:22","guid":{"rendered":"https:\/\/www.goglobalsafe.com\/?page_id=35257"},"modified":"2026-08-27T13:57:49","modified_gmt":"2026-08-27T05:57:49","slug":"us-enrollment","status":"publish","type":"page","link":"https:\/\/www.goglobalsafe.com\/zh\/us-enrollment\/","title":{"rendered":"us-enrollment"},"content":{"rendered":"<div data-elementor-type=\"wp-page\" data-elementor-id=\"35257\" class=\"elementor elementor-35257\">\n\t\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-ee8ffa0 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"ee8ffa0\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-no\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-8ff7d8f\" data-id=\"8ff7d8f\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-dbccd4a elementor-widget elementor-widget-shortcode\" data-id=\"dbccd4a\" data-element_type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\"><head>\n    <link href=\"\/wp-content\/static\/js\/layui.css\" rel=\"stylesheet\">\n    <link href=\"\/wp-content\/static\/element\/index.min.css\" rel=\"stylesheet\">\n    <link href=\"\/wp-content\/themes\/astra\/assets\/css\/product-list-us-v4.css?v=20260724-address-fix\" rel=\"stylesheet\">\n<\/head>\n<script src=\"https:\/\/cdn.jsdelivr.net\/npm\/dayjs\/dayjs.min.js\"><\/script>\n<script>\n    (function () {\n        if (typeof window.dayjs === 'function') return\n\n        const pad2 = (value) => String(Math.abs(Math.trunc(value))).padStart(2, '0')\n        const cloneDate = (date) => new Date(date.getTime())\n\n        const normalizeDateInput = (input) => {\n            if (input && typeof input === 'object' && input._date instanceof Date) {\n                return cloneDate(input._date)\n            }\n            if (input instanceof Date) {\n                return cloneDate(input)\n            }\n            if (input === null || input === undefined || input === '') {\n                return new Date()\n            }\n            if (typeof input === 'number') {\n                return new Date(input)\n            }\n            if (typeof input === 'string') {\n                const trimmed = input.trim()\n                if (!trimmed) return new Date()\n                const normalized = trimmed.replace(\/-\/g, '\/')\n                const parsed = new Date(normalized)\n                return Number.isNaN(parsed.getTime()) ? new Date(trimmed) : parsed\n            }\n            return new Date(input)\n        }\n\n        const shiftDate = (date, amount, unit) => {\n            const next = cloneDate(date)\n            const value = Number(amount) || 0\n            switch (String(unit || 'day').toLowerCase()) {\n                case 'month':\n                    next.setMonth(next.getMonth() + value)\n                    break\n                case 'year':\n                    next.setFullYear(next.getFullYear() + value)\n                    break\n                case 'week':\n                    next.setDate(next.getDate() + value * 7)\n                    break\n                default:\n                    next.setDate(next.getDate() + value)\n                    break\n            }\n            return next\n        }\n\n        const startOfUnit = (date, unit) => {\n            const next = cloneDate(date)\n            switch (String(unit || 'day').toLowerCase()) {\n                case 'year':\n                    next.setMonth(0, 1)\n                    next.setHours(0, 0, 0, 0)\n                    break\n                case 'month':\n                    next.setDate(1)\n                    next.setHours(0, 0, 0, 0)\n                    break\n                default:\n                    next.setHours(0, 0, 0, 0)\n                    break\n            }\n            return next\n        }\n\n        const endOfUnit = (date, unit) => {\n            const next = startOfUnit(date, unit)\n            switch (String(unit || 'day').toLowerCase()) {\n                case 'year':\n                    next.setFullYear(next.getFullYear() + 1)\n                    next.setMilliseconds(next.getMilliseconds() - 1)\n                    break\n                case 'month':\n                    next.setMonth(next.getMonth() + 1)\n                    next.setMilliseconds(next.getMilliseconds() - 1)\n                    break\n                default:\n                    next.setDate(next.getDate() + 1)\n                    next.setMilliseconds(next.getMilliseconds() - 1)\n                    break\n            }\n            return next\n        }\n\n        const formatDate = (date, pattern = 'YYYY-MM-DD') => {\n            const values = {\n                YYYY: String(date.getFullYear()),\n                MM: pad2(date.getMonth() + 1),\n                DD: pad2(date.getDate()),\n                HH: pad2(date.getHours()),\n                mm: pad2(date.getMinutes()),\n                ss: pad2(date.getSeconds()),\n                Z: (() => {\n                    const offset = -date.getTimezoneOffset()\n                    const sign = offset >= 0 ? '+' : '-'\n                    const absOffset = Math.abs(offset)\n                    return `${sign}${pad2(Math.floor(absOffset \/ 60))}:${pad2(absOffset % 60)}`\n                })()\n            }\n            return String(pattern).replace(\/YYYY|MM|DD|HH|mm|ss|Z\/g, (token) => values[token] ?? token)\n        }\n\n        const createDayjs = (input) => {\n            const date = normalizeDateInput(input)\n            return {\n                _date: date,\n                isValid: () => !Number.isNaN(date.getTime()),\n                format: (pattern = 'YYYY-MM-DDTHH:mm:ssZ') => formatDate(date, pattern),\n                add: (amount, unit) => createDayjs(shiftDate(date, amount, unit)),\n                subtract: (amount, unit) => createDayjs(shiftDate(date, -amount, unit)),\n                startOf: (unit) => createDayjs(startOfUnit(date, unit)),\n                endOf: (unit) => createDayjs(endOfUnit(date, unit)),\n                year: () => date.getFullYear(),\n                month: () => date.getMonth(),\n                date: () => date.getDate(),\n                isBefore: (other, unit) => {\n                    const left = unit ? startOfUnit(date, unit) : date\n                    const rightDate = normalizeDateInput(other)\n                    const right = unit ? startOfUnit(rightDate, unit) : rightDate\n                    return left.getTime() < right.getTime()\n                },\n                isAfter: (other, unit) => {\n                    const left = unit ? startOfUnit(date, unit) : date\n                    const rightDate = normalizeDateInput(other)\n                    const right = unit ? startOfUnit(rightDate, unit) : rightDate\n                    return left.getTime() > right.getTime()\n                },\n                isSame: (other, unit) => {\n                    const left = unit ? startOfUnit(date, unit) : date\n                    const rightDate = normalizeDateInput(other)\n                    const right = unit ? startOfUnit(rightDate, unit) : rightDate\n                    return left.getTime() === right.getTime()\n                },\n                diff: (other, unit = 'millisecond') => {\n                    const rightDate = normalizeDateInput(other)\n                    const leftValue = date.getTime()\n                    const rightValue = rightDate.getTime()\n                    const normalizedUnit = String(unit || 'millisecond').toLowerCase()\n                    switch (normalizedUnit) {\n                        case 'year':\n                            return date.getFullYear() - rightDate.getFullYear()\n                        case 'month':\n                            return (date.getFullYear() - rightDate.getFullYear()) * 12 + (date.getMonth() - rightDate.getMonth())\n                        case 'week':\n                            return Math.floor((leftValue - rightValue) \/ (7 * 24 * 60 * 60 * 1000))\n                        case 'day':\n                            return Math.floor((startOfUnit(date, 'day').getTime() - startOfUnit(rightDate, 'day').getTime()) \/ (24 * 60 * 60 * 1000))\n                        case 'hour':\n                            return Math.floor((leftValue - rightValue) \/ (60 * 60 * 1000))\n                        case 'minute':\n                            return Math.floor((leftValue - rightValue) \/ (60 * 1000))\n                        case 'second':\n                            return Math.floor((leftValue - rightValue) \/ 1000)\n                        default:\n                            return leftValue - rightValue\n                    }\n                },\n                toDate: () => cloneDate(date),\n                valueOf: () => date.getTime()\n            }\n        }\n\n        window.dayjs = createDayjs\n    })()\n<\/script>\n<script src=\"\/wp-content\/static\/js\/vue.global.prod.js\"><\/script>\n<script src=\"\/wp-content\/static\/js\/axios.min.js\"><\/script>\n<script src=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/crypto-js\/4.1.1\/crypto-js.min.js\"><\/script>\n<script>\n    window.hipaaApiSettings = window.hipaaApiSettings || {\n        key: 'HSxZK8nHniLzZtv0Qtfk87wvNvXpJZ5K'\n    };\n<\/script>\n<script src=\"\/wp-content\/themes\/astra\/assets\/js\/api-client.js\"><\/script>\n<script src=\"\/wp-content\/themes\/astra\/js\/regions.js?v=20260715-state-sync\"><\/script>\n<link href=\"\/wp-content\/themes\/astra\/assets\/css\/ggs-page-tailwind.min.css?v=20260823\" rel=\"stylesheet\">\n<script src=\"\/wp-content\/static\/element\/index.full.min.js\"><\/script>\n\n\n<style>\n    \/* rem\u4f7f\u7528,\u5148\u8bbe\u7f6ehtml\u6839\u5b57\u53f7\u5927\u5c0f,\u4e0d\u540c\u5206\u8fa8\u7387\u5c4f\u5e55,\u8bbe\u7f6e\u4e0d\u540c\u7684html\u6839\u5b57\u53f7\u5927\u5c0f *\/\n    html {\n        font-size: 16px;\n        \/* \u9ed8\u8ba4\u5b57\u4f53\u5927\u5c0f *\/\n    }\n    @media (max-width: 1200px) {\n        html {\n            font-size: 14px;\n            \/* \u5f53\u5c4f\u5e55\u5bbd\u5ea6\u5c0f\u4e8e1200px\u65f6\uff0c\u6839\u5143\u7d20\u5b57\u4f53\u7f29\u5c0f *\/\n        }\n    }\n\n    @media (max-width: 768px) {\n        .address-font {\n            flex-direction: column !important;\n            align-items: flex-start !important;\n        }\n        html {\n            font-size: 12px;\n            \/* \u5f53\u5c4f\u5e55\u5bbd\u5ea6\u5c0f\u4e8e768px\u65f6\uff0c\u6839\u5143\u7d20\u5b57\u4f53\u8fdb\u4e00\u6b65\u7f29\u5c0f *\/\n        }\n\n        .bigBox {\n            padding-left: 0rem !important;\n            margin: 0.125rem !important;\n        }\n\n        .divWidth {\n            width: 100% !important;\n        }\n\n        .inputWidth {\n            width: 100% !important;\n        }\n\n        .inputWidth2 {\n            width: 94% !important;\n        }\n\n        .radiuBox {\n            margin-left: -0.5rem;\n            justify-content: space-around;\n        }\n\n        .radioWidth {\n            width: 45% !important;\n        }\n\n        .radioTop {\n            margin-top: -1rem !important;\n        }\n\n        .radioLeft {\n            margin-left: 1rem !important;\n        }\n\n        .secondNext {\n            margin-right: 3.25rem !important;\n        }\n\n        .firstNext {\n            margin-right: 0 !important;\n        }\n\n        .payBox {\n            justify-content: center !important;\n            margin: 0 !important;\n        }\n\n        .payBtn {\n            width: 80% !important;\n            margin-bottom: 10px !important;\n            margin-right: 0 !important;\n        }\n\n        .payBtnBox {\n            width: 100% !important;\n            margin-right: 0 !important;\n            justify-content: center !important;\n        }\n\n        .payBtnBox button:first-child {\n            margin-right: 0 !important;\n            width:80%!important;\n        }\n        .modal-content-yisihui {\n            width:70%!important;\n            margin-top:25vh!important;\n        }\n        .modal-content-buy {\n            width:300px!important;\n            margin-top:15vh!important;\n        }\n        .inputWrap{\n            flex-wrap:wrap;\n            width:91%!important;\n            margin-left:1rem;\n        }\n        .inputWrap div:first-child{\n            margin:0!important;\n        }\n        .numDependent{\n            margin-top:0!important;\n        }\n        .spouse{\n            margin-bottom:0!important;\n        }\n        .lastButtons{\n            flex-direction:column;\n            align-items:center;\n            \/* padding-right:1rem!important; *\/\n        }\n        .lastButtons button:first-child{\n            width:80%!important;\n            \/* transform:translateX(-1rem); *\/\n            margin-bottom:10px!important;\n        }\n        .lastButtons div{\n            width:100%!important;\n            \/* transform:translateX(-3rem); *\/\n            flex-direction:column;\n            justify-content:center;\n        }\n        .lastButtons  button{\n            transform:translateX(-1rem);\n        }\n        .lastButtons div button{\n            transform:translateX(2rem);\n        }\n\n    }\n\n    @font-face {\n        font-family: 'PingFang SC-Bold';\n        src: url('\/wp-content\/static\/font\/minFont\/PINGFANG_BOLD.subset.woff2') format('woff2');\n        font-display: swap;\n    }\n\n    \/*@font-face {*\/\n    \/*    font-family: 'PingFang SC-Bold';*\/\n    \/*    src: url('\/wp-content\/static\/font\/regular\/ArchivoBlack-Regular.woff2') format('woff2');*\/\n    \/*    font-weight: bold;*\/\n    \/*    font-style: normal;*\/\n    \/*}*\/\n    .entry-content {\n        background-color: #fafaf9;\n    }\n\n    input:focus,\n    textarea:focus {\n        outline: none;\n    }\n\n    .family-section {\n        width: 100%;\n        display: flex;\n        flex-direction: column;\n        gap: 10px;\n        margin-top: 0;\n    }\n\n    .family-selector-row {\n        width: 100%;\n        display: flex;\n        flex-wrap: wrap;\n        gap: 23px;\n    }\n\n    .family-selector-card {\n        width: 46.5%;\n        position: relative;\n        min-height: 3rem;\n        border: 0;\n        border-radius: 8px;\n        background: transparent;\n        padding: 0;\n    }\n\n    .family-field-title {\n        position: absolute;\n        top: 15px;\n        left: 10px;\n        z-index: 1;\n        display: block;\n        margin: 0;\n        font-size: 13px;\n        font-weight: 400;\n        color: #9ca3af;\n        line-height: 1;\n        pointer-events: none;\n    }\n\n    .family-radio-group {\n        display: flex;\n        align-items: center;\n        gap: 24px;\n        height: 3rem;\n        margin: .625rem auto;\n        padding: 20px 10px 7px;\n        border-radius: 8px;\n        background: #F0F7FF;\n    }\n\n    .family-radio-option {\n        display: inline-flex;\n        align-items: center;\n        gap: 8px;\n        cursor: pointer;\n        font-size: 16px;\n        font-weight: 400;\n        color: #0f172a;\n    }\n\n    .family-radio-option input[type=\"radio\"] {\n        position: absolute;\n        opacity: 0;\n        width: 0;\n        height: 0;\n    }\n\n    .family-radio-icon {\n        width: 20px;\n        height: 20px;\n        object-fit: contain;\n    }\n\n    .family-form-block {\n        width: 100%;\n        display: flex;\n        flex-direction: column;\n        gap: 8px;\n    }\n\n    .family-form-title {\n        display: flex;\n        align-items: center;\n        gap: 0;\n        margin: 8px 0 0;\n        font-size: 20px;\n        font-weight: 800;\n        color: #001f54;\n    }\n\n    .family-form-title::before {\n        content: none;\n    }\n\n    .family-child-label {\n        font-weight: 700;\n        color: #0f172a;\n        margin-top: 2px;\n    }\n\n    .family-member-row {\n        width: 100%;\n        display: grid;\n        grid-template-columns: repeat(4, minmax(0, 1fr));\n        gap: 23px;\n        align-items: end;\n    }\n\n    @media (max-width: 768px) {\n        .family-selector-card {\n            width: 100%;\n        }\n\n        .family-member-row {\n            grid-template-columns: 1fr;\n            gap: 10px;\n        }\n    }\n\n    \/*\u6b65\u9aa4\u6761\u6837\u5f0f *\/\n    .stepper-container {\n        width: 80%;\n        margin: 0 auto;\n        text-align: center;\n    }\n\n    .stepper {\n        display: flex;\n        justify-content: space-between;\n        align-items: center;\n        \/* margin-bottom: 2rem; *\/\n    }\n\n    .step {\n        position: relative;\n        width: 12.5rem;\n        \/* padding: 1rem; *\/\n        text-align: center;\n        \/* border: 2px solid #ccc; *\/\n        \/* border-radius: 12px; *\/\n        \/* background-color: #f4f4f4; *\/\n        transition: background-color 0.3s, border-color 0.3s;\n        display:flex;\n    }\n\n    .step .step-number {\n        background-color: rgb(21, 88, 218);\n        color: white;\n        border-radius: 50%;\n        width: 2.5rem;\n        height: 2.5rem;\n        line-height: 2.5rem;\n        margin: 0 auto 1rem;\n        box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.2);\n    }\n\n\n    \/* \u6b65\u9aa4\u4e8c *\/\n\n    .dropdown {\n        position: relative;\n        width: 200px;\n        font-family: Arial, sans-serif;\n    }\n\n    .search-input {\n        width: 100%;\n        padding: 8px;\n        border: 1px solid #ccc;\n        border-radius: 4px;\n        box-sizing: border-box;\n    }\n\n    .dropdown-list {\n        position: absolute;\n        top: 100%;\n        left: 0;\n        right: 0;\n        max-height: 150px;\n        overflow-y: auto;\n        background-color: white;\n        border: 1px solid #ccc;\n        border-top: none;\n        border-radius: 4px;\n        margin-top: 4px;\n        padding: 0;\n        list-style-type: none;\n        box-sizing: border-box;\n    }\n\n    .dropdown-item {\n        padding: 8px;\n        cursor: pointer;\n    }\n\n    .dropdown-item:hover {\n        background-color: #f0f0f0;\n    }\n\n    .no-result {\n        padding: 8px;\n        color: #999;\n        text-align: center;\n    }\n\n    input[type=\"checkbox\"] {\n        transform: scale(1.5);\n        transform-origin: center;\n        \/* \u8c03\u6574\u6b64\u503c\u6765\u6539\u53d8\u590d\u9009\u6846\u7684\u5927\u5c0f\uff0c1.5\u4e3a150% *\/\n    }\n    \/* \u6a21\u6001\u6846\u6837\u5f0f *\/\n    .modal {\n        display: none; \/* \u9ed8\u8ba4\u9690\u85cf *\/\n        position: fixed;\n        z-index: 10020;\n        left: 0;\n        top: 0;\n        width: 100%;\n        height: 100%;\n        overflow: hidden;\n        background-color: rgba(0, 0, 0, 0.4); \/* \u80cc\u666f\u534a\u900f\u660e\u9ed1\u8272 *\/\n        z-index: 10020;\n    }\n\n    \/* \u6a21\u6001\u6846\u5185\u5bb9 *\/\n    .modal-content {\n        background-color: #fff;\n        margin: 15% auto;\n        padding: 20px;\n        border-radius: 10px;\n        \/* width: 50%; *\/\n        width:28.125rem;\n        max-width: 500px;\n        box-shadow: 0 5px 15px rgba(0, 0, 0, 0.3);\n    }\n\n    .wechat-modal-speed-note {\n        margin: 0.35rem auto 0.6rem;\n        padding: 0.45rem 0.75rem;\n        border-radius: 999px;\n        background: #eff6ff;\n        color: #1558DA;\n        font-size: 0.875rem;\n        font-weight: 700;\n        line-height: 1.35;\n        text-align: center;\n    }\n\n    \/* \u5173\u95ed\u6309\u94ae\u6837\u5f0f *\/\n    .close-btn {\n        color: #aaa;\n        font-size: 28px;\n        font-weight: bold;\n        position: absolute;\n        top: 10px;\n        right: 15px;\n        cursor: pointer;\n    }\n\n    .close-btn:hover,\n    .close-btn:focus {\n        color: black;\n        text-decoration: none;\n    }\n    \/* \u8b66\u544a\u6846\u6837\u5f0f *\/\n    #customAlert {\n        display: none;\n        position: fixed;\n        left: 50%;\n        top: 50%;\n        transform: translate(-50%, -50%) scale(0.8);\n        background-color: #f8d7da;\n        color: #721c24;\n        border: 1px solid #f5c6cb;\n        padding: 20px;\n        border-radius: 10px;\n        box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);\n        z-index:999;\n        opacity: 0; \/* \u521d\u59cb\u900f\u660e\u5ea6 *\/\n        transition: opacity 0.3s ease, transform 0.3s ease; \/* \u52a8\u753b\u6548\u679c *\/\n    }\n    #customAlert.show {\n        display: block;\n        opacity: 1; \/* \u663e\u793a\u65f6\u900f\u660e\u5ea6\u4e3a1 *\/\n        transform: translate(-50%, -50%) scale(1); \/* \u663e\u793a\u65f6\u6062\u590d\u6b63\u5e38\u5c3a\u5bf8 *\/\n    }\n    \/* \u6b65\u9aa4\u56db *\/\n    .payment-success {\n        text-align: center;\n        padding: 20px;\n    }\n\n    .icon-container {\n        margin-bottom: 20px;\n    }\n\n    .success-icon {\n        width: 50px;\n        height: 50px;\n    }\n\n    .success-message {\n        color: #555;\n        font-size: 16px;\n        margin-bottom: 20px;\n    }\n\n    .order-info {\n        background-color: #fff;\n        padding: 15px;\n        border-radius: 8px;\n        \/* box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); *\/\n        margin-bottom: 20px;\n        display:flex;\n        justify-content:center;\n        align-items:center;\n    }\n\n    .order-info p {\n        margin: 5px 0;\n    }\n\n    #app #myModal {\n        overflow: hidden !important;\n    }\n\n    #app .wechat-payment-modal {\n        position: relative;\n        width: min(640px, calc(100vw - 24px));\n        max-width: 640px;\n        margin: 6vh auto 0;\n        background: linear-gradient(180deg, #ffffff 0%, #f7fbff 100%);\n        border-radius: 28px;\n        padding: 28px 28px 24px;\n        box-shadow: 0 20px 60px rgba(21, 88, 218, 0.16);\n        overflow: hidden;\n    }\n\n    #app .wechat-payment-modal__close {\n        position: absolute;\n        right: 18px;\n        top: 14px;\n        width: 36px;\n        height: 36px;\n        border: 0 !important;\n        border-radius: 999px;\n        background: transparent !important;\n        color: #111111 !important;\n        font-size: 22px;\n        line-height: 1;\n        cursor: pointer;\n        box-shadow: none !important;\n    }\n\n    #app .wechat-payment-modal__title {\n        margin: 0 0 8px;\n        font-size: 26px;\n        font-weight: 800;\n        color: #0f172a !important;\n        text-align: center;\n    }\n\n    #app .wechat-payment-modal__subtitle,\n    #app .wechat-payment-modal__tip,\n    #app .wechat-payment-modal__meta,\n    #app .wechat-success-desc,\n    #app .wechat-success-note {\n        color: #475569 !important;\n    }\n\n    #app .wechat-payment-modal__grid {\n        display: grid;\n        grid-template-columns: repeat(2, minmax(0, 1fr));\n        gap: 14px;\n        margin-top: 20px;\n    }\n\n    #app .wechat-payment-modal__field {\n        display: flex;\n        flex-direction: column;\n        gap: 8px;\n    }\n\n    #app .wechat-payment-modal__label {\n        font-size: 14px;\n        font-weight: 700;\n        color: #0f172a !important;\n    }\n\n    #app .wechat-payment-modal__input,\n    #app .wechat-payment-modal__select {\n        width: 100%;\n        height: 48px;\n        border: 1px solid #cbd5e1 !important;\n        border-radius: 14px;\n        padding: 0 16px;\n        background: #ffffff !important;\n        color: #0f172a !important;\n        box-shadow: none !important;\n    }\n\n    #app .wechat-payment-modal__input:focus,\n    #app .wechat-payment-modal__select:focus {\n        border-color: #1558da !important;\n        outline: none !important;\n        box-shadow: 0 0 0 3px rgba(21, 88, 218, 0.12) !important;\n    }\n\n    #app .wechat-payment-modal__error {\n        margin: 12px 0 0;\n        color: #dc2626 !important;\n        font-size: 13px;\n        text-align: center;\n    }\n\n    #app .wechat-payment-modal__button-row,\n    #app .wechat-success-actions {\n        display: flex;\n        flex-wrap: wrap;\n        gap: 12px;\n        justify-content: center;\n        margin-top: 20px;\n    }\n\n    #app .wechat-primary-btn,\n    #app .wechat-secondary-btn,\n    #app .wechat-support-btn {\n        display: inline-flex;\n        align-items: center;\n        justify-content: center;\n        min-height: 48px;\n        padding: 0 20px;\n        border-radius: 14px;\n        font-weight: 700;\n        text-decoration: none !important;\n        cursor: pointer;\n        box-shadow: none !important;\n        text-shadow: none !important;\n        transition: transform 0.2s ease, opacity 0.2s ease;\n    }\n\n    #app .wechat-primary-btn {\n        border: 0 !important;\n        background: #1558da !important;\n        color: #ffffff !important;\n    }\n\n    #app .wechat-secondary-btn {\n        border: 1px solid #1558da !important;\n        background: #ffffff !important;\n        color: #1558da !important;\n    }\n\n    #app .wechat-support-btn {\n        border: 1px solid #1558da !important;\n        background: #edf4ff !important;\n        color: #1558da !important;\n    }\n\n    #app .wechat-primary-btn:hover,\n    #app .wechat-secondary-btn:hover,\n    #app .wechat-support-btn:hover {\n        transform: translateY(-1px);\n    }\n\n    #app .wechat-success-page {\n        width: 100%;\n        padding: 24px 0 40px;\n    }\n\n    #app .wechat-success-card {\n        max-width: 860px;\n        margin: 0 auto;\n        background: linear-gradient(180deg, #ffffff 0%, #f7fbff 100%);\n        border-radius: 28px;\n        border: 1px solid rgba(21, 88, 218, 0.12);\n        box-shadow: 0 18px 50px rgba(15, 23, 42, 0.08);\n        padding: 28px;\n        color: #0f172a !important;\n    }\n\n    #app .wechat-success-hero {\n        display: flex;\n        flex-direction: column;\n        align-items: center;\n        text-align: center;\n        gap: 12px;\n    }\n\n    #app .wechat-success-badge {\n        width: 76px;\n        height: 76px;\n        border-radius: 50%;\n        display: flex;\n        align-items: center;\n        justify-content: center;\n        background: #1558da !important;\n        color: #ffffff !important;\n        font-size: 34px;\n        font-weight: 800;\n        box-shadow: 0 12px 28px rgba(21, 88, 218, 0.28);\n    }\n\n    #app .wechat-success-title {\n        margin: 0;\n        font-size: 30px;\n        font-weight: 800;\n        color: #0f172a !important;\n    }\n\n    #app .wechat-success-panel {\n        margin-top: 22px;\n        padding: 20px;\n        border-radius: 22px;\n        background: #ffffff;\n        border: 1px solid rgba(148, 163, 184, 0.35);\n    }\n\n    #app .wechat-upload-zone {\n        border: 1.5px dashed #1558da !important;\n        border-radius: 18px;\n        padding: 18px;\n        background: #f8fbff !important;\n        color: #0f172a !important;\n    }\n\n    #app .wechat-upload-zone input[type=\"file\"] {\n        width: 100%;\n        color: #0f172a !important;\n    }\n\n    #app .wechat-file-list {\n        display: grid;\n        gap: 10px;\n        margin-top: 14px;\n    }\n\n    #app .wechat-file-item {\n        display: flex;\n        align-items: center;\n        justify-content: space-between;\n        gap: 12px;\n        padding: 12px 14px;\n        border-radius: 14px;\n        background: #ffffff;\n        border: 1px solid #dbeafe;\n        color: #0f172a !important;\n    }\n\n    #app .wechat-file-remove {\n        border: 0 !important;\n        background: transparent !important;\n        color: #dc2626 !important;\n        font-weight: 700;\n        cursor: pointer;\n    }\n\n    #app .yisihui-success-page {\n        width: 100%;\n        min-height: calc(100vh - 120px);\n        padding: 24px 0 40px;\n        background: transparent;\n        box-sizing: border-box;\n    }\n\n    #app .yisihui-success-page .page {\n        max-width: 840px;\n        margin: 0 auto;\n        padding: 28px 24px 48px;\n    }\n\n    #app .yisihui-success-page .page-view {\n        display: none;\n    }\n\n    #app .yisihui-success-page .page-view.active {\n        display: block;\n    }\n\n    #app .yisihui-success-page .hero {\n        margin-bottom: 18px;\n    }\n\n    .hero {\n        display: flex !important;\n        flex-direction: column !important;\n        align-items: center !important;\n    }\n\n    #app .yisihui-success-page .eyebrow {\n        display: inline-flex;\n        align-items: center;\n        gap: 8px;\n        padding: 7px 11px;\n        border-radius: 999px;\n        border: 1px solid #d9e5ff;\n        background: #eef4ff;\n        color: #165dff !important;\n        font-size: 12px;\n        font-weight: 800;\n        margin-bottom: 8px;\n        position: relative;\n        z-index: 2;\n    }\n\n    #app .yisihui-success-page .hero-title {\n        margin: 0;\n        font-size: clamp(24px, 3vw, 32px);\n        line-height: 1.12;\n        letter-spacing: -0.025em;\n        color: #0f2454 !important;\n        font-weight: 900;\n        max-width: 760px;\n        text-wrap: balance;\n        position: relative;\n        z-index: 1;\n        text-align: center;\n    }\n\n    #app .yisihui-success-page .surface {\n        background: #ffffff;\n        border: 1px solid rgba(223, 230, 242, 0.95);\n        border-radius: 24px;\n        box-shadow: 0 22px 56px rgba(15, 37, 84, 0.10);\n        padding: 28px;\n        margin-top: 8px;\n    }\n\n    #app .yisihui-success-page .content-card {\n        border: 1px solid #dfe6f2;\n        border-radius: 20px;\n        padding: 20px;\n        background: #ffffff;\n    }\n\n    #app .yisihui-success-page .section-title {\n        margin: 0;\n        font-size: 20px;\n        line-height: 1.3;\n        font-weight: 900;\n        color: #0f2454 !important;\n        letter-spacing: -0.02em;\n    }\n\n    #app .yisihui-success-page .section-desc {\n        margin: 10px 0 0;\n        color: #475467 !important;\n        font-size: 14px;\n        line-height: 1.6;\n    }\n\n    #app .yisihui-success-page .tag-row {\n        display: flex;\n        flex-wrap: wrap;\n        gap: 10px;\n        margin-top: 14px;\n    }\n\n    #app .yisihui-success-page .tag {\n        display: inline-flex;\n        align-items: center;\n        justify-content: center;\n        min-height: 32px;\n        padding: 0 12px;\n        border-radius: 999px;\n        border: 1px solid #d9e5ff;\n        background: #eef4ff;\n        color: #36598f !important;\n        font-size: 12.5px;\n        font-weight: 800;\n        white-space: nowrap;\n    }\n\n    #app .yisihui-success-page .hidden-input {\n        display: none;\n    }\n\n    #app .yisihui-success-page .upload-box {\n        margin-top: 16px;\n        border: 1.5px dashed #b9cbef;\n        border-radius: 20px;\n        background: #fbfdff;\n        padding: 18px;\n        cursor: pointer;\n        transition: border-color 0.15s ease, background 0.15s ease, transform 0.15s ease;\n    }\n\n    #app .yisihui-success-page .upload-error {\n        margin: 12px 0 0;\n        color: #dc2626 !important;\n        font-size: 13px;\n        line-height: 1.4;\n        font-weight: 700;\n    }\n\n    #app .yisihui-success-page .upload-box:hover,\n    #app .yisihui-success-page .upload-box.drag-over {\n        border-color: #165dff;\n        background: #f7faff;\n        transform: translateY(-1px);\n    }\n\n    #app .yisihui-success-page .upload-main {\n        display: flex;\n        align-items: center;\n        justify-content: center;\n        gap: 12px;\n        text-align: left;\n    }\n\n    #app .yisihui-success-page .upload-box svg {\n        width: 28px;\n        height: 28px;\n        color: #165dff;\n        flex: none;\n    }\n\n    #app .yisihui-success-page .upload-title {\n        margin: 0;\n        color: #0f2454 !important;\n        font-size: 16px;\n        font-weight: 800;\n    }\n\n    #app .yisihui-success-page .upload-hint-tag {\n        display: inline-flex;\n        align-items: center;\n        min-height: 28px;\n        margin-top: 8px;\n        padding: 0 10px;\n        border-radius: 999px;\n        background: #eef4ff;\n        border: 1px solid #d9e5ff;\n        color: #4f6385 !important;\n        font-size: 12px;\n        line-height: 1;\n        font-weight: 800;\n    }\n\n    #app .yisihui-success-page .file-list {\n        margin-top: 14px;\n        padding: 12px 14px;\n        border-radius: 16px;\n        border: 1px solid #d9e5ff;\n        background: #f8fbff;\n    }\n\n    #app .yisihui-success-page .empty-file-state {\n        color: #7b879b !important;\n        font-size: 13px;\n        line-height: 1.5;\n        text-align: center;\n    }\n\n    #app .yisihui-success-page .file-item {\n        display: flex;\n        align-items: center;\n        justify-content: space-between;\n        gap: 10px;\n        padding: 8px 0;\n        color: #344054 !important;\n        font-size: 14px;\n        border-bottom: 1px dashed #d8e6ff;\n        word-break: break-all;\n    }\n\n    #app .yisihui-success-page .file-item:last-child {\n        border-bottom: 0;\n    }\n\n    #app .yisihui-success-page .file-meta {\n        min-width: 0;\n        display: flex;\n        align-items: center;\n        gap: 10px;\n        flex: 1;\n    }\n\n    #app .yisihui-success-page .file-name {\n        min-width: 0;\n        overflow: hidden;\n        text-overflow: ellipsis;\n        white-space: nowrap;\n    }\n\n    #app .yisihui-success-page .file-item svg {\n        width: 18px;\n        height: 18px;\n        color: #165dff;\n        flex: none;\n    }\n\n    #app .yisihui-success-page .remove-file-btn {\n        width: 30px;\n        height: 30px;\n        border: 0;\n        border-radius: 999px;\n        background: #eef4ff;\n        color: #5f76a8;\n        display: grid;\n        place-items: center;\n        cursor: pointer;\n        flex: none;\n        transition: background 0.15s ease, color 0.15s ease;\n    }\n\n    #app .yisihui-success-page .remove-file-btn:hover {\n        background: #ffecec;\n        color: #d92d20;\n    }\n\n    #app .yisihui-success-page .remove-file-btn svg {\n        width: 16px;\n        height: 16px;\n        color: currentColor;\n    }\n\n    #app .yisihui-success-page .actions,\n    #app .yisihui-success-page .footer-actions {\n        margin-top: 20px;\n        display: grid;\n        grid-template-columns: 1fr 1fr;\n        gap: 16px;\n    }\n\n    #app .yisihui-success-page .btn {\n        height: 52px;\n        border-radius: 16px;\n        border: 0;\n        display: inline-flex;\n        align-items: center;\n        justify-content: center;\n        gap: 10px;\n        width: 100%;\n        font-size: 15px;\n        font-weight: 900;\n        text-decoration: none;\n        cursor: pointer;\n        transition: transform 0.15s ease, background 0.15s ease, box-shadow 0.15s ease, border-color 0.15s ease;\n        -webkit-tap-highlight-color: transparent;\n    }\n\n    #app .yisihui-success-page .btn:active {\n        transform: translateY(1px);\n    }\n\n    #app .yisihui-success-page .btn-primary {\n        color: #fff !important;\n        background: linear-gradient(180deg, #1f67ff 0%, #0e4fe0 100%);\n        box-shadow: 0 10px 22px rgba(22, 93, 255, 0.2);\n    }\n\n    #app .yisihui-success-page .btn-secondary {\n        color: #165dff !important;\n        background: #fff;\n        border: 2px solid #165dff;\n    }\n\n    #app .yisihui-success-page .btn .icon-round {\n        width: 30px;\n        height: 30px;\n        border-radius: 999px;\n        background: rgba(255,255,255,0.18);\n        display: grid;\n        place-items: center;\n        flex: none;\n    }\n\n    #app .yisihui-success-page .btn-secondary .icon-round {\n        background: rgba(22, 93, 255, 0.10);\n    }\n\n    #app .yisihui-success-page .success-card {\n        border: 1px solid #ccebd7;\n        background: linear-gradient(180deg, #ffffff 0%, #fbfffc 100%);\n        border-radius: 20px;\n        padding: 28px 22px;\n        text-align: center;\n    }\n\n    #app .yisihui-success-page .success-mark {\n        width: 62px;\n        height: 62px;\n        margin: 0 auto 18px;\n        border-radius: 999px;\n        background: #effaf3;\n        color: #16a34a !important;\n        border: 1px solid #ccebd7;\n        display: grid;\n        place-items: center;\n    }\n\n    #app .yisihui-success-page .success-card h2 {\n        margin: 0;\n        color: #0f2454 !important;\n        font-size: 24px;\n        line-height: 1.2;\n        font-weight: 900;\n        letter-spacing: -0.03em;\n    }\n\n    #app .yisihui-success-page .success-card p {\n        margin: 12px auto 0;\n        max-width: 560px;\n        color: #475467 !important;\n        font-size: 15px;\n        line-height: 1.65;\n    }\n\n    #app .yisihui-success-page .upload-feedback {\n        margin: 12px 0 0;\n        text-align: center;\n        font-size: 13px;\n        font-weight: 700;\n        line-height: 1.4;\n    }\n\n    #app .yisihui-success-page .upload-feedback--success {\n        color: #059669 !important;\n    }\n\n    #app .yisihui-success-page .upload-feedback--error {\n        color: #e11d48 !important;\n    }\n\n    #app .payment-modal {\n        width: 460px;\n        height: 660px;\n        max-width: calc(100vw - 32px);\n        max-height: calc(100vh - 32px);\n        padding: 30px 30px 26px;\n        position: relative;\n        overflow: hidden;\n        background: #ffffff;\n        border-radius: 22px;\n        box-shadow: 0 24px 70px rgba(4, 18, 50, 0.18);\n        border: 1px solid rgba(217, 223, 236, 0.95);\n    }\n\n    #app .payment-modal.is-hidden {\n        display: none;\n    }\n\n    #app .modal-close {\n        position: absolute;\n        top: 24px;\n        right: 24px;\n        width: 28px;\n        height: 28px;\n        border: 0;\n        background: transparent;\n        color: #2d3a5c;\n        cursor: pointer;\n        z-index: 3;\n    }\n\n    #app .modal-close::before,\n    #app .modal-close::after {\n        content: \"\";\n        position: absolute;\n        left: 13px;\n        top: 2px;\n        width: 3px;\n        height: 25px;\n        border-radius: 999px;\n        background: currentColor;\n    }\n\n    #app .modal-close::before {\n        transform: rotate(45deg);\n    }\n\n    #app .modal-close::after {\n        transform: rotate(-45deg);\n    }\n\n    #app .step-panel {\n        display: none;\n        min-height: 100%;\n        flex-direction: column;\n    }\n\n    #app .step-panel.active {\n        display: flex;\n        animation: stepFade 0.22s ease-out;\n    }\n\n    @keyframes stepFade {\n        from {\n            opacity: 0;\n            transform: translateY(8px);\n        }\n\n        to {\n            opacity: 1;\n            transform: translateY(0);\n        }\n    }\n\n    #app .modal-title {\n        margin: 0;\n        padding-right: 42px;\n        color: #081a3c;\n        font-size: 30px;\n        line-height: 1.15;\n        letter-spacing: -0.05em;\n        font-weight: 900;\n    }\n\n    #app .modal-subtitle {\n        margin: 6px 0 0;\n        color: #243252;\n        font-size: 15px;\n        line-height: 1.35;\n        font-weight: 500;\n    }\n\n    #app .step-indicator {\n        margin-top: 12px;\n        display: flex;\n        align-items: center;\n        gap: 8px;\n    }\n\n    #app .step-dot {\n        width: 24px;\n        height: 5px;\n        border-radius: 999px;\n        background: #d8e2f3;\n    }\n\n    #app .step-dot.active {\n        background: #165dff;\n    }\n\n    #app .notice {\n        margin-top: 18px;\n        min-height: 48px;\n        padding: 12px 16px;\n        display: flex;\n        align-items: center;\n        gap: 12px;\n        border-radius: 13px;\n        color: #0b56d9;\n        font-size: 15px;\n        line-height: 1.45;\n        font-weight: 800;\n        letter-spacing: -0.02em;\n        background:\n                linear-gradient(90deg, rgba(225, 235, 255, 0.95), rgba(237, 244, 255, 0.95)),\n                radial-gradient(circle at 30% 30%, rgba(0, 87, 255, 0.2), transparent 40%);\n        border: 1px solid #d6e3ff;\n    }\n\n    #app .notice.dark {\n        color: #0b1e47;\n    }\n\n    #app .shield {\n        flex: 0 0 auto;\n        width: 30px;\n        height: 30px;\n        display: grid;\n        place-items: center;\n        color: #fff;\n        background: linear-gradient(180deg, #146cff, #0050dc);\n        clip-path: polygon(50% 0%, 90% 16%, 90% 48%, 78% 76%, 50% 100%, 22% 76%, 10% 48%, 10% 16%);\n        filter: drop-shadow(0 5px 10px rgba(0, 87, 255, 0.25));\n    }\n\n    #app .shield svg {\n        width: 18px;\n        height: 18px;\n    }\n\n    #app .identity-card {\n        margin-top: 22px;\n        padding: 22px 18px 18px;\n        border: 1px solid #d9dfec;\n        border-radius: 15px;\n    }\n\n    #app .form-group {\n        margin-bottom: 18px;\n    }\n\n    #app .form-group:last-of-type {\n        margin-bottom: 0;\n    }\n\n    #app .label-row {\n        margin-bottom: 8px;\n        display: flex;\n        align-items: center;\n        justify-content: space-between;\n        gap: 10px;\n    }\n\n    #app .modal-close,\n    #app .payment-modal label,\n    #app .payment-modal .input,\n    #app .payment-modal .btn,\n    #app .payment-modal .pill {\n        font-family: Inter, -apple-system, BlinkMacSystemFont, \"Segoe UI\", \"PingFang SC\", \"Microsoft YaHei\", sans-serif;\n    }\n\n    #app .payment-modal label {\n        display: block;\n        color: #111f43;\n        font-size: 15px;\n        line-height: 1.35;\n        font-weight: 800;\n        letter-spacing: -0.02em;\n    }\n\n    #app .pill {\n        display: inline-flex;\n        align-items: center;\n        justify-content: center;\n        height: 28px;\n        padding: 0 12px;\n        border-radius: 999px;\n        background: #edf4ff;\n        border: 1px solid #b7d2ff;\n        color: #075bdc;\n        font-size: 13px;\n        font-weight: 800;\n        white-space: nowrap;\n    }\n\n    #app .input {\n        width: 100%;\n        height: 50px;\n        padding: 0 14px;\n        border: 1.5px solid #cfd6e4;\n        border-radius: 10px;\n        color: #081a3c;\n        font-size: 16px;\n        line-height: 1;\n        font-weight: 700;\n        outline: none;\n        transition: border-color 0.18s ease, box-shadow 0.18s ease;\n        background: #fff;\n    }\n\n    #app .input::placeholder {\n        color: #778198;\n        font-weight: 600;\n    }\n\n    #app .input:focus {\n        border-color: #0057ff;\n        box-shadow: 0 0 0 4px rgba(0, 87, 255, 0.12);\n    }\n\n    #app .secure-note {\n        margin-top: 12px;\n        display: flex;\n        align-items: flex-start;\n        gap: 10px;\n        color: #53617d;\n        font-size: 13px;\n        line-height: 1.45;\n        font-weight: 700;\n    }\n\n    #app .secure-note svg {\n        width: 22px;\n        height: 22px;\n        flex: 0 0 auto;\n        color: #075bdc;\n    }\n\n    #app .error-message {\n        display: block;\n        margin-top: 8px;\n        color: #d92d20;\n        font-size: 12px;\n        line-height: 1.4;\n        font-weight: 700;\n        min-height: 17px;\n        visibility: hidden;\n    }\n\n    #app .error-message.show {\n        visibility: visible;\n    }\n\n    #app .divider {\n        height: 1px;\n        margin: 22px 0 14px;\n        background: #d9dfec;\n    }\n\n    #app .center-note {\n        margin-bottom: 16px;\n        display: flex;\n        align-items: center;\n        justify-content: center;\n        gap: 8px;\n        color: #2d3a58;\n        font-size: 14px;\n        font-weight: 700;\n        text-align: center;\n    }\n\n    #app .center-note svg {\n        width: 22px;\n        height: 22px;\n        color: #075bdc;\n        flex: 0 0 auto;\n    }\n\n    #app .modal-actions,\n    #app .qr-actions {\n        display: grid;\n        grid-template-columns: 1fr 1fr;\n        gap: 14px;\n    }\n\n    #app .btn {\n        height: 52px;\n        border-radius: 10px;\n        border: 2px solid #0057ff;\n        display: inline-flex;\n        align-items: center;\n        justify-content: center;\n        gap: 10px;\n        font-size: 16px;\n        font-weight: 900;\n        letter-spacing: -0.03em;\n        cursor: pointer;\n        transition: transform 0.16s ease, box-shadow 0.16s ease, background 0.16s ease;\n        text-decoration: none;\n    }\n\n    #app .btn:hover {\n        transform: translateY(-1px);\n    }\n\n    #app .btn-primary {\n        color: #fff !important;\n        background: linear-gradient(135deg, #0057ff, #0047e8);\n        box-shadow: 0 10px 20px rgba(0, 87, 255, 0.22);\n    }\n\n    #app .btn-secondary {\n        color: #075bdc !important;\n        background: #fff;\n    }\n\n    #app .btn-icon-circle {\n        flex: 0 0 auto;\n        width: 28px;\n        height: 28px;\n        display: grid;\n        place-items: center;\n        border-radius: 999px;\n        color: #075bdc;\n        background: #fff;\n    }\n\n    #app .btn-icon-circle svg {\n        width: 18px;\n        height: 18px;\n    }\n\n    #app .qr-area {\n        margin-top: 6px;\n        text-align: center;\n    }\n\n    #app .qr-box {\n        width: 190px;\n        height: 190px;\n        margin: 0 auto;\n        display: grid;\n        place-items: center;\n        position: relative;\n    }\n\n    #app .qr-image {\n        width: 180px;\n        height: 180px;\n        border-radius: 50%;\n        display: grid;\n        place-items: center;\n        position: relative;\n        overflow: hidden;\n        background:\n                radial-gradient(circle at center, white 0 28%, transparent 28.5%),\n                repeating-conic-gradient(\n                        from 6deg,\n                        #000 0 2deg,\n                        transparent 2deg 6deg,\n                        #000 6deg 7deg,\n                        transparent 7deg 11deg\n                );\n    }\n\n    #app .qr-image.qr-image--real {\n        background: #ffffff;\n        border: 1px solid #d9dfec;\n    }\n\n    #app .qr-real-image {\n        width: 100%;\n        height: 100%;\n        padding: 10px;\n        box-sizing: border-box;\n        object-fit: contain;\n        border-radius: 50%;\n        display: block;\n        background: #ffffff;\n    }\n\n    #app .qr-logo {\n        position: absolute;\n        z-index: 4;\n        width: 76px;\n        height: 44px;\n        border-radius: 8px;\n        background: #fff;\n        display: grid;\n        place-items: center;\n        color: #1477d4;\n        font-size: 14px;\n        line-height: 0.95;\n        font-weight: 1000;\n        letter-spacing: -0.08em;\n        text-align: center;\n    }\n\n    #app .qr-logo span {\n        font-size: 9px;\n        letter-spacing: -0.04em;\n    }\n\n    #app .wechat-mini {\n        position: absolute;\n        right: 5px;\n        bottom: 22px;\n        z-index: 5;\n        width: 36px;\n        height: 36px;\n        display: grid;\n        place-items: center;\n        color: #fff;\n        background: #11c566;\n        border-radius: 50%;\n        border: 3px solid #fff;\n        box-shadow: 0 7px 15px rgba(0, 0, 0, 0.18);\n    }\n\n    #app .wechat-mini svg {\n        width: 25px;\n        height: 25px;\n    }\n\n    #app .qr-guide {\n        margin-top: 6px;\n        color: #2d3a58;\n        font-size: 12.5px;\n        font-weight: 700;\n        white-space: nowrap;\n    }\n\n    #app .payment-info {\n        margin-top: 8px;\n        padding: 10px 0 8px;\n        border-top: 1px solid #d9dfec;\n        border-bottom: 1px solid #d9dfec;\n    }\n\n    #app .info-title {\n        margin: 0 0 6px;\n        display: flex;\n        align-items: center;\n        gap: 8px;\n        color: #06183c;\n        font-size: 15px;\n        line-height: 1.2;\n        font-weight: 900;\n        letter-spacing: -0.03em;\n        white-space: nowrap;\n    }\n\n    #app .info-title svg {\n        width: 24px;\n        height: 24px;\n        color: #075bdc;\n        flex: 0 0 auto;\n    }\n\n    #app .info-list {\n        margin: 0;\n        padding-left: 22px;\n        color: #202f50;\n        font-size: 11px;\n        line-height: 1.35;\n        font-weight: 600;\n    }\n\n    #app .info-list li::marker {\n        color: #075bdc;\n        font-size: 1.1em;\n    }\n\n    #app .info-list li {\n        white-space: nowrap;\n    }\n\n    #app .order-time {\n        margin: 8px 0 10px;\n        display: flex;\n        justify-content: center;\n        align-items: center;\n        gap: 8px;\n        color: #4a5570;\n        font-size: 12px;\n        font-weight: 700;\n        text-align: center;\n    }\n\n    #app .order-time svg {\n        width: 22px;\n        height: 22px;\n        color: #53617d;\n        flex: 0 0 auto;\n    }\n\n    #app .back-link {\n        margin-top: 6px;\n        padding: 0;\n        border: 0;\n        background: transparent;\n        color: #075bdc;\n        font-size: 13px;\n        font-weight: 800;\n        cursor: pointer;\n        text-align: left;\n    }\n\n    #app .wechat-payment-modal .notice {\n        margin-top: 14px;\n        min-height: 44px;\n        padding: 10px 14px;\n        font-size: 14px;\n    }\n\n    #app .wechat-payment-modal .step-indicator {\n        margin-top: 8px;\n    }\n\n    #app .wechat-payment-modal .tag {\n        margin-top: 10px;\n        height: 30px;\n        font-size: 13px;\n    }\n\n    #app .wechat-payment-modal .qr-area {\n        margin-top: 4px;\n    }\n\n    #app .wechat-payment-modal .qr-box {\n        width: 172px;\n        height: 172px;\n    }\n\n    #app .wechat-payment-modal .qr-image {\n        width: 164px;\n        height: 164px;\n    }\n\n    #app .wechat-payment-modal .qr-actions {\n        margin-top: 6px;\n        gap: 10px;\n    }\n\n    #app .wechat-payment-modal .qr-actions .btn {\n        height: 48px;\n        font-size: 14px;\n        white-space: nowrap;\n    }\n\n    #app .wechat-payment-modal .qr-actions .btn-icon-circle {\n        width: 24px;\n        height: 24px;\n    }\n\n    #app .wechat-payment-modal .qr-actions .btn-icon-circle svg {\n        width: 16px;\n        height: 16px;\n    }\n\n    #app .wechat-payment-modal .qr-actions .customer-service {\n        position: relative;\n        z-index: 3;\n        pointer-events: auto !important;\n        white-space: nowrap;\n        gap: 6px;\n        cursor: pointer;\n    }\n\n    #app .wechat-payment-modal .qr-actions .customer-service svg {\n        width: 18px;\n        height: 18px;\n        flex: 0 0 auto;\n    }\n\n    #app .wechat-success-card .text-slate-900,\n    #app .wechat-success-card .text-slate-500,\n    #app .wechat-success-card .text-emerald-600,\n    #app .wechat-success-card .text-rose-600,\n    #app .wechat-payment-modal .text-slate-900,\n    #app .wechat-payment-modal .text-slate-500 {\n        color: inherit !important;\n    }\n\n    #app .wechat-success-card .text-slate-900,\n    #app .wechat-payment-modal .text-slate-900 {\n        color: #0f172a !important;\n    }\n\n    #app .wechat-success-card .text-slate-500,\n    #app .wechat-payment-modal .text-slate-500 {\n        color: #64748b !important;\n    }\n\n    #app .wechat-success-card .text-emerald-600 {\n        color: #059669 !important;\n    }\n\n    #app .wechat-success-card .text-rose-600 {\n        color: #e11d48 !important;\n    }\n\n    #app #cardSuccessRoot {\n        width: 100%;\n        min-height: calc(100vh - 120px);\n        background: transparent !important;\n        box-sizing: border-box;\n    }\n\n    #app #cardSuccessRoot .card-success-shell {\n        max-width: 860px;\n        margin: 0 auto;\n    }\n\n    #app #cardSuccessRoot .card-success-eyebrow {\n        display: inline-flex;\n        align-items: center;\n        gap: 8px;\n        padding: 7px 12px;\n        border-radius: 999px;\n        border: 1px solid #ccebd7;\n        background: #effaf3;\n        color: #16a34a !important;\n        font-size: 12px;\n        font-weight: 800;\n        margin: 0 0 14px;\n    }\n\n    #app #cardSuccessRoot .card-success-title {\n        margin: 0;\n        font-size: clamp(32px, 4vw, 42px);\n        line-height: 1.08;\n        letter-spacing: -0.045em;\n        color: #0f2454 !important;\n        font-weight: 900;\n    }\n\n    #app #cardSuccessRoot .card-success-surface {\n        margin-top: 20px;\n        background: #ffffff;\n        border: 1px solid rgba(223, 230, 242, 0.95);\n        border-radius: 24px;\n        box-shadow: 0 24px 60px rgba(15, 37, 84, 0.10);\n        padding: 22px;\n    }\n\n    #app #cardSuccessRoot .card-success-notice {\n        display: flex;\n        align-items: center;\n        gap: 14px;\n        min-height: 72px;\n        padding: 14px 18px;\n        border-radius: 22px;\n        background: linear-gradient(180deg, #eef4ff 0%, #e9f0ff 100%);\n        border: 1px solid #d9e5ff;\n        margin-bottom: 22px;\n    }\n\n    #app #cardSuccessRoot .card-success-notice-icon {\n        width: 38px;\n        height: 38px;\n        border-radius: 14px;\n        background: rgba(22,93,255,0.08);\n        color: #165dff !important;\n        flex: none;\n        display: grid;\n        place-items: center;\n    }\n\n    #app #cardSuccessRoot .card-success-notice-text {\n        color: #20448f !important;\n        font-size: clamp(16px, 2vw, 17px);\n        line-height: 1.45;\n        font-weight: 800;\n        letter-spacing: -0.02em;\n    }\n\n    #app #cardSuccessRoot .card-success-panel {\n        border: 1px solid #ccebd7;\n        background: linear-gradient(180deg, #ffffff 0%, #fbfffc 100%);\n        border-radius: 20px;\n        padding: 30px 24px;\n        text-align: center;\n    }\n\n    #app #cardSuccessRoot .card-success-mark {\n        width: 62px;\n        height: 62px;\n        margin: 0 auto 18px;\n        border-radius: 999px;\n        background: #effaf3;\n        color: #16a34a !important;\n        border: 1px solid #ccebd7;\n        display: grid;\n        place-items: center;\n    }\n\n    #app #cardSuccessRoot .card-success-panel h2 {\n        margin: 0;\n        color: #0f2454 !important;\n        font-size: 24px;\n        line-height: 1.2;\n        font-weight: 900;\n        letter-spacing: -0.03em;\n    }\n\n    #app #cardSuccessRoot .card-success-panel p {\n        margin: 12px auto 0;\n        max-width: 600px;\n        color: #475467 !important;\n        font-size: 15px;\n        line-height: 1.65;\n    }\n\n    #app #cardSuccessRoot .card-success-tag-row {\n        display: flex;\n        flex-wrap: wrap;\n        justify-content: center;\n        gap: 10px;\n        margin-top: 18px;\n    }\n\n    #app #cardSuccessRoot .card-success-tag {\n        display: inline-flex;\n        align-items: center;\n        justify-content: center;\n        min-height: 36px;\n        padding: 0 14px;\n        border-radius: 999px;\n        border: 1px solid #d9e5ff;\n        background: #eef4ff;\n        color: #36598f !important;\n        font-size: 13px;\n        font-weight: 800;\n        white-space: nowrap;\n    }\n\n    #app #cardSuccessRoot .card-success-note {\n        margin: 22px 0 0;\n        padding: 16px 18px;\n        border-radius: 16px;\n        border: 1px solid #d9e5ff;\n        background: #f8fbff;\n        color: #4b5b78 !important;\n        font-size: 14px;\n        line-height: 1.65;\n        text-align: left;\n    }\n\n    #app #cardSuccessRoot .card-success-note strong {\n        color: #0f2454 !important;\n    }\n\n    #app #cardSuccessRoot .card-success-actions {\n        margin-top: 22px;\n        padding-top: 20px;\n        border-top: 1px solid #dfe6f2;\n        display: grid;\n        grid-template-columns: 1fr 1fr;\n        gap: 16px;\n    }\n\n    #app #cardSuccessRoot .card-success-btn {\n        height: 52px;\n        border-radius: 16px;\n        border: 0 !important;\n        display: inline-flex;\n        align-items: center;\n        justify-content: center;\n        gap: 10px;\n        width: 100%;\n        font-size: 15px;\n        font-weight: 900;\n        text-decoration: none !important;\n        cursor: pointer;\n        transition: transform 0.15s ease, background 0.15s ease, box-shadow 0.15s ease, border-color 0.15s ease;\n        -webkit-tap-highlight-color: transparent;\n        box-shadow: none !important;\n        text-shadow: none !important;\n    }\n\n    #app #cardSuccessRoot .card-success-btn:active {\n        transform: translateY(1px);\n    }\n\n    #app #cardSuccessRoot .card-success-btn--primary {\n        color: #fff !important;\n        background: linear-gradient(180deg, #1f67ff 0%, #0e4fe0 100%) !important;\n        box-shadow: 0 10px 22px rgba(22, 93, 255, 0.2) !important;\n    }\n\n    #app #cardSuccessRoot .card-success-btn--secondary {\n        color: #165dff !important;\n        background: #ffffff !important;\n        border: 2px solid #165dff !important;\n    }\n\n    #app #cardSuccessRoot .card-success-icon-round {\n        width: 30px;\n        height: 30px;\n        border-radius: 999px;\n        background: rgba(255,255,255,0.18);\n        display: grid;\n        place-items: center;\n        flex: none;\n    }\n\n    #app #cardSuccessRoot .card-success-btn--secondary .card-success-icon-round {\n        background: rgba(22,93,255,0.10);\n    }\n\n    @media (max-width: 768px) {\n        #app .wechat-payment-modal {\n            width: calc(100vw - 16px);\n            margin: 4vh auto 0;\n            padding: 18px 16px 16px;\n            border-radius: 22px;\n        }\n\n        #app .payment-modal {\n            width: calc(100vw - 16px);\n            height: min(660px, calc(100vh - 16px));\n            margin: 4vh auto 0;\n            padding: 18px 16px 16px;\n        }\n\n        #app .wechat-payment-modal__grid {\n            grid-template-columns: 1fr;\n        }\n\n        #app .wechat-payment-modal__title {\n            font-size: 22px;\n        }\n\n        #app .yisihui-success-page .page {\n            padding: 20px 16px 40px;\n        }\n\n        #app .yisihui-success-page .surface {\n            padding: 16px;\n            border-radius: 22px;\n        }\n\n        #app .yisihui-success-page .content-card {\n            padding: 18px;\n            border-radius: 20px;\n        }\n\n        #app .yisihui-success-page .actions,\n        #app .yisihui-success-page .footer-actions {\n            grid-template-columns: 1fr;\n        }\n\n        #app .yisihui-success-page .btn {\n            height: 56px;\n            font-size: 16px;\n        }\n\n        #app .yisihui-success-page .success-card {\n            padding: 24px 18px;\n        }\n\n        #app .yisihui-success-page .success-card h2 {\n            font-size: 24px;\n        }\n\n        #app #cardSuccessRoot {\n            padding: 18px 16px 40px;\n            background: transparent !important;\n        }\n\n        #app #cardSuccessRoot .card-success-actions {\n            grid-template-columns: 1fr;\n        }\n\n        #app #cardSuccessRoot .card-success-surface {\n            padding: 18px;\n            border-radius: 22px;\n        }\n\n        #app #cardSuccessRoot .card-success-panel {\n            padding: 24px 18px;\n        }\n\n        #app #cardSuccessRoot .card-success-title {\n            font-size: 32px;\n        }\n    }\n\n    \/* Unified paid success page, scoped to prevent Astra\/Elementor overrides. *\/\n    #app #usSuccessRoot,\n    #app #usSuccessRoot * {\n        box-sizing: border-box !important;\n        letter-spacing: 0 !important;\n    }\n    #app #usSuccessRoot {\n        --success-navy: #0f2454;\n        --success-blue: #165dff;\n        --success-blue-soft: #eef4ff;\n        --success-blue-line: #d9e5ff;\n        --success-green: #16a34a;\n        --success-green-soft: #effaf3;\n        --success-green-line: #ccebd7;\n        --success-text: #1f2a44;\n        --success-muted: #667085;\n        --success-line: #dfe6f2;\n        width: 100% !important;\n        min-height: calc(100vh - 120px) !important;\n        margin: 0 !important;\n        padding: 28px 24px 48px !important;\n        color: var(--success-text) !important;\n        background:\n            radial-gradient(circle at 10% 10%, rgba(22, 93, 255, .08), transparent 24%),\n            radial-gradient(circle at 90% 90%, rgba(22, 93, 255, .06), transparent 22%),\n            linear-gradient(180deg, #fff 0%, #f5f8ff 100%) !important;\n        font-family: Inter, -apple-system, BlinkMacSystemFont, \"Segoe UI\", \"PingFang SC\", \"Microsoft YaHei\", Arial, sans-serif !important;\n    }\n    #app #usSuccessRoot .us-success-page {\n        width: 100% !important;\n        max-width: 980px !important;\n        margin: 0 auto !important;\n        padding: 0 !important;\n    }\n    #app #usSuccessRoot .us-success-hero {\n        margin: 0 0 12px !important;\n        padding: 0 !important;\n    }\n    #app #usSuccessRoot .us-success-badge {\n        display: inline-flex !important;\n        align-items: center !important;\n        min-height: 30px !important;\n        margin: 0 !important;\n        padding: 7px 11px !important;\n        border: 1px solid var(--success-green-line) !important;\n        border-radius: 999px !important;\n        background: var(--success-green-soft) !important;\n        color: var(--success-green) !important;\n        font-size: 12px !important;\n        line-height: 1.35 !important;\n        font-weight: 800 !important;\n    }\n    #app #usSuccessRoot .us-success-surface {\n        width: 100% !important;\n        margin: 0 !important;\n        padding: 22px !important;\n        border: 1px solid rgba(223, 230, 242, .98) !important;\n        border-radius: 24px !important;\n        background: #fff !important;\n        box-shadow: 0 22px 56px rgba(15, 37, 84, .10) !important;\n    }\n    #app #usSuccessRoot .us-success-confirmation {\n        display: flex !important;\n        align-items: center !important;\n        gap: 16px !important;\n        margin: 0 !important;\n        padding: 22px !important;\n        border: 1px solid var(--success-green-line) !important;\n        border-radius: 20px !important;\n        background: linear-gradient(180deg, #fff 0%, #fbfffc 100%) !important;\n        text-align: left !important;\n    }\n    #app #usSuccessRoot .us-success-check {\n        display: grid !important;\n        place-items: center !important;\n        width: 62px !important;\n        height: 62px !important;\n        margin: 0 !important;\n        border: 1px solid var(--success-green-line) !important;\n        border-radius: 50% !important;\n        background: var(--success-green-soft) !important;\n        color: var(--success-green) !important;\n    }\n    #app #usSuccessRoot .us-success-status-copy {\n        min-width: 0 !important;\n        flex: 1 1 auto !important;\n    }\n    #app #usSuccessRoot .us-success-confirmation h2 {\n        margin: 0 !important;\n        padding: 0 !important;\n        color: var(--success-navy) !important;\n        font-size: 28px !important;\n        line-height: 1.18 !important;\n        font-weight: 900 !important;\n    }\n    #app #usSuccessRoot .us-success-confirmation p {\n        max-width: none !important;\n        margin: 8px 0 0 !important;\n        padding: 0 !important;\n        color: #475467 !important;\n        font-size: 14px !important;\n        line-height: 1.65 !important;\n        font-weight: 400 !important;\n    }\n    #app #usSuccessRoot .us-eip-upsell {\n        display: grid !important;\n        grid-template-columns: minmax(0, 1.35fr) minmax(280px, .65fr) !important;\n        gap: 24px !important;\n        align-items: center !important;\n        margin: 18px 0 0 !important;\n        padding: 22px !important;\n        border: 1px solid #c9d9ff !important;\n        border-radius: 16px !important;\n        background: linear-gradient(135deg,#f7faff 0%,#fffdf3 100%) !important;\n    }\n    #app #usSuccessRoot .us-eip-upsell__copy span { color: var(--success-blue) !important; font-size: 11px !important; font-weight: 900 !important; text-transform: uppercase !important; }\n    #app #usSuccessRoot .us-eip-upsell__copy h2 { margin: 7px 0 0 !important; color: var(--success-navy) !important; font-size: 21px !important; line-height: 1.3 !important; font-weight: 900 !important; }\n    #app #usSuccessRoot .us-eip-upsell__copy p { margin: 7px 0 0 !important; color: #52627d !important; font-size: 13px !important; line-height: 1.65 !important; }\n    #app #usSuccessRoot .us-eip-upsell__action button { width: 100% !important; min-height: 50px !important; padding: 10px 16px !important; border: 0 !important; border-radius: 12px !important; background: var(--success-blue) !important; color: #fff !important; font-size: 14px !important; font-weight: 900 !important; cursor: pointer !important; }\n    #app #usSuccessRoot .us-eip-upsell__action button:disabled { opacity: .6 !important; cursor: wait !important; }\n    #app #usSuccessRoot .us-eip-upsell__action small { display: block !important; margin: 8px 0 0 !important; color: var(--success-muted) !important; font-size: 11px !important; line-height: 1.45 !important; text-align: center !important; }\n    #app #usSuccessRoot .us-success-grid {\n        display: grid !important;\n        grid-template-columns: minmax(0, 1.35fr) minmax(280px, .65fr) !important;\n        gap: 16px !important;\n        margin: 18px 0 0 !important;\n        padding: 0 !important;\n        align-items: stretch !important;\n    }\n    #app #usSuccessRoot .us-success-grid--single { grid-template-columns: minmax(0, 1fr) !important; }\n    #app #usSuccessRoot .us-success-card {\n        min-width: 0 !important;\n        margin: 0 !important;\n        padding: 20px !important;\n        border: 1px solid var(--success-line) !important;\n        border-radius: 20px !important;\n        background: #fff !important;\n        overflow: hidden !important;\n    }\n    #app #usSuccessRoot .us-success-kicker {\n        display: inline-flex !important;\n        align-items: center !important;\n        min-height: 28px !important;\n        margin: 0 !important;\n        padding: 0 10px !important;\n        border: 1px solid var(--success-blue-line) !important;\n        border-radius: 999px !important;\n        background: var(--success-blue-soft) !important;\n        color: var(--success-blue) !important;\n        font-size: 12px !important;\n        line-height: 1 !important;\n        font-weight: 900 !important;\n    }\n    #app #usSuccessRoot .us-success-card h3 {\n        margin: 12px 0 0 !important;\n        padding: 0 !important;\n        color: var(--success-navy) !important;\n        font-size: 19px !important;\n        line-height: 1.35 !important;\n        font-weight: 900 !important;\n    }\n    #app #usSuccessRoot .us-success-card-desc {\n        margin: 7px 0 0 !important;\n        padding: 0 !important;\n        color: var(--success-muted) !important;\n        font-size: 13px !important;\n        line-height: 1.6 !important;\n    }\n    #app #usSuccessRoot .us-referral-box {\n        display: flex !important;\n        align-items: center !important;\n        gap: 10px !important;\n        margin: 16px 0 0 !important;\n        padding: 10px 10px 10px 14px !important;\n        border: 1px solid #c9d9ff !important;\n        border-radius: 16px !important;\n        background: #f5f8ff !important;\n    }\n    #app #usSuccessRoot .us-referral-meta { min-width: 0 !important; flex: 1 1 auto !important; }\n    #app #usSuccessRoot .us-referral-label {\n        display: block !important;\n        margin: 0 !important;\n        color: var(--success-muted) !important;\n        font-size: 11px !important;\n        line-height: 1.3 !important;\n        font-weight: 700 !important;\n    }\n    #app #usSuccessRoot .us-referral-code {\n        display: block !important;\n        margin: 2px 0 0 !important;\n        color: var(--success-navy) !important;\n        font-size: 22px !important;\n        line-height: 1.2 !important;\n        font-weight: 900 !important;\n        overflow: hidden !important;\n        text-overflow: ellipsis !important;\n        white-space: nowrap !important;\n    }\n    #app #usSuccessRoot button.us-copy-btn,\n    #app #usSuccessRoot button.us-share-btn {\n        appearance: none !important;\n        -webkit-appearance: none !important;\n        margin: 0 !important;\n        box-shadow: none !important;\n        text-shadow: none !important;\n        font-family: inherit !important;\n        cursor: pointer !important;\n    }\n    #app #usSuccessRoot button.us-copy-btn {\n        flex: none !important;\n        min-height: 40px !important;\n        padding: 0 14px !important;\n        border: 0 !important;\n        border-radius: 12px !important;\n        background: var(--success-blue) !important;\n        color: #fff !important;\n        font-size: 13px !important;\n        line-height: 1 !important;\n        font-weight: 900 !important;\n    }\n    #app #usSuccessRoot button.us-copy-btn:disabled,\n    #app #usSuccessRoot button.us-share-btn:disabled { cursor: not-allowed !important; opacity: .55 !important; }\n    #app #usSuccessRoot .us-share-label {\n        margin: 14px 0 0 !important;\n        color: var(--success-muted) !important;\n        font-size: 12px !important;\n        line-height: 1.45 !important;\n        font-weight: 700 !important;\n    }\n    #app #usSuccessRoot .us-share-actions {\n        display: grid !important;\n        grid-template-columns: repeat(3, minmax(0, 1fr)) !important;\n        gap: 8px !important;\n        margin: 12px 0 0 !important;\n    }\n    #app #usSuccessRoot button.us-share-btn {\n        display: inline-flex !important;\n        align-items: center !important;\n        justify-content: center !important;\n        gap: 7px !important;\n        width: 100% !important;\n        min-height: 44px !important;\n        padding: 8px 9px !important;\n        border: 1px solid var(--success-blue-line) !important;\n        border-radius: 12px !important;\n        background: #fff !important;\n        color: #36598f !important;\n        font-size: 12px !important;\n        line-height: 1.2 !important;\n        font-weight: 850 !important;\n    }\n    #app #usSuccessRoot button.us-share-btn:hover { transform: translateY(-1px) !important; }\n    #app #usSuccessRoot button.us-share-btn--xhs { color: #e31b3d !important; border-color: rgba(227,27,61,.25) !important; background: #fffafb !important; }\n    #app #usSuccessRoot button.us-share-btn--instagram { color: #b82f7e !important; border-color: rgba(184,47,126,.25) !important; background: #fffafd !important; }\n    #app #usSuccessRoot button.us-share-btn--reddit { color: #e74400 !important; border-color: rgba(255,69,0,.25) !important; background: #fffaf8 !important; }\n    #app #usSuccessRoot .us-community-body {\n        display: flex !important;\n        align-items: center !important;\n        gap: 14px !important;\n        margin: 16px 0 0 !important;\n    }\n    #app #usSuccessRoot .us-community-qr {\n        flex: 0 0 112px !important;\n        width: 112px !important;\n        height: 112px !important;\n        padding: 7px !important;\n        border: 1px solid var(--success-line) !important;\n        border-radius: 16px !important;\n        background: #fff !important;\n        box-shadow: 0 10px 24px rgba(15,37,84,.08) !important;\n    }\n    #app #usSuccessRoot .us-community-qr img {\n        display: block !important;\n        width: 100% !important;\n        height: 100% !important;\n        margin: 0 !important;\n        border: 0 !important;\n        border-radius: 6px !important;\n        object-fit: contain !important;\n    }\n    #app #usSuccessRoot .us-community-info { min-width: 0 !important; flex: 1 1 auto !important; }\n    #app #usSuccessRoot .us-community-title {\n        margin: 0 !important;\n        color: var(--success-navy) !important;\n        font-size: 15px !important;\n        line-height: 1.4 !important;\n        font-weight: 900 !important;\n    }\n    #app #usSuccessRoot .us-community-note {\n        margin: 6px 0 0 !important;\n        color: var(--success-muted) !important;\n        font-size: 12px !important;\n        line-height: 1.55 !important;\n    }\n    #app #usSuccessRoot .us-success-actions {\n        display: grid !important;\n        grid-template-columns: 1fr 1fr !important;\n        gap: 16px !important;\n        margin: 22px 0 0 !important;\n        padding: 20px 0 0 !important;\n        border-top: 1px solid var(--success-line) !important;\n    }\n    #app #usSuccessRoot a.us-success-action {\n        display: inline-flex !important;\n        align-items: center !important;\n        justify-content: center !important;\n        gap: 10px !important;\n        width: 100% !important;\n        height: 52px !important;\n        margin: 0 !important;\n        padding: 0 16px !important;\n        border-radius: 16px !important;\n        font-size: 15px !important;\n        line-height: 1 !important;\n        font-weight: 900 !important;\n        text-decoration: none !important;\n        box-shadow: none !important;\n    }\n    #app #usSuccessRoot a.us-success-action--primary { border: 1px solid var(--success-blue) !important; background: var(--success-blue) !important; color: #fff !important; }\n    #app #usSuccessRoot a.us-success-action--secondary { border: 2px solid var(--success-blue) !important; background: #fff !important; color: var(--success-blue) !important; }\n    #app #usSuccessRoot .us-success-toast {\n        position: fixed !important;\n        left: 50% !important;\n        bottom: 26px !important;\n        z-index: 999999 !important;\n        max-width: calc(100vw - 32px) !important;\n        transform: translateX(-50%) !important;\n        padding: 11px 16px !important;\n        border-radius: 999px !important;\n        background: rgba(15,36,84,.95) !important;\n        color: #fff !important;\n        font-size: 13px !important;\n        line-height: 1.4 !important;\n        font-weight: 800 !important;\n        box-shadow: 0 14px 34px rgba(15,36,84,.25) !important;\n    }\n    @media (max-width: 760px) {\n        #app #usSuccessRoot { padding: 20px 12px 40px !important; }\n        #app #usSuccessRoot .us-success-surface { padding: 14px !important; border-radius: 16px !important; }\n        #app #usSuccessRoot .us-success-confirmation { padding: 18px !important; align-items: flex-start !important; }\n        #app #usSuccessRoot .us-success-grid,\n        #app #usSuccessRoot .us-success-actions,\n        #app #usSuccessRoot .us-eip-upsell { grid-template-columns: minmax(0, 1fr) !important; }\n        #app #usSuccessRoot .us-success-card { padding: 16px !important; }\n        #app #usSuccessRoot .us-share-actions { grid-template-columns: minmax(0, 1fr) !important; }\n        #app #usSuccessRoot .us-community-body { align-items: flex-start !important; }\n        #app #usSuccessRoot a.us-success-action { height: 54px !important; }\n    }\n    @media (max-width: 390px) {\n        #app #usSuccessRoot .us-referral-box { align-items: stretch !important; flex-direction: column !important; }\n        #app #usSuccessRoot button.us-copy-btn { width: 100% !important; }\n        #app #usSuccessRoot .us-community-qr { flex-basis: 96px !important; width: 96px !important; height: 96px !important; }\n    }\n\n<\/style>\n<style>\n    #app .main-content {\n        display: flex;\n        flex-direction: row;\n        align-items: flex-start;\n        overflow: visible;\n    }\n    #app .main-content > .right-content {\n        display: flex;\n        flex-direction: column;\n        align-items: center;\n        background: #FFFFFF;\n        border-radius: 16px;\n        padding: 20px;\n        width: 306px;\n        min-width: 306px;\n        min-height: 577px;\n        height: auto;\n        box-sizing: border-box;\n        border: 1px solid rgba(218, 228, 244, 0.9);\n        box-shadow: 0 12px 32px rgba(30, 64, 175, 0.08);\n        z-index: 10;\n        position: sticky !important;\n        top: calc(16px + var(--wp-admin--admin-bar--height, 0px)) !important;\n        align-self: flex-start;\n        transform: translate3d(0, 0, 0);\n        transition: box-shadow 280ms cubic-bezier(0.22, 1, 0.36, 1),\n                    transform 280ms cubic-bezier(0.22, 1, 0.36, 1);\n        will-change: transform;\n        animation: policySummaryEnter 360ms cubic-bezier(0.22, 1, 0.36, 1) both;\n    }\n    @keyframes policySummaryEnter {\n        from {\n            opacity: 0;\n            transform: translate3d(0, 10px, 0);\n        }\n        to {\n            opacity: 1;\n            transform: translate3d(0, 0, 0);\n        }\n    }\n    @media (prefers-reduced-motion: reduce) {\n        #app .main-content > .right-content {\n            animation: none;\n            transition: none;\n        }\n    }\n    .right-content p {\n        margin-bottom: 0;\n    }\n    .right-title {\n        font-family: 'PingFang SC-Bold', 'PingFang SC-Bold';\n        font-weight: 400;\n        font-size: 21px;\n        color: #1E293B;\n        font-weight: bold;\n        margin-bottom: 16px !important;\n    }\n    .right-top {\n        width: 271px;\n        height: 145px;\n        background: #F0F7FF;\n        border-radius: 11px 11px 11px 11px;\n        display: flex;\n        flex-direction: column;\n        align-items: center;\n        padding-bottom: 9px;\n    }\n    .right-top .title {\n        font-family: 'PingFang SC-Bold', 'PingFang SC-Bold';\n        font-weight: 600;\n        font-size: 14px;\n        color: #7E8F9A;\n        margin-bottom: 5px;\n    }\n    .product-name {\n        font-family: 'PingFang SC-Bold', 'PingFang SC-Bold';\n        font-weight: 600;\n        font-size: 14px;\n        color: #1E293B;\n    }\n    .product-name-row {\n        width: calc(100% - 24px);\n        margin-top: 14px;\n        display: flex;\n        align-items: center;\n        justify-content: center;\n        gap: 6px;\n    }\n    #app .modify-plan-btn {\n        padding: 2px 7px !important;\n        border: 1px solid #1558DA !important;\n        border-radius: 4px !important;\n        background: #FFFFFF !important;\n        color: #1558DA !important;\n        font-family: 'PingFang SC-Bold', 'PingFang SC', sans-serif !important;\n        font-weight: 700 !important;\n        font-size: 12px !important;\n        line-height: 1.2 !important;\n        cursor: pointer;\n        box-shadow: none !important;\n        text-shadow: none !important;\n    }\n    .last-price {\n        \/*width: 193px;*\/\n        height: 43px;\n        background: #1558DA;\n        border-radius: 53px 53px 53px 53px;\n        font-weight: bold;\n        font-size: 26px;\n        color: #FFFFFF;\n        text-align: center;\n        padding: 0 10px;\n        flex-wrap: nowrap;\n        display: flex;\n        justify-content: center;\n        align-items: center;\n    }\n    .elementor-element-populated {\n        background: #fafaf9;\n    }\n    .top-line {\n        width: 250px;\n        background: #E4EBFF;\n        height: 1px;\n        margin-top: 11px;\n        margin-bottom: 11px;\n    }\n    .info-title {\n        width: 87px;\n        color:#7E8F9A;\n    }\n    .right-bottom {\n        font-family: 'PingFang SC-Bold', 'PingFang SC-Bold';\n        margin-top: 21px;\n        display: flex;\n        flex-direction: column;\n        width: 92%;\n    }\n    .per-info {\n        display: flex;\n        flex-direction: row;\n        justify-content: space-between;\n        margin-bottom: 12px;\n    }\n    .info-value {\n        width: 130px;\n    }\n    .dependents-btn {\n        width: 25px;\n        height: 25px;\n        border-radius: 50%;\n        background: #1558DA;\n        font-size: 1.5rem;\n        cursor: pointer;\n        color: #fff;\n        display: flex;\n        align-items: center;\n        justify-content: center;\n    }\n    .confirm-btn {\n        display: flex;\n        align-items: center;\n        justify-content: center;\n        width: 214px;\n        height: 58px;\n        background: #D9D9D9;\n        border-radius: 11px;\n        font-weight: bold;\n        font-size: 21px;\n        color: #000000;\n        margin-top: 35px;\n        cursor: pointer;\n    }\n    .buy-btn {\n        display: flex;\n        align-items: center;\n        justify-content: center;\n        font-weight: bold;\n        font-size: 21px;\n        color: #000000;\n        width: 214px;\n        height: 58px;\n        background: #FFD146;\n        margin-top: 35px;\n        border-radius: 11px;\n        transition: transform 0.3s ease;\n    }\n    #app button.confirm-btn,\n    #app button.buy-btn,\n    #app .confirm-btn,\n    #app .buy-btn {\n        position: relative !important;\n        z-index: 20 !important;\n        pointer-events: auto !important;\n        border: 0 !important;\n        padding: 0 !important;\n        -webkit-appearance: none !important;\n        appearance: none !important;\n        cursor: pointer !important;\n        font-family: inherit !important;\n        text-decoration: none !important;\n        box-shadow: none !important;\n        outline: none !important;\n    }\n    #app button.confirm-btn {\n        display: flex !important;\n        align-items: center !important;\n        justify-content: center !important;\n        width: 214px !important;\n        height: 58px !important;\n        background: #D9D9D9 !important;\n        color: #111827 !important;\n        border-radius: 11px !important;\n        font-weight: 700 !important;\n        font-size: 21px !important;\n        line-height: 1 !important;\n    }\n    #app button.buy-btn {\n        display: flex !important;\n        align-items: center !important;\n        justify-content: center !important;\n        width: 214px !important;\n        height: 58px !important;\n        background: #FFD146 !important;\n        color: #111827 !important;\n        border-radius: 11px !important;\n        font-weight: 700 !important;\n        font-size: 21px !important;\n        line-height: 1 !important;\n    }\n    .glow-box {\n        border: 1px solid transparent;\n        transition: all 0.3s ease;\n        cursor: pointer;\n    }\n\n    .glow-box:hover {\n        box-shadow: 0 0 9px 0#046BD2;\n        \/*border-color: #046BD2;*\/\n    }\n    \/* \u5c55\u5f00\u5185\u5bb9\u4e0e\u52a8\u753b *\/\n    .ggs-collapse-content {\n        display: none;\n        overflow: visible;\n        max-height: none;\n        transition: none;\n    }\n    .per-content {\n        background: #FFFFFF;\n        border-radius: 20px;\n        border: 1px solid #1558DA;\n        position: relative;\n        \/*overflow: hidden;*\/\n        padding: 20px 33px;\n        height: auto;\n        min-height: 140px;\n        width: 100%;\n        box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);\n    }\n    \/* \u5c55\u5f00\u72b6\u6001 *\/\n    .ggs-collapse-content.expanded {\n        display: block;\n        overflow: visible;\n        background: transparent !important;\n        border: 0 !important;\n        padding: 0 !important;\n        min-height: 0;\n        width: 100%;\n        box-sizing: border-box;\n        box-shadow: none !important;\n    }\n    .ggs-collapse-content.expanded > .content-title {\n        display: block;\n        margin-bottom: 20px;\n    }\n    .ggs-collapse-content.expanded > .per-content {\n        background: #FFFFFF !important;\n        border: 1px solid #1558DA !important;\n        border-radius: 20px;\n        padding: 20px 33px;\n        min-height: 170px;\n        box-shadow: none;\n        box-sizing: border-box;\n    }\n    .ggs-collapse-content.expanded .edit-content,\n    .ggs-collapse-content.expanded .input-insert,\n    .ggs-collapse-content.expanded .inputWidth,\n    .ggs-collapse-content.expanded input,\n    .ggs-collapse-content.expanded select {\n        visibility: visible !important;\n        opacity: 1 !important;\n    }\n    .open-title {\n        height: 84px;\n        width: 100%;\n        background: #FFFFFF;\n        border-radius: 14px 14px 14px 14px;\n        border: 1px solid #B2B2B2;\n        font-family: 'PingFang SC-Bold', 'PingFang SC-Bold';\n        font-weight: 400;\n        font-size: 27px;\n        color: #1E293B;\n        font-style: normal;\n        text-transform: none;\n        padding-left: 26px;\n        display: flex;\n        align-items: center;\n    }\n    .left-content {\n        display: flex;\n        flex-direction: column;\n        width: 100%;\n        padding-left: 26px;\n        margin-right: 10px;\n        \/*padding-right: 100px;*\/\n        \/*margin-right: 306px;*\/\n    }\n    .per-msg {\n        margin-bottom: 20px;\n    }\n    .edit-btn {\n        position: absolute;\n        width:39px;\n        height:39px;\n        top: -1px;\n        right: -1px;\n    }\n    .edit-content {\n        display: flex;\n        flex-direction: row;\n        flex-wrap: wrap;\n        gap: 23px;\n    }\n    .input-with-asterisk {\n        position: relative;\n        display: inline-block;\n    }\n\n    .input-with-asterisk::after {\n        content: \"*\";\n        color: red;\n        position: absolute;\n        right: 10px;  \/* \u8c03\u6574 * \u7684\u4f4d\u7f6e *\/\n        top: 50%;\n        transform: translateY(-50%);\n        pointer-events: none; \/* \u9632\u6b62\u70b9\u51fb\u5e72\u6270\u8f93\u5165 *\/\n    }\n    .next-btn {\n        width: 159px;\n        height: 43px;\n        background: #1558DA;\n        border-radius: 8px;\n        font-family: 'PingFang SC-Bold', 'PingFang SC-Bold';\n        font-weight: bold;\n        font-size: 21px;\n        color: #FFFFFF;\n        font-style: normal;\n        text-transform: none;\n        display: flex;\n        align-items: center;\n        justify-content: center;\n    }\n    .res-title {\n        font-family: 'PingFang SC-Bold', 'PingFang SC-Bold';\n        font-weight: 500;\n        font-size: 13px;\n        color: #B2B2B2;\n        text-align: left;\n        font-style: normal;\n        text-transform: none;\n    }\n    .res-content {\n        font-family: 'PingFang SC-Bold', 'PingFang SC-Bold';\n        font-weight: 600;\n        font-size: 17px;\n        color: #1E293B;\n        text-align: left;\n        font-style: normal;\n        text-transform: none;\n        margin-bottom: 20px;\n    }\n    .insurance-msg {\n        font-family: 'PingFang SC-Bold', 'PingFang SC-Bold';\n        font-weight: 500;\n        font-size: 13px;\n        color: #B2B2B2;\n        text-align: left;\n        font-style: normal;\n        text-transform: none;\n    }\n    .pay-status-content {\n        display: flex;\n        flex-direction: row;\n        align-items: flex-start !important;\n        margin-bottom: 29px;\n    }\n    .pay-status-content > img {\n        flex: 0 0 20px;\n        margin-top: 1px;\n    }\n    .pay-status-content p {\n        font-family: 'PingFang SC-Bold', 'PingFang SC-Bold';\n        font-weight: 600;\n        font-size: 16px;\n        color: #1E293B;\n        text-align: left;\n        font-style: normal;\n        text-transform: none;\n        margin-bottom: 0;\n    }\n    .pay-option-copy {\n        display: flex;\n        flex-direction: column;\n        gap: 4px;\n        min-width: 0;\n        margin-left: 0.7rem;\n    }\n    .pay-option-title-row {\n        display: flex;\n        align-items: center;\n        flex-wrap: wrap;\n        gap: 0.45rem;\n        min-height: 20px;\n        line-height: 20px;\n    }\n    .pay-option-title-row p {\n        margin-left: 0 !important;\n        line-height: 20px !important;\n        min-height: 20px;\n    }\n    .wechat-recommended-tag {\n        display: inline-flex;\n        align-items: center;\n        justify-content: center;\n        gap: 3px;\n        padding: 1px 8px;\n        border-radius: 999px;\n        border: 1px solid rgba(22, 163, 74, 0.2);\n        background: #ECFDF3;\n        color: #15803D;\n        font-family: 'PingFang SC-Bold', 'PingFang SC-Bold';\n        font-size: 13px;\n        font-weight: 700;\n        line-height: 18px;\n        white-space: nowrap;\n    }\n    .wechat-recommended-star {\n        display: inline-flex;\n        align-items: center;\n        justify-content: center;\n        height: 18px;\n        line-height: 18px;\n        font-size: 11px;\n        transform: translateY(0.5px);\n    }\n    .pay-option-desc {\n        display: block;\n        color: #64748B;\n        font-family: 'PingFang SC-Bold', 'PingFang SC-Bold';\n        font-size: 12px;\n        font-weight: 500;\n        line-height: 16px;\n        min-height: 16px;\n    }\n    .pay-option-desc-placeholder {\n        visibility: hidden;\n    }\n    .terms-content {\n        font-family: 'PingFang SC-Bold', 'PingFang SC-Bold';\n        font-weight: 600;\n        font-size: 16px;\n        color: #1E293B;\n        text-align: left;\n        font-style: normal;\n        text-transform: none;\n    }\n    \/* \u60ac\u505c\u6548\u679c *\/\n    .section-title:hover {\n        color: #1558DA;\n    }\n    .content-title {\n        font-family: 'PingFang SC-Bold', 'PingFang SC-Bold';\n        font-weight: 400;\n        font-size: 21px;\n        color: #1E293B;\n        text-align: center;\n        font-style: normal;\n        text-transform: none;\n        margin-bottom: 20px;\n        width: 100%;\n        text-align: left;\n    }\n    .edit-result {\n        width: 100%;\n        height: 100%;\n        border-radius: 20px;\n        position: relative;\n        display: flex;\n        flex-direction: row;\n        padding: 17px 18px;\n        flex-wrap: wrap;\n        background: #FFFFFF;\n        box-shadow: 0px 3 5px 0px rgba(215,215,215,0.25);\n    }\n    .result {\n        width: 100%;\n        height: 100%;\n        display: flex;\n        flex-direction: column;\n    }\n    .msg-content {\n        width: 100%;\n        height: 100%;\n    }\n    .address-font {\n        font-family: 'PingFang SC-Bold', 'PingFang SC-Bold';\n        font-weight: 400;\n        font-size: 16px;\n        color: #1558DA;\n        text-align: left;\n        font-style: normal;\n        text-transform: none;\n        margin-bottom: 10px;\n    }\n    .pay-result {\n        display: flex;\n        flex-direction: row;\n        align-items: center;\n    }\n    .pay-result span {\n        font-family: 'PingFang SC-Bold', 'PingFang SC-Bold';\n        font-weight: 600;\n        font-size: 17px;\n        color: #1E293B;\n        margin-left: 10px;\n        font-style: normal;\n        text-transform: none;\n    }\n    \/* \u79fb\u52a8\u7aef\u8c03\u6574 *\/\n    @media (max-width: 991px) {\n        #app .main-content {\n            display: flex;\n            flex-direction: column; \/* \u6539\u4e3a\u7eb5\u5411\u6392\u5217 *\/\n        }\n        .edit-content-mobile {\n            margin-right: 1rem;\n        }\n        .trem-img {\n            width: 40px !important;\n            height: 20px !important;\n        }\n        .mobile-pay {\n            width: 100% !important;\n        }\n        .phone-mobile {\n            justify-content: space-between;\n        }\n        .left-content {\n            padding-right: 0;\n            padding-left: 0;\n            margin-left: 0px;\n            order: 2; \/* \u5de6\u4fa7\u5185\u5bb9\u5728\u524d *\/\n        }\n        .visa-mobile {\n            justify-content: space-between;\n        }\n        #app .main-content > .right-content {\n            width: 100%;\n            min-width: 0;\n            min-height: 0;\n            order: 1; \/* \u53f3\u4fa7\u5185\u5bb9\u5728\u540e *\/\n            position: static !important; \/* \u79fb\u52a8\u7aef\u968f\u9875\u9762\u6b63\u5e38\u6eda\u52a8 *\/\n            top: auto !important;\n            margin-top: 20px;\n            animation: none;\n        }\n        .input-mobile {\n            width: 45% !important;\n        }\n        .input-mobile-phone {\n            width: 100% !important;\n        }\n        .edit-content {\n            justify-content: space-between;\n        }\n        .date-img {\n            top: 26.5px !important;\n        }\n        .mobileWidth {\n            width: 45% !important;\n        }\n    }\n    .input-placeholder {\n        display: block;\n        font-size: 15px;\n        color: #B2B2B2;\n        position: absolute;\n        z-index: 99;\n        left: 10px;\n        top: 1.5rem;\n        pointer-events: none !important;\n        user-select: none;\n    }\n    .input-placeholder span {\n        color: red;\n    }\n    .input-insert input:not(:placeholder-shown) + .input-placeholder {\n        display: none;\n    }\n    .input-span {\n        position: absolute;\n        opacity: 0;\n        transition: opacity 0.3s ease;\n        z-index: 99;\n        left: 11px;\n        top: 18px;\n        font-size: 11px;\n        color: #B2B2B2;\n        font-family: 'PingFang SC-Bold', 'PingFang SC-Bold';\n        pointer-events: none !important;\n        user-select: none;\n    }\n    .input-insert {\n        position: relative;\n        z-index: 9;\n    }\n    #app.ggs-us-application-v4 .input-insert > input:not([disabled]):not([readonly]) {\n        position: relative;\n        z-index: 2;\n        pointer-events: auto !important;\n    }\n    .input-insert input:not(:placeholder-shown) + .input-span {\n        opacity: 1;\n    }\n    .bigBox input {\n        padding-top: 1.2rem;\n    }\n    .date-full {\n        position: relative;\n    }\n    .date-img {\n        position: absolute;\n        width: 1.4rem;\n        top: 26.5px;\n        right: 0.89rem;\n    }\n    \/*.buy-btn {*\/\n    \/*    background: #4CAF50;*\/\n    \/*    color: white;*\/\n    \/*    padding: 12px 24px;*\/\n    \/*    border: none;*\/\n    \/*    border-radius: 4px;*\/\n    \/*    cursor: pointer;*\/\n    \/*    transition: transform 0.3s ease;*\/\n    \/*}*\/\n\n    .pulse-animation {\n        animation: pulse 1.5s ease;\n    }\n\n    @keyframes pulse {\n        0% { transform: scale(1); }\n        15% { transform: scale(1.2); }\n        33% { transform: scale(1); }\n        46% { transform: scale(1.2); }\n        60% { transform: scale(1); }\n        75% { transform: scale(1.2); }\n        100% { transform: scale(1); }\n    }\n    .main-content input {\n        \/*font-size: 16px !important;*\/\n        height: 53px !important;\n        background-color:#F0F7FF !important;\n        width: 100%;\n        border: none !important;\n        \/*padding: 7px 11px !important;*\/\n        \/*padding-top: 25px !important;*\/\n    }\n    .main-content select {\n        \/*font-size: 16px !important;*\/\n        height: 53px !important;\n        border: none !important;\n        background-color:#F0F7FF !important;\n        \/*padding: 10px 6px !important;*\/\n        \/*padding-top: 25px !important;*\/\n    }\n    input[type=\"text\"] {\n        box-shadow: none !important;\n    }\n    .custom-select {\n        position: relative;\n        appearance: none; \/* \u9690\u85cf\u9ed8\u8ba4\u4e0b\u62c9\u7bad\u5934 *\/\n        \/* \u81ea\u5b9a\u4e49\u4e0b\u62c9\u56fe\u6807 *\/\n        background-image: url('data:image\/svg+xml;utf8,<svg fill=\"%23333\" height=\"24\" viewBox=\"0 0 24 24\" width=\"24\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"M7 10l5 5 5-5z\"\/><\/svg>');\n        background-repeat: no-repeat;\n        background-position: right 8px center; \/* \u63a7\u5236\u56fe\u6807\u4f4d\u7f6e *\/\n        background-size: 26px; \/* \u63a7\u5236\u56fe\u6807\u5927\u5c0f *\/\n    }\n    #app .main-content .left-content .per-msg > .ggs-collapse-content.expanded {\n        display: block !important;\n        overflow: visible !important;\n        width: 100% !important;\n        margin: 0 0 20px !important;\n        padding: 0 !important;\n        background: transparent !important;\n        border: 0 !important;\n        border-radius: 0 !important;\n        box-shadow: none !important;\n        box-sizing: border-box !important;\n    }\n    #app .main-content .left-content .per-msg > .ggs-collapse-content.expanded > .content-title {\n        display: block !important;\n        visibility: visible !important;\n        opacity: 1 !important;\n        width: 100% !important;\n        margin: 0 0 14px !important;\n        padding: 0 !important;\n        color: #1E293B !important;\n        font-size: 21px !important;\n        line-height: 1.4 !important;\n        text-align: left !important;\n    }\n    #app .main-content .left-content .per-msg > .ggs-collapse-content.expanded > .per-content {\n        display: block !important;\n        position: relative !important;\n        overflow: visible !important;\n        width: 100% !important;\n        min-height: 170px !important;\n        padding: 20px 33px !important;\n        background: #FFFFFF !important;\n        border: 1px solid #1558DA !important;\n        border-radius: 20px !important;\n        box-shadow: none !important;\n        box-sizing: border-box !important;\n    }\n    #app .main-content .left-content .per-msg > .ggs-collapse-content.expanded > .per-content::before {\n        content: none !important;\n    }\n    #app .main-content .left-content .per-msg > .ggs-collapse-content.expanded > .per-content > .edit-btn {\n        display: block !important;\n        visibility: visible !important;\n        opacity: 1 !important;\n        top: -1px !important;\n        right: -1px !important;\n        z-index: 5 !important;\n    }\n    #app .main-content .left-content .per-msg > .ggs-collapse-content.expanded > .per-content > .edit-content {\n        display: flex !important;\n        visibility: visible !important;\n        opacity: 1 !important;\n        position: relative;\n        z-index: 4;\n    }\n    [v-cloak] {\n        display: none;\n    }\n    .uc-global-loading {\n        position: fixed;\n        inset: 0;\n        z-index: 10060;\n        display: flex;\n        align-items: center;\n        justify-content: center;\n        padding: 20px;\n        background: rgba(250, 250, 249, 0.96);\n        backdrop-filter: none;\n    }\n    .uc-global-loading-card {\n        width: min(92vw, 360px);\n        padding: 24px 20px 20px;\n        border: 1px solid rgba(209, 213, 219, 0.85);\n        border-radius: 18px;\n        background: linear-gradient(145deg, rgba(255, 255, 255, .98), rgba(251, 252, 255, .96));\n        box-shadow: 0 20px 48px rgba(15, 23, 42, .14);\n        text-align: center;\n    }\n    .uc-global-loading-card strong {\n        display: block;\n        margin-top: 12px;\n        color: #0f172a !important;\n        font-size: 20px !important;\n        font-weight: 800 !important;\n    }\n    .uc-global-loading-card p {\n        margin-top: 6px !important;\n        color: #475467 !important;\n        font-size: 14px !important;\n        font-weight: 600 !important;\n    }\n    .uc-global-loading-orbit {\n        width: 68px;\n        height: 68px;\n        margin: 0 auto;\n        position: relative;\n    }\n    .uc-global-loading-orbit span {\n        position: absolute;\n        inset: 0;\n        border: 2px solid transparent;\n        border-top-color: #2563eb;\n        border-radius: 999px;\n        animation: ucSpin 1s linear infinite;\n    }\n    .uc-global-loading-orbit span:nth-child(2) {\n        inset: 8px;\n        border-top-color: #4f46e5;\n        animation-duration: .85s;\n        animation-direction: reverse;\n    }\n    .uc-global-loading-orbit span:nth-child(3) {\n        inset: 13px;\n        border-top-color: #10b981;\n        animation-duration: .7s;\n    }\n    .uc-global-loading-logo {\n        position: absolute;\n        left: 50%;\n        top: 50%;\n        width: 30px;\n        height: 30px;\n        transform: translate(-50%, -50%);\n        object-fit: contain;\n        z-index: 2;\n        border-radius: 8px;\n        filter: drop-shadow(0 2px 5px rgba(37, 99, 235, .22));\n        pointer-events: none;\n    }\n    .uc-loading-enter-active,\n    .uc-loading-leave-active {\n        transition: opacity .18s ease;\n    }\n    .uc-loading-enter-from,\n    .uc-loading-leave-to {\n        opacity: 0;\n    }\n    @keyframes ucSpin {\n        from {\n            transform: rotate(0deg);\n        }\n        to {\n            transform: rotate(360deg);\n        }\n    }\n    .layui-input-affix {\n        display: flex;\n        align-items: center;\n    }\n    #app .renewal-top-banner {\n        width: 100%;\n        margin: 0 auto 18px;\n        padding: 14px 18px;\n        border-radius: 12px;\n        background: linear-gradient(90deg, #f9cb15 0%, #f49e0b 100%) !important;\n        box-shadow: 0 10px 24px rgba(244, 158, 11, 0.22);\n        display: flex;\n        align-items: center;\n        gap: 14px;\n        box-sizing: border-box;\n    }\n    #app .renewal-top-banner-icon {\n        width: 48px;\n        height: 48px;\n        border-radius: 50%;\n        background: rgba(255, 255, 255, 0.22) !important;\n        color: #6B4300 !important;\n        display: flex;\n        align-items: center;\n        justify-content: center;\n        flex-shrink: 0;\n    }\n    #app .renewal-top-banner-icon svg {\n        width: 25px;\n        height: 25px;\n        display: block;\n    }\n    #app .renewal-top-banner-body {\n        min-width: 0;\n    }\n    #app .renewal-top-banner-title {\n        font-family: 'PingFang SC-Bold', 'PingFang SC', sans-serif !important;\n        font-weight: 700 !important;\n        font-size: 20px !important;\n        line-height: 1.25;\n        color: #6B4300 !important;\n    }\n    #app .renewal-top-banner-desc {\n        margin-top: 4px;\n        font-size: 12px;\n        line-height: 1.35;\n        color: rgba(107, 67, 0, 0.72) !important;\n    }\n    #app .renewal-top-banner-code {\n        display: inline-flex;\n        align-items: center;\n        margin-left: 8px;\n        padding: 2px 8px;\n        border-radius: 999px;\n        background: rgba(255, 255, 255, 0.34) !important;\n        color: #5F3900 !important;\n        font-weight: 700;\n        letter-spacing: 0.2px;\n        white-space: nowrap;\n    }\n\n    \/* I-20 prefill panel. Kept here, outside the Vue DOM, so theme rules cannot drop it. *\/\n    #app .i20-prefill-heading {\n        width: 100% !important;\n        margin: 0 0 14px !important;\n        padding: 0 !important;\n    }\n    #app .i20-prefill-heading > .content-title {\n        width: 100% !important;\n        margin: 0 !important;\n        padding: 0 !important;\n    }\n    #app button.i20-upload-panel,\n    #app .i20-upload-panel {\n        all: unset !important;\n        box-sizing: border-box !important;\n        display: flex !important;\n        align-items: center !important;\n        width: 100% !important;\n        min-height: 104px !important;\n        margin: 0 0 14px !important;\n        padding: 18px 24px !important;\n        border: 2px dashed #7aa7ef !important;\n        border-radius: 8px !important;\n        background: #fbfdff !important;\n        color: #1e293b !important;\n        font-family: inherit !important;\n        letter-spacing: 0 !important;\n        box-shadow: none !important;\n        text-align: left !important;\n    }\n    #app button.i20-upload-panel {\n        cursor: pointer !important;\n    }\n    #app button.i20-upload-panel:hover,\n    #app button.i20-upload-panel:active {\n        border-color: #7aa7ef !important;\n        background: #fbfdff !important;\n        color: #1e293b !important;\n        box-shadow: none !important;\n        transform: none !important;\n    }\n    #app button.i20-upload-panel:focus-visible {\n        outline: 3px solid rgba(21, 88, 218, .2) !important;\n        outline-offset: 3px !important;\n    }\n    #app button.i20-upload-panel:disabled {\n        cursor: wait !important;\n        opacity: .72 !important;\n    }\n    #app .i20-upload-panel--uploaded {\n        min-height: 86px !important;\n        border: 1px solid #bfd2f4 !important;\n        background: #f7faff !important;\n    }\n    #app .i20-upload-panel__icon {\n        display: inline-flex !important;\n        flex: 0 0 48px !important;\n        align-items: center !important;\n        justify-content: center !important;\n        width: 48px !important;\n        height: 48px !important;\n        margin: 0 20px 0 0 !important;\n        padding: 0 !important;\n        color: #2164dd !important;\n    }\n    #app .i20-upload-panel__icon svg {\n        display: block !important;\n        width: 32px !important;\n        height: 32px !important;\n        stroke: currentColor !important;\n    }\n    #app .i20-upload-panel--uploaded .i20-upload-panel__icon {\n        width: 38px !important;\n        height: 46px !important;\n        flex-basis: 38px !important;\n        margin-right: 20px !important;\n        border-radius: 5px !important;\n        background: #2869e4 !important;\n        color: #fff !important;\n    }\n    #app .i20-upload-panel__body {\n        flex: 1 1 auto !important;\n        min-width: 0 !important;\n        margin: 0 !important;\n        padding: 0 !important;\n    }\n    #app .i20-upload-panel__headline {\n        display: flex !important;\n        align-items: center !important;\n        gap: 12px !important;\n        flex-wrap: wrap !important;\n        margin: 0 0 4px !important;\n        padding: 0 !important;\n    }\n    #app .i20-upload-panel__title {\n        margin: 0 !important;\n        padding: 0 !important;\n        color: #2361c8 !important;\n        font-size: 15px !important;\n        font-weight: 700 !important;\n        line-height: 1.35 !important;\n    }\n    #app .i20-upload-panel--uploaded .i20-upload-panel__title {\n        color: #1e293b !important;\n    }\n    #app .i20-upload-panel__description {\n        display: block !important;\n        margin: 0 !important;\n        padding: 0 !important;\n        color: #64748b !important;\n        font-size: 13px !important;\n        font-weight: 500 !important;\n        line-height: 1.5 !important;\n    }\n    #app .i20-upload-panel__meta {\n        flex: 0 0 auto !important;\n        margin: 0 0 0 24px !important;\n        color: #64748b !important;\n        font-size: 12px !important;\n        font-weight: 600 !important;\n        white-space: nowrap !important;\n    }\n    #app .i20-upload-panel__success {\n        display: inline-flex !important;\n        align-items: center !important;\n        gap: 6px !important;\n        color: #16966a !important;\n        font-size: 13px !important;\n        font-weight: 700 !important;\n    }\n    #app .i20-upload-panel__success-mark {\n        display: inline-flex !important;\n        align-items: center !important;\n        justify-content: center !important;\n        width: 19px !important;\n        height: 19px !important;\n        border-radius: 50% !important;\n        background: #dff7ec !important;\n        color: #159568 !important;\n        font-size: 12px !important;\n        line-height: 1 !important;\n    }\n    #app .i20-upload-panel__actions {\n        display: flex !important;\n        flex: 0 0 auto !important;\n        align-items: center !important;\n        gap: 14px !important;\n        margin: 0 0 0 24px !important;\n    }\n    #app button.i20-upload-panel__replace,\n    #app button.i20-upload-panel__remove {\n        all: unset !important;\n        box-sizing: border-box !important;\n        display: inline-flex !important;\n        align-items: center !important;\n        justify-content: center !important;\n        margin: 0 !important;\n        padding: 5px 7px !important;\n        border-radius: 4px !important;\n        background: transparent !important;\n        font-family: inherit !important;\n        letter-spacing: 0 !important;\n        cursor: pointer !important;\n    }\n    #app button.i20-upload-panel__replace {\n        color: #2361c8 !important;\n        font-size: 13px !important;\n        font-weight: 700 !important;\n    }\n    #app button.i20-upload-panel__remove {\n        width: 30px !important;\n        height: 30px !important;\n        padding: 0 !important;\n        color: #64748b !important;\n        font-size: 24px !important;\n        font-weight: 400 !important;\n        line-height: 1 !important;\n    }\n    #app button.i20-upload-panel__replace:hover,\n    #app button.i20-upload-panel__replace:active,\n    #app button.i20-upload-panel__remove:hover,\n    #app button.i20-upload-panel__remove:active {\n        background: #eaf1ff !important;\n        color: #174eae !important;\n        box-shadow: none !important;\n        transform: none !important;\n    }\n    #app .i20-prefill-notice {\n        display: flex !important;\n        flex-direction: column !important;\n        gap: 4px !important;\n        box-sizing: border-box !important;\n        width: 100% !important;\n        margin: 0 0 12px !important;\n        padding: 10px 13px !important;\n        border: 1px solid #cbd9f8 !important;\n        border-radius: 7px !important;\n        background: #f6f9ff !important;\n        color: #334155 !important;\n        font-size: 13px !important;\n        line-height: 1.45 !important;\n    }\n    #app .i20-prefill-notice--warning { border-color: #f0cf7b !important; background: #fff9e9 !important; color: #8a5300 !important; }\n    #app .i20-prefill-notice--error { border-color: #f2b2b2 !important; background: #fff4f4 !important; color: #b42318 !important; }\n\n    \/* Visa date helper: positioned inside the existing start-date field, so the form layout is unchanged. *\/\n    #app .visa-date-guide {\n        position: absolute !important;\n        left: 0 !important;\n        bottom: calc(100% - 5px) !important;\n        display: block !important;\n        width: auto !important;\n        margin: 0 !important;\n        padding: 0 !important;\n        z-index: 40 !important;\n    }\n    #app .input-insert.visa-guide-active {\n        z-index: 100000 !important;\n    }\n    #app button.visa-date-guide__trigger {\n        all: unset !important;\n        box-sizing: border-box !important;\n        display: inline-flex !important;\n        align-items: center !important;\n        gap: 6px !important;\n        margin: 0 !important;\n        padding: 3px 2px !important;\n        border: 0 !important;\n        border-radius: 0 !important;\n        background: transparent !important;\n        color: #315dba !important;\n        font-family: inherit !important;\n        font-size: 12px !important;\n        font-weight: 600 !important;\n        line-height: 1.3 !important;\n        letter-spacing: 0 !important;\n        box-shadow: none !important;\n        cursor: pointer !important;\n        text-decoration: none !important;\n        white-space: nowrap !important;\n    }\n    #app button.visa-date-guide__trigger:hover,\n    #app button.visa-date-guide__trigger:active,\n    #app button.visa-date-guide__trigger[aria-expanded=\"true\"] {\n        border: 0 !important;\n        background: transparent !important;\n        color: #315dba !important;\n        box-shadow: none !important;\n        transform: none !important;\n    }\n    #app button.visa-date-guide__trigger:focus-visible {\n        outline: 2px solid rgba(21, 88, 218, .25) !important;\n        outline-offset: 2px !important;\n    }\n    #app .visa-date-guide__mark {\n        display: inline-flex !important;\n        align-items: center !important;\n        justify-content: center !important;\n        width: 17px !important;\n        height: 17px !important;\n        border-radius: 50% !important;\n        background: #eaf1ff !important;\n        color: #1558da !important;\n        font-size: 12px !important;\n        font-weight: 800 !important;\n        line-height: 1 !important;\n    }\n    #app .visa-date-guide__popover {\n        position: absolute !important;\n        top: calc(100% + 56px) !important;\n        left: 0 !important;\n        box-sizing: border-box !important;\n        width: min(400px, calc(100vw - 64px)) !important;\n        max-height: 72vh !important;\n        overflow: auto !important;\n        margin: 0 !important;\n        padding: 14px !important;\n        border: 1px solid #c7d7f4 !important;\n        border-radius: 8px !important;\n        background: #fff !important;\n        color: #1e293b !important;\n        box-shadow: 0 16px 34px rgba(15, 39, 82, .2) !important;\n        z-index: 1001 !important;\n    }\n    #app .visa-date-guide__backdrop {\n        display: none !important;\n    }\n    #app .visa-date-guide__popover-head {\n        display: flex !important;\n        align-items: flex-start !important;\n        justify-content: space-between !important;\n        gap: 12px !important;\n        margin: 0 0 6px !important;\n        padding: 0 !important;\n    }\n    #app .visa-date-guide__title {\n        margin: 0 !important;\n        padding: 0 !important;\n        color: #173a78 !important;\n        font-size: 15px !important;\n        font-weight: 800 !important;\n        line-height: 1.35 !important;\n    }\n    #app button.visa-date-guide__close {\n        all: unset !important;\n        box-sizing: border-box !important;\n        display: inline-flex !important;\n        flex: 0 0 28px !important;\n        align-items: center !important;\n        justify-content: center !important;\n        width: 28px !important;\n        height: 28px !important;\n        margin: -5px -5px 0 0 !important;\n        border-radius: 4px !important;\n        background: transparent !important;\n        color: #64748b !important;\n        font-size: 22px !important;\n        line-height: 1 !important;\n        cursor: pointer !important;\n    }\n    #app button.visa-date-guide__close:hover { background: #f1f5f9 !important; color: #173a78 !important; }\n    #app .visa-date-guide__copy {\n        margin: 0 0 11px !important;\n        padding: 0 !important;\n        color: #475569 !important;\n        font-size: 13px !important;\n        font-weight: 500 !important;\n        line-height: 1.5 !important;\n    }\n    #app .visa-date-guide__image {\n        display: block !important;\n        box-sizing: border-box !important;\n        width: 100% !important;\n        height: auto !important;\n        margin: 0 !important;\n        border: 1px solid #e2e8f0 !important;\n        border-radius: 5px !important;\n        background: #fff !important;\n    }\n    @media (max-width: 767px) {\n        #app button.i20-upload-panel,\n        #app .i20-upload-panel { align-items: flex-start !important; padding: 16px !important; }\n        #app .i20-upload-panel__icon { flex-basis: 36px !important; width: 36px !important; height: 40px !important; margin-right: 12px !important; }\n        #app .i20-upload-panel__meta { display: none !important; }\n        #app .i20-upload-panel--uploaded {\n            position: relative !important;\n            min-height: 138px !important;\n            padding: 14px 12px !important;\n        }\n        #app .i20-upload-panel--uploaded .i20-upload-panel__icon {\n            flex-basis: 38px !important;\n            width: 38px !important;\n            height: 42px !important;\n            margin-right: 12px !important;\n        }\n        #app .i20-upload-panel--uploaded .i20-upload-panel__body {\n            width: calc(100% - 50px) !important;\n            padding: 0 !important;\n        }\n        #app .i20-upload-panel--uploaded .i20-upload-panel__headline {\n            align-items: flex-start !important;\n            flex-direction: column !important;\n            gap: 3px !important;\n            min-height: 48px !important;\n            padding-right: 106px !important;\n        }\n        #app .i20-upload-panel--uploaded .i20-upload-panel__success {\n            gap: 5px !important;\n            font-size: 12px !important;\n            white-space: nowrap !important;\n        }\n        #app .i20-upload-panel--uploaded .i20-upload-panel__description {\n            margin-top: 4px !important;\n            padding-right: 4px !important;\n            font-size: 12px !important;\n            line-height: 1.45 !important;\n        }\n        #app .i20-upload-panel__actions {\n            position: absolute !important;\n            top: 11px !important;\n            right: 7px !important;\n            gap: 2px !important;\n            margin: 0 !important;\n        }\n        #app button.i20-upload-panel__replace { padding: 5px !important; font-size: 11px !important; white-space: nowrap !important; }\n        #app button.i20-upload-panel__remove { width: 28px !important; height: 28px !important; font-size: 21px !important; }\n        #app .visa-date-guide__popover {\n            position: fixed !important;\n            top: 50% !important;\n            left: 50% !important;\n            width: calc(100vw - 32px) !important;\n            max-width: 400px !important;\n            max-height: calc(100vh - 40px) !important;\n            transform: translate(-50%, -50%) !important;\n            box-shadow: 0 18px 44px rgba(15, 39, 82, .28) !important;\n            z-index: 100001 !important;\n        }\n        #app .visa-date-guide__backdrop {\n            position: fixed !important;\n            inset: 0 !important;\n            display: block !important;\n            margin: 0 !important;\n            padding: 0 !important;\n            border: 0 !important;\n            background: rgba(15, 23, 42, .42) !important;\n            z-index: 100000 !important;\n        }\n        #app .visa-date-guide__popover-head { margin-bottom: 4px !important; }\n        #app .visa-date-guide__title { font-size: 14px !important; }\n        #app .visa-date-guide__copy { margin-bottom: 9px !important; font-size: 12px !important; line-height: 1.4 !important; }\n        #app .visa-date-guide__image { max-height: calc(100vh - 155px) !important; object-fit: contain !important; }\n    }\n\n    html.wechat-modal-open,\n    body.wechat-modal-open {\n        overflow: hidden !important;\n        overscroll-behavior: none;\n    }\n\n    #app #myModal.modal-open {\n        position: fixed !important;\n        inset: 0 !important;\n        z-index: 2147483647 !important;\n        display: flex !important;\n        align-items: center !important;\n        justify-content: center !important;\n        box-sizing: border-box !important;\n        width: 100% !important;\n        height: 100vh !important;\n        height: 100dvh !important;\n        padding: max(12px, env(safe-area-inset-top)) 12px max(12px, env(safe-area-inset-bottom)) !important;\n        overflow: hidden !important;\n        isolation: isolate;\n        background: rgba(8, 26, 60, 0.58) !important;\n        backdrop-filter: blur(2px);\n        -webkit-backdrop-filter: blur(2px);\n    }\n\n    #app #myModal .wechat-payment-modal {\n        display: flex !important;\n        flex-direction: column !important;\n        box-sizing: border-box !important;\n        width: min(460px, 100%) !important;\n        height: min(660px, calc(100dvh - 24px)) !important;\n        max-width: 460px !important;\n        max-height: 100% !important;\n        margin: 0 !important;\n        overflow: hidden !important;\n    }\n\n    #app #myModal .wechat-payment-modal__body {\n        flex: 1 1 auto;\n        min-height: 0;\n        padding-right: 4px;\n        margin-right: -4px;\n        overflow-x: hidden;\n        overflow-y: auto;\n        overscroll-behavior: contain;\n        scrollbar-gutter: stable;\n        -webkit-overflow-scrolling: touch;\n    }\n\n    #app #myModal .modal-actions {\n        position: sticky;\n        bottom: 0;\n        z-index: 2;\n        padding: 12px 0 2px;\n        background: linear-gradient(180deg, rgba(255,255,255,0), #fff 18px, #fff 100%);\n    }\n\n    #app.wechat-modal-active .main-content .edit-btn,\n    #app.wechat-modal-active .visa-date-guide,\n    #app.wechat-modal-active .visa-date-guide__backdrop,\n    html.wechat-modal-open #chat-widget-container,\n    body.wechat-modal-open #chat-widget-container,\n    body.wechat-modal-open [id^=\"chat-widget-\"],\n    body.wechat-modal-open iframe[title*=\"LiveChat\"],\n    body.wechat-modal-open iframe[src*=\"livechat\"] {\n        visibility: hidden !important;\n        opacity: 0 !important;\n        pointer-events: none !important;\n    }\n\n    @media (max-width: 640px), (max-height: 760px) {\n        #app #myModal.modal-open {\n            align-items: flex-start !important;\n            padding-left: 8px !important;\n            padding-right: 8px !important;\n        }\n        #app #myModal .wechat-payment-modal {\n            width: 100% !important;\n            height: min(640px, calc(100dvh - max(16px, env(safe-area-inset-top)) - max(16px, env(safe-area-inset-bottom)))) !important;\n            padding: 16px 14px 12px !important;\n            border-radius: 20px !important;\n        }\n        #app #myModal .wechat-payment-modal__close {\n            top: 12px !important;\n            right: 12px !important;\n            width: 30px !important;\n            height: 30px !important;\n        }\n        #app #myModal .modal-title {\n            padding-right: 36px;\n            font-size: 22px !important;\n            line-height: 1.18 !important;\n        }\n        #app #myModal .qr-box {\n            width: 150px !important;\n            height: 150px !important;\n        }\n        #app #myModal .qr-image {\n            width: 144px !important;\n            height: 144px !important;\n        }\n        #app #myModal .qr-actions {\n            gap: 8px !important;\n        }\n        #app #myModal .qr-actions .btn {\n            min-width: 0 !important;\n            height: 44px !important;\n            padding: 0 8px !important;\n            font-size: 13px !important;\n        }\n    }\n\n    \/* Keep the policy summary\/Confirm order after the form whenever the layout becomes vertical. *\/\n    @media (max-width: 1080px) {\n        #app.ggs-us-application-v4 .us-v4-application-layout {\n            grid-template-columns: minmax(0, 1fr) !important;\n        }\n\n        #app.ggs-us-application-v4 .us-v4-policy-column {\n            order: 2 !important;\n            position: static !important;\n        }\n\n        #app.ggs-us-application-v4 .us-v4-policy-card {\n            position: static !important;\n            top: auto !important;\n            margin: 0 !important;\n        }\n\n        \/* Match the phone flow: show the only Confirm order button inside Payment options. *\/\n        #app.ggs-us-application-v4 .mobile-confirm {\n            display: flex !important;\n            flex-direction: column !important;\n            gap: 10px !important;\n            width: 100% !important;\n            margin: 20px 0 0 !important;\n        }\n\n        #app.ggs-us-application-v4 .mobile-confirm .confirm-btn,\n        #app.ggs-us-application-v4 .mobile-confirm .buy-btn {\n            display: flex !important;\n            align-items: center !important;\n            justify-content: center !important;\n            width: 100% !important;\n            min-height: 46px !important;\n            margin: 0 !important;\n            color: #fff !important;\n            background: var(--us-v4-blue) !important;\n            border: 0 !important;\n            border-radius: 8px !important;\n            font-size: 14px !important;\n            font-weight: 700 !important;\n        }\n\n        #app.ggs-us-application-v4 .us-v4-policy-card .confirm-btn,\n        #app.ggs-us-application-v4 .us-v4-policy-card .buy-btn {\n            display: none !important;\n        }\n    }\n\n    #app.ggs-us-application-v4 .payment-options.payment-options--single {\n        grid-template-columns: minmax(0, 1fr) !important;\n    }\n<\/style>\n<!-- Add Pagination -->\n<div id=\"app\" class=\"app ggs-us-application-v4\" v-cloak data-no-translation=\"\">\n    <div v-if=\"showRenewalBanner\" class=\"renewal-top-banner\">\n        <div class=\"renewal-top-banner-icon\" aria-hidden=\"true\">\n            <svg viewbox=\"0 0 24 24\" fill=\"none\">\n                <rect x=\"4\" y=\"9\" width=\"16\" height=\"11\" rx=\"2\" stroke=\"currentColor\" stroke-width=\"1.8\"><\/rect>\n                <path d=\"M12 9V20\" stroke=\"currentColor\" stroke-width=\"1.8\"><\/path>\n                <path d=\"M4 13H20\" stroke=\"currentColor\" stroke-width=\"1.8\"><\/path>\n                <path d=\"M12 9C10.1 9 8.5 7.6 8.5 5.9C8.5 4.8 9.4 4 10.5 4C11.6 4 12.3 4.7 12 5.9\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\"><\/path>\n                <path d=\"M12 9C13.9 9 15.5 7.6 15.5 5.9C15.5 4.8 14.6 4 13.5 4C12.4 4 11.7 4.7 12 5.9\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\"><\/path>\n            <\/svg>\n        <\/div>\n        <div class=\"renewal-top-banner-body\">\n            <div class=\"renewal-top-banner-title\">{{ renewalBannerTitle }}<\/div>\n            <div class=\"renewal-top-banner-desc\">\n                {{ renewalBannerDesc }}\n                <span class=\"renewal-top-banner-code\" v-if=\"renewalCode\">Renew code: {{ renewalCode }}<\/span>\n            <\/div>\n        <\/div>\n    <\/div>\n    <!-- \u9519\u8bef\u63d0\u793a\u6846 -->\n    <div id=\"customAlert\">\n        <div style=\"display:flex;align-items:center;\">\n            <span>{{errMessage}}<\/span>\n            <svg style=\"width:16px;height:16px;fill: #721C24\" @click=\"closeAlert\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"w-3.5 cursor-pointer shrink-0 float-right\" viewbox=\"0 0 320.591 320.591\"><path d=\"M30.391 318.583a30.37 30.37 0 0 1-21.56-7.288c-11.774-11.844-11.774-30.973 0-42.817L266.643 10.665c12.246-11.459 31.462-10.822 42.921 1.424 10.362 11.074 10.966 28.095 1.414 39.875L51.647 311.295a30.366 30.366 0 0 1-21.256 7.288z\" data-original=\"#000000\"><\/path><path d=\"M287.9 318.583a30.37 30.37 0 0 1-21.257-8.806L8.83 51.963C-2.078 39.225-.595 20.055 12.143 9.146c11.369-9.736 28.136-9.736 39.504 0l259.331 257.813c12.243 11.462 12.876 30.679 1.414 42.922-.456.487-.927.958-1.414 1.414a30.368 30.368 0 0 1-23.078 7.288z\" data-original=\"#000000\"><\/path><\/svg>\n        <\/div>\n    <\/div>\n    <!-- \u52a0\u8f7d\u52a8\u753b -->\n    <transition name=\"uc-loading\">\n        <div v-if=\"loading\" v-cloak class=\"uc-global-loading\" role=\"status\" aria-live=\"polite\" aria-busy=\"true\">\n            <div class=\"uc-global-loading-card\">\n                <div class=\"uc-global-loading-orbit\">\n                    <span><\/span><span><\/span><span><\/span>\n                    <img decoding=\"async\" src=\"https:\/\/www.goglobalsafe.com\/wp-content\/uploads\/2026\/05\/logo-pure.webp\" alt=\"GoGlobalSafe\" class=\"uc-global-loading-logo\">\n                <\/div>\n                <strong>{{ isPaymentProcessing ? 'Processing' : 'Loading' }}<\/strong>\n                <p>{{ isPaymentProcessing ? 'Preparing your payment...' : 'Please wait a moment...' }}<\/p>\n            <\/div>\n        <\/div>\n    <\/transition>\n    <div v-if=\"pageMode !== 'card-success' && currentStep !== 3\" class=\"bigBox\" style=\"border-radius:8px;margin-top:30px;\" :style=\"currentStep === 3 ?'padding-left:0;':''\">\n        <!-- \u6b65\u9aa4\u6761 -->\n        <!--        <div class=\"stepper-container\" style=\"padding-top:3.125rem;\">-->\n        <!--            <div class=\"stepper\">-->\n        <!--                <div-->\n        <!--                        v-for=\"(step, index) in steps\"-->\n        <!--                        :key=\"step.id\"-->\n        <!--                        class=\"step\">-->\n        <!--                    <div class=\"step-number\" :style=\"currentStep!==index ? 'color:#000;background-color:#fff;box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.2);':''\">{{ index + 1 }}<\/div>-->\n        <!--                <\/div>-->\n        <!--            <\/div>-->\n        <!--        <\/div>-->\n        <!-- \u6b65\u9aa4\u4e00 -->\n        <!-- V4 application form: inlined for single-file deployment. -->\n<div class=\"main-content us-v4-main-content\" v-if=\"currentStep === 0\" v-cloak>\n    <main class=\"us-v4-application-layout\" aria-label=\"Insurance application\">\n        <div class=\"left-content us-v4-application-main\">\n            <div class=\"us-v4-save-status\" aria-live=\"polite\">\n                <span class=\"us-v4-save-dot\" aria-hidden=\"true\"><\/span>\n                <span>{{ pageLanguage === 'zh' ? '\u5df2\u81ea\u52a8\u4fdd\u5b58' : 'Saved automatically' }}<\/span>\n            <\/div>\n\n            <section class=\"per-msg form-step\" aria-labelledby=\"usV4InsuranceTitle\">\n                <header class=\"form-step__header\">\n                    <h2 id=\"usV4InsuranceTitle\">{{ progress[0] }}<\/h2>\n                <\/header>\n                <div class=\"form-card\">\n                    <button type=\"button\" class=\"form-card__edit us-v4-persistent-edit\" :aria-label=\"pageLanguage === 'zh' ? '\u7f16\u8f91\u4fdd\u9669\u4fe1\u606f' : 'Edit insurance information'\" @click.stop=\"toggleDetails(progress[0])\"><svg aria-hidden=\"true\" viewbox=\"0 0 24 24\"><path d=\"M14.5 5.5 18.5 9.5M4 20h4.1L19 9.1a2.8 2.8 0 0 0-4-4L4 16v4Z\" fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"1.8\"><\/path><\/svg><\/button>\n                    <div class=\"msg-content\" @click=\"toggleDetails(progress[0])\">\n                        <div class=\"us-v4-step-summary\">\n                            <div class=\"us-v4-step-summary-copy\">\n                                <strong>{{ inputDataOne[0].value ? (pageLanguage === 'zh' ? '\u4fdd\u969c\u4fe1\u606f\u5df2\u4fdd\u5b58' : 'Coverage information saved') : progress[0] }}<\/strong>\n                                <span v-if=\"inputDataOne[0].value\">{{ inputDataOne[0].value }} - {{ inputDataOne[1].value }}<\/span>\n                                <span v-else>{{ pageLanguage === 'zh' ? '\u8bf7\u9009\u62e9\u4fdd\u969c\u65e5\u671f' : 'Choose your coverage dates' }}<\/span>\n                            <\/div>\n                            <span class=\"us-v4-step-chip\" :class=\"getStepStatusClass(progress[0])\">{{ getStepStatusText(progress[0]) }}<\/span>\n                        <\/div>\n                    <\/div>\n                    <div class=\"ggs-collapse-content\" :id=\"progress[0]\">\n                        <div class=\"us-v4-card-status\" :class=\"getStepOpenStatusClass(progress[0])\">{{ getStepOpenStatusText(progress[0]) }}<\/div>\n                        <button type=\"button\" class=\"form-card__edit\" :aria-label=\"pageLanguage === 'zh' ? '\u7f16\u8f91\u4fdd\u9669\u4fe1\u606f' : 'Edit insurance information'\" @click.stop=\"toggleDetails(progress[0])\">\n                            <svg aria-hidden=\"true\" viewbox=\"0 0 24 24\"><path d=\"M14.5 5.5 18.5 9.5M4 20h4.1L19 9.1a2.8 2.8 0 0 0-4-4L4 16v4Z\" fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"1.8\"><\/path><\/svg>\n                        <\/button>\n                        <div class=\"form-card__content\">\n                            <div class=\"field-grid us-v4-insurance-grid\">\n                                <div class=\"field date-control\">\n                                    <label class=\"field-control\" for=\"startDate\">\n                                        <span class=\"field-label\">{{ inputTitle['Start date'] }}<\/span>\n                                        <input type=\"text\" id=\"startDate\" v-model=\"inputDataOne[0].value\" :min=\"minStartDate\" :disabled=\"isLock\" @change=\"updateEndDate\" class=\"layui-input\" readonly=\"true\">\n                                        <span v-if=\"!isLock\" class=\"us-v4-calendar-icon\" aria-hidden=\"true\"><svg viewbox=\"0 0 24 24\"><path d=\"M7 3v3M17 3v3M4.5 9h15M6 5h12a2 2 0 0 1 2 2v11a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V7a2 2 0 0 1 2-2Z\" fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-width=\"1.8\"><\/path><path d=\"M8 13h2M14 13h2M8 17h2M14 17h2\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-width=\"1.8\"><\/path><\/svg><\/span>\n                                    <\/label>\n                                <\/div>\n                                <div class=\"field\" v-if=\"!isHidePeriod\">\n                                    <label class=\"field-control\" for=\"duration\">\n                                        <span class=\"field-label\">{{ inputTitle['Period'] }}<\/span>\n                                        <select id=\"duration\" v-model=\"selectedMonths\" :disabled=\"isPeriodSelectDisabled\" @change=\"updateEndDate\">\n                                            <option v-for=\"m in monthOptions\" :key=\"m\" :value=\"m\">\n                                                <template v-if=\"m === NYU_LLM_PERIOD_VALUE\">\n                                                    {{ pageLanguage === 'zh' ? 'NYU LLM \u9879\u76ee' : 'NYU LLM Program' }}\n                                                <\/template>\n                                                <template v-else-if=\"m === 'School Required Coverage Period'\">\n                                                    {{ pageLanguage === 'zh' ? '\u5b66\u6821\u8981\u6c42\u7684\u4fdd\u969c\u671f' : 'School Required Coverage' }}\n                                                <\/template>\n                                                <template v-else-if=\"typeof m === 'string'\">\n                                                    {{ m }}\n                                                <\/template>\n                                                <template v-else>\n                                                    {{ m }} months\n                                                <\/template>\n                                            <\/option>\n                                        <\/select>\n                                    <\/label>\n                                <\/div>\n                                <div class=\"field\">\n                                    <label class=\"field-control\" for=\"endDate\">\n                                        <span class=\"field-label\">{{ inputTitle['End date'] }}<\/span>\n                                        <input\n                                            :type=\"allowCoverageEndDateEdit ? 'date' : 'text'\"\n                                            id=\"endDate\"\n                                            v-model=\"inputDataOne[1].value\"\n                                            :min=\"allowCoverageEndDateEdit ? minimumCoverageEndDate : null\"\n                                            :max=\"allowCoverageEndDateEdit ? maximumCoverageEndDate : null\"\n                                            :disabled=\"!allowCoverageEndDateEdit\"\n                                            :readonly=\"!allowCoverageEndDateEdit\"\n                                            @change=\"handleCoverageEndDateChange\"\n                                        >\n                                    <\/label>\n                                <\/div>\n                                <div class=\"field field--full\">\n                                    <label class=\"field-control field-control--with-badge\" for=\"referralCode\">\n                                        <span class=\"field-label\">{{ inputTitle['Referral code'] }}<\/span>\n                                        <span class=\"field-badge field-badge--optional\">{{ pageLanguage === 'zh' ? '\u9009\u586b' : 'Optional' }}<\/span>\n                                        <input type=\"text\" v-model=\"referralCode\" name=\"referral_code\" id=\"referralCode\" autocomplete=\"off\" @blur=\"codeExist(referralCode, 1)\">\n                                    <\/label>\n                                <\/div>\n                            <\/div>\n                            <footer class=\"form-card__footer\">\n                                <span class=\"form-card__ready\">{{ inputDataOne[0].value && inputDataOne[1].value ? (pageLanguage === 'zh' ? '\u4fdd\u969c\u65e5\u671f\u5df2\u51c6\u5907\u597d' : 'Coverage dates are ready') : (pageLanguage === 'zh' ? '\u8bf7\u9009\u62e9\u4fdd\u969c\u65e5\u671f' : 'Choose your coverage dates') }}<\/span>\n                                <button type=\"button\" class=\"button us-v4-button\" @click=\"nextForms(progress[0])\">{{ inputTitle['Next'] }}<\/button>\n                            <\/footer>\n                        <\/div>\n                    <\/div>\n                <\/div>\n            <\/section>\n\n            <section class=\"per-msg form-step\" aria-labelledby=\"usV4PersonalTitle\">\n                <header class=\"form-step__header\">\n                    <h2 id=\"usV4PersonalTitle\">{{ progress[1] }}<\/h2>\n                <\/header>\n                <div class=\"form-card\">\n                    <button type=\"button\" class=\"form-card__edit us-v4-persistent-edit\" :aria-label=\"pageLanguage === 'zh' ? '\u7f16\u8f91\u4e2a\u4eba\u4fe1\u606f' : 'Edit personal information'\" @click.stop=\"toggleDetails(progress[1])\"><svg aria-hidden=\"true\" viewbox=\"0 0 24 24\"><path d=\"M14.5 5.5 18.5 9.5M4 20h4.1L19 9.1a2.8 2.8 0 0 0-4-4L4 16v4Z\" fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"1.8\"><\/path><\/svg><\/button>\n                    <div class=\"msg-content\" @click=\"toggleDetails(progress[1])\">\n                        <div class=\"us-v4-step-summary\">\n                            <div class=\"us-v4-step-summary-copy\">\n                                <strong>{{ inputDataTwo[0].value ? `${inputDataTwo[0].value} ${inputDataTwo[2].value}` : progress[1] }}<\/strong>\n                                <span>{{ inputDataTwo[0].value ? inputDataTwo[6].value : (pageLanguage === 'zh' ? '\u4e0a\u4f20 I-20 \u6216\u624b\u52a8\u586b\u5199' : 'Upload an I-20 or enter the information manually') }}<\/span>\n                            <\/div>\n                            <span class=\"us-v4-step-chip\" :class=\"getStepStatusClass(progress[1])\">{{ getStepStatusText(progress[1]) }}<\/span>\n                        <\/div>\n                    <\/div>\n                    <div class=\"ggs-collapse-content\" :id=\"progress[1]\">\n                        <div class=\"us-v4-card-status\" :class=\"getStepOpenStatusClass(progress[1])\">{{ getStepOpenStatusText(progress[1]) }}<\/div>\n                        <button type=\"button\" class=\"form-card__edit\" :aria-label=\"pageLanguage === 'zh' ? '\u7f16\u8f91\u4e2a\u4eba\u4fe1\u606f' : 'Edit personal information'\" @click.stop=\"toggleDetails(progress[1])\">\n                            <svg aria-hidden=\"true\" viewbox=\"0 0 24 24\"><path d=\"M14.5 5.5 18.5 9.5M4 20h4.1L19 9.1a2.8 2.8 0 0 0-4-4L4 16v4Z\" fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"1.8\"><\/path><\/svg>\n                        <\/button>\n                        <div class=\"form-card__content\">\n                            <button v-if=\"!i20UploadToken\" type=\"button\" class=\"i20-upload-panel\" :disabled=\"i20Uploading\" @click=\"openI20Picker\">\n                                <span class=\"i20-upload-panel__icon\" aria-hidden=\"true\">\n                                    <svg viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M12 16V4\"><\/path><path d=\"m7 9 5-5 5 5\"><\/path><path d=\"M5 14v4a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2v-4\"><\/path><\/svg>\n                                <\/span>\n                                <span class=\"i20-upload-panel__body\">\n                                    <span class=\"i20-upload-panel__headline\"><span class=\"i20-upload-panel__title\">{{ i20Uploading ? i20Copy.reading : i20Copy.uploadTitle }}<\/span><\/span>\n                                    <span class=\"i20-upload-panel__description\">{{ i20Copy.uploadDescription }}<\/span>\n                                    <span class=\"i20-upload-panel__description\">{{ i20Copy.uploadReview }}<\/span>\n                                <\/span>\n                                <span class=\"i20-upload-panel__meta\">{{ i20Copy.uploadMeta }}<\/span>\n                            <\/button>\n                            <div v-else class=\"i20-upload-panel i20-upload-panel--uploaded\">\n                                <span class=\"i20-upload-panel__icon\" aria-hidden=\"true\">\n                                    <svg viewbox=\"0 0 24 24\" aria-hidden=\"true\"><circle cx=\"12\" cy=\"12\" r=\"9\" fill=\"#087c55\"><\/circle><path d=\"m8 12 2.6 2.6L16 9.3\" fill=\"none\" stroke=\"#fff\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><\/path><\/svg>\n                                <\/span>\n                                <span class=\"i20-upload-panel__body\">\n                                    <span class=\"i20-upload-panel__title\">{{ i20Copy.uploadedTitle }}<\/span>\n                                    <span class=\"i20-upload-panel__description\">{{ i20Copy.uploadedDescription }}<\/span>\n                                    <span class=\"i20-upload-panel__actions\">\n                                        <button type=\"button\" class=\"i20-upload-panel__replace\" :disabled=\"i20Uploading\" @click=\"openI20Picker\">{{ i20Uploading ? i20Copy.reading : i20Copy.replace }}<\/button>\n                                        <button type=\"button\" class=\"i20-upload-panel__remove\" @click=\"clearI20Prefill\">{{ i20Copy.remove }}<\/button>\n                                    <\/span>\n                                <\/span>\n                                <span class=\"i20-upload-panel__meta\">{{ i20FileName }}<\/span>\n                            <\/div>\n                            <input ref=\"i20FileInput\" type=\"file\" accept=\"application\/pdf,.pdf\" hidden @change=\"uploadI20ForPrefill\">\n                            <div v-if=\"i20Message && i20MessageType !== 'success'\" class=\"i20-prefill-notice\">\n                                <strong>{{ pageLanguage === 'zh' ? '\u8bc6\u522b\u5931\u8d25\uff0c\u8bf7\u624b\u52a8\u586b\u5199\u4fe1\u606f\u3002' : 'We could not read this I-20. Please enter the information manually.' }}<\/strong>\n                            <\/div>\n                            <div v-if=\"i20UploadToken && i20MessageType === 'success'\" class=\"i20-parse-summary\">\n                                <div>\n                                    <strong>{{ i20Copy.summaryTitle }}<\/strong>\n                                    <span>{{ i20Copy.summaryDescription }}<\/span>\n                                <\/div>\n                                <span class=\"i20-parse-summary__count\">{{ i20PersonalRemainingLabel }}<\/span>\n                            <\/div>\n\n                            <div class=\"field-grid us-v4-personal-grid\">\n                                <div class=\"field\" :class=\"{'is-i20': isI20Prefilled('firstName')}\">\n                                    <label class=\"field-control\" :for=\"inputDataTwo[0].id\"><span class=\"field-label\">{{ inputTitle['First name'] }}<\/span><span v-if=\"isI20Prefilled('firstName')\" class=\"field-badge field-badge--source\">{{ i20Copy.sourceBadge }}<\/span><input :id=\"inputDataTwo[0].id\" :name=\"inputDataTwo[0].id\" type=\"text\" v-model=\"inputDataTwo[0].value\" @change=\"checkWENZI(inputDataTwo[0].id, inputDataTwo[0].value)\"><\/label>\n                                <\/div>\n                                <div class=\"field\" :class=\"{'is-i20': isI20Prefilled('middleName')}\">\n                                    <label class=\"field-control\" :for=\"inputDataTwo[1].id\"><span class=\"field-label\">{{ inputTitle['Middle name'] }}<\/span><span class=\"field-badge\" :class=\"isI20Prefilled('middleName') ? 'field-badge--source' : 'field-badge--optional'\">{{ isI20Prefilled('middleName') ? i20Copy.sourceBadge : i20Copy.optional }}<\/span><input :id=\"inputDataTwo[1].id\" :name=\"inputDataTwo[1].id\" type=\"text\" v-model=\"inputDataTwo[1].value\" @change=\"checkWENZI(inputDataTwo[1].id, inputDataTwo[1].value)\"><\/label>\n                                <\/div>\n                                <div class=\"field\" :class=\"{'is-i20': isI20Prefilled('lastName')}\">\n                                    <label class=\"field-control\" :for=\"inputDataTwo[2].id\"><span class=\"field-label\">{{ inputTitle['Last name'] }}<\/span><span v-if=\"isI20Prefilled('lastName')\" class=\"field-badge field-badge--source\">{{ i20Copy.sourceBadge }}<\/span><input :id=\"inputDataTwo[2].id\" :name=\"inputDataTwo[2].id\" type=\"text\" v-model=\"inputDataTwo[2].value\" @change=\"checkWENZI(inputDataTwo[2].id, inputDataTwo[2].value)\"><\/label>\n                                <\/div>\n                                <div class=\"field\" :class=\"{'is-i20': isI20Prefilled('gender')}\">\n                                    <label class=\"field-control\" :for=\"inputDataTwo[3].id\"><span class=\"field-label\">{{ inputTitle['Gender'] }}<\/span><span v-if=\"isI20Prefilled('gender')\" class=\"field-badge field-badge--source\">{{ i20Copy.sourceBadge }}<\/span><select :id=\"inputDataTwo[3].id\" :name=\"inputDataTwo[3].id\" v-model=\"inputDataTwo[3].value\"><option value=\"\">{{ pageLanguage === 'zh' ? '\u8bf7\u9009\u62e9' : 'Select' }}<\/option><option value=\"M\">{{ pageLanguage === 'zh' ? '\u7537' : 'Male' }}<\/option><option value=\"F\">{{ pageLanguage === 'zh' ? '\u5973' : 'Female' }}<\/option><\/select><\/label>\n                                <\/div>\n                                <div class=\"field date-control\" :class=\"{'is-i20': isI20Prefilled('dateOfBirth')}\">\n                                    <label class=\"field-control\" :for=\"inputDataTwo[4].id\"><span class=\"field-label\">{{ inputTitle['Date of birth'] }}<\/span><span v-if=\"isI20Prefilled('dateOfBirth')\" class=\"field-badge field-badge--source\">{{ i20Copy.sourceBadge }}<\/span><input type=\"text\" v-model=\"inputDataTwo[4].value\" :name=\"inputDataTwo[4].id\" :id=\"inputDataTwo[4].id\" class=\"layui-input\" readonly=\"true\"><span class=\"us-v4-calendar-icon\" aria-hidden=\"true\"><svg viewbox=\"0 0 24 24\"><path d=\"M7 3v3M17 3v3M4.5 9h15M6 5h12a2 2 0 0 1 2 2v11a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V7a2 2 0 0 1 2-2Z\" fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-width=\"1.8\"><\/path><path d=\"M8 13h2M14 13h2M8 17h2M14 17h2\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-width=\"1.8\"><\/path><\/svg><\/span><\/label>\n                                <\/div>\n                                <div class=\"field\" :class=\"{'is-i20': isI20Prefilled('nationality')}\">\n                                    <label class=\"field-control\" :for=\"inputDataTwo[5].id\"><span class=\"field-label\">{{ inputTitle['Nationality'] }}<\/span><span v-if=\"isI20Prefilled('nationality')\" class=\"field-badge field-badge--source\">{{ i20Copy.sourceBadge }}<\/span><select :id=\"inputDataTwo[5].id\" :name=\"inputDataTwo[5].id\" v-model=\"inputDataTwo[5].value\" @change=\"cleanPhone\"><option value=\"\">{{ pageLanguage === 'zh' ? '\u8bf7\u9009\u62e9' : 'Select' }}<\/option><option :value=\"country.code\" v-for=\"country in homeCountryData\" :key=\"country.code\">{{ country.name }}<\/option><\/select><\/label>\n                                <\/div>\n                                <div class=\"field us-v4-email-field\">\n                                    <label class=\"field-control\" :for=\"inputDataTwo[6].id\"><span class=\"field-label\">{{ inputTitle['Email'] }}<\/span><input :id=\"inputDataTwo[6].id\" :name=\"inputDataTwo[6].id\" type=\"email\" v-model=\"inputDataTwo[6].value\" @blur=\"emailExist(inputDataTwo[6].value)\"><\/label>\n                                <\/div>\n                                <div class=\"field us-v4-passport-field\">\n                                    <label class=\"field-control\" :for=\"inputDataTwo[7].id\"><span class=\"field-label\">{{ inputTitle['Passport'] }}<\/span><input :id=\"inputDataTwo[7].id\" :name=\"inputDataTwo[7].id\" type=\"text\" v-model=\"inputDataTwo[7].value\"><\/label>\n                                <\/div>\n                                <div class=\"field us-v4-visa-type-field\" :class=\"{'is-i20': isI20Prefilled('visaType')}\">\n                                    <label class=\"field-control\" for=\"Policyholder_Visa\"><span class=\"field-label\">{{ inputTitle['Visa'] }}<\/span><span v-if=\"isI20Prefilled('visaType')\" class=\"field-badge field-badge--source\">{{ i20Copy.sourceBadge }}<\/span><select v-model=\"visaType\" id=\"Policyholder_Visa\" name=\"Policyholder.Visa\"><option value=\"\">{{ pageLanguage === 'zh' ? '\u8bf7\u9009\u62e9' : 'Select' }}<\/option><option value=\"F1\" v-if=\"visaOptionFlags.opt\">F1-OPT<\/option><template v-else><option value=\"F1\" v-if=\"visaOptionFlags.f1\">F1<\/option><option value=\"M1\" v-if=\"visaOptionFlags.m1\">M1<\/option><option value=\"J1\" v-if=\"visaOptionFlags.j1\">J1<\/option><\/template><\/select><\/label>\n                                <\/div>\n                                <div v-for=\"(item, index) in inputDataSix\" :key=\"item.id\" class=\"field date-control\" :class=\"[index === 0 ? 'us-v4-visa-start-field' : 'us-v4-visa-end-field', {'is-i20': isI20Prefilled(index === 0 ? 'visaStart' : 'visaEnd')}]\">\n                                    <div v-if=\"index === 0\" class=\"visa-date-guide\">\n                                        <button type=\"button\" class=\"visa-date-guide__trigger\" :aria-expanded=\"i20VisaGuideVisible ? 'true' : 'false'\" @click.stop=\"toggleI20VisaGuide\"><span aria-hidden=\"true\">?<\/span><span>{{ i20VisaGuideCopy.trigger }}<\/span><\/button>\n                                        <div v-if=\"i20VisaGuideVisible\" class=\"visa-date-guide__backdrop\" aria-hidden=\"true\" @click.stop=\"closeI20VisaGuide\"><\/div>\n                                        <div v-if=\"i20VisaGuideVisible\" class=\"visa-date-guide__popover\" role=\"dialog\" :aria-label=\"i20VisaGuideCopy.title\" @click.stop>\n                                            <div class=\"visa-date-guide__popover-head\"><p class=\"visa-date-guide__title\">{{ i20VisaGuideCopy.title }}<\/p><button type=\"button\" class=\"visa-date-guide__close\" :aria-label=\"i20VisaGuideCopy.close\" @click.stop=\"closeI20VisaGuide\">&times;<\/button><\/div>\n                                            <p class=\"visa-date-guide__copy\">{{ i20VisaGuideCopy.description }}<\/p>\n                                            <img decoding=\"async\" class=\"visa-date-guide__image\" src=\"\/wp-content\/themes\/astra\/imgs\/i20-program-dates-guide.png\" :alt=\"i20VisaGuideCopy.imageAlt\">\n                                        <\/div>\n                                    <\/div>\n                                    <label class=\"field-control\" :for=\"item.id\"><span class=\"field-label\">{{ inputTitle[item.name] }}<\/span><span v-if=\"isI20Prefilled(index === 0 ? 'visaStart' : 'visaEnd')\" class=\"field-badge field-badge--source\">{{ i20Copy.sourceBadge }}<\/span><input type=\"text\" v-model=\"item.value\" :name=\"item.id\" :id=\"item.id\" class=\"layui-input\"><span class=\"us-v4-calendar-icon\" aria-hidden=\"true\"><svg viewbox=\"0 0 24 24\"><path d=\"M7 3v3M17 3v3M4.5 9h15M6 5h12a2 2 0 0 1 2 2v11a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V7a2 2 0 0 1 2-2Z\" fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-width=\"1.8\"><\/path><path d=\"M8 13h2M14 13h2M8 17h2M14 17h2\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-width=\"1.8\"><\/path><\/svg><\/span><\/label>\n                                <\/div>\n                                <div v-if=\"isFamilyOptionAvailable\" class=\"field field--spouse choice-field us-v4-family-choice\" id=\"SpouseyesOrNo\" role=\"group\">\n                                    <span class=\"choice-field__label\">{{ pageLanguage === 'zh' ? '\u914d\u5076' : 'Spouse' }}<\/span>\n                                    <div class=\"choice-field__options\"><label v-for=\"option in familyYesNoOptions\" :key=\"option.value\"><input type=\"radio\" name=\"spouseOption\" :value=\"option.value\" v-model=\"SpouseyesOrNo\"><span>{{ option.label }}<\/span><\/label><\/div>\n                                <\/div>\n                                <div v-if=\"isFamilyOptionAvailable\" class=\"field field--children\">\n                                    <label class=\"field-control\" for=\"numDependents\"><span class=\"field-label\">{{ pageLanguage === 'zh' ? '\u5b50\u5973\u6570\u91cf' : 'Dependent children' }}<\/span><select id=\"numDependents\" v-model.number=\"numDependents\"><option v-for=\"count in dependentCountOptions\" :key=\"count\" :value=\"count\">{{ count }}<\/option><\/select><\/label>\n                                <\/div>\n                            <\/div>\n\n                            <div v-if=\"isFamilyOptionAvailable\" class=\"family-details\">\n                                <div v-if=\"SpouseyesOrNo === 'Yes'\" class=\"family-form-block family-section\">\n                                    <h3 class=\"family-heading\">{{ pageLanguage === 'zh' ? '\u914d\u5076' : 'Spouse' }}<\/h3>\n                                    <div class=\"family-member-row\">\n                                        <label class=\"field-control\"><span class=\"field-label\">{{ inputTitle['First name'] }}<\/span><input type=\"text\" id=\"SpouseFirstName\" v-model=\"spouseMember.firstName\"><\/label>\n                                        <label class=\"field-control\"><span class=\"field-label\">{{ inputTitle['Middle name'] }}<\/span><input type=\"text\" id=\"SpouseMiddleName\" v-model=\"spouseMember.middleName\"><\/label>\n                                        <label class=\"field-control\"><span class=\"field-label\">{{ inputTitle['Last name'] }}<\/span><input type=\"text\" id=\"SpouseLastName\" v-model=\"spouseMember.lastName\"><\/label>\n                                        <label class=\"field-control date-control\"><span class=\"field-label\">{{ inputTitle['Date of birth'] }}<\/span><input type=\"text\" id=\"SpouseDateofBirth\" v-model=\"spouseMember.dob\" class=\"layui-input\" readonly=\"true\"><span class=\"us-v4-calendar-icon\" aria-hidden=\"true\"><svg viewbox=\"0 0 24 24\"><path d=\"M7 3v3M17 3v3M4.5 9h15M6 5h12a2 2 0 0 1 2 2v11a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V7a2 2 0 0 1 2-2Z\" fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-width=\"1.8\"><\/path><path d=\"M8 13h2M14 13h2M8 17h2M14 17h2\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-width=\"1.8\"><\/path><\/svg><\/span><\/label>\n                                    <\/div>\n                                <\/div>\n                                <div v-if=\"dependentMembers.length\" class=\"family-form-block family-section\">\n                                    <h3 class=\"family-heading\">{{ pageLanguage === 'zh' ? '\u5b50\u5973' : 'Dependent children' }}<\/h3>\n                                    <div v-for=\"(dependent, index) in dependentMembers\" :key=\"dependent.key\" class=\"child-panel\">\n                                        <div class=\"family-child-label child-panel__title\">{{ pageLanguage === 'zh' ? `\u5b50\u5973 ${index + 1}` : `Child ${index + 1}` }}<\/div>\n                                        <div class=\"family-member-row\">\n                                            <label class=\"field-control\"><span class=\"field-label\">{{ inputTitle['First name'] }}<\/span><input type=\"text\" :id=\"`DependentFirstName${index + 1}`\" v-model=\"dependent.firstName\"><\/label>\n                                            <label class=\"field-control\"><span class=\"field-label\">{{ inputTitle['Middle name'] }}<\/span><input type=\"text\" :id=\"`DependentMiddleName${index + 1}`\" v-model=\"dependent.middleName\"><\/label>\n                                            <label class=\"field-control\"><span class=\"field-label\">{{ inputTitle['Last name'] }}<\/span><input type=\"text\" :id=\"`DependentLastName${index + 1}`\" v-model=\"dependent.lastName\"><\/label>\n                                            <label class=\"field-control date-control\"><span class=\"field-label\">{{ inputTitle['Date of birth'] }}<\/span><input type=\"text\" :id=\"`DependentDob${index + 1}`\" v-model=\"dependent.dob\" class=\"layui-input\" readonly=\"true\"><span class=\"us-v4-calendar-icon\" aria-hidden=\"true\"><svg viewbox=\"0 0 24 24\"><path d=\"M7 3v3M17 3v3M4.5 9h15M6 5h12a2 2 0 0 1 2 2v11a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V7a2 2 0 0 1 2-2Z\" fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-width=\"1.8\"><\/path><path d=\"M8 13h2M14 13h2M8 17h2M14 17h2\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-width=\"1.8\"><\/path><\/svg><\/span><\/label>\n                                        <\/div>\n                                    <\/div>\n                                <\/div>\n                            <\/div>\n\n                            <footer class=\"form-card__footer\">\n                                <span>{{ i20PersonalRemainingLabel }}<\/span>\n                                <button type=\"button\" class=\"button us-v4-button\" @click=\"nextForms(progress[1])\">{{ inputTitle['Next'] }}<\/button>\n                            <\/footer>\n                        <\/div>\n                    <\/div>\n                <\/div>\n            <\/section>\n\n            <section class=\"per-msg form-step\" aria-labelledby=\"usV4SchoolTitle\">\n                <header class=\"form-step__header\"><h2 id=\"usV4SchoolTitle\">{{ progress[2] }}<\/h2><\/header>\n                <div class=\"form-card\">\n                    <button type=\"button\" class=\"form-card__edit us-v4-persistent-edit\" :aria-label=\"pageLanguage === 'zh' ? '\u7f16\u8f91\u5b66\u6821\u4fe1\u606f' : 'Edit school information'\" @click.stop=\"toggleDetails(progress[2])\"><svg aria-hidden=\"true\" viewbox=\"0 0 24 24\"><path d=\"M14.5 5.5 18.5 9.5M4 20h4.1L19 9.1a2.8 2.8 0 0 0-4-4L4 16v4Z\" fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"1.8\"><\/path><\/svg><\/button>\n                    <div class=\"msg-content\" @click=\"toggleDetails(progress[2])\">\n                        <div class=\"us-v4-step-summary\">\n                            <div class=\"us-v4-step-summary-copy\"><strong>{{ school || progress[2] }}<\/strong><span>{{ school ? `${graduateDate} \u00b7 ${studentID ? 'ID entered' : 'Student ID required'}` : (pageLanguage === 'zh' ? '\u586b\u5199\u5b66\u6821\u3001\u5b66\u53f7\u548c\u6bd5\u4e1a\u65e5\u671f' : 'School, student ID and graduation date') }}<\/span><\/div>\n                            <span class=\"us-v4-step-chip\" :class=\"getStepStatusClass(progress[2])\">{{ getStepStatusText(progress[2]) }}<\/span>\n                        <\/div>\n                    <\/div>\n                    <div class=\"ggs-collapse-content\" :id=\"progress[2]\">\n                        <div class=\"us-v4-card-status\" :class=\"getStepOpenStatusClass(progress[2])\">{{ getStepOpenStatusText(progress[2]) }}<\/div>\n                        <button type=\"button\" class=\"form-card__edit\" :aria-label=\"pageLanguage === 'zh' ? '\u7f16\u8f91\u5b66\u6821\u4fe1\u606f' : 'Edit school information'\" @click.stop=\"toggleDetails(progress[2])\"><svg aria-hidden=\"true\" viewbox=\"0 0 24 24\"><path d=\"M14.5 5.5 18.5 9.5M4 20h4.1L19 9.1a2.8 2.8 0 0 0-4-4L4 16v4Z\" fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"1.8\"><\/path><\/svg><\/button>\n                        <div class=\"form-card__content\">\n                            <div class=\"field-grid us-v4-school-grid\">\n                                <div class=\"field field--full\" :class=\"{'is-i20': isI20Prefilled('school')}\">\n                                    <label class=\"field-control\" for=\"school\"><span class=\"field-label\">{{ inputTitle['School'] }}<\/span><span v-if=\"isI20Prefilled('school')\" class=\"field-badge field-badge--source\">{{ i20Copy.sourceBadge }}<\/span>\n                                        <select v-if=\"isSchoolSelectionMode\" name=\"school\" id=\"school\" v-model=\"school\"><option value=\"\">{{ pageLanguage === 'zh' ? '\u8bf7\u9009\u62e9\u5b66\u6821' : 'Select your school' }}<\/option><option v-for=\"schoolOption in schoolSelectOptions\" :key=\"schoolOption\" :value=\"schoolOption\">{{ schoolOption }}<\/option><\/select>\n                                        <input v-else name=\"school\" id=\"school\" disabled v-model=\"school\">\n                                    <\/label>\n                                <\/div>\n                                <div class=\"field field--half\"><label class=\"field-control\" for=\"studentID\"><span class=\"field-label\">{{ inputTitle['Student ID'] }}<\/span><input name=\"studentID\" id=\"studentID\" v-model=\"studentID\"><\/label><\/div>\n                                <div class=\"field field--half date-control\" :class=\"{'is-i20': isI20Prefilled('graduationDate')}\"><label class=\"field-control\" for=\"graduateDate\"><span class=\"field-label\">{{ inputTitle['Expected graduation date'] }}<\/span><span v-if=\"isI20Prefilled('graduationDate')\" class=\"field-badge field-badge--source\">{{ i20Copy.sourceBadge }}<\/span><input type=\"text\" v-model=\"graduateDate\" name=\"graduateDate\" id=\"graduateDate\" class=\"layui-input\"><span class=\"us-v4-calendar-icon\" aria-hidden=\"true\"><svg viewbox=\"0 0 24 24\"><path d=\"M7 3v3M17 3v3M4.5 9h15M6 5h12a2 2 0 0 1 2 2v11a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V7a2 2 0 0 1 2-2Z\" fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-width=\"1.8\"><\/path><path d=\"M8 13h2M14 13h2M8 17h2M14 17h2\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-width=\"1.8\"><\/path><\/svg><\/span><\/label><\/div>\n                            <\/div>\n                            <footer class=\"form-card__footer\"><span>{{ pageLanguage === 'zh' ? '\u8bf7\u6838\u5bf9\u5b66\u6821\u4fe1\u606f' : 'Review your school information' }}<\/span><button type=\"button\" class=\"button us-v4-button\" @click=\"nextForms(progress[2])\">{{ inputTitle['Next'] }}<\/button><\/footer>\n                        <\/div>\n                    <\/div>\n                <\/div>\n            <\/section>\n\n            <section class=\"per-msg form-step\" aria-labelledby=\"usV4AddressTitle\">\n                <header class=\"form-step__header\"><h2 id=\"usV4AddressTitle\">{{ progress[3] }}<\/h2><\/header>\n                <div class=\"form-card\">\n                    <button type=\"button\" class=\"form-card__edit us-v4-persistent-edit\" :aria-label=\"pageLanguage === 'zh' ? '\u7f16\u8f91\u5730\u5740' : 'Edit address information'\" @click.stop=\"toggleDetails(progress[3])\"><svg aria-hidden=\"true\" viewbox=\"0 0 24 24\"><path d=\"M14.5 5.5 18.5 9.5M4 20h4.1L19 9.1a2.8 2.8 0 0 0-4-4L4 16v4Z\" fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"1.8\"><\/path><\/svg><\/button>\n                    <div class=\"msg-content\" @click=\"toggleDetails(progress[3])\">\n                        <div class=\"us-v4-step-summary\">\n                            <div class=\"us-v4-step-summary-copy\"><strong>{{ progress[3] }}<\/strong><span>{{ addressStepSummary }}<\/span><\/div>\n                            <span class=\"us-v4-step-chip\" :class=\"getStepStatusClass(progress[3])\">{{ getStepStatusText(progress[3]) }}<\/span>\n                        <\/div>\n                    <\/div>\n                    <div class=\"ggs-collapse-content\" :id=\"progress[3]\">\n                        <div class=\"us-v4-card-status\" :class=\"getStepOpenStatusClass(progress[3])\">{{ getStepOpenStatusText(progress[3]) }}<\/div>\n                        <button type=\"button\" class=\"form-card__edit\" :aria-label=\"pageLanguage === 'zh' ? '\u7f16\u8f91\u5730\u5740' : 'Edit address information'\" @click.stop=\"toggleDetails(progress[3])\"><svg aria-hidden=\"true\" viewbox=\"0 0 24 24\"><path d=\"M14.5 5.5 18.5 9.5M4 20h4.1L19 9.1a2.8 2.8 0 0 0-4-4L4 16v4Z\" fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"1.8\"><\/path><\/svg><\/button>\n                        <div class=\"form-card__content\">\n                            <div class=\"section-intro\"><p>{{ pageLanguage === 'zh' ? '\u586b\u5199\u539f\u5c45\u4f4f\u56fd\u5730\u5740\uff0c\u5e76\u9009\u62e9\u662f\u5426\u5df2\u6709\u7f8e\u56fd\u5c45\u4f4f\u5730\u5740\u3002' : 'Enter your home-country address, then tell us whether you already have a U.S. residential address.' }}<\/p><span>{{ pageLanguage === 'zh' ? '\u7ea6 1 \u5206\u949f' : 'About 1 minute' }}<\/span><\/div>\n                            <div class=\"subsection-heading\"><h3>{{ pageLanguage === 'zh' ? '\u539f\u5c45\u4f4f\u56fd\u5730\u5740' : 'Address in your country of origin' }}<\/h3><span>{{ pageLanguage === 'zh' ? '\u7528\u4e8e\u4fdd\u5355\u8bb0\u5f55' : 'Required for your policy record' }}<\/span><\/div>\n                            <div class=\"field-grid us-v4-address-grid\">\n                                <div class=\"field field--full\"><label class=\"field-control\" for=\"Nationality\"><span class=\"field-label\">{{ inputTitle['Country'] }}<\/span><input type=\"text\" @click=\"changeNation2\" name=\"Nationality\" id=\"Nationality\" v-model=\"HomeCountry\" readonly><\/label><\/div>\n                                <template v-for=\"item in homeData\" :key=\"item.id\">\n                                    <div v-if=\"item.id !== 'Address2'\" class=\"field\" :class=\"{'field--full': item.id === 'Address1'}\">\n                                        <label class=\"field-control\" :for=\"item.id\"><span class=\"field-label\">{{ inputTitle[item.name] }}<\/span><input :type=\"getAddressInputType(item)\" :inputmode=\"getAddressInputMode(item)\" :pattern=\"getAddressInputPattern(item)\" :name=\"item.id\" :id=\"item.id\" v-model=\"item.value\" @input=\"restrictAddressInput(item, $event)\" @compositionend=\"restrictAddressInput(item, $event)\" @change=\"restrictAddressInput(item, $event)\" @blur=\"restrictAddressInput(item, $event)\"><\/label>\n                                    <\/div>\n                                <\/template>\n                                <div class=\"field\">\n                                    <label class=\"field-control\" for=\"HomeState\"><span class=\"field-label\">{{ inputTitle['State1'] }}<\/span>\n                                        <select v-if=\"homeStatesOption.length\" v-model=\"HomeState\" id=\"HomeState\"><option value=\"\">{{ pageLanguage === 'zh' ? '\u8bf7\u9009\u62e9' : 'Select' }}<\/option><option :value=\"item.name\" v-for=\"item in homeStatesOption\" :key=\"item.id || item.state_code || item.code || item.name\">{{ item.name }}<\/option><\/select>\n                                        <input v-else type=\"text\" v-model.trim=\"HomeState\" id=\"HomeState\" autocomplete=\"address-level1\">\n                                    <\/label>\n                                <\/div>\n                                <div class=\"field\" id=\"PhoneinoriginDiv\">\n                                    <label class=\"field-control\" :for=\"inputDataThree[0].id\"><span class=\"field-label\">{{ inputTitle['Phone in origin'] }}<\/span><input @input=\"phoneCountry\" type=\"tel\" :name=\"inputDataThree[0].id\" :id=\"inputDataThree[0].id\" v-model=\"inputDataThree[0].value\" autocomplete=\"tel\"><\/label>\n                                <\/div>\n                            <\/div>\n\n                            <div class=\"section-divider\"><\/div>\n                            <div class=\"subsection-heading\"><h3>{{ pageLanguage === 'zh' ? '\u7f8e\u56fd\u76ee\u7684\u5730\u5730\u5740' : 'U.S. destination address' }}<\/h3><span>{{ pageLanguage === 'zh' ? '\u8bf7\u9009\u62e9\u4e00\u79cd\u65b9\u5f0f' : 'Choose one option' }}<\/span><\/div>\n                            <div class=\"address-mode\" role=\"radiogroup\" :aria-label=\"pageLanguage === 'zh' ? '\u7f8e\u56fd\u5730\u5740\u72b6\u6001' : 'U.S. address status'\">\n                                <label class=\"address-mode__option\" :class=\"{'is-selected': noAddress}\">\n                                    <input type=\"radio\" id=\"noAddress\" name=\"usAddressModeV4\" v-model=\"noAddress\" :value=\"true\" @change=\"noAddressClick\">\n                                    <span class=\"address-mode__copy\"><strong>{{ pageLanguage === 'zh' ? '\u6682\u65f6\u6ca1\u6709\uff0c\u4f7f\u7528\u5b66\u6821\u5730\u5740' : 'Not yet - use my school address' }}<\/strong><small>{{ pageLanguage === 'zh' ? '\u4e4b\u540e\u53ef\u5728\u4e2a\u4eba\u4e2d\u5fc3\u66f4\u65b0\u3002' : 'You can update your residential address later.' }}<\/small><\/span>\n                                <\/label>\n                                <label class=\"address-mode__option\" :class=\"{'is-selected': !noAddress}\">\n                                    <input type=\"radio\" name=\"usAddressModeV4\" v-model=\"noAddress\" :value=\"false\" @change=\"useManualDestinationAddress\">\n                                    <span class=\"address-mode__copy\"><strong>{{ pageLanguage === 'zh' ? '\u5df2\u6709\u7f8e\u56fd\u5730\u5740' : 'Yes - I have a U.S. address' }}<\/strong><small>{{ pageLanguage === 'zh' ? '\u73b0\u5728\u586b\u5199\u5c45\u4f4f\u5730\u5740\u3002' : 'Enter your residential address now.' }}<\/small><\/span>\n                                <\/label>\n                            <\/div>\n\n                            <div v-if=\"noAddress\" class=\"school-address-panel\">\n                                <div class=\"school-address-panel__content\">\n                                    <h4>{{ pageLanguage === 'zh' ? '\u6682\u65f6\u4f7f\u7528\u5b66\u6821\u5730\u5740' : \"We'll use your school address for now\" }}<\/h4>\n                                    <strong>{{ school }}<\/strong>\n                                    <span v-if=\"schoolAddressLoading\">{{ pageLanguage === 'zh' ? '\u6b63\u5728\u83b7\u53d6\u5b66\u6821\u5730\u5740\u2026' : 'Loading the school address\u2026' }}<\/span>\n                                    <template v-else-if=\"schoolAddressVerified\">\n                                        <span>{{ destinationData[0].value }}<\/span>\n                                        <span>{{ destinationData[2].value }}<template v-if=\"dsState\">, {{ dsState }}<\/template> {{ destinationData[3].value }}<\/span>\n                                    <\/template>\n                                <\/div>\n                                <button type=\"button\" class=\"button us-v4-button us-v4-button--secondary\" @click=\"useManualDestinationAddress\">{{ pageLanguage === 'zh' ? '\u4fee\u6539' : 'Change' }}<\/button>\n                            <\/div>\n                            <p v-if=\"schoolAddressError\" class=\"school-address-error\" role=\"alert\">{{ schoolAddressError }}<\/p>\n\n                            <div v-if=\"!noAddress\" class=\"field-grid us-v4-address-grid us-v4-us-address-fields\">\n                                <div class=\"field field--full\"><label class=\"field-control\" for=\"dsNationality\"><span class=\"field-label\">{{ inputTitle['Country'] }}<\/span><input type=\"text\" name=\"dsNationality\" id=\"dsNationality\" value=\"United States\" disabled><\/label><\/div>\n                                <template v-for=\"item in destinationData\" :key=\"item.id\">\n                                    <div v-if=\"item.id !== 'dAddress2'\" class=\"field\" :class=\"{'field--full': item.id === 'dAddress1'}\"><label class=\"field-control\" :for=\"item.id\"><span class=\"field-label\">{{ inputTitle[item.name] }}<\/span><input :type=\"getAddressInputType(item)\" :inputmode=\"getAddressInputMode(item)\" :pattern=\"getAddressInputPattern(item)\" :name=\"item.id\" :id=\"item.id\" v-model=\"item.value\" @input=\"restrictAddressInput(item, $event)\" @compositionend=\"restrictAddressInput(item, $event)\" @change=\"restrictAddressInput(item, $event)\" @blur=\"restrictAddressInput(item, $event)\"><\/label><\/div>\n                                <\/template>\n                                <div class=\"field\"><label class=\"field-control\" for=\"dsState\"><span class=\"field-label\">{{ inputTitle['State1'] }}<\/span><select v-model=\"dsState\" id=\"dsState\" @change=\"usStateChange\"><option value=\"\">{{ pageLanguage === 'zh' ? '\u8bf7\u9009\u62e9' : 'Select' }}<\/option><option :value=\"item.code\" v-for=\"item in dState\" :key=\"item.code\">{{ item.name }}<\/option><\/select><\/label><\/div>\n                            <\/div>\n\n                            <div class=\"field-grid us-v4-phone-grid\">\n                                <div class=\"field field--half\" id=\"PhoneindestinationDiv\">\n                                    <label class=\"field-control\" :for=\"inputDataThree[1].id\"><span class=\"field-label\">{{ inputTitle['Phone in destination'] }}<\/span><input @input=\"phoneCountry\" type=\"tel\" :name=\"inputDataThree[1].id\" :id=\"inputDataThree[1].id\" v-model=\"inputDataThree[1].value\" autocomplete=\"tel\"><\/label>\n                                    <input type=\"checkbox\" name=\"noPhone\" id=\"noPhone\" v-model=\"noPhone\" style=\"position:absolute;opacity:0;width:0;height:0\">\n                                    <label for=\"noPhone\" class=\"checkbox-row\" @click=\"noPhoneClick\"><span class=\"us-v4-checkbox\" :class=\"{'is-checked': noPhone}\" aria-hidden=\"true\"><\/span><span>{{ pageLanguage === 'zh' ? '\u6211\u73b0\u5728\u6ca1\u6709\u7f8e\u56fd\u624b\u673a\u53f7' : \"I don't have a U.S. number now\" }}<\/span><\/label>\n                                <\/div>\n                            <\/div>\n                            <footer class=\"form-card__footer\"><span>{{ pageLanguage === 'zh' ? '\u8bf7\u6838\u5bf9\u5730\u5740\u548c\u8054\u7cfb\u7535\u8bdd' : 'Review your addresses and phone numbers' }}<\/span><button type=\"button\" class=\"button us-v4-button\" @click=\"nextForms(progress[3])\">{{ inputTitle['Next'] }}<\/button><\/footer>\n                        <\/div>\n                    <\/div>\n                <\/div>\n            <\/section>\n\n            <section v-if=\"progress[4]\" class=\"per-msg form-step\" aria-labelledby=\"usV4AccountTitle\">\n                <header class=\"form-step__header\"><h2 id=\"usV4AccountTitle\">{{ progress[4] }}<\/h2><\/header>\n                <div class=\"form-card\">\n                    <button type=\"button\" class=\"form-card__edit us-v4-persistent-edit\" :aria-label=\"pageLanguage === 'zh' ? '\u7f16\u8f91\u8d26\u6237\u4fe1\u606f' : 'Edit account information'\" @click.stop=\"toggleDetails(progress[4])\"><svg aria-hidden=\"true\" viewbox=\"0 0 24 24\"><path d=\"M14.5 5.5 18.5 9.5M4 20h4.1L19 9.1a2.8 2.8 0 0 0-4-4L4 16v4Z\" fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"1.8\"><\/path><\/svg><\/button>\n                    <div class=\"msg-content\" @click=\"toggleDetails(progress[4])\">\n                        <div class=\"us-v4-step-summary\">\n                            <div class=\"us-v4-step-summary-copy\"><strong>{{ progress[4] }}<\/strong><span>{{ password ? inputDataTwo[6].value : (pageLanguage === 'zh' ? '\u8bbe\u7f6e\u767b\u5f55\u5bc6\u7801' : 'Set a password for your account') }}<\/span><\/div>\n                            <span class=\"us-v4-step-chip\" :class=\"getStepStatusClass(progress[4])\">{{ getStepStatusText(progress[4]) }}<\/span>\n                        <\/div>\n                    <\/div>\n                    <div class=\"ggs-collapse-content\" :id=\"progress[4]\">\n                        <div class=\"us-v4-card-status\" :class=\"getStepOpenStatusClass(progress[4])\">{{ getStepOpenStatusText(progress[4]) }}<\/div>\n                        <button type=\"button\" class=\"form-card__edit\" :aria-label=\"pageLanguage === 'zh' ? '\u7f16\u8f91\u8d26\u6237\u4fe1\u606f' : 'Edit account information'\" @click.stop=\"toggleDetails(progress[4])\"><svg aria-hidden=\"true\" viewbox=\"0 0 24 24\"><path d=\"M14.5 5.5 18.5 9.5M4 20h4.1L19 9.1a2.8 2.8 0 0 0-4-4L4 16v4Z\" fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"1.8\"><\/path><\/svg><\/button>\n                        <div class=\"form-card__content\">\n                            <div class=\"field-grid us-v4-account-grid\">\n                                <div class=\"field\"><label class=\"field-control\" for=\"Email-account\"><span class=\"field-label\">{{ inputTitle['Email'] }}<\/span><input type=\"email\" name=\"Email\" id=\"Email-account\" disabled :value=\"inputDataTwo[6].value\"><\/label><\/div>\n                                <div class=\"field\"><label class=\"field-control\" for=\"password\"><span class=\"field-label\">{{ inputTitle['Password'] }}<\/span><input type=\"password\" name=\"password\" id=\"password\" v-model=\"password\" autocomplete=\"new-password\"><\/label><\/div>\n                                <div class=\"field\"><label class=\"field-control\" for=\"confirm_password\"><span class=\"field-label\">{{ inputTitle['Confirm password'] }}<\/span><input type=\"password\" name=\"confirm_password\" id=\"confirm_password\" v-model=\"confirmPassword\" autocomplete=\"new-password\"><\/label><\/div>\n                            <\/div>\n                            <footer class=\"form-card__footer\"><span>{{ pageLanguage === 'zh' ? '\u5bc6\u7801\u81f3\u5c11 8 \u4e2a\u5b57\u7b26' : 'Use at least 8 characters' }}<\/span><button type=\"button\" class=\"button us-v4-button\" @click=\"nextForms(progress[4])\">{{ inputTitle['Next'] }}<\/button><\/footer>\n                        <\/div>\n                    <\/div>\n                <\/div>\n            <\/section>\n\n            <section id=\"payment\" class=\"per-msg form-step\" aria-labelledby=\"usV4PaymentTitle\">\n                <header class=\"form-step__header\"><h2 id=\"usV4PaymentTitle\">{{ progress[5] }}<\/h2><\/header>\n                <div class=\"form-card\">\n                    <button type=\"button\" class=\"form-card__edit us-v4-persistent-edit\" :aria-label=\"pageLanguage === 'zh' ? '\u7f16\u8f91\u652f\u4ed8\u65b9\u5f0f' : 'Edit payment option'\" @click.stop=\"toggleDetails(progress[5])\"><svg aria-hidden=\"true\" viewbox=\"0 0 24 24\"><path d=\"M14.5 5.5 18.5 9.5M4 20h4.1L19 9.1a2.8 2.8 0 0 0-4-4L4 16v4Z\" fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"1.8\"><\/path><\/svg><\/button>\n                    <div class=\"msg-content\" @click=\"toggleDetails(progress[5])\">\n                        <div class=\"us-v4-step-summary\">\n                            <div class=\"us-v4-step-summary-copy\"><strong>{{ pageLanguage === 'zh' ? '\u652f\u4ed8\u548c\u6761\u6b3e' : 'Payment and terms' }}<\/strong><span>{{ selectedPayType ? (selectedPayType === 'wechat' ? inputTitle['WeChat pay'] : 'Card') : (pageLanguage === 'zh' ? '\u9009\u62e9\u652f\u4ed8\u65b9\u5f0f\u5e76\u63a5\u53d7\u6761\u6b3e' : 'Choose a payment method and accept the terms') }}<\/span><\/div>\n                            <span class=\"us-v4-step-chip\" :class=\"getStepStatusClass(progress[5])\">{{ getStepStatusText(progress[5]) }}<\/span>\n                        <\/div>\n                    <\/div>\n                    <div class=\"ggs-collapse-content\" :id=\"progress[5]\">\n                        <div class=\"us-v4-card-status\" :class=\"getStepOpenStatusClass(progress[5])\">{{ getStepOpenStatusText(progress[5]) }}<\/div>\n                        <button type=\"button\" class=\"form-card__edit\" :aria-label=\"pageLanguage === 'zh' ? '\u7f16\u8f91\u652f\u4ed8\u65b9\u5f0f' : 'Edit payment option'\" @click.stop=\"toggleDetails(progress[5])\"><svg aria-hidden=\"true\" viewbox=\"0 0 24 24\"><path d=\"M14.5 5.5 18.5 9.5M4 20h4.1L19 9.1a2.8 2.8 0 0 0-4-4L4 16v4Z\" fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"1.8\"><\/path><\/svg><\/button>\n                        <div class=\"form-card__content\">\n                            <div class=\"payment-options\" :class=\"{'payment-options--single': isSinglePaymentOption}\" role=\"radiogroup\" :aria-label=\"pageLanguage === 'zh' ? '\u652f\u4ed8\u65b9\u5f0f' : 'Payment method'\">\n                                <label v-if=\"showWechatPaymentOption\" class=\"payment-option\" :class=\"{'is-selected': selectedPayType === 'wechat'}\" @click.stop=\"clickPayType('wechat')\">\n                                    <div class=\"payment-option__heading\"><input type=\"radio\" name=\"payType\" value=\"wechat\" v-model=\"selectedPayType\"><strong>{{ inputTitle['WeChat pay'] }}<\/strong><span class=\"payment-option__tag\">{{ inputTitle['Recommended'] }}<\/span><\/div>\n                                    <p>{{ inputTitle['Wechat policy speed'] }}<\/p>\n                                    <div class=\"payment-option__visual payment-option__visual--wechat\"><img decoding=\"async\" src=\"\/wp-content\/static\/img\/pay-wechat.png\" alt=\"WeChat Pay\"><\/div>\n                                <\/label>\n                                <label v-if=\"showCardPaymentOption\" class=\"payment-option\" :class=\"{'is-selected': selectedPayType === 'credit'}\" @click.stop=\"clickPayType('credit')\">\n                                    <div class=\"payment-option__heading\"><input type=\"radio\" name=\"payType\" value=\"credit\" v-model=\"selectedPayType\" id=\"credit\"><strong>{{ pageLanguage === 'zh' ? '\u94f6\u884c\u5361' : 'Card' }}<\/strong><\/div>\n                                    <p>{{ pageLanguage === 'zh' ? '\u652f\u6301\u4e3b\u6d41\u94f6\u884c\u5361\u5b89\u5168\u652f\u4ed8' : 'Visa, Mastercard and other major cards' }}<\/p>\n                                    <div class=\"payment-option__visual payment-option__visual--card\"><img decoding=\"async\" src=\"\/wp-content\/static\/img\/pay-credit.png\" :alt=\"pageLanguage === 'zh' ? '\u94f6\u884c\u5361\u652f\u4ed8' : 'Card payment'\"><\/div>\n                                <\/label>\n                            <\/div>\n                            <h3 class=\"terms-title\">{{ pageLanguage === 'zh' ? '\u63a5\u53d7\u6761\u6b3e' : 'Accept the terms' }}<\/h3>\n                            <label class=\"terms-box\" for=\"terms\"><input type=\"checkbox\" name=\"terms\" id=\"terms\" v-model=\"termsChecked\"><span v-if=\"pageLanguage === 'zh'\">\u52fe\u9009\u5373\u8868\u793a\u60a8\u540c\u610f\u6211\u4eec\u7684 <a href=\"https:\/\/www.goglobalsafe.com\/terms-and-condition\/\" target=\"_blank\" rel=\"noopener\">\u6761\u6b3e\u4e0e\u6761\u4ef6<\/a>\u3002<\/span><span v-else>By checking this box, you agree to our <a href=\"https:\/\/www.goglobalsafe.com\/terms-and-condition\/\" target=\"_blank\" rel=\"noopener\">Terms and Conditions<\/a>.<\/span><\/label>\n                            <div class=\"mobile-confirm\">\n                                <button type=\"button\" class=\"confirm-btn glow-box\" @click.stop=\"checkForms\" :disabled=\"isConfirmChecking || isPaymentProcessing\" :aria-busy=\"isConfirmChecking || isPaymentProcessing ? 'true' : 'false'\" :class=\"{'pulse-animation': isConfirmChecking || isPaymentProcessing}\">{{ isConfirmChecking || isPaymentProcessing ? (pageLanguage === 'zh' ? '\u5904\u7406\u4e2d...' : 'Processing...') : inputTitle['Confirm order'] }}<\/button>\n                            <\/div>\n                        <\/div>\n                    <\/div>\n                <\/div>\n            <\/section>\n        <\/div>\n\n        <aside class=\"right-content us-v4-policy-column\" :aria-label=\"inputTitle['Policy details']\">\n            <div class=\"us-v4-policy-card\">\n                <h2>{{ inputTitle['Policy details'] }}<\/h2>\n                <div class=\"policy-plan\">\n                    <div class=\"policy-plan__name\"><span>{{ product }}<\/span><button v-if=\"showModifyPlanButton\" type=\"button\" class=\"modify-plan-btn\" @click=\"goToSchoolPlanPage\">{{ pageLanguage === 'zh' ? '\u4fee\u6539' : 'Modify' }}<\/button><\/div>\n                    <div class=\"policy-plan__price-label\">{{ inputTitle['Total amount'] }}<\/div>\n                    <div class=\"policy-plan__price\">$ {{ lastPrice }} USD<\/div>\n                <\/div>\n                <dl class=\"policy-details\">\n                    <dt>{{ inputTitle['Start date'] }}<\/dt><dd>{{ inputDataOne[0].value }}<\/dd>\n                    <dt>{{ inputTitle['End date'] }}<\/dt><dd>{{ inputDataOne[1].value }}<\/dd>\n                    <dt>{{ inputTitle['Email'] }}<\/dt><dd>{{ inputDataTwo[6].value }}<\/dd>\n                    <dt>{{ inputTitle['Date of birth'] }}<\/dt><dd>{{ inputDataTwo[4].value }}<\/dd>\n                    <dt>{{ inputTitle['Destination'] }}<\/dt><dd>{{ pageLanguage === 'zh' ? '\u7f8e\u56fd' : 'United States' }}<\/dd>\n                <\/dl>\n                <button type=\"button\" class=\"confirm-btn\" @click.stop=\"checkForms\" :disabled=\"isConfirmChecking || isPaymentProcessing\" :aria-busy=\"isConfirmChecking || isPaymentProcessing ? 'true' : 'false'\" :class=\"{'pulse-animation': isConfirmChecking || isPaymentProcessing}\">{{ isConfirmChecking || isPaymentProcessing ? (pageLanguage === 'zh' ? '\u5904\u7406\u4e2d...' : 'Processing...') : inputTitle['Confirm order'] }}<\/button>\n                <p class=\"us-v4-policy-help\">{{ pageLanguage === 'zh' ? '\u5b8c\u6210\u5fc5\u586b\u4fe1\u606f\u5e76\u540c\u610f\u6761\u6b3e\u540e\u7ee7\u7eed\u3002' : 'Complete the required information and accept the terms to continue.' }}<\/p>\n            <\/div>\n        <\/aside>\n    <\/main>\n<\/div>\n        <!-- Legacy form markup retained for logic-parity comparison; it is never rendered. -->\n        <div class=\"main-content\" v-if=\"false && currentStep===0\" v-cloak>\n            <!--            <h1 style=\"font-family:'PingFang SC-Bold';width:100%;padding:1rem;border-radius:12px 12px 0 0;margin-bottom:0;text-align:center;background-image: url('\/wp-content\/travel\/Vector 62.png');background-repeat:no-repeat;background-position: 20% 50%;background-size:12.5rem\">Students Information<\/h1>-->\n            <!--            \u53f3\u8fb9\u4fe1\u606f\u9875-->\n\n            <!-- <h2 style=\"padding:1rem;margin-bottom:0;text-align:center;\">Get a free quote<\/h2> -->\n            <!-- \u65e5\u671f\u5730\u5740\uff0c\u6570\u636e\u4e00 -->\n            <!--            Insurance Information-->\n            <!--            <form @submit.prevent=\"collectFormData\" margin>-->\n\n            <div class=\"left-content\">\n                <div class=\"per-msg\">\n                    <div class=\"msg-content\" @click=\"toggleDetails(progress[0])\">\n                        <div class=\"open-title\" v-if=\"!inputDataOne[0].value\">{{progress[0]}}<\/div>\n                        <div class=\"result\" v-else>\n                            <div class=\"content-title\">{{progress[0]}}<\/div>\n                            <div class=\"edit-result\">\n                                <img decoding=\"async\" class=\"edit-btn\" src=\"\/wp-content\/static\/img\/edit.png\" @click.stop=\"toggleDetails(progress[0])\"><\/img>\n                                <div style=\"width:50%;\">\n                                    <div class=\"res-title\">{{inputTitle['Start date']}}<\/div>\n                                    <div class=\"res-content\">{{inputDataOne[0].value}}<\/div>\n                                <\/div>\n                                <div style=\"width:50%;\">\n                                    <div class=\"res-title\">{{inputTitle['End date']}}<\/div>\n                                    <div class=\"res-content\">{{inputDataOne[1].value}}<\/div>\n                                <\/div>\n                                <div style=\"width:50%;\">\n                                    <div class=\"res-title\">{{inputTitle['Referral code']}}<\/div>\n                                    <div class=\"res-content\">{{referralCode}}<\/div>\n                                <\/div>\n\n                            <\/div>\n                        <\/div>\n                    <\/div>\n                    <div class=\"ggs-collapse-content\" :id=\"progress[0]\">\n                        <div class=\"content-title\">{{progress[0]}}<\/div>\n                        <div class=\"per-content form-card-panel\" style=\"background:#FFFFFF !important;border:1px solid #1558DA !important;border-radius:20px;padding:20px 33px;position:relative;box-sizing:border-box;\">\n                            <img decoding=\"async\" class=\"edit-btn\" src=\"\/wp-content\/static\/img\/edit.png\"><\/img>\n                            <div class=\"edit-content\">\n                                <!--\u5f00\u59cb\u65e5\u671f-->\n                                <div style=\"width:30%;\" class=\"inputWidth input-insert date-full\">\n                                    <!--                                    :disabled=\"isStratFormSchool\"-->\n                                    <!--                                    ,cursor: isCoverageFromSchool && isNotElite ? 'not-allowed' : 'pointer'-->\n                                    <input\n                                            type=\"text\"\n                                            id=\"startDate\"\n                                            v-model=\"inputDataOne[0].value\"\n                                            :min=\"minStartDate\"\n                                            :disabled=\"isLock\"\n                                            :placeholder=\"inputTitle['Start date']+'*'\"\n                                            @change=\"updateEndDate\"\n                                            style=\"width:100%;height:3rem;margin:.625rem auto;padding:.625rem;border-radius:8px;box-shadow: none !important;cursor: pointer;\"\n                                            class=\"layui-input\"\n                                            :style=\"{ padding: inputDataOne[0].value ? '25px 11px 7px 11px !important' : '.625rem',fontSize:inputDataOne[0].value ? '16px':'13px',backgroundColor: '#F0F7FF',cursor: isLock ? 'not-allowed' : 'pointer'}\"  readonly=\"true\"\n                                    \/>\n                                    <span class=\"input-span\">{{inputTitle['Start date']}}<\/span>\n                                    <!--                                        <input type=\"text\"  v-model=\"item.value\" style=\"width: 100%; height: 3rem; margin: 0.625rem 0; padding: 10px; border-radius: 8px; background: #F0F7FF !important;box-shadow:none;\" class=\"layui-input\" :name=\"item.id\" :id=\"item.id\">-->\n                                    <img decoding=\"async\" src=\"\/wp-content\/static\/img\/date-img.png\" class=\"date-img\" v-if=\"!isLock\">\n                                <\/div>\n                                <!--\u6708\u4efd\u9009\u62e9-->\n                                <div style=\"width:30%;\" class=\"inputWidth input-insert\" v-if=\"!isHidePeriod\">\n                                    <select\n                                            class=\"custom-select\"\n                                            id=\"duration\"\n                                            v-model=\"selectedMonths\"\n                                            :disabled=\"isPeriodSelectDisabled\"\n                                            style=\"width:100%;height:53px;margin:.625rem auto;padding:.625rem;border-radius:8px;background-color: #F0F7FF;\"\n                                            @change=\"updateEndDate\"\n                                            :placeholder=\"inputTitle['Period']+'*'\"\n                                            :style=\"{padding: selectedMonths ? '21px 8px 10px 10px !important' : '.625rem',fontSize:selectedMonths ? '16px':'13px',cursor: isPeriodSelectDisabled ? 'not-allowed' : 'pointer'}\"\n                                    >\n                                        <option v-for=\"m in monthOptions\" :key=\"m\" :value=\"m\">\n                                            <template v-if=\"m === NYU_LLM_PERIOD_VALUE\">\n                                                {{ pageLanguage === 'zh' ? 'NYU LLM \u9879\u76ee' : 'NYU LLM Program' }}\n                                            <\/template>\n                                            <template v-else-if=\"m === 'School Required Coverage Period'\">\n                                                {{ pageLanguage === 'zh' ? '\u5b66\u6821\u8981\u6c42\u7684\u4fdd\u969c\u671f' : 'School Required Coverage' }}\n                                            <\/template>\n                                            <template v-else-if=\"typeof m === 'string'\">\n                                                {{ m }}\n                                            <\/template>\n                                            <template v-else>\n                                                {{ m }} months\n                                            <\/template>\n                                        <\/option>\n                                    <\/select>\n                                    <span class=\"input-span\" style=\"opacity: 1;\">{{inputTitle['Period']}}<\/span>\n                                <\/div>\n                                <!--\u7ed3\u675f\u65e5\u671f-->\n                                <div style=\"width:30%;\" class=\"inputWidth input-insert\">\n                                    <input\n                                            :type=\"allowCoverageEndDateEdit ? 'date' : 'text'\"\n                                            id=\"endDate\"\n                                            v-model=\"inputDataOne[1].value\"\n                                            :min=\"allowCoverageEndDateEdit ? minimumCoverageEndDate : null\"\n                                            :max=\"allowCoverageEndDateEdit ? maximumCoverageEndDate : null\"\n                                            :disabled=\"!allowCoverageEndDateEdit\"\n                                            :placeholder=\"inputTitle['End date']+'*'\"\n                                            style=\"width:100%;height:3rem;margin:.625rem auto;padding:.625rem;border-radius:8px;background-color:#F0F7FF;\"\n                                            :style = \"{padding: inputDataOne[1].value ? '25px 11px 7px 11px !important' : '.625rem',fontSize:inputDataOne[1].value ? '16px':'13px',cursor:allowCoverageEndDateEdit ? 'pointer' : 'not-allowed'}\"\n                                            :readonly=\"!allowCoverageEndDateEdit\"\n                                            @change=\"handleCoverageEndDateChange\"\n                                    \/>\n                                    <span class=\"input-span\">{{inputTitle['End date']}}<\/span>\n                                <\/div>\n                                <!--                            \u63a8\u8350\u7801-->\n                                <div style=\"width:30%;\" class=\"inputWidth input-insert form-floating\">\n                                    <input type=\"string\" v-model=\"referralCode\" :placeholder=\"inputTitle['Referral code']\"\n                                           name=\"referral_code\" id=\"referralCode\" class=\"inputWidth\"\n                                           style=\"width:100%;margin:.625rem 0;padding:.625rem;border-radius:8px;\"\n                                           @blur=\"codeExist(referralCode, 1)\"\n                                           :style = \"{padding: referralCode ? '25px 11px 7px 11px !important' : '.625rem',fontSize:referralCode ? '16px':'13px'}\">\n                                    <span class=\"input-span\">{{inputTitle['Referral code']}}<\/span>\n                                <\/div>\n                                <!--                            \u4e0b\u4e00\u6b650-->\n                                <div style=\"width:62.5%;display: flex;justify-content: end;align-items: flex-end;margin: 0.625rem 0px;cursor:pointer;\" class=\"inputWidth\">\n                                    <div class=\"next-btn\" @click=\"nextForms(progress[0])\">{{inputTitle['Next']}}<\/div>\n                                <\/div>\n                            <\/div>\n                        <\/div>\n\n                    <\/div>\n                <\/div>\n                <!--            Personal information-->\n                <div class=\"per-msg\">\n                    <div class=\"msg-content\" @click=\"toggleDetails(progress[1])\">\n                        <div class=\"open-title\" v-if=\"!inputDataTwo[0].value\">{{progress[1]}}<\/div>\n                        <div class=\"result\" v-else>\n                            <div class=\"content-title\">{{progress[1]}}<\/div>\n                            <div class=\"edit-result\">\n                                <img decoding=\"async\" class=\"edit-btn\" src=\"\/wp-content\/static\/img\/edit.png\" @click.stop=\"toggleDetails(progress[1])\"><\/img>\n                                <div style=\"width:33%;\">\n                                    <div class=\"res-title\">{{inputTitle['First name']}}<\/div>\n                                    <div class=\"res-content\">{{inputDataTwo[0].value}}<\/div>\n                                <\/div>\n                                <div style=\"width:33%;\">\n                                    <div class=\"res-title\">{{inputTitle['Middle name']}}<\/div>\n                                    <div class=\"res-content\">{{!inputDataTwo[1].value ? '' : \"**\"}}<\/div>\n                                <\/div>\n                                <div style=\"width:33%;\">\n                                    <div class=\"res-title\">{{inputTitle['Last name']}}<\/div>\n                                    <div class=\"res-content\">{{inputDataTwo[2].value}}<\/div>\n                                <\/div>\n                                <div style=\"width:33%;\">\n                                    <div class=\"res-title\">{{inputTitle['Gender']}}<\/div>\n                                    <div class=\"res-content\">{{inputDataTwo[3].value}}<\/div>\n                                <\/div>\n                                <div style=\"width:33%;\">\n                                    <div class=\"res-title\">{{inputTitle['Date of birth']}}<\/div>\n                                    <div class=\"res-content\">{{inputDataTwo[4].value}}<\/div>\n                                <\/div>\n                                <div style=\"width:33%;\">\n                                    <div class=\"res-title\">{{inputTitle['Nationality']}}<\/div>\n                                    <div class=\"res-content\">{{inputDataTwo[5].value}}<\/div>\n                                <\/div>\n                                <div style=\"width:50%;\">\n                                    <div class=\"res-title\">{{inputTitle['Email']}}<\/div>\n                                    <div class=\"res-content\">{{inputDataTwo[6].value}}<\/div>\n                                <\/div>\n                                <div style=\"width:50%;\">\n                                    <div class=\"res-title\">{{inputTitle['Passport']}}<\/div>\n                                    <div class=\"res-content\">{{inputDataTwo[7].value}}<\/div>\n                                <\/div>\n                                <div style=\"width:50%;\">\n                                    <div class=\"res-title\">{{inputTitle['Phone in origin']}}<\/div>\n                                    <div class=\"res-content\">{{inputDataThree[0].value}}<\/div>\n                                <\/div>\n                                <div style=\"width:50%;\">\n                                    <div class=\"res-title\">{{inputTitle['Phone in destination']}}<\/div>\n                                    <div class=\"res-content\">{{inputDataThree[1].value}}<\/div>\n                                <\/div>\n                                <span class=\"insurance-msg\">{{inputTitle['is insurer']}}<\/span>\n                                <div style=\"width:50%;\" v-if=\"yesOrNo == 'No'\">\n                                    <div class=\"res-content\">{{yesOrNo == \"No\" ? \"No\" : \"\"}}<\/div>\n                                <\/div>\n                                <div style=\"width:50%;\" v-if=\"InsuranceName\">\n                                    <div class=\"res-title\">{{inputTitle['Insurance name']}}<\/div>\n                                    <div class=\"res-content\">{{!InsuranceName ? \"\" : \"*******\"}}<\/div>\n                                <\/div>\n\n                            <\/div>\n                        <\/div>\n                    <\/div>\n                    <div class=\"ggs-collapse-content\" :id=\"progress[1]\">\n                        <div class=\"i20-prefill-heading\">\n                            <div class=\"content-title\">{{progress[1]}}<\/div>\n                        <\/div>\n                        <button v-if=\"!i20UploadToken\" type=\"button\" class=\"i20-upload-panel\" :disabled=\"i20Uploading\" @click=\"openI20Picker\">\n                            <span class=\"i20-upload-panel__icon\" aria-hidden=\"true\">\n                                <svg viewbox=\"0 0 24 24\" fill=\"none\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n                                    <path d=\"M12 16V4\"><\/path><path d=\"m7 9 5-5 5 5\"><\/path><path d=\"M5 14v4a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2v-4\"><\/path>\n                                <\/svg>\n                            <\/span>\n                            <span class=\"i20-upload-panel__body\">\n                                <span class=\"i20-upload-panel__headline\">\n                                    <span class=\"i20-upload-panel__title\">{{i20Uploading ? i20Copy.reading : i20Copy.uploadTitle}}<\/span>\n                                <\/span>\n                                <span class=\"i20-upload-panel__description\">{{i20Copy.uploadDescription}}<\/span>\n                                <span class=\"i20-upload-panel__description\">{{i20Copy.uploadReview}}<\/span>\n                            <\/span>\n                            <span class=\"i20-upload-panel__meta\">{{i20Copy.uploadMeta}}<\/span>\n                        <\/button>\n                        <div v-else class=\"i20-upload-panel i20-upload-panel--uploaded\">\n                            <span class=\"i20-upload-panel__icon\" aria-hidden=\"true\">\n                                <svg viewbox=\"0 0 24 24\" fill=\"none\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n                                    <path d=\"M7 3h7l4 4v14H7z\"><\/path><path d=\"M14 3v5h5\"><\/path><path d=\"M10 13h5\"><\/path><path d=\"M10 17h5\"><\/path>\n                                <\/svg>\n                            <\/span>\n                            <span class=\"i20-upload-panel__body\">\n                                <span class=\"i20-upload-panel__headline\">\n                                    <span class=\"i20-upload-panel__title\">{{i20Copy.uploadedTitle}}<\/span>\n                                    <span v-if=\"i20FilledCount > 0\" class=\"i20-upload-panel__success\">\n                                        <span class=\"i20-upload-panel__success-mark\" aria-hidden=\"true\">&#10003;<\/span>\n                                        {{i20Copy.filled(i20FilledCount)}}\n                                    <\/span>\n                                <\/span>\n                                <span class=\"i20-upload-panel__description\">{{i20Copy.uploadedDescription}}<\/span>\n                            <\/span>\n                            <span class=\"i20-upload-panel__actions\">\n                                <button type=\"button\" class=\"i20-upload-panel__replace\" :disabled=\"i20Uploading\" @click=\"openI20Picker\">{{i20Uploading ? i20Copy.reading : i20Copy.replace}}<\/button>\n                                <button type=\"button\" class=\"i20-upload-panel__remove\" :aria-label=\"i20Copy.remove\" @click=\"clearI20Prefill\">&times;<\/button>\n                            <\/span>\n                        <\/div>\n                        <input ref=\"i20FileInput\" type=\"file\" accept=\"application\/pdf,.pdf\" hidden @change=\"uploadI20ForPrefill\">\n                        <div v-if=\"i20Message && i20MessageType !== 'success'\" class=\"i20-prefill-notice\" :class=\"`i20-prefill-notice--${i20MessageType}`\">\n                            <strong>{{i20Message}}<\/strong>\n                            <span v-if=\"i20Summary\">{{i20Summary}}<\/span>\n                        <\/div>\n                        <div class=\"per-content form-card-panel\" style=\"background:#FFFFFF !important;border:1px solid #1558DA !important;border-radius:20px;padding:20px 33px;position:relative;box-sizing:border-box;\">\n                            <img decoding=\"async\" class=\"edit-btn\" src=\"\/wp-content\/static\/img\/edit.png\"><\/img>\n                            <div class=\"edit-content\">\n                                <template v-for=\"(item,index) in inputDataTwo\" :key=\"item.id\">\n                                    <div v-if=\"item.name!=='Gender' && item.name!=='Nationality' && item.name!=='Date of birth'\" class=\"input-insert input-mobile inputWidth\" style=\"width:30%;\" :style=\"(item.id==='Email' || item.id==='Passport')?'width:46.5%':''\">\n                                        <!--                                        <label :for=\"item.id\">{{inputTitle[item.name]}}<\/label><span v-if=\"item.required\" style=\"color:red;\">&nbsp;*<\/span><br>-->\n                                        <!--                                        <input :type=\"item.type\" :name=\"item.id\" :disabled=\"item.id === 'Email'\" @change=\"birthChange(item.type)\" class=\"inputWidth\" :id=\"item.id\"-->\n                                        <input :type=\"item.type\" :name=\"item.id\" @mousedown.stop @click.stop @change=\"birthChange(item.type);checkWENZI(item.id, item.value)\" class=\"inputWidth\" :id=\"item.id\"\n                                               :placeholder=\"item.required ? inputTitle[item.name]+'*' : inputTitle[item.name]\" v-model=\"item.value\" :max=\"item.id === 'DateofBirth' ? minDate : ''\" :min=\"item.id === 'DateofBirth' ? maxDate : ''\"  style=\"width:100%;height:3rem;margin:.625rem auto;padding:.625rem;border-radius:8px;background-color: #F0F7FF;\"\n                                               @blur=\"item.name === 'Email' ? emailExist(item.value) : undefined\"\n                                               :style=\"{padding: item.value ? '25px 11px 7px 11px !important' : '.625rem',fontSize:item.value ? '16px':'13px',width:(item.id==='Email' || item.id==='Passport') ?'100%':''}\">\n                                        <span class=\"input-span\">{{inputTitle[item.name]}}<\/span>\n                                    <\/div>\n                                    <div v-if=\"item.name=='Gender'\" class=\"input-insert input-mobile inputWidth\" style=\"width:30%;\">\n                                        <!--                                        <label :for=\"item.id\">{{item.name}}<\/label><span v-if=\"item.required\" style=\"color:red;\">&nbsp;*<\/span><br>-->\n                                        <select v-model=\"item.value\" :name=\"item.id\" :id=\"item.id\" class=\"inputWidth custom-select\" style=\"width:100%;height:3rem;margin:.625rem auto;padding:10px;border-radius:8px;\"\n                                                :style=\"{padding: item.value ? '21px 8px 10px 10px !important' : '.5225rem',fontSize:item.value ? '16px':'13px',color: item.value ? '#1E293B': '#9ca3af'}\">\n                                            <option value=\"\">{{inputTitle[item.name]}}*<\/option>\n                                            <option value=\"M\">Male<\/option>\n                                            <option value=\"F\">Female<\/option>\n                                        <\/select>\n                                        <span class=\"input-span\" :style=\"{opacity: item.value ? '1' : '0'}\">{{inputTitle[item.name]}}<\/span>\n                                    <\/div>\n                                    <div v-if=\"item.name=='Nationality'\" class=\"input-insert inputWidth\" style=\"width:30%;\">\n                                        <!--                                        <label :for=\"item.id\">{{item.name}}<\/label><span v-if=\"item.required\" style=\"color:red;\">&nbsp;*<\/span><br>-->\n                                        <select v-model=\"item.value\" @change=\"cleanPhone\" :name=\"item.id\" :id=\"item.id\" class=\"inputWidth custom-select\" style=\"width:100%;margin:.625rem auto;padding:.625rem;border-radius:8px;\"\n                                                :style=\"{padding: item.value ? '21px 8px 10px 10px !important' : '.525rem',fontSize:item.value ? '16px':'13px',color: item.value ? '#1E293B': '#9ca3af'}\">\n                                            <option value=\"\">{{inputTitle[item.name]}}*<\/option>\n                                            <option :value=\"itemhome.code\" v-for=\"(itemhome,indexhome) in homeCountryData\" :key=\"indexhome\">{{itemhome.name}}<\/option>\n                                        <\/select>\n                                        <span class=\"input-span\" :style=\"{opacity: item.value ? '1' : '0'}\">{{inputTitle[item.name]}}<\/span>\n                                    <\/div>\n                                    <div v-if=\"item.name == 'Date of birth'\" class=\"input-insert inputWidth date-full\" style=\"width:30%;\">\n                                        <!--                                        <label :for=\"item.id\">{{item.name}}<\/label><span v-if=\"item.required\" style=\"color:red;\">&nbsp;*<\/span><br>-->\n                                        <input type=\"text\"  v-model=\"item.value\" :placeholder=\"inputTitle[item.name]+'*'\" style=\"cursor:pointer;width: 100%; height: 3rem; margin: 0.625rem 0; padding: 10px; border-radius: 8px; background: #F0F7FF !important;box-shadow:none;\" class=\"layui-input\" :name=\"item.id\" :id=\"item.id\"\n                                               :style=\"{padding: item.value ? '25px 11px 7px 11px !important' : '.625rem',fontSize:item.value ? '16px':'13px'}\" readonly=\"true\">\n                                        <span class=\"input-span\">{{inputTitle[item.name]}}<\/span>\n                                        <img decoding=\"async\" src=\"\/wp-content\/static\/img\/date-img.png\" class=\"date-img\">\n                                    <\/div>\n                                <\/template>\n                                <!-- \u7535\u8bdd -->\n                                <div style=\"display:flex;width:100%;gap: 23px;flex-wrap:wrap;\">\n                                    <div v-for=\"(item,index) in inputDataThree\" :key=\"item.id\" :id=\"item.id==='Phoneinorigin'?'PhoneinoriginDiv':'PhoneindestinationDiv'\" style=\"width:46.5%;\"  class=\"input-mobile-phone input-insert input-mobile inputWidth phone-mobile\">\n                                        <div style=\"width:100%; display:flex; align-items:center;position: absolute;top: 0;top: -10px;            line-height: 15px;\" v-if=\"item.name == 'Phone in destination'\">\n                                            <!-- \u9690\u85cf\u539f\u751f\u590d\u9009\u6846 -->\n                                            <input\n                                                    type=\"checkbox\"\n                                                    name=\"noPhone\"\n                                                    id=\"noPhone\"\n                                                    v-model=\"noPhone\"\n                                                    style=\"position: absolute; opacity: 0; width: 0; height: 0;\"\n                                            >\n                                            <!-- \u81ea\u5b9a\u4e49\u56fe\u7247\u590d\u9009\u6846 -->\n                                            <label for=\"noPhone\" style=\"cursor: pointer;\" @click=\"noPhoneClick\">\n                                                <img\n\n                                                        :src=\"noPhone ? '\/wp-content\/static\/img\/checked.png' : '\/wp-content\/static\/img\/nocheck.png'\"\n                                                        style=\"width: 18px; height: 18px;\"\n                                                >\n                                            <\/label>\n                                            <span style=\"margin-left: 10px;font-size: 14px;\" class=\"terms-content\">\n                                          I don't have a US number now\n                                        <\/span>\n                                        <\/div>\n                                        <input @input=\"phoneCountry\" :type=\"item.type\" :name=\"item.id\" :id=\"item.id\" :placeholder=\"inputTitle[item.name]+'*'\" v-model=\"item.value\" class=\"inputWidth\" style=\"width:100%;height:3rem;margin:.625rem auto;padding:.625rem;border-radius:8px;\"\n                                               :style=\"{padding: item.value ? '25px 11px 7px 11px !important' : '.625rem'}\">\n                                        <span class=\"input-span\">{{inputTitle[item.name]}}<\/span>\n                                    <\/div>\n                                <\/div>\n                                <!-- \u7b7e\u8bc1 -->\n                                <div style=\"width:100%;display:flex;flex-wrap:wrap;gap: 23px;\" class=\"visa-mobile\">\n                                    <div style=\"width:30%;display:flex;flex-direction:column;\" class=\"inputWidth input-insert\">\n                                        <!--                                        <label name=\"Policyholder_Visa\" id=\"\">Visa<span style=\"color:red;\">&nbsp;*<\/span><\/label>-->\n                                        <select v-model=\"visaType\" id=\"Policyholder_Visa\" name=\"Policyholder.Visa\" class=\"divWidth custom-select\" style=\"width:100%;height:3rem;margin:.625rem 0;padding:10px;border-radius:8px;\"\n                                                :style=\"{padding: visaType ? '21px 8px 10px 10px !important' : '.625rem',fontSize:visaType ? '16px':'13px',color: visaType ? '#1E293B': '#9ca3af'}\">\n                                            <option value=\"\">{{inputTitle['Visa']}}*<\/option>\n                                            <option value=\"F1\" v-if=\"visaOptionFlags.opt\">F1-OPT<\/option>\n                                            <template v-else><option value=\"F1\" v-if=\"visaOptionFlags.f1\">F1<\/option>\n                                            <option value=\"M1\" v-if=\"visaOptionFlags.m1\">M1<\/option>\n                                            <option value=\"J1\" v-if=\"visaOptionFlags.j1\">J1<\/option><\/template>\n                                        <\/select>\n                                        <span class=\"input-span\" :style=\"{opacity: visaType ? '1' : '0'}\">{{inputTitle['Visa']}}<\/span>\n                                    <\/div>\n                                    <div class=\"date-full inputWidth input-insert\" :class=\"{'visa-guide-active': index === 0 && i20VisaGuideVisible}\" v-for=\"(item,index) in inputDataSix\" :key=\"item.id\" style=\"width:30%;\">\n                                        <div v-if=\"index === 0\" class=\"visa-date-guide\" @mouseenter=\"i20VisaGuideHover = true\" @mouseleave=\"i20VisaGuideHover = false\">\n                                            <button type=\"button\" class=\"visa-date-guide__trigger\" :aria-expanded=\"i20VisaGuideVisible ? 'true' : 'false'\" @click.stop=\"toggleI20VisaGuide\">\n                                                <span class=\"visa-date-guide__mark\" aria-hidden=\"true\">?<\/span>\n                                                <span>{{i20VisaGuideCopy.trigger}}<\/span>\n                                            <\/button>\n                                            <div v-if=\"i20VisaGuideVisible\" class=\"visa-date-guide__backdrop\" aria-hidden=\"true\" @click.stop=\"closeI20VisaGuide\"><\/div>\n                                            <div v-if=\"i20VisaGuideVisible\" class=\"visa-date-guide__popover\" role=\"dialog\" :aria-label=\"i20VisaGuideCopy.title\" @click.stop>\n                                                <div class=\"visa-date-guide__popover-head\">\n                                                    <p class=\"visa-date-guide__title\">{{i20VisaGuideCopy.title}}<\/p>\n                                                    <button type=\"button\" class=\"visa-date-guide__close\" :aria-label=\"i20VisaGuideCopy.close\" @click.stop=\"closeI20VisaGuide\">&times;<\/button>\n                                                <\/div>\n                                                <p class=\"visa-date-guide__copy\">{{i20VisaGuideCopy.description}}<\/p>\n                                                <img decoding=\"async\" class=\"visa-date-guide__image\" src=\"\/wp-content\/themes\/astra\/imgs\/i20-program-dates-guide.png\" :alt=\"i20VisaGuideCopy.imageAlt\">\n                                            <\/div>\n                                        <\/div>\n                                        <!--                                        <label :for=\"item.id\">{{item.name}}<\/label><span v-if=\"item.required\" style=\"color:red;\">&nbsp;*<\/span><br>-->\n                                        <input type=\"text\" v-model=\"item.value\" :name=\"item.id\" :placeholder=\"inputTitle[item.name] + '*'\" :id=\"item.id\"  style=\"cursor:pointer;width: 100%; height: 3rem; margin: 0.625rem 0; padding: 10px; border-radius: 8px; background: #F0F7FF !important;box-shadow:none;\" class=\"layui-input\"\n                                               :style=\"{padding: item.value ? '25px 11px 7px 11px !important' : '.625rem',fontSize:item.value ? '16px':'13px'}\">\n                                        <span class=\"input-span\">{{inputTitle[item.name]}}<\/span>\n                                        <img decoding=\"async\" src=\"\/wp-content\/static\/img\/date-img.png\" class=\"date-img\">\n                                    <\/div>\n                                <\/div>\n                                <div v-if=\"isFamilyOptionAvailable\" class=\"family-section\">\n                                    <div class=\"family-selector-row\">\n                                        <div class=\"family-selector-card\" id=\"SpouseyesOrNo\">\n                                            <span class=\"family-field-title\">Spouse<\/span>\n                                            <div class=\"family-radio-group\">\n                                                <label class=\"family-radio-option\" v-for=\"option in familyYesNoOptions\" :key=\"option.value\">\n                                                    <input type=\"radio\" name=\"spouseOption\" :value=\"option.value\" v-model=\"SpouseyesOrNo\">\n                                                    <img\n                                                            class=\"family-radio-icon\"\n                                                            :src=\"SpouseyesOrNo === option.value ? '\/wp-content\/static\/img\/checked.png' : '\/wp-content\/static\/img\/nocheck.png'\"\n                                                            alt=\"\"\n                                                    >\n                                                    <span>{{ option.label }}<\/span>\n                                                <\/label>\n                                            <\/div>\n                                        <\/div>\n                                        <div class=\"family-selector-card\">\n                                            <label class=\"family-field-title\" for=\"numDependents\">Dependent Children<\/label>\n                                            <select id=\"numDependents\" v-model.number=\"numDependents\" class=\"inputWidth custom-select\" style=\"width:100%;height:3rem;margin:.625rem auto;padding:20px 10px 7px;border:0;border-radius:8px;background:#F0F7FF;font-size:16px;color:#1E293B;\">\n                                                <option v-for=\"count in dependentCountOptions\" :key=\"count\" :value=\"count\">{{ count }}<\/option>\n                                            <\/select>\n                                        <\/div>\n                                    <\/div>\n                                    <div v-if=\"isFamilyOptionAvailable && SpouseyesOrNo === 'Yes'\" class=\"family-form-block\">\n                                        <div class=\"family-form-title\">Spouse<\/div>\n                                        <div class=\"family-member-row\">\n                                            <div class=\"input-insert inputWidth\">\n                                                <input type=\"text\" id=\"SpouseFirstName\" v-model=\"spouseMember.firstName\" placeholder=\"First name*\" class=\"inputWidth\" style=\"width:100%;height:3rem;margin:.625rem auto;padding:.625rem;border-radius:8px;background-color:#F0F7FF;\" :style=\"{padding: spouseMember.firstName ? '25px 11px 7px 11px !important' : '.625rem',fontSize:spouseMember.firstName ? '16px':'13px'}\">\n                                                <span class=\"input-span\">First name<\/span>\n                                            <\/div>\n                                            <div class=\"input-insert inputWidth\">\n                                                <input type=\"text\" id=\"SpouseMiddleName\" v-model=\"spouseMember.middleName\" placeholder=\"Middle name\" class=\"inputWidth\" style=\"width:100%;height:3rem;margin:.625rem auto;padding:.625rem;border-radius:8px;background-color:#F0F7FF;\" :style=\"{padding: spouseMember.middleName ? '25px 11px 7px 11px !important' : '.625rem',fontSize:spouseMember.middleName ? '16px':'13px'}\">\n                                                <span class=\"input-span\">Middle name<\/span>\n                                            <\/div>\n                                            <div class=\"input-insert inputWidth\">\n                                                <input type=\"text\" id=\"SpouseLastName\" v-model=\"spouseMember.lastName\" placeholder=\"Last name*\" class=\"inputWidth\" style=\"width:100%;height:3rem;margin:.625rem auto;padding:.625rem;border-radius:8px;background-color:#F0F7FF;\" :style=\"{padding: spouseMember.lastName ? '25px 11px 7px 11px !important' : '.625rem',fontSize:spouseMember.lastName ? '16px':'13px'}\">\n                                                <span class=\"input-span\">Last name<\/span>\n                                            <\/div>\n                                            <div class=\"input-insert inputWidth date-full\">\n                                                <input type=\"text\" id=\"SpouseDateofBirth\" v-model=\"spouseMember.dob\" placeholder=\"DOB*\" class=\"inputWidth layui-input\" style=\"cursor:pointer;width:100%;height:3rem;margin:.625rem auto;padding:.625rem;border-radius:8px;background:#F0F7FF !important;box-shadow:none;\" :style=\"{padding: spouseMember.dob ? '25px 11px 7px 11px !important' : '.625rem',fontSize:spouseMember.dob ? '16px':'13px'}\" readonly=\"true\">\n                                                <span class=\"input-span\">DOB<\/span>\n                                                <img decoding=\"async\" src=\"\/wp-content\/static\/img\/date-img.png\" class=\"date-img\">\n                                            <\/div>\n                                        <\/div>\n                                    <\/div>\n                                    <div v-if=\"isFamilyOptionAvailable && dependentMembers.length\" class=\"family-form-block\">\n                                        <div class=\"family-form-title\">Dependent Children<\/div>\n                                        <template v-for=\"(dependent, index) in dependentMembers\" :key=\"dependent.key\">\n                                            <div class=\"family-child-label\">Child {{ index + 1 }}<\/div>\n                                            <div class=\"family-member-row\">\n                                                <div class=\"input-insert inputWidth\">\n                                                    <input type=\"text\" :id=\"`DependentFirstName${index + 1}`\" v-model=\"dependent.firstName\" placeholder=\"First name*\" class=\"inputWidth\" style=\"width:100%;height:3rem;margin:.625rem auto;padding:.625rem;border-radius:8px;background-color:#F0F7FF;\" :style=\"{padding: dependent.firstName ? '25px 11px 7px 11px !important' : '.625rem',fontSize:dependent.firstName ? '16px':'13px'}\">\n                                                    <span class=\"input-span\">First name<\/span>\n                                                <\/div>\n                                                <div class=\"input-insert inputWidth\">\n                                                    <input type=\"text\" :id=\"`DependentMiddleName${index + 1}`\" v-model=\"dependent.middleName\" placeholder=\"Middle name\" class=\"inputWidth\" style=\"width:100%;height:3rem;margin:.625rem auto;padding:.625rem;border-radius:8px;background-color:#F0F7FF;\" :style=\"{padding: dependent.middleName ? '25px 11px 7px 11px !important' : '.625rem',fontSize:dependent.middleName ? '16px':'13px'}\">\n                                                    <span class=\"input-span\">Middle name<\/span>\n                                                <\/div>\n                                                <div class=\"input-insert inputWidth\">\n                                                    <input type=\"text\" :id=\"`DependentLastName${index + 1}`\" v-model=\"dependent.lastName\" placeholder=\"Last name*\" class=\"inputWidth\" style=\"width:100%;height:3rem;margin:.625rem auto;padding:.625rem;border-radius:8px;background-color:#F0F7FF;\" :style=\"{padding: dependent.lastName ? '25px 11px 7px 11px !important' : '.625rem',fontSize:dependent.lastName ? '16px':'13px'}\">\n                                                    <span class=\"input-span\">Last name<\/span>\n                                                <\/div>\n                                                <div class=\"input-insert inputWidth date-full\">\n                                                    <input type=\"text\" :id=\"`DependentDob${index + 1}`\" v-model=\"dependent.dob\" placeholder=\"DOB*\" class=\"inputWidth layui-input\" style=\"cursor:pointer;width:100%;height:3rem;margin:.625rem auto;padding:.625rem;border-radius:8px;background:#F0F7FF !important;box-shadow:none;\" :style=\"{padding: dependent.dob ? '25px 11px 7px 11px !important' : '.625rem',fontSize:dependent.dob ? '16px':'13px'}\" readonly=\"true\">\n                                                    <span class=\"input-span\">DOB<\/span>\n                                                    <img decoding=\"async\" src=\"\/wp-content\/static\/img\/date-img.png\" class=\"date-img\">\n                                                <\/div>\n                                            <\/div>\n                                        <\/template>\n                                    <\/div>\n                                <\/div>\n                                <!-- \u5355\u9009\u6846 ,\u662f\u5426\u6709\u5176\u4ed6\u4fdd\u9669-->\n                                <div style=\"display:flex;width:100%;flex-wrap:wrap;\">\n                                    <div class=\"insurance-msg\" style=\"display: flex;flex-direction: row;align-items: center;\">\n                                        <div class=\"radiuBox inputWidth\" style=\"display:flex;flex-direction: row;align-items: center; width:100%;flex-wrap: wrap;\">\n                                            <div class=\"required-title\">\n                                                <span style=\"color: red;\">*<\/span>\n                                                <span>{{inputTitle['is insurer']}}<\/span>\n                                            <\/div>\n                                            <template v-for=\"(item,index) in inputDataFour\" :key=\"item.id\">\n                                                <!-- \u9690\u85cf\u539f\u751f\u5355\u9009\u6309\u94ae -->\n                                                <input\n                                                        type=\"radio\"\n                                                        name=\"yesOrNoGroup\"\n                                                        v-model=\"yesOrNo\"\n                                                        :id=\"item.id\"\n                                                        :value=\"item.value\"\n                                                        style=\"position: absolute; opacity: 0; width: 0; height: 0;\"\n                                                >\n                                                <!-- \u81ea\u5b9a\u4e49\u56fe\u7247\/\u6837\u5f0f -->\n                                                <label :for=\"item.id\" style=\"display: flex; align-items: center; cursor: pointer;width:70px;\">\n                                                    <!-- \u52a8\u6001\u5207\u6362\u56fe\u7247 -->\n                                                    <img\n                                                            :src=\"yesOrNo === item.value ? '\/wp-content\/static\/img\/checked.png' : '\/wp-content\/static\/img\/nocheck.png'\"\n                                                            style=\"width: 20px; height: 20px; margin-right: 5px;\"\n                                                    >\n                                                    <span style=\"white-space: nowrap;\">{{ item.name }}<\/span>\n                                                <\/label>\n                                            <\/template>\n                                        <\/div>\n                                    <\/div>\n                                    <div v-if=\"yesOrNo === 'Yes'\" style=\"margin:1rem 0;width:30%;height:auto;\" class=\"divWidth radioTop radioLeft input-insert\">\n                                        <!--                                        <label for=\"InsuranceName\">Insurance Name<\/label><br>-->\n                                        <input\n                                                type=\"text\"\n                                                id=\"InsuranceName\"\n                                                v-model=\"InsuranceName\"\n                                                :placeholder=\"inputTitle['Insurance name']\"\n                                                style=\"width:100%;margin:.625rem auto;padding:.625rem;border-radius:8px;background: #F0F7FF;\"\n                                                class=\"inputWidth\"\n                                                :style=\"{padding: InsuranceName ? '25px 11px 7px 11px !important' : '.625rem',fontSize:InsuranceName ? '16px':'13px'}\">\n                                        <span class=\"input-span\">{{inputTitle['Insurance name']}}<\/span>\n                                    <\/div>\n                                <\/div>\n                                <!--                            \u4e0b\u4e00\u6b65-->\n                                <div style=\"width:95%;display: flex;justify-content: end;align-items: center;cursor:pointer;\" class=\"inputWidth\">\n                                    <div class=\"next-btn\" @click=\"nextForms(progress[1])\">{{inputTitle['Next']}}<\/div>\n                                <\/div>\n                            <\/div>\n                        <\/div>\n                    <\/div>\n                <\/div>\n                <!--            School information-->\n                <div class=\"per-msg\">\n                    <div class=\"msg-content\" @click=\"toggleDetails(progress[2])\">\n                        <div class=\"open-title\" v-if=\"!studentID\">{{progress[2]}}<\/div>\n                        <div class=\"result\" v-else>\n                            <div class=\"content-title\">{{progress[2]}}<\/div>\n                            <div class=\"edit-result\">\n                                <img decoding=\"async\" class=\"edit-btn\" src=\"\/wp-content\/static\/img\/edit.png\" @click.stop=\"toggleDetails(progress[2])\"><\/img>\n                                <div style=\"width:100%;\">\n                                    <div class=\"res-title\">School name<\/div>\n                                    <div class=\"res-content\">{{school}}<\/div>\n                                <\/div>\n                                <div style=\"width:50%;\">\n                                    <div class=\"res-title\">Expected graduation date<\/div>\n                                    <div class=\"res-content\">{{graduateDate}}<\/div>\n                                <\/div>\n                                <div style=\"width:50%;\">\n                                    <div class=\"res-title\">Student ID<\/div>\n                                    <div class=\"res-content\">{{!studentID ? \"\": \"********\"}}<\/div>\n                                <\/div>\n                            <\/div>\n                        <\/div>\n                    <\/div>\n                    <div class=\"ggs-collapse-content\" :id=\"progress[2]\">\n                        <div class=\"content-title\">{{progress[2]}}<\/div>\n                        <div class=\"per-content form-card-panel\" style=\"background:#FFFFFF !important;border:1px solid #1558DA !important;border-radius:20px;padding:20px 33px;position:relative;box-sizing:border-box;\">\n                            <img decoding=\"async\" class=\"edit-btn\" src=\"\/wp-content\/static\/img\/edit.png\"><\/img>\n                            <div class=\"edit-content edit-content-mobile\">\n                                <div style=\"display:flex;width:95.5%;justify-content:space-between;flex-wrap:wrap;\">\n                                    <div style=\"width:100%;\" class=\"inputWidth input-insert\">\n                                        <!--                                        <label for=\"school\">School<\/label><span  style=\"color:red;\">&nbsp;*<\/span><br>-->\n                                        <select v-if=\"isSchoolSelectionMode\" name=\"school\" id=\"school\" v-model=\"school\" class=\"inputWidth custom-select\" style=\"width:100%;height:3rem;margin:.625rem 0;padding:10px;border-radius:8px;\"\n                                                :style=\"{padding: school ? '21px 8px 10px 10px !important' : '.625rem',fontSize:school ? '16px':'13px',color: school ? '#1E293B': '#9ca3af'}\">\n                                            <option value=\"\">{{inputTitle['School']}}*<\/option>\n                                            <option v-for=\"schoolOption in schoolSelectOptions\" :key=\"schoolOption\" :value=\"schoolOption\">{{schoolOption}}<\/option>\n                                        <\/select>\n                                        <input v-else name=\"school\" id=\"school\" :placeholder=\"inputTitle['School']\" disabled v-model=\"school\" class=\"inputWidth\" style=\"width:100%;margin:.625rem auto;padding:.625rem;border-radius:8px;\"\n                                               :style=\"{padding: school ? '25px 11px 7px 11px !important' : '.625rem',fontSize:school ? '16px':'13px'}\">\n                                        <span class=\"input-span\">{{inputTitle['School']}}<\/span>\n                                    <\/div>\n                                    <div style=\"width:48%;\" class=\"inputWidth input-insert\">\n                                        <!--                                        <label for=\"studentID\">Student ID<\/label><span  style=\"color:red;\">&nbsp;*<\/span><br>-->\n                                        <input name=\"studentID\" id=\"studentID\" :placeholder=\"inputTitle['Student ID']\" v-model=\"studentID\" class=\"inputWidth\" style=\"width:100%;margin:.625rem auto;padding:.625rem;border-radius:8px;\"\n                                               :style=\"{padding: studentID ? '25px 11px 7px 11px !important' : '.625rem',fontSize:studentID ? '16px':'13px'}\">\n                                        <span class=\"input-span\">{{inputTitle['Student ID']}}<\/span>\n                                    <\/div>\n                                    <!--\u6bd5\u4e1a\u65e5\u671f-->\n                                    <div style=\"width:48%;\" class=\"date-full inputWidth input-insert\">\n                                        <!--                                        <label for=\"graduateDate\">Expected graduation date<\/label><span style=\"color:red;\">&nbsp;*<\/span><br>-->\n                                        <input type=\"text\"  v-model=\"graduateDate\" :placeholder=\"inputTitle['Expected graduation date']+'*'\"  name=\"graduateDate\" id=\"graduateDate\" style=\"width: 100%;margin: 0.625rem 0; padding: 10px; border-radius: 8px; background: #F0F7FF !important;box-shadow:none;\" class=\"layui-input\"\n                                               :style=\"{padding: graduateDate ? '25px 11px 7px 11px !important' : '.625rem',fontSize:graduateDate ? '16px':'13px'}\">\n                                        <span class=\"input-span\">{{inputTitle['Expected graduation date']}}<\/span>\n                                        <img decoding=\"async\" src=\"\/wp-content\/static\/img\/date-img.png\" class=\"date-img graduate-date\">\n                                    <\/div>\n                                    <!--                            \u4e0b\u4e00\u6b65-->\n                                    <div style=\"width:100%;display: flex;justify-content: end;align-items: center;cursor:pointer;\" class=\"inputWidth\">\n                                        <div class=\"next-btn\" @click=\"nextForms(progress[2])\">{{inputTitle['Next']}}<\/div>\n                                    <\/div>\n                                <\/div>\n                            <\/div>\n                        <\/div>\n                    <\/div>\n                <\/div>\n                <!--            address-->\n                <div class=\"per-msg\">\n                    <div class=\"msg-content\" @click=\"toggleDetails(progress[3])\">\n                        <div class=\"open-title\" v-if=\"!homeData[0].value\">{{progress[3]}}<\/div>\n                        <div class=\"result\" v-else>\n                            <div class=\"content-title\">{{progress[3]}}<\/div>\n                            <div class=\"edit-result\">\n                                <img decoding=\"async\" class=\"edit-btn\" src=\"\/wp-content\/static\/img\/edit.png\" @click.stop=\"toggleDetails(progress[3])\"><\/img>\n                                <span style=\"margin-left:1rem;width: 100%\" class=\"address-font\">Address in your country of origin<\/span>\n                                <div style=\"width:50%;\"  v-for=\"(item,index) in homeData\" :key=\"item.id\">\n                                    <div class=\"res-title\">{{item.id}}<\/div>\n                                    <div class=\"res-content\">{{!item.value ? \"Empty\": \"********\"}}<\/div>\n                                <\/div>\n                                <div style=\"width:50%;\">\n                                    <div class=\"res-title\">Country<\/div>\n                                    <div class=\"res-content\">{{!HomeCountry ? \"Empty\": \"********\"}}<\/div>\n                                <\/div>\n                                <div style=\"width:50%;\">\n                                    <div class=\"res-title\">State<\/div>\n                                    <div class=\"res-content\">{{!HomeState ? \"Empty\": \"********\"}}<\/div>\n                                <\/div>\n                                <span style=\"margin-left:1rem;width: 100%;\" class=\"address-font\">Destination address<span style=\"font-size:1rem;height:1rem;transform:translateY(-10px);\">&nbsp;(If you don't have one, Please enter your school adress)<\/span><\/span>\n                                <div style=\"width:50%;\"  v-for=\"(item,index) in destinationData\" :key=\"item.id\">\n                                    <div class=\"res-title\">{{item.name}}<\/div>\n                                    <div class=\"res-content\">{{!item.value ? \"Empty\": item.value}}<\/div>\n                                <\/div>\n                                <div style=\"width:50%;\">\n                                    <div class=\"res-title\">Country<\/div>\n                                    <div class=\"res-content\">********<\/div>\n                                <\/div>\n                                <div style=\"width:50%;\">\n                                    <div class=\"res-title\">State<\/div>\n                                    <div class=\"res-content\">{{!dsState ? \"Empty\": \"********\"}}<\/div>\n                                <\/div>\n                            <\/div>\n                        <\/div>\n                    <\/div>\n                    <div class=\"ggs-collapse-content\" :id=\"progress[3]\">\n                        <div class=\"content-title\">{{progress[3]}}<\/div>\n                        <div class=\"per-content form-card-panel\" style=\"background:#FFFFFF !important;border:1px solid #1558DA !important;border-radius:20px;padding:20px 33px;position:relative;box-sizing:border-box;\">\n                            <img decoding=\"async\" class=\"edit-btn\" src=\"\/wp-content\/static\/img\/edit.png\"><\/img>\n                            <div class=\"edit-content\" style=\"width:100%;\">\n                                <!-- \u5bb6\u5ead\u5730\u5740 -->\n                                <span class=\"address-font\">Address in your country of origin<\/span>\n                                <div style=\"width:100%;display:flex;flex-wrap:wrap;justify-content:space-between;margin:0 1rem;gap: 23px;\">\n                                    <div v-for=\"(item,index) in homeData\" :key=\"item.id\" class=\"divWidth input-mobile input-insert\" style=\"width:46.5%;\">\n                                        <!--                                        <label :for=\"item.id\">{{item.name}}<\/label><span v-if=\"item.required\" style=\"color:red;\">&nbsp;*<\/span><br>-->\n                                        <!-- :min=\"item.id==='endDate' ? getNextMonthDate : getTodayDate \" -->\n                                        <input :type=\"getAddressInputType(item)\" :inputmode=\"getAddressInputMode(item)\" :pattern=\"getAddressInputPattern(item)\" :name=\"item.id\" :id=\"item.id\" :placeholder=\"item.name == 'Address 2' ? inputTitle[item.name]:inputTitle[item.name]+'*'\" class=\"inputWidth\" v-model=\"item.value\" @input=\"restrictAddressInput(item, $event)\" @compositionend=\"restrictAddressInput(item, $event)\" @change=\"restrictAddressInput(item, $event)\" @blur=\"restrictAddressInput(item, $event)\" style=\"width:100%;margin:.625rem auto;padding:.625rem;border-radius:8px;\"\n                                               :style=\"{padding: item.value ? '25px 11px 7px 11px !important' : '.625rem',fontSize:item.value ? '16px':'13px'}\">\n                                        <span class=\"input-span\">{{inputTitle[item.name]}}<\/span>\n                                    <\/div>\n                                <\/div>\n                                <!-- \u5df2\u9009\u62e9\u7684\u5bb6\u5ead\u56fd\u5bb6 -->\n                                <div style=\"display:flex;flex-wrap:wrap;justify-content: space-between;width:100%;margin:0 1rem;gap: 23px;\">\n                                    <div style=\"width:46.5%;\" class=\"divWidth input-mobile input-insert\">\n                                        <!--                                        <label for=\"Nationality\">Country<\/label><span style=\"color:red;\">&nbsp;*<\/span><br>-->\n                                        <input type=\"string\" @click=\"changeNation2\" name=\"Nationality\" id=\"Nationality\" :placeholder=\"inputTitle['Country']+'*'\" v-model=\"HomeCountry\" readonly class=\"inputWidth\" style=\"width:100%;margin:.625rem auto;padding:.625rem;border-radius:8px;\"\n                                               :style=\"{padding: HomeCountry ? '25px 11px 7px 11px !important' : '.625rem',fontSize:HomeCountry ? '16px':'13px'}\">\n                                        <span class=\"input-span\">{{inputTitle['Country']}}<\/span>\n                                    <\/div>\n                                    <div style=\"width:46.5%;\" class=\"divWidth input-mobile input-insert\">\n                                        <!--                                        <label for=\"HomeState\" id=\"\">State<span style=\"color:red;\">&nbsp;*<\/span><\/label><br>-->\n                                        <select v-if=\"homeStatesOption.length\" v-model=\"HomeState\" id=\"HomeState\" class=\"inputWidth custom-select\" style=\"width:100%;margin:.625rem 0;padding:.625rem;border-radius:8px;\"\n                                                :style=\"{padding: HomeState ? '21px 8px 10px 10px !important' : '.625rem',fontSize:HomeState ? '16px':'13px',color: HomeState ? '#1E293B': '#9ca3af'}\">\n                                            <option value=\"\">{{inputTitle['State1']}}*<\/option>\n                                            <option :value=\"item.name\" v-for=\"item in homeStatesOption\" :key=\"item.id || item.state_code || item.code || item.name\">{{item.name}}<\/option>\n                                        <\/select>\n                                        <input v-else type=\"text\" v-model.trim=\"HomeState\" id=\"HomeState\" class=\"inputWidth\"\n                                               :placeholder=\"inputTitle['State1']+'*'\" autocomplete=\"address-level1\"\n                                               style=\"width:100%;margin:.625rem 0;padding:.625rem;border-radius:8px;\"\n                                               :style=\"{padding: HomeState ? '25px 11px 7px 11px !important' : '.625rem',fontSize:HomeState ? '16px':'13px'}\">\n                                        <span class=\"input-span\" :style=\"{opacity: HomeState ? '1' : '0'}\">{{inputTitle['State1']}}<\/span>\n                                    <\/div>\n                                <\/div>\n\n                                <!-- \u76ee\u7684\u5730\u5730\u5740 -->\n                                <div class=\"address-font\" style=\"display: flex;flex-direction: row;justify-content:center;align-items:center;width: 100%;\">\n                                    <div style=\"width: 200px;\">Destination address<\/div>\n                                    <div style=\"width:100%; display:flex; align-items:center;flex-wrap: wrap;padding-right: 5px;\">\n                                        <!-- \u9690\u85cf\u539f\u751f\u590d\u9009\u6846 -->\n                                        <input\n                                                type=\"checkbox\"\n                                                name=\"noAddress\"\n                                                id=\"noAddress\"\n                                                v-model=\"noAddress\"\n                                                style=\"position: absolute; opacity: 0; width: 0; height: 0;\"\n                                        >\n                                        <!-- \u81ea\u5b9a\u4e49\u56fe\u7247\u590d\u9009\u6846 -->\n                                        <label for=\"noAddress\" style=\"cursor: pointer;\" @click=\"noAddressClick\">\n                                            <img\n\n                                                    :src=\"noAddress ? '\/wp-content\/static\/img\/checked.png' : '\/wp-content\/static\/img\/nocheck.png'\"\n                                                    style=\"width: 18px; height: 18px;\"\n                                            >\n                                        <\/label>\n                                        <span style=\"margin-left: 1px;font-size: 14px;\" class=\"terms-content\">\n                                              I don't have an U.S. address now\n                                            <\/span>\n                                    <\/div>\n                                <\/div>\n\n                                <div style=\"width:100%;display:flex;flex-wrap:wrap;justify-content:space-between;margin:0 1rem;gap: 23px;\">\n                                    <div v-for=\"(item,index) in destinationData\" :key=\"item.id\" class=\"divWidth input-mobile input-insert\" style=\"width:46.5%;\">\n                                        <!--                                        <label :for=\"item.id\">{{item.name}}<\/label><span v-if=\"item.required\" style=\"color:red;\">&nbsp;*<\/span><br>-->\n                                        <!-- :min=\"item.id==='endDate' ? getNextMonthDate : getTodayDate \" -->\n                                        <input :type=\"getAddressInputType(item)\" :inputmode=\"getAddressInputMode(item)\" :pattern=\"getAddressInputPattern(item)\" :name=\"item.id\" :id=\"item.id\" :placeholder=\"item.name == 'Address 2' ? inputTitle[item.name]:inputTitle[item.name]+'*'\" class=\"inputWidth\" v-model=\"item.value\" @input=\"restrictAddressInput(item, $event)\" @compositionend=\"restrictAddressInput(item, $event)\" @change=\"restrictAddressInput(item, $event)\" @blur=\"restrictAddressInput(item, $event)\" style=\"width:100%;margin:.625rem auto;padding:.625rem;border-radius:8px;\"\n                                               :style=\"{padding: item.value ? '25px 11px 7px 11px !important' : '.625rem',fontSize:item.value ? '16px':'13px'}\">\n                                        <span class=\"input-span\">{{inputTitle[item.name]}}<\/span>\n                                    <\/div>\n                                <\/div>\n                                <!-- \u5df2\u9009\u62e9\u7684\u76ee\u7684\u5730\u56fd\u5bb6\uff0c\u5730\u533a -->\n                                <div style=\"display:flex;flex-wrap:wrap;width:100%;justify-content:space-between;margin:0 1rem;gap: 23px;\">\n                                    <div style=\"width:46.5%\" class=\"divWidth input-mobile input-insert\">\n                                        <!--                                        <label for=\"dsNationality\">Country<\/label><span style=\"color:red;\">&nbsp;*<\/span><br>-->\n                                        <input type=\"string\" name=\"dsNationality\" id=\"dsNationality\" value=\"United States\" :placeholder=\"inputTitle['Country']+'*'\" disabled class=\"inputWidth\" style=\"width:100%;margin:.625rem auto;padding:.625rem;border-radius:8px;cursor:not-allowed;\"\n                                               :style=\"{padding: 1 ? '25px 11px 7px 11px !important' : '.625rem',fontSize:1 ? '16px':'13px'}\">\n                                        <span class=\"input-span\">{{inputTitle['Country']}}<\/span>\n                                    <\/div>\n                                    <div style=\"width:46.5%;\" class=\"inputWidth input-mobile input-insert\">\n                                        <!--                                        <label name=\"\" id=\"\">State<span style=\"color:red;\">&nbsp;*<\/span><\/label><br>-->\n                                        <select v-model=\"dsState\" id=\"dsState\" @change=\"usStateChange\" class=\"inputWidth custom-select\" style=\"width:100%;margin:.625rem 0;padding:.625rem;border-radius:8px;\"\n                                                :style=\"{padding: dsState ? '21px 8px 10px 10px !important' : '.625rem',fontSize:dsState ? '16px':'13px',color: dsState ? '#1E293B': '#9ca3af'}\">\n                                            <option value=\"\">{{inputTitle['State1']}}*<\/option>\n                                            <option :value=\"item.code\" v-for=\"(item,index) in dState\" :key=\"index\">{{item.name}}<\/option>\n                                        <\/select>\n                                        <span class=\"input-span\" :style=\"{opacity: dsState ? '1' : '0'}\">{{inputTitle['State1']}}<\/span>\n\n                                    <\/div>\n                                    <!--                                    <div style=\"width:50%\" class=\"divWidth\">-->\n                                    <!--                                        <label for=\"dsState\">State<\/label><span style=\"color:red;\">&nbsp;*<\/span><br>-->\n                                    <!--                                        <input type=\"string\" name=\"dsState\" id=\"dsState\" placeholder=\"\" disabled v-model=\"dsState\" class=\"inputWidth\" style=\"width:80%;height:3rem;margin:.625rem auto;padding:.625rem;border-radius:8px;cursor:not-allowed;\">-->\n                                    <!--                                    <\/div>-->\n                                <\/div>\n                                <!--                            \u4e0b\u4e00\u6b65-->\n                                <div style=\"width:97.5%;display: flex;justify-content: end;align-items: center;cursor:pointer;margin: 0 1rem;\" class=\"inputWidth\">\n                                    <div class=\"next-btn\" @click=\"nextForms(progress[3])\">{{inputTitle['Next']}}<\/div>\n                                <\/div>\n                            <\/div>\n                        <\/div>\n                    <\/div>\n                <\/div>\n                <!--            Create an account-->\n                <div class=\"per-msg\" v-if=\"progress[4]\">\n                    <div class=\"msg-content\" @click=\"toggleDetails(progress[4])\">\n                        <div class=\"open-title\" v-if=\"!password\">{{progress[4]}}<\/div>\n                        <div class=\"result\" v-else>\n                            <div class=\"content-title\">{{progress[4]}}<\/div>\n                            <div class=\"edit-result\">\n                                <img decoding=\"async\" class=\"edit-btn\" src=\"\/wp-content\/static\/img\/edit.png\" @click.stop=\"toggleDetails(progress[4])\"><\/img>\n                                <div style=\"width:50%;\">\n                                    <div class=\"res-title\">Email<\/div>\n                                    <div class=\"res-content\">{{inputDataTwo[6].value}}<\/div>\n                                <\/div>\n                            <\/div>\n                        <\/div>\n                    <\/div>\n                    <div class=\"ggs-collapse-content\" :id=\"progress[4]\">\n                        <div class=\"content-title\">{{progress[4]}}<\/div>\n                        <div class=\"per-content form-card-panel\" style=\"background:#FFFFFF !important;border:1px solid #1558DA !important;border-radius:20px;padding:20px 33px;position:relative;box-sizing:border-box;\">\n                            <img decoding=\"async\" class=\"edit-btn\" src=\"\/wp-content\/static\/img\/edit.png\"><\/img>\n                            <div class=\"edit-content\" style=\"gap: 23px;\">\n                                <div style=\"width:30%;\" class=\"inputWidth input-insert\">\n                                    <!--                                    <label for=\"Email-account\">Email<\/label><span style=\"color:red;\">&nbsp;*<\/span><br>-->\n                                    <input type=\"string\" name=\"Email\" :placeholder=\"inputTitle['Email']+'*'\" class=\"inputWidth\" id=\"Email-account\" disabled=\"true\" :value=\"inputDataTwo[6].value\" style=\"cursor: not-allowed;width:100%;margin:.625rem auto;padding:.625rem;border-radius:8px;\"\n                                           :style=\"{padding: inputDataTwo[6].value ? '25px 11px 7px 11px !important' : '.625rem',fontSize:inputDataTwo[6].value ? '16px':'13px'}\">\n                                    <span class=\"input-span\">{{inputTitle['Email']}}<\/span>\n                                <\/div>\n                                <div style=\"width:30%;\" class=\"inputWidth input-insert layui-form\">\n                                    <!--                                    <label for=\"password\">Password<\/label><span style=\"color:red;\">&nbsp;*<\/span><br>-->\n                                    <input type=\"password\"  name=\"password\" :placeholder=\"inputTitle['Password']+'*'\" lay-affix=\"eye\" placeholder=\"At least 8 characters\" class=\"layui-input inputWidth\" id=\"password\" v-model=\"password\" style=\"width:100%;margin:.625rem auto;padding:.625rem;border-radius:8px;\"\n                                           :style=\"{padding: password ? '25px 11px 7px 11px !important' : '.625rem',fontSize:password ? '16px':'13px'}\">\n                                    <span class=\"input-span\" :style=\"{opacity: password ? '1' : '0'}\">{{inputTitle['Password']}}<\/span>\n                                <\/div>\n                                <div style=\"width:30%;\" class=\"inputWidth input-insert layui-form\">\n                                    <!--                                    <label for=\"confirm_password\">Confirm Password<\/label><span style=\"color:red;\">&nbsp;*<\/span><br>-->\n                                    <input type=\"password\" name=\"confirm_password\" :placeholder=\"inputTitle['Confirm password']+'*'\"lay-affix=\"eye\" placeholder=\"At least 8 characters\" class=\"layui-input inputWidth\" id=\"confirm_password\" v-model=\"confirmPassword\" style=\"width:100%;margin:.625rem auto;padding:.625rem;border-radius:8px;\"\n                                           :style=\"{padding: confirmPassword ? '25px 11px 7px 11px !important' : '.625rem',fontSize:confirmPassword ? '16px':'13px'}\">\n                                    <span class=\"input-span\" :style=\"{opacity: confirmPassword ? '1' : '0'}\">{{inputTitle['Confirm password']}}<\/span>\n                                <\/div>\n                                <!--                            \u4e0b\u4e00\u6b654-->\n                                <div style=\"width:95%;display: flex;justify-content: end;align-items: center;cursor:pointer;\" class=\"inputWidth\">\n                                    <div class=\"next-btn\"  @click=\"nextForms(progress[4])\">{{inputTitle['Next']}}<\/div>\n                                <\/div>\n                            <\/div>\n                        <\/div>\n                    <\/div>\n                <\/div>\n                <!--            Payment Option-->\n                <div class=\"per-msg\">\n                    <div class=\"msg-content\" @click=\"toggleDetails(progress[5])\">\n                        <div class=\"open-title\" v-if=\"!selectedPayType\">{{progress[5]}}<\/div>\n                        <div class=\"result\" v-else>\n                            <div class=\"content-title\">{{progress[5]}}<\/div>\n                            <div class=\"per-content form-card-panel\" style=\"background:#FFFFFF !important;border:1px solid #1558DA !important;border-radius:20px;padding:20px 33px;position:relative;box-sizing:border-box;\">\n                                <img decoding=\"async\" class=\"edit-btn\" src=\"\/wp-content\/static\/img\/edit.png\"><\/img>\n                                <div class=\"edit-content\" style=\"display: flex; flex-direction: row; justify-content: space-between;\">\n                                    <!-- \u5fae\u4fe1\u652f\u4ed8\u9009\u9879 -->\n                                    <div\n                                            v-if=\"showWechatPaymentOption\"\n                                            class=\"mobile-pay\"\n                                            :style=\"isSinglePaymentOption ? 'width: 100%; cursor: pointer;' : 'width: 48%; cursor: pointer;'\"\n                                            @click.stop=\"clickPayType('wechat')\"\n                                            :class=\"{ 'selected-pay': selectedPayType === 'wechat' }\"\n                                    >\n                                        <div class=\"pay-status-content\" style=\"display: flex; align-items: center;\">\n                                            <input\n                                                    type=\"radio\"\n                                                    name=\"payType\"\n                                                    value=\"wechat\"\n                                                    v-model=\"selectedPayType\"\n                                                    style=\"position: absolute; opacity: 0; width: 0; height: 0;\"\n                                            >\n                                            <img\n                                                    :src=\"selectedPayType === 'wechat' ? '\/wp-content\/static\/img\/checked2.png' : '\/wp-content\/static\/img\/nocheck2.png'\"\n                                                    style=\"width: 20px; height: 20px;\"\n                                            >\n                                            <div class=\"pay-option-copy\">\n                                                <div class=\"pay-option-title-row\">\n                                                    <p>{{inputTitle['WeChat pay']}}<\/p>\n                                                    <span class=\"wechat-recommended-tag\"><span class=\"wechat-recommended-star\">\u2b50<\/span><span>{{inputTitle['Recommended']}}<\/span><\/span>\n                                                <\/div>\n                                                <span class=\"pay-option-desc\">{{inputTitle['Wechat policy speed']}}<\/span>\n                                            <\/div>\n                                        <\/div>\n                                        <img decoding=\"async\" width=\"260px\" src=\"\/wp-content\/static\/img\/pay-wechat.png\" alt=\"\">\n                                    <\/div>\n\n                                    <!-- \u4fe1\u7528\u5361\u652f\u4ed8\u9009\u9879 -->\n                                    <div v-if=\"showCardPaymentOption\"\n                                         class=\"mobile-pay\"\n                                         :style=\"isSinglePaymentOption ? 'width: 100%; cursor: pointer;' : 'width: 48%; cursor: pointer;'\"\n                                         @click.stop=\"clickPayType('credit')\"\n                                         :class=\"{ 'selected-pay': selectedPayType === 'credit' }\"\n                                    >\n                                        <div class=\"pay-status-content\" style=\"display: flex; align-items: center;\">\n                                            <!-- \u9690\u85cf\u539f\u751f\u5355\u9009\u6309\u94ae -->\n                                            <input\n                                                    type=\"radio\"\n                                                    name=\"payType\"\n                                                    value=\"credit\"\n                                                    v-model=\"selectedPayType\"\n                                                    id=\"credit\"\n                                                    style=\"position: absolute; opacity: 0; width: 0; height: 0;\"\n                                            >\n                                            <!-- \u81ea\u5b9a\u4e49\u9009\u62e9\u56fe\u6807 -->\n                                            <img\n                                                    :src=\"selectedPayType === 'credit' ? '\/wp-content\/static\/img\/checked2.png' : '\/wp-content\/static\/img\/nocheck2.png'\"\n                                                    style=\"width: 20px; height: 20px;\"\n                                            >\n                                            <div class=\"pay-option-copy\">\n                                                <div class=\"pay-option-title-row\">\n                                                    <p>Card<\/p>\n                                                <\/div>\n                                                <span class=\"pay-option-desc pay-option-desc-placeholder\" aria-hidden=\"true\">&nbsp;<\/span>\n                                            <\/div>\n                                        <\/div>\n                                        <img decoding=\"async\" width=\"260px\" src=\"\/wp-content\/static\/img\/pay-credit.png\" alt=\"\">\n                                    <\/div>\n                                    <!--\u786e\u8ba4\u548c\u652f\u4ed8\u6309\u94ae-->\n                                    <div v-if=\"isMobileDevice\" style=\"width:95.5%;display: flex;flex-direction: row;justify-content: flex-end;\">\n                                        <button type=\"button\" class=\"confirm-btn glow-box\" @click.stop=\"checkForms\" v-if=\"checkFormsCompleted == 1\">{{inputTitle['Confirm order']}}<\/button>\n                                        <button type=\"button\" class=\"buy-btn glow-box\" @click.stop.prevent=\"handleBuy\" v-if=\"checkFormsCompleted == 2\" :disabled=\"isPaymentProcessing\" :aria-busy=\"isPaymentProcessing ? 'true' : 'false'\" :class=\"{ 'pulse-animation': isBuying || isPaymentProcessing }\">{{isYisihuiReviewMode ? 'Submit' : (isPaymentProcessing ? 'Processing...' : inputTitle['Buy'])}}<\/button>\n                                    <\/div>\n                                <\/div>\n                            <\/div>\n                        <\/div>\n                    <\/div>\n                    <div class=\"ggs-collapse-content\" :id=\"progress[5]\">\n                        <div class=\"content-title\">{{progress[5]}}<\/div>\n                        <div class=\"per-content form-card-panel\" style=\"background:#FFFFFF !important;border:1px solid #1558DA !important;border-radius:20px;padding:20px 33px;position:relative;box-sizing:border-box;\">\n                            <img decoding=\"async\" class=\"edit-btn\" src=\"\/wp-content\/static\/img\/edit.png\"><\/img>\n                            <div class=\"edit-content\" style=\"display: flex; flex-direction: row; justify-content: space-between;\">\n                                <!-- \u5fae\u4fe1\u652f\u4ed8\u9009\u9879 -->\n                                <div\n                                        v-if=\"showWechatPaymentOption\"\n                                        class=\"mobile-pay\"\n                                        :style=\"isSinglePaymentOption ? 'width: 100%; cursor: pointer;' : 'width: 48%; cursor: pointer;'\"\n                                        @click.stop=\"clickPayType('wechat')\"\n                                        :class=\"{ 'selected-pay': selectedPayType === 'wechat' }\"\n                                >\n                                    <div class=\"pay-status-content\" style=\"display: flex; align-items: center;\">\n                                        <input\n                                                type=\"radio\"\n                                                name=\"payType\"\n                                                value=\"wechat\"\n                                                v-model=\"selectedPayType\"\n                                                style=\"position: absolute; opacity: 0; width: 0; height: 0;\"\n                                        >\n                                        <img\n                                                :src=\"selectedPayType === 'wechat' ? '\/wp-content\/static\/img\/checked2.png' : '\/wp-content\/static\/img\/nocheck2.png'\"\n                                                style=\"width: 20px; height: 20px;\"\n                                        >\n                                        <div class=\"pay-option-copy\">\n                                            <div class=\"pay-option-title-row\">\n                                                <p>{{inputTitle['WeChat pay']}}<\/p>\n                                                <span class=\"wechat-recommended-tag\"><span class=\"wechat-recommended-star\">\u2b50<\/span><span>{{inputTitle['Recommended']}}<\/span><\/span>\n                                            <\/div>\n                                            <span class=\"pay-option-desc\">{{inputTitle['Wechat policy speed']}}<\/span>\n                                        <\/div>\n                                    <\/div>\n                                    <img decoding=\"async\" width=\"260px\" src=\"\/wp-content\/static\/img\/pay-wechat.png\" alt=\"\">\n                                <\/div>\n\n                                <!-- \u4fe1\u7528\u5361\u652f\u4ed8\u9009\u9879 -->\n                                <div v-if=\"showCardPaymentOption\"\n                                     class=\"mobile-pay\"\n                                     :style=\"isSinglePaymentOption ? 'width: 100%; cursor: pointer;' : 'width: 48%; cursor: pointer;'\"\n                                     @click.stop=\"clickPayType('credit')\"\n                                     :class=\"{ 'selected-pay': selectedPayType === 'credit' }\"\n                                >\n                                    <div class=\"pay-status-content\" style=\"display: flex; align-items: center;\">\n                                        <!-- \u9690\u85cf\u539f\u751f\u5355\u9009\u6309\u94ae -->\n                                        <input\n                                                type=\"radio\"\n                                                name=\"payType\"\n                                                value=\"credit\"\n                                                v-model=\"selectedPayType\"\n                                                id=\"credit\"\n                                                style=\"position: absolute; opacity: 0; width: 0; height: 0;\"\n                                        >\n                                        <!-- \u81ea\u5b9a\u4e49\u9009\u62e9\u56fe\u6807 -->\n                                        <img\n                                                :src=\"selectedPayType === 'credit' ? '\/wp-content\/static\/img\/checked2.png' : '\/wp-content\/static\/img\/nocheck2.png'\"\n                                                style=\"width: 20px; height: 20px;\"\n                                        >\n                                        <div class=\"pay-option-copy\">\n                                            <div class=\"pay-option-title-row\">\n                                                <p>Card<\/p>\n                                            <\/div>\n                                            <span class=\"pay-option-desc pay-option-desc-placeholder\" aria-hidden=\"true\">&nbsp;<\/span>\n                                        <\/div>\n                                    <\/div>\n                                    <img decoding=\"async\" width=\"260px\" src=\"\/wp-content\/static\/img\/pay-credit.png\" alt=\"\">\n                                <\/div>\n                                <!--\u786e\u8ba4\u548c\u652f\u4ed8\u6309\u94ae-->\n                                <div v-if=\"isMobileDevice\" style=\"width:95.5%;display: flex;flex-direction: row;justify-content: flex-end;\">\n                                    <button type=\"button\" class=\"confirm-btn glow-box\" @click.stop=\"checkForms\" v-if=\"checkFormsCompleted == 1\">{{inputTitle['Confirm order']}}<\/button>\n                                    <button type=\"button\" class=\"buy-btn glow-box\" @click.stop.prevent=\"handleBuy\" v-if=\"checkFormsCompleted == 2\" :disabled=\"isPaymentProcessing\" :aria-busy=\"isPaymentProcessing ? 'true' : 'false'\" :class=\"{ 'pulse-animation': isBuying || isPaymentProcessing }\">{{isYisihuiReviewMode ? 'Submit' : (isPaymentProcessing ? 'Processing...' : inputTitle['Buy'])}}<\/button>\n                                <\/div>\n                            <\/div>\n                        <\/div>\n                    <\/div>\n                <\/div>\n                <!--            Accept the Terms-->\n                <div class=\"per-msg\">\n                    <div class=\"msg-content\">\n                        <div class=\"result\">\n                            <div class=\"content-title\">{{progress[6]}}<\/div>\n                            <!--                            <div class=\"edit-result\">-->\n                            <!--                                <div style=\"width:100%;\">-->\n                            <!--                                    <input type=\"checkbox\" name=\"terms\" id=\"terms\" checked>-->\n                            <!--                                    <span style=\"margin-left: 10px;\" class=\"terms-content\">By checking this box, you consent to our secure processing of your personal information.<\/span>-->\n                            <!--                                <\/div>-->\n                            <!--                            <\/div>-->\n                            <div class=\"edit-result\" style=\"min-height:85px;border-radius: 20px;border: 1px solid #1558DA;padding: 20px 33px\">\n                                <div style=\"width:100%; display:flex; align-items:center;\">\n                                    <!-- \u9690\u85cf\u539f\u751f\u590d\u9009\u6846 -->\n                                    <input\n                                            type=\"checkbox\"\n                                            name=\"terms\"\n                                            id=\"terms\"\n                                            v-model=\"termsChecked\"\n                                            style=\"position: absolute; opacity: 0; width: 0; height: 0;\"\n                                    >\n                                    <!-- \u81ea\u5b9a\u4e49\u56fe\u7247\u590d\u9009\u6846 -->\n                                    <label for=\"terms\" style=\"cursor: pointer;\">\n                                        <img\n                                                class=\"trem-img\"\n                                                :src=\"termsChecked ? '\/wp-content\/static\/img\/checked.png' : '\/wp-content\/static\/img\/nocheck.png'\"\n                                                style=\"width: 20px; height: 20px;\"\n                                        >\n                                    <\/label>\n                                    <span style=\"margin-left: 10px;\" class=\"terms-content\">\n                                          By checking this box, You agree to our <a style=\"color: #1558DA;\" href=\"https:\/\/www.goglobalsafe.com\/terms-and-condition\/\" target=\"_blank\">Terms and Conditions<\/a>.\n                                        <\/span>\n                                <\/div>\n                            <\/div>\n                        <\/div>\n                    <\/div>\n                    <!--                        <div class=\"ggs-collapse-content\" :id=\"progress[6]\">-->\n                    <!--                            <div class=\"per-content form-card-panel\" style=\"background:#FFFFFF !important;border:1px solid #1558DA !important;border-radius:20px;padding:20px 33px;position:relative;box-sizing:border-box;\">-->\n                    <!--                            <img decoding=\"async\" class=\"edit-btn\" src=\"\/wp-content\/static\/img\/edit.png\"><\/img>-->\n                    <!--                            <div class=\"edit-content\">-->\n                    <!--                                <div style=\"display: flex;flex-dorection: row;justify-content: center;width:100%;\">-->\n                    <!--                                    <input type=\"checkbox\" name=\"terms\" id=\"terms\" checked>-->\n                    <!--                                    <span style=\"margin-left: 10px;\" class=\"terms-content\">By checking this box, you consent to our secure processing of your personal information.<\/span>-->\n                    <!--                                <\/div>-->\n                    <!--                            <\/div>-->\n                    <!--                        <\/div>-->\n                <\/div>\n            <\/div>\n            <div class=\"right-content\">\n                <p class=\"right-title\">{{inputTitle['Policy details']}}<\/p>\n                <div class=\"right-top\">\n                    <!--                    <p class=\"title\" style=\"margin-top: 14px;\">Product<\/p>-->\n                    <div class=\"product-name-row\">\n                        <p class=\"product-name\">{{product}}<\/p>\n                        <button v-if=\"showModifyPlanButton\" type=\"button\" class=\"modify-plan-btn\" @click=\"goToSchoolPlanPage\">Modify<\/button>\n                    <\/div>\n                    <div class=\"top-line\"><\/div>\n                    <p class=\"title\">{{inputTitle['Total amount']}}<\/p>\n                    <p class=\"last-price\">$ {{lastPrice}} USD<\/p>\n                <\/div>\n                <div class=\"right-bottom\">\n                    <div class=\"per-info\">\n                        <p class=\"info-title\">{{inputTitle['Start date']}}<\/p>\n                        <p class=\"info-value\">{{inputDataOne[0].value}}<\/p>\n                    <\/div>\n                    <div class=\"per-info\">\n                        <p class=\"info-title\">{{inputTitle['End date']}}<\/p>\n                        <p class=\"info-value\">{{inputDataOne[1].value}}<\/p>\n                    <\/div>\n                    <div class=\"per-info\">\n                        <p class=\"info-title\">{{inputTitle['Email']}}<\/p>\n                        <template v-for=\"(item,index) in inputDataTwo\" :key=\"item.id\">\n                            <p class=\"info-value\" v-if=\"item.id == 'Email'\">{{item.value}}<\/p>\n                        <\/template>\n                    <\/div>\n                    <div class=\"per-info\">\n                        <p class=\"info-title\">{{inputTitle['Date of birth']}}<\/p>\n                        <template v-for=\"(item,index) in inputDataTwo\" :key=\"item.id\">\n                            <p class=\"info-value\" v-if=\"item.id == 'DateofBirth'\">{{item.value}}<\/p>\n                        <\/template>\n                    <\/div>\n                    <div class=\"per-info\">\n                        <p class=\"info-title\">{{inputTitle['Destination']}}<\/p>\n                        <p class=\"info-value\">United States<\/p>\n                        <div style=\"display: none;\" class=\"inputWidth\">\n                            <label name=\"\" id=\"\">{{inputTitle['Destination']}} <span style=\"color:red;\">&nbsp;*<\/span><\/label><br>\n                            <input type=\"text\" value=\"United States\" class=\"inputWidth\" disabled style=\"width:85%;height:3rem;margin:.625rem 0;padding:.625rem;border-radius:8px;border:1px solid #757575;cursor:not-allowed;\">\n                        <\/div>\n                    <\/div>\n                    <!--<div class=\"per-info\">-->\n                    <!--    <p class=\"info-title\">{{inputTitle['State']}}<\/p>-->\n                    <!--    <p class=\"info-value\">{{dsState}}<\/p>-->\n                    <!--<\/div>-->\n                <\/div>\n                <!--\u786e\u8ba4\u548c\u652f\u4ed8\u6309\u94ae-->\n                <button type=\"button\" class=\"confirm-btn\" @click.stop=\"checkForms\" v-if=\"checkFormsCompleted == 1\">{{inputTitle['Confirm order']}}<\/button>\n                <button type=\"button\" class=\"buy-btn glow-box\" @click.stop.prevent=\"handleBuy\" v-if=\"checkFormsCompleted == 2\" :disabled=\"isPaymentProcessing\" :aria-busy=\"isPaymentProcessing ? 'true' : 'false'\" :class=\"{ 'pulse-animation': isBuying || isPaymentProcessing }\">{{isYisihuiReviewMode ? 'Submit' : (isPaymentProcessing ? 'Processing...' : inputTitle['Buy'])}}<\/button>\n            <\/div>\n        <\/div>\n        <!--                <div class=\"firstNext\" style=\"margin-right:4rem;display:flex;justify-content:center;\">-->\n        <!--                    <button type=\"submit\" id=\"firstNext\" style=\"width:12.5rem;height:3.125rem;background-color:#1558DA;color:#fff;border-radius:8px;margin-bottom:3.125rem;\">Next<\/button>-->\n        <!--                <\/div>-->\n        <!--            <\/form>-->\n    <\/div>\n    <!-- \u5df2\u786e\u8ba4\u652f\u4ed8\u7684\u7edf\u4e00\u6210\u529f\u9875\u9762 -->\n    <div v-if=\"showUnifiedPaidSuccess\" id=\"usSuccessRoot\">\n        <main class=\"us-success-page\">\n            <section class=\"us-success-hero\">\n                <div class=\"us-success-badge\">{{ successCopy.badge }}<\/div>\n            <\/section>\n\n            <section class=\"us-success-surface\" :aria-label=\"successCopy.pageLabel\">\n                <div class=\"us-success-confirmation\">\n                    <div class=\"us-success-check\" aria-hidden=\"true\">\n                        <svg width=\"34\" height=\"34\" viewbox=\"0 0 24 24\" fill=\"none\">\n                            <path d=\"M5 12.5 9.4 17 19 7.5\" stroke=\"currentColor\" stroke-width=\"2.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/>\n                        <\/svg>\n                    <\/div>\n                    <div class=\"us-success-status-copy\">\n                        <h2><span v-if=\"successApplicantName\">{{ successApplicantName }}, <\/span>{{ successCopy.confirmationTitle }}<\/h2>\n                        <p>{{ successCopy.confirmationDescription }}<\/p>\n                    <\/div>\n                <\/div>\n\n                <section v-if=\"eipSuccessUpsellEnabled\" class=\"us-eip-upsell\" aria-label=\"EIP tuition insurance\">\n                    <div class=\"us-eip-upsell__copy\">\n                        <span>{{ successCopy.eipKicker }}<\/span>\n                        <h2>{{ successCopy.eipTitle }}<\/h2>\n                        <p>{{ successCopy.eipDescription }}<\/p>\n                    <\/div>\n                    <div class=\"us-eip-upsell__action\">\n                        <button type=\"button\" :disabled=\"eipHandoffLoading\" @click=\"openEipEnrollment\">\n                            {{ eipHandoffLoading ? successCopy.eipPreparing : successCopy.eipAction }}\n                        <\/button>\n                        <small>{{ successCopy.eipHint }}<\/small>\n                    <\/div>\n                <\/section>\n\n                <div class=\"us-success-grid\" :class=\"{ 'us-success-grid--single': !successCommunity }\">\n                    <section class=\"us-success-card\">\n                        <div class=\"us-success-kicker\">{{ successCopy.referralKicker }}<\/div>\n                        <h3>{{ successCopy.referralTitle }}<\/h3>\n                        <p class=\"us-success-card-desc\">{{ successCopy.referralDescription }}<\/p>\n\n                        <div class=\"us-referral-box\">\n                            <div class=\"us-referral-meta\">\n                                <span class=\"us-referral-label\">{{ successCopy.referralLabel }}<\/span>\n                                <strong class=\"us-referral-code\">{{ successReferralCodeDisplay }}<\/strong>\n                            <\/div>\n                            <button type=\"button\" class=\"us-copy-btn\" :disabled=\"!successReferralCode\" @click=\"copySuccessReferralCode\">\n                                {{ successCopy.copy }}\n                            <\/button>\n                        <\/div>\n\n                        <p class=\"us-share-label\">{{ successCopy.shareLabel }}<\/p>\n                        <div class=\"us-share-actions\">\n                            <button type=\"button\" class=\"us-share-btn us-share-btn--xhs\" :disabled=\"!successReferralCode\" @click=\"shareSuccessReferral('xiaohongshu')\">{{ successCopy.xiaohongshu }} \u2197<\/button>\n                            <button type=\"button\" class=\"us-share-btn us-share-btn--instagram\" :disabled=\"!successReferralCode\" @click=\"shareSuccessReferral('instagram')\">Instagram \u2197<\/button>\n                            <button type=\"button\" class=\"us-share-btn us-share-btn--reddit\" :disabled=\"!successReferralCode\" @click=\"shareSuccessReferral('reddit')\">Reddit \u2197<\/button>\n                        <\/div>\n                    <\/section>\n\n                    <section v-if=\"successCommunity\" class=\"us-success-card\">\n                        <div class=\"us-success-kicker\">{{ successCopy.communityKicker }}<\/div>\n                        <h3>{{ successCopy.communityHeading }}<\/h3>\n                        <p class=\"us-success-card-desc\">{{ successCopy.communityDescription }}<\/p>\n\n                        <div class=\"us-community-body\">\n                            <a class=\"us-community-qr\" :href=\"successCommunity.qr_code_url\" target=\"_blank\" rel=\"noopener noreferrer\">\n                                <img :src=\"successCommunity.qr_code_url\" :alt=\"successCopy.communityQrAlt\">\n                            <\/a>\n                            <div class=\"us-community-info\">\n                                <p class=\"us-community-title\">{{ successCommunity.title || successCopy.communityFallbackTitle }}<\/p>\n                                <p class=\"us-community-note\">{{ successCommunity.second_title || successCopy.communityFallbackNote }}<\/p>\n                            <\/div>\n                        <\/div>\n                    <\/section>\n                <\/div>\n\n                <div class=\"us-success-actions\">\n                    <a class=\"us-success-action us-success-action--primary\" href=\"\/student-users\/\">{{ successCopy.accountAction }}<\/a>\n                    <a class=\"us-success-action us-success-action--secondary\" :href=\"successSecondaryHref\" :target=\"successIsEasyTransfer ? '_self' : '_blank'\">{{ successCopy.secondaryAction }}<\/a>\n                <\/div>\n            <\/section>\n        <\/main>\n        <div v-if=\"successToast\" class=\"us-success-toast\" role=\"status\" aria-live=\"polite\">{{ successToast }}<\/div>\n    <\/div>\n\n    <!-- \u4ec5\u63d0\u4ea4\u5ba1\u6838\u3001\u5c1a\u672a\u4ed8\u6b3e -->\n    <div v-else-if=\"pageMode === 'card-success' && isYisihuiReviewMode\" id=\"cardSuccessRoot\" class=\"card-success-page\">\n        <div class=\"card-success-shell\">\n            <section class=\"card-success-hero\">\n                <div class=\"card-success-eyebrow\">{{ isYisihuiReviewMode ? '\u63d0\u4ea4\u6210\u529f' : 'Credit Card Payment Successful' }}<\/div>\n                <h1 class=\"card-success-title\">{{ isYisihuiReviewMode ? '\u4f60\u5df2\u63d0\u4ea4\u6210\u529f\uff0c\u8054\u7cfb GGS \u5ba2\u670d\u8fdb\u884c\u5ba1\u6838' : 'Your enrollment is complete' }}<\/h1>\n            <\/section>\n\n            <section class=\"card-success-surface\" aria-label=\"Credit card payment success page\">\n                <div class=\"card-success-notice\" v-if=\"!isYisihuiReviewMode\">\n                    <div class=\"card-success-notice-icon\" aria-hidden=\"true\">\n                        <svg width=\"28\" height=\"28\" viewbox=\"0 0 24 24\" fill=\"none\">\n                            <path d=\"M12 3 19 6v5c0 4.5-2.7 7.8-7 10-4.3-2.2-7-5.5-7-10V6l7-3Z\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linejoin=\"round\"\/>\n                            <path d=\"m8.5 12 2.2 2.2L15.8 9\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/>\n                        <\/svg>\n                    <\/div>\n                    <div class=\"card-success-notice-text\">Payment is complete. You can view your policy documents in your account.<\/div>\n                <\/div>\n\n                <div class=\"card-success-panel\">\n                    <div class=\"card-success-mark\" aria-hidden=\"true\">\n                        <svg width=\"34\" height=\"34\" viewbox=\"0 0 24 24\" fill=\"none\">\n                            <path d=\"M5 12.5 9.4 17 19 7.5\" stroke=\"currentColor\" stroke-width=\"2.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/>\n                        <\/svg>\n                    <\/div>\n\n                    <template v-if=\"isYisihuiReviewMode\">\n                        <p>\u63d0\u4ea4\u5df2\u8fdb\u5165\u5ba1\u6838\u961f\u5217\uff0c\u8bf7\u8054\u7cfb GGS \u5ba2\u670d\u8fdb\u884c\u5ba1\u6838\u3002<\/p>\n                    <\/template>\n                    <template v-else>\n                        <h2>Policy documents are available in your account<\/h2>\n                        <p>Your credit card payment has been completed. No additional proof of payment is required for this order. Please go to your account to view the order status, waiver process, and policy documents.<\/p>\n\n                        <div class=\"card-success-tag-row\" aria-label=\"Completion status\">\n                            <span class=\"card-success-tag\">Order is being processed<\/span>\n                            <span class=\"card-success-tag\">View policy in account<\/span>\n                        <\/div>\n\n                        <div class=\"card-success-note\">\n                            <strong>Note:<\/strong>If your policy documents are still being generated or reviewed, please check your account again later for updates. For urgent requests, contact GGS support for assistance.\n                        <\/div>\n                    <\/template>\n                <\/div>\n\n                <div class=\"card-success-actions\">\n                    <a class=\"card-success-btn card-success-btn--primary\" href=\"\/student-users\/\">\n                        <span class=\"card-success-icon-round\" aria-hidden=\"true\">\n                            <svg width=\"18\" height=\"18\" viewbox=\"0 0 24 24\" fill=\"none\">\n                                <path d=\"M5 12.5 9.4 17 19 7.5\" stroke=\"currentColor\" stroke-width=\"2.6\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/>\n                            <\/svg>\n                        <\/span>\n                        Go to My Account\n                    <\/a>\n                    <a class=\"card-success-btn card-success-btn--secondary\" href=\"https:\/\/work.weixin.qq.com\/kfid\/kfc00c5a038170f3f46\" target=\"_blank\" rel=\"noopener noreferrer\">\n                        <span class=\"card-success-icon-round\" aria-hidden=\"true\">\n                            <svg width=\"18\" height=\"18\" viewbox=\"0 0 24 24\" fill=\"none\">\n                                <path d=\"M4 13a8 8 0 0 1 16 0v4a2 2 0 0 1-2 2h-2v-6h4M4 13h4v6H6a2 2 0 0 1-2-2v-4Z\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/>\n                                <path d=\"M13 21h-2\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\"\/>\n                            <\/svg>\n                        <\/span>\n                        Contact Support\n                    <\/a>\n                <\/div>\n            <\/section>\n        <\/div>\n    <\/div>\n    <!-- \u5fae\u4fe1\u652f\u4ed8\u6210\u529f\u9875\u9762 -->\n    <div v-else-if=\"currentStep === 3 && !isYisihuiReviewMode && !wechatUploadSuccess\" class=\"yisihui-success-page\">\n        <main class=\"page\">\n            <section class=\"page-view active\" id=\"uploadPage\" v-if=\"!wechatUploadSuccess\">\n                <section class=\"hero\">\n                    <div class=\"eyebrow\">\u6700\u540e\u4e00\u6b65<\/div>\n                    <h1 class=\"hero-title\">\u652f\u4ed8\u6210\u529f\uff01\u6b63\u5728\u4e3a\u60a8\u751f\u6210\u4fdd\u5355\u3002<\/h1>\n                <\/section>\n\n                <section class=\"surface\" aria-label=\"\u8865\u5145\u51fa\u4fdd\u6240\u9700\u6750\u6599\u9875\u9762\">\n                    <div class=\"content-card\">\n                        <h2 class=\"section-title\">\u6839\u636e\u4eba\u6c11\u5e01\u5408\u89c4\u8981\u6c42<\/h2>\n                        <p class=\"section-desc\">\u8bf7\u4e0a\u4f20 I-20\u3002<\/p>\n\n                        <div class=\"tag-row\" aria-label=\"\u8bf4\u660e\u6807\u7b7e\">\n                            <span class=\"tag\">\u4e0a\u4f20\u540e\u7cfb\u7edf\u5c06\u81ea\u52a8\u6fc0\u6d3b\u4fdd\u5355<\/span>\n                        <\/div>\n\n                        <input ref=\"wechatAttachmentInput\" type=\"file\" accept=\".jpg,.jpeg,.png,.pdf\" multiple class=\"hidden-input\" @change=\"onWechatAttachmentChange\">\n\n                        <div class=\"upload-box\" id=\"uploadBox\" :class=\"{ 'drag-over': wechatAttachmentDragOver }\" role=\"button\" tabindex=\"0\" aria-label=\"\u9009\u62e9\u8bc1\u660e\u6587\u4ef6\" @click=\"openWechatAttachmentPicker\" @keydown.enter.prevent=\"openWechatAttachmentPicker\" @keydown.space.prevent=\"openWechatAttachmentPicker\" @dragover=\"onWechatAttachmentDragOver\" @dragleave=\"onWechatAttachmentDragLeave\" @drop=\"onWechatAttachmentDrop\">\n                            <div class=\"upload-main\">\n                                <svg viewbox=\"0 0 24 24\" fill=\"none\" aria-hidden=\"true\">\n                                    <path d=\"M12 16V7m0 0 4 4m-4-4-4 4\" stroke=\"currentColor\" stroke-width=\"2.2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/>\n                                    <path d=\"M20 16.5a4 4 0 0 0-3.9-4A6 6 0 0 0 4.5 14 3.5 3.5 0 0 0 5 21h13a3 3 0 0 0 2-5.2\" stroke=\"currentColor\" stroke-width=\"2.2\" stroke-linecap=\"round\"\/>\n                                <\/svg>\n                                <div>\n                                    <div class=\"upload-title\">\u652f\u6301\u70b9\u51fb\/\u62d6\u62fd\u4e0a\u4f20\u6587\u4ef6<\/div>\n                                    <div class=\"upload-hint-tag\">JPG \/ PNG \/ PDF \u00b7 \u6700\u591a 4 \u4e2a\u6587\u4ef6 \u00b7 \u5355\u4e2a 10MB<\/div>\n                                <\/div>\n                            <\/div>\n\n                            <div class=\"file-list\" id=\"fileList\">\n                                <div v-if=\"!wechatAttachmentFiles.length\" class=\"empty-file-state\">\u9009\u62e9\u6587\u4ef6\u540e\uff0c\u4f1a\u5728\u8fd9\u91cc\u663e\u793a\u5df2\u4e0a\u4f20\u7684\u6587\u4ef6\u3002<\/div>\n                                <div v-for=\"(file, index) in wechatAttachmentFiles\" :key=\"`${file.name}-${index}`\" class=\"file-item\">\n                                    <div class=\"file-meta\">\n                                        <svg viewbox=\"0 0 24 24\" fill=\"none\" aria-hidden=\"true\">\n                                            <rect x=\"5\" y=\"3\" width=\"14\" height=\"18\" rx=\"2\" stroke=\"currentColor\" stroke-width=\"2\"\/>\n                                            <path d=\"M9 8h6M9 12h6M9 16h4\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\"\/>\n                                        <\/svg>\n                                        <span class=\"file-name\" :title=\"file.name\">{{ file.name }}<\/span>\n                                    <\/div>\n                                    <button class=\"remove-file-btn\" type=\"button\" :aria-label=\"`\u5220\u9664 ${file.name}`\" @click.stop=\"removeWechatAttachment(index)\">\n                                        <svg viewbox=\"0 0 24 24\" fill=\"none\" aria-hidden=\"true\">\n                                            <path d=\"M6 6 18 18M18 6 6 18\" stroke=\"currentColor\" stroke-width=\"2.4\" stroke-linecap=\"round\"\/>\n                                        <\/svg>\n                                    <\/button>\n                                <\/div>\n                            <\/div>\n\n                            <p v-if=\"wechatAttachmentError\" class=\"upload-error\">{{ wechatAttachmentError }}<\/p>\n                        <\/div>\n\n                        <div class=\"actions\">\n                            <button class=\"btn btn-primary\" type=\"button\" id=\"submitBtn\" :disabled=\"wechatUploading\" @click=\"uploadWechatAttachments\">\n                                {{ wechatUploading ? '\u63d0\u4ea4\u4e2d...' : '\u6fc0\u6d3b\u4fdd\u5355' }}\n                            <\/button>\n                            <a class=\"btn btn-secondary\" href=\"https:\/\/work.weixin.qq.com\/kfid\/kfc00c5a038170f3f46\" target=\"_blank\" rel=\"noopener noreferrer\" @click.stop>\n                                \u8054\u7cfb\u5ba2\u670d\n                            <\/a>\n                        <\/div>\n                        <p v-if=\"wechatUploadMessage\" class=\"upload-feedback\" :class=\"wechatUploadSuccess ? 'upload-feedback--success' : 'upload-feedback--error'\">\n                            {{ wechatUploadMessage }}\n                        <\/p>\n                    <\/div>\n                <\/section>\n            <\/section>\n\n            <section class=\"page-view active\" id=\"successPage\" v-else>\n                <section class=\"hero\">\n                    <div class=\"eyebrow\">\u6295\u4fdd\u6210\u529f<\/div>\n                    <h1 class=\"hero-title\">\u4fdd\u5355\u5df2\u751f\u6210<\/h1>\n                <\/section>\n\n                <section class=\"surface\" aria-label=\"\u6750\u6599\u63d0\u4ea4\u6210\u529f\u9875\u9762\">\n                    <div class=\"success-card\">\n                        <div class=\"success-mark\" aria-hidden=\"true\">\n                            <svg width=\"34\" height=\"34\" viewbox=\"0 0 24 24\" fill=\"none\">\n                                <path d=\"M5 12.5 9.4 17 19 7.5\" stroke=\"currentColor\" stroke-width=\"2.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/>\n                            <\/svg>\n                        <\/div>\n                        <h2>\u4fdd\u5355\u6587\u4ef6\u53ef\u5728\u4e2a\u4eba\u4e2d\u5fc3\u67e5\u770b<\/h2>\n                        <p>\u8ba2\u5355\u5df2\u8fdb\u5165\u51fa\u4fdd\u5904\u7406\u3002\u82e5\u4fdd\u5355\u6587\u4ef6\u4ecd\u5728\u751f\u6210\u4e2d\uff0c\u8bf7\u7a0d\u540e\u5728\u4e2a\u4eba\u4e2d\u5fc3\u67e5\u770b\u66f4\u65b0\u3002<\/p>\n                    <\/div>\n\n                    <div class=\"footer-actions\">\n                        <a class=\"btn btn-primary\" href=\"\/student-users\/\">\n                            <span class=\"icon-round\" aria-hidden=\"true\">\n                                <svg width=\"18\" height=\"18\" viewbox=\"0 0 24 24\" fill=\"none\">\n                                    <path d=\"M5 12.5 9.4 17 19 7.5\" stroke=\"currentColor\" stroke-width=\"2.6\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/>\n                                <\/svg>\n                            <\/span>\n                            \u524d\u5f80\u4e2a\u4eba\u4e2d\u5fc3\n                        <\/a>\n                        <a class=\"btn btn-secondary\" href=\"https:\/\/work.weixin.qq.com\/kfid\/kfc00c5a038170f3f46\" target=\"_blank\" rel=\"noopener noreferrer\" @click.stop>\u8054\u7cfb\u5ba2\u670d<\/a>\n                    <\/div>\n                <\/section>\n            <\/section>\n        <\/main>\n    <\/div>\n    <!-- \u652f\u4ed8\u5f39\u51fa\u6846\uff0c\u5fae\u4fe1\u652f\u4ed8 -->\n    <div id=\"myModal\" class=\"modal\" role=\"dialog\" aria-modal=\"true\" aria-labelledby=\"wechatModalTitle\" @click.self=\"hiddenModel\">\n        <div id=\"wechatModalContent\" class=\"payment-modal wechat-payment-modal\" role=\"document\">\n            <button type=\"button\" class=\"modal-close wechat-payment-modal__close\" @click=\"hiddenModel\" aria-label=\"\u5173\u95ed\u5f39\u7a97\"><\/button>\n            <div class=\"wechat-payment-modal__body\">\n            <template v-if=\"wechatModalStep === 1\">\n                <div class=\"step-panel active\">\n                    <h1 id=\"wechatModalTitle\" class=\"modal-title\">\u5fae\u4fe1\u652f\u4ed8\u4fe1\u606f\u786e\u8ba4<\/h1>\n                    <div class=\"step-indicator\">\n                        <span class=\"step-dot active\"><\/span>\n                        <span class=\"step-dot\"><\/span>\n                    <\/div>\n                    <div class=\"notice\">\n                        <span class=\"shield\" aria-hidden=\"true\">\n                            <svg viewbox=\"0 0 24 24\" fill=\"none\">\n                                <path d=\"M6 12.2l4 4L18.5 7.8\" stroke=\"currentColor\" stroke-width=\"3.2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/>\n                            <\/svg>\n                        <\/span>\n                        <span>\u8bf7\u586b\u5199\u8eab\u4efd\u4fe1\u606f\uff0c\u751f\u6210\u652f\u4ed8\u4e8c\u7ef4\u7801<\/span>\n                    <\/div>\n                    <div class=\"identity-card\">\n                        <h2 class=\"section-title\">\u8eab\u4efd\u4fe1\u606f<\/h2>\n                        <div class=\"form-group\">\n                            <div class=\"label-row\">\n                                <label for=\"studentName\">\u5b66\u751f\u4e2d\u6587\u59d3\u540d<\/label>\n                                <span class=\"pill\">\u4e0d\u5360\u4e2a\u4eba\u5916\u6c47\u989d\u5ea6<\/span>\n                            <\/div>\n                            <input id=\"studentName\" v-model.trim=\"wechatNameZh\" class=\"input\" type=\"text\" placeholder=\"\u8bf7\u8f93\u5165\u5b66\u751f\u4e2d\u6587\u59d3\u540d\">\n                        <\/div>\n                        <div class=\"form-group\">\n                            <label for=\"idNumber\">\u4e2d\u56fd\u5c45\u6c11\u8eab\u4efd\u8bc1\u53f7\uff08\u5b66\u751f\u672c\u4eba\uff09<\/label>\n                            <input id=\"idNumber\" v-model.trim=\"wechatIdNumber\" class=\"input\" type=\"text\" maxlength=\"18\" placeholder=\"\u8bf7\u8f93\u516518\u4f4d\u8eab\u4efd\u8bc1\u53f7\u7801\">\n                            <div class=\"error-message\" :class=\"{ show: Boolean(wechatModalError) }\">{{ wechatModalError || '\u8bf7\u586b\u5199\u6709\u6548\u7684 18 \u4f4d\u8eab\u4efd\u8bc1\u53f7\u7801' }}<\/div>\n                        <\/div>\n                        <div class=\"secure-note\">\n                            <svg viewbox=\"0 0 24 24\" fill=\"none\">\n                                <path d=\"M12 3L20 6.4V12.2C20 16.8 16.8 20.7 12 22C7.2 20.7 4 16.8 4 12.2V6.4L12 3Z\" stroke=\"currentColor\" stroke-width=\"2\"\/>\n                                <path d=\"M8.5 12.2L11 14.7L16 9.7\" stroke=\"currentColor\" stroke-width=\"2.2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/>\n                            <\/svg>\n                            <span>\u4ec5\u7528\u4e8e\u672c\u6b21\u5fae\u4fe1\u652f\u4ed8\u9a8c\u8bc1\uff0c\u4e0d\u4f5c\u5176\u4ed6\u7528\u9014<\/span>\n                        <\/div>\n                    <\/div>\n                    <div class=\"divider\"><\/div>\n                    <div class=\"center-note\">\n                        <svg viewbox=\"0 0 24 24\" fill=\"none\">\n                            <circle cx=\"12\" cy=\"12\" r=\"9\" stroke=\"currentColor\" stroke-width=\"2.2\"\/>\n                            <path d=\"M12 7v5l3.4 2.2\" stroke=\"currentColor\" stroke-width=\"2.2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/>\n                        <\/svg>\n                        <span>\u786e\u8ba4\u540e\u5c06\u751f\u6210\u5fae\u4fe1\u652f\u4ed8\u4e8c\u7ef4\u7801<\/span>\n                    <\/div>\n                    <div class=\"modal-actions\">\n                        <button class=\"btn btn-primary\" type=\"button\" :disabled=\"wechatSubmitting\" @click=\"submitWechatPayment\">\n                            {{ wechatSubmitting ? 'Generating...' : '\u786e\u8ba4\u5e76\u751f\u6210\u4e8c\u7ef4\u7801' }}\n                        <\/button>\n                        <button class=\"btn btn-secondary\" type=\"button\" @click=\"hiddenModel\">\u53d6\u6d88<\/button>\n                    <\/div>\n                <\/div>\n            <\/template>\n            <template v-else>\n                <div class=\"step-panel active\">\n                    <h1 id=\"wechatModalTitle\" class=\"modal-title\">\u5fae\u4fe1\u652f\u4ed8<\/h1>\n                    <p class=\"modal-subtitle\">\u901a\u8fc7\u6613\u601d\u6c47\u5b8c\u6210\u4ed8\u6b3e<\/p>\n                    <div class=\"step-indicator\">\n                        <span class=\"step-dot active\"><\/span>\n                        <span class=\"step-dot active\"><\/span>\n                    <\/div>\n                    <div class=\"notice dark\">\n                        <span class=\"shield\" aria-hidden=\"true\">\n                            <svg viewbox=\"0 0 24 24\" fill=\"none\">\n                                <path d=\"M6 12.2l4 4L18.5 7.8\" stroke=\"currentColor\" stroke-width=\"3.2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/>\n                            <\/svg>\n                        <\/span>\n                        <span>\u6613\u601d\u6c47\u4e3a GGS \u5408\u4f5c\u652f\u4ed8\u670d\u52a1\u5546\uff0c\u5fae\u4fe1\u652f\u4ed8\u901a\u9053\u7531\u6613\u601d\u6c47\u63d0\u4f9b\u652f\u6301\u3002<\/span>\n                    <\/div>\n                    <div class=\"tag\">\u4e0d\u5360\u4e2a\u4eba\u5916\u6c47\u989d\u5ea6<\/div>\n                    <div class=\"qr-area\">\n                        <div class=\"qr-box\">\n                            <div class=\"qr-image\" :class=\"{ 'qr-image--real': Boolean(pay_url) }\" aria-label=\"\u5fae\u4fe1\u652f\u4ed8\u4e8c\u7ef4\u7801\">\n                                <img v-if=\"pay_url\" class=\"qr-real-image\" :src=\"pay_url\" alt=\"\u5fae\u4fe1\u652f\u4ed8\u4e8c\u7ef4\u7801\">\n                                <template v-else>\n                                    <div class=\"qr-corner\"><\/div>\n                                    <div class=\"qr-logo\">\n                                        \u6613\u601d\u6c47<br>\n                                        <span>EASY TRANSFER<\/span>\n                                    <\/div>\n                                    <div class=\"wechat-mini\" aria-hidden=\"true\">\n                                        <svg viewbox=\"0 0 48 48\" fill=\"none\">\n                                            <path d=\"M16.5 25.8v-7.4c0-4 3.2-7.2 7.2-7.2h.8c4 0 7.2 3.2 7.2 7.2v9.1c0 2.6 2.1 4.7 4.7 4.7h.3c2.6 0 4.7-2.1 4.7-4.7v-4.1\" stroke=\"currentColor\" stroke-width=\"4\" stroke-linecap=\"round\"\/>\n                                            <path d=\"M31.6 22.2v7.4c0 4-3.2 7.2-7.2 7.2h-.8c-4 0-7.2-3.2-7.2-7.2v-9.1c0-2.6-2.1-4.7-4.7-4.7h-.3c-2.6 0-4.7 2.1-4.7 4.7v4.1\" stroke=\"currentColor\" stroke-width=\"4\" stroke-linecap=\"round\"\/>\n                                        <\/svg>\n                                    <\/div>\n                                <\/template>\n                            <\/div>\n                        <\/div>\n                        <div class=\"qr-guide\">\u6253\u5f00\u5fae\u4fe1 \u2192 \u626b\u4e00\u626b \u2192 \u5b8c\u6210\u4ed8\u6b3e<\/div>\n                    <\/div>\n                    <section class=\"payment-info\">\n                        <h2 class=\"info-title\">\n                            <svg viewbox=\"0 0 24 24\" fill=\"none\">\n                                <path d=\"M5 3.5h10.5L19 7v13.5H5V3.5Z\" stroke=\"currentColor\" stroke-width=\"2\"\/>\n                                <path d=\"M15.5 3.5V7H19\" stroke=\"currentColor\" stroke-width=\"2\"\/>\n                                <path d=\"M8 10h7M8 13.5h5\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\"\/>\n                                <circle cx=\"17.5\" cy=\"17.5\" r=\"3.5\" fill=\"#fff\" stroke=\"currentColor\" stroke-width=\"2\"\/>\n                                <path d=\"M16.2 17.4l.9.9l1.8-2\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/>\n                            <\/svg>\n                            \u652f\u4ed8\u8bf4\u660e\n                        <\/h2>\n                        <ul class=\"info-list\">\n                            <li>\u5b9e\u9645\u652f\u4ed8\u91d1\u989d\u3001\u6c47\u7387\u53ca\u5230\u8d26\u65f6\u95f4\u4ee5\u6613\u601d\u6c47\u9875\u9762\u663e\u793a\u4e3a\u51c6<\/li>\n                            <li>\u4ed8\u6b3e\u5b8c\u6210\u540e\uff0c\u8bf7\u56de\u5230 GGS \u4e0a\u4f20\u7f34\u8d39\u6750\u6599<\/li>\n                        <\/ul>\n                    <\/section>\n                    <div class=\"order-time\">\n                        <svg viewbox=\"0 0 24 24\" fill=\"none\">\n                            <circle cx=\"12\" cy=\"12\" r=\"9\" stroke=\"currentColor\" stroke-width=\"2.2\"\/>\n                            <path d=\"M12 7v5l3.4 2.2\" stroke=\"currentColor\" stroke-width=\"2.2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/>\n                        <\/svg>\n                        <span>\u8ba2\u5355\u521b\u5efa\u65f6\u95f4\uff1a{{ nowTime }}<\/span>\n                    <\/div>\n                    <div class=\"qr-actions\">\n                        <button class=\"btn btn-primary\" type=\"button\" @click=\"checkWechatOrderCompleted\">\n                        <span class=\"btn-icon-circle\" aria-hidden=\"true\">\n                            <svg viewbox=\"0 0 24 24\" fill=\"none\">\n                                <path d=\"M5 12.5l4.2 4.2L19 7\" stroke=\"currentColor\" stroke-width=\"2.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/>\n                            <\/svg>\n                        <\/span>\n                            \u6211\u5df2\u5b8c\u6210\u652f\u4ed8\n                        <\/button>\n                        <a class=\"btn btn-secondary customer-service\" href=\"https:\/\/work.weixin.qq.com\/kfid\/kfc00c5a038170f3f46\" target=\"_blank\" rel=\"noopener noreferrer\" @click.stop>\n                            <svg viewbox=\"0 0 24 24\" fill=\"none\">\n                                <path d=\"M4 13v-1a8 8 0 0 1 16 0v1\" stroke=\"currentColor\" stroke-width=\"2.2\" stroke-linecap=\"round\"\/>\n                                <path d=\"M5 13h2.5v5H5a2 2 0 0 1-2-2v-1a2 2 0 0 1 2-2Z\" stroke=\"currentColor\" stroke-width=\"2.2\"\/>\n                                <path d=\"M19 13h-2.5v5H19a2 2 0 0 0 2-2v-1a2 2 0 0 0-2-2Z\" stroke=\"currentColor\" stroke-width=\"2.2\"\/>\n                                <path d=\"M16 19.5c-.8.7-2.1 1.1-4 1.1\" stroke=\"currentColor\" stroke-width=\"2.2\" stroke-linecap=\"round\"\/>\n                            <\/svg>\n                            \u8054\u7cfb\u5ba2\u670d\n                        <\/a>\n                    <\/div>\n                    <button class=\"back-link\" type=\"button\" @click=\"wechatModalStep = 1\">\n                        \u8fd4\u56de\u4fee\u6539\u8eab\u4efd\u4fe1\u606f\n                    <\/button>\n                <\/div>\n            <\/template>\n            <\/div>\n        <\/div>\n    <\/div>\n<\/div>\n<script src=\"\/wp-content\/static\/js\/layui.js\"><\/script>\n<script>\n    const {\n        createApp,\n        ref,\n        computed,\n        nextTick,\n        onMounted,\n        watch,\n        reactive,\n        onBeforeMount,\n        onBeforeUnmount\n    } = Vue;\n    if (typeof dayjs === 'function') dayjs().format()\n    const {ElMessage} = ElementPlus;  \/\/ \u5f15\u5165 Element Plus \u7684 Message\n    const app = createApp({\n        setup() {\n            \/\/ \u52a0\u8f7d\u72b6\u6001\n            const loading=ref(false)\n            const isMeaningfulValue = (value) => {\n                if (value === null || value === undefined) return false;\n                const text = String(value).trim();\n                if (!text) return false;\n                return !['undefined', 'null', 'nan', '[object object]'].includes(text.toLowerCase());\n            }\n            const normalizeTextValue = (value) => {\n                return isMeaningfulValue(value) ? String(value).trim() : '';\n            }\n            const normalizeSchoolNameForSubmission = (value) => {\n                return normalizeTextValue(value)\n                    .replace(\/\\s*(?:\\(\\s*USC\\s*\\)|\uff08\\s*USC\\s*\uff09)\\s*$\/i, '')\n                    .trim();\n            }\n            const getStoredText = (key) => {\n                return normalizeTextValue(localStorage.getItem(key));\n            }\n            const getStoredJson = (key) => {\n                try {\n                    const raw = localStorage.getItem(key)\n                    return raw ? JSON.parse(raw) : null\n                } catch (error) {\n                    return null\n                }\n            }\n            const setStoredText = (key, value) => {\n                const normalizedValue = normalizeTextValue(value);\n                if (normalizedValue) {\n                    localStorage.setItem(key, normalizedValue);\n                    return normalizedValue;\n                }\n                localStorage.removeItem(key);\n                return '';\n            }\n            const normalizeSchoolIdValue = (value) => {\n                const normalizedValue = normalizeTextValue(value).split('\/')[0].trim()\n                if (!\/^\\d+$\/.test(normalizedValue)) return ''\n                return Number(normalizedValue) > 0 ? normalizedValue : ''\n            }\n            const getStoredSchoolId = () => {\n                return normalizeSchoolIdValue(localStorage.getItem('school_id') || localStorage.getItem('sid'))\n            }\n            const getStoredSchoolName = () => {\n                const storedSchoolName = normalizeTextValue(localStorage.getItem('school_name'))\n                if (storedSchoolName) return storedSchoolName\n                const legacySchoolValue = normalizeTextValue(localStorage.getItem('school_id'))\n                return normalizeSchoolIdValue(legacySchoolValue) ? '' : legacySchoolValue\n            }\n            const setStoredSchoolId = (value) => {\n                const normalizedValue = normalizeSchoolIdValue(value)\n                if (normalizedValue) {\n                    localStorage.setItem('school_id', normalizedValue)\n                    localStorage.setItem('sid', normalizedValue)\n                    return normalizedValue\n                }\n                localStorage.removeItem('school_id')\n                localStorage.removeItem('sid')\n                return ''\n            }\n            const setStoredSchoolName = (value) => {\n                const normalizedValue = normalizeTextValue(value)\n                if (normalizedValue) {\n                    localStorage.setItem('school_name', normalizedValue)\n                    return normalizedValue\n                }\n                localStorage.removeItem('school_name')\n                return ''\n            }\n            const getContactValue = (member, contactName, fallbackIndex = -1) => {\n                const contacts = Array.isArray(member?.contacts) ? member.contacts : [];\n                const targetName = normalizeTextValue(contactName).toLowerCase();\n                const matchedContact = contacts.find((contact) => normalizeTextValue(contact?.name).toLowerCase() === targetName);\n                return normalizeTextValue(matchedContact?.value || contacts?.[fallbackIndex]?.value);\n            }\n            const getOptionValue = (member, optionName, fallbackIndex = -1) => {\n                const options = Array.isArray(member?.options) ? member.options : [];\n                const targetName = normalizeTextValue(optionName).toLowerCase();\n                const matchedOption = options.find((option) => normalizeTextValue(option?.name).toLowerCase() === targetName);\n                return normalizeTextValue(matchedOption?.value || options?.[fallbackIndex]?.value);\n            }\n            const normalizeDobForEnrollment = (value) => {\n                const rawDob = normalizeTextValue(value)\n                if (!rawDob) return ''\n                if (rawDob.includes('T') || rawDob.endsWith('Z')) {\n                    const dobDate = new Date(rawDob)\n                    if (!isNaN(dobDate.getTime())) {\n                        const beijingOffsetMs = 8 * 60 * 60 * 1000\n                        const beijingDate = new Date(dobDate.getTime() + beijingOffsetMs)\n                        const yyyy = beijingDate.getUTCFullYear()\n                        const mm = String(beijingDate.getUTCMonth() + 1).padStart(2, '0')\n                        const dd = String(beijingDate.getUTCDate()).padStart(2, '0')\n                        return `${yyyy}-${mm}-${dd}`\n                    }\n                }\n                return dayjs(rawDob).isValid() ? dayjs(rawDob).format('YYYY-MM-DD') : ''\n            }\n            const getEnrollmentDob = (detail) => {\n                const member = detail?.members?.[0] || {}\n                const candidates = [\n                    member.dob,\n                    member.dateOfBirth,\n                    member.date_of_birth,\n                    member.birthDate,\n                    member.birth_date,\n                    member.birthday,\n                    detail?.dob,\n                    detail?.dateOfBirth,\n                    detail?.date_of_birth,\n                    detail?.birthDate,\n                    detail?.birth_date,\n                    detail?.birthday,\n                    getOptionValue(member, 'DateOfBirth'),\n                    getOptionValue(member, 'Date of birth'),\n                    getOptionValue(member, 'DOB'),\n                    getContactValue(member, 'DateOfBirth'),\n                    getContactValue(member, 'Date of birth'),\n                    getContactValue(member, 'DOB')\n                ]\n                for (const candidate of candidates) {\n                    const normalizedDob = normalizeDobForEnrollment(candidate)\n                    if (normalizedDob) return normalizedDob\n                }\n                return ''\n            }\n            const getEnrollmentSchoolName = (detail) => {\n                const member = detail?.members?.[0] || {};\n                return normalizeTextValue(detail?.school?.name)\n                    || normalizeTextValue(detail?.school_name)\n                    || normalizeTextValue(detail?.schoole_name)\n                    || normalizeTextValue(detail?.schoolName)\n                    || getContactValue(member, 'School', 2);\n            }\n            const getEnrollmentSchoolId = (detail) => {\n                const member = detail?.members?.[0] || {}\n                const schoolData = detail?.school || {}\n                const candidates = [\n                    schoolData?.id,\n                    schoolData?.school_id,\n                    schoolData?.schoolId,\n                    detail?.school_id,\n                    detail?.schoolId,\n                    detail?.schoole_id,\n                    member?.school_id,\n                    member?.schoolId\n                ]\n                for (const candidate of candidates) {\n                    const normalizedSchoolId = normalizeSchoolIdValue(candidate)\n                    if (normalizedSchoolId) return normalizedSchoolId\n                }\n                return ''\n            }\n            const school = ref(getStoredSchoolName())\n            const schoolModeSource = ref(getStoredSchoolName())\n            const selectedSchoolId = ref(getStoredSchoolId())\n            const schoolCheckoutSettingsStorageKey = 'school_checkout_settings_v2'\n            const schoolCheckoutSettings = reactive({\n                allowCoverageEndDateEdit: null,\n                paymentMethodMode: '',\n                cardPaymentProvider: ''\n            })\n            const normalizeCheckoutBoolean = (value) => {\n                return value === true || value === 1 || ['1', 'true', 'yes', 'on'].includes(String(value || '').trim().toLowerCase())\n            }\n            const normalizePaymentMethodMode = (value) => {\n                const normalizedValue = normalizeTextValue(value).toLowerCase()\n                return ['both', 'wechat', 'card'].includes(normalizedValue) ? normalizedValue : ''\n            }\n            const normalizeCardPaymentProvider = (value) => {\n                const normalizedValue = normalizeTextValue(value).toLowerCase()\n                return ['stripe', 'wellaway'].includes(normalizedValue) ? normalizedValue : ''\n            }\n            const applySchoolCheckoutSettings = (schoolData = {}, persist = true) => {\n                const allowEndDateEditValue = schoolData?.allow_coverage_end_date_edit ?? schoolData?.allowCoverageEndDateEdit\n                schoolCheckoutSettings.allowCoverageEndDateEdit = allowEndDateEditValue === null\n                    || allowEndDateEditValue === undefined\n                    || allowEndDateEditValue === ''\n                    ? null\n                    : normalizeCheckoutBoolean(allowEndDateEditValue)\n                schoolCheckoutSettings.paymentMethodMode = normalizePaymentMethodMode(\n                    schoolData?.payment_method_mode ?? schoolData?.paymentMethodMode\n                )\n                schoolCheckoutSettings.cardPaymentProvider = normalizeCardPaymentProvider(\n                    schoolData?.card_payment_provider ?? schoolData?.cardPaymentProvider\n                )\n                if (persist) {\n                    localStorage.setItem(schoolCheckoutSettingsStorageKey, JSON.stringify({\n                        school_id: normalizeSchoolIdValue(\n                            schoolData?.school_id || schoolData?.id || selectedSchoolId.value || getStoredSchoolId()\n                        ),\n                        school_slug: normalizeTextValue(\n                            schoolData?.school_slug || schoolData?.slug || getStoredText('school_slug')\n                        ).toLowerCase(),\n                        school_name: normalizeTextValue(\n                            schoolData?.school_name || schoolData?.name || school.value || getStoredSchoolName()\n                        ),\n                        allow_coverage_end_date_edit: schoolCheckoutSettings.allowCoverageEndDateEdit,\n                        payment_method_mode: schoolCheckoutSettings.paymentMethodMode,\n                        card_payment_provider: schoolCheckoutSettings.cardPaymentProvider\n                    }))\n                }\n            }\n            const applyCachedSchoolCheckoutSettings = () => {\n                const cachedSettings = getStoredJson(schoolCheckoutSettingsStorageKey)\n                if (!cachedSettings || typeof cachedSettings !== 'object') return false\n                const currentSchoolId = normalizeSchoolIdValue(selectedSchoolId.value || getStoredSchoolId())\n                const currentSchoolName = normalizeTextValue(school.value || getStoredSchoolName()).toLowerCase()\n                const cachedSchoolId = normalizeSchoolIdValue(cachedSettings.school_id)\n                const cachedSchoolName = normalizeTextValue(cachedSettings.school_name).toLowerCase()\n                const isSameSchool = (currentSchoolId && cachedSchoolId === currentSchoolId)\n                    || (!currentSchoolId && currentSchoolName && cachedSchoolName === currentSchoolName)\n                if (!isSameSchool) return false\n                applySchoolCheckoutSettings(cachedSettings, false)\n                return true\n            }\n            applyCachedSchoolCheckoutSettings()\n            const isSchoolSelectionMode = computed(() => {\n                const planCode = normalizeTextValue(getStoredText('selected_plan_code')).toUpperCase()\n                return normalizeTextValue(schoolModeSource.value).toLowerCase().includes('wellaway-scholar')\n                    || ['WAOPT', 'WAOPTPREMIER'].includes(planCode)\n            })\n            const remoteSchoolOptions = ref([])\n            const isLoadingRemoteSchools = ref(false)\n            const fetchRemoteSchoolOptions = async () => {\n                if (!isSchoolSelectionMode.value || isLoadingRemoteSchools.value) return\n                isLoadingRemoteSchools.value = true\n                try {\n                    const response = await window.apiClient.get('https:\/\/agent.goglobalsafe.com\/api\/v1\/insurance\/baoxian\/school_all?visa_id=1', {\n                        headers: {\n                            \"X-Authentication-Key\": \"HSxZK8nHniLzZtv0Qtfk87wvNvXpJZ5K\",\n                        }\n                    })\n                    const raw = response?.data?.data || {}\n                    const list = Array.isArray(raw) ? raw : Object.values(raw)\n                    remoteSchoolOptions.value = list\n                        .map((item) => normalizeTextValue(item?.name || item?.school_name || item?.schoolName))\n                        .filter((name) => name && name.toLowerCase() !== 'wellaway-scholar')\n                } catch (error) {\n                } finally {\n                    isLoadingRemoteSchools.value = false\n                }\n            }\n            const enrollmentCoverageStartDate = ref('')\n            const enrollmentCoverageEndDate = ref('')\n            const syncSchoolValue = (value) => {\n                const normalizedValue = normalizeTextValue(value);\n                school.value = normalizedValue;\n                setStoredSchoolName(normalizedValue);\n                return normalizedValue;\n            }\n            const syncSchoolIdValue = (value) => {\n                const normalizedValue = setStoredSchoolId(value)\n                selectedSchoolId.value = normalizedValue\n                return normalizedValue\n            }\n            const schoolSelectOptions = computed(() => {\n                const schoolNames = new Set(remoteSchoolOptions.value)\n                Object.keys(waiver || {}).forEach((name) => schoolNames.add(name))\n                ;(Array.isArray(schoolInstead) ? schoolInstead : []).forEach((item) => {\n                    const oldName = normalizeTextValue(item?.old)\n                    const newName = normalizeTextValue(item?.new)\n                    if (oldName) schoolNames.add(oldName)\n                    if (newName) schoolNames.add(newName)\n                })\n                const currentSchoolName = normalizeTextValue(school.value)\n                if (currentSchoolName && currentSchoolName.toLowerCase() !== 'wellaway-scholar') schoolNames.add(currentSchoolName)\n                return Array.from(schoolNames)\n                    .filter((name) => normalizeTextValue(name).toLowerCase() !== 'wellaway-scholar')\n                    .sort((a, b) => a.localeCompare(b))\n            })\n            const product = ref(getStoredText(\"InsuranceName\"))\n            const selectedPlanId = ref(getStoredText('selected_plan_id'))\n            const selectedPlanCode = ref(getStoredText('selected_plan_code'))\n            const selectedPlanName = ref(getStoredText('selected_plan_name'))\n            const sourceInstitutionFromReq = ref('')\n            const syncProductValue = (value) => {\n                const normalizedValue = normalizeTextValue(value)\n                product.value = normalizedValue\n                setStoredText(\"InsuranceName\", normalizedValue)\n                return normalizedValue\n            }\n            const getCurrentInsuranceName = () => normalizeTextValue(product.value || localStorage.getItem(\"InsuranceName\"))\n            const getPlanCodeFromPayLink = (value) => {\n                const payLink = normalizeTextValue(value)\n                if (!payLink) return ''\n                try {\n                    return normalizeTextValue(new URL(payLink, window.location.origin).searchParams.get('plan'))\n                } catch (error) {\n                    return ''\n                }\n            }\n            const getUserFormAndProduct = (req) => {\n                loading.value=true;\n                return window.apiClient.get(\"https:\/\/agent.goglobalsafe.com\/api\/v1\/Enrollment\/getStudentEnrollment?request_id=\" + req, {\n                    headers: {\n                        \"Accept\":\"application\/json\",\n                        \"X-Authentication-Key\": \"HSxZK8nHniLzZtv0Qtfk87wvNvXpJZ5K\",\n                    }\n                }).then(response => {\n                    let detail = response.data.data || {}\n                    const primaryMember = detail.members?.[0] || {}\n                    const normalizedDobFromReq = getEnrollmentDob(detail)\n                    if (normalizedDobFromReq) {\n                        primaryMember.dob = normalizedDobFromReq\n                    }\n                    const schoolNameFromReq = getEnrollmentSchoolName(detail);\n                    syncSchoolValue(schoolNameFromReq);\n                    syncSchoolIdValue(getEnrollmentSchoolId(detail));\n                    sourceInstitutionFromReq.value = normalizeTextValue(detail.source_institution || detail.sourceInstitution)\n                    const detailSchool = detail.school || {}\n                    applySchoolCheckoutSettings(detailSchool)\n                    const detailProduct = detail.product || {}\n                    const restoredPlanName = normalizeTextValue(\n                        detailProduct.name\n                        || detail.planName\n                        || detail.plan_name\n                    )\n                    const restoredPlanCode = normalizeTextValue(\n                        detailProduct.plan_code\n                        || detailProduct.planCode\n                        || detail.policyNumber\n                        || detail.policy_number\n                        || getPlanCodeFromPayLink(detailProduct.pay_link || detailProduct.payLink)\n                    )\n                    const restoredPlanId = normalizeTextValue(detailProduct.id)\n                    if (detail.product) {\n                        \/\/\u91cd\u65b0\u8bbe\u7f6e\u7f13\u5b58\n                        localStorage.setItem(\"age_ranges\",JSON.stringify(Array.isArray(detailProduct.age_ranges) ? detailProduct.age_ranges : []))\n                        setStoredText(\"monthly_price\", detailProduct.monthly_price);\n                    }\n                    if (restoredPlanName) {\n                        syncProductValue(restoredPlanName)\n                        selectedPlanName.value = restoredPlanName\n                        setStoredText(\"selected_plan_name\", restoredPlanName)\n                    }\n                    if (restoredPlanId) {\n                        selectedPlanId.value = restoredPlanId\n                        setStoredText(\"selected_plan_id\", restoredPlanId)\n                    }\n                    if (restoredPlanCode) {\n                        selectedPlanCode.value = restoredPlanCode\n                        setStoredText(\"selected_plan_code\", restoredPlanCode)\n                    }\n                    if (detail.product) {\n                        \/\/ school.value = detail.school.name\n                        if (detailSchool.slug) {\n                            schoolSlugForModify.value = String(detailSchool.slug).trim()\n                            localStorage.setItem('school_slug', schoolSlugForModify.value)\n                        }\n                        setStoredText('student_email', detail.email)\n                        localStorage.removeItem(\"user_form_history\");\n                        const coverage = primaryMember.enrollmentCoverage || primaryMember.coverage || {};\n                        const reqCoveragePeriod = resolveReqCoveragePeriod(\n                            coverage.coverageStartDate,\n                            coverage.coverageEndDate,\n                            detail.product.name,\n                            school.value\n                        )\n                        enrollmentCoverageStartDate.value = reqCoveragePeriod.start\n                        enrollmentCoverageEndDate.value = reqCoveragePeriod.end\n                        const shouldPreferReqCoverageDates = Boolean(currentReq)\n                            && shouldFillReferralFromReq\n                            && canUseFullReqCoveragePeriodDatesForPlan(\n                                enrollmentCoverageStartDate.value,\n                                enrollmentCoverageEndDate.value,\n                                detail.product.name,\n                                school.value\n                            )\n                        setStoredText(\n                            \"coverage_start_date\",\n                            shouldPreferReqCoverageDates ? enrollmentCoverageStartDate.value : detailSchool.coverage_start_date\n                        );\n                        setStoredText(\n                            \"coverage_end_date\",\n                            shouldPreferReqCoverageDates ? enrollmentCoverageEndDate.value : detailSchool.coverage_end_date\n                        );\n                        if (enrollmentCoverageStartDate.value && enrollmentCoverageEndDate.value) {\n                            selectedMonths.value = normalizeCoverageMonthsToMinimum(\n                                calculateMonthDifference2(enrollmentCoverageStartDate.value, enrollmentCoverageEndDate.value),\n                                getCurrentInsuranceName(),\n                                school.value\n                            )\n                        }\n\n                    }\n                    dataFill2(detail)\n                    if (detail.product) {\n                        applySchoolCoverageDefaults(detailSchool.coverage_start_date, detailSchool.coverage_end_date, detail.product.name, school.value)\n                        ensureCoverageDatesWithinCurrentRules()\n                    }\n                    requestInitialQuote()\n                    loading.value=false\n                }).catch(error => {\n                    loading.value=false\n                    \/\/ redirectToHome()\n                });\n            }\n            \/\/ \u83b7\u53d6\u8def\u5f84\u4e2d\u7684\u53c2\u6570\uff0c\u53bb\u5230\u7b2c\u56db\u6b65\uff0c\u652f\u4ed8\u6210\u529f\n            const urlParamsOrigin = new URLSearchParams(window.location.search);\n            const localSuccessPreviewHosts = new Set([\n                'student.io',\n                'www.student.io',\n                'studnet.io',\n                'www.studnet.io',\n                'localhost',\n                '127.0.0.1'\n            ])\n            const isLocalSiteHost = localSuccessPreviewHosts.has(String(window.location.hostname || '').toLowerCase())\n            const eipApiBase = isLocalSiteHost\n                ? 'http:\/\/baoxian.io\/api\/v1\/eip'\n                : 'https:\/\/agent.goglobalsafe.com\/api\/v1\/eip'\n            const successPreviewMode = isLocalSiteHost\n                && urlParamsOrigin.get('success_preview') === '1'\n            const isSuccessRoute = urlParamsOrigin.has('enrollment') || urlParamsOrigin.get('step') === '4'\n            let req = urlParamsOrigin.get('req');\n            const draftResumeToken = String(urlParamsOrigin.get('draf') || '').trim()\n            let remoteDraftResumeData = null\n            let remoteDraftResumeError = ''\n            let hasUserStartedStepNavigation = false\n            const currentReq = String(req || '').trim()\n            const shouldFillReferralFromReq = String(urlParamsOrigin.get('full') || '').trim() === '1'\n            const isYshFromUrl = ref(String(urlParamsOrigin.get('ysh') || '').trim() === '1')\n            const referralCodeFromUrl = normalizeTextValue(urlParamsOrigin.get('code'))\n            const isRenewalPrefillRequest = Boolean(\n                currentReq\n                && shouldFillReferralFromReq\n                && String(referralCodeFromUrl || '').trim().toUpperCase().startsWith('GGSRENEW')\n            )\n            const getSchoolSlugFromReferrer = () => {\n                try {\n                    const referrerUrl = new URL(document.referrer || '', window.location.origin)\n                    const match = referrerUrl.pathname.match(\/\\\/schools\\\/([^\\\/?#]+)\/)\n                    return match ? decodeURIComponent(match[1]) : ''\n                } catch (error) {\n                    return ''\n                }\n            }\n            const schoolSlugFromQuery = String(urlParamsOrigin.get('school_slug') || urlParamsOrigin.get('slug') || '').trim()\n            const schoolIdFromQuery = normalizeSchoolIdValue(urlParamsOrigin.get('school_id'))\n            const schoolSlugFromReferrer = getSchoolSlugFromReferrer()\n            const schoolSlugFromStorage = String(localStorage.getItem('school_slug') || '').trim()\n            const hasFreshSchoolNavigation = Boolean(schoolSlugFromQuery || schoolSlugFromReferrer)\n            const shouldKeepNavigationSchool = () => Boolean(!currentReq && hasFreshSchoolNavigation)\n            const schoolSlugForModify = ref(schoolSlugFromQuery || schoolSlugFromReferrer || schoolSlugFromStorage)\n            if (schoolSlugForModify.value) {\n                localStorage.setItem('school_slug', schoolSlugForModify.value)\n            }\n            if (schoolIdFromQuery) {\n                syncSchoolIdValue(schoolIdFromQuery)\n            }\n            const normalizeSlugValue = (value) => normalizeTextValue(value).toLowerCase()\n            const getSchoolListForSlug = async () => {\n                try {\n                    const response = await window.apiClient.get('https:\/\/agent.goglobalsafe.com\/api\/v1\/insurance\/baoxian\/school_all?visa_id=1', {\n                        headers: {\n                            \"X-Authentication-Key\": \"HSxZK8nHniLzZtv0Qtfk87wvNvXpJZ5K\",\n                        }\n                    })\n                    const raw = response?.data?.data || {}\n                    return Array.isArray(raw) ? raw : Object.values(raw)\n                } catch (error) {\n                    return []\n                }\n            }\n            const fetchSchoolCheckoutSettings = async () => {\n                const schoolId = normalizeSchoolIdValue(selectedSchoolId.value || getStoredSchoolId())\n                const schoolSlug = normalizeTextValue(schoolSlugForModify.value || getStoredText('school_slug'))\n                if (!schoolId && !schoolSlug) return false\n\n                const params = schoolId\n                    ? `school_id=${encodeURIComponent(schoolId)}`\n                    : `school_slug=${encodeURIComponent(schoolSlug)}`\n                try {\n                    const response = await window.apiClient.get(\n                        `https:\/\/agent.goglobalsafe.com\/api\/v1\/insurance\/baoxian\/product_school_waive_faq?${params}`,\n                        {\n                            timeout: 4000,\n                            headers: {\n                                \"Accept\": \"application\/json\",\n                                \"X-Authentication-Key\": \"HSxZK8nHniLzZtv0Qtfk87wvNvXpJZ5K\",\n                            }\n                        }\n                    )\n                    applySchoolCheckoutSettings(response?.data?.data?.school_waive || {})\n                    return true\n                } catch (error) {\n                    return false\n                }\n            }\n            const applyNavigationSchool = async () => {\n                if (!shouldKeepNavigationSchool()) return false\n                const slug = normalizeSlugValue(schoolSlugFromQuery || schoolSlugFromReferrer || schoolSlugForModify.value)\n                if (!slug) return false\n                const schoolList = await getSchoolListForSlug()\n                const matchedSchool = schoolList.find((item) => normalizeSlugValue(item?.slug) === slug)\n                const schoolName = normalizeTextValue(matchedSchool?.name)\n                if (!schoolName) return false\n                syncSchoolValue(schoolName)\n                syncSchoolIdValue(matchedSchool?.id ?? matchedSchool?.school_id ?? matchedSchool?.schoolId)\n                schoolModeSource.value = schoolName\n                return true\n            }\n            const removeDraftResumeTokenFromAddress = () => {\n                try {\n                    const cleanUrl = new URL(window.location.href)\n                    cleanUrl.searchParams.delete('draf')\n                    window.history.replaceState({}, document.title, cleanUrl.toString())\n                } catch (error) {}\n            }\n            const applyRemoteDraftBootstrap = (resumeData) => {\n                const snapshot = resumeData?.form_snapshot || {}\n                const selectedPlan = snapshot?.insurance?.selected_plan || {}\n                const displayPlanName = normalizeTextValue(\n                    selectedPlan?.name2\n                    || selectedPlan?.name\n                    || resumeData?.plan_name\n                    || snapshot?.plan_name\n                )\n                const planCode = normalizeTextValue(\n                    selectedPlan?.code\n                    || selectedPlan?.plan_code\n                    || snapshot?.plan_code\n                    || snapshot?.policy_number\n                )\n                const schoolName = normalizeTextValue(\n                    snapshot?.school?.school\n                    || snapshot?.local_draft?.form?.school\n                    || resumeData?.school_name\n                    || snapshot?.school?.school_name\n                )\n                const schoolId = normalizeSchoolIdValue(\n                    snapshot?.school?.school_id\n                    || snapshot?.school?.id\n                    || snapshot?.school?.schoolId\n                    || snapshot?.local_draft?.form?.school_id\n                    || resumeData?.school_id\n                )\n                if (displayPlanName) {\n                    syncProductValue(displayPlanName)\n                    selectedPlanName.value = displayPlanName\n                    setStoredText('selected_plan_name', displayPlanName)\n                }\n                if (planCode) {\n                    selectedPlanCode.value = planCode\n                    setStoredText('selected_plan_code', planCode)\n                }\n                if (selectedPlan?.id) {\n                    selectedPlanId.value = normalizeTextValue(selectedPlan.id)\n                    setStoredText('selected_plan_id', selectedPlanId.value)\n                }\n                if (selectedPlan?.monthly_price || selectedPlan?.price) {\n                    setStoredText('monthly_price', selectedPlan.monthly_price || selectedPlan.price)\n                }\n                if (Array.isArray(selectedPlan?.age_ranges)) {\n                    localStorage.setItem('age_ranges', JSON.stringify(selectedPlan.age_ranges))\n                }\n                if (schoolName) {\n                    syncSchoolValue(schoolName)\n                    schoolModeSource.value = schoolName\n                }\n                if (schoolId) {\n                    syncSchoolIdValue(schoolId)\n                }\n                const coverageStart = normalizeTextValue(snapshot?.insurance?.coverage_start_date)\n                const coverageEnd = normalizeTextValue(snapshot?.insurance?.coverage_end_date)\n                if (coverageStart) setStoredText('coverage_start_date', coverageStart)\n                if (coverageEnd) setStoredText('coverage_end_date', coverageEnd)\n                sourceInstitutionFromReq.value = normalizeTextValue(\n                    resumeData?.source_institution || snapshot?.source_institution\n                )\n                const originalTrackingSession = normalizeTextValue(resumeData?.tracking_session_id)\n                if (originalTrackingSession) {\n                    try {\n                        sessionStorage.setItem('ggs_us_enrollment_tracking_session_id', originalTrackingSession)\n                    } catch (error) {}\n                }\n            }\n            const fetchRemoteEnrollmentDraft = async () => {\n                try {\n                    const response = await window.apiClient.post('https:\/\/agent.goglobalsafe.com\/api\/v1\/Enrollment\/ResumeDraft', {\n                        draf: draftResumeToken\n                    }, {\n                        timeout: 6000,\n                        headers: {\n                            \"Accept\": \"application\/json\",\n                            \"X-Authentication-Key\": \"HSxZK8nHniLzZtv0Qtfk87wvNvXpJZ5K\",\n                        }\n                    })\n                    const resumeData = response?.data?.data || null\n                    if (!response?.data?.success || !resumeData) {\n                        throw new Error(response?.data?.message || 'This secure resume link is unavailable.')\n                    }\n                    if (resumeData.mode === 'order' && resumeData.resume_url) {\n                        window.location.replace(resumeData.resume_url)\n                        return false\n                    }\n                    remoteDraftResumeData = resumeData\n                    applyRemoteDraftBootstrap(resumeData)\n                    removeDraftResumeTokenFromAddress()\n                    return true\n                } catch (error) {\n                    remoteDraftResumeError = error?.response?.data?.message\n                        || error?.message\n                        || 'This secure resume link is invalid or has expired.'\n                    removeDraftResumeTokenFromAddress()\n                    window.alert(remoteDraftResumeError)\n                    const accountUrl = error?.response?.data?.account_url\n                    window.location.replace(accountUrl || window.location.origin)\n                    return false\n                }\n            }\n\n            \/\/ \u5728 setup \u4e2d\u76f4\u63a5\u8c03\u7528\uff0c\u786e\u4fdd\u5728 onMounted \u4e4b\u524d\u6267\u884c\n            let initPromise = Promise.resolve();\n            if (req) {\n                initPromise = getUserFormAndProduct(req);\n            } else if (draftResumeToken) {\n                initPromise = fetchRemoteEnrollmentDraft()\n            } else {\n                if (!successPreviewMode && !isSuccessRoute && (!getStoredText(\"InsuranceName\") || (!getStoredSchoolName() && !hasFreshSchoolNavigation && !isSchoolSelectionMode.value) || !getStoredText(\"monthly_price\"))) {\n                    window.location.href = window.location.origin;\n                }\n            }\n\n            const noPhone = ref(false)\n            const noAddress = ref(false)\n            const schoolAddressLoading = ref(false)\n            const schoolAddressVerified = ref(false)\n            const schoolAddressError = ref('')\n            \/\/\u5224\u65ad\u5f53\u524d\u662f\u4e2d\u6587\u8fd8\u662f\u82f1\u6587\n            const termsChecked = ref(true)\n            const path = window.location.pathname;\n            const lang = path.includes('\/zh') ? 'zh' : 'en';\n            const waiver = {\n                \"Rutgers University - New Brunswick\": \"https:\/\/www.goglobalsafe.com\/Rutgers-waiver-guide\",\n                \"University of Southern California\": \"https:\/\/www.goglobalsafe.com\/USC-waiver-guide\",\n                \"New York University\": \"https:\/\/www.goglobalsafe.com\/NYU-waiver-guide\",\n                \"University of Pennsylvania\": \"https:\/\/www.goglobalsafe.com\/UPenn-waiver-guide\",\n                \"Emory University\": \"https:\/\/www.goglobalsafe.com\/Emory-waiver-guide\",\n                \"University of California Berkeley (UCB)\": \"https:\/\/www.goglobalsafe.com\/UCB-waiver-guide\",\n                \"University of California Los Angeles (UCLA)\": \"https:\/\/www.goglobalsafe.com\/UCLA-waiver-guide\",\n                \"University of California Irvine (UCI)\": \"https:\/\/www.goglobalsafe.com\/UCI-waiver-guide\",\n                \"University of California Davis (UCD)\": \"https:\/\/www.goglobalsafe.com\/UCD-waiver-guide\",\n                \"Wesleyan University\": \"https:\/\/www.goglobalsafe.com\/Wesleyan-waiver-guide\",\n                \"University of Chicago\": \"https:\/\/www.goglobalsafe.com\/UChicago-waiver-guide\",\n                \"The New School\uff08Parsons\uff09\": \"https:\/\/www.goglobalsafe.com\/TNS-waiver-guide\",\n                \"University of Rochester\uff08UR\uff09\": \"https:\/\/www.goglobalsafe.com\/UR-waiver-guide\",\n                \"Carnegie Mellon University\uff08CMU\uff09\": \"https:\/\/www.goglobalsafe.com\/CMU-waiver-guide\",\n                \"Case Western Reserve University\": \"https:\/\/www.goglobalsafe.com\/CWRU-waiver-guide\",\n                \"Stanford University\": \"https:\/\/www.goglobalsafe.com\/Stanford-waiver-guide\",\n                \"Yale University\": \"https:\/\/www.goglobalsafe.com\/yale-waive-guide\/\",\n                \"Allegheny College\": \"https:\/\/www.goglobalsafe.com\/Allegheny-waiver-guide\",\n                \"Bunker Hill Community College\": \"https:\/\/www.goglobalsafe.com\/BHCC-waiver-guide\",\n                \"Harvard University\": \"https:\/\/www.goglobalsafe.com\/harvard-waive-guide\/\",\n                \"University of California Santa Barbara\uff08UCSB\uff09\": \"https:\/\/www.goglobalsafe.com\/UCSB-waiver-guide\",\n                \"University of California San Diego UCSD\": \"https:\/\/www.goglobalsafe.com\/UCSD-waiver-guide\"\n            };\n            const inputTitle = reactive({\n                'Start date': lang === 'zh' ? '\u5f00\u59cb\u65f6\u95f4' : \"Start date\",\n                'Period':lang === 'zh' ? '\u8d2d\u4e70\u6708\u4efd' : 'Period',\n                'End date':lang === 'zh' ? '\u7ed3\u675f\u65e5\u671f' : 'End date',\n                'Referral code':lang === 'zh' ? '\u63a8\u8350\u7801' : 'Referral code',\n                'Policy details':lang === 'zh' ? '\u4fdd\u9669\u8be6\u60c5' : 'Policy details',\n                'Total amount':lang === 'zh' ? '\u603b\u91d1\u989d' : 'Total amount',\n                'Email':lang === 'zh' ? '\u90ae\u7bb1' : 'Email',\n                'Date of birth':lang === 'zh' ? '\u51fa\u751f\u65e5\u671f' : 'Date of birth',\n                'Destination':lang === 'zh' ? '\u76ee\u7684\u5730' : 'Destination',\n                'State':lang === 'zh' ? '\u56fd\u5bb6' : 'State',\n                'Confirm order':lang === 'zh' ? '\u786e\u8ba4\u8ba2\u5355' : 'Confirm order',\n                'Buy':lang === 'zh' ? '\u8d2d\u4e70' : 'Buy',\n                'First name':lang === 'zh' ? '\u540d' : 'First name',\n                'Middle name':lang === 'zh' ? '\u4e2d\u95f4\u540d' : 'Middle name',\n                'Last name':lang === 'zh' ? '\u59d3' : 'Last name',\n                'Gender':lang === 'zh' ? '\u6027\u522b' : 'Gender',\n                'Nationality':lang === 'zh' ? '\u56fd\u7c4d' : 'Nationality',\n                'Passport':lang === 'zh' ? '\u62a4\u7167' : 'Passport',\n                'Phone in origin':lang === 'zh' ? '\u56fd\u7c4d\u7535\u8bdd' : 'Phone in origin',\n                'Phone in destination':lang === 'zh' ? '\u76ee\u7684\u5730\u7535\u8bdd' : 'Phone in destination',\n                'Visa':lang === 'zh' ? '\u7b7e\u8bc1\u7c7b\u578b' : 'Visa',\n                'Visa start date':lang === 'zh' ? '\u7b7e\u8bc1\u5f00\u59cb\u65f6\u95f4' : 'Visa start date',\n                'Visa end date':lang === 'zh' ? '\u7b7e\u8bc1\u7ed3\u675f\u65f6\u95f4' : 'Visa end date',\n                'is insurer':lang === 'zh' ? '\u7b7e\u8bc1\u7ed3\u675f\u65f6\u95f4' : 'Do you currently have health coverage with any other insurer\uff1f',\n                'Yes':lang === 'zh' ? '\u662f' : 'Yes',\n                'No':lang === 'zh' ? '\u5426' : 'No',\n                'Next':lang === 'zh' ? '\u4e0b\u4e00\u6b65' : 'Next',\n                'Insurance name':lang === 'zh' ? '\u4fdd\u9669\u540d\u79f0' : 'Insurance name',\n                'School':lang === 'zh' ? '\u5b66\u6821' : 'School',\n                'Student ID':lang === 'zh' ? '\u5b66\u53f7' : 'Student ID',\n                'Expected graduation date':lang === 'zh' ? '\u9884\u8ba1\u6bd5\u4e1a\u65e5\u671f' : 'Expected graduation date',\n                'Address 1':lang === 'zh' ? '\u5730\u57401' : 'Address 1',\n                'Address 2':lang === 'zh' ? '\u5730\u57402' : 'Address 2',\n                'City':lang === 'zh' ? '\u57ce\u5e02' : 'City',\n                'Postal code':lang === 'zh' ? '\u90ae\u653f\u7f16\u7801' : 'Postal code',\n                'Country':lang === 'zh' ? '\u56fd\u5bb6' : 'Country',\n                'State1':lang === 'zh' ? '\u57ce\u5e02' : 'State',\n                'Password':lang === 'zh' ? '\u5bc6\u7801' : 'Password',\n                'Confirm password':lang === 'zh' ? '\u786e\u8ba4\u5bc6\u7801' : 'Confirm password',\n                'WeChat pay': lang === 'zh' ? '\u5fae\u4fe1\u652f\u4ed8' : 'WeChat Pay',\n                'Recommended': lang === 'zh' ? '\u63a8\u8350' : 'Recommended',\n                'Wechat policy speed': lang === 'zh' ? '\u6700\u5feb\u6536\u5230\u60a8\u7684\u4fdd\u5355\u6587\u4ef6' : 'Fastest way to receive your policy documents',\n\n            })\n            const isBuying = ref(0)\n            const isPaymentProcessing = ref(false)\n            const isConfirmChecking = ref(false)\n            const password = ref('')\n            const confirmPassword = ref('')\n            const checkFormsCompleted = ref('1')\n            const graduateDate = ref('')\n            const dsState = ref('')\n            const selectedPayType = ref('wechat')\n            const yisihuiReviewCode = 'S25CNYSH-backend'\n            const yisihuiAllPaymentsCode = 'S25CNYSH-all'\n            const yisihuiPaymentModeStorageKey = 'yisihui_payment_mode'\n            const yisihuiSourceLabel = '\u6613\u601d\u6c47'\n            const blogTrackingSource = 'blog'\n            const getBlogTrackingId = () => {\n                const blogIdFromQuery = String(urlParamsOrigin.get('blog_id') || '').trim()\n                if (blogIdFromQuery) {\n                    return blogIdFromQuery\n                }\n                return String(localStorage.getItem('blog_id') || '').trim()\n            }\n            \/\/ Schools and plan-page sources on this list use WellAway's direct card form.\n            const WELLAWAY_DIRECT_SCHOOLS = Object.freeze([\n                {\n                    id: '1725',\n                    slug: 'university-of-southern-california-usc',\n                    nameTokens: [\n                        'UNIVERSITYOFSOUTHERNCALIFORNIAUSC',\n                        'UNIVERSITYOFSOUTHERNCALIFORNIA',\n                        'USC'\n                    ]\n                },\n                {\n                    id: '',\n                    slug: 'massachusetts-institute-of-technology-mit',\n                    nameTokens: [\n                        'MASSACHUSETTSINSTITUTEOFTECHNOLOGYMIT',\n                        'MASSACHUSETTSINSTITUTEOFTECHNOLOGY',\n                        'MIT'\n                    ],\n                    disableWechat: true\n                },\n                {\n                    id: '',\n                    slug: 'simmons-university',\n                    nameTokens: [\n                        'SIMMONSUNIVERSITY',\n                        'SIMMONS'\n                    ],\n                    disableWechat: true\n                },\n                {\n                    id: '',\n                    slug: 'kean-university',\n                    nameTokens: ['KEANUNIVERSITY', 'KEAN'],\n                    allowCoverageEndDateEdit: true,\n                    cardPaymentProvider: 'stripe'\n                },\n                {\n                    id: '',\n                    slug: 'royal-plans',\n                    nameTokens: []\n                },\n                {\n                    id: '',\n                    slug: 'aca',\n                    nameTokens: []\n                }\n            ])\n            const normalizeSchoolMatchToken = (value) => normalizeTextValue(value)\n                .replace(\/[^A-Za-z0-9]+\/g, '')\n                .toUpperCase()\n            const getWellAwayDirectSchool = () => {\n                const schoolId = normalizeSchoolIdValue(\n                    selectedSchoolId.value\n                    || getStoredSchoolId()\n                    || getStoredText('sid')\n                )\n                const schoolNameToken = normalizeSchoolMatchToken(\n                    school.value\n                    || schoolModeSource.value\n                    || getStoredSchoolName()\n                    || getStoredText('school_name')\n                )\n                const schoolSlug = normalizeTextValue(\n                    schoolSlugForModify.value || getStoredText('school_slug')\n                ).toLowerCase()\n\n                \/\/ Prefer explicit navigation identifiers over stale school names left in storage.\n                if (schoolId) {\n                    const schoolById = WELLAWAY_DIRECT_SCHOOLS.find((item) => item.id === schoolId)\n                    if (schoolById) return schoolById\n                }\n                if (schoolSlug) {\n                    const schoolBySlug = WELLAWAY_DIRECT_SCHOOLS.find((item) => item.slug === schoolSlug)\n                    if (schoolBySlug) return schoolBySlug\n                }\n                if (schoolNameToken) {\n                    return WELLAWAY_DIRECT_SCHOOLS.find((item) => item.nameTokens.includes(schoolNameToken)) || null\n                }\n                return null\n            }\n            const resolvedCardPaymentProvider = computed(() => {\n                const directSchool = getWellAwayDirectSchool()\n                return schoolCheckoutSettings.cardPaymentProvider\n                    || directSchool?.cardPaymentProvider\n                    || (directSchool ? 'wellaway' : 'stripe')\n            })\n            const isWellAwayDirectSchoolFlow = computed(() => resolvedCardPaymentProvider.value === 'wellaway')\n            const isWechatDisabledSchoolFlow = computed(() => {\n                if (schoolCheckoutSettings.paymentMethodMode) {\n                    return schoolCheckoutSettings.paymentMethodMode === 'card'\n                }\n                return Boolean(getWellAwayDirectSchool()?.disableWechat)\n            })\n            const isUscSchoolFlow = computed(() => getWellAwayDirectSchool()?.id === '1725')\n            const isYisihuiSourceMode = computed(() => {\n                const sourceValue = String(\n                    localStorage.getItem('yisihui_source')\n                    || new URLSearchParams(window.location.search).get('yisihui')\n                    || ''\n                ).trim()\n                return sourceValue === 'S25CNYSH'\n                    || sourceValue === yisihuiAllPaymentsCode\n                    || sourceValue === yisihuiSourceLabel\n            })\n            const isYisihuiReviewMode = computed(() => {\n                const reviewValue = String(\n                    localStorage.getItem('yisihui')\n                    || new URLSearchParams(window.location.search).get('yisihui')\n                    || ''\n                ).trim()\n                return reviewValue === yisihuiReviewCode\n            })\n            const isYisihuiAllPaymentsMode = computed(() => (\n                String(localStorage.getItem(yisihuiPaymentModeStorageKey) || '').trim() === 'all'\n                || String(new URLSearchParams(window.location.search).get('yisihui') || '').trim() === yisihuiAllPaymentsCode\n            ))\n            const isYshlulu = computed(() => !!localStorage.getItem(\"yshlulu\"))\n            const progress = reactive({\n                0: 'Insurance information',\n                1: 'Personal information',\n                2: 'School information',\n                3: 'Address',\n                4: 'Create an account',\n                5: 'Payment options',\n                6: 'Accept the terms'\n            })\n            const stepValidationState = reactive(\n                Object.values(progress).reduce((states, stepName) => {\n                    states[stepName] = 'default'\n                    return states\n                }, {})\n            )\n            const stepValidationSnapshots = {}\n            const nowForm = ref('Insurance Information')\n            \/\/ \u6b65\u9aa4\u4e00\n            \/\/ \u73b0\u5728\u65f6\u95f4\n            const now = new Date();\n            const nowTime = now.getFullYear() + '-' +\n                ('0' + (now.getMonth() + 1)).slice(-2) + '-' +\n                ('0' + now.getDate()).slice(-2) + ' ' +\n                ('0' + now.getHours()).slice(-2) + ':' +\n                ('0' + now.getMinutes()).slice(-2) + ':' +\n                ('0' + now.getSeconds()).slice(-2);\n            \/\/ \u5f00\u59cb\u65e5\u671f\u548c\u7ed3\u675f\u65e5\u671f\u6570\u636e\n            const startDefault=ref()\n            const endDefault=ref()\n            const selectedMonths = ref(0)\n            const isCoverageFromSchool = ref(false)\n            const SCHOOL_REQUIRED_PERIOD_LABEL = 'School Required Coverage Period'\n            const NYU_LLM_PERIOD_VALUE = 'nyu_llm_program_2026'\n            const NYU_LLM_COVERAGE_START = '2026-07-21'\n            const NYU_LLM_COVERAGE_END = '2027-08-20'\n            const isStratFormSchool = ref(false)\n            const isNotElite = ref(true)\/\/\u63a7\u5236Elite\u7cfb\u5217\n            const renewalRule = ref(null)\n            const renewalCode = ref('')\n            \/\/ Coverage can be backdated to the first day of the previous month,\n            \/\/ while new applications still default to tomorrow.\n            const minStartDate = ref(dayjs().subtract(1, 'month').startOf('month').format('YYYY-MM-DD'))\n            const defaultCoverageStartDate = dayjs().add(1, 'day').format('YYYY-MM-DD')\n            const isFixed12Month = ref(false)\n            \/**\n             * \u6839\u636e value \u8fd4\u56de\u5bf9\u5e94\u7684 key\n             * @param {string} value - \u8981\u67e5\u627e\u7684 value\n             * @returns {string | number | undefined} \u5bf9\u5e94\u7684 key\uff0c\u672a\u627e\u5230\u8fd4\u56de undefined\n             *\/\n            const getProgressKey = (value) => {\n                const entry = Object.entries(progress).find(([_, val]) => val === value);\n                return entry ? entry[0] : undefined;\n            };\n            const isMobileDevice = ref(false)\n            const checkMobileDevice = () => {\n                const userAgent = navigator.userAgent.toLowerCase(); \/\/ \u4fee\u6b63\u62fc\u5199\uff1anavigator \u4e0d\u662f navigator\n                isMobileDevice.value = (\n                    typeof window.orientation !== 'undefined' ||\n                    \/android|webos|iphone|ipad|ipod|blackberry|windows phone\/i.test(userAgent) ||\n                    window.innerWidth <= 768\n                );\n            };\n            const inputDataOne = reactive(\n                [\n                    {\n                        type: 'date',\n                        name: 'Start date',\n                        id: \"startDate\",\n                        required: true,\n                        errMessage: 'Start date is required',\n                        value: \"\"\n                    },\n                    {\n                        type: 'date',\n                        name: 'End date',\n                        id: \"endDate\",\n                        required: true,\n                        errMessage: 'End date is required',\n                        value: \"\"\n                    }\n                ]\n            )\n            \/\/\u9009\u62e9\u652f\u4ed8\u65b9\u5f0f\n            const handlePayTypeChange = (event) => {\n                if (event.target.type === 'radio') {\n                    selectedPayType.value = event.target.value\n                }\n            };\n            \/\/ \u5c31\u662f\u5f00\u59cb\u65e5\u671f\u7684\u6700\u5c0f\u503c,\u4e0b\u4e2a\u6708 1 \u53f7\n            const getNextMonthFirstDate = computed(() => {\n                const currentDate = new Date();\n                currentDate.setMonth(currentDate.getMonth() + 1);\n                currentDate.setDate(1);\n                return \"2025-01-01\";\n            });\n            \/\/\u81ea\u52a8\u586b\u7535\u8bdd\n            const noPhoneClick = ()=> {\n\n                if (!noPhone.value) {\n                    inputDataThree[1].value = \"+1 5873740835\"\n                } else {\n\n                }\n            }\n            const noSchool = () => {\n                \/\/\u90ae\u4ef6\u68c0\u67e5\n                window.apiClient.post('https:\/\/agent.goglobalsafe.com\/api\/v1\/Enrollment\/noAddress',{\n                    school: normalizeSchoolNameForSubmission(school.value)\n                },{\n                    headers:{\n                        \"X-Authentication-Key\": \" HSxZK8nHniLzZtv0Qtfk87wvNvXpJZ5K\",\n                    }\n                })\n            }\n            const applyVerifiedSchoolAddress = (schoolData) => {\n                const schoolAddress = {\n                    address1: normalizeTextValue(schoolData?.us_address),\n                    city: normalizeTextValue(schoolData?.us_city),\n                    state: normalizeTextValue(schoolData?.us_state),\n                    postalCode: normalizeTextValue(schoolData?.us_zipcode)\n                }\n                if (!schoolAddress.address1 || !schoolAddress.city || !schoolAddress.state || !schoolAddress.postalCode) {\n                    return false\n                }\n                destinationData[0].value = schoolAddress.address1\n                destinationData[1].value = ''\n                destinationData[2].value = schoolAddress.city\n                dsState.value = schoolAddress.state\n                destinationData[3].value = schoolAddress.postalCode\n                schoolAddressVerified.value = true\n                schoolAddressError.value = ''\n                sanitizeAddressCollection()\n                return true\n            }\n            const useManualDestinationAddress = () => {\n                noAddress.value = false\n                schoolAddressLoading.value = false\n                schoolAddressVerified.value = false\n            }\n            \/\/ \u81ea\u52a8\u586b\u7f8e\u56fd\u5730\u5740\u3002\u53ea\u6709\u63a5\u53e3\u786e\u8ba4\u8fc7\u7684\u5b66\u6821\u5730\u5740\u624d\u80fd\u663e\u793a\u4e3a\u201c\u5b66\u6821\u5730\u5740\u201d\u3002\n            const noAddressClick = async () => {\n                if (!noAddress.value) {\n                    useManualDestinationAddress()\n                    return\n                }\n                schoolAddressLoading.value = true\n                schoolAddressVerified.value = false\n                schoolAddressError.value = ''\n                try {\n                    const currentSchoolInformation = schoolInformation.value || await schoolExist()\n                    if (applyVerifiedSchoolAddress(currentSchoolInformation)) {\n                        return\n                    }\n                    noAddress.value = false\n                    schoolAddressError.value = lang === 'zh'\n                        ? '\u6682\u65f6\u65e0\u6cd5\u83b7\u53d6\u5b66\u6821\u5730\u5740\uff0c\u8bf7\u786e\u8ba4\u6216\u586b\u5199\u4f60\u7684\u7f8e\u56fd\u5730\u5740\u3002'\n                        : \"We couldn't load your school's address. Please confirm or enter your U.S. address.\"\n                    scrollToElement('noAddress', schoolAddressError.value)\n                    noSchool()\n                } finally {\n                    schoolAddressLoading.value = false\n                }\n            }\n            \/\/ \u7ed3\u675f\u65e5\u671f\u6700\u5c0f\u503c\n            const getMinEndDate = computed(() => {\n                \/\/ \u83b7\u53d6\u5f53\u524d\u65e5\u671f\n                const currentDate = new Date();\n                \/\/ \u8ba1\u7b97\u4e0b\u4e2a\u6708\u7684\u7b2c\u4e00\u5929\n                const nextMonth = currentDate.getMonth() + 1;  \/\/ \u83b7\u53d6\u4e0b\u4e2a\u6708\u7684\u6708\u4efd\n                const firstDayOfNextMonth = new Date(currentDate.getFullYear(), nextMonth, 1);\n                \/\/ \u5728\u4e0b\u4e2a\u6708\u7b2c\u4e00\u5929\u57fa\u7840\u4e0a\u52a0200\u5929\n                firstDayOfNextMonth.setDate(firstDayOfNextMonth.getDate() + 201);\n                \/\/ \u8fd4\u56de\u683c\u5f0f\u5316\u540e\u7684\u65e5\u671f\uff0cISO\u5b57\u7b26\u4e32\u5e76\u53bb\u6389\u65f6\u95f4\u90e8\u5206\n                \/\/ return firstDayOfNextMonth.toISOString().split('T')[0];\n                return \"2025-06-01\"\n            });\n            \/\/ \u81ea\u5df1\u751f\u65e5\u7684\u6700\u5c0f\u503c\uff0c\u5f53\u524d\u65e5\u671f\u51cf\u53bb17\u5e74\uff0c\u6700\u5c0f17\u5c81\n            const minDate = computed(() => {\n                const today = new Date();\n                today.setFullYear(today.getFullYear() - 17); \/\/ \u5f53\u524d\u65e5\u671f\u51cf\u53bb17\u5e74\n                return today.toISOString().split('T')[0]; \/\/ \u8fd4\u56de 'YYYY-MM-DD' \u683c\u5f0f\n            });\n            \/\/ \u81ea\u5df1\u751f\u65e5\u7684\u6700\u5927\u503c\uff0c\u5f53\u524d\u65e5\u671f\u51cf\u53bb45\u5e74\uff0c\u6700\u592745\u5c81\n            const maxDate = computed(() => {\n                const today = new Date();\n                today.setFullYear(today.getFullYear() - 45); \/\/ \u5f53\u524d\u65e5\u671f\u51cf\u53bb17\u5e74\n                return today.toISOString().split('T')[0]; \/\/ \u8fd4\u56de 'YYYY-MM-DD' \u683c\u5f0f\n            });\n            \/\/ \u914d\u5076\u751f\u65e5\u7684\u6700\u5927\u503c\uff0c\u5f53\u524d\u65e5\u671f\u51cf\u53bb18\u5e74\uff0c18\u5c81\n            const spouseMaxDate = computed(() => {\n                const today = new Date();\n                today.setFullYear(today.getFullYear() - 18); \/\/ \u5f53\u524d\u65e5\u671f\u51cf\u53bb17\u5e74\n                return today.toISOString().split('T')[0]; \/\/ \u8fd4\u56de 'YYYY-MM-DD' \u683c\u5f0f\n            });\n            \/\/\u5c55\u5f00\u6536\u8d77\u5185\u5bb9\n            const toggleDetails = (id, forceOpen = false) =>  {\n                const content = document.getElementById(id);\n                if (!content) return;\n                const title = content.previousElementSibling;\n                const section = content.closest('.form-step');\n                if (content.classList.contains('expanded')) {\n                    if (forceOpen) return;\n                    \/\/ \u6536\u8d77\n                    content.classList.remove('expanded');\n                    if (title) title.style.removeProperty('display');\n                    if (section) {\n                        section.classList.remove('is-open');\n                        section.classList.add('is-collapsed');\n                    }\n                } else {\n                    \/\/ \u5c55\u5f00\n                    document.querySelectorAll('.ggs-collapse-content').forEach(el => {\n                        el.classList.remove('expanded');\n                        const prevTitle = el.previousElementSibling;\n                        if (prevTitle) prevTitle.style.removeProperty('display');\n                        const previousSection = el.closest('.form-step');\n                        if (previousSection) {\n                            previousSection.classList.remove('is-open');\n                            previousSection.classList.add('is-collapsed');\n                        }\n                    });\n                    nowForm.value = id\n                    content.classList.add('expanded');\n                    if (title) title.style.setProperty('display', 'none', 'important');\n                    if (section) {\n                        section.classList.remove('is-collapsed');\n                        section.classList.add('is-open');\n                    }\n                    requestAnimationFrame(() => {\n                        (section || content).scrollIntoView({\n                            behavior: 'smooth',\n                            block: 'start'\n                        });\n                    });\n\n                    \/\/ \u7ed1\u5b9a\u7f16\u8f91\u6309\u94ae\u4e8b\u4ef6\uff08\u53ea\u9700\u8981\u7ed1\u5b9a\u4e00\u6b21\uff09\n                    if (!content._editBtnBound) {\n                        const editBtn = content.querySelector('.edit-btn');\n                        if (editBtn) {\n                            editBtn.addEventListener('click', (e) => {\n                                e.stopPropagation();\n                                content.classList.remove('expanded');\n                                if (title) title.style.removeProperty('display');\n                            });\n                        }\n                        content._editBtnBound = true;\n                    }\n                }\n            }\n            let html2canvasLoader = null\n            const waitForPaint = () => new Promise((resolve) => {\n                requestAnimationFrame(() => requestAnimationFrame(resolve))\n            })\n            const ensureHtml2Canvas = () => {\n                if (window.html2canvas) {\n                    return Promise.resolve(window.html2canvas)\n                }\n                if (html2canvasLoader) {\n                    return html2canvasLoader\n                }\n                const sources = [\n                    '\/wp-content\/plugins\/elementor\/assets\/lib\/html2canvas\/js\/html2canvas.min.js',\n                    'https:\/\/cdn.jsdelivr.net\/npm\/html2canvas@1.4.1\/dist\/html2canvas.min.js'\n                ]\n                html2canvasLoader = sources.reduce((promise, src) => {\n                    return promise.catch(() => new Promise((resolve, reject) => {\n                        const script = document.createElement('script')\n                        script.src = src\n                        script.async = true\n                        script.onload = () => window.html2canvas ? resolve(window.html2canvas) : reject(new Error('html2canvas not available'))\n                        script.onerror = () => reject(new Error(`html2canvas load failed: ${src}`))\n                        document.head.appendChild(script)\n                    }))\n                }, Promise.reject())\n                return html2canvasLoader\n            }\n            const STEPALL_SCREENSHOT_MAX_PIXELS = 10000000\n            const STEPALL_SCREENSHOT_MAX_DATA_URL_LENGTH = 2500000\n            const encodeStepallScreenshot = (sourceCanvas) => {\n                let outputCanvas = sourceCanvas\n\n                for (let resizeAttempt = 0; resizeAttempt < 5; resizeAttempt++) {\n                    for (let quality = 0.82; quality >= 0.48; quality -= 0.08) {\n                        const dataUrl = outputCanvas.toDataURL('image\/jpeg', quality)\n                        if (dataUrl.length <= STEPALL_SCREENSHOT_MAX_DATA_URL_LENGTH) {\n                            return dataUrl\n                        }\n                    }\n\n                    const resizedCanvas = document.createElement('canvas')\n                    resizedCanvas.width = Math.max(1, Math.floor(outputCanvas.width * 0.82))\n                    resizedCanvas.height = Math.max(1, Math.floor(outputCanvas.height * 0.82))\n                    const context = resizedCanvas.getContext('2d', { alpha: false })\n                    if (!context) break\n                    context.fillStyle = '#fafaf9'\n                    context.fillRect(0, 0, resizedCanvas.width, resizedCanvas.height)\n                    context.drawImage(outputCanvas, 0, 0, resizedCanvas.width, resizedCanvas.height)\n                    outputCanvas = resizedCanvas\n                }\n\n                throw new Error('The page screenshot is too large to upload safely.')\n            }\n            const captureStepallScreenshot = async () => {\n                const transparentImage = 'data:image\/gif;base64,R0lGODlhAQABAIAAAAAAAP\/\/\/ywAAAAAAQABAAACAUwAOw=='\n                const body = document.body\n                const html = document.documentElement\n                const captureTarget = body\n                const modal = document.getElementById('myModal')\n                const collapseNodes = Array.from(document.querySelectorAll('.ggs-collapse-content'))\n                const previousClasses = collapseNodes.map((node) => [node, node.className])\n                const previousBodyClass = body.className\n                const previousBodyOverflow = body.style.overflow\n                const previousHtmlOverflow = html.style.overflow\n                const previousModalDisplay = modal ? modal.style.display : ''\n                const previousLoading = loading.value\n                const previousBuying = isBuying.value\n                const previousScrollX = window.scrollX\n                const previousScrollY = window.scrollY\n                const brokenImageSources = new Set(Array.from(body.querySelectorAll('img'))\n                    .filter((img) => img.src && (!img.complete || img.naturalWidth === 0))\n                    .map((img) => img.currentSrc || img.src))\n\n                try {\n                    const html2canvasLib = await ensureHtml2Canvas()\n                    loading.value = true\n                    isBuying.value = 1\n                    await nextTick()\n                    await waitForPaint()\n                    if (document.fonts && document.fonts.ready) {\n                        await Promise.race([\n                            document.fonts.ready.catch(() => {}),\n                            new Promise((resolve) => setTimeout(resolve, 3000))\n                        ])\n                    }\n                    const captureWidth = Math.max(captureTarget.scrollWidth, captureTarget.clientWidth, 1200)\n                    const captureHeight = Math.max(captureTarget.scrollHeight, captureTarget.clientHeight)\n                    const renderScale = Math.min(\n                        1,\n                        Math.max(0.35, Math.sqrt(STEPALL_SCREENSHOT_MAX_PIXELS \/ (captureWidth * captureHeight)))\n                    )\n                    const canvas = await html2canvasLib(captureTarget, {\n                        backgroundColor: '#fafaf9',\n                        useCORS: true,\n                        allowTaint: false,\n                        foreignObjectRendering: false,\n                        imageTimeout: 5000,\n                        logging: false,\n                        scale: renderScale,\n                        scrollX: 0,\n                        scrollY: 0,\n                        windowWidth: captureWidth,\n                        windowHeight: captureHeight,\n                        onclone: (clonedDoc) => {\n                            const clonedBody = clonedDoc.body\n                            const clonedHtml = clonedDoc.documentElement\n                            const clonedModal = clonedDoc.getElementById('myModal')\n                            Array.from(clonedDoc.querySelectorAll('.ggs-collapse-content')).forEach((node) => {\n                                node.classList.add('expanded')\n                                node.style.setProperty('display', 'block', 'important')\n                                node.style.setProperty('height', 'auto', 'important')\n                                node.style.setProperty('max-height', 'none', 'important')\n                                node.style.setProperty('overflow', 'visible', 'important')\n                                node.style.setProperty('opacity', '1', 'important')\n                                node.style.setProperty('visibility', 'visible', 'important')\n                                node.style.setProperty('transform', 'none', 'important')\n                                node.style.setProperty('animation', 'none', 'important')\n\n                                const section = node.closest('.form-step')\n                                if (section) {\n                                    section.classList.add('is-open')\n                                    section.classList.remove('is-collapsed')\n                                }\n                            })\n                            if (clonedBody) {\n                                clonedBody.classList.add('stepall-capture-mode')\n                                clonedBody.style.overflow = 'visible'\n                            }\n                            if (clonedHtml) {\n                                clonedHtml.style.overflow = 'visible'\n                            }\n                            if (clonedModal) {\n                                clonedModal.style.display = 'none'\n                            }\n                            const style = clonedDoc.createElement('style')\n                            style.textContent = `\n                                html, body {\n                                    background: #fafaf9 !important;\n                                    color: #111827 !important;\n                                    color-scheme: light !important;\n                                    overflow: visible !important;\n                                }\n                                body > .back-to-top,\n                                body > .float,\n                                body > .floating,\n                                body > .sticky,\n                                body > .toolbar {\n                                    display: none !important;\n                                }\n                                #app {\n                                    width: 100% !important;\n                                    max-width: 100% !important;\n                                    margin: 0 !important;\n                                }\n                                body.stepall-capture-mode #app.ggs-us-application-v4 .form-step > .form-card > .msg-content,\n                                body.stepall-capture-mode #app.ggs-us-application-v4 .form-step > .form-card > .us-v4-persistent-edit {\n                                    display: none !important;\n                                }\n                                body.stepall-capture-mode #app.ggs-us-application-v4 .ggs-collapse-content,\n                                body.stepall-capture-mode #app.ggs-us-application-v4 .ggs-collapse-content.expanded,\n                                body.stepall-capture-mode #app.ggs-us-application-v4 .form-card__content,\n                                body.stepall-capture-mode #app.ggs-us-application-v4 .field-grid,\n                                body.stepall-capture-mode #app.ggs-us-application-v4 .field,\n                                body.stepall-capture-mode #app.ggs-us-application-v4 .field-control {\n                                    height: auto !important;\n                                    max-height: none !important;\n                                    overflow: visible !important;\n                                    opacity: 1 !important;\n                                    visibility: visible !important;\n                                    transform: none !important;\n                                    animation: none !important;\n                                    transition: none !important;\n                                }\n                                body.stepall-capture-mode #app.ggs-us-application-v4 .ggs-collapse-content,\n                                body.stepall-capture-mode #app.ggs-us-application-v4 .ggs-collapse-content.expanded {\n                                    display: block !important;\n                                    width: 100% !important;\n                                }\n                                body.stepall-capture-mode #app.ggs-us-application-v4 input,\n                                body.stepall-capture-mode #app.ggs-us-application-v4 select,\n                                body.stepall-capture-mode #app.ggs-us-application-v4 textarea {\n                                    opacity: 1 !important;\n                                    visibility: visible !important;\n                                    color: #14213d !important;\n                                    -webkit-text-fill-color: #14213d !important;\n                                }\n                                #app .msg-content,\n                                #app .result,\n                                #app .edit-result,\n                                #app .per-msg {\n                                    height: auto !important;\n                                    min-height: 0 !important;\n                                }\n                                .modal, [v-cloak] {\n                                    display: none !important;\n                                }\n                                .uc-global-loading {\n                                    display: none !important;\n                                }\n                                *, *::before, *::after {\n                                    background-image: none !important;\n                                    border-color: #d1d5db !important;\n                                    box-shadow: none !important;\n                                    outline-color: #d1d5db !important;\n                                    text-shadow: none !important;\n                                    filter: none !important;\n                                }\n                                a {\n                                    color: #1558DA !important;\n                                }\n                                .confirm-btn,\n                                .buy-btn,\n                                .next-btn,\n                                .modify-plan-btn,\n                                .wechat-recommended-tag,\n                                .wechat-recommended-tag * {\n                                    text-decoration: none !important;\n                                    text-shadow: none !important;\n                                }\n                                .confirm-btn {\n                                    background: #D9D9D9 !important;\n                                    color: #111827 !important;\n                                }\n                                .buy-btn {\n                                    background: #FFD146 !important;\n                                    color: #111827 !important;\n                                }\n                                .next-btn {\n                                    background: #1558DA !important;\n                                    color: #FFFFFF !important;\n                                }\n                                .modify-plan-btn {\n                                    background: #FFFFFF !important;\n                                    color: #1558DA !important;\n                                    border: 1px solid #1558DA !important;\n                                }\n                                .wechat-recommended-tag {\n                                    background: rgba(255, 208, 70, 0.18) !important;\n                                    color: #8a5d00 !important;\n                                }\n                                .wechat-recommended-star {\n                                    color: #f59e0b !important;\n                                }\n                                .pay-option-title-row p {\n                                    color: #1E293B !important;\n                                }\n                                .pay-option-desc {\n                                    color: #7E8F9A !important;\n                                }\n                                input, select, textarea, .per-content, .edit-content {\n                                    background-color: #ffffff !important;\n                                }\n                                img, svg, svg * {\n                                    background-color: transparent !important;\n                                    fill: #111827 !important;\n                                    stroke: #111827 !important;\n                                }\n                            `\n                            clonedDoc.head.appendChild(style)\n                            const sourceControls = Array.from(captureTarget.querySelectorAll('input, select, textarea'))\n                            const clonedControls = Array.from(clonedBody.querySelectorAll('input, select, textarea'))\n                            sourceControls.forEach((source, index) => {\n                                const target = clonedControls[index]\n                                if (!target || target.tagName !== source.tagName || target.type !== source.type) return\n\n                                if (source instanceof HTMLInputElement && (source.type === 'checkbox' || source.type === 'radio')) {\n                                    target.checked = source.checked\n                                    target.toggleAttribute('checked', source.checked)\n                                    return\n                                }\n\n                                target.value = source.value\n                                if (target.tagName === 'SELECT') {\n                                    Array.from(target.options).forEach((option) => {\n                                        option.selected = option.value === source.value\n                                    })\n                                } else {\n                                    target.setAttribute('value', source.value)\n                                }\n                            })\n                            Array.from(clonedDoc.querySelectorAll('picture source')).forEach((source) => {\n                                source.removeAttribute('srcset')\n                                source.removeAttribute('sizes')\n                            })\n                            Array.from(clonedDoc.querySelectorAll('img')).forEach((img) => {\n                                const src = img.currentSrc || img.src\n                                img.removeAttribute('srcset')\n                                img.removeAttribute('sizes')\n                                img.removeAttribute('loading')\n                                if (!src || brokenImageSources.has(src)) {\n                                    img.setAttribute('src', transparentImage)\n                                }\n                            })\n                            Array.from(clonedDoc.querySelectorAll('*')).forEach((node) => {\n                                if (!node.style || !node.style.setProperty) return\n                                node.style.setProperty('border-color', '#d1d5db', 'important')\n                                node.style.setProperty('box-shadow', 'none', 'important')\n                                node.style.setProperty('outline-color', '#d1d5db', 'important')\n                                node.style.setProperty('text-shadow', 'none', 'important')\n                                node.style.setProperty('filter', 'none', 'important')\n                            })\n                            Array.from(clonedDoc.querySelectorAll('.per-msg')).forEach((section) => {\n                                const expanded = section.querySelector(':scope > .ggs-collapse-content')\n                                const summary = section.querySelector(':scope > .msg-content')\n                                if (expanded && summary) {\n                                    summary.style.display = 'none'\n                                }\n                            })\n                            const footerNode = clonedDoc.querySelector('footer, .site-footer, .elementor-location-footer, #colophon, .footer')\n                            const appNode = clonedDoc.querySelector('#app')\n                            if (footerNode && appNode) {\n                                const appRect = appNode.getBoundingClientRect()\n                                const footerRect = footerNode.getBoundingClientRect()\n                                const gap = footerRect.top - appRect.bottom\n                                if (gap > 80) {\n                                    footerNode.style.marginTop = `-${Math.min(gap - 24, 260)}px`\n                                }\n                            }\n                        }\n                    })\n                    return encodeStepallScreenshot(canvas)\n                } catch (error) {\n                    console.warn('StepAll screenshot capture failed:', error)\n                    return ''\n                } finally {\n                    loading.value = previousLoading\n                    isBuying.value = previousBuying\n                    body.className = previousBodyClass\n                    body.style.overflow = previousBodyOverflow\n                    html.style.overflow = previousHtmlOverflow\n                    if (modal) {\n                        modal.style.display = previousModalDisplay\n                    }\n                    previousClasses.forEach(([node, className]) => {\n                        node.className = className\n                    })\n                    if (captureTarget.classList) {\n                        captureTarget.classList.remove('stepall-capture-target')\n                    }\n                    body.classList.remove('stepall-capture-mode')\n                    window.scrollTo(previousScrollX, previousScrollY)\n                }\n            }\n            const referralCode = ref(\"\")\n            const applyReferralCodeByPriority = (reqReferralCode = '') => {\n                const normalizedReqReferral = normalizeTextValue(reqReferralCode)\n                const storedUsOrderCode = String(localStorage.getItem('us_order_code') || '').trim()\n                const storedGlobalRef = String(localStorage.getItem('global_agent_ref') || '').trim()\n                const fallbackStoredCode = storedUsOrderCode || storedGlobalRef\n                let finalCode = ''\n                if (referralCodeFromUrl) {\n                    finalCode = referralCodeFromUrl\n                } else if (shouldFillReferralFromReq && normalizedReqReferral) {\n                    finalCode = normalizedReqReferral\n                } else if (shouldFillReferralFromReq && referralCode.value) {\n                    \/\/ Keep the code already filled from the enrollment response.\n                    finalCode = referralCode.value\n                } else if (!currentReq) {\n                    finalCode = fallbackStoredCode\n                } else {\n                    finalCode = ''\n                }\n                referralCode.value = finalCode\n                if (finalCode) {\n                    localStorage.setItem('us_order_code', finalCode)\n                } else if (currentReq && !referralCodeFromUrl && !shouldFillReferralFromReq) {\n                    localStorage.removeItem('us_order_code')\n                }\n            }\n            const syncReferralFromStoredCode = () => {\n                if (currentReq && !referralCodeFromUrl && !shouldFillReferralFromReq) {\n                    referralCode.value = ''\n                    localStorage.removeItem('us_order_code')\n                    return\n                }\n                const storedUsOrderCode = String(localStorage.getItem('us_order_code') || '').trim()\n                const storedGlobalRef = String(localStorage.getItem('global_agent_ref') || '').trim()\n                const finalCode = storedUsOrderCode || storedGlobalRef\n                if (!finalCode) return\n                referralCode.value = finalCode\n                localStorage.setItem('us_order_code', finalCode)\n            }\n            const PROMO_MIN_MONTHS = 6\n            const PROMO_DURATION_MESSAGE = 'This promotion is only available for plans with a coverage period longer than 6 months.'\n            const isDurationLimitedPromoCode = (rawCode = '') => {\n                const normalizedCode = String(rawCode || '').trim().toUpperCase()\n                return normalizedCode.startsWith('GGSRENEW') || normalizedCode.startsWith('GGSEARLYBIRD')\n            }\n            const isCurrentRenewalRewardCode = (rawCode = '') => {\n                const normalizedCode = String(rawCode || '').trim().toUpperCase()\n                const currentBannerCode = String(renewalCode.value || '').trim().toUpperCase()\n                return Boolean(currentReq && currentBannerCode && normalizedCode && normalizedCode === currentBannerCode)\n            }\n            const getCoverageMonthsForPromoRule = () => {\n                const startDate = String(inputDataOne[0]?.value || '').trim()\n                const endDate = String(inputDataOne[1]?.value || '').trim()\n                if (!startDate || !endDate) {\n                    return 0\n                }\n                try {\n                    const exactMonths = calculateMonthDifference2(startDate, endDate)\n                    if (Number.isFinite(exactMonths) && exactMonths > 0) {\n                        return exactMonths\n                    }\n                } catch (e) {}\n                try {\n                    const fallbackMonths = calculateMonthDifference(startDate, endDate)\n                    if (Number.isFinite(fallbackMonths) && fallbackMonths > 0) {\n                        return fallbackMonths\n                    }\n                } catch (e) {}\n                return 0\n            }\n            const clearRejectedReferralCode = () => {\n                const rejectedCode = String(referralCode.value || '').trim()\n                referralCode.value = ''\n                ;['us_order_code', 'global_agent_ref'].forEach((key) => {\n                    if (String(localStorage.getItem(key) || '').trim() === rejectedCode) {\n                        localStorage.removeItem(key)\n                    }\n                })\n                try {\n                    const url = new URL(window.location.href)\n                    if (String(url.searchParams.get('code') || '').trim() === rejectedCode) {\n                        url.searchParams.delete('code')\n                        window.history.replaceState({}, '', `${url.pathname}${url.search}${url.hash}`)\n                    }\n                } catch (error) {}\n            }\n            const isRejectedReferralCodeError = (source) => {\n                const message = String(\n                    source?.response?.data?.message\n                    || source?.data?.message\n                    || source?.message\n                    || ''\n                )\n                return Boolean(referralCode.value) && \/(?:invalid.*code|code.*(?:invalid|expired)|referral.*(?:invalid|expired))\/i.test(message)\n            }\n            let pendingReferralValidation = null\n            let pendingReferralValidationKey = ''\n            let referralValidationSequence = 0\n            let referralValidationCache = null\n            let stepNavigationSequence = 0\n            const getReferralValidationKey = (code) => [\n                String(code || '').trim().toUpperCase(),\n                String(inputDataTwo[6].value || '').trim().toLowerCase(),\n                String(inputDataOne[0].value || '').trim(),\n                String(inputDataOne[1].value || '').trim()\n            ].join('|')\n            \/\/ type: 1 = blur, 2 = next\/confirm. Navigation is handled by the caller.\n            const codeExist = async (code, type, forceRefresh = false) => {\n                const normalizedCode = String(code || referralCode.value || '').trim()\n                referralCode.value = normalizedCode\n                if (!normalizedCode) {\n                    return true\n                }\n                if (isDurationLimitedPromoCode(normalizedCode)) {\n                    const coverageMonths = getCoverageMonthsForPromoRule()\n                    if (coverageMonths < PROMO_MIN_MONTHS) {\n                        clearRejectedReferralCode()\n                        scrollToElement('referralCode', PROMO_DURATION_MESSAGE)\n                        return false\n                    }\n                    if (isCurrentRenewalRewardCode(normalizedCode)) {\n                        scrollToElement('referralCode', 'Renew code has been applied successfully.', 200)\n                        return true\n                    }\n                }\n                const validationKey = getReferralValidationKey(normalizedCode)\n                const now = Date.now()\n                if (!forceRefresh && referralValidationCache\n                    && referralValidationCache.key === validationKey\n                    && referralValidationCache.expiresAt > now) {\n                    return referralValidationCache.valid\n                }\n                if (!forceRefresh && pendingReferralValidation && pendingReferralValidationKey === validationKey) {\n                    return pendingReferralValidation\n                }\n\n                const requestSequence = ++referralValidationSequence\n                pendingReferralValidationKey = validationKey\n                const validationRequest = window.apiClient.post('https:\/\/agent.goglobalsafe.com\/api\/v1\/email\/code_exist',{\n                    code: normalizedCode,\n                    email: inputDataTwo[6].value,\n                    coverageStartDate: inputDataOne[0].value,\n                    coverageEndDate: inputDataOne[1].value\n                },{\n                    headers:{\n                        \"X-Authentication-Key\": \"HSxZK8nHniLzZtv0Qtfk87wvNvXpJZ5K\",\n                    }\n                }).then(response => {\n                    if (requestSequence !== referralValidationSequence\n                        || getReferralValidationKey(referralCode.value) !== validationKey) {\n                        return false\n                    }\n                    const responseMessage = String(response.data?.message || '')\n                    const explicitlyInvalid = response.data?.success === false\n                        || Number(response.data?.status || 0) >= 400\n                        || \/(?:invalid.*code|code.*(?:invalid|expired))\/i.test(responseMessage)\n                    if (response.status === 200 && !explicitlyInvalid) {\n                        referralValidationCache = {\n                            key: validationKey,\n                            valid: true,\n                            expiresAt: Date.now() + 30000\n                        }\n                        scrollToElement('referralCode', response.data?.message || 'Valid. Your code has been applied successfully.', 200)\n                        return true\n                    } else {\n                        scrollToElement('referralCode', response.data?.message || 'Invalid code.', response.data?.status || response.status)\n                        clearRejectedReferralCode()\n                        return false\n                    }\n                }).catch(error => {\n                    if (requestSequence !== referralValidationSequence\n                        || getReferralValidationKey(referralCode.value) !== validationKey) {\n                        return false\n                    }\n                    \/\/ console.error('\u90ae\u7bb1\u8bf7\u6c42\u51fa\u9519:', error);\n                    if (error.response) {\n                        \/\/ console.log('\u9519\u8bef\u72b6\u6001\u7801:', error.response.status); \/\/ 4xx\/5xx\n                        scrollToElement('referralCode', error.response.data?.message || 'Invalid code.', error.response.data?.status || error.response.status)\n                        clearRejectedReferralCode()\n                        return false\n                        \/\/ console.log('\u9519\u8bef\u6570\u636e:', error.response.data.message); \/\/ \u540e\u7aef\u8fd4\u56de\u7684\u9519\u8bef\u4fe1\u606f\n                    }\n                    return false\n                }).finally(() => {\n                    if (pendingReferralValidation === validationRequest) {\n                        pendingReferralValidation = null\n                        pendingReferralValidationKey = ''\n                    }\n                });\n                pendingReferralValidation = validationRequest\n                return validationRequest\n            }\n            \/\/ \u76ee\u7684\u5730\u5730\u533acode\u7801\u548c\u5168\u540d\u6570\u636e\n            const dState=[\n                {code:\"AL\",name:\"Alabama\"},\n                {code:\"AK\",name:\"Alaska\"},\n                {code:\"AS\",name:\"American Samoa\"},\n                {code:\"AZ\",name:\"Arizona\"},\n                {code:\"AR\",name:\"Arkansas\"},\n                {code:\"AA\",name:\"Armed Forces Americas\"},\n                {code:\"AE\",name:\"Armed Forces Europe, Middle East, & Canada\"},\n                {code:\"AP\",name:\"Armed Forces Pacific\"},\n                {code:\"CA\",name:\"California\"},\n                {code:\"CO\",name:\"Colorado\"},\n                {code:\"CT\",name:\"Connecticut\"},\n                {code:\"DE\",name:\"Delaware\"},\n                {code:\"DC\",name:\"District of Columbia\"},\n                {code:\"FM\",name:\"Federated States of Micronesia\"},\n                {code:\"FL\",name:\"Florida\"},\n                {code:\"GA\",name:\"Georgia\"},\n                {code:\"GU\",name:\"Guam\"},\n                {code:\"HI\",name:\"Hawaii\"},\n                {code:\"ID\",name:\"Idaho\"},\n                {code:\"IL\",name:\"Illinois\"},\n                {code:\"IN\",name:\"Indiana\"},\n                {code:\"IA\",name:\"Iowa\"},\n                {code:\"KS\",name:\"Kansas\"},\n                {code:\"KY\",name:\"Kentucky\"},\n                {code:\"LA\",name:\"Louisiana\"},\n                {code:\"ME\",name:\"Maine\"},\n                {code:\"MH\",name:\"Marshall Islands\"},\n                {code:\"MD\",name:\"Maryland\"},\n                {code:\"MA\",name:\"Massachusetts\"},\n                {code:\"MI\",name:\"Michigan\"},\n                {code:\"MN\",name:\"Minnesota\"},\n                {code:\"MS\",name:\"Mississippi\"},\n                {code:\"MO\",name:\"Missouri\"},\n                {code:\"MT\",name:\"Montana\"},\n                {code:\"NE\",name:\"Nebraska\"},\n                {code:\"NV\",name:\"Nevada\"},\n                {code:\"NH\",name:\"New Hampshire\"},\n                {code:\"NJ\",name:\"New Jersey\"},\n                {code:\"NM\",name:\"New Mexico\"},\n                {code:\"NY\",name:\"New York\"},\n                {code:\"NC\",name:\"North Carolina\"},\n                {code:\"ND\",name:\"North Dakota\"},\n                {code:\"MP\",name:\"Northern Mariana Islands\"},\n                {code:\"OH\",name:\"Ohio\"},\n                {code:\"OK\",name:\"Oklahoma\"},\n                {code:\"OR\",name:\"Oregon\"},\n                {code:\"PW\",name:\"Palau\"},\n                {code:\"PA\",name:\"Pennsylvania\"},\n                {code:\"PR\",name:\"Puerto Rico\"},\n                {code:\"RI\",name:\"Rhode Island\"},\n                {code:\"SC\",name:\"South Carolina\"},\n                {code:\"SD\",name:\"South Dakota\"},\n                {code:\"TN\",name:\"Tennessee\"},\n                {code:\"TX\",name:\"Texas\"},\n                {code:\"UT\",name:\"Utah\"},\n                {code:\"VT\",name:\"Vermont\"},\n                {code:\"VI\",name:\"Virgin Islands\"},\n                {code:\"VA\",name:\"Virginia\"},\n                {code:\"WA\",name:\"Washington\"},\n                {code:\"WV\",name:\"West Virginia\"},\n                {code:\"WI\",name:\"Wisconsin\"},\n                {code:\"WY\",name:\"Wyoming\"}\n            ]\n            \/\/ \u76ee\u7684\u5730\u5730\u533a\u7ed1\u5b9a\u7684\u6570\u636e\n            const State = ref(\"\")\n            \/\/ \u4e2a\u4eba\u4fe1\u606f\uff0c\u540d\u5b57\uff0c\u6027\u522b\uff0c\u751f\u65e5\uff0c\u56fd\u7c4d\uff0c\u90ae\u7bb1\n            const inputDataTwo = reactive(\n                [\n                    {\n                        type: 'string',\n                        name: 'First name',\n                        id: \"firstName\",\n                        required: true,\n                        value: ''\n\n                    }, {\n                    type: 'string',\n                    name: 'Middle name',\n                    id: \"middleName\",\n                    required: false,\n                    value: '',\n                }, {\n                    type: 'string',\n                    name: 'Last name',\n                    id: \"lastName\",\n                    required: true,\n                    value: '',\n                }, {\n                    type: 'select',\n                    name: 'Gender',\n                    id: \"Gender\",\n                    required: true,\n                    value: '',\n                }, {\n                    type: 'date',\n                    name: 'Date of birth',\n                    id: \"DateofBirth\",\n                    required: true,\n                    value: '',\n                }, {\n                    type: 'select',\n                    name: 'Nationality',\n                    id: \"Nationality\",\n                    required: true,\n                    value: '',\n                }, {\n                    type: 'string',\n                    name: 'Email',\n                    id: \"Email\",\n                    required: true,\n                    value: '',\n                }, {\n                    type: 'string',\n                    name: 'Passport',\n                    id: \"Passport\",\n                    required: true,\n                    value: '',\n                }\n                ])\n            const selectedNationality = computed(() => normalizeTextValue(inputDataTwo[5]?.value || ''))\n            const hasSelectedNationality = computed(() => Boolean(selectedNationality.value))\n            const isChinaNationality = computed(() => {\n                const nation = selectedNationality.value\n                if (!nation) return false\n                return \/\u4e2d\u56fd|china|chinese mainland|mainland china|^cn$|\u53f0\u6e7e|taiwan|^tw$|roc|\u9999\u6e2f|hong\\s*kong|^hk$\/i.test(nation)\n            })\n            const isSchoolWechatOnlyPayment = computed(() => schoolCheckoutSettings.paymentMethodMode === 'wechat')\n            const isSchoolBothPayments = computed(() => schoolCheckoutSettings.paymentMethodMode === 'both')\n            const isWechatOnlyPayment = computed(() => (\n                !isWechatDisabledSchoolFlow.value\n                && (\n                    isSchoolWechatOnlyPayment.value\n                    || (\n                        !schoolCheckoutSettings.paymentMethodMode\n                        && (\n                            isYisihuiReviewMode.value\n                            || (isYisihuiSourceMode.value && !isYisihuiAllPaymentsMode.value)\n                            || isYshlulu.value\n                            || isYshFromUrl.value\n                        )\n                    )\n                )\n            ))\n            const showWechatPaymentOption = computed(() => (\n                !isWechatDisabledSchoolFlow.value\n                && (\n                    isSchoolWechatOnlyPayment.value\n                    || isSchoolBothPayments.value\n                    || (\n                        !schoolCheckoutSettings.paymentMethodMode\n                        && (\n                            isYisihuiSourceMode.value\n                            || isWechatOnlyPayment.value\n                            || !hasSelectedNationality.value\n                            || isChinaNationality.value\n                        )\n                    )\n                )\n            ))\n            const showCardPaymentOption = computed(() => {\n                if (isSchoolWechatOnlyPayment.value) return false\n                if (schoolCheckoutSettings.paymentMethodMode === 'card' || isSchoolBothPayments.value) return true\n                return !isWechatOnlyPayment.value\n            })\n            const isSinglePaymentOption = computed(() => {\n                return Number(showWechatPaymentOption.value) + Number(showCardPaymentOption.value) === 1\n            })\n            const isEasyTransferPayment = () => {\n                if (!showWechatPaymentOption.value) {\n                    return false\n                }\n                if (isYisihuiAllPaymentsMode.value) {\n                    return selectedPayType.value === 'wechat'\n                }\n                return Boolean(\n                    localStorage.getItem('yisihui')\n                    || localStorage.getItem('yisihui_source')\n                    || localStorage.getItem('yshlulu')\n                )\n            }\n            watch(\n                [showWechatPaymentOption, showCardPaymentOption, selectedPayType],\n                ([showWechat, showCard, currentPayType]) => {\n                    if (showWechat && !showCard) {\n                        selectedPayType.value = 'wechat'\n                    } else if (!showWechat && currentPayType === 'wechat') {\n                        selectedPayType.value = 'credit'\n                    } else if (!showCard && currentPayType === 'credit') {\n                        selectedPayType.value = 'wechat'\n                    }\n                },\n                { immediate: true }\n            )\n            \/\/ \u5bb6\u5ead\u7535\u8bdd\uff0c\u76ee\u7684\u5730\u7535\u8bdd\n            const inputDataThree = reactive(\n                [{\n                    type: 'phone',\n                    name: 'Phone in origin',\n                    id: \"Phoneinorigin\",\n                    required: true,\n                    value: '',\n                }, {\n                    type: 'phone',\n                    name: 'Phone in destination',\n                    id: \"Phoneindestination\",\n                    required: true,\n                    value: '',\n                }]\n            )\n            watch(noAddress, (usesSchoolAddress) => {\n                if (!usesSchoolAddress) return\n                noPhone.value = true\n                inputDataThree[1].value = \"+1 5873740835\"\n            })\n            const checkWENZI = (name, value) => {\n                if (name == 'firstName' || name == 'middleName' || name == 'lastName') {\n                    \/\/ \u53ef\u9009\uff1a\u68c0\u67e5\u662f\u5426\u53ea\u5141\u8bb8\u82f1\u6587\u3001\u6570\u5b57\u3001\u7279\u5b9a\u7b26\u53f7\uff08\u5982\u7a7a\u683c\u3001\u8fde\u5b57\u7b26\u3001\u4e0b\u5212\u7ebf\u7b49\uff09\n                    const allowedChars = \/^[a-zA-Z0-9\\s\\-_']+$\/; \/\/ \u53ef\u6839\u636e\u9700\u6c42\u8c03\u6574\n                    if (!allowedChars.test(value)) {\n                        scrollToElement(name, 'Please fill in Eniglish')\n                    }\n                }\n            }\n            \/\/ \u56fd\u5bb6\u53d8\u5316\u6e05\u7a7a\u7535\u8bdd\n            const cleanPhone=()=>{\n                inputDataThree[0].value=\"\"\n                HomeState.value=\"\"\n                if (inputDataTwo[5].value == \"US\") {\n                    scrollToElement('Nationality', 'The plan are only for international students, Please confirm your nationality')\n                }\n                nextTick(() => {\n                    const originPhoneWrapper = document.querySelector(\"#PhoneinoriginDiv\")\n                    if (originPhoneWrapper) originPhoneWrapper.style.display = \"block\"\n                })\n                \/\/ \u5982\u679c\u586b\u5199\u4e86\u56fd\u7c4d\uff0c\u5219\u5339\u914d\u5bf9\u5e94\u7684\u5730\u533a\n                if (inputDataTwo[5].value) {\n                    code_verify(inputDataTwo[5].value)\n                }\n            }\n            \/\/ \u7535\u8bdd\u53f7\u7801\u56fd\u9645\u5316\n            const phoneCountry=()=>{\n                const nationality =inputDataTwo.find((item) => item.id === \"Nationality\").value;\n\n                const dialingCode = homeCountryData.find((item)=>item.code==nationality).dialCode;\n                \/\/ If a country code is found, prepend it to the phone input values\n                if (dialingCode) {\n                    inputDataThree.forEach((item) => {\n                        if (item.type === \"phone\" && item.id===\"Phoneinorigin\") {\n                            item.value = dialingCode + \" \" + (item.value.replace(dialingCode, \"\").trim()); \/\/ Ensure the code is not repeated\n                        }\n                        if (item.type === \"phone\" && item.id === \"Phoneindestination\") {\n                            item.value = \"+1 \" + (item.value.replace(\"+1\", \"\").trim()); \/\/ Ensure the code is not repeated\n                        }\n                    });\n                }\n            }\n            \/\/ \u4e8c\u9009\u4e00\uff0cyes\u6216\u8005no,\u662f\u5426\u6709\u5176\u4ed6\u4fdd\u9669\n            const yesOrNo = ref('No');\n            \/\/ \u662f\u5426\u6709\u5176\u4ed6\u4fdd\u9669\u7684\u5355\u9009\u6846\u6570\u636e\n            const inputDataFour = reactive([{\n                type: 'radio',\n                name: 'Yes', \/\/ Option name\n                id: \"Yes\", \/\/ Unique ID\n                required: true,\n                value: 'Yes', \/\/ The value to bind when this option is selected\n            },\n                {\n                    type: 'radio',\n                    name: 'No', \/\/ Option name\n                    id: \"No\", \/\/ Unique ID\n                    required: true,\n                    value: 'No', \/\/ The value to bind when this option is selected\n                }\n            ]);\n            \/\/ \u5b66\u6821\n            \/\/ const school=computed(()=>{\n            \/\/     console.log('\u5b66\u6821\u540d\u79f01', localStorage.getItem(\"school_id\"))\n            \/\/     return localStorage.getItem(\"school_id\")\n            \/\/ })\n            const studentID=ref(\"\")\n            \/\/ \u7b7e\u8bc1\u7c7b\u578b\n            const visaType = ref(\"\")\n            const inputDataSix = reactive(\n                [\n                    {\n                        type: 'date',\n                        name: 'Visa start date',\n                        id: \"VisaStartDate\",\n                        required: true,\n                        value: ''\n                    }, {\n                    type: 'date',\n                    name: 'Visa end date',\n                    id: \"VisaEndDate\",\n                    required: true,\n                    value: ''\n                }\n                ])\n            \/\/ \u662f\u5426\u6709\u5176\u4ed6\u4fdd\u9669\u7684\u540d\u5b57\u7ed1\u5b9a\u7684\u503c\n            const InsuranceName = ref('');\n            const familyYesNoOptions = [\n                { label: 'No', value: 'No' },\n                { label: 'Yes', value: 'Yes' }\n            ];\n            const dependentCountOptions = [0, 1, 2, 3, 4, 5];\n            const spouseMember = reactive({\n                firstName: '',\n                middleName: '',\n                lastName: '',\n                dob: ''\n            });\n            const dependentMembers = ref([]);\n            \/\/ \u5c0f\u5b69\u4eba\u6570\u9009\u62e9\n            const numDependents = ref(0);\n            const inputDataFive = reactive([{\n                type: 'date',\n                name: 'Date of Birth Dependent 1',\n                id: \"DateofBirthDependent1\",\n                required: true,\n                value: '',\n            }]);\n            \/\/ \u6839\u636e\u4eba\u6570\u6e32\u67d3\u751f\u65e5\u8f93\u5165\u6846\n            const fields =ref([]);\n            const dynamicInputFields = computed(() => {\n                fields.value=[]\n                for (let i = 0; i < numDependents.value; i++) {\n                    fields.value.push(...inputDataFive.map(item => ({\n                        type: item.type,\n                        name: `Date of Birth Dependent ${i + 1}`,\n                        id: `DateofBirthDependent${i + 1}`,\n                        required: item.required,\n                        value: ''\n                    })));\n                }\n                return fields.value;\n            })\n            \/\/ watch(\n            \/\/     ()=>fields.value,\n            \/\/     (newValue)=>{\n            \/\/         if(newValue){\n            \/\/             fields.value.forEach((item) => {\n            \/\/                 const fieldElement = document.querySelector(`#${item.id}`);\n            \/\/\n            \/\/                 if (fieldElement) {\n            \/\/                     \/\/ Add a change event listener\n            \/\/                     fieldElement.addEventListener('change', () => {\n            \/\/                         if (fieldElement.value.trim() !== '') {\n            \/\/                             fieldElement.style.backgroundColor = '#F9FAFB'; \/\/ Set background color to gray\n            \/\/                         } else {\n            \/\/                             fieldElement.style.backgroundColor = ''; \/\/ Reset background color\n            \/\/                         }\n            \/\/                     });\n            \/\/                 }\n            \/\/             });\n            \/\/         }\n            \/\/     }\n            \/\/ )\n            \/\/ \u76d1\u542c\u5f00\u59cb\u65e5\u671f\u53d8\u5316\uff0c\u66f4\u65b0\u7ed3\u675f\u65e5\u671f\uff08\u7528\u4e8e\u903b\u8f91\u8054\u52a8\uff09\n            watch(\n                () => inputDataOne[0].value,\n                (newVal, oldVal) => {\n                    if (!isCoverageFromSchool.value && newVal !== oldVal) {\n                        updateEndDate();\n                    }\n                }\n            );\n            \/\/ \u76d1\u542c yesOrNo\n            watch(\n                () => yesOrNo.value,  \/\/ \u5047\u8bbe yesOrNo \u662f ref\n                (newVal) => {\n                }\n            );\n            watch(\n                () => school.value,\n                (newVal, oldVal) => {\n                    setStoredSchoolName(newVal)\n                    if (normalizeTextValue(newVal) !== normalizeTextValue(oldVal)) {\n                        syncSchoolIdValue('')\n                        schoolInformation.value = null\n                        schoolAddressVerified.value = false\n                        schoolAddressError.value = ''\n                    }\n                    getschoolNew()\n                }\n            );\n            watch(\n                () => isSchoolSelectionMode.value,\n                (enabled) => {\n                    if (!enabled) return\n                    if (normalizeTextValue(school.value).toLowerCase() === 'wellaway-scholar') {\n                        school.value = ''\n                    }\n                    fetchRemoteSchoolOptions()\n                },\n                { immediate: true }\n            );\n            watch(\n                () => inputDataTwo[5].value,\n                (newVal) => {\n                    if (!normalizeTextValue(newVal)) return\n                    nextTick(() => {\n                        const originPhoneWrapper = document.querySelector(\"#PhoneinoriginDiv\")\n                        if (originPhoneWrapper) originPhoneWrapper.style.display = \"block\"\n                    })\n                },\n                { immediate: true }\n            );\n            \/\/ \u914d\u5076\u6570\u636e\uff0c\u662f\u5426\u914d\u5076\uff0c\u914d\u5076\u751f\u65e5\n            const SpouseyesOrNo = ref(\"No\")\n            const SpouseDateofBirth = ref(\"\")\n            const inputDataSeven = reactive([{\n                type: 'radio',\n                name: 'SpouseYes', \/\/ Option name\n                id: \"SpouseYes\", \/\/ Unique ID\n                required: true,\n                value: 'Yes', \/\/ The value to bind when this option is selected\n            },\n                {\n                    type: 'radio',\n                    name: 'SpouseNo', \/\/ Option name\n                    id: \"SpouseNo\", \/\/ Unique ID\n                    required: true,\n                    value: 'No', \/\/ The value to bind when this option is selected\n                }\n            ]);\n            \/\/ \u4fe1\u606f\u5b89\u5168\u7ed1\u5b9a\u7684\u6570\u636e\n            const keepSafe = ref(\"Yes\")\n            \/\/ \u4fe1\u606f\u5b89\u5168\u5355\u9009\u6846\u6570\u636e\n            const inputDataEgiht = reactive([{\n                type: 'radio',\n                name: 'keepSafeYes', \/\/ Option name\n                id: \"keepSafeYes\", \/\/ Unique ID\n                required: true,\n                value: 'Yes', \/\/ The value to bind when this option is selected\n            },\n                {\n                    type: 'radio',\n                    name: 'keepSafeNo', \/\/ Option name\n                    id: \"keepSafeNo\", \/\/ Unique ID\n                    required: true,\n                    value: 'No', \/\/ The value to bind when this option is selected\n                }\n            ]);\n            \/\/ \u6b65\u9aa4\u6761\n            const currentStep = ref(0) \/\/ \u5f53\u524d\u6b65\u9aa4\u7d22\u5f15\n            const steps = reactive(\n                [\n                    {\n                        id: 1,\n                        title: 'Step 1',\n                        description: 'This is the first step.'\n                    },\n                    {\n                        id: 2,\n                        title: 'Step 2',\n                        description: 'This is the second step.'\n                    },\n                    {\n                        id: 3,\n                        title: 'Step 3',\n                        description: 'This is the third step.'\n                    },\n                    {\n                        id: 4,\n                        title: 'Step 4',\n                        description: 'This is the final step.'\n                    },\n                ]\n            )\n            \/\/ \u4e0b\u4e00\u6b65\u51fd\u6570\n            function nextStep() {\n                if (currentStep.value < steps.length - 1) {\n                    currentStep.value++;\n                }\n                toBrown()\n                window.scrollTo({\n                    top: 0,\n                    left: 0,\n                    behavior: 'smooth' \/\/ \u8bbe\u7f6e\u5e73\u6ed1\u6eda\u52a8\n                });\n            }\n            \/\/ \u4e0a\u4e00\u6b65\u51fd\u6570\n            function prevStep() {\n                if (currentStep.value > 0) {\n                    currentStep.value--;\n                }\n                window.scrollTo({\n                    top: 0,\n                    left: 0,\n                    behavior: 'smooth' \/\/ \u8bbe\u7f6e\u5e73\u6ed1\u6eda\u52a8\n                });\n                nextTick(()=>{\n                    toBrown()\n                    getStudentAge(inputDataOne[0].value)\n                })\n            }\n            watch(\n                ()=>currentStep.value,\n                (newValue)=>{\n                    if(newValue===1){\n                        nextTick(()=>{\n                            homeData.forEach((item) => {\n                                const fieldElement = document.querySelector(`#${item.id}`);\n\n                                if (fieldElement) {\n                                    \/\/ Add a change event listener\n                                    fieldElement.addEventListener('change', () => {\n                                        if (fieldElement.value.trim() !== '') {\n                                            fieldElement.style.backgroundColor = '#F9FAFB'; \/\/ Set background color to gray\n                                        } else {\n                                            fieldElement.style.backgroundColor = ''; \/\/ Reset background color\n                                        }\n                                    });\n                                }\n                            })\n                            destinationData.forEach((item) => {\n                                const fieldElement = document.querySelector(`#${item.id}`);\n\n                                if (fieldElement) {\n                                    \/\/ Add a change event listener\n                                    fieldElement.addEventListener('change', () => {\n                                        if (fieldElement.value.trim() !== '') {\n                                            fieldElement.style.backgroundColor = '#F9FAFB'; \/\/ Set background color to gray\n                                        } else {\n                                            fieldElement.style.backgroundColor = ''; \/\/ Reset background color\n                                        }\n                                    });\n                                }\n                            })\n                            SpouseData.value.forEach((item) => {\n                                const fieldElement = document.querySelector(`#${item.id}`);\n\n                                if (fieldElement) {\n                                    \/\/ Add a change event listener\n                                    fieldElement.addEventListener('change', () => {\n                                        if (fieldElement.value.trim() !== '') {\n                                            fieldElement.style.backgroundColor = '#F9FAFB'; \/\/ Set background color to gray\n                                        } else {\n                                            fieldElement.style.backgroundColor = ''; \/\/ Reset background color\n                                        }\n                                    });\n                                }\n                            });\n                            const ids = dependentsArray.value.flat().map(item => item.id);\n                            ids.forEach((item)=>{\n                                const fieldElement = document.querySelector(`#${item}`);\n                                if (fieldElement) {\n                                    \/\/ Add a change event listener\n                                    fieldElement.addEventListener('change', () => {\n                                        if (fieldElement.value.trim() !== '') {\n                                            fieldElement.style.backgroundColor = '#F9FAFB'; \/\/ Set background color to gray\n                                        } else {\n                                            fieldElement.style.backgroundColor = ''; \/\/ Reset background color\n                                        }\n                                    });\n                                }\n                            })\n\n                        })\n                    }\n                }\n            )\n            \/\/ \u6536\u96c6\u4fe1\u606f\uff0c\u4e0b\u4e00\u6b65\uff0c\u6b65\u9aa4\u4e00\n            const formData = ref(\"\");\n            const collectFormData = () => {\n\n                \/\/ nextTick(() => {\n                \/\/ \u62ff\u5230\u8868\u5355\u9a8c\u8bc1\u89c4\u5219\u51fd\u6570\n                const isFormValid = validateForm();\n                if (!isFormValid) {\n                    return; \/\/ Stop further execution if validation fails\n                }\n                collectedValues.destinationAddress[\"StateCode\"] = State.value;\n                collectedValues.destinationAddress[\"CountryCode\"] = \"US\";\n                const selectedInsurancePlan = getSelectedInsurancePlan()\n                if (!selectedInsurancePlan?.code) {\n                    errMessage.value = 'The selected insurance plan is missing its policy code. Please refresh and select the plan again.'\n                    showAlert()\n                    return false\n                }\n                const wellawayRouting = applyWellAwayEnrollmentRouting({\n                    planName: selectedInsurancePlan.name1\n                })\n                \/\/ \u901a\u8fc7\u9a8c\u8bc1,\u5219\u6536\u96c6\u4fe1\u606f\n                formData.value = {\n                    \/\/ \u5f00\u59cb\u65e5\u671f\uff0c\u7ed3\u675f\u65e5\u671f\uff0c\u76ee\u7684\u5730\u5730\u533a\uff0c\u56fd\u5bb6\u786e\u5b9a\u662f\u7f8e\u56fd\n                    requestId:\"re-\"+requestId,\n                    is_easytransfer: isEasyTransferPayment(),\n                    source_institution: getSource(),\n                    referral_code:localStorage.getItem(\"us_order_code\") ?? null,\n                    transactionType: \"ADD\",\n                    transactionDate: new Date().toISOString(),\n                    student_id:studentID.value,\n                    groupId: wellawayRouting.groupId,\n                    groupNumber: null,\n                    enrollmentIdentifier: \"ENU\"+requestId,\/\/\u53d6\u8ddfruqustId\u4e00\u6837\u7684\u503c\n                    policyNumber: selectedInsurancePlan.code,\n                    policyId: \"\",\/\/\u975e\u5fc5\u9700\n                    agentNumber: wellawayRouting.agentNumber,\n                    planName: selectedInsurancePlan.name1,\n                    homeCountryCode: inputDataTwo[5].value,\n                    currencyCode:\"USD\",\n                    destinations: [\n                        collectedValues.destinationAddress.CountryCode,\n                        collectedValues.destinationAddress.StateCode\n                    ],\n                    phoneOrigin: inputDataThree[0].value,\n                    options:null,\n                    members: [\n                        {\n                            enrollmentType: \"ADD\",\/\/\u6ce8\u518c\u7c7b\u578b\n                            individualId: \"I\"+IndividualId,\n                            primaryMemberId: \"PM\"+IndividualId,\n                            firstName: inputDataTwo[0].value,\n                            middleName: inputDataTwo[1].value,\n                            lastName: inputDataTwo[2].value,\n                            dob: normalizeDobForEnrollment(inputDataTwo[4][\"value\"]),\n                            gender: inputDataTwo[3].value,\n                            memberRelationship: \"Policyholder\",\n                            maritalStatus: SpouseyesOrNo.value==\"Yes\"?\"M\":'S',\n                            \/\/ network: \"Default Network\",\n                            coverage: {\n                                purchaseDate: new Date().toISOString(),\n                                coverageStartDate: inputDataOne[0].value,\n                                coverageEndDate: inputDataOne[1].value,\n                                premium: allPrice(),\n                                dental: false,\n                                vision: false\n                            },\n                            contacts: [\n                                {\n                                    name: \"Email\",\n                                    value: inputDataTwo[6].value\n                                },\n                                {\n                                    name: \"Phone\",\n                                    value: inputDataThree[1].value || inputDataThree[0].value\n                                },\n                                {\n                                    name: \"School\",\n                                    value: normalizeSchoolNameForSubmission(schoolNew.value || school.value)\n                                }\n                            ],\n                            options:  [\n                                {name: \"Visa\", value: visaType.value},\n                                {name: \"VisaStartDate\", value: inputDataSix[0].value},\n                                {name: \"VisaEndDate\", value: inputDataSix[1].value}\n                            ],\n                            discounts: []\n                        }\n                    ]\n                };\n                appendFamilyMembers(formData.value)\n                saveEnrollmentDraft(formData.value)\n                \/\/ debugger\n                window.apiClient.post(\"https:\/\/agent.goglobalsafe.com\/api\/v1\/Enrollment\/StepOneController\", formData.value, {\n                    headers: {\n                        \"Accept\":\"application\/json\",\n                        \"X-Authentication-Key\": \"HSxZK8nHniLzZtv0Qtfk87wvNvXpJZ5K\",\n                    }\n                }).then(response => {\n                }).catch(error => {\n                });\n                localStorage.setItem(\"formData\", JSON.stringify(sanitizeEnrollmentBackup(formData.value)))\n                \/\/ \u6700\u7ec8\u6570\u636e\n\n                \/\/ \u5982\u679c\u586b\u5199\u4e86\u56fd\u7c4d\uff0c\u5219\u5339\u914d\u5bf9\u5e94\u7684\u5730\u533a\n                if (inputDataTwo[5].value) {\n                    code_verify(inputDataTwo[5].value)\n                }\n                nextStep();\n                toBrown()\n                requestQuote()\n                \/\/ });\n            };\n\n            \/\/ \u901a\u7528\u7684\u9a8c\u8bc1\u51fd\u6570\uff1a\u68c0\u67e5\u662f\u5426\u4e3a\u7a7a\n            const isEmpty = (value, fieldName) => {\n                if (!value) {\n                    return true;\n                }\n                return false;\n            };\n\n            \/\/ \u901a\u7528\u7684\u90ae\u7bb1\u683c\u5f0f\u9a8c\u8bc1\n            const isValidEmail = (email) => {\n                const emailPattern = \/^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$\/;\n                return emailPattern.test(email);\n            };\n\n            \/\/ \u56fd\u9645\u7535\u8bdd\u53f7\u7801\u683c\u5f0f\u9a8c\u8bc1\n            const isValidPhoneNumber = (phone) => {\n                const phonePattern = \/^\\+(\\d{1,4})\\s?(\\d{1,25})$\/;\n                return phonePattern.test(phone);\n            };\n            const parseDateOnly = (value) => {\n                const match = String(value || '').trim().match(\/^(\\d{4})-(\\d{2})-(\\d{2})$\/)\n                if (!match) return null\n                const date = new Date(Date.UTC(Number(match[1]), Number(match[2]) - 1, Number(match[3])))\n                if (date.getUTCFullYear() !== Number(match[1])\n                    || date.getUTCMonth() !== Number(match[2]) - 1\n                    || date.getUTCDate() !== Number(match[3])) {\n                    return null\n                }\n                return date\n            }\n            \/\/ \u9a8c\u8bc1\u51fd\u6570\n            const validateForm = () => {\n                sanitizeAddressCollection()\n                ensureCoverageDatesWithinCurrentRules()\n                \/\/ 1. \u9a8c\u8bc1\u65e5\u671f\u5b57\u6bb5\n                if (isEmpty(inputDataOne[0].value, 'Start Date')) {\n                    toggleDetails(progress[0])\n                    scrollToElement(inputDataOne[0].id, 'Start Date is is required !')\n                    return false;\n                }\n                if (isEmpty(inputDataOne[1].value, 'End Date')) {\n                    toggleDetails(progress[0])\n                    scrollToElement(inputDataOne[1].id, 'End Date is is required !')\n                    return false;\n                }\n                if (enforceMinimumCoveragePeriod()) {\n                    updateEndDate()\n                }\n                \/\/ if (isEmpty(State.value, 'State')) {\n                \/\/     scrollToElement(\"DestinationState\",'State is required !')\n                \/\/     return false;\n                \/\/ }\n\n                \/\/ 2. \u9a8c\u8bc1\u540d\u5b57\u3001\u6027\u522b\u3001\u90ae\u7bb1\u548c\u56fd\u7c4d\u7b49\u5fc5\u586b\u9879\n                for (const field of inputDataTwo) {\n                    if (field.required && isEmpty(field.value, field.name)) {\n                        toggleDetails(progress[1])\n                        scrollToElement(field.id,field.name+\" is required !\");\n                        return false;\n                    }\n                }\n\n                \/\/ 3. \u90ae\u7bb1\u683c\u5f0f\u9a8c\u8bc1\n                const email = inputDataTwo[6].value;\n                if (email && !isValidEmail(email)) {\n                    toggleDetails(progress[1])\n                    scrollToElement(inputDataTwo[6].id,'Invalid email format.')\n                    return false;\n                }\n\n                \/\/ 4. \u7535\u8bdd\u9a8c\u8bc1\n                const phoneOrigin = inputDataThree[0].value.trim();\n                const phoneDestination = inputDataThree[1].value.trim();\n                const usPhoneRegex = \/^(?:\\+1\\s?)?(?:\\(?\\d{3}\\)?[\\s.-]?)?\\d{3}[\\s.-]?\\d{4}$\/;\n\n                \/\/ \u9a8c\u8bc1 Phone in origin\n                if (phoneOrigin.length < 7) {\n                    toggleDetails(progress[1])\n                    scrollToElement(inputDataThree[0].id, \"Please enter a valid phone number for origin!\");\n                    return false;\n                }\n                if (!usPhoneRegex.test(phoneDestination)) {\n                    toggleDetails(progress[1])\n                    scrollToElement(inputDataThree[1].id, \"Please enter a valid U.S. phone number for destination!\");\n                    return false;\n                }\n                \/\/ if (phoneOrigin && !isValidPhoneNumber(phoneOrigin)) {\n                \/\/     console.log('Invalid phone number in origin.');\n                \/\/     scrollToElement(inputDataThree[0].id,'Invalid phone number in origin.');\n                \/\/     return false;\n                \/\/ }\n                \/\/ if (phoneDestination && !isValidPhoneNumber(phoneDestination)) {\n                \/\/     console.log('Invalid phone number in destination.');\n                \/\/     scrollToElement(inputDataThree[1].id,'Invalid phone number in destination.');\n                \/\/     return false;\n                \/\/ }\n\n                \/\/ 5. \u9a8c\u8bc1\u662f\u5426\u6709\u5176\u4ed6\u4fdd\u9669\n                if (isEmpty(yesOrNo.value, 'Yes\/No')) {\n                    scrollToElement(\"Yes\",'Yes\/No is required !');\n                    return false;\n                }\n                \/\/ \u9a8c\u8bc1\u5b66\u751fID\n                if (isEmpty(studentID.value, 'Student ID')) {\n                    scrollToElement(\"studentID\",'Student ID is required !');\n                    return false;\n                }\n                \/\/ \u9a8c\u8bc1\u7b7e\u8bc1\n                if (isEmpty(visaType.value, 'visaType')) {\n                    scrollToElement(\"Policyholder_Visa\",'visaType is required !');\n                    return false;\n                }\n                if (isEmpty(inputDataSix[0].value, inputDataSix[0].id)) {\n                    scrollToElement(inputDataSix[0].id,\"Visa start date is required !\");\n                    return false;\n                }\n                if (isEmpty(inputDataSix[1].value, inputDataSix[1].id)) {\n                    scrollToElement(inputDataSix[1].id,\"Visa end date is required !\");\n                    return false;\n                }\n                const visaStartDate = parseDateOnly(inputDataSix[0].value)\n                const visaEndDate = parseDateOnly(inputDataSix[1].value)\n                if (!visaStartDate) {\n                    scrollToElement(inputDataSix[0].id, 'Please enter a valid visa start date.')\n                    return false\n                }\n                if (!visaEndDate) {\n                    scrollToElement(inputDataSix[1].id, 'Please enter a valid visa end date.')\n                    return false\n                }\n                if (visaStartDate > visaEndDate) {\n                    scrollToElement(inputDataSix[1].id, 'Visa end date must be on or after the visa start date.')\n                    return false\n                }\n                const coverageStartDate = parseDateOnly(inputDataOne[0].value)\n                if (coverageStartDate && visaEndDate < coverageStartDate) {\n                    scrollToElement(inputDataSix[1].id, 'Visa end date cannot be earlier than the coverage start date.')\n                    return false\n                }\n                if (isFamilyOptionAvailable.value) {\n                    \/\/ 6. \u9a8c\u8bc1\u5c0f\u5b69\u5b57\u6bb5\n                    for (let i = 0; i < dependentMembers.value.length; i++) {\n                        const dependent = dependentMembers.value[i]\n                        if (isEmpty(dependent.firstName, `Dependent ${i + 1} first name`)) {\n                            scrollToFamilyElement(`DependentFirstName${i + 1}`, `Dependent ${i + 1} first name is required !`);\n                            return false;\n                        }\n                        if (isEmpty(dependent.lastName, `Dependent ${i + 1} last name`)) {\n                            scrollToFamilyElement(`DependentLastName${i + 1}`, `Dependent ${i + 1} last name is required !`);\n                            return false;\n                        }\n                        if (isEmpty(dependent.dob, `Dependent ${i + 1} DOB`)) {\n                            scrollToFamilyElement(`DependentDob${i + 1}`, `Dependent ${i + 1} DOB is required !`);\n                            return false;\n                        }\n                        if (!validateFamilyAge(dependent.dob, 0, 19, `DependentDob${i + 1}`, `Dependent ${i + 1}`)) {\n                            return false;\n                        }\n                    }\n\n                    \/\/ 7. \u9a8c\u8bc1\u4f34\u4fa3\u7684\u65e5\u671f\n\n                    if (isEmpty(SpouseyesOrNo.value, 'Spouse')) {\n                        scrollToElement(\"SpouseyesOrNo\",'Spouse is required!');\n                        document.querySelector(\"#SpouseyesOrNoFather p\").style.transform=\"translateY(-1rem) translateX(1.375rem)\"\n                        return false;\n                    }\n                    if (SpouseyesOrNo.value === 'Yes') {\n                        if (isEmpty(spouseMember.firstName, 'Spouse first name')) {\n                            scrollToFamilyElement(\"SpouseFirstName\",'Spouse first name is required !');\n                            return false;\n                        }\n                        if (isEmpty(spouseMember.lastName, 'Spouse last name')) {\n                            scrollToFamilyElement(\"SpouseLastName\",'Spouse last name is required !');\n                            return false;\n                        }\n                        if (isEmpty(spouseMember.dob, 'Spouse DOB')) {\n                            scrollToFamilyElement(\"SpouseDateofBirth\",'Spouse date of birth is required !');\n                            return false;\n                        }\n                        if (!validateFamilyAge(spouseMember.dob, 19, 45, \"SpouseDateofBirth\", \"Spouse\")) {\n                            return false;\n                        }\n                    }\n                } else {\n                    resetFamilySelection()\n                }\n\n                \/\/ 8. \u4fe1\u606f\u5b89\u5168\u9a8c\u8bc1\n                if (isEmpty(keepSafe.value, 'KeepSafe')) {\n                    scrollToElement(\"keepSafe\",\"KeepSafe is required !\");\n                    return false;\n                }\n\n                \/\/ 9. \u5982\u679c\u6240\u6709\u68c0\u67e5\u90fd\u901a\u8fc7\uff0c\u5219\u8fd4\u56detrue\n                return true;\n            };\n            \/\/ \u5982\u679c\u6709\u7a7a\u7684\uff0c\u9875\u9762\u5e73\u6ed1\u6eda\u52a8\u5230\u6307\u5b9a\u5143\u7d20\n            const scrollToElement = (elementId,message,statusCode = null) => {\n                try {\n                    if (message && Number(statusCode) !== 200 && typeof window.__ggsTrackValidationFailure === 'function') {\n                        window.__ggsTrackValidationFailure(elementId, message, statusCode)\n                    }\n                } catch (error) {}\n                const showValidationError = (attempt = 0) => {\n                    const element = document.getElementById(elementId)\n                    if (!element) {\n                        if (attempt < 5) {\n                            setTimeout(() => showValidationError(attempt + 1), 80)\n                        }\n                        return\n                    }\n\n                    const section = element.classList.contains('form-step')\n                        ? element\n                        : element.closest('.form-step')\n                    const details = element.classList.contains('ggs-collapse-content')\n                        ? element\n                        : (element.closest('.ggs-collapse-content') || section?.querySelector('.ggs-collapse-content'))\n                    if (details && !details.classList.contains('expanded')) {\n                        toggleDetails(details.id)\n                    }\n\n                    nextTick(() => requestAnimationFrame(() => requestAnimationFrame(() => {\n                        const visibleElement = document.getElementById(elementId)\n                        if (!visibleElement) return\n                        visibleElement.scrollIntoView({\n                            behavior: 'smooth',\n                            block: 'center'\n                        })\n\n                        const parentElement = visibleElement.parentElement\n                        let validationMessage = null\n                        if (parentElement) {\n                            const previousMessage = Array.from(parentElement.children).find((child) => (\n                                child.classList?.contains('ggs-field-validation-message')\n                            ))\n                            if (previousMessage) previousMessage.remove()\n\n                            validationMessage = document.createElement('p')\n                            validationMessage.className = 'ggs-field-validation-message'\n                            validationMessage.textContent = message\n                            validationMessage.style.color = Number(statusCode) === 200 ? '#16a34a' : 'red'\n                            validationMessage.style.marginBottom = '0'\n                            validationMessage.style.fontSize = '12px'\n                            validationMessage.style.whiteSpace = 'wrap'\n                            parentElement.appendChild(validationMessage)\n                        }\n                        if (message === 'Spouse is required!') return\n\n                        const isSuccess = Number(statusCode) === 200;\n                        if (visibleElement.dataset.ggsValidationOriginalBorder === undefined) {\n                            visibleElement.dataset.ggsValidationOriginalBorder = visibleElement.style.border || ''\n                        }\n                        visibleElement.style.border = isSuccess ? '1px solid #16a34a' : '1px solid red'\n                        visibleElement.style.animation = isSuccess ? '' : 'flashBorder 1s infinite'\n\n                        clearTimeout(visibleElement._ggsValidationResetTimer)\n                        visibleElement._ggsValidationResetTimer = setTimeout(() => {\n                            visibleElement.style.border = visibleElement.dataset.ggsValidationOriginalBorder || ''\n                            visibleElement.style.animation = ''\n                            if (validationMessage?.isConnected) validationMessage.remove()\n                        }, 3000)\n                    })))\n                }\n                showValidationError()\n            };\n            const ensureDetailsOpen = (id) => {\n                const content = document.getElementById(id);\n                if (!content || content.classList.contains('expanded')) return;\n                toggleDetails(id);\n            }\n            const scrollToFamilyElement = (elementId, message, statusCode = null) => {\n                ensureDetailsOpen(progress[1]);\n                setTimeout(() => {\n                    scrollToElement(elementId, message, statusCode);\n                }, 120);\n            }\n\n            \/\/ CSS \u52a8\u753b\uff0c\u95ea\u70c1\u8fb9\u6846\n            const style = document.createElement('style');\n            style.innerHTML = `\n            @keyframes flashBorder {\n                0% { border-color: red; }\n                50% { border-color: transparent; }\n                100% { border-color: red; }\n            }\n            `;\n            document.head.appendChild(style);\n\n\n\n            \/\/\u6b65\u9aa4\u4e8c\n            \/\/ \u6839\u636e\u56fd\u5bb6\u67e5\u8be2\u5730\u533a\n            \/\/ \u5bb6\u5ead\u56fd\u7c4d\u6570\u636e\n            \/\/ const homeCountryData=[\n            \/\/     {code:\"AF\",name:\"Afghanistan\"},\n            \/\/     {code:\"AX\",name:\"Aland Islands\"},\n            \/\/     {code:\"AL\",name:\"Albania\"},\n            \/\/     {code:\"DZ\",name:\"Algeria\"},\n            \/\/     {code:\"AS\",name:\"American Samoa\"},\n            \/\/     {code:\"AD\",name:\"Andorra\"},\n            \/\/     {code:\"AO\",name:\"Angola\"},\n            \/\/     {code:\"AI\",name:\"Anguilla\"},\n            \/\/     {code:\"AQ\",name:\"Antarctica\"},\n            \/\/     {code:\"AG\",name:\"Antigua and Barbuda\"},\n            \/\/     {code:\"AR\",name:\"Argentina\"},\n            \/\/     {code:\"AM\",name:\"Armenia\"},\n            \/\/     {code:\"AW\",name:\"Aruba\"},\n            \/\/     {code:\"AU\",name:\"Australia\"},\n            \/\/     {code:\"AT\",name:\"Austria\"},\n            \/\/     {code:\"AZ\",name:\"Azerbaijan\"},\n            \/\/     {code:\"BS\",name:\"Bahamas\"},\n            \/\/     {code:\"BH\",name:\"Bahrain\"},\n            \/\/     {code:\"BD\",name:\"Bangladesh\"},\n            \/\/     {code:\"BB\",name:\"Barbados\"},\n            \/\/     {code:\"BE\",name:\"Belgium\"},\n            \/\/     {code:\"BZ\",name:\"Belize\"},\n            \/\/     {code:\"BJ\",name:\"Benin\"},\n            \/\/     {code:\"BM\",name:\"Bermuda\"},\n            \/\/     {code:\"BT\",name:\"Bhutan\"},\n            \/\/     {code:\"BO\",name:\"Bolivia\"},\n            \/\/     {code:\"BA\",name:\"Bosnia and Herzegovina\"},\n            \/\/     {code:\"BW\",name:\"Botswana\"},\n            \/\/     {code:\"BV\",name:\"Bouvet Island\"},\n            \/\/     {code:\"BR\",name:\"Brazil\"},\n            \/\/     {code:\"IO\",name:\"British Indian Ocean Territory\"},\n            \/\/     {code:\"VG\",name:\"British Virgin Islands\"},\n            \/\/     {code:\"BN\",name:\"Brunei\"},\n            \/\/     {code:\"BG\",name:\"Bulgaria\"},\n            \/\/     {code:\"BF\",name:\"Burkina Faso\"},\n            \/\/     {code:\"BI\",name:\"Burundi\"},\n            \/\/     {code:\"KH\",name:\"Cambodia\"},\n            \/\/     {code:\"CM\",name:\"Cameroon\"},\n            \/\/     {code:\"CA\",name:\"Canada\"},\n            \/\/     {code:\"CV\",name:\"Cape Verde\"},\n            \/\/     {code:\"KY\",name:\"Cayman Islands\"},\n            \/\/     {code:\"TD\",name:\"Chad\"},\n            \/\/     {code:\"CL\",name:\"Chile\"},\n            \/\/     {code:\"CN\",name:\"China\"},\n            \/\/     {code:\"CX\",name:\"Christmas Island\"},\n            \/\/     {code:\"CC\",name:\"Cocos Islands\"},\n            \/\/     {code:\"CO\",name:\"Colombia\"},\n            \/\/     {code:\"KM\",name:\"Comoros\"},\n            \/\/     {code:\"CG\",name:\"Congo-Brazzaville (Republic)\"},\n            \/\/     {code:\"CK\",name:\"Cook Islands\"},\n            \/\/     {code:\"CR\",name:\"Costa Rica\"},\n            \/\/     {code:\"CI\",name:\"C\u00f4te d'Ivoire\"},\n            \/\/     {code:\"HR\",name:\"Croatia\"},\n            \/\/     {code:\"CY\",name:\"Cyprus\"},\n            \/\/     {code:\"CZ\",name:\"Czech Republic\"},\n            \/\/     {code:\"DK\",name:\"Denmark\"},\n            \/\/     {code:\"DJ\",name:\"Djibouti\"},\n            \/\/     {code:\"DM\",name:\"Dominica\"},\n            \/\/     {code:\"DO\",name:\"Dominican Republic\"},\n            \/\/     {code:\"TL\",name:\"East Timor\"},\n            \/\/     {code:\"EC\",name:\"Ecuador\"},\n            \/\/     {code:\"EG\",name:\"Egypt\"},\n            \/\/     {code:\"SV\",name:\"El Salvador\"},\n            \/\/     {code:\"GQ\",name:\"Equatorial Guinea\"},\n            \/\/     {code:\"ER\",name:\"Eritrea\"},\n            \/\/     {code:\"EE\",name:\"Estonia\"},\n            \/\/     {code:\"ET\",name:\"Ethiopia\"},\n            \/\/     {code:\"FK\",name:\"Falkland Islands (Malvinas)\"},\n            \/\/     {code:\"FO\",name:\"Faroe Islands\"},\n            \/\/     {code:\"FJ\",name:\"Fiji\"},\n            \/\/     {code:\"FI\",name:\"Finland\"},\n            \/\/     {code:\"FR\",name:\"France\"},\n            \/\/     {code:\"GF\",name:\"French Guiana\"},\n            \/\/     {code:\"PF\",name:\"French Polynesia\"},\n            \/\/     {code:\"TF\",name:\"French Southern and Antarctic Lands\"},\n            \/\/     {code:\"GA\",name:\"Gabon\"},\n            \/\/     {code:\"GM\",name:\"Gambia\"},\n            \/\/     {code:\"GE\",name:\"Georgia\"},\n            \/\/     {code:\"DE\",name:\"Germany\"},\n            \/\/     {code:\"GH\",name:\"Ghana\"},\n            \/\/     {code:\"GI\",name:\"Gibraltar\"},\n            \/\/     {code:\"GR\",name:\"Greece\"},\n            \/\/     {code:\"GL\",name:\"Greenland\"},\n            \/\/     {code:\"GD\",name:\"Grenada\"},\n            \/\/     {code:\"GP\",name:\"Guadeloupe\"},\n            \/\/     {code:\"GU\",name:\"Guam\"},\n            \/\/     {code:\"GT\",name:\"Guatemala\"},\n            \/\/     {code:\"GG\",name:\"Guernsey\"},\n            \/\/     {code:\"GN\",name:\"Guinea\"},\n            \/\/     {code:\"GW\",name:\"Guinea-Bissau\"},\n            \/\/     {code:\"GY\",name:\"Guyana\"},\n            \/\/     {code:\"HT\",name:\"Haiti\"},\n            \/\/     {code:\"HM\",name:\"Heard Island and McDonald Islands\"},\n            \/\/     {code:\"VA\",name:\"Holy See (Vatican City)\"},\n            \/\/     {code:\"HN\",name:\"Honduras\"},\n            \/\/     {code:\"HK\",name:\"Hong Kong\"},\n            \/\/     {code:\"HU\",name:\"Hungary\"},\n            \/\/     {code:\"IS\",name:\"Iceland\"},\n            \/\/     {code:\"IN\",name:\"India\"},\n            \/\/     {code:\"ID\",name:\"Indonesia\"},\n            \/\/     {code:\"IE\",name:\"Ireland\"},\n            \/\/     {code:\"IL\",name:\"Israel\"},\n            \/\/     {code:\"IT\",name:\"Italy\"},\n            \/\/     {code:\"JM\",name:\"Jamaica\"},\n            \/\/     {code:\"JP\",name:\"Japan\"},\n            \/\/     {code:\"JE\",name:\"Jersey\"},\n            \/\/     {code:\"JO\",name:\"Jordan\"},\n            \/\/     {code:\"KZ\",name:\"Kazakhstan\"},\n            \/\/     {code:\"KE\",name:\"Kenya\"},\n            \/\/     {code:\"KI\",name:\"Kiribati\"},\n            \/\/     {code:\"XK\",name:\"Kosovo\"},\n            \/\/     {code:\"KW\",name:\"Kuwait\"},\n            \/\/     {code:\"KG\",name:\"Kyrgyzstan\"},\n            \/\/     {code:\"LA\",name:\"Laos\"},\n            \/\/     {code:\"LV\",name:\"Latvia\"},\n            \/\/     {code:\"LB\",name:\"Lebanon\"},\n            \/\/     {code:\"LS\",name:\"Lesotho\"},\n            \/\/     {code:\"LR\",name:\"Liberia\"},\n            \/\/     {code:\"Li\",name:\"Liechtenstein\"},\n            \/\/     {code:\"LT\",name:\"Lithuania\"},\n            \/\/     {code:\"LU\",name:\"Luxembourg\"},\n            \/\/     {code:\"MO\",name:\"Macau\"},\n            \/\/     {code:\"MK\",name:\"Macedonia\"},\n            \/\/     {code:\"MG\",name:\"Madagascar\"},\n            \/\/     {code:\"MW\",name:\"Malawi\"},\n            \/\/     {code:\"MY\",name:\"Malaysia\"},\n            \/\/     {code:\"MV\",name:\"Maldives\"},\n            \/\/     {code:\"ML\",name:\"Mali\"},\n            \/\/     {code:\"MT\",name:\"Malta\"},\n            \/\/     {code:\"IM\",name:\"Mann\"},\n            \/\/     {code:\"MH\",name:\"Marshall Islands\"},\n            \/\/     {code:\"MQ\",name:\"Martinique\"},\n            \/\/     {code:\"MR\",name:\"Mauritania\"},\n            \/\/     {code:\"MU\",name:\"Mauritius\"},\n            \/\/     {code:\"YT\",name:\"Mayotte\"},\n            \/\/     {code:\"MX\",name:\"Mexico\"},\n            \/\/     {code:\"FM\",name:\"Micronesia\"},\n            \/\/     {code:\"MD\",name:\"Moldova\"},\n            \/\/     {code:\"MC\",name:\"Monaco\"},\n            \/\/     {code:\"MN\",name:\"Mongolia\"},\n            \/\/     {code:\"ME\",name:\"Montenegro\"},\n            \/\/     {code:\"MS\",name:\"Montserrat\"},\n            \/\/     {code:\"MA\",name:\"Morocco\"},\n            \/\/     {code:\"MZ\",name:\"Mozambique\"},\n            \/\/     {code:\"MM\",name:\"Myanmar\"},\n            \/\/     {code:\"NA\",name:\"Namibia\"},\n            \/\/     {code:\"NR\",name:\"Nauru\"},\n            \/\/     {code:\"NP\",name:\"Nepal\"},\n            \/\/     {code:\"NL\",name:\"Netherlands\"},\n            \/\/     {code:\"AN\",name:\"Netherlands Antilles\"},\n            \/\/     {code:\"NC\",name:\"New Caledonia\"},\n            \/\/     {code:\"NZ\",name:\"New Zealand\"},\n            \/\/     {code:\"NI\",name:\"Nicaragua\"},\n            \/\/     {code:\"NE\",name:\"Niger\"},\n            \/\/     {code:\"NG\",name:\"Nigeria\"},\n            \/\/     {code:\"NU\",name:\"Niue\"},\n            \/\/     {code:\"NF\",name:\"Norfolk Island\"},\n            \/\/     {code:\"MP\",name:\"Northern Mariana Islands\"},\n            \/\/     {code:\"NO\",name:\"Norway\"},\n            \/\/     {code:\"OM\",name:\"Oman\"},\n            \/\/     {code:\"PK\",name:\"Pakistan\"},\n            \/\/     {code:\"PW\",name:\"Palau\"},\n            \/\/     {code:\"PS\",name:\"Palestine\"},\n            \/\/     {code:\"PA\",name:\"Panama\"},\n            \/\/     {code:\"PG\",name:\"Papua New Guinea\"},\n            \/\/     {code:\"PY\",name:\"Paraguay\"},\n            \/\/     {code:\"PE\",name:\"Peru\"},\n            \/\/     {code:\"PH\",name:\"Philippines\"},\n            \/\/     {code:\"PN\",name:\"Pitcairn Islands\"},\n            \/\/     {code:\"PL\",name:\"Poland\"},\n            \/\/     {code:\"PT\",name:\"Portugal\"},\n            \/\/     {code:\"PR\",name:\"Puerto Rico\"},\n            \/\/     {code:\"QA\",name:\"Qatar\"},\n            \/\/     {code:\"RE\",name:\"R\u00e9union\"},\n            \/\/     {code:\"RO\",name:\"Romania\"},\n            \/\/     {code:\"RU\",name:\"Russia\"},\n            \/\/     {code:\"RW\",name:\"Rwanda\"},\n            \/\/     {code:\"BL\",name:\"Saint Barthelemy\"},\n            \/\/     {code:\"SH\",name:\"Saint Helena\"},\n            \/\/     {code:\"KN\",name:\"Saint Kitts and Nevis\"},\n            \/\/     {code:\"LC\",name:\"Saint Lucia\"},\n            \/\/     {code:\"MF\",name:\"Saint Martin\"},\n            \/\/     {code:\"PM\",name:\"Saint Pierre and Miquelon\"},\n            \/\/     {code:\"VC\",name:\"Saint Vincent and the Grenadines\"},\n            \/\/     {code:\"WS\",name:\"Samoa\"},\n            \/\/     {code:\"SM\",name:\"San Marino\"},\n            \/\/     {code:\"ST\",name:\"S\u00e3o Tom\u00e9 and Pr\u00edncipe\"},\n            \/\/     {code:\"SA\",name:\"Saudi Arabia\"},\n            \/\/     {code:\"SN\",name:\"Senegal\"},\n            \/\/     {code:\"RS\",name:\"Serbia\"},\n            \/\/     {code:\"SC\",name:\"Seychelles\"},\n            \/\/     {code:\"SL\",name:\"Sierra Leone\"},\n            \/\/     {code:\"SG\",name:\"Singapore\"},\n            \/\/     {code:\"SK\",name:\"Slovakia\"},\n            \/\/     {code:\"SI\",name:\"Slovenia\"},\n            \/\/     {code:\"SB\",name:\"Solomon Islands\"},\n            \/\/     {code:\"ZA\",name:\"South Africa\"},\n            \/\/     {code:\"GS\",name:\"South Georgia and the South Sandwich Islands\"},\n            \/\/     {code:\"KR\",name:\"South Korea\"},\n            \/\/     {code:\"ES\",name:\"Spain\"},\n            \/\/     {code:\"LK\",name:\"Sri Lanka\"},\n            \/\/     {code:\"SR\",name:\"Suriname\"},\n            \/\/     {code:\"SJ\",name:\"Svalbard and Jan Mayen\"},\n            \/\/     {code:\"SZ\",name:\"Swaziland\"},\n            \/\/     {code:\"SE\",name:\"Sweden\"},\n            \/\/     {code:\"CH\",name:\"Switzerland\"},\n            \/\/     {code:\"TW\",name:\"Taiwan\"},\n            \/\/     {code:\"TJ\",name:\"Tajikistan\"},\n            \/\/     {code:\"TZ\",name:\"Tanzania\"},\n            \/\/     {code:\"TH\",name:\"Thailand\"},\n            \/\/     {code:\"TG\",name:\"Togo\"},\n            \/\/     {code:\"TK\",name:\"Tokelau\"},\n            \/\/     {code:\"TO\",name:\"Tonga\"},\n            \/\/     {code:\"TT\",name:\"Trinidad and Tobago\"},\n            \/\/     {code:\"TN\",name:\"Tunisia\"},\n            \/\/     {code:\"TR\",name:\"Turkey\"},\n            \/\/     {code:\"TM\",name:\"Turkmenistan\"},\n            \/\/     {code:\"TC\",name:\"Turks and Caicos Islands\"},\n            \/\/     {code:\"TV\",name:\"Tuvalu\"},\n            \/\/     {code:\"UG\",name:\"Uganda\"},\n            \/\/     {code:\"UA\",name:\"Ukraine\"},\n            \/\/     {code:\"AE\",name:\"United Arab Emirates\"},\n            \/\/     {code:\"GB\",name:\"United Kingdom\"},\n            \/\/     {code:\"UN\",name:\"United Nations\"},\n            \/\/     {code:\"US\",name:\"United States\"},\n            \/\/     {code:\"UM\",name:\"United States Minor Outlying Islands\"},\n            \/\/     {code:\"VI\",name:\"United States Virgin Islands\"},\n            \/\/     {code:\"UY\",name:\"Uruguay\"},\n            \/\/     {code:\"UZ\",name:\"Uzbekistan\"},\n            \/\/     {code:\"VU\",name:\"Vanuatu\"},\n            \/\/     {code:\"VE\",name:\"Venezuela\"},\n            \/\/     {code:\"VN\",name:\"Vietnam\"},\n            \/\/     {code:\"WF\",name:\"Wallis and Futuna\"},\n            \/\/     {code:\"EH\",name:\"Western Sahara\"},\n            \/\/     {code:\"ZM\",name:\"Zambia\"}\n            \/\/ ]\n            const homeCountryData = [\n                { code: \"AF\", name: \"Afghanistan\", dialCode: \"+93\" },\n                { code: \"AX\", name: \"Aland Islands\", dialCode: \"+358\" },\n                { code: \"AL\", name: \"Albania\", dialCode: \"+355\" },\n                { code: \"DZ\", name: \"Algeria\", dialCode: \"+213\" },\n                { code: \"AS\", name: \"American Samoa\", dialCode: \"+1-684\" },\n                { code: \"AD\", name: \"Andorra\", dialCode: \"+376\" },\n                { code: \"AO\", name: \"Angola\", dialCode: \"+244\" },\n                { code: \"AI\", name: \"Anguilla\", dialCode: \"+1-264\" },\n                { code: \"AQ\", name: \"Antarctica\", dialCode: \"+672\" },\n                { code: \"AG\", name: \"Antigua and Barbuda\", dialCode: \"+1-268\" },\n                { code: \"AR\", name: \"Argentina\", dialCode: \"+54\" },\n                { code: \"AM\", name: \"Armenia\", dialCode: \"+374\" },\n                { code: \"AW\", name: \"Aruba\", dialCode: \"+297\" },\n                { code: \"AU\", name: \"Australia\", dialCode: \"+61\" },\n                { code: \"AT\", name: \"Austria\", dialCode: \"+43\" },\n                { code: \"AZ\", name: \"Azerbaijan\", dialCode: \"+994\" },\n                { code: \"BS\", name: \"Bahamas\", dialCode: \"+1-242\" },\n                { code: \"BH\", name: \"Bahrain\", dialCode: \"+973\" },\n                { code: \"BD\", name: \"Bangladesh\", dialCode: \"+880\" },\n                { code: \"BB\", name: \"Barbados\", dialCode: \"+1-246\" },\n                { code: \"BE\", name: \"Belgium\", dialCode: \"+32\" },\n                { code: \"BZ\", name: \"Belize\", dialCode: \"+501\" },\n                { code: \"BJ\", name: \"Benin\", dialCode: \"+229\" },\n                { code: \"BM\", name: \"Bermuda\", dialCode: \"+1-441\" },\n                { code: \"BT\", name: \"Bhutan\", dialCode: \"+975\" },\n                { code: \"BO\", name: \"Bolivia\", dialCode: \"+591\" },\n                { code: \"BA\", name: \"Bosnia and Herzegovina\", dialCode: \"+387\" },\n                { code: \"BW\", name: \"Botswana\", dialCode: \"+267\" },\n                { code: \"BV\", name: \"Bouvet Island\", dialCode: \"+47\" },\n                { code: \"BR\", name: \"Brazil\", dialCode: \"+55\" },\n                { code: \"IO\", name: \"British Indian Ocean Territory\", dialCode: \"+246\" },\n                { code: \"VG\", name: \"British Virgin Islands\", dialCode: \"+1-284\" },\n                { code: \"BN\", name: \"Brunei\", dialCode: \"+673\" },\n                { code: \"BG\", name: \"Bulgaria\", dialCode: \"+359\" },\n                { code: \"BF\", name: \"Burkina Faso\", dialCode: \"+226\" },\n                { code: \"BI\", name: \"Burundi\", dialCode: \"+257\" },\n                { code: \"KH\", name: \"Cambodia\", dialCode: \"+855\" },\n                { code: \"CM\", name: \"Cameroon\", dialCode: \"+237\" },\n                { code: \"CA\", name: \"Canada\", dialCode: \"+1\" },\n                { code: \"CV\", name: \"Cape Verde\", dialCode: \"+238\" },\n                { code: \"KY\", name: \"Cayman Islands\", dialCode: \"+1-345\" },\n                { code: \"TD\", name: \"Chad\", dialCode: \"+235\" },\n                { code: \"CL\", name: \"Chile\", dialCode: \"+56\" },\n                { code: \"CN\", name: \"China\", dialCode: \"+86\" },\n                { code: \"CX\", name: \"Christmas Island\", dialCode: \"+61\" },\n                { code: \"CC\", name: \"Cocos Islands\", dialCode: \"+61\" },\n                { code: \"CO\", name: \"Colombia\", dialCode: \"+57\" },\n                { code: \"KM\", name: \"Comoros\", dialCode: \"+269\" },\n                { code: \"CG\", name: \"Congo-Brazzaville (Republic)\", dialCode: \"+242\" },\n                { code: \"CK\", name: \"Cook Islands\", dialCode: \"+682\" },\n                { code: \"CR\", name: \"Costa Rica\", dialCode: \"+506\" },\n                { code: \"CI\", name: \"C\u00f4te d'Ivoire\", dialCode: \"+225\" },\n                { code: \"HR\", name: \"Croatia\", dialCode: \"+385\" },\n                { code: \"CY\", name: \"Cyprus\", dialCode: \"+357\" },\n                { code: \"CZ\", name: \"Czech Republic\", dialCode: \"+420\" },\n                { code: \"DK\", name: \"Denmark\", dialCode: \"+45\" },\n                { code: \"DJ\", name: \"Djibouti\", dialCode: \"+253\" },\n                { code: \"DM\", name: \"Dominica\", dialCode: \"+1-767\" },\n                { code: \"DO\", name: \"Dominican Republic\", dialCode: \"+1-809\" },\n                { code: \"TL\", name: \"East Timor\", dialCode: \"+670\" },\n                { code: \"EC\", name: \"Ecuador\", dialCode: \"+593\" },\n                { code: \"EG\", name: \"Egypt\", dialCode: \"+20\" },\n                { code: \"SV\", name: \"El Salvador\", dialCode: \"+503\" },\n                { code: \"GQ\", name: \"Equatorial Guinea\", dialCode: \"+240\" },\n                { code: \"ER\", name: \"Eritrea\", dialCode: \"+291\" },\n                { code: \"EE\", name: \"Estonia\", dialCode: \"+372\" },\n                { code: \"ET\", name: \"Ethiopia\", dialCode: \"+251\" },\n                { code: \"FK\", name: \"Falkland Islands (Malvinas)\", dialCode: \"+500\" },\n                { code: \"FO\", name: \"Faroe Islands\", dialCode: \"+298\" },\n                { code: \"FJ\", name: \"Fiji\", dialCode: \"+679\" },\n                { code: \"FI\", name: \"Finland\", dialCode: \"+358\" },\n                { code: \"FR\", name: \"France\", dialCode: \"+33\" },\n                { code: \"GF\", name: \"French Guiana\", dialCode: \"+594\" },\n                { code: \"PF\", name: \"French Polynesia\", dialCode: \"+689\" },\n                { code: \"TF\", name: \"French Southern and Antarctic Lands\", dialCode: \"+262\" },\n                { code: \"GA\", name: \"Gabon\", dialCode: \"+241\" },\n                { code: \"GM\", name: \"Gambia\", dialCode: \"+220\" },\n                { code: \"GE\", name: \"Georgia\", dialCode: \"+995\" },\n                { code: \"DE\", name: \"Germany\", dialCode: \"+49\" },\n                { code: \"GH\", name: \"Ghana\", dialCode: \"+233\" },\n                { code: \"GI\", name: \"Gibraltar\", dialCode: \"+350\" },\n                { code: \"GR\", name: \"Greece\", dialCode: \"+30\" },\n                { code: \"GL\", name: \"Greenland\", dialCode: \"+299\" },\n                { code: \"GD\", name: \"Grenada\", dialCode: \"+1-473\" },\n                { code: \"GP\", name: \"Guadeloupe\", dialCode: \"+590\" },\n                { code: \"GU\", name: \"Guam\", dialCode: \"+1-671\" },\n                { code: \"GT\", name: \"Guatemala\", dialCode: \"+502\" },\n                { code: \"GG\", name: \"Guernsey\", dialCode: \"+44\" },\n                { code: \"GN\", name: \"Guinea\", dialCode: \"+224\" },\n                { code: \"GW\", name: \"Guinea-Bissau\", dialCode: \"+245\" },\n                { code: \"GY\", name: \"Guyana\", dialCode: \"+592\" },\n                { code: \"HT\", name: \"Haiti\", dialCode: \"+509\" },\n                { code: \"HM\", name: \"Heard Island and McDonald Islands\", dialCode: \"+672\" },\n                { code: \"VA\", name: \"Holy See (Vatican City)\", dialCode: \"+379\" },\n                { code: \"HN\", name: \"Honduras\", dialCode: \"+504\" },\n                { code: \"HK\", name: \"Hong Kong\", dial: \"Colombia\", dialCode: \"+852\" },\n                { code: \"KM\", name: \"Comoros\", dialCode: \"+269\" },\n                { code: \"CG\", name: \"Congo-Brazzaville (Republic)\", dialCode: \"+242\" },\n                { code: \"CK\", name: \"Cook Islands\", dialCode: \"+682\" },\n                { code: \"CR\", name: \"Costa Rica\", dialCode: \"+506\" },\n                { code: \"CI\", name: \"C\u00f4te d'Ivoire\", dialCode: \"+225\" },\n                { code: \"HR\", name: \"Croatia\", dialCode: \"+385\" },\n                { code: \"CY\", name: \"Cyprus\", dialCode: \"+357\" },\n                { code: \"CZ\", name: \"Czech Republic\", dialCode: \"+420\" },\n                { code: \"DK\", name: \"Denmark\", dialCode: \"+45\" },\n                { code: \"DJ\", name: \"Djibouti\", dialCode: \"+253\" },\n                { code: \"DM\", name: \"Dominica\", dialCode: \"+1-767\" },\n                { code: \"DO\", name: \"Dominican Republic\", dialCode: \"+1-809\" },\n                { code: \"TL\", name: \"East Timor\", dialCode: \"+670\" },\n                { code: \"EC\", name: \"Ecuador\", dialCode: \"+593\" },\n                { code: \"EG\", name: \"Egypt\", dialCode: \"+20\" },\n                { code: \"SV\", name: \"El Salvador\", dialCode: \"+503\" },\n                { code: \"GQ\", name: \"Equatorial Guinea\", dialCode: \"+240\" },\n                { code: \"ER\", name: \"Eritrea\", dialCode: \"+291\" },\n                { code: \"EE\", name: \"Estonia\", dialCode: \"+372\" },\n                { code: \"ET\", name: \"Ethiopia\", dialCode: \"+251\" },\n                { code: \"FK\", name: \"Falkland Islands (Malvinas)\", dialCode: \"+500\" },\n                { code: \"FO\", name: \"Faroe Islands\", dialCode: \"+298\" },\n                { code: \"FJ\", name: \"Fiji\", dialCode: \"+679\" },\n                { code: \"FI\", name: \"Finland\", dialCode: \"+358\" },\n                { code: \"FR\", name: \"France\", dialCode: \"+33\" },\n                { code: \"GF\", name: \"French Guiana\", dialCode: \"+594\" },\n                { code: \"PF\", name: \"French Polynesia\", dialCode: \"+689\" },\n                { code: \"TF\", name: \"French Southern and Antarctic Lands\", dialCode: \"+262\" },\n                { code: \"GA\", name: \"Gabon\", dialCode: \"+241\" },\n                { code: \"GM\", name: \"Gambia\", dialCode: \"+220\" },\n                { code: \"GE\", name: \"Georgia\", dialCode: \"+995\" },\n                { code: \"DE\", name: \"Germany\", dialCode: \"+49\" },\n                { code: \"GH\", name: \"Ghana\", dialCode: \"+233\" },\n                { code: \"GI\", name: \"Gibraltar\", dialCode: \"+350\" },\n                { code: \"GR\", name: \"Greece\", dialCode: \"+30\" },\n                { code: \"GL\", name: \"Greenland\", dialCode: \"+299\" },\n                { code: \"GD\", name: \"Grenada\", dialCode: \"+1-473\" },\n                { code: \"GP\", name: \"Guadeloupe\", dialCode: \"+590\" },\n                { code: \"GU\", name: \"Guam\", dialCode: \"+1-671\" },\n                { code: \"GT\", name: \"Guatemala\", dialCode: \"+502\" },\n                { code: \"GG\", name: \"Guernsey\", dialCode: \"+44-1481\" },\n                { code: \"GN\", name: \"Guinea\", dialCode: \"+224\" },\n                { code: \"GW\", name: \"Guinea-Bissau\", dialCode: \"+245\" },\n                { code: \"GY\", name: \"Guyana\", dialCode: \"+592\" },\n                { code: \"HT\", name: \"Haiti\", dialCode: \"+509\" },\n                { code: \"HM\", name: \"Heard Island and McDonald Islands\", dialCode: \"+61\" },\n                { code: \"VA\", name: \"Holy See (Vatican City)\", dialCode: \"+379\" },\n                { code: \"HN\", name: \"Honduras\", dialCode: \"+504\" },\n                { code: \"HK\", name: \"Hong Kong\", dialCode: \"+852\" },\n                { code: \"HU\", name: \"Hungary\", dialCode: \"+36\" },\n                { code: \"IS\", name: \"Iceland\", dialCode: \"+354\" },\n                { code: \"IN\", name: \"India\", dialCode: \"+91\" },\n                { code: \"ID\", name: \"Indonesia\", dialCode: \"+62\" },\n                { code: \"IE\", name: \"Ireland\", dialCode: \"+353\" },\n                { code: \"IL\", name: \"Israel\", dialCode: \"+972\" },\n                { code: \"IT\", name: \"Italy\", dialCode: \"+39\" },\n                { code: \"JM\", name: \"Jamaica\", dialCode: \"+1-876\" },\n                { code: \"JP\", name: \"Japan\", dialCode: \"+81\" },\n                { code: \"JE\", name: \"Jersey\", dialCode: \"+44-1534\" },\n                { code: \"JO\", name: \"Jordan\", dialCode: \"+962\" },\n                { code: \"KZ\", name: \"Kazakhstan\", dialCode: \"+7\" },\n                { code: \"KE\", name: \"Kenya\", dialCode: \"+254\" },\n                { code: \"KI\", name: \"Kiribati\", dialCode: \"+686\" },\n                { code: \"XK\", name: \"Kosovo\", dialCode: \"+383\" },\n                { code: \"KW\", name: \"Kuwait\", dialCode: \"+965\" },\n                { code: \"KG\", name: \"Kyrgyzstan\", dialCode: \"+996\" },\n                { code: \"LA\", name: \"Laos\", dialCode: \"+856\" },\n                { code: \"LV\", name: \"Latvia\", dialCode: \"+371\" },\n                { code: \"LB\", name: \"Lebanon\", dialCode: \"+961\" },\n                { code: \"LS\", name: \"Lesotho\", dialCode: \"+266\" },\n                { code: \"LR\", name: \"Liberia\", dialCode: \"+231\" },\n                { code: \"Li\", name: \"Liechtenstein\", dialCode: \"+423\" },\n                { code: \"LT\", name: \"Lithuania\", dialCode: \"+370\" },\n                { code: \"LU\", name: \"Luxembourg\", dialCode: \"+352\" },\n                { code: \"MO\", name: \"Macau\", dialCode: \"+853\" },\n                { code: \"MK\", name: \"Macedonia\", dialCode: \"+389\" },\n                { code: \"MG\", name: \"Madagascar\", dialCode: \"+261\" },\n                { code: \"MW\", name: \"Malawi\", dialCode: \"+265\" },\n                { code: \"MY\", name: \"Malaysia\", dialCode: \"+60\" },\n                { code: \"MV\", name: \"Maldives\", dialCode: \"+960\" },\n                { code: \"ML\", name: \"Mali\", dialCode: \"+223\" },\n                { code: \"MT\", name: \"Malta\", dialCode: \"+356\" },\n                { code: \"IM\", name: \"Mann\", dialCode: \"+44-1624\" },\n                { code: \"MH\", name: \"Marshall Islands\", dialCode: \"+692\" },\n                { code: \"MQ\", name: \"Martinique\", dialCode: \"+596\" },\n                { code: \"MR\", name: \"Mauritania\", dialCode: \"+222\" },\n                { code: \"MU\", name: \"Mauritius\", dialCode: \"+230\" },\n                { code: \"YT\", name: \"Mayotte\", dialCode: \"+262\" },\n                { code: \"MX\", name: \"Mexico\", dialCode: \"+52\" },\n                { code: \"FM\", name: \"Micronesia\", dialCode: \"+691\" },\n                { code: \"MD\", name: \"Moldova\", dialCode: \"+373\" },\n                { code: \"MC\", name: \"Monaco\", dialCode: \"+377\" },\n                { code: \"MN\", name: \"Mongolia\", dialCode: \"+976\" },\n                { code: \"ME\", name: \"Montenegro\", dialCode: \"+382\" },\n                { code: \"MS\", name: \"Montserrat\", dialCode: \"+1-664\" },\n                { code: \"MA\", name: \"Morocco\", dialCode: \"+212\" },\n                { code: \"MZ\", name: \"Mozambique\", dialCode: \"+258\" },\n                { code: \"MM\", name: \"Myanmar\", dialCode: \"+95\" },\n                { code: \"NA\", name: \"Namibia\", dialCode: \"+264\" },\n                { code: \"NR\", name: \"Nauru\", dialCode: \"+674\" },\n                { code: \"NP\", name: \"Nepal\", dialCode: \"+977\" },\n                { code: \"NL\", name: \"Netherlands\", dialCode: \"+31\" },\n                { code: \"NC\", name: \"New Caledonia\", dialCode: \"+687\" },\n                { code: \"NZ\", name: \"New Zealand\", dialCode: \"+64\" },\n                { code: \"NI\", name: \"Nicaragua\", dialCode: \"+505\" },\n                { code: \"NE\", name: \"Niger\", dialCode: \"+227\" },\n                { code: \"NG\", name: \"Nigeria\", dialCode: \"+234\" },\n                { code: \"NU\", name: \"Niue\", dialCode: \"+683\" },\n                { code: \"NF\", name: \"Norfolk Island\", dialCode: \"+672\" },\n                { code: \"MP\", name: \"Northern Mariana Islands\", dialCode: \"+1-670\" },\n                { code: \"NO\", name: \"Norway\", dialCode: \"+47\" },\n                { code: \"OM\", name: \"Oman\", dialCode: \"+968\" },\n                { code: \"PK\", name: \"Pakistan\", dialCode: \"+92\" },\n                { code: \"PW\", name: \"Palau\", dialCode: \"+680\" },\n                { code: \"PA\", name: \"Panama\", dialCode: \"+507\" },\n                { code: \"PG\", name: \"Papua New Guinea\", dialCode: \"+675\" },\n                { code: \"PY\", name: \"Paraguay\", dialCode: \"+595\" },\n                { code: \"PE\", name: \"Peru\", dialCode: \"+51\" },\n                { code: \"PH\", name: \"Philippines\", dialCode: \"+63\" },\n                { code: \"PN\", name: \"Pitcairn Islands\", dialCode: \"+872\" },\n                { code: \"PL\", name: \"Poland\", dialCode: \"+48\" },\n                { code: \"PT\", name: \"Portugal\", dialCode: \"+351\" },\n                { code: \"PR\", name: \"Puerto Rico\", dialCode: \"+1-787\" },\n                { code: \"QA\", name: \"Qatar\", dialCode: \"+974\" },\n                { code: \"RE\", name: \"R\u00e9union\", dialCode: \"+262\" },\n                { code: \"RO\", name: \"Romania\", dialCode: \"+40\" },\n                { code: \"RU\", name: \"Russia\", dialCode: \"+7\" },\n                { code: \"RW\", name: \"Rwanda\", dialCode: \"+250\" },\n                { code: \"BL\", name: \"Saint Barth\u00e9lemy\", dialCode: \"+590\" },\n                { code: \"SH\", name: \"Saint Helena\", dialCode: \"+290\" },\n                { code: \"KN\", name: \"Saint Kitts and Nevis\", dialCode: \"+1-869\" },\n                { code: \"LC\", name: \"Saint Lucia\", dialCode: \"+1-758\" },\n                { code: \"MF\", name: \"Saint Martin\", dialCode: \"+590\" },\n                { code: \"PM\", name: \"Saint Pierre and Miquelon\", dialCode: \"+508\" },\n                { code: \"VC\", name: \"Saint Vincent and the Grenadines\", dialCode: \"+1-784\" },\n                { code: \"WS\", name: \"Samoa\", dialCode: \"+685\" },\n                { code: \"SM\", name: \"San Marino\", dialCode: \"+378\" },\n                { code: \"SA\", name: \"Saudi Arabia\", dialCode: \"+966\" },\n                { code: \"SN\", name: \"Senegal\", dialCode: \"+221\" },\n                { code: \"RS\", name: \"Serbia\", dialCode: \"+381\" },\n                { code: \"SC\", name: \"Seychelles\", dialCode: \"+248\" },\n                { code: \"SL\", name: \"Sierra Leone\", dialCode: \"+232\" },\n                { code: \"SG\", name: \"Singapore\", dialCode: \"+65\" },\n                { code: \"SX\", name: \"Sint Maarten\", dialCode: \"+1-721\" },\n                { code: \"SK\", name: \"Slovakia\", dialCode: \"+421\" },\n                { code: \"SI\", name: \"Slovenia\", dialCode: \"+386\" },\n                { code: \"SB\", name: \"Solomon Islands\", dialCode: \"+677\" },\n                { code: \"SO\", name: \"Somalia\", dialCode: \"+252\" },\n                { code: \"ZA\", name: \"South Africa\", dialCode: \"+27\" },\n                { code: \"KR\", name: \"South Korea\", dialCode: \"+82\" },\n                { code: \"ES\", name: \"Spain\", dialCode: \"+34\" },\n                { code: \"LK\", name: \"Sri Lanka\", dialCode: \"+94\" },\n                { code: \"SD\", name: \"Sudan\", dialCode: \"+249\" },\n                { code: \"SR\", name: \"Suriname\", dialCode: \"+597\" },\n                { code: \"SJ\", name: \"Svalbard and Jan Mayen\", dialCode: \"+47\" },\n                { code: \"SE\", name: \"Sweden\", dialCode: \"+46\" },\n                { code: \"CH\", name: \"Switzerland\", dialCode: \"+41\" },\n                { code: \"SY\", name: \"Syria\", dialCode: \"+963\" },\n                { code: \"TW\", name: \"Taiwan\", dialCode: \"+886\" },\n                { code: \"TJ\", name: \"Tajikistan\", dialCode: \"+992\" },\n                { code: \"TZ\", name: \"Tanzania\", dialCode: \"+255\" },\n                { code: \"TH\", name: \"Thailand\", dialCode: \"+66\" },\n                { code: \"TG\", name: \"Togo\", dialCode: \"+228\" },\n                { code: \"TK\", name: \"Tokelau\", dialCode: \"+690\" },\n                { code: \"TO\", name: \"Tonga\", dialCode: \"+676\" },\n                { code: \"TT\", name: \"Trinidad and Tobago\", dialCode: \"+1-868\" },\n                { code: \"TN\", name: \"Tunisia\", dialCode: \"+216\" },\n                { code: \"TR\", name: \"Turkey\", dialCode: \"+90\" },\n                { code: \"TM\", name: \"Turkmenistan\", dialCode: \"+993\" },\n                { code: \"TC\", name: \"Turks and Caicos Islands\", dialCode: \"+1-649\" },\n                { code: \"TV\", name: \"Tuvalu\", dialCode: \"+688\" },\n                { code: \"UG\", name: \"Uganda\", dialCode: \"+256\" },\n                { code: \"UA\", name: \"Ukraine\", dialCode: \"+380\" },\n                { code: \"AE\", name: \"United Arab Emirates\", dialCode: \"+971\" },\n                { code: \"GB\", name: \"United Kingdom\", dialCode: \"+44\" },\n                { code: \"US\", name: \"United States\", dialCode: \"+1\" },\n                { code: \"UY\", name: \"Uruguay\", dialCode: \"+598\" },\n                { code: \"UZ\", name: \"Uzbekistan\", dialCode: \"+998\" },\n                { code: \"VU\", name: \"Vanuatu\", dialCode: \"+678\" },\n                { code: \"VE\", name: \"Venezuela\", dialCode: \"+58\" },\n                { code: \"VN\", name: \"Vietnam\", dialCode: \"+84\" },\n                { code: \"WF\", name: \"Wallis and Futuna\", dialCode: \"+681\" },\n                { code: \"EH\", name: \"Western Sahara\", dialCode: \"+212\" },\n                { code: \"YE\", name: \"Yemen\", dialCode: \"+967\" },\n                { code: \"ZM\", name: \"Zambia\", dialCode: \"+260\" },\n                { code: \"ZW\", name: \"Zimbabwe\", dialCode: \"+263\" }\n            ];\n            const homeCountryCodeAliases = Object.freeze({\n                CHN: 'CN', HKG: 'HK', TWN: 'TW', USA: 'US', GBR: 'GB',\n                CAN: 'CA', AUS: 'AU', IND: 'IN', JPN: 'JP', KOR: 'KR',\n                SGP: 'SG', MYS: 'MY'\n            })\n            const resolveHomeCountryCode = (...values) => {\n                for (const value of values) {\n                    const normalizedValue = normalizeTextValue(value)\n                    if (!normalizedValue) continue\n                    const upperValue = normalizedValue.toUpperCase()\n                    const normalizedCode = homeCountryCodeAliases[upperValue] || upperValue\n                    const country = homeCountryData.find((item) =>\n                        normalizeTextValue(item.code).toUpperCase() === normalizedCode\n                        || normalizeTextValue(item.name).toLowerCase() === normalizedValue.toLowerCase()\n                    )\n                    if (country) return country.code\n                }\n                return ''\n            }\n\n            \/\/ \u5982\u679c\u5bb6\u5ead\u56fd\u5bb6\u7684iso2\u7801\u5339\u914d\uff0c\u5219\u8fd4\u56de\u56fd\u5bb6\u7684\u5168\u540d\n            const HomeCountry=computed(() => {\n                \/\/ \u4ece inputDataTwo \u4e2d\u83b7\u53d6\u5230\u9700\u8981\u6bd4\u8f83\u7684 'value'\uff0c\u5047\u8bbe\u5b83\u5728\u7b2c 6 \u4e2a\u5143\u7d20\n                const targetCode = inputDataTwo[5].value;\n                let result = null\n                \/\/ \u5982\u679c\u76ee\u6807\u503c\u5b58\u5728\uff0c\u904d\u5386\u6570\u7ec4\uff0c\u5bfb\u627e\u5339\u914d\u7684\u9879\n                for (let i = 0; i < homeCountryData.length; i++) {\n                    if (homeCountryData[i].code === targetCode) {\n                        result = homeCountryData[i].name;\n                        break;  \/\/ \u627e\u5230\u540e\u76f4\u63a5\u8df3\u51fa\u5faa\u73af\n                    }\n                }\n\n                \/\/ \u5982\u679c\u627e\u5230\u4e86\u5339\u914d\u7684\u9879\uff0c\u8fd4\u56de name\uff0c\u5426\u5219\u8fd4\u56de null \u6216\u5176\u4ed6\u9ed8\u8ba4\u503c\n                return result;\n            });\n            \/\/ \u76ee\u6807\u5730\u533a\uff0c\u5982\u679c\u76ee\u6807\u5730\u533a\u7684code\u5339\u914d\uff0c\u5219\u8fd4\u56de\u5168\u540d\n            \/\/ const dsState = computed(() => {\n            \/\/     \/\/ \u4ece inputDataTwo \u4e2d\u83b7\u53d6\u5230\u9700\u8981\u6bd4\u8f83\u7684 'value'\uff0c\u5047\u8bbe\u5b83\u5728\u7b2c 6 \u4e2a\u5143\u7d20\n            \/\/     const targetCode = State.value;  \/\/ \u4f7f\u7528\u53ef\u9009\u94fe\u64cd\u4f5c\u7b26\u9632\u6b62\u8d8a\u754c\n            \/\/     let result = null\n            \/\/     \/\/ \u5982\u679c\u76ee\u6807\u503c\u5b58\u5728\uff0c\u904d\u5386\u6570\u7ec4\uff0c\u5bfb\u627e\u5339\u914d\u7684\u9879\n            \/\/     for (let i = 0; i < dState.length; i++) {\n            \/\/         if (dState[i].code === targetCode) {\n            \/\/             result = dState[i].name;\n            \/\/             break;  \/\/ \u627e\u5230\u540e\u76f4\u63a5\u8df3\u51fa\u5faa\u73af\n            \/\/         }\n            \/\/     }\n            \/\/\n            \/\/     \/\/ \u5982\u679c\u627e\u5230\u4e86\u5339\u914d\u7684\u9879\uff0c\u8fd4\u56de name\uff0c\u5426\u5219\u8fd4\u56de null \u6216\u5176\u4ed6\u9ed8\u8ba4\u503c\n            \/\/     return result;\n            \/\/ });\n            \/\/ \u5bb6\u5ead\u5730\u533a\u6570\u636e\u53ef\u80fd\u6765\u81ea\u65b0\u7248 window \u53d8\u91cf\uff0c\u4e5f\u517c\u5bb9\u65e7\u7248\u5168\u5c40\u53d8\u91cf\u3002\n            const getCountryStateData = () => {\n                if (Array.isArray(window.US_ENROLL_REGIONS)) return window.US_ENROLL_REGIONS\n                if (Array.isArray(window.coutry_state)) return window.coutry_state\n                return []\n            }\n            const normalizeCountryLookupValue = (value) => normalizeTextValue(value).toLowerCase()\n            \/\/ \u5bb6\u5ead\u5730\u533a\u7684options\u9009\u9879\u6570\u636e\n            const homeStatesOption = ref([])\n            \/\/ \u652f\u6301 ISO2\u3001ISO3 \u548c\u56fd\u5bb6\u82f1\u6587\u540d\uff0c\u907f\u514d\u5386\u53f2\u8ba2\u5355\u5b57\u6bb5\u683c\u5f0f\u4e0d\u4e00\u81f4\u5bfc\u81f4\u7a7a\u5217\u8868\u3002\n            const code_verify = (country) => {\n                const countryValue = normalizeCountryLookupValue(country)\n                if (!countryValue) {\n                    homeStatesOption.value = []\n                    return false\n                }\n                const matchedCountry = getCountryStateData().find((item) => {\n                    return [item?.iso2, item?.iso3, item?.name]\n                        .some((value) => normalizeCountryLookupValue(value) === countryValue)\n                })\n                homeStatesOption.value = Array.isArray(matchedCountry?.states)\n                    ? matchedCountry.states.filter((item) => normalizeTextValue(item?.name))\n                    : []\n                return Boolean(matchedCountry)\n            }\n            const resolveHomeStateSelection = (stateValue) => {\n                const rawState = normalizeTextValue(stateValue)\n                if (!rawState) return ''\n                const normalizedRawState = rawState.toLowerCase()\n                const matchedState = homeStatesOption.value.find((item) => {\n                    const code = normalizeTextValue(item?.state_code || item?.code).toLowerCase()\n                    const name = normalizeTextValue(item?.name).toLowerCase()\n                    return normalizedRawState === code || normalizedRawState === name\n                })\n                if (matchedState) return normalizeTextValue(matchedState.name)\n                return homeStatesOption.value.length ? '' : rawState\n            }\n            const syncHomeStateOptions = (countryCode, stateValue = '') => {\n                const normalizedCountry = normalizeTextValue(countryCode)\n                if (normalizedCountry) {\n                    code_verify(normalizedCountry)\n                } else {\n                    homeStatesOption.value = []\n                }\n                HomeState.value = stateValue ? resolveHomeStateSelection(stateValue) : ''\n            }\n            \/\/ \u5bb6\u5ead\u5730\u533a\u7684select\u6846\u7ed1\u5b9a\u7684\u503c\n            const HomeState = ref(\"\")\n            watch(\n                () => inputDataTwo[5].value,\n                (newCountry) => {\n                    const currentState = HomeState.value\n                    syncHomeStateOptions(newCountry, currentState)\n                },\n                { immediate: true }\n            )\n            \/\/ \u5bb6\u5ead\u5730\u5740\u7684\u8f93\u5165\u6846\u6570\u636e\n            const homeData = reactive(\n                [\n                    {\n                        type: 'string',\n                        name: 'Address 1',\n                        id: \"Address1\",\n                        required: true,\n                        value: ''\n                    }, {\n                    type: 'string',\n                    name: 'Address 2',\n                    id: \"Address2\",\n                    required: false,\n                    value: ''\n                }, {\n                    type: 'string',\n                    name: 'City',\n                    id: \"City\",\n                    required: true,\n                    value: ''\n                }, {\n                    type: 'string',\n                    name: 'Postal code',\n                    id: \"PostalCode\",\n                    required: true,\n                    value: ''\n                }\n                ])\n            \/\/ \u76ee\u6807\u5730\u5740\u7684\u8f93\u5165\u6846\u6570\u636e\n            const destinationData = reactive(\n                [\n                    {\n                        type: 'string',\n                        name: 'Address 1',\n                        id: \"dAddress1\",\n                        required: true,\n                        value: ''\n                    }, {\n                    type: 'string',\n                    name: 'Address 2',\n                    id: \"dAddress2\",\n                    required: false,\n                    value: ''\n                }, {\n                    type: 'string',\n                    name: 'City',\n                    id: \"dCity\",\n                    required: true,\n                    value: ''\n                }, {\n                    type: 'string',\n                    name: 'Postal code',\n                    id: \"dPostalCode\",\n                    required: true,\n                    value: ''\n                }\n                ])\n            const addressStepSummary = computed(() => {\n                const addressParts = [\n                    homeData[0].value,\n                    homeData[2].value,\n                    HomeState.value,\n                    HomeCountry.value\n                ].map(normalizeTextValue).filter(Boolean)\n                if (addressParts.length) {\n                    return addressParts.join(' \u00b7 ')\n                }\n                return lang === 'zh' ? '\u539f\u5c45\u4f4f\u56fd\u5730\u5740\u548c\u7f8e\u56fd\u5730\u5740' : 'Home-country and U.S. destination address'\n            })\n            const addressFieldIds = new Set([\n                'Address1',\n                'Address2',\n                'City',\n                'PostalCode',\n                'dAddress1',\n                'dAddress2',\n                'dCity',\n                'dPostalCode'\n            ])\n            const postalFieldIds = new Set([\n                'PostalCode',\n                'dPostalCode'\n            ])\n            const alphanumericHomePostalCountries = new Set([\n                'CA',\n                'CANADA',\n                'GB',\n                'UK',\n                'UNITED KINGDOM',\n                'GREAT BRITAIN'\n            ])\n            const ADDRESS_ALLOWED_MESSAGE = 'Address fields only allow English letters, numbers, spaces, \".\" and \",\".'\n            const addressRequiredMessage = (label) => `${label} is required. Please use English letters, numbers, spaces, \".\" or \",\".`\n            let lastAddressWarningAt = 0\n            const showAddressInputHint = () => {\n                const currentTime = Date.now()\n                if (currentTime - lastAddressWarningAt < 1500) return\n                lastAddressWarningAt = currentTime\n                ElMessage.warning(ADDRESS_ALLOWED_MESSAGE)\n            }\n            const getRawAddressText = (value, allowPlaceholderText = false) => {\n                if (value === null || value === undefined) return ''\n                const text = String(value)\n                if (!allowPlaceholderText && ['undefined', 'null', 'nan', '[object object]'].includes(text.trim().toLowerCase())) return ''\n                return text\n            }\n            const isCityAddressField = (item) => ['City', 'dCity'].includes(item?.id)\n            const isAlphanumericHomePostalField = (item) => {\n                if (item?.id !== 'PostalCode') return false\n                const country = normalizeTextValue(inputDataTwo[5]?.value).toUpperCase()\n                return alphanumericHomePostalCountries.has(country)\n            }\n            const sanitizeAddressInputValue = (value, allowChinese = false) => {\n                const raw = getRawAddressText(value, allowChinese)\n                return allowChinese\n                    ? raw.replace(\/[^\\u4e00-\\u9fa5A-Za-z0-9.,\u00b7\\- ]\/g, '')\n                    : raw.replace(\/[^A-Za-z0-9., ]\/g, '')\n            }\n            const sanitizePostalInputValue = (value, allowAlphanumeric = false) => {\n                const raw = getRawAddressText(value)\n                return allowAlphanumeric\n                    ? raw.replace(\/[^A-Za-z0-9]\/g, '')\n                    : raw.replace(\/\\D\/g, '')\n            }\n            const normalizeAddressForSubmit = (value, allowChinese = false) => {\n                const normalized = sanitizeAddressInputValue(value, allowChinese)\n                return allowChinese\n                    ? normalized.replace(\/[^\\u4e00-\\u9fa5A-Za-z0-9]\/g, ' ').replace(\/\\s+\/g, ' ').trim()\n                    : normalized.replace(\/[^A-Za-z0-9]\/g, ' ').replace(\/\\s+\/g, ' ').trim()\n            }\n            const normalizePostalForSubmit = (value, allowAlphanumeric = false) => {\n                return sanitizePostalInputValue(value, allowAlphanumeric).trim()\n            }\n            const getAddressSubmitValue = (item) => {\n                if (postalFieldIds.has(item?.id)) {\n                    return normalizePostalForSubmit(item?.value, isAlphanumericHomePostalField(item))\n                }\n                return normalizeAddressForSubmit(item?.value, isCityAddressField(item))\n            }\n            const getAddressInputType = (item) => {\n                if (!postalFieldIds.has(item?.id)) return item?.type || 'text'\n                return isAlphanumericHomePostalField(item) ? 'text' : 'tel'\n            }\n            const getAddressInputMode = (item) => {\n                if (!postalFieldIds.has(item?.id)) return 'text'\n                return isAlphanumericHomePostalField(item) ? 'text' : 'numeric'\n            }\n            const getAddressInputPattern = (item) => {\n                if (!postalFieldIds.has(item?.id)) return null\n                return isAlphanumericHomePostalField(item) ? '[A-Za-z0-9]*' : '[0-9]*'\n            }\n            const restrictAddressInput = (item, event = null) => {\n                if (!item || !addressFieldIds.has(item.id)) return\n                const cleanValue = postalFieldIds.has(item.id)\n                    ? sanitizePostalInputValue(event?.target?.value ?? item.value, isAlphanumericHomePostalField(item))\n                    : sanitizeAddressInputValue(event?.target?.value ?? item.value, isCityAddressField(item))\n                if (event?.target && event.target.value !== cleanValue) {\n                    event.target.value = cleanValue\n                    if (!postalFieldIds.has(item.id)) {\n                        showAddressInputHint()\n                    }\n                }\n                item.value = cleanValue\n            }\n            const sanitizeAddressCollection = () => {\n                const homeAddress2 = homeData.find((item) => item.id === 'Address2')\n                const destinationAddress2 = destinationData.find((item) => item.id === 'dAddress2')\n                if (homeAddress2) homeAddress2.value = ''\n                if (destinationAddress2) destinationAddress2.value = ''\n                homeData.forEach((item) => restrictAddressInput(item))\n                destinationData.forEach((item) => restrictAddressInput(item))\n            }\n            watch(\n                () => [\n                    inputDataTwo[5]?.value,\n                    ...homeData.map((item) => item.value),\n                    ...destinationData.map((item) => item.value)\n                ],\n                () => sanitizeAddressCollection()\n            )\n            \/\/ \u914d\u5076\u4fe1\u606f,\u6570\u636e\n            const SpouseData=ref([])\n            \/\/ \u76d1\u542cSpouseyesOrNo.value\u662f\u5426\u4e3aYes,\u4ece\u800c\u521b\u5efa\u8868\u5355\n            watch(\n                ()=>SpouseyesOrNo.value,\n                (newValue)=>{\n                    if (newValue !== \"Yes\") {\n                        spouseMember.firstName = ''\n                        spouseMember.middleName = ''\n                        spouseMember.lastName = ''\n                        spouseMember.dob = ''\n                    }\n                    if(newValue==\"Yes\"){\n                        SpouseData.value=[\n                            {\n                                type: 'string',\n                                name: 'First name',\n                                id: \"firstName1\",\n                                required: true,\n                                value: ''\n\n                            }, {\n                                type: 'string',\n                                name: 'Middle name',\n                                id: \"middleName1\",\n                                required: false,\n                                value: '',\n                            }, {\n                                type: 'string',\n                                name: 'Last name',\n                                id: \"lastName1\",\n                                required: true,\n                                value: '',\n                            }, {\n                                type: 'date',\n                                name: 'Date of birth',\n                                id: \"DateofBirth1\",\n                                required: true,\n                                value: SpouseDateofBirth.value,\n                            }, {\n                                type: 'select',\n                                name: 'Gender',\n                                id: \"Gender1\",\n                                required: true,\n                                value: '',\n                            }, {\n                                type: 'string',\n                                name: 'Email',\n                                id: \"Email1\",\n                                required: true,\n                                value: '',\n                            }, {\n                                type: 'string',\n                                name: 'Phone',\n                                id: \"Phone1\",\n                                required: true,\n                                value: '',\n                            },{\n                                type: 'select',\n                                name: 'Occupation',\n                                id: \"Occupation1\",\n                                required: true,\n                                value: '',\n                            }\n\n                        ]\n                    }\n                },{\n                    immediately:true\n                }\n            )\n            watch(\n                () => spouseMember.dob,\n                (newValue) => {\n                    SpouseDateofBirth.value = newValue || ''\n                }\n            )\n            const getCoverageStartDay = () => {\n                const start = dayjs(inputDataOne[0]?.value)\n                return start.isValid() ? start : dayjs()\n            }\n            const calculateAgeAtCoverageStart = (dob) => {\n                const birthDate = dayjs(dob)\n                const coverageStart = getCoverageStartDay()\n                if (!birthDate.isValid() || !coverageStart.isValid()) return null\n                let age = coverageStart.year() - birthDate.year()\n                if (\n                    coverageStart.month() < birthDate.month()\n                    || (coverageStart.month() === birthDate.month() && coverageStart.date() < birthDate.date())\n                ) {\n                    age--\n                }\n                return age\n            }\n            const getFamilyDobRange = (minAge, maxAge) => {\n                const coverageStart = getCoverageStartDay()\n                const minDob = coverageStart.subtract(maxAge + 1, 'year').add(1, 'day')\n                const maxDobByAge = coverageStart.subtract(minAge, 'year')\n                const today = dayjs()\n                const maxDob = maxDobByAge.isAfter(today, 'day') ? today : maxDobByAge\n                return {\n                    min: minDob.format('YYYY-MM-DD'),\n                    max: maxDob.format('YYYY-MM-DD')\n                }\n            }\n            const validateFamilyAge = (dob, minAge, maxAge, elementId, label) => {\n                const birthDate = dayjs(dob)\n                const dobRange = getFamilyDobRange(minAge, maxAge)\n                if (\n                    !birthDate.isValid()\n                    || birthDate.isBefore(dayjs(dobRange.min), 'day')\n                    || birthDate.isAfter(dayjs(dobRange.max), 'day')\n                ) {\n                    scrollToFamilyElement(elementId, `${label} must be ${minAge}-${maxAge} years old at coverage start date.`)\n                    return false\n                }\n                return true\n            }\n            const bindFamilyDatePicker = (id, setter, minAge = 17, maxAge = 45, attempt = 0) => {\n                nextTick(() => {\n                    const element = document.getElementById(id)\n                    if (!element) {\n                        if (attempt < 8) {\n                            setTimeout(() => bindFamilyDatePicker(id, setter, minAge, maxAge, attempt + 1), 120)\n                        }\n                        return\n                    }\n                    const dobRange = getFamilyDobRange(minAge, maxAge)\n                    if (\n                        element.dataset.familyDateBound === '1'\n                        && element.dataset.familyDateMin === dobRange.min\n                        && element.dataset.familyDateMax === dobRange.max\n                    ) return\n                    layui.use('laydate', function () {\n                        layui.laydate.render({\n                            elem: `#${id}`,\n                            lang: 'en',\n                            theme: \"#1558da\",\n                            btns: ['confirm'],\n                            min: dobRange.min,\n                            max: dobRange.max,\n                            done: (value) => {\n                                setter(value)\n                                requestQuote()\n                            }\n                        })\n                        element.dataset.familyDateBound = '1'\n                        element.dataset.familyDateMin = dobRange.min\n                        element.dataset.familyDateMax = dobRange.max\n                    })\n                })\n            }\n            const initFamilyDatePickers = () => {\n                if (SpouseyesOrNo.value === 'Yes') {\n                    bindFamilyDatePicker('SpouseDateofBirth', (value) => {\n                        spouseMember.dob = value\n                    }, 19, 45)\n                }\n                dependentMembers.value.forEach((dependent, index) => {\n                    bindFamilyDatePicker(`DependentDob${index + 1}`, (value) => {\n                        dependent.dob = value\n                    }, 0, 19)\n                })\n            }\n            watch(\n                () => SpouseyesOrNo.value,\n                () => initFamilyDatePickers()\n            )\n            \/\/ \u5c0f\u5b69\u4fe1\u606f\uff0c\u6570\u636e\n            \/\/ \u6839\u636e\u53d7\u629a\u517b\u4eba\u6570\u66f4\u65b0\u6570\u636e\n            watch(\n                ()=>numDependents.value,\n                (newValue)=>{\n                    const count = Math.max(0, Math.min(5, parseInt(newValue, 10) || 0))\n                    dependentMembers.value = Array.from({ length: count }, (_, index) => {\n                        const existing = dependentMembers.value[index] || {}\n                        return {\n                            key: existing.key || `dependent-${Date.now()}-${index}`,\n                            firstName: existing.firstName || '',\n                            middleName: existing.middleName || '',\n                            lastName: existing.lastName || '',\n                            dob: existing.dob || ''\n                        }\n                    })\n                    updateDependentsData(newValue)\n                    initFamilyDatePickers()\n                }\n            )\n            const dependentsArray = ref([]);\n            \/\/ \u6839\u636e\u5c0f\u5b69\u4eba\u6570\u521b\u5efa\u6570\u7ec4\n            function updateDependentsData(num) {\n                const baseFields = [\n                    { type: 'string', name: 'First Name', id: \"firstName\", required: true, value: '' },\n                    { type: 'string', name: 'Middle Name', id: \"middleName\", required: false, value: '' },\n                    { type: 'select', name: 'MaritalStatus', id: \"MaritalStatus\", required: true, value: '' },\n                    { type: 'string', name: 'Last Name', id: \"lastName\", required: true, value: '' },\n                    { type: 'date', name: 'Date of Birth', id: \"DateofBirth\", required: true, value: '' },\n                    { type: 'select', name: 'Gender', id: \"Gender\", required: true, value: '' },\n                    { type: 'string', name: 'Email', id: \"Email\", required: true, value: '' },\n                    { type: 'string', name: 'Phone', id: \"Phone\", required: true, value: '' },\n                    { type: 'select', name: 'Occupation', id: \"Occupation\", required: true, value: '' }\n                ];\n                dependentsArray.value=[]\n                \/\/ \u6839\u636e numDependents \u751f\u6210\u53d7\u629a\u517b\u4eba\u7684\u8868\u5355\u6570\u636e\n                for (let i = 0; i < num; i++) {\n                    dependentsArray.value.push(JSON.parse(JSON.stringify([\n                        { type: 'string', name: 'First Name', id: \"firstName\"+i+3, required: true, value: '' },\n                        { type: 'string', name: 'Middle Name', id: \"middleName\"+i+3, required: false, value: '' },\n                        { type: 'select', name: 'MaritalStatus', id: \"MaritalStatus\"+i+3, required: true, value: '' },\n                        { type: 'string', name: 'Last Name', id: \"lastName\"+i+3, required: true, value: '' },\n                        { type: 'date', name: 'Date of Birth', id: \"DateofBirth\"+i+3, required: true, value: '' },\n                        { type: 'select', name: 'Gender', id: \"Gender\"+i+3, required: true, value: '' },\n                        { type: 'string', name: 'Email', id: \"Email\"+i+3, required: true, value: '' },\n                        { type: 'string', name: 'Phone', id: \"Phone\"+i+3, required: true, value: '' },\n                        { type: 'select', name: 'Occupation', id: \"Occupation\"+i+3, required: true, value: '' }\n                    ]))); \/\/ \u590d\u5236 baseFields\n                }\n\n            }\n            const getFamilyMembersFromHistory = (userHistory, relationship) => {\n                const targetRelationship = normalizeTextValue(relationship).toLowerCase()\n                return (Array.isArray(userHistory?.members) ? userHistory.members : [])\n                    .filter((member) => normalizeTextValue(member?.memberRelationship).toLowerCase() === targetRelationship)\n            }\n            const applyFamilyStateFromHistory = (userHistory) => {\n                const spouse = getFamilyMembersFromHistory(userHistory, 'Spouse')[0]\n                const dependents = getFamilyMembersFromHistory(userHistory, 'Dependent')\n                if (spouse) {\n                    SpouseyesOrNo.value = 'Yes'\n                    spouseMember.firstName = normalizeTextValue(spouse.firstName)\n                    spouseMember.middleName = normalizeTextValue(spouse.middleName)\n                    spouseMember.lastName = normalizeTextValue(spouse.lastName)\n                    spouseMember.dob = normalizeDobForEnrollment(spouse.dob)\n                } else {\n                    SpouseyesOrNo.value = 'No'\n                }\n                numDependents.value = dependents.length\n                dependentMembers.value = dependents.map((dependent, index) => ({\n                    key: dependent.key || `dependent-restored-${index}`,\n                    firstName: normalizeTextValue(dependent.firstName),\n                    middleName: normalizeTextValue(dependent.middleName),\n                    lastName: normalizeTextValue(dependent.lastName),\n                    dob: normalizeDobForEnrollment(dependent.dob)\n                }))\n                updateDependentsData(numDependents.value)\n                nextTick(() => initFamilyDatePickers())\n            }\n            const enrollmentBackupIdentifierKeys = new Set([\n                'requestid',\n                'enrollmentid',\n                'enrollmentidentifier',\n                'orderid',\n                'memberid',\n                'individualid',\n                'primarymemberid',\n                'requestedindividualid',\n                'enrolledindividualid',\n                'paymentid',\n                'paymentintentid',\n                'transactionid',\n                'easytransferorderid'\n            ])\n            const sanitizeEnrollmentBackup = (value, path = []) => {\n                if (Array.isArray(value)) {\n                    return value.map((item) => sanitizeEnrollmentBackup(item, path))\n                }\n                if (!value || typeof value !== 'object') return value\n\n                const memberRecord = path.some((segment) => (\n                    ['member', 'members', 'dependent', 'dependents'].includes(String(segment).toLowerCase())\n                ))\n                return Object.keys(value).reduce((output, key) => {\n                    const normalizedKey = String(key).replace(\/[_\\-\\s]\/g, '').toLowerCase()\n                    if (enrollmentBackupIdentifierKeys.has(normalizedKey)) return output\n                    const orderRecordId = path.length === 0 && (normalizedKey === 'id' || normalizedKey === 'uuid')\n                    if (orderRecordId || (memberRecord && (normalizedKey === 'id' || normalizedKey === 'uuid'))) return output\n\n                    output[key] = sanitizeEnrollmentBackup(value[key], [...path, key])\n                    return output\n                }, {})\n            }\n            const saveEnrollmentDraft = (sourceData = null) => {\n                sanitizeAddressCollection()\n                const draft = sanitizeEnrollmentBackup(sourceData || {})\n                const getDraftCoverageDates = () => {\n                    const storedStart = localStorage.getItem('coverage_start_date')\n                    const storedEnd = localStorage.getItem('coverage_end_date')\n                    if (canUsePreferredCoveragePeriodDatesForPlan(storedStart, storedEnd)) {\n                        return {\n                            start: formatDate(storedStart),\n                            end: formatDate(storedEnd)\n                        }\n                    }\n                    if (canUsePreferredCoveragePeriodDatesForPlan(inputDataOne[0]?.value, inputDataOne[1]?.value)) {\n                        return {\n                            start: formatDate(inputDataOne[0].value),\n                            end: formatDate(inputDataOne[1].value)\n                        }\n                    }\n                    return { start: '', end: '' }\n                }\n                const draftCoverageDates = getDraftCoverageDates()\n                draft.form = {\n                    coverageStartDate: draftCoverageDates.start,\n                    coverageEndDate: draftCoverageDates.end,\n                    personal: JSON.parse(JSON.stringify(inputDataTwo)),\n                    phoneOrigin: inputDataThree[0]?.value || '',\n                    phoneDestination: inputDataThree[1]?.value || '',\n                    visaType: visaType.value,\n                    visaStartDate: inputDataSix[0]?.value || '',\n                    visaEndDate: inputDataSix[1]?.value || '',\n                    studentID: studentID.value,\n                    school: school.value,\n                    graduateDate: graduateDate.value,\n                    homeAddress: JSON.parse(JSON.stringify(homeData)),\n                    homeState: HomeState.value,\n                    destinationAddress: JSON.parse(JSON.stringify(destinationData)),\n                    destinationState: dsState.value\n                }\n                const shouldClearFamilyDraft = quotePremiums.value && !isFamilyOptionAvailable.value\n                draft.family = shouldClearFamilyDraft ? {\n                    spouse: {\n                        selected: 'No',\n                        firstName: '',\n                        middleName: '',\n                        lastName: '',\n                        dob: ''\n                    },\n                    dependents: []\n                } : {\n                    spouse: {\n                        selected: SpouseyesOrNo.value,\n                        ...JSON.parse(JSON.stringify(spouseMember))\n                    },\n                    dependents: JSON.parse(JSON.stringify(dependentMembers.value || []))\n                }\n                draft.yesOrNo = 'No'\n                localStorage.setItem('us_enrollment_draft', JSON.stringify(sanitizeEnrollmentBackup(draft)))\n            }\n            const normalizeTrackingStepKey = (step) => {\n                const value = String(step || nowForm.value || '').trim().toLowerCase()\n                if (value.includes('insurance')) return 'insurance'\n                if (value.includes('personal')) return 'personal'\n                if (value.includes('school')) return 'school'\n                if (value.includes('address')) return 'address'\n                if (value.includes('account')) return 'account'\n                if (value.includes('payment')) return 'payment'\n                return value.replace(\/[\\s-]+\/g, '_') || 'insurance'\n            }\n            const cleanTrackingPayload = (value, seen = new WeakSet()) => {\n                if (value === null || typeof value === 'undefined') return value\n                if (typeof value === 'function') return undefined\n                if (typeof value !== 'object') return value\n                if (seen.has(value)) return null\n                seen.add(value)\n                if (Array.isArray(value)) {\n                    return value.map((item) => cleanTrackingPayload(item, seen))\n                }\n                const output = {}\n                Object.keys(value).forEach((key) => {\n                    const normalizedKey = String(key).replace(\/[_\\-\\s]\/g, '').toLowerCase()\n                    if (normalizedKey === 'password' || normalizedKey === 'confirmpassword') {\n                        output[key] = value[key] ? '[provided]' : ''\n                        return\n                    }\n                    const cleaned = cleanTrackingPayload(value[key], seen)\n                    if (typeof cleaned !== 'undefined') {\n                        output[key] = cleaned\n                    }\n                })\n                return output\n            }\n            const getTrackingQueue = () => {\n                try {\n                    const queue = JSON.parse(localStorage.getItem(TRACKING_QUEUE_STORAGE_KEY) || '[]')\n                    return Array.isArray(queue) ? queue : []\n                } catch (error) {\n                    return []\n                }\n            }\n            const queueTrackingEvent = (payload) => {\n                try {\n                    const queue = getTrackingQueue()\n                    queue.push(cleanTrackingPayload(payload))\n                    localStorage.setItem(TRACKING_QUEUE_STORAGE_KEY, JSON.stringify(queue.slice(-50)))\n                } catch (error) {}\n            }\n            const postTrackingEvent = (payload, { queueOnFail = true } = {}) => {\n                try {\n                    if (!window.apiClient || typeof window.apiClient.post !== 'function') {\n                        if (queueOnFail) queueTrackingEvent(payload)\n                        return\n                    }\n                    window.apiClient.post('https:\/\/agent.goglobalsafe.com\/api\/v1\/Enrollment\/TrackStep', payload, {\n                        timeout: 1500,\n                        headers: {\n                            \"Accept\": \"application\/json\",\n                            \"X-Authentication-Key\": \"HSxZK8nHniLzZtv0Qtfk87wvNvXpJZ5K\",\n                        }\n                    }).catch(() => {\n                        if (queueOnFail) queueTrackingEvent(payload)\n                    })\n                } catch (error) {\n                    if (queueOnFail) queueTrackingEvent(payload)\n                }\n            }\n            const flushQueuedTrackingEvents = () => {\n                const queue = getTrackingQueue()\n                if (!queue.length) return\n                try {\n                    localStorage.removeItem(TRACKING_QUEUE_STORAGE_KEY)\n                } catch (error) {}\n                queue.slice(-50).forEach((payload) => {\n                    postTrackingEvent(payload, { queueOnFail: true })\n                })\n            }\n            const buildEnrollmentTrackingSnapshot = (step, eventType, extra = {}) => {\n                let selectedPlan = null\n                try {\n                    selectedPlan = getSelectedInsurancePlan()\n                } catch (error) {}\n                let price = null\n                try {\n                    price = allPrice()\n                } catch (error) {}\n                const normalizedStep = normalizeTrackingStepKey(step)\n                return cleanTrackingPayload({\n                    tracking_session_id: trackingSessionId,\n                    requestId: \"re-\" + requestId,\n                    request_id: \"re-\" + requestId,\n                    latest_step: normalizedStep,\n                    event_type: eventType,\n                    client_created_at: new Date().toISOString(),\n                    page_url: window.location.href,\n                    source_institution: getSource(),\n                    blog_id: getBlogTrackingId(),\n                    plan_name: selectedPlan?.name1 || localStorage.getItem(\"InsuranceName\") || '',\n                    plan_code: selectedPlan?.code || '',\n                    policy_number: selectedPlan?.code || '',\n                    email: inputDataTwo[6]?.value || '',\n                    phone: inputDataThree[1]?.value || inputDataThree[0]?.value || '',\n                    phoneOrigin: inputDataThree[0]?.value || '',\n                    phoneDestination: inputDataThree[1]?.value || '',\n                    insurance: {\n                        coverage_start_date: inputDataOne[0]?.value || '',\n                        coverage_end_date: inputDataOne[1]?.value || '',\n                        selected_months: selectedMonths.value,\n                        is_coverage_from_school: isCoverageFromSchool.value,\n                        is_fixed_12_month: isFixed12Month.value,\n                        referral_code: referralCode.value || '',\n                        price,\n                        selected_plan: selectedPlan\n                    },\n                    personal: {\n                        fields: inputDataTwo,\n                        phones: inputDataThree,\n                        visa_type: visaType.value,\n                        visa_start_date: inputDataSix[0]?.value || '',\n                        visa_end_date: inputDataSix[1]?.value || '',\n                        has_other_insurance: yesOrNo.value\n                    },\n                    school: {\n                        school: normalizeSchoolNameForSubmission(school.value),\n                        school_name: normalizeSchoolNameForSubmission(schoolNew.value || school.value),\n                        student_id: studentID.value,\n                        graduate_date: graduateDate.value,\n                        school_id: selectedSchoolId.value\n                            || normalizeSchoolIdValue(schoolInformation.value?.id || schoolInformation.value?.school_id || schoolInformation.value?.schoolId)\n                            || ''\n                    },\n                    address: {\n                        home_address: homeData,\n                        home_state: HomeState.value,\n                        home_country: inputDataTwo[5]?.value || '',\n                        destination_address: destinationData,\n                        destination_state: dsState.value,\n                        destination_country: 'US'\n                    },\n                    family: {\n                        spouse_selected: SpouseyesOrNo.value,\n                        spouse: spouseMember,\n                        dependent_count: numDependents.value,\n                        dependents: dependentMembers.value\n                    },\n                    account: {\n                        create_account_required: !isYisihuiReviewMode.value,\n                        email: inputDataTwo[6]?.value || '',\n                        password_filled: !!password.value,\n                        confirm_password_filled: !!confirmPassword.value\n                    },\n                    payment: {\n                        selected_pay_type: selectedPayType.value,\n                        is_yisihui_review_mode: isYisihuiReviewMode.value,\n                        is_wechat_only_payment: isWechatOnlyPayment.value,\n                        show_wechat_payment_option: showWechatPaymentOption.value\n                    },\n                    local_draft: getStoredJson('us_enrollment_draft'),\n                    extra\n                })\n            }\n            const trackStep = (step, eventType = 'step_completed', extra = {}) => {\n                try {\n                    const snapshot = buildEnrollmentTrackingSnapshot(step, eventType, extra)\n                    const payload = {\n                        tracking_session_id: trackingSessionId,\n                        request_id: snapshot.request_id,\n                        requestId: snapshot.requestId,\n                        enrollment_id: extra.enrollment_id || extra.enrollmentId || null,\n                        step_key: normalizeTrackingStepKey(step),\n                        event_type: eventType,\n                        source_institution: snapshot.source_institution,\n                        plan_name: snapshot.plan_name,\n                        school_name: snapshot.school?.school_name || snapshot.school?.school || '',\n                        email: snapshot.email,\n                        phone: snapshot.phone,\n                        client_created_at: snapshot.client_created_at,\n                        form_snapshot: snapshot\n                    }\n                    postTrackingEvent(cleanTrackingPayload(payload))\n                } catch (error) {}\n            }\n            const getOpenAiAdsContext = () => {\n                try {\n                    return typeof window.ggsOpenAiAdsContext === 'function'\n                        ? window.ggsOpenAiAdsContext()\n                        : {}\n                } catch (error) {\n                    return {}\n                }\n            }\n            const measureOpenAiAdsResponse = (response) => {\n                try {\n                    const body = response?.data || response || {}\n                    const nestedData = body?.data && typeof body.data === 'object' ? body.data : {}\n                    const tracking = body?.tracking || nestedData?.tracking || {}\n                    const registrationEventId = tracking?.registration_completed_event_id\n                    if (registrationEventId && typeof window.ggsOpenAiAdsMeasure === 'function') {\n                        window.ggsOpenAiAdsMeasure('registration_completed', {\n                            type: 'customer_action'\n                        }, registrationEventId)\n                    }\n\n                    const orderEventId = tracking?.order_created_event_id\n                    const amountMinor = Number(tracking?.order_created_amount_minor)\n                    if (orderEventId && Number.isInteger(amountMinor) && amountMinor > 0 && typeof window.ggsOpenAiAdsMeasure === 'function') {\n                        window.ggsOpenAiAdsMeasure('order_created', {\n                            type: 'contents',\n                            amount: amountMinor,\n                            currency: 'USD'\n                        }, orderEventId)\n                    }\n                } catch (error) {}\n            }\n            window.__ggsTrackValidationFailure = (elementId, message, statusCode = null) => {\n                trackStep(nowForm.value, 'validation_failed', {\n                    validation_field: elementId,\n                    validation_message: message,\n                    validation_status_code: statusCode\n                })\n            }\n            setTimeout(flushQueuedTrackingEvents, 1600)\n            const cloneResumeValue = (value, fallback = null) => {\n                try {\n                    return JSON.parse(JSON.stringify(value))\n                } catch (error) {\n                    return fallback\n                }\n            }\n            const persistRemoteEnrollmentDraft = () => {\n                const resumeData = remoteDraftResumeData\n                const snapshot = resumeData?.form_snapshot || {}\n                if (!resumeData || !snapshot || typeof snapshot !== 'object') return false\n\n                const storedDraft = snapshot?.local_draft && typeof snapshot.local_draft === 'object'\n                    ? sanitizeEnrollmentBackup(cloneResumeValue(snapshot.local_draft, {}))\n                    : {}\n                const personal = snapshot?.personal || {}\n                const schoolSnapshot = snapshot?.school || {}\n                const address = snapshot?.address || {}\n                const family = snapshot?.family || {}\n                const insurance = snapshot?.insurance || {}\n                const remoteDraft = Object.assign({}, storedDraft || {})\n                remoteDraft.form = Object.assign({}, remoteDraft.form || {}, {\n                    coverageStartDate: normalizeTextValue(\n                        insurance.coverage_start_date || remoteDraft?.form?.coverageStartDate\n                    ),\n                    coverageEndDate: normalizeTextValue(\n                        insurance.coverage_end_date || remoteDraft?.form?.coverageEndDate\n                    ),\n                    personal: cloneResumeValue(\n                        personal.fields || remoteDraft?.form?.personal || [],\n                        []\n                    ),\n                    phoneOrigin: normalizeTextValue(\n                        snapshot.phoneOrigin\n                        || personal?.phones?.[0]?.value\n                        || remoteDraft?.form?.phoneOrigin\n                    ),\n                    phoneDestination: normalizeTextValue(\n                        snapshot.phoneDestination\n                        || personal?.phones?.[1]?.value\n                        || remoteDraft?.form?.phoneDestination\n                    ),\n                    visaType: normalizeTextValue(\n                        personal.visa_type || remoteDraft?.form?.visaType\n                    ),\n                    visaStartDate: normalizeTextValue(\n                        personal.visa_start_date || remoteDraft?.form?.visaStartDate\n                    ),\n                    visaEndDate: normalizeTextValue(\n                        personal.visa_end_date || remoteDraft?.form?.visaEndDate\n                    ),\n                    studentID: normalizeTextValue(\n                        schoolSnapshot.student_id || remoteDraft?.form?.studentID\n                    ),\n                    school: normalizeTextValue(\n                        schoolSnapshot.school\n                        || remoteDraft?.form?.school\n                        || resumeData.school_name\n                        || schoolSnapshot.school_name\n                    ),\n                    graduateDate: normalizeTextValue(\n                        schoolSnapshot.graduate_date || remoteDraft?.form?.graduateDate\n                    ),\n                    homeAddress: cloneResumeValue(\n                        address.home_address || remoteDraft?.form?.homeAddress || [],\n                        []\n                    ),\n                    homeState: normalizeTextValue(\n                        address.home_state || remoteDraft?.form?.homeState\n                    ),\n                    destinationAddress: cloneResumeValue(\n                        address.destination_address || remoteDraft?.form?.destinationAddress || [],\n                        []\n                    ),\n                    destinationState: normalizeTextValue(\n                        address.destination_state || remoteDraft?.form?.destinationState\n                    )\n                })\n                remoteDraft.family = {\n                    spouse: Object.assign({}, cloneResumeValue(family.spouse || remoteDraft?.family?.spouse || {}, {}), {\n                        selected: normalizeTextValue(\n                            family.spouse_selected\n                            || family?.spouse?.selected\n                            || remoteDraft?.family?.spouse?.selected\n                        ) === 'Yes' ? 'Yes' : 'No'\n                    }),\n                    dependents: cloneResumeValue(\n                        family.dependents || remoteDraft?.family?.dependents || [],\n                        []\n                    )\n                }\n                remoteDraft.yesOrNo = 'No'\n                remoteDraft.payment = {\n                    selected_pay_type: normalizeTextValue(\n                        snapshot?.payment?.selected_pay_type || remoteDraft?.payment?.selected_pay_type\n                    )\n                }\n                remoteDraft.referralCode = normalizeTextValue(\n                    insurance.referral_code || remoteDraft.referralCode\n                )\n\n                localStorage.setItem('us_enrollment_draft', JSON.stringify(sanitizeEnrollmentBackup(remoteDraft)))\n                const originalTrackingSession = normalizeTextValue(resumeData.tracking_session_id)\n                if (originalTrackingSession) {\n                    trackingSessionId = originalTrackingSession\n                    try {\n                        sessionStorage.setItem(TRACKING_SESSION_STORAGE_KEY, originalTrackingSession)\n                    } catch (error) {}\n                }\n                password.value = ''\n                confirmPassword.value = ''\n                return true\n            }\n            const applyEnrollmentDraft = () => {\n                const storedDraft = getStoredJson('us_enrollment_draft')\n                if (!storedDraft) return false\n                const draft = sanitizeEnrollmentBackup(storedDraft)\n                localStorage.setItem('us_enrollment_draft', JSON.stringify(draft))\n                if (draft.form) {\n                    const storedStart = localStorage.getItem('coverage_start_date')\n                    const storedEnd = localStorage.getItem('coverage_end_date')\n                    const draftStart = normalizeTextValue(draft.form.coverageStartDate)\n                    const draftEnd = normalizeTextValue(draft.form.coverageEndDate)\n                    const shouldApplyDraftCoverage = !canUsePreferredCoveragePeriodDatesForPlan(storedStart, storedEnd)\n                        && canUsePreferredCoveragePeriodDatesForPlan(draftStart, draftEnd)\n                    if (shouldApplyDraftCoverage) {\n                        inputDataOne[0].value = formatDate(draftStart)\n                        inputDataOne[1].value = formatDate(draftEnd)\n                        try {\n                            const draftMonths = calculateMonthDifference2(draftStart, draftEnd)\n                            if (Number.isFinite(draftMonths) && draftMonths > 0) {\n                                selectedMonths.value = draftMonths\n                            }\n                        } catch (error) {}\n                        isCoverageFromSchool.value = false\n                        startDefault.value = inputDataOne[0].value\n                        endDefault.value = inputDataOne[1].value\n                    }\n                    if (Array.isArray(draft.form.personal)) {\n                        draft.form.personal.forEach((savedItem) => {\n                            const target = inputDataTwo.find((item) => item.id === savedItem.id)\n                            if (target) target.value = normalizeTextValue(savedItem.value)\n                        })\n                    }\n                    inputDataThree[0].value = normalizeTextValue(draft.form.phoneOrigin)\n                    inputDataThree[1].value = normalizeTextValue(draft.form.phoneDestination)\n                    visaType.value = normalizeTextValue(draft.form.visaType)\n                    inputDataSix[0].value = normalizeTextValue(draft.form.visaStartDate)\n                    inputDataSix[1].value = normalizeTextValue(draft.form.visaEndDate)\n                    studentID.value = normalizeTextValue(draft.form.studentID)\n                    if (!shouldKeepNavigationSchool() && normalizeTextValue(draft.form.school)) syncSchoolValue(draft.form.school)\n                    graduateDate.value = normalizeTextValue(draft.form.graduateDate)\n                    if (Array.isArray(draft.form.homeAddress)) {\n                        draft.form.homeAddress.forEach((savedItem) => {\n                            const target = homeData.find((item) => item.id === savedItem.id)\n                            if (target) target.value = normalizeTextValue(savedItem.value)\n                        })\n                    }\n                    syncHomeStateOptions(inputDataTwo[5].value, draft.form.homeState)\n                    if (Array.isArray(draft.form.destinationAddress)) {\n                        draft.form.destinationAddress.forEach((savedItem) => {\n                            const target = destinationData.find((item) => item.id === savedItem.id)\n                            if (target) target.value = normalizeTextValue(savedItem.value)\n                        })\n                    }\n                    dsState.value = normalizeTextValue(draft.form.destinationState)\n                }\n                if (draft.family) {\n                    SpouseyesOrNo.value = draft.family.spouse?.selected === 'Yes' ? 'Yes' : 'No'\n                    spouseMember.firstName = normalizeTextValue(draft.family.spouse?.firstName)\n                    spouseMember.middleName = normalizeTextValue(draft.family.spouse?.middleName)\n                    spouseMember.lastName = normalizeTextValue(draft.family.spouse?.lastName)\n                    spouseMember.dob = normalizeDobForEnrollment(draft.family.spouse?.dob)\n                    const dependents = Array.isArray(draft.family.dependents) ? draft.family.dependents : []\n                    numDependents.value = dependents.length\n                    dependentMembers.value = dependents.map((dependent, index) => ({\n                        key: dependent.key || `dependent-draft-${index}`,\n                        firstName: normalizeTextValue(dependent.firstName),\n                        middleName: normalizeTextValue(dependent.middleName),\n                        lastName: normalizeTextValue(dependent.lastName),\n                        dob: normalizeDobForEnrollment(dependent.dob)\n                    }))\n                    updateDependentsData(numDependents.value)\n                    nextTick(() => initFamilyDatePickers())\n                }\n                yesOrNo.value = 'No'\n                const savedPayType = normalizeTextValue(draft?.payment?.selected_pay_type)\n                if (savedPayType === 'wechat' || savedPayType === 'credit') {\n                    selectedPayType.value = savedPayType\n                }\n                if (normalizeTextValue(draft.referralCode)) {\n                    referralCode.value = normalizeTextValue(draft.referralCode)\n                }\n                password.value = ''\n                confirmPassword.value = ''\n                sanitizeAddressCollection()\n                return true\n            }\n            const openRemoteDraftContinuation = async () => {\n                if (!remoteDraftResumeData || hasUserStartedStepNavigation) return\n                const stepIndexes = {\n                    insurance: 0,\n                    personal: 1,\n                    school: 2,\n                    address: 3,\n                    account: 4,\n                    payment: 5\n                }\n                const latestStep = normalizeTextValue(remoteDraftResumeData.latest_step).toLowerCase()\n                const latestIndex = Object.prototype.hasOwnProperty.call(stepIndexes, latestStep)\n                    ? stepIndexes[latestStep]\n                    : 0\n                const targetIndex = remoteDraftResumeData.latest_event_type === 'validation_failed'\n                    ? latestIndex\n                    : Math.min(latestIndex + 1, 5)\n                const lastCompletedIndex = remoteDraftResumeData.latest_event_type === 'validation_failed'\n                    ? latestIndex - 1\n                    : latestIndex\n                for (let index = 0; index <= lastCompletedIndex; index += 1) {\n                    completeStepStatus(progress[index])\n                }\n                await nextTick()\n                if (hasUserStartedStepNavigation) return\n                toggleDetails(progress[targetIndex], true)\n            }\n            \/\/ \u6b65\u9aa4\u4e8c\u7684\u4e0a\u4e00\u6b65\u6309\u94ae\n            const secondPrevious = () => {\n                prevStep()\n            }\n            \/\/ \u6536\u96c6\u6570\u636e\u7684\u53d8\u91cf\n            let collectedValues = {\n                homeAddress:{},\n                destinationAddress:{}\n            };\n            const thirdNext = () => {\n                return new Promise((resolve, reject) => {\n                    sanitizeAddressCollection()\n\n                    \/\/ \u6b65\u9aa4\u4e8c\u7684\u8868\u5355\u9a8c\u8bc1\n                    if (isEmpty(getAddressSubmitValue(homeData[0]), 'Address 1')) {\n                        scrollToElement(homeData[0].id, addressRequiredMessage('Home address line 1'));\n                        return reject(addressRequiredMessage('Home address line 1'));\n                    }\n                    if (isEmpty(getAddressSubmitValue(homeData[2]), '')) {\n                        scrollToElement(homeData[2].id, addressRequiredMessage('Home city'));\n                        return reject(addressRequiredMessage('Home city'));\n                    }\n                    if (isEmpty(getAddressSubmitValue(homeData[3]), 'PostalCode')) {\n                        scrollToElement(homeData[3].id, addressRequiredMessage('Home postal code'));\n                        return reject(addressRequiredMessage('Home postal code'));\n                    }\n                    if (isEmpty(HomeState.value, 'state')) {\n                        scrollToElement(\"HomeState\",'state is required !');\n                        return reject('State is required!');\n                    }\n                    if (isEmpty(getAddressSubmitValue(destinationData[0]), 'Address 1')) {\n                        scrollToElement(destinationData[0].id, addressRequiredMessage('Destination address line 1'));\n                        return reject(addressRequiredMessage('Destination address line 1'));\n                    }\n                    if (isEmpty(getAddressSubmitValue(destinationData[2]), 'City')) {\n                        scrollToElement(destinationData[2].id, addressRequiredMessage('Destination city'));\n                        return reject(addressRequiredMessage('Destination city'));\n                    }\n                    if (isEmpty(getAddressSubmitValue(destinationData[3]), 'PostalCode')) {\n                        scrollToElement(destinationData[3].id, addressRequiredMessage('Destination postal code'));\n                        return reject(addressRequiredMessage('Destination postal code'));\n                    }\n\n                    if (!validateFamilyMembers()) {\n                        return reject('Family member data is incomplete!');\n                    }\n\n                    \/\/ \u6536\u96c6\u5bb6\u5ead\u5730\u5740\u6570\u636e\n                    homeData.forEach(item => {\n                        collectedValues.homeAddress[item.id] = getAddressSubmitValue(item);\n                    });\n                    collectedValues.homeAddress[\"StateCode\"] = HomeState.value;\n                    collectedValues.homeAddress[\"CountryCode\"] = inputDataTwo[5]['value'];\n\n\n                    destinationData.forEach(item => {\n                        collectedValues.destinationAddress[item.id] = getAddressSubmitValue(item);\n                    });\n                    collectedValues.destinationAddress[\"StateCode\"] = dsState.value;\n                    collectedValues.destinationAddress[\"CountryCode\"] = \"US\";\n\n\n                    resolve(); \/\/ \u6240\u6709\u9a8c\u8bc1\u901a\u8fc7\uff0c\u6267\u884c resolve\n                });\n            };\n\n            const secondNext=()=>{\n                nextStep()\n            }\n            \/\/ \u5b66\u6821\u66ff\u6362\u6570\u7ec4\n            const schoolInstead=[\n                {\n                    old:\"University Of Southern California (USC)\",\n                    new:\"University Of Southern California\"\n                },\n                {\n                    old:\"University Of Southern Calfornia (USC)-J visa\",\n                    new:\"University Of Southern California\"\n                },\n                {\n                    old:\"New York University (NYU)\",\n                    new:\"New York University\"\n                },\n                {\n                    old:\"University Of Pennsylvania (UPENN)\",\n                    new:\"University Of Pennsylvania\"\n                },\n                {\n                    old:\"UCD (Quarter Undergraduate) - University Of California Davis\",\n                    new:\"University Of California Davis\"\n                },\n                {\n                    old:\"UCD (Quarter Graduate) - University Of California Davis\",\n                    new:\"University Of California Davis\"\n                },\n                {\n                    old:\"UCD (Semester Law) - University Of California Davis\",\n                    new:\"University Of California Davis\"\n                },\n                {\n                    old:\"UCD (Semester Veterinary) - University Of California Davis\",\n                    new:\"University Of California Davis\"\n                },\n                {\n                    old:\"UCLA Undergraduates & Graduates - University Of California Los Angeles\",\n                    new:\"University Of California Los Angeles\"\n                },\n                {\n                    old:\"UCLA Law (LLM and IEP) - University Of California Los Angeles\",\n                    new:\"University Of California Los Angeles\"\n                },\n                {\n                    old:\"UCLA Law (MLS (1st Year)) - University Of California Los Angeles\",\n                    new:\"University Of California Los Angeles\"\n                },\n                {\n                    old:\"UCLA Law (JD (1st Year)) - University Of California Los Angeles\",\n                    new:\"University Of California Los Angeles\"\n                },\n                {\n                    old:\"UCLA Law (JD (2L & 3L), MLS, & SJD) - University Of California Los Angeles\",\n                    new:\"University Of California Los Angeles\"\n                },\n                {\n                    old:\"UCLA Medicine (1st Year) - University Of California Los Angeles\",\n                    new:\"University Of California Los Angeles\"\n                },\n                {\n                    old:\"UCLA Medicine (2nd-4th Year) - University Of California Los Angeles\",\n                    new:\"University Of California Los Angeles\"\n                },\n                {\n                    old:\"UCI  Undergraduates (INCOMING & CONTINUING)  - University Of California Irvine\",\n                    new:\"University Of California Irvine\"\n                },\n                {\n                    old:\"UCI  Graduates (INCOMING & CONTINUING)  - University Of California Irvine\",\n                    new:\"University Of California Irvine\"\n                },\n                {\n                    old:\"UCI Medical -1st Year - University Of California Irvine\",\n                    new:\"University Of California Irvine\"\n                },\n                {\n                    old:\"UCI Medical - Returning (Not Enrolled in UC SHIP in the Previous Term) - University Of California Irvine\",\n                    new:\"University Of California Irvine\"\n                },\n                {\n                    old:\"UCI Medical -Returning LOA (Summer MED) - University Of California Irvine\",\n                    new:\"University Of California Irvine\"\n                },\n                {\n                    old:\"UCI School Of Business - MSBA INCOMING (Master Of Science in Business Analytics) - University Of California Irvine\",\n                    new:\"University Of California Irvine\"\n                },\n                {\n                    old:\"UCI School Of Education - MAT INCOMING (Master Of Arts in Teaching) - University Of California Irvine\",\n                    new:\"University Of California Irvine\"\n                },\n                {\n                    old:\"UCI Undergraduate - FSSP (Freshman Summer Success Program) - University Of California Irvine\",\n                    new:\"University Of California Irvine\"\n                },\n                {\n                    old:\"UCI Competitive Edge - Graduates- University Of California Irvine\",\n                    new:\"University Of California Irvine\"\n                },\n                {\n                    old:\"UCI  LAW \u2013 1st Year\/ Transfer\/Returning - University Of California Irvine\",\n                    new:\"University Of California Irvine\"\n                },\n                {\n                    old:\"UCI  LAW \u2013 LLM \/Graduate Tax - University Of California Irvine\",\n                    new:\"University Of California Irvine\"\n                },\n                {\n                    old:\"UCI LAW- Continuing - University Of California Irvine\",\n                    new:\"University Of California Irvine\"\n                },\n                {\n                    old:\"University Of California San Diego UCSD\",\n                    new:\"University Of California San Diego\"\n                },\n                {\n                    old:\"The New School\uff08Parsons\uff09\",\n                    new:\"New School\"\n                },\n                {\n                    old:\"University Of California Berkeley (UCB)\",\n                    new:\"University Of California Berkeley (UCB)\"\n                },\n                {\n                    old:\"Case Western Reserve University\",\n                    new:\"Case Western Reserve Univ\"\n                },\n                {\n                    old:\"Harvard University\",\n                    new:\"Harvard University\"\n                },\n                {\n                    old:\"California Institute Of Advanced Management (CIAM)\",\n                    new:\"California Institute Of Advanced Management\"\n                },\n                {\n                    old:\"Santa Fe College (Florida)\",\n                    new:\"Santa Fe College\"\n                },\n                {\n                    old:\"University Of Connecticut (UConn)\",\n                    new:\"University Of Connecticut\"\n                },\n                {\n                    old:\"University of Rochester\uff08UR\uff09\",\n                    new:\"University of Rochester\"\n                },\n                {\n                    old:\"Carnegie Mellon University\uff08CMU\uff09\",\n                    new:\"Carnegie Mellon University\"\n                },\n                {\n                    old:\"University of California Santa Barbara\uff08UCSB\uff09\",\n                    new:\"University of California Santa Barbara\"\n                },\n                {\n                    old:\"Virginia Tech (VT)\",\n                    new:\"Virginia Tech\",\n                }\n            ]\n            const schoolNew=ref()\n            const getschoolNew=()=>{\n                const currentSchoolName = normalizeTextValue(school.value) || getStoredSchoolName()\n                const schoolMatched = schoolInstead.find((item)=>item.old==currentSchoolName)\n                if(schoolMatched){\n                    schoolNew.value=schoolMatched.new\n                }else{\n                    schoolNew.value=currentSchoolName\n                }\n            }\n            \/\/ \u6b65\u9aa4\u4e09\n            const thirdPrevious = () => {\n                prevStep()\n            }\n            \/\/ \u4ef7\u683c\u66ff\u6362\u6570\u7ec4\n            const priceInstead=ref(\n                [\n                    \/\/ WellAway World Elite 250\n                    { \"original\": 145.00, \"converted\": 145.00 },\n                    { \"original\": 643.00, \"converted\": 643.00 },\n                    { \"original\": 186.00, \"converted\": 186.00 },\n                    { \"original\": 293.00, \"converted\": 293.00 },\n                    \/\/ WellAway World Elite 450\n                    { \"original\": 125.00, \"converted\": 125.00 },\n                    { \"original\": 174.00, \"converted\": 174.00 },\n                    { \"original\": 254.00, \"converted\": 254.00 },\n                    { \"original\": 560.00, \"converted\": 560.00 },\n                    \/\/ \/\/ WellAway World Elite 450\n                    { \"original\": 178.00, \"converted\": 178.00 },\n                    { \"original\": 205.00, \"converted\": 205.00 },\n                    { \"original\": 372.00, \"converted\": 372.00 },\n                    { \"original\": 744.00, \"converted\": 744.00 },\n                    \/\/ WellAway Royal 100\n                    { \"original\": 109.50, \"converted\": 3.6 },\n                    { \"original\": 148.43, \"converted\": 4.88 },\n                    { \"original\": 255.80, \"converted\": 8.41 },\n                    \/\/ WellAway Royal 1500\n                    { \"original\": null, \"converted\": 8.92 },\n                    { \"original\": 76.65, \"converted\": 2.52 },\n                    { \"original\": 108.28, \"converted\": 3.56 },\n                    { \"original\": 179.46, \"converted\": 5.9 },\n                    { \"converted\": 41.84, \"original\": null },\n                    \/\/ WellAway Royal 500\n                    { \"converted\": 9.44, \"original\": null },\n                    { \"original\": 80.60, \"converted\": 2.65 },\n                    { \"original\": 114.37, \"converted\": 3.76 },\n                    { \"original\": 191.63, \"converted\": 6.3 },\n                    { \"converted\": 46.02, \"original\": null },\n                    \/\/ WellAway Royal Plus\n                    { \"original\": 153.60, \"converted\": 5.05 },\n                    { \"original\": 216.87, \"converted\": 7.13 },\n                    { \"original\": 550.85, \"converted\": 18.11 },\n                    \/\/ Cromo\n                    { \"original\": 33.90, \"converted\": 1.13 },\n                    \/\/ Cromo Premier\n                    { \"original\": 50.10, \"converted\": 1.67 },\n                    \/\/ USC scholar\n                    { \"original\": 87.90, \"converted\": 87.90 },\n                    {\"original\": 103.50, \"converted\": 103.50 },\n                    \/\/ opt\n                    { \"original\": 31.5, \"converted\": 1.05 },\n                    \/\/ USF\n                    { \"original\": 83.34, \"converted\": 83.34 },\n                    { \"original\": 100.07, \"converted\": 100.07 },\n                    { \"original\": 184.02, \"converted\": 184.02 },\n                ]\n            )\n            \/\/ \u4fdd\u9669\u6bcf\u6708\u4ef7\u683c\n            const dailyPrice=()=>{\n                \/\/ \u83b7\u53d6\u6bcf\u6708\u7684\u4ef7\u683c\u6570\u636e\n                let monthPrice = parseFloat(localStorage.getItem(\"monthly_price\"));\n                \/\/ \u5982\u679c monthPrice \u4e0d\u662f\u6709\u6548\u6570\u5b57\uff0c\u76f4\u63a5\u8fd4\u56de\n                if (isNaN(monthPrice)) {\n                    console.error(\"\u6708\u4ef7\u683c\u65e0\u6548\uff0c\u8bf7\u68c0\u67e5\u6570\u636e\u6765\u6e90\uff01\");\n                    return null;\n                }\n                return monthPrice;\n            }\n            \/**\n             * \u8ba1\u7b97\u4e24\u4e2a\u65e5\u671f\u4e4b\u95f4\u76f8\u5dee\u7684\u6708\u6570\n             * @param {string} date1 - \u7b2c\u4e00\u4e2a\u65e5\u671f\uff0c\u683c\u5f0f\u4e3a 'YYYY\/MM\/DD'\n             * @param {string} date2 - \u7b2c\u4e8c\u4e2a\u65e5\u671f\uff0c\u683c\u5f0f\u4e3a 'YYYY\/MM\/DD'\n             * @return {number} \u4e24\u4e2a\u65e5\u671f\u4e4b\u95f4\u76f8\u5dee\u7684\u6708\u6570\n             *\/\n            function getMonthsDifference(date1, date2) {\n                const d1 = new Date(date1);\n                const d2 = new Date(date2);\n\n                const yearsDiff = d2.getFullYear() - d1.getFullYear();\n                const monthsDiff = d2.getMonth() - d1.getMonth();\n\n                let totalMonths = yearsDiff * 12 + monthsDiff;\n\n                if (d2.getDate() < d1.getDate()) {\n                    totalMonths -= 1;\n                }\n\n                return totalMonths;\n            }\n            const isSpecialProduct = (productName) => {\n                const specialProducts = ['USC Elite Plus', 'USC Elite 250', 'USC Elite 450', 'USC Elite 800','World Elite 450','World Elite 800','World Elite 250','World Elite Plus'];\n                return specialProducts.includes(productName);\n            };\n\n            const is6MonthProduct = (productName) => {\n                const specialProducts = ['USC Elite Plus', 'USC Elite 250', 'USC Elite 450', 'USC Elite 800','World Elite 450','World Elite 800','World Elite 250','World Elite Plus', 'Royal Plus'];\n                return specialProducts.includes(productName);\n            };\n\n            \/\/\u5224\u65ad\u662f\u5426\u662f\u7279\u6b8a\u4ea7\u54c1Royal\n            const isRoyal = (productName)=>{\n                const specialProducts = ['Royal 1500', 'Royal 100', 'Royal Plus','Royal 500'];\n                return specialProducts.includes(productName);\n            }\n            const isScholarProduct = (productName) => {\n                const name = String(productName || '').toLowerCase();\n                return name.includes('scholar');\n            }\n            const isJ1ScholarSeries = (productName) => {\n                const name = String(productName || '').toLowerCase();\n                return name.includes('j1 scholar');\n            }\n            const isUscScholarSeries = (productName) => {\n                const name = String(productName || '').toLowerCase();\n                return name.includes('usc scholar');\n            }\n            const isWorldEliteSeries = (productName) => {\n                const name = String(productName || '').toLowerCase();\n                return name.includes('world elite');\n            }\n            const isUscWorldEliteSeries = (productName) => {\n                const name = String(productName || '').toLowerCase();\n                return name.includes('usc elite') || name.includes('usc world elite');\n            }\n            const isWorldEliteMinimum12Plan = (productName) => {\n                const name = String(productName || '').toLowerCase();\n                return isWorldEliteSeries(productName)\n                    || isUscWorldEliteSeries(productName)\n                    || name.includes('usf world');\n            }\n            const isRoyalSeries = (productName) => {\n                const name = String(productName || '').toLowerCase();\n                return name.includes('royal');\n            }\n            const isCromoSeries = (productName) => {\n                const name = String(productName || '').toLowerCase();\n                return name.includes('cromo');\n            }\n            const isOptDailyPlan = (productName) => {\n                const code = String(\n                    selectedPlanCode.value\n                    || localStorage.getItem('selected_plan_code')\n                    || ''\n                ).trim().toUpperCase();\n                const paymentTerm = String(localStorage.getItem('selected_plan_payment_term') || '').trim().toLowerCase();\n                const name = String(productName || '').toLowerCase();\n                return ['WAOPT', 'WAOPTPREMIER'].includes(code) || paymentTerm === 'daily' || name.includes('opt');\n            }\n            const shouldUseDailyProration = (productName) => {\n                return isScholarProduct(productName)\n                    || isRoyalSeries(productName)\n                    || isWorldEliteSeries(productName)\n                    || isUscWorldEliteSeries(productName)\n                    || isCromoSeries(productName)\n                    || isOptDailyPlan(productName);\n            }\n            const getPriceUnitForPlan = (productName, priceValue) => {\n                if (isJ1ScholarSeries(productName) || isRoyalSeries(productName)) return 'day';\n                if (isCromoSeries(productName)) return 'day';\n                if (isOptDailyPlan(productName)) return 'day';\n                if (isUscScholarSeries(productName)) return 'month';\n                if (isWorldEliteSeries(productName) || isUscWorldEliteSeries(productName)) return 'month';\n                \/\/ fallback: day price should never exceed 10, month price should never be below 10\n                return Number(priceValue) > 10 ? 'month' : 'day';\n            }\n            \/\/\u5224\u65ad\u662f\u5426\u662f\u7279\u6b8a\u4ea7\u54c1Royal\n            const isRoyalPlus = (productName)=>{\n                const specialProducts = ['Royal Plus'];\n                return specialProducts.includes(productName);\n            }\n\n            \/\/\u5224\u65ad\u662f\u5426\u662f\u7279\u6b8a\u4ea7\u54c1Royal\n            const isNYUPlus = (productName)=>{\n                const specialProducts = ['Royal Plus', 'World Elite Plus'];\n                return specialProducts.includes(productName);\n            }\n\n            \/\/\u5224\u65ad\u662f\u5426\u662f\u7279\u6b8a\u4ea7\u54c1 USC Elite 450\n            const isStudentElite = (productName)=>{\n                const specialProducts = ['World Elite 450','World Elite 250','World Elite Plus','World Elite 800'];\n                return specialProducts.includes(productName)\n            }\n\n            \/\/\u8ba1\u7b97\u95f4\u9694\u5929\u6570\n            \/\/ \u8ba1\u7b97\u5e74\u4ef7\uff08\u8003\u8651\u7279\u6b8a\u4ea7\u54c1\uff09\n            const calculateAnnualPrice = (currentPrice, productName) => {\n                const normalizedPrice = Number(currentPrice);\n                if (!Number.isFinite(normalizedPrice) || normalizedPrice <= 0) {\n                    return 0;\n                }\n                if (shouldUseDailyProration(productName)) {\n                    const priceUnit = getPriceUnitForPlan(productName, normalizedPrice);\n                    const dailyPrice = priceUnit === 'month' ? ((normalizedPrice * 12) \/ 365) : normalizedPrice;\n                    const roundedDaily = Math.round(dailyPrice * 100) \/ 100;\n                    return roundedDaily * calculateDaysBetween();\n                } else {\n                    return normalizedPrice * selectedMonths.value;\n                }\n            };\n            \/\/\u8ba1\u7b97\u95f4\u9694\u5929\u6570\n            function calculateDaysBetween() {\n                \/\/ \u68c0\u67e5\u65e5\u671f\u662f\u5426\u6709\u6548\n                const startDate = new Date(inputDataOne[0].value);\n                const endDate = new Date(inputDataOne[1].value);\n\n                if (isNaN(startDate.getTime()) || isNaN(endDate.getTime())) {\n                    console.error(\"\u65e0\u6548\u7684\u65e5\u671f\uff0c\u8bf7\u68c0\u67e5\u8f93\u5165\");\n                    return 0;\n                }\n                \/\/ \u786e\u4fdd\u8ba1\u7b97\u65f6\u7684\u65e5\u671f\u662f\u96f6\u70b9\u65f6\u523b\uff0c\u907f\u514d\u65f6\u533a\u5dee\u5f02\n                startDate.setHours(0, 0, 0, 0);\n                endDate.setHours(0, 0, 0, 0);\n\n                const start = dayjs(startDate).startOf('day');\n                const end = dayjs(endDate).startOf('day');\n                if (!start.isValid() || !end.isValid()) {\n                    console.error(\"\u65e0\u6548\u7684\u65e5\u671f\u683c\u5f0f\uff0c\u8bf7\u68c0\u67e5\u8f93\u5165\");\n                    return 0;\n                }\n                const diff = end.diff(start, 'day');\n                return diff >= 0 ? diff + 1 : 0; \/\/ \u5305\u542b\u9996\u5c3e\uff0c\u4e14\u9632\u6b62\u8d1f\u6570\n            }\n\n\n            \/\/ \u81ea\u5df1\u603b\u7684\u4ef7\u683c\n            const allPrice = () => {\n                \/\/ \u68c0\u67e5\u65e5\u671f\u662f\u5426\u6709\u6548\n                const startDate = new Date(inputDataOne[0].value);\n                const endDate = new Date(inputDataOne[1].value);\n\n                if (isNaN(startDate.getTime()) || isNaN(endDate.getTime())) {\n                    console.error(\"\u65e0\u6548\u7684\u65e5\u671f\uff0c\u8bf7\u68c0\u67e5\u8f93\u5165\", startDate.getTime(), endDate.getTime());\n                    return 0;\n                }\n                const startUTC = Date.UTC(startDate.getFullYear(), startDate.getMonth(), startDate.getDate());\n                const endUTC = Date.UTC(endDate.getFullYear(), endDate.getMonth(), endDate.getDate());\n                \/\/ \u786e\u4fdd\u8ba1\u7b97\u65f6\u7684\u65e5\u671f\u662f\u96f6\u70b9\u65f6\u523b\uff0c\u907f\u514d\u65f6\u533a\u5dee\u5f02\n                startDate.setHours(0, 0, 0, 0);\n                endDate.setHours(0, 0, 0, 0);\n\n                \/\/\u6bcf\u6708\u4ef7\u683c\n                const dailyPriceValue = dailyPrice();\n                if (isNaN(dailyPriceValue) || dailyPriceValue <= 0) {\n                    console.error(\"\u65e0\u6548\u7684\u6bcf\u65e5\u4ef7\u683c\uff0c\u8bf7\u68c0\u67e5 dailyPrice \u51fd\u6570\u7684\u8fd4\u56de\u503c\");\n                    return 0;\n                }\n                \/\/ \u8ba1\u7b97\u603b\u4ef7\u683c(\u6708 * \u6708\u4ef7\u683c)\n                const insurance_name = localStorage.getItem(\"InsuranceName\")\n                const totalPrice = calculateAnnualPrice(dailyPriceValue,insurance_name)\n                const totalPriceWithTwoDecimal = Math.round(totalPrice * 100) \/ 100; \/\/ \u56db\u820d\u4e94\u5165\u5230\u4e24\u4f4d\u5c0f\u6570\n                \/\/ \u6253\u5370\u8c03\u8bd5\u4fe1\u606f\n                \/\/ console.log(\"\u5f00\u59cb\u65e5\u671f:\", startDate);\n                \/\/ console.log(\"\u7ed3\u675f\u65e5\u671f:\", endDate);\n                \/\/ console.log(\"\u6bcf\u6708\u4ef7\u683c:\", dailyPriceValue);\n                \/\/ console.log(\"\u521d\u59cb\u6708\u6570:\", selectedMonths.value);\n                \/\/ console.log(\"\u603b\u4ef7\u683c:\", totalPriceWithTwoDecimal);\n                \/\/ console.log('\u95f4\u9694\u5929\u6570:',calculateDaysBetween())\n                return totalPriceWithTwoDecimal;\n            }\n\n            \/\/ console.log(allPrice())\n            \/\/ \u914d\u5076\u6708\u4ef7\u683c\u6570\u7ec4\n            const spouseInstead=ref(\n                [\n                    {\n                        name:\"Cromo\",\n                        price:254.89\n                    },{\n                    name:\"Cromo Premier\",\n                    price:360.74\n                },{\n                    name:\"USC Elite 250\",\n                    price:615\n                },{\n                    name:\"USC Elite 450\",\n                    price:636\n                },{\n                    name:\"USC Elite 800\",\n                    price:616\n                },{\n                    name:\"USC Elite Plus\",\n                    price:715\n                },{\n                    name:\"Royal 100\",\n                    price:0\n                },{\n                    name:\"Royal 1500\",\n                    price:0\n                },{\n                    name:\"Royal 500\",\n                    price:0\n                },{\n                    name:\"Royal Plus\",\n                    price:0\n                },{\n                    name:\"World Elite 250\",\n                    price: 643\n                },{\n                    name:\"World Elite 450\",\n                    price:560\n                },{\n                    name:\"World Elite Plus\",\n                    price:744\n                },\n                ]\n            )\n            \/\/ \u914d\u5076\u6708\u4ef7\u683c\n            const spousePrice=()=>{\n                const insurance=localStorage.getItem(\"InsuranceName\")\n                \/\/ \u5982\u679c\u6ca1\u6709 insurance \u6216\u4ef7\u683c\u4e3a null\uff0c\u5219\u8fd4\u56de null\n                const insuranceItem = spouseInstead.value.find(item => item.name === insurance);\n                return insuranceItem ? insuranceItem.price : null;\n            }\n            \/\/ \u914d\u5076\u603b\u4ef7\u683c\n            const spouseAllPrice=()=>{\n                if (SpouseyesOrNo.value === 'No') {\n                    return 0\n                }\n                \/\/ \u68c0\u67e5\u65e5\u671f\u662f\u5426\u6709\u6548\n                const startDate = new Date(inputDataOne[0].value);\n                const endDate = new Date(inputDataOne[1].value);\n\n                const startUTC = Date.UTC(startDate.getFullYear(), startDate.getMonth(), startDate.getDate());\n                const endUTC = Date.UTC(endDate.getFullYear(), endDate.getMonth(), endDate.getDate());\n\n                if (isNaN(startDate) || isNaN(endDate)) {\n                    console.error(\"\u65e0\u6548\u7684\u65e5\u671f\");\n                    return 0;\n                }\n\n                \/\/ \u786e\u4fdd\u8ba1\u7b97\u65f6\u7684\u65e5\u671f\u662f\u96f6\u70b9\u65f6\u523b\uff0c\u907f\u514d\u65f6\u533a\u5dee\u5f02\n                startDate.setHours(0, 0, 0, 0);\n                endDate.setHours(0, 0, 0, 0);\n\n                let dailyPrice=null\n                if (!isNaN(spousePrice())) {\n                    dailyPrice=spousePrice()\n                }\n                const insurance_name = localStorage.getItem(\"InsuranceName\")\n                const totalPrice = calculateAnnualPrice(dailyPrice,insurance_name)\n                \/\/ \u4f7f\u7528 Math.round \u8fdb\u884c\u56db\u820d\u4e94\u5165\u5230\u4e24\u4f4d\u5c0f\u6570\n                const totalPriceWithTwoDecimal = Math.round(totalPrice * 100) \/ 100;\n\n                \/\/ \u6253\u5370\u8c03\u8bd5\u4fe1\u606f\n                return totalPriceWithTwoDecimal;\n            }\n\n            \/\/ \u5c0f\u5b69\u6708\u4ef7\u683c\u6570\u7ec4\n            const dependentInstead=ref(\n                [\n                    {\n                        name:\"Cromo\",\n                        price:254.89\n                    },{\n                    name:\"Cromo Premier\",\n                    price:360.74\n                },{\n                    name:\"USC Elite 250\",\n                    price:140\n                },{\n                    name:\"USC Elite 450\",\n                    price:120\n                },{\n                    name:\"USC Elite Plus\",\n                    price:170\n                },{\n                    name:\"Royal 100\",\n                    price:0\n                },{\n                    name:\"Royal 1500\",\n                    price:0\n                },{\n                    name:\"Royal 500\",\n                    price:0\n                },{\n                    name:\"Royal Plus\",\n                    price:0\n                },{\n                    name:\"World Elite 250\",\n                    price:145\n                },{\n                    name:\"World Elite 450\",\n                    price:125\n                },{\n                    name:\"World Elite Plus\",\n                    price:178\n                },\n                ]\n            )\n            \/\/ \u5c0f\u5b69\u6708\u4ef7\u683c\n            const dependentPrice=()=>{\n                const insurance=localStorage.getItem(\"InsuranceName\")\n                \/\/ \u5982\u679c\u6ca1\u6709 insurance \u6216\u4ef7\u683c\u4e3a null\uff0c\u5219\u8fd4\u56de null\n                const insuranceItem = dependentInstead.value.find(item => item.name === insurance);\n                return insuranceItem ? insuranceItem.price : null;\n            }\n            \/\/ \u5c0f\u5b69\u603b\u4ef7\u683c\n            const dependentAllPrice=()=>{\n                if (dynamicInputFields.value.length<0) {\n                    return 0\n                }\n                \/\/ \u68c0\u67e5\u65e5\u671f\u662f\u5426\u6709\u6548\n                const startDate = new Date(inputDataOne[0].value);\n                const endDate = new Date(inputDataOne[1].value);\n\n                const startUTC = Date.UTC(startDate.getFullYear(), startDate.getMonth(), startDate.getDate());\n                const endUTC = Date.UTC(endDate.getFullYear(), endDate.getMonth(), endDate.getDate());\n\n                if (isNaN(startDate) || isNaN(endDate)) {\n                    console.error(\"\u65e0\u6548\u7684\u65e5\u671f\");\n                    return 0;\n                }\n\n                \/\/ \u786e\u4fdd\u8ba1\u7b97\u65f6\u7684\u65e5\u671f\u662f\u96f6\u70b9\u65f6\u523b\uff0c\u907f\u514d\u65f6\u533a\u5dee\u5f02\n                startDate.setHours(0, 0, 0, 0);\n                endDate.setHours(0, 0, 0, 0);\n                const dailyPrice=dependentPrice()\n                \/\/ \u8ba1\u7b97\u603b\u4ef7\u683c\n                const insurance_name = localStorage.getItem(\"InsuranceName\")\n                const totalPrice = calculateAnnualPrice(dailyPrice,insurance_name)\n                \/\/ \u4f7f\u7528 Math.round \u8fdb\u884c\u56db\u820d\u4e94\u5165\u5230\u4e24\u4f4d\u5c0f\u6570\n                const totalPriceWithTwoDecimal = Math.round(totalPrice * 100) \/ 100;\n                \/\/ \u6253\u5370\u8c03\u8bd5\u4fe1\u606f\n                return totalPriceWithTwoDecimal;\n            }\n\n            \/\/ \u6700\u7ec8\u4ef7\u683c\n            const lastPrice=ref()\n            const getlastPrice=()=>{\n                const dependentCount = Number(numDependents.value) || 0;\n                const fallbackFamilyPrice =\n                    Number(allPrice()) +\n                    (SpouseyesOrNo.value === \"Yes\" ? Number(spouseAllPrice()) : 0) +\n                    (dependentCount > 0 ? Number(dependentAllPrice()) * dependentCount : 0);\n                const computedPrice = quotePremiums.value?.total_price ?? fallbackFamilyPrice;\n                const rawPrice = Number.isFinite(computedPrice) ? (Math.round(computedPrice * 100) \/ 100) : 0;\n                lastPrice.value = rawPrice.toLocaleString('en-US', {\n                    minimumFractionDigits: 2,\n                    maximumFractionDigits: 2\n                });\n            }\n            const formatMoneyNumber = (value) => {\n                const amount = Number(value)\n                return Number.isFinite(amount) ? Math.round(amount * 100) \/ 100 : 0\n            }\n            const getPrimaryPremium = () => formatMoneyNumber(quotePremiums.value?.primary_price ?? allPrice())\n            const getSpousePremium = () => formatMoneyNumber(quotePremiums.value?.spouse_price ?? spouseAllPrice())\n            const getDependentPremium = () => formatMoneyNumber(quotePremiums.value?.dependent_price ?? dependentAllPrice())\n            const quotePlanCodeMap = [\n                { name1: \"Cromo\", name2: \"Cromo\", code: \"WACROMO\" },\n                { name1: \"Cromo Premier\", name2: \"Cromo Premier\", code: \"WACROMOPREMIER\" },\n                { name1: \"J1 Scholar Premier\", name2: \"J1 Scholar Premier\", code: \"WASCHOLARPREMIER\" },\n                { name1: \"J1 Scholar\", name2: \"J1 Scholar\", code: \"WASCHOLAR\" },\n                { name1: \"USC World Elite 250\", name2: \"USC Elite 250\", code: \"USCWE250\" },\n                { name1: \"USC World Elite 450\", name2: \"USC Elite 450\", aliases: [\"USC450\"], code: \"USCWE450\" },\n                { name1: \"USC World Elite 800\", name2: \"USC Elite 800\", code: \"USCWE800\" },\n                { name1: \"USC World Elite Plus\", name2: \"USC Elite Plus\", code: \"USCWEPLUS\" },\n                { name1: \"USF World Elite 450\", name2: \"USF World 450\", code: \"USFWE450\" },\n                { name1: \"WellAway Royal 100\", name2: \"Royal 100\", code: \"WR100\" },\n                { name1: \"WellAway Royal 1500\", name2: \"Royal 1500\", code: \"WR1500\" },\n                { name1: \"WellAway Royal 500\", name2: \"Royal 500\", code: \"WR500\" },\n                { name1: \"WellAway Royal Plus\", name2: \"Royal Plus\", code: \"WRPLUS\" },\n                { name1: \"Royal UNC 1500\", name2: \"Royal UNC 1500\", code: \"WRR1500\" },\n                { name1: \"Royal UNC 500\", name2: \"Royal UNC 500\", code: \"WRR500\" },\n                { name1: \"Royal UNC 100\", name2: \"Royal UNC 100\", code: \"WRR100\" },\n                { name1: \"Royal UNC Plus\", name2: \"Royal UNC Plus\", code: \"WRRPLUS\" },\n                { name1: \"WellAway World Elite 250\", name2: \"World Elite 250\", code: \"WWE250\" },\n                { name1: \"WellAway World Elite 450\", name2: \"World Elite 450\", code: \"WWE450\" },\n                { name1: \"WellAway World Elite 800\", name2: \"World Elite 800\", code: \"WWE800\" },\n                { name1: \"WellAway World Elite Plus\", name2: \"World Elite Plus\", code: \"WWE0PLUS\" },\n                { name1: \"USC Scholar 100\", name2: \"USC Scholar 100\", code: \"USCSCHOLAR100\" },\n                { name1: \"USC Scholar 500\", name2: \"USC Scholar 500\", code: \"USCSCHOLAR500\" },\n                { name1: \"OPT choice\", name2: \"OPT\", code: \"WAOPT\" },\n                { name1: \"OPT Premier\", name2: \"OPT Premier\", code: \"WAOPTPREMIER\" },\n            ]\n            const normalizeQuotePlanText = (value) => normalizeTextValue(value).toLowerCase()\n            const isUsableQuoteValue = (value) => {\n                const text = normalizeTextValue(value)\n                return text && text !== 'undefined' && text !== 'null'\n            }\n            const getPlanCodeFromInsuranceName = () => {\n                const rawInsuranceName = normalizeTextValue(localStorage.getItem(\"InsuranceName\") || product.value)\n                if (!rawInsuranceName) return ''\n                const normalizedInsuranceName = normalizeQuotePlanText(rawInsuranceName)\n                const matchedPlan = quotePlanCodeMap.find((plan) => {\n                    const planNames = [plan.name1, plan.name2, ...(Array.isArray(plan.aliases) ? plan.aliases : [])]\n                    return planNames.some((planName) => normalizeQuotePlanText(planName) === normalizedInsuranceName)\n                })\n                return matchedPlan?.code || ''\n            }\n            const getQuotePlanPayload = () => {\n                const currentPlanName = normalizeTextValue(localStorage.getItem(\"InsuranceName\") || product.value)\n                const storedSelectedPlanName = normalizeTextValue(selectedPlanName.value || getStoredText('selected_plan_name'))\n                const canUseSelectedPlanId = !currentPlanName || (\n                    storedSelectedPlanName && normalizeQuotePlanText(storedSelectedPlanName) === normalizeQuotePlanText(currentPlanName)\n                )\n                const planId = [selectedPlanId.value, getStoredText('selected_plan_id')]\n                    .map((value) => normalizeTextValue(value))\n                    .find((value) => isUsableQuoteValue(value))\n                const planCode = [selectedPlanCode.value, getStoredText('selected_plan_code'), getPlanCodeFromInsuranceName()]\n                    .map((value) => normalizeTextValue(value))\n                    .find((value) => isUsableQuoteValue(value))\n                const preferPlanCode = ['WAOPT', 'WAOPTPREMIER'].includes(String(planCode || '').trim().toUpperCase())\n                if (preferPlanCode && planCode) return { plan_code: planCode }\n                if (canUseSelectedPlanId && planId) return { plan_id: Number(planId) || planId }\n                if (planCode) return { plan_code: planCode }\n                return null\n            }\n            const getQuoteDob = () => {\n                const currentDob = normalizeTextValue(inputDataTwo[4]?.value)\n                if (currentDob && dayjs(currentDob).isValid()) return formatDate(currentDob)\n                const storedDob = getStoredStudentDob()\n                if (storedDob) {\n                    inputDataTwo[4].value = storedDob\n                    getStudentAge(inputDataOne[0].value)\n                    return storedDob\n                }\n                return ''\n            }\n            const requestQuote = (options = {}) => {\n                const planPayload = getQuotePlanPayload()\n                const coverageStartDate = inputDataOne[0]?.value\n                const coverageEndDate = inputDataOne[1]?.value\n                const dob = getQuoteDob()\n                if (!planPayload || !coverageStartDate || !coverageEndDate) {\n                    const missing = []\n                    if (!planPayload) missing.push('plan_id\/plan_code')\n                    if (!coverageStartDate) missing.push('coverageStartDate')\n                    if (!coverageEndDate) missing.push('coverageEndDate')\n                    if (options.logMissing !== false) {\n                    }\n                    getlastPrice()\n                    return false\n                }\n                clearTimeout(quoteRequestTimer)\n                const currentSeq = ++quoteRequestSeq\n                quoteRequestTimer = setTimeout(() => {\n                    const includeFamilyInQuote = Number(quotePremiums.value?.has_family_price) === 1\n                    isQuoteLoading.value = true\n                    window.apiClient.post('https:\/\/agent.goglobalsafe.com\/api\/v1\/Enrollment\/quote', {\n                        ...planPayload,\n                        coverageStartDate: formatDate(coverageStartDate),\n                        coverageEndDate: formatDate(coverageEndDate),\n                        dob,\n                        spouse: includeFamilyInQuote && SpouseyesOrNo.value === 'Yes',\n                        dependents: includeFamilyInQuote ? (Number(numDependents.value) || 0) : 0\n                    }, {\n                        headers: {\n                            \"Accept\": \"application\/json\",\n                            \"X-Authentication-Key\": \"HSxZK8nHniLzZtv0Qtfk87wvNvXpJZ5K\",\n                        }\n                    }).then((response) => {\n                        if (currentSeq !== quoteRequestSeq) return\n                        const quoteData = response.data?.data || {}\n                        const premiums = quoteData.application_premiums\n                        if (!response.data?.success || !premiums) {\n                            throw new Error(response.data?.message || 'Quote failed.')\n                        }\n                        quotePremiums.value = {\n                            ...premiums,\n                            has_family_price: quoteData.has_family_price\n                        }\n                        getlastPrice()\n                        if (\n                            Number(quoteData.has_family_price) === 1\n                            && !includeFamilyInQuote\n                            && (SpouseyesOrNo.value === 'Yes' || Number(numDependents.value) > 0)\n                        ) {\n                            requestQuote({ logMissing: false })\n                        }\n                    }).catch((error) => {\n                        if (currentSeq !== quoteRequestSeq) return\n                        const errorMessage = error.response?.data?.message || error.message || ''\n                        if (\n                            isUnsupportedFamilyError(errorMessage)\n                            && (SpouseyesOrNo.value === 'Yes' || Number(numDependents.value) > 0)\n                            && options.retryWithoutFamily !== false\n                        ) {\n                            resetFamilySelection()\n                            quotePremiums.value = null\n                            requestQuote({ logMissing: false, retryWithoutFamily: false })\n                            return\n                        }\n                        quotePremiums.value = null\n                        errMessage.value = errorMessage || 'Quote failed. Please check your information.'\n                        showAlert()\n                        setTimeout(() => closeAlert(), 3000)\n                        getlastPrice()\n                    }).finally(() => {\n                        if (currentSeq === quoteRequestSeq) {\n                            isQuoteLoading.value = false\n                        }\n                    })\n                }, 350)\n                return true\n            }\n            const requestInitialQuote = (attempt = 0) => {\n                nextTick(() => {\n                    const didRequest = requestQuote({ logMissing: Boolean(currentReq) })\n                    if (!didRequest && attempt < 8) {\n                        setTimeout(() => requestInitialQuote(attempt + 1), 250)\n                    }\n                })\n            }\n            watch(\n                [\n                    () => inputDataOne[0].value,\n                    () => inputDataOne[1].value,\n                    () => inputDataTwo[4].value,\n                    () => SpouseyesOrNo.value,\n                    () => numDependents.value\n                ],\n                () => requestQuote()\n            )\n\n            \/\/ \u652f\u4ed8\u6309\u94ae\n            const paymentData = ref()\n            const flag=ref()\n            const CARD_PAYMENT_PROVIDER = () => resolvedCardPaymentProvider.value\n            \/\/ const CARD_PAYMENT_PROVIDER = () => 'wellaway'\n            const isStripeCardPayment = () => CARD_PAYMENT_PROVIDER() === 'stripe'\n            const setCardCheckoutProcessing = (active) => {\n                const processing = Boolean(active)\n                isPaymentProcessing.value = processing\n                isBuying.value = processing ? 1 : 0\n                loading.value = processing\n            }\n            const supportLink = 'https:\/\/work.weixin.qq.com\/kfid\/kfc00c5a038170f3f46'\n            const pageMode = ref('checkout')\n            const cardSuccessEnrollment = ref('')\n            const enrollmentIdDisplay = ref('')\n            const wechatModalStep = ref(1)\n            const wechatModalError = ref('')\n            const wechatSubmitting = ref(false)\n            const wechatPreparing = ref(false)\n            const wechatNameZh = ref('')\n            const wechatIdNumber = ref('')\n            const wechatPaymentRequestId = ref('')\n            const wechatStepallScreenshot = ref('')\n            const wechatAttachmentInput = ref(null)\n            const wechatAttachmentFiles = ref([])\n            const wechatAttachmentError = ref('')\n            const wechatUploadMessage = ref('')\n            const wechatUploadSuccess = ref(false)\n            const resetTransientCheckoutUi = () => {\n                setCardCheckoutProcessing(false)\n                isConfirmChecking.value = false\n                wechatPreparing.value = false\n                wechatSubmitting.value = false\n            }\n            const wechatUploading = ref(false)\n            const wechatAttachmentDragOver = ref(false)\n            const successSummary = ref(null)\n            const successSummaryLoading = ref(false)\n            const successSummaryError = ref(false)\n            const successToast = ref('')\n            const eipSuccessUpsellEnabled = true\n            const eipHandoffLoading = ref(false)\n            let successToastTimer = null\n            let successSummaryPromise = null\n            let successSummaryKey = ''\n            const successIsEasyTransfer = computed(() => {\n                return successSummary.value?.payment_method === 'easytransfer'\n                    || (currentStep.value === 3 && wechatUploadSuccess.value)\n            })\n            const successIsChinese = computed(() => {\n                return successIsEasyTransfer.value\n                    || successSummary.value?.force_chinese === true\n                    || lang === 'zh'\n            })\n            const showUnifiedPaidSuccess = computed(() => {\n                if (isYisihuiReviewMode.value) return false\n                return pageMode.value === 'card-success'\n                    || (currentStep.value === 3 && wechatUploadSuccess.value)\n            })\n            const successReferralCode = computed(() => normalizeTextValue(successSummary.value?.referral?.code))\n            const successReferralUrl = computed(() => normalizeTextValue(successSummary.value?.referral?.share_url))\n            const successApplicantName = computed(() => {\n                const summary = successSummary.value || {}\n                const storedHistory = getStoredJson('user_form_history') || {}\n                const storedMember = storedHistory.members?.[0] || {}\n                const firstName = normalizeTextValue(summary.first_name || summary.firstName || inputDataTwo[0]?.value || storedMember.firstName)\n                const middleName = normalizeTextValue(summary.middle_name || summary.middleName || inputDataTwo[1]?.value || storedMember.middleName)\n                const lastName = normalizeTextValue(summary.last_name || summary.lastName || inputDataTwo[2]?.value || storedMember.lastName)\n                return [firstName, middleName, lastName].filter(Boolean).join(' ')\n            })\n            const successCommunity = computed(() => {\n                const community = successSummary.value?.school_community\n                if (!normalizeTextValue(community?.qr_code_url)) return null\n                const title = successIsChinese.value\n                    ? normalizeTextValue(community?.title_zh || community?.title)\n                    : normalizeTextValue(community?.title_en || community?.title)\n                const secondTitle = successIsChinese.value\n                    ? normalizeTextValue(community?.second_title_zh || community?.second_title)\n                    : normalizeTextValue(community?.second_title_en || community?.second_title)\n                return {\n                    ...community,\n                    title,\n                    second_title: secondTitle\n                }\n            })\n            const successReferralCodeDisplay = computed(() => {\n                if (successReferralCode.value) return successReferralCode.value\n                if (successSummaryLoading.value) return successIsChinese.value ? '\u6b63\u5728\u51c6\u5907\u2026' : 'Preparing\u2026'\n                return successIsChinese.value ? '\u53ef\u7a0d\u540e\u5728\u4e2a\u4eba\u4e2d\u5fc3\u67e5\u770b' : 'Available shortly in your account'\n            })\n            const successCopy = computed(() => successIsChinese.value ? {\n                badge: successIsEasyTransfer.value ? '\u6295\u4fdd\u6210\u529f' : '\u652f\u4ed8\u6210\u529f',\n                pageLabel: '\u7f8e\u56fd\u4fdd\u9669\u6295\u4fdd\u6210\u529f\u9875\u9762',\n                confirmationTitle: '\u4fdd\u5355\u5df2\u751f\u6210',\n                confirmationDescription: '\u8ba2\u5355\u5df2\u8fdb\u5165\u51fa\u4fdd\u5904\u7406\u3002\u82e5\u4fdd\u5355\u6587\u4ef6\u4ecd\u5728\u751f\u6210\u4e2d\uff0c\u8bf7\u7a0d\u540e\u524d\u5f80\u4e2a\u4eba\u4e2d\u5fc3\u67e5\u770b\u66f4\u65b0\u3002',\n                eipKicker: '\u5b66\u8d39\u4e0e\u65c5\u884c\u4fdd\u969c',\n                eipTitle: '\u8fd8\u9700\u8981\u52a0\u8d2d Tuition Insurance \u5b66\u8d39\u4fdd\u9669\u5417\uff1f',\n                eipDescription: '\u4e3a\u5b66\u8d39\u3001\u4f4f\u5bbf\u8d39\u53ca\u76f8\u5173\u51fa\u884c\u8d39\u7528\u589e\u52a0\u4e00\u5c42\u4fdd\u969c\u3002\u4e0b\u4e00\u9875\u53ef\u4fee\u6539\u9884\u586b\u8d44\u6599\u3001\u9009\u62e9\u4fdd\u969c\u91d1\u989d\u5e76\u83b7\u53d6\u62a5\u4ef7\u3002',\n                eipAction: '\u67e5\u770b\u5e76\u52a0\u8d2d\u5b66\u8d39\u4fdd\u9669',\n                eipPreparing: '\u6b63\u5728\u5b89\u5168\u9884\u586b\u2026',\n                eipHint: '\u5b66\u672f\u5468\u671f\u4e0e\u65c5\u884c\u65e5\u671f\u9700\u5728\u4e0b\u4e00\u9875\u91cd\u65b0\u586b\u5199',\n                referralKicker: '\u63a8\u8350\u6709\u793c',\n                referralTitle: '\u628a\u4f60\u7684\u4e13\u5c5e\u63a8\u8350\u7801\u5206\u4eab\u7ed9\u540c\u5b66',\n                referralDescription: '\u597d\u53cb\u901a\u8fc7\u4f60\u7684\u63a8\u8350\u94fe\u63a5\u5b8c\u6210\u7b26\u5408\u6761\u4ef6\u7684\u6295\u4fdd\u540e\uff0c\u4f60\u4eec\u90fd\u53ef\u80fd\u83b7\u5f97\u5bf9\u5e94\u63a8\u8350\u5956\u52b1\u3002',\n                referralLabel: '\u4f60\u7684 Referral Code',\n                copy: '\u590d\u5236',\n                shareLabel: '\u590d\u5236\u63a8\u8350\u5185\u5bb9\u540e\uff0c\u9009\u62e9\u5e73\u53f0\u5206\u4eab',\n                xiaohongshu: '\u5c0f\u7ea2\u4e66',\n                communityKicker: '\u5b66\u6821\u65b0\u751f\u7fa4',\n                communityHeading: '\u52a0\u5165\u4f60\u7684\u5b66\u6821\u793e\u7fa4',\n                communityDescription: '\u83b7\u53d6\u5165\u5b66\u63d0\u9192\u3001\u4fdd\u9669 Waiver \u4fe1\u606f\u5e76\u548c\u65b0\u751f\u4ea4\u6d41\u3002',\n                communityFallbackTitle: '\u5b66\u6821\u65b0\u751f\u7fa4',\n                communityFallbackNote: '\u8bf7\u4f7f\u7528\u5fae\u4fe1\u626b\u7801\u52a0\u5165\uff1b\u4e8c\u7ef4\u7801\u8fc7\u671f\u65f6\u53ef\u8054\u7cfb GGS \u5ba2\u670d\u3002',\n                communityQrAlt: '\u5b66\u6821\u65b0\u751f\u5fae\u4fe1\u7fa4\u4e8c\u7ef4\u7801',\n                accountAction: '\u524d\u5f80\u4e2a\u4eba\u4e2d\u5fc3',\n                secondaryAction: successIsEasyTransfer.value ? '\u8fd4\u56de\u9996\u9875' : '\u8054\u7cfb\u5ba2\u670d',\n                copied: '\u63a8\u8350\u7801\u5df2\u590d\u5236',\n                shareCopied: '\u5206\u4eab\u5185\u5bb9\u5df2\u590d\u5236\uff0c\u5373\u5c06\u6253\u5f00\u5e73\u53f0',\n                copyFailed: '\u590d\u5236\u5931\u8d25\uff0c\u8bf7\u624b\u52a8\u590d\u5236\u63a8\u8350\u7801'\n            } : {\n                badge: 'Purchase complete',\n                pageLabel: 'US enrollment success page',\n                confirmationTitle: 'Your policy has been issued',\n                confirmationDescription: 'Your order is now being processed. If your policy documents are still generating, please check your account center again shortly.',\n                eipKicker: 'Tuition & travel protection',\n                eipTitle: 'Would you also like to add Tuition Insurance?',\n                eipDescription: 'Add protection for tuition, room and board, and related travel expenses. Review and edit the prefilled details on the next page.',\n                eipAction: 'Get a tuition insurance quote',\n                eipPreparing: 'Preparing secure prefill\u2026',\n                eipHint: 'You will enter academic and travel dates on the next page',\n                referralKicker: 'Referral Reward',\n                referralTitle: 'Share your personal referral code',\n                referralDescription: 'When a friend completes an eligible enrollment through your link, both of you may receive the applicable referral reward.',\n                referralLabel: 'Your Referral Code',\n                copy: 'Copy',\n                shareLabel: 'Copy your referral message, then choose where to share it',\n                xiaohongshu: 'Red Note',\n                communityKicker: 'School Community',\n                communityHeading: 'Join your school group',\n                communityDescription: 'Get enrollment reminders, waiver updates, and connect with incoming students.',\n                communityFallbackTitle: 'Incoming Students Group',\n                communityFallbackNote: 'Scan with WeChat. Contact GGS support if the QR code has expired.',\n                communityQrAlt: 'School community WeChat QR code',\n                accountAction: 'Go to My Account',\n                secondaryAction: 'Contact Support',\n                copied: 'Referral code copied',\n                shareCopied: 'Share message copied. Opening the platform now.',\n                copyFailed: 'Unable to copy. Please copy the code manually.'\n            })\n            const successSecondaryHref = computed(() => successIsEasyTransfer.value ? '\/' : supportLink)\n            const openEipEnrollment = async () => {\n                if (eipHandoffLoading.value) return\n                eipHandoffLoading.value = true\n                const eipUrl = '\/tuition-insurance-enrollment'\n                if (successPreviewMode) {\n                    window.location.href = `${eipUrl}?success_preview=1`\n                    return\n                }\n                try {\n                    const nationalityCode = normalizeTextValue(inputDataTwo[5]?.value)\n                    const nationality = normalizeTextValue(HomeCountry.value || nationalityCode)\n                    const originPhone = normalizeTextValue(inputDataThree[0]?.value)\n                    const callingCode = (originPhone.match(\/^\\+[0-9-]+\/) || [])[0] || ''\n                    const payload = {\n                        first_name: normalizeTextValue(inputDataTwo[0]?.value),\n                        last_name: normalizeTextValue(inputDataTwo[2]?.value),\n                        email: normalizeTextValue(inputDataTwo[6]?.value),\n                        phone_country_code: callingCode,\n                        phone: originPhone,\n                        date_of_birth: normalizeTextValue(inputDataTwo[4]?.value),\n                        citizenship: nationality,\n                        school: normalizeTextValue(school.value),\n                        residence_address_1: normalizeTextValue(homeData[0]?.value),\n                        residence_address_2: normalizeTextValue(homeData[1]?.value),\n                        residence_city: normalizeTextValue(homeData[2]?.value),\n                        residence_state: normalizeTextValue(HomeState.value),\n                        residence_postal_code: normalizeTextValue(homeData[3]?.value),\n                        residence_country: nationality,\n                        destination_city: normalizeTextValue(destinationData[2]?.value),\n                        destination_state: normalizeTextValue(dsState.value),\n                    }\n                    const enrollmentId = normalizeTextValue(cardSuccessEnrollment.value)\n                    if (\/^\\d+$\/.test(enrollmentId)) payload.source_enrollment_id = Number(enrollmentId)\n                    Object.keys(payload).forEach(key => {\n                        if (payload[key] === '' || payload[key] === null || payload[key] === undefined) delete payload[key]\n                    })\n                    const response = await window.apiClient.post(eipApiBase + '\/handoffs', payload, {\n                        headers: { 'Accept': 'application\/json', 'Content-Type': 'application\/json' }\n                    })\n                    const token = normalizeTextValue(response?.data?.data?.token)\n                    window.location.href = token ? `${eipUrl}?handoff=${encodeURIComponent(token)}` : eipUrl\n                } catch (error) {\n                    eipHandoffLoading.value = false\n                    showSuccessToast(successIsChinese.value\n                        ? '\u5b66\u8d39\u4fdd\u9669\u9884\u586b\u5931\u8d25\uff0c\u8bf7\u7a0d\u540e\u91cd\u8bd5\u3002'\n                        : 'Unable to prepare the tuition insurance form. Please try again.')\n                }\n            }\n            const showSuccessToast = (message) => {\n                successToast.value = message\n                clearTimeout(successToastTimer)\n                successToastTimer = setTimeout(() => { successToast.value = '' }, 1900)\n            }\n            const copySuccessText = async (text, message) => {\n                if (!normalizeTextValue(text)) return false\n                try {\n                    if (navigator.clipboard && window.isSecureContext) {\n                        await navigator.clipboard.writeText(text)\n                    } else {\n                        const textarea = document.createElement('textarea')\n                        textarea.value = text\n                        textarea.style.position = 'fixed'\n                        textarea.style.opacity = '0'\n                        document.body.appendChild(textarea)\n                        textarea.select()\n                        document.execCommand('copy')\n                        textarea.remove()\n                    }\n                    showSuccessToast(message)\n                    return true\n                } catch (error) {\n                    showSuccessToast(successCopy.value.copyFailed)\n                    return false\n                }\n            }\n            const copySuccessReferralCode = () => copySuccessText(successReferralCode.value, successCopy.value.copied)\n            const successShareText = computed(() => successIsChinese.value\n                ? `\u6211\u5df2\u901a\u8fc7 GoGlobalSafe \u5b8c\u6210\u7559\u5b66\u751f\u4fdd\u9669\u6295\u4fdd\u3002\u4f7f\u7528\u6211\u7684\u63a8\u8350\u7801 ${successReferralCode.value} \u4e86\u89e3\u9002\u5408\u4f60\u7684\u4fdd\u9669\u8ba1\u5212\uff1a${successReferralUrl.value}`\n                : `I completed my student insurance enrollment with GoGlobalSafe. Use my referral code ${successReferralCode.value} to explore an eligible plan: ${successReferralUrl.value}`\n            )\n            const shareSuccessReferral = async (platform) => {\n                if (!successReferralCode.value) return\n                const platformUrls = {\n                    xiaohongshu: 'https:\/\/creator.xiaohongshu.com\/publish\/publish?source=official',\n                    instagram: 'https:\/\/www.instagram.com\/',\n                    reddit: 'https:\/\/www.reddit.com\/r\/studyabroad\/',\n                }\n                const platformUrl = platformUrls[platform]\n                if (!platformUrl) return\n                const popup = window.open('about:blank', '_blank')\n                await copySuccessText(successShareText.value, successCopy.value.shareCopied)\n                if (popup) {\n                    popup.opener = null\n                    popup.location.href = platformUrl\n                } else {\n                    window.open(platformUrl, '_blank', 'noopener,noreferrer')\n                }\n            }\n            const resolveLegacySuccessRequestId = () => {\n                const history = getStoredJson('user_form_history') || {}\n                return normalizeEasyTransferReturnRequestId(\n                    history.requestId || history.request_id || wechatPaymentRequestId.value\n                )\n            }\n            const loadSuccessSummary = ({ enrollmentId = '', requestId: summaryRequestId = '' } = {}) => {\n                const normalizedEnrollmentId = normalizeTextValue(enrollmentId)\n                const normalizedRequestId = normalizeTextValue(summaryRequestId)\n                const key = normalizedEnrollmentId ? `enrollment:${normalizedEnrollmentId}` : `request:${normalizedRequestId}`\n                if (key === 'request:' || key === 'enrollment:') return Promise.resolve(false)\n                if (successSummary.value && successSummaryKey === key) return Promise.resolve(true)\n                if (successSummaryPromise && successSummaryKey === key) return successSummaryPromise\n\n                successSummaryKey = key\n                successSummaryLoading.value = true\n                successSummaryError.value = false\n                successSummaryPromise = (async () => {\n                    const payload = normalizedEnrollmentId\n                        ? { enrollment_id: normalizedEnrollmentId, language: lang }\n                        : { request_id: normalizedRequestId, language: lang }\n                    payload.openai_ads = getOpenAiAdsContext()\n                    if (successPreviewMode) payload.preview = 1\n                    for (let attempt = 0; attempt < 6; attempt++) {\n                        try {\n                            const response = await window.apiClient.post('https:\/\/agent.goglobalsafe.com\/api\/v1\/Enrollment\/success-summary', payload, {\n                                headers: {\n                                    'Accept': 'application\/json',\n                                    'X-Authentication-Key': 'HSxZK8nHniLzZtv0Qtfk87wvNvXpJZ5K'\n                                }\n                            })\n                            measureOpenAiAdsResponse(response)\n                            if (response?.data?.success && response?.data?.data) {\n                                successSummary.value = response.data.data\n                                successSummaryError.value = false\n                                return true\n                            }\n                        } catch (error) {\n                            const status = Number(error?.response?.status || 0)\n                            if (![202, 503].includes(status) && attempt >= 2) break\n                        }\n                        await new Promise(resolve => setTimeout(resolve, 1000 + (attempt * 500)))\n                    }\n                    successSummaryError.value = true\n                    return false\n                })().finally(() => {\n                    successSummaryLoading.value = false\n                    successSummaryPromise = null\n                })\n\n                return successSummaryPromise\n            }\n            const i20FileInput = ref(null)\n            const i20Uploading = ref(false)\n            const i20TokenStorageKey = 'i20_upload_token_current'\n            const i20FileNameStorageKey = 'i20_upload_filename_current'\n            const i20FilledFieldsStorageKey = 'i20_filled_fields_current'\n            const getStoredI20FilledFields = () => {\n                try {\n                    const fields = JSON.parse(sessionStorage.getItem(i20FilledFieldsStorageKey) || '[]')\n                    return Array.isArray(fields) ? fields : []\n                } catch (error) {\n                    return []\n                }\n            }\n            const i20UploadToken = ref(sessionStorage.getItem(i20TokenStorageKey) || '')\n            const i20FileName = ref(sessionStorage.getItem(i20FileNameStorageKey) || 'I-20.pdf')\n            const i20FilledFields = ref(i20UploadToken.value ? getStoredI20FilledFields() : [])\n            if (!i20UploadToken.value) {\n                sessionStorage.removeItem(i20FilledFieldsStorageKey)\n            }\n            const i20Message = ref('')\n            const i20MessageType = ref(i20UploadToken.value && i20FilledFields.value.length ? 'success' : 'info')\n            const i20Summary = ref('')\n            const i20FilledCount = ref(i20FilledFields.value.length)\n            const i20IsChinese = computed(() => {\n                const language = `${document.documentElement.lang || ''} ${localStorage.getItem('language') || ''} ${localStorage.getItem('lang') || ''}`.toLowerCase()\n                return language.includes('zh') || language.includes('cn')\n            })\n            const i20Copy = computed(() => i20IsChinese.value ? {\n                button: '\u4e0a\u4f20 I-20\uff0c\u5feb\u901f\u586b\u5199', reading: '\u6b63\u5728\u8bfb\u53d6 I-20',\n                uploadTitle: '\u4e0a\u4f20 I-20\uff0c\u5feb\u901f\u586b\u5199',\n                uploadDescription: '\u4e0a\u4f20 I-20 \u540e\uff0c\u6211\u4eec\u4f1a\u81ea\u52a8\u63d0\u53d6\u4fe1\u606f\uff0c\u5e2e\u52a9\u4f60\u66f4\u5feb\u5b8c\u6210\u586b\u5199\u3002',\n                uploadReview: '\u63d0\u4ea4\u524d\u4f60\u4ecd\u53ef\u68c0\u67e5\u5e76\u4fee\u6539\u6240\u6709\u4fe1\u606f\u3002',\n                uploadMeta: 'PDF\uff0c\u6700\u5927 5MB',\n                uploadedTitle: 'I-20 \u4e0a\u4f20\u6210\u529f',\n                uploadedDescription: '\u5df2\u81ea\u52a8\u586b\u5199\u4e2a\u4eba\u3001\u5b66\u6821\u548c\u7b7e\u8bc1\u4fe1\u606f\uff0c\u8bf7\u68c0\u67e5\u4e0b\u65b9\u7eff\u8272\u5b57\u6bb5\u3002',\n                filled: (count) => `\u5df2\u81ea\u52a8\u586b\u5199 ${count} \u9879`,\n                replace: '\u66ff\u6362\u6587\u4ef6',\n                remove: '\u79fb\u9664',\n                summaryTitle: '\u5df2\u4ece\u4f60\u7684 I-20 \u81ea\u52a8\u586b\u5199\u4fe1\u606f\u3002',\n                summaryDescription: '\u8bf7\u68c0\u67e5\u7eff\u8272\u5b57\u6bb5\uff0c\u5e76\u8865\u5145\u5269\u4f59\u4fe1\u606f\u3002',\n                remaining: (count) => `\u8fd8\u9700\u586b\u5199 ${count} \u9879`,\n                sourceBadge: '\u6765\u81ea I-20',\n                optional: '\u9009\u586b',\n                savedUnreadable: '\u672a\u80fd\u8bc6\u522b I-20 \u4fe1\u606f\uff0c\u8bf7\u624b\u52a8\u586b\u5199\u3002',\n                invalid: '\u672a\u80fd\u8bc6\u522b\u4e3a I-20\uff0c\u8bf7\u6838\u5bf9\u6587\u4ef6\u6216\u624b\u52a8\u586b\u5199\u3002', failed: 'I-20 \u4e0a\u4f20\u5931\u8d25\uff0c\u8bf7\u7a0d\u540e\u91cd\u8bd5\u3002'\n            } : {\n                button: 'Upload I-20 to Fill Faster', reading: 'Reading I-20',\n                uploadTitle: 'Upload I-20 to Fill Faster',\n                uploadDescription: \"Upload your I-20 and we'll automatically extract your information to save you time.\",\n                uploadReview: 'You can review all details before continuing.',\n                uploadMeta: 'PDF, max 5MB',\n                uploadedTitle: 'I-20 uploaded successfully',\n                uploadedDescription: 'Personal, school and visa information was filled automatically. Review the green fields below.',\n                filled: (count) => `${count} fields filled automatically`,\n                replace: 'Replace file',\n                remove: 'Remove',\n                summaryTitle: 'Information was filled from your I-20.',\n                summaryDescription: 'Review the green fields and complete the remaining details.',\n                remaining: (count) => `${count} ${count === 1 ? 'detail' : 'details'} remaining`,\n                sourceBadge: 'From I-20',\n                optional: 'Optional',\n                savedUnreadable: \"We couldn't read the I-20 details. Please enter the information manually.\",\n                invalid: \"We couldn't recognize this document as an I-20. Please check the file or enter the information manually.\", failed: 'I-20 upload failed. Please try again.'\n            })\n            const i20PersonalRemainingCount = computed(() => [\n                inputDataTwo[0].value,\n                inputDataTwo[2].value,\n                inputDataTwo[3].value,\n                inputDataTwo[4].value,\n                inputDataTwo[5].value,\n                inputDataTwo[6].value,\n                inputDataTwo[7].value,\n                visaType.value,\n                inputDataSix[0].value,\n                inputDataSix[1].value\n            ].filter(value => !normalizeTextValue(value)).length)\n            const i20PersonalRemainingLabel = computed(() => i20Copy.value.remaining(i20PersonalRemainingCount.value))\n            const isI20Prefilled = (field) => i20FilledFields.value.includes(field)\n            const persistI20FilledFields = () => {\n                sessionStorage.setItem(i20FilledFieldsStorageKey, JSON.stringify(i20FilledFields.value))\n            }\n            const i20VisaGuideOpen = ref(false)\n            const i20VisaGuideHover = ref(false)\n            const i20VisaGuideVisible = computed(() => i20VisaGuideOpen.value || i20VisaGuideHover.value)\n            const i20VisaGuideCopy = computed(() => i20IsChinese.value ? {\n                trigger: '\u8fd8\u6ca1\u6709 Visa\uff1f\u67e5\u770b I-20 \u65e5\u671f',\n                title: '\u8fd8\u6ca1\u6709 Visa\uff1f',\n                description: '\u53ef\u4ee5\u4f7f\u7528 I-20 \u4e0a\u7684 PROGRAM START\/END DATE \u586b\u5199\u4e0b\u9762\u7684 Visa \u8d77\u6b62\u65e5\u671f\u3002',\n                imageAlt: 'I-20 PROGRAM START\/END DATE \u793a\u4f8b',\n                close: '\u5173\u95ed'\n            } : {\n                trigger: 'No visa yet? View I-20 dates',\n                title: 'No visa yet?',\n                description: 'Use the PROGRAM START\/END DATE on your I-20 to fill in the Visa start and end dates below.',\n                imageAlt: 'I-20 PROGRAM START END DATE example',\n                close: 'Close'\n            })\n            const toggleI20VisaGuide = () => { i20VisaGuideOpen.value = !i20VisaGuideOpen.value }\n            const closeI20VisaGuide = () => {\n                i20VisaGuideOpen.value = false\n                i20VisaGuideHover.value = false\n            }\n            const openI20Picker = () => i20FileInput.value?.click()\n            const clearI20Prefill = () => {\n                i20UploadToken.value = ''\n                i20FileName.value = 'I-20.pdf'\n                i20FilledFields.value = []\n                i20FilledCount.value = 0\n                i20Message.value = ''\n                i20Summary.value = ''\n                sessionStorage.removeItem(i20TokenStorageKey)\n                sessionStorage.removeItem(i20FileNameStorageKey)\n                sessionStorage.removeItem(i20FilledFieldsStorageKey)\n                if (i20FileInput.value) i20FileInput.value.value = ''\n            }\n            const normalizeSchoolForI20 = (value) => normalizeTextValue(value).toLowerCase().replace(\/\\b(university|college|the|of|at)\\b\/g, ' ').replace(\/[^a-z0-9]+\/g, ' ').replace(\/\\s+\/g, ' ').trim()\n            const fillI20EmptyFields = (fields) => {\n                let count = 0\n                const filledFields = []\n                const fill = (field, target, value) => {\n                    const normalized = normalizeTextValue(value)\n                    if (!normalizeTextValue(target.value) && normalized) {\n                        target.value = normalized\n                        filledFields.push(field)\n                        count++\n                    }\n                }\n                fill('firstName', inputDataTwo[0], fields.first_name)\n                fill('middleName', inputDataTwo[1], fields.middle_name)\n                fill('lastName', inputDataTwo[2], fields.last_name)\n                fill('dateOfBirth', inputDataTwo[4], normalizeDobForEnrollment(fields.date_of_birth))\n                if (!normalizeTextValue(inputDataTwo[3].value) && ['M', 'F'].includes(fields.gender)) {\n                    inputDataTwo[3].value = fields.gender\n                    filledFields.push('gender')\n                    count++\n                }\n                if (!normalizeTextValue(inputDataTwo[5].value)) {\n                    const country = homeCountryData.find(item => normalizeTextValue(item.code).toUpperCase() === normalizeTextValue(fields.nationality_code).toUpperCase())\n                        || homeCountryData.find(item => normalizeTextValue(item.name).toLowerCase() === normalizeTextValue(fields.nationality_name).toLowerCase())\n                    if (country) {\n                        inputDataTwo[5].value = country.code\n                        filledFields.push('nationality')\n                        count++\n                    }\n                }\n                if (!normalizeTextValue(visaType.value) && fields.visa_type) {\n                    visaType.value = fields.visa_type\n                    filledFields.push('visaType')\n                    count++\n                }\n                fill('visaStart', inputDataSix[0], fields.program_start_date)\n                fill('visaEnd', inputDataSix[1], fields.program_end_date)\n                if (!normalizeTextValue(graduateDate.value) && fields.program_end_date) {\n                    graduateDate.value = fields.program_end_date\n                    filledFields.push('graduationDate')\n                    count++\n                }\n                const parsedSchool = normalizeTextValue(fields.school_name)\n                const currentSchool = normalizeTextValue(schoolNew.value || school.value)\n                let schoolWarning = ''\n                if (!currentSchool && parsedSchool) {\n                    syncSchoolValue(parsedSchool)\n                    filledFields.push('school')\n                    count++\n                }\n                else if (currentSchool && parsedSchool && normalizeSchoolForI20(currentSchool) !== normalizeSchoolForI20(parsedSchool)) {\n                    schoolWarning = i20IsChinese.value ? `\u5b66\u6821\u4e0d\u4e00\u81f4\uff0c\u8bf7\u6838\u5bf9\uff1aI-20 \u4e3a ${parsedSchool}` : `School differs. Please verify: I-20 shows ${parsedSchool}`\n                }\n                return { count, schoolWarning, filledFields }\n            }\n            const uploadI20ForPrefill = async (event) => {\n                const file = event?.target?.files?.[0]\n                if (!file || i20Uploading.value) return\n                if (file.type !== 'application\/pdf' && !file.name.toLowerCase().endsWith('.pdf')) {\n                    i20Message.value = i20IsChinese.value ? '\u8bf7\u9009\u62e9 PDF \u683c\u5f0f\u7684 I-20\u3002' : 'Please choose an I-20 PDF.'\n                    i20MessageType.value = 'error'\n                    return\n                }\n                if (file.size > 5 * 1024 * 1024) {\n                    i20Message.value = i20IsChinese.value ? '\u6587\u4ef6\u4e0d\u80fd\u8d85\u8fc7 5MB\u3002' : 'The file must be 5MB or smaller.'\n                    i20MessageType.value = 'error'\n                    return\n                }\n                i20Uploading.value = true\n                i20FileName.value = file.name\n                i20Message.value = i20Copy.value.reading\n                i20MessageType.value = 'info'\n                i20Summary.value = ''\n                try {\n                    const body = new FormData()\n                    body.append('file', file)\n                    const response = await window.apiClient.post('https:\/\/agent.goglobalsafe.com\/api\/v1\/enrollment\/i20\/parse', body, {\n                        headers: { 'Accept': 'application\/json', 'X-Authentication-Key': 'HSxZK8nHniLzZtv0Qtfk87wvNvXpJZ5K' }\n                    })\n                    const data = response?.data?.data || {}\n                    i20UploadToken.value = normalizeTextValue(data.upload_token)\n                    if (i20UploadToken.value) {\n                        sessionStorage.setItem(i20TokenStorageKey, i20UploadToken.value)\n                        sessionStorage.setItem(i20FileNameStorageKey, i20FileName.value)\n                    }\n                    if (data.parse_status === 'unreadable') {\n                        i20FilledFields.value = []\n                        persistI20FilledFields()\n                        i20FilledCount.value = 0\n                        i20Message.value = i20Copy.value.savedUnreadable\n                        i20MessageType.value = 'warning'\n                    } else if (data.parse_status === 'invalid_document') {\n                        i20FilledFields.value = []\n                        persistI20FilledFields()\n                        i20FilledCount.value = 0\n                        i20Message.value = i20Copy.value.invalid\n                        i20MessageType.value = 'warning'\n                    } else {\n                        const result = fillI20EmptyFields(data.fields || {})\n                        i20FilledFields.value = result.filledFields\n                        persistI20FilledFields()\n                        i20FilledCount.value = result.count\n                        i20Message.value = i20IsChinese.value ? `\u5df2\u81ea\u52a8\u586b\u5199 ${result.count} \u9879\u4fe1\u606f\u3002` : `${result.count} fields filled automatically.`\n                        i20MessageType.value = 'success'\n                        const details = [data.fields?.sevis_id && `SEVIS: ${data.fields.sevis_id}`, data.fields?.education_level, data.fields?.major, result.schoolWarning].filter(Boolean)\n                        i20Summary.value = details.join(' \u00b7 ')\n                    }\n                } catch (error) {\n                    i20Message.value = i20IsChinese.value\n                        ? '\u8bc6\u522b\u5931\u8d25\uff0c\u8bf7\u624b\u52a8\u586b\u5199\u4fe1\u606f\u3002'\n                        : 'We could not read this I-20. Please fill in your information manually.'\n                    i20MessageType.value = 'error'\n                } finally {\n                    i20Uploading.value = false\n                    if (i20FileInput.value) i20FileInput.value.value = ''\n                }\n            }\n            watch(wechatModalStep, async () => {\n                await nextTick()\n                const modalBody = document.querySelector('#myModal .wechat-payment-modal__body')\n                if (modalBody) modalBody.scrollTop = 0\n            })\n            const showModel = async (step = wechatModalStep.value) => {\n                flag.value = true\n                wechatModalStep.value = step\n                await nextTick()\n                const modal = document.getElementById(\"myModal\")\n                if (modal) {\n                    modal.classList.add(\"modal-open\")\n                    modal.style.display = \"flex\"\n                    modal.style.opacity = \"1\"\n                    modal.style.visibility = \"visible\"\n                    modal.style.pointerEvents = \"auto\"\n                    modal.style.zIndex = \"2147483647\"\n                    const modalBody = modal.querySelector('.wechat-payment-modal__body')\n                    if (modalBody) modalBody.scrollTop = 0\n                }\n                document.documentElement.classList.add('wechat-modal-open')\n                document.body.classList.add('wechat-modal-open')\n                const appRoot = document.getElementById('app')\n                if (appRoot) appRoot.classList.add('wechat-modal-active')\n            }\n            const hiddenModel = () => {\n                flag.value = false\n                wechatModalError.value = ''\n                wechatStepallScreenshot.value = ''\n                stopWechatOrderStatusPolling()\n                const modal = document.getElementById(\"myModal\")\n                if (modal) {\n                    modal.classList.remove(\"modal-open\")\n                    modal.style.display = \"none\"\n                    modal.style.opacity = \"0\"\n                    modal.style.visibility = \"hidden\"\n                    modal.style.pointerEvents = \"none\"\n                }\n                document.documentElement.classList.remove('wechat-modal-open')\n                document.body.classList.remove('wechat-modal-open')\n                const appRoot = document.getElementById('app')\n                if (appRoot) appRoot.classList.remove('wechat-modal-active')\n            }\n            const isChineseCharactersOnly = (value) => \/^[\\u4e00-\\u9fa5\u00b7]{2,20}$\/.test(normalizeTextValue(value))\n            const validateChineseIdNumber = (value) => {\n                const id = normalizeTextValue(value).toUpperCase()\n                if (\/^\\d{15}$\/.test(id)) return true\n                if (!\/^\\d{17}[\\dX]$\/.test(id)) return false\n                const year = Number(id.slice(6, 10))\n                const month = Number(id.slice(10, 12))\n                const day = Number(id.slice(12, 14))\n                if (!year || month < 1 || month > 12 || day < 1 || day > 31) return false\n                const birthDate = new Date(`${year}-${String(month).padStart(2, '0')}-${String(day).padStart(2, '0')}T00:00:00`)\n                return birthDate.getFullYear() === year && birthDate.getMonth() + 1 === month && birthDate.getDate() === day\n            }\n            const isWechatIdentityValidationError = (message) => {\n                const normalized = normalizeTextValue(message).toLowerCase()\n                return normalized.includes('\u4e2d\u6587\u59d3\u540d')\n                    || normalized.includes('\u59d3\u540d')\n                    || normalized.includes('\u8eab\u4efd\u8bc1')\n                    || normalized.includes('student_id_number')\n                    || normalized.includes('name_ch')\n                    || normalized.includes('validation')\n                    || normalized.includes('\u683c\u5f0f\u4e0d\u6b63\u786e')\n            }\n            const formatWechatFileSize = (size) => {\n                const mb = size \/ (1024 * 1024)\n                return mb >= 1 ? `${mb.toFixed(2)} MB` : `${Math.max(1, Math.round(size \/ 1024))} KB`\n            }\n            const resetWechatAttachmentState = () => {\n                wechatAttachmentFiles.value = []\n                wechatAttachmentError.value = ''\n                wechatUploadMessage.value = ''\n                wechatUploadSuccess.value = false\n                wechatAttachmentDragOver.value = false\n                if (wechatAttachmentInput.value) {\n                    wechatAttachmentInput.value.value = ''\n                }\n            }\n            const addWechatAttachmentFiles = (selectedFiles) => {\n                const files = Array.from(selectedFiles || [])\n                if (!files.length) return\n                if (wechatAttachmentFiles.value.length + files.length > 4) {\n                    wechatAttachmentError.value = '\u6700\u591a\u53ea\u80fd\u4e0a\u4f20 4 \u4e2a\u6587\u4ef6'\n                    return\n                }\n                const nextFiles = [...wechatAttachmentFiles.value]\n                for (const file of files) {\n                    if (!file) continue\n                    if (file.size > 10 * 1024 * 1024) {\n                        wechatAttachmentError.value = `\u6587\u4ef6 ${file.name} \u8d85\u8fc7 10MB`\n                        return\n                    }\n                    nextFiles.push(file)\n                }\n                wechatAttachmentFiles.value = nextFiles\n                wechatAttachmentError.value = ''\n            }\n            const onWechatAttachmentChange = (event) => {\n                addWechatAttachmentFiles(event?.target?.files || [])\n                if (wechatAttachmentInput.value) {\n                    wechatAttachmentInput.value.value = ''\n                }\n            }\n            const onWechatAttachmentDragOver = (event) => {\n                event?.preventDefault?.()\n                event?.stopPropagation?.()\n                wechatAttachmentDragOver.value = true\n            }\n            const onWechatAttachmentDragLeave = (event) => {\n                event?.preventDefault?.()\n                event?.stopPropagation?.()\n                wechatAttachmentDragOver.value = false\n            }\n            const onWechatAttachmentDrop = (event) => {\n                event?.preventDefault?.()\n                event?.stopPropagation?.()\n                wechatAttachmentDragOver.value = false\n                addWechatAttachmentFiles(event?.dataTransfer?.files || [])\n            }\n            const onWechatAttachmentPickerKeydown = (event) => {\n                if (event?.key === 'Enter' || event?.key === ' ') {\n                    event.preventDefault()\n                    openWechatAttachmentPicker()\n                }\n            }\n            const removeWechatAttachment = (index) => {\n                wechatAttachmentFiles.value.splice(index, 1)\n            }\n            const openWechatAttachmentPicker = () => {\n                if (wechatAttachmentInput.value) {\n                    wechatAttachmentInput.value.click()\n                }\n            }\n            const uploadWechatAttachments = async () => {\n                if (wechatUploading.value) return\n                if (!wechatAttachmentFiles.value.length) {\n                    wechatAttachmentError.value = '\u8bf7\u5148\u9009\u62e9\u81f3\u5c11\u4e00\u4e2a\u6587\u4ef6'\n                    return\n                }\n                wechatUploading.value = true\n                wechatUploadMessage.value = ''\n                wechatUploadSuccess.value = false\n                try {\n                    const formData = new FormData()\n                    formData.append('request_id', wechatPaymentRequestId.value || `re-${requestId}`)\n                    const orderId = normalizeTextValue(formDataPay.value?.orderId || formDataPay.value?.order_id || paymentData.value?.orderId || paymentData.value?.order_id || '')\n                    if (orderId) {\n                        formData.append('order_id', orderId)\n                    }\n                    wechatAttachmentFiles.value.forEach((file) => {\n                        formData.append('attachments[]', file)\n                    })\n                    const response = await window.apiClient.post(\n                        'https:\/\/agent.goglobalsafe.com\/api\/v1\/insurance\/baoxian\/easytransfer\/attachments',\n                        formData,\n                        {\n                            headers: {\n                                'Accept': 'application\/json',\n                                'X-Authentication-Key': 'HSxZK8nHniLzZtv0Qtfk87wvNvXpJZ5K',\n                            }\n                        }\n                    )\n                    wechatUploadSuccess.value = true\n                    wechatUploadMessage.value = response?.data?.message || '\u6587\u4ef6\u4e0a\u4f20\u6210\u529f'\n                    await loadSuccessSummary({\n                        requestId: normalizeWechatOrderRequestId(wechatPaymentRequestId.value || requestId)\n                    })\n                    wechatAttachmentFiles.value = []\n                    wechatAttachmentError.value = ''\n                    if (wechatAttachmentInput.value) {\n                        wechatAttachmentInput.value.value = ''\n                    }\n                } catch (error) {\n                    wechatUploadSuccess.value = false\n                    wechatUploadMessage.value = error?.response?.data?.message || '\u6587\u4ef6\u4e0a\u4f20\u5931\u8d25\uff0c\u8bf7\u7a0d\u540e\u91cd\u8bd5'\n                } finally {\n                    wechatUploading.value = false\n                }\n            }\n\n            \/\/ \u8b66\u544a\u6846\u5185\u5bb9\n            const errMessage=ref()\n            \/\/ \u663e\u793a\u8b66\u544a\u6846\u7684\u51fd\u6570,\u9519\u8bef\u63d0\u793a\u4fe1\u606f\n            function showAlert() {\n                document.getElementById('customAlert').style.display = 'block';\n                document.getElementById('customAlert').classList.add('show')\n            }\n            \/\/ \u5173\u95ed\u8b66\u544a\u6846\u7684\u51fd\u6570\uff0c\u9519\u8bef\u63d0\u793a\u4fe1\u606f\n            function closeAlert() {\n                document.getElementById('customAlert').style.display = 'none';\n                document.getElementById('customAlert').classList.remove('show')\n            }\n            const getFirstValidationMessage = (errors) => {\n                if (!errors || typeof errors !== 'object') return ''\n                const firstKey = Object.keys(errors)[0]\n                if (!firstKey) return ''\n                const firstError = errors[firstKey]\n                if (Array.isArray(firstError)) return firstError[0] || ''\n                return typeof firstError === 'string' ? firstError : ''\n            }\n            const getApiErrorMessage = (source, fallbackMessage) => {\n                const data = source?.response?.data || source?.data || {}\n                const message = data.message\n                    || getFirstValidationMessage(data.errors)\n                    || data.error\n                    || fallbackMessage\n                const normalizedMessage = String(message || '')\n                if (\/SQLSTATE|stack trace|undefined (?:index|offset|variable)|base table|queryexception|syntax error|vendor\\\\|vendor\\\/\/i.test(normalizedMessage)) {\n                    return fallbackMessage\n                }\n                return normalizedMessage || fallbackMessage\n            }\n            const showErrorMessage = (message, timeout = 5000) => {\n                errMessage.value = message\n                showAlert()\n                if (timeout) {\n                    setTimeout(() => {\n                        closeAlert()\n                    }, timeout)\n                }\n            }\n            \/\/ \u652f\u4ed8\u94fe\u63a5\uff0c\u652f\u4ed8\u65b9\u5f0f\uff0c1\u4ee3\u8868\u6d77\u5916\uff0c\n            const pay_url=ref()\n            const pay_type=ref()\n            const quotePremiums = ref(null)\n            const isQuoteLoading = ref(false)\n            const resetFamilySelection = () => {\n                SpouseyesOrNo.value = 'No'\n                spouseMember.firstName = ''\n                spouseMember.middleName = ''\n                spouseMember.lastName = ''\n                spouseMember.dob = ''\n                SpouseData.value = []\n                numDependents.value = 0\n                dependentMembers.value = []\n                updateDependentsData(0)\n            }\n            const isUnsupportedFamilyError = (message) => {\n                const normalizedMessage = String(message || '').toLowerCase()\n                return normalizedMessage.includes('does not support spouse')\n                    || normalizedMessage.includes('does not support dependent')\n                    || normalizedMessage.includes('does not support family')\n            }\n            const isFamilyOptionAvailable = computed(() => {\n                const hasFamilyPrice = quotePremiums.value?.has_family_price\n                return Number(hasFamilyPrice) === 1\n            })\n            watch(isFamilyOptionAvailable, (available) => {\n                if (available) {\n                    nextTick(() => initFamilyDatePickers())\n                } else {\n                    resetFamilySelection()\n                }\n            })\n            let quoteRequestTimer = null\n            let quoteRequestSeq = 0\n            const formatRequestSeed = (date) => {\n                return date.getFullYear()\n                    + ('0' + (date.getMonth() + 1)).slice(-2)\n                    + ('0' + date.getDate()).slice(-2)\n                    + ('0' + date.getHours()).slice(-2)\n                    + ('0' + date.getMinutes()).slice(-2)\n                    + ('0' + date.getSeconds()).slice(-2)\n            }\n            let lastGeneratedRequestSeed = ''\n            const generateRequestRandomSuffix = () => {\n                if (window.crypto && typeof window.crypto.getRandomValues === 'function') {\n                    const values = new Uint32Array(2)\n                    window.crypto.getRandomValues(values)\n                    return Array.from(values)\n                        .map((value) => String(value % 1000000).padStart(6, '0'))\n                        .join('')\n                }\n                return Array.from({ length: 2 }, () => String(Math.floor(Math.random() * 1000000)).padStart(6, '0')).join('')\n            }\n            const generateRequestSeed = () => {\n                let seed = ''\n                do {\n                    seed = formatRequestSeed(new Date()) + generateRequestRandomSuffix()\n                } while (seed === lastGeneratedRequestSeed)\n                lastGeneratedRequestSeed = seed\n                return seed\n            }\n            const getIndividualSeedFromRequest = (seed) => String(seed || generateRequestSeed()).replace(\/\\D\/g, '').slice(-8)\n            \/\/ \u6613\u601d\u6c47\u63d0\u4f9b\u7684\u5fae\u4fe1\u652f\u4ed8\n            let requestId = generateRequestSeed();\n            const TRACKING_SESSION_STORAGE_KEY = 'ggs_us_enrollment_tracking_session_id'\n            const TRACKING_QUEUE_STORAGE_KEY = 'ggs_us_enrollment_tracking_queue'\n            const getOrCreateTrackingSessionId = () => {\n                try {\n                    const existing = sessionStorage.getItem(TRACKING_SESSION_STORAGE_KEY)\n                    if (existing) return existing\n                    const generated = (window.crypto && typeof window.crypto.randomUUID === 'function')\n                        ? window.crypto.randomUUID()\n                        : `us-${Date.now()}-${Math.random().toString(16).slice(2)}`\n                    sessionStorage.setItem(TRACKING_SESSION_STORAGE_KEY, generated)\n                    return generated\n                } catch (error) {\n                    return `us-${Date.now()}-${Math.random().toString(16).slice(2)}`\n                }\n            }\n            let trackingSessionId = getOrCreateTrackingSessionId()\n\n\n            const ROYAL_ALLOWED_MONTHS = new Set([5, 8, 12]);\n            const WORLD_ELITE_ALLOWED_MONTHS = new Set([6, 8, 12]);\n            const openWechatPaymentModal = async () => {\n                wechatModalError.value = ''\n                wechatModalStep.value = 1\n                wechatNameZh.value = ''\n                wechatIdNumber.value = ''\n                resetWechatAttachmentState()\n                pay_url.value = ''\n                pay_type.value = ''\n                wechatPaymentRequestId.value = ''\n                await showModel(1)\n            }\n            const prepareWechatPayment = async () => {\n                if (wechatPreparing.value || wechatSubmitting.value) {\n                    return false\n                }\n                if (!showWechatPaymentOption.value) {\n                    errMessage.value = '\u5fae\u4fe1\u652f\u4ed8\u4ec5\u5bf9\u4e2d\u56fd\u56fd\u7c4d\u5f00\u653e\uff0c\u8bf7\u6539\u7528 Card \u652f\u4ed8\u3002'\n                    showAlert()\n                    return false\n                }\n                wechatPreparing.value = true\n                loading.value = true\n                try {\n                    wechatStepallScreenshot.value = await captureStepallScreenshot()\n                    await openWechatPaymentModal()\n                    return true\n                } catch (error) {\n                    console.error('[GGS] prepareWechatPayment failed:', error)\n                    errMessage.value = '\u5fae\u4fe1\u652f\u4ed8\u5f39\u7a97\u6253\u5f00\u5931\u8d25\uff0c\u8bf7\u7a0d\u540e\u91cd\u8bd5\u3002'\n                    showAlert()\n                    return false\n                } finally {\n                    loading.value = false\n                    wechatPreparing.value = false\n                }\n            }\n            const Yisihuipayment = async () => {\n                await prepareWechatPayment()\n            }\n            const submitWechatPayment = async () => {\n                if (wechatSubmitting.value) return\n                wechatSubmitting.value = true\n                const nameZh = normalizeTextValue(wechatNameZh.value)\n                const idNumber = normalizeTextValue(wechatIdNumber.value).toUpperCase()\n                if (!isChineseCharactersOnly(nameZh)) {\n                    wechatModalError.value = '\u8bf7\u8f93\u5165\u4e2d\u6587\u59d3\u540d'\n                    wechatSubmitting.value = false\n                    return\n                }\n                if (!validateChineseIdNumber(idNumber)) {\n                    wechatModalError.value = '\u8eab\u4efd\u8bc1\u53f7\u7801\u683c\u5f0f\u4e0d\u6b63\u786e'\n                    wechatSubmitting.value = false\n                    return\n                }\n                wechatModalError.value = ''\n                ensureCoverageDatesWithinCurrentRules()\n                sanitizeAddressCollection()\n                pay_url.value = ''\n                pay_type.value = ''\n                flag.value = true\n                wechatPaymentRequestId.value = \"re-\" + requestId\n                homeData.forEach(item => {\n                    collectedValues.homeAddress[item.id] = getAddressSubmitValue(item);\n                });\n                collectedValues.homeAddress[\"StateCode\"] = HomeState.value;\n                collectedValues.homeAddress[\"CountryCode\"] = inputDataTwo[5]['value'];\n                destinationData.forEach(item => {\n                    collectedValues.destinationAddress[item.id] = getAddressSubmitValue(item);\n                });\n                collectedValues.destinationAddress[\"StateCode\"] = dsState.value;\n                collectedValues.destinationAddress[\"CountryCode\"] = \"US\";\n                const selectedInsurancePlan = getSelectedInsurancePlan()\n                if (!selectedInsurancePlan?.code) {\n                    wechatModalError.value = 'The selected insurance plan is missing its policy code. Please refresh and select the plan again.'\n                    wechatSubmitting.value = false\n                    return\n                }\n                const wellawayRouting = applyWellAwayEnrollmentRouting({\n                    planName: selectedInsurancePlan.name1\n                })\n                const insuranceTransaction = computed(() => {\n                    return {\n                        referral_code: referralCode.value ?? null,\n                        requestId: \"re-\" + requestId,\n                        i20_upload_token: i20UploadToken.value || null,\n                        tracking_session_id: trackingSessionId,\n                        is_easytransfer: isEasyTransferPayment(),\n                        graduateDate: graduateDate.value,\n                        source_institution: getSource(),\n                        blog_id: getBlogTrackingId(),\n                        transactionType: \"ADD\",\n                        transactionDate: new Date().toISOString(),\n                        student_id: studentID.value,\n                        name_ch: nameZh,\n                        student_id_number: idNumber,\n                        groupId: wellawayRouting.groupId,\n                        groupNumber: null,\n                        enrollmentIdentifier: \"ENU\" + requestId,\n                        policyNumber: selectedInsurancePlan.code,\n                        policyId: \"\",\n                        agentNumber: wellawayRouting.agentNumber,\n                        planName: selectedInsurancePlan.name1,\n                        homeCountryCode: inputDataTwo[5].value,\n                        currencyCode: \"USD\",\n                        email: inputDataTwo[6].value,\n                        password: password.value,\n                        yisihui: true,\n                        phoneOrigin: inputDataThree[0].value,\n                        members: [\n                            {\n                                enrollmentType: \"ADD\",\n                                individualId: \"I\" + IndividualId,\n                                primaryMemberId: \"PM\" + IndividualId,\n                                firstName: inputDataTwo[0].value,\n                                middleName: inputDataTwo[1].value,\n                                lastName: inputDataTwo[2].value,\n                                dob: normalizeDobForEnrollment(inputDataTwo[4][\"value\"]),\n                                gender: inputDataTwo[3].value,\n                                memberRelationship: \"Policyholder\",\n                                maritalStatus: SpouseyesOrNo.value == \"Yes\" ? \"M\" : 'S',\n                                coverage: {\n                                    purchaseDate: new Date().toISOString(),\n                                    coverageStartDate: inputDataOne[0].value,\n                                    coverageEndDate: inputDataOne[1].value,\n                                    premium: allPrice(),\n                                    dental: false,\n                                    vision: false\n                                },\n                                contacts: [\n                                    { name: \"Email\", value: inputDataTwo[6].value },\n                                    { name: \"Phone\", value: inputDataThree[1].value || inputDataThree[0].value },\n                                    { name: \"School\", value: normalizeSchoolNameForSubmission(schoolNew.value || school.value) },\n                                    { name: \"Passport\", value: inputDataTwo[7].value },\n                                    { name: \"GraduateDate\", value: graduateDate.value },\n                                    { name: \"PhoneOrigin\", value: inputDataThree[0].value }\n                                ],\n                                options: [\n                                    { name: \"Visa\", value: visaType.value },\n                                    { name: \"VisaStartDate\", value: inputDataSix[0].value },\n                                    { name: \"VisaEndDate\", value: inputDataSix[1].value }\n                                ],\n                                discounts: []\n                            }\n                        ],\n                        destinations: [\n                            collectedValues.destinationAddress.CountryCode,\n                            collectedValues.destinationAddress.StateCode\n                        ],\n                        homeAddress: {\n                            address1: collectedValues.homeAddress.Address1,\n                            address2: collectedValues.homeAddress.Address2,\n                            city: collectedValues.homeAddress.City,\n                            stateCode: HomeState.value,\n                            countryCode: collectedValues.homeAddress.CountryCode,\n                            postalCode: collectedValues.homeAddress.PostalCode\n                        },\n                        billingAddress: {\n                            address1: collectedValues.destinationAddress.dAddress1,\n                            address2: collectedValues.destinationAddress.dAddress2,\n                            city: collectedValues.destinationAddress.dCity,\n                            stateCode: collectedValues.destinationAddress.StateCode,\n                            countryCode: collectedValues.destinationAddress.CountryCode,\n                            postalCode: collectedValues.destinationAddress.dPostalCode\n                        }\n                    }\n                })\n                const allData = ref()\n                allData.value = insuranceTransaction.value\n                appendFamilyMembers(allData.value)\n                persistCurrentStudentDob()\n                saveEnrollmentDraft(allData.value)\n                localStorage.setItem(\"user_form_history\", JSON.stringify(allData.value))\n                isPaymentProcessing.value = true\n                isBuying.value = 1\n                loading.value = true\n                try {\n                    allData.value.screenshot = wechatStepallScreenshot.value || await captureStepallScreenshot()\n                    const stepAllPayload = { ...allData.value, openai_ads: getOpenAiAdsContext() }\n                    const response = await window.apiClient.post(\"https:\/\/agent.goglobalsafe.com\/api\/v1\/Enrollment\/StepAllController\", stepAllPayload, {\n                        timeout: 70000,\n                        headers: {\n                            \"Accept\": \"application\/json\",\n                            \"X-Authentication-Key\": \"HSxZK8nHniLzZtv0Qtfk87wvNvXpJZ5K\",\n                        }\n                    })\n                    if (response.data?.success) {\n                        measureOpenAiAdsResponse(response)\n                        const canonicalRequestId = syncCanonicalEnrollmentIdentifiers(response, allData.value)\n                        trackStep(progress[5], 'order_created', {\n                            enrollment_id: response.data?.id || response.data?.data?.enrollment_id || null,\n                            payment_method: 'wechat',\n                            request_id: canonicalRequestId,\n                            stepall_success: true\n                        })\n                    }\n                    pay_url.value = response.data?.data?.pay_url || ''\n                    pay_type.value = response.data?.data?.pay_type || ''\n                    if (pay_url.value) {\n                        wechatModalStep.value = 2\n                        await nextTick()\n                        wechatStepallScreenshot.value = ''\n                        loading.value = false\n                        isPaymentProcessing.value = false\n                        isBuying.value = false\n                        showModel(2)\n                    } else {\n                        loading.value = false\n                        isPaymentProcessing.value = false\n                        isBuying.value = false\n                        wechatSubmitting.value = false\n                        hiddenModel()\n                        showErrorMessage(\"\u8be5\u652f\u4ed8\u65b9\u5f0f\u51fa\u73b0\u95ee\u9898\uff0c\u8bf7\u4f7f\u7528 Card\u652f\u4ed8\uff01\")\n                        return\n                    }\n                } catch (error) {\n                    loading.value = false\n                    isPaymentProcessing.value = false\n                    isBuying.value = false\n                    const message = getApiErrorMessage(error, '\u5fae\u4fe1\u652f\u4ed8\u521b\u5efa\u5931\u8d25\uff0c\u8bf7\u7a0d\u540e\u91cd\u8bd5\u3002')\n                    if (message === \"Request id \u5df2\u7ecf\u5b58\u5728\u3002\") {\n                        wechatModalStep.value = 2\n                        wechatStepallScreenshot.value = ''\n                        await showModel(2)\n                        getStatus()\n                        return\n                    }\n                    wechatStepallScreenshot.value = ''\n                    if (!isWechatIdentityValidationError(message)) {\n                        hiddenModel()\n                    } else {\n                        wechatModalStep.value = 1\n                        await showModel(1)\n                    }\n                    showErrorMessage(message)\n                    return\n                } finally {\n                    wechatSubmitting.value = false\n                }\n            }\n            \/\/ \u76f4\u63a5\u8d2d\u4e70\uff0cwellway,\u4fe1\u7528\u5361\u8d2d\u4e70\n            let IndividualId = getIndividualSeedFromRequest(requestId)\n            let primaryMemberId = \"PM\" + IndividualId\n            const setActiveEnrollmentRequestId = (value) => {\n                const normalizedRequestId = normalizeTextValue(value).replace(\/^re-\/, '')\n                if (!normalizedRequestId) return ''\n\n                requestId = normalizedRequestId\n                IndividualId = getIndividualSeedFromRequest(requestId)\n                primaryMemberId = \"PM\" + IndividualId\n                return `re-${requestId}`\n            }\n            const syncCanonicalEnrollmentIdentifiers = (response, payload) => {\n                const responseBody = response?.data || {}\n                const responseData = responseBody?.data || {}\n                const canonicalRequestId = normalizeTextValue(\n                    responseBody.requestId\n                    || responseBody.request_id\n                    || responseData.requestId\n                    || responseData.request_id\n                )\n                if (!canonicalRequestId || !payload) return normalizeWechatOrderRequestId(payload?.requestId)\n\n                payload.requestId = setActiveEnrollmentRequestId(canonicalRequestId)\n                payload.enrollmentIdentifier = normalizeTextValue(\n                    responseBody.enrollmentIdentifier || responseData.enrollmentIdentifier\n                ) || `ENU${requestId}`\n\n                const canonicalMembers = Array.isArray(responseBody.members)\n                    ? responseBody.members\n                    : (Array.isArray(responseData.members) ? responseData.members : [])\n                if (Array.isArray(payload.members)) {\n                    payload.members.forEach((member, index) => {\n                        const canonicalMember = canonicalMembers[index] || {}\n                        member.individualId = normalizeTextValue(\n                            canonicalMember.requestedIndividualId || canonicalMember.enrolledIndividualId\n                        ) || member.individualId\n                        member.primaryMemberId = normalizeTextValue(canonicalMember.primaryMemberId)\n                            || member.primaryMemberId\n                    })\n                }\n\n                wechatPaymentRequestId.value = canonicalRequestId\n                saveEnrollmentDraft(payload)\n                localStorage.setItem(\"user_form_history\", JSON.stringify(payload))\n                return canonicalRequestId\n            }\n            const getMainPhoneForFamily = () => inputDataThree[1].value || inputDataThree[0].value\n            const createFamilyContactList = () => [\n                { name: \"Email\", value: inputDataTwo[6].value },\n                { name: \"Phone\", value: getMainPhoneForFamily() }\n            ]\n            const validateFamilyMembers = () => {\n                if (!isFamilyOptionAvailable.value) {\n                    resetFamilySelection()\n                    return true\n                }\n                if (SpouseyesOrNo.value === 'Yes') {\n                    if (isEmpty(spouseMember.firstName, 'Spouse first name')) {\n                        scrollToFamilyElement(\"SpouseFirstName\",'Spouse first name is required !');\n                        return false\n                    }\n                    if (isEmpty(spouseMember.lastName, 'Spouse last name')) {\n                        scrollToFamilyElement(\"SpouseLastName\",'Spouse last name is required !');\n                        return false\n                    }\n                    if (isEmpty(spouseMember.dob, 'Spouse DOB')) {\n                        scrollToFamilyElement(\"SpouseDateofBirth\",'Spouse date of birth is required !');\n                        return false\n                    }\n                    if (!validateFamilyAge(spouseMember.dob, 19, 45, \"SpouseDateofBirth\", \"Spouse\")) {\n                        return false\n                    }\n                }\n                for (let i = 0; i < dependentMembers.value.length; i++) {\n                    const dependent = dependentMembers.value[i]\n                    if (isEmpty(dependent.firstName, `Dependent ${i + 1} first name`)) {\n                        scrollToFamilyElement(`DependentFirstName${i + 1}`, `Dependent ${i + 1} first name is required !`);\n                        return false\n                    }\n                    if (isEmpty(dependent.lastName, `Dependent ${i + 1} last name`)) {\n                        scrollToFamilyElement(`DependentLastName${i + 1}`, `Dependent ${i + 1} last name is required !`);\n                        return false\n                    }\n                    if (isEmpty(dependent.dob, `Dependent ${i + 1} DOB`)) {\n                        scrollToFamilyElement(`DependentDob${i + 1}`, `Dependent ${i + 1} DOB is required !`);\n                        return false\n                    }\n                    if (!validateFamilyAge(dependent.dob, 0, 19, `DependentDob${i + 1}`, `Dependent ${i + 1}`)) {\n                        return false\n                    }\n                }\n                return true\n            }\n            const buildFamilyMembers = () => {\n                const members = []\n                if (!isFamilyOptionAvailable.value) return members\n                if (SpouseyesOrNo.value === \"Yes\") {\n                    const spouseIdSeed = spouseMember.dob ? spouseMember.dob.replace(\/-\/g, '') : IndividualId\n                    members.push({\n                        enrollmentType: \"ADD\",\n                        individualId: `SP${spouseIdSeed}${IndividualId}`,\n                        primaryMemberId,\n                        firstName: spouseMember.firstName,\n                        middleName: spouseMember.middleName,\n                        lastName: spouseMember.lastName,\n                        dob: normalizeDobForEnrollment(spouseMember.dob),\n                        gender: \"U\",\n                        memberRelationship: \"Spouse\",\n                        maritalStatus: \"M\",\n                        coverage: {\n                            purchaseDate: new Date().toISOString(),\n                            coverageStartDate: inputDataOne[0].value,\n                            coverageEndDate: inputDataOne[1].value,\n                            premium: getSpousePremium(),\n                            dental: false,\n                            vision: false\n                        },\n                        contacts: createFamilyContactList(),\n                        options: [],\n                        discounts: []\n                    })\n                }\n                dependentMembers.value.forEach((dependent, index) => {\n                    const dependentIdSeed = dependent.dob ? dependent.dob.replace(\/-\/g, '') : IndividualId\n                    members.push({\n                        enrollmentType: \"ADD\",\n                        individualId: `DP${index + 1}${dependentIdSeed}${IndividualId}`,\n                        primaryMemberId,\n                        firstName: dependent.firstName,\n                        middleName: dependent.middleName,\n                        lastName: dependent.lastName,\n                        dob: normalizeDobForEnrollment(dependent.dob),\n                        gender: \"U\",\n                        memberRelationship: \"Dependent\",\n                        maritalStatus: \"S\",\n                        coverage: {\n                            purchaseDate: new Date().toISOString(),\n                            coverageStartDate: inputDataOne[0].value,\n                            coverageEndDate: inputDataOne[1].value,\n                            premium: getDependentPremium(),\n                            dental: true,\n                            vision: true\n                        },\n                        contacts: createFamilyContactList(),\n                        options: [],\n                        discounts: []\n                    })\n                })\n                return members\n            }\n            const keepOnlyPolicyholderMember = (transaction) => {\n                if (!Array.isArray(transaction?.members) || !transaction.members.length) return transaction\n                const policyholder = transaction.members.find((member) => {\n                    return normalizeTextValue(member?.memberRelationship).toLowerCase() === 'policyholder'\n                }) || transaction.members[0]\n                transaction.members = [policyholder]\n                return transaction\n            }\n            const appendFamilyMembers = (transaction) => {\n                if (!transaction?.members?.length) return transaction\n                keepOnlyPolicyholderMember(transaction)\n                const primaryMember = transaction.members[0]\n                const canSubmitFamily = isFamilyOptionAvailable.value\n                primaryMember.primaryMemberId = primaryMemberId\n                primaryMember.maritalStatus = canSubmitFamily && SpouseyesOrNo.value === \"Yes\" ? \"M\" : \"S\"\n                primaryMember.coverage = primaryMember.coverage || {}\n                primaryMember.coverage.premium = getPrimaryPremium()\n                if (!canSubmitFamily) {\n                    resetFamilySelection()\n                    transaction.members = [primaryMember]\n                    return transaction\n                }\n                transaction.members = [\n                    primaryMember,\n                    ...buildFamilyMembers()\n                ]\n                return transaction\n            }\n            const BuyPlan = async () => {\n                \/\/ \u5982\u679c\u586b\u5199\u4e86\u56fd\u7c4d\uff0c\u5219\u5339\u914d\u5bf9\u5e94\u7684\u5730\u533a\n                if (inputDataTwo[5].value) {\n                    code_verify(inputDataTwo[5].value)\n                }\n                \/\/ checkForms already validates the checkout fields before BuyPlan runs.\n                \/\/ Re-running the legacy validator here can reject prefilled applications\n                \/\/ after the UI has already marked every section as complete.\n                \/\/ Lock before remote prechecks so repeated clicks cannot create parallel orders.\n                setCardCheckoutProcessing(true)\n                \/\/ \u7b49\u5f85\u5730\u5740\u548c\u5b66\u6821\u9884\u68c0\u67e5\uff0c\u5931\u8d25\u65f6\u5fc5\u987b\u7ed9\u7528\u6237\u53ef\u89c1\u53cd\u9988\u3002\n                try {\n                    await thirdNext();\n                    await schoolExist();\n                } catch (error) {\n                    setCardCheckoutProcessing(false)\n                    showErrorMessage(typeof error === 'string'\n                        ? error\n                        : 'Please check the highlighted information and try again.')\n                    return false\n                }\n                \/\/ Freeze the provider for this checkout. Reactive school state must not\n                \/\/ switch a Stripe order to the legacy WellAway form after StepAll returns.\n                const cardPaymentProvider = CARD_PAYMENT_PROVIDER()\n                const useStripeCheckout = cardPaymentProvider === 'stripe'\n                const useDirectWellAwayCheckout = cardPaymentProvider === 'wellaway'\n                const selectedInsurancePlan = getSelectedInsurancePlan()\n                if (!selectedInsurancePlan?.code) {\n                    setCardCheckoutProcessing(false)\n                    showErrorMessage('The selected insurance plan is missing its policy code. Please refresh and select the plan again.')\n                    return false\n                }\n                const wellawayRouting = applyWellAwayEnrollmentRouting({\n                    planName: selectedInsurancePlan.name1\n                })\n                \/\/ \u5982\u679c\u9a8c\u8bc1\u901a\u8fc7\uff0c\u7ee7\u7eed\u6267\u884c\u4ee5\u4e0b\u903b\u8f91\n                flag.value=false\n                pay_url.value = ''\n                pay_type.value = ''\n\n                const insuranceTransaction = computed(()=>{\n                    return{\n                        \/\/ \u8bf7\u6c42id,\u65f6\u95f4\u62fc\u63a5\u5b57\u7b26\u4e32\n                        referral_code: referralCode.value ?? null,\n                        requestId: \"re-\"+requestId,\n                        i20_upload_token: i20UploadToken.value || null,\n                        tracking_session_id: trackingSessionId,\n                        is_easytransfer: isEasyTransferPayment(),\n                        source_institution: getSource(),\n                        blog_id: getBlogTrackingId(),\n                        student_id:studentID.value,\n                        graduateDate:graduateDate.value,\n                        transactionType: \"ADD\",\n                        transactionDate: useDirectWellAwayCheckout ? dayjs().format('YYYY-MM-DD') : new Date().toISOString(),\n                        groupId: wellawayRouting.groupId,\n                        groupNumber: null,\/\/\u975e\u5fc5\u987b\n                        enrollmentIdentifier: \"ENU\"+requestId,\/\/\u53d6\u8ddfruqustId\u4e00\u6837\u7684\u503c\n                        policyNumber: selectedInsurancePlan.code,\n                        policyId: \"\",\/\/\u975e\u5fc5\u9700\n                        agentNumber: wellawayRouting.agentNumber,\n                        planName: selectedInsurancePlan.name1,\n                        homeCountryCode: inputDataTwo[5].value,\n                        currencyCode:\"USD\",\n                        email: inputDataTwo[6].value,\n                        password: isYisihuiReviewMode.value ? '' : password.value,\n                        yisihui:isYisihuiReviewMode.value,\n                        submission_type: isYisihuiReviewMode.value ? 'yisihui_review' : undefined,\n                        yisihui_code: isYisihuiReviewMode.value ? yisihuiReviewCode : undefined,\n                        payment_method: isYisihuiReviewMode.value\n                            ? '\u6613\u601d\u6c47'\n                            : (useStripeCheckout ? 'stripe' : undefined),\n                        phoneOrigin: inputDataThree[0].value,\n                        members: [\n                            {\n                                enrollmentType: \"ADD\",\/\/\u6ce8\u518c\u7c7b\u578b\n                                individualId: \"I\"+IndividualId,\n                                primaryMemberId: \"PM\"+IndividualId,\n                                firstName: inputDataTwo[0].value,\n                                middleName: inputDataTwo[1].value,\n                                lastName: inputDataTwo[2].value,\n                                dob: normalizeDobForEnrollment(inputDataTwo[4][\"value\"]),\n                                gender: inputDataTwo[3].value,\n                                memberRelationship: \"Policyholder\",\n                                maritalStatus: SpouseyesOrNo.value==\"Yes\"?\"M\":'S',\n                                \/\/ network: \"Default Network\",\n                                coverage: {\n                                    purchaseDate: new Date().toISOString(),\n                                    coverageStartDate: inputDataOne[0].value,\n                                    coverageEndDate: inputDataOne[1].value,\n                                    premium: allPrice(),\n                                    dental: false,\n                                    vision: false\n                                },\n                                contacts: [\n                                    {\n                                        name: \"Email\",\n                                        value: inputDataTwo[6].value\n                                    },\n                                    {\n                                        name: \"Phone\",\n                                        value: inputDataThree[1].value || inputDataThree[0].value\n                                    },\n                                    {\n                                        name: \"School\",\n                                        value: normalizeSchoolNameForSubmission(schoolNew.value || school.value)\n                                    },\n                                    {\n                                        name: \"Passport\",\n                                        value: inputDataTwo[7].value\n                                    },\n                                    {\n                                        name: \"GraduateDate\",\n                                        value: graduateDate.value\n                                    },\n                                    {\n                                        name: \"PhoneOrigin\",\n                                        value: inputDataThree[0].value\n                                    }\n\n                                ],\n                                options:  [\n                                    {name: \"Visa\", value: visaType.value},\n                                    {name: \"VisaStartDate\", value: inputDataSix[0].value},\n                                    {name: \"VisaEndDate\", value: inputDataSix[1].value}\n                                ],\n                                discounts: []\n                            }\n                        ],\n                        destinations: [\n                            collectedValues.destinationAddress.CountryCode,\n                            collectedValues.destinationAddress.StateCode\n                        ],\n                        homeAddress: {\n                            address1: collectedValues.homeAddress.Address1,\n                            address2: collectedValues.homeAddress.Address2,\n                            city: collectedValues.homeAddress.City,\n                            stateCode: HomeState.value,\n                            countryCode: collectedValues.homeAddress.CountryCode,\n                            postalCode: collectedValues.homeAddress.PostalCode\n                        },\n                        billingAddress: {\n                            address1: collectedValues.destinationAddress.dAddress1,\n                            address2: collectedValues.destinationAddress.dAddress2,\n                            city: collectedValues.destinationAddress.dCity,\n                            stateCode: collectedValues.destinationAddress.StateCode,\n                            countryCode: collectedValues.destinationAddress.CountryCode,\n                            postalCode: collectedValues.destinationAddress.dPostalCode\n                        },\n                        options: useDirectWellAwayCheckout ? [] : null\n                    }\n                })\n\/\/                     console.log('\u6d4b\u8bd5\u6570\u7ec4', insuranceTransaction.value)\n\/\/ return;\n                const allData=ref()\n                allData.value=insuranceTransaction.value\n                appendFamilyMembers(allData.value)\n                persistCurrentStudentDob()\n                saveEnrollmentDraft(allData.value)\n                localStorage.setItem(\"user_form_history\",JSON.stringify(allData.value))\n\n                const getStripeCheckoutUrl = (response) => {\n                    const responseData = response?.data?.data || {}\n                    if (responseData.payment_id) {\n                        localStorage.setItem('stripe_payment_id', responseData.payment_id)\n                    }\n                    return responseData?.stripe_checkout?.url\n                        || responseData?.stripe_checkout?.checkout_url\n                        || responseData?.pay_url\n                        || response?.data?.pay_url\n                        || ''\n                }\n                const redirectToStripeCheckout = (response) => {\n                    const checkoutUrl = getStripeCheckoutUrl(response)\n                    if (!checkoutUrl) {\n                        setCardCheckoutProcessing(false)\n                        showErrorMessage('Stripe checkout url is missing. Please try again or contact support.')\n                        return false\n                    }\n                    window.location.href = checkoutUrl\n                    return true\n                }\n                const prepareLegacyWellAwayPayload = (payload) => {\n                    applyWellAwayEnrollmentRouting(payload)\n                    const network = resolveWellAwayNetwork(payload)\n                    if (Array.isArray(payload.members)) {\n                        payload.members.forEach((member) => {\n                            member.network = network\n                        })\n                    }\n                    delete payload.payment_method\n                    delete payload.is_easytransfer;\n                    delete payload.referral_code;\n                    delete payload.student_id;\n                    delete payload.blog_id;\n                    delete payload.source_institution;\n                    delete payload.graduateDate;\n                    delete payload.tracking_session_id;\n                    delete payload.email;\n                    delete payload.password;\n                    delete payload.phoneOrigin;\n                    delete payload.submission_type;\n                    delete payload.yisihui;\n                    delete payload.yisihui_code;\n                    delete payload.openai_ads;\n                    return payload\n                }\n\n                \/\/ \u51c6\u5907 API \u8bf7\u6c42\n                const apiRequest = () => {\n                    const modifiedData = { ...allData.value };\n                    modifiedData.openai_ads = getOpenAiAdsContext()\n                    return window.apiClient.post(\"https:\/\/agent.goglobalsafe.com\/api\/v1\/Enrollment\/StepAllController\", modifiedData, {\n                        timeout: 70000,\n                        headers: {\n                            \"Accept\": \"application\/json\",\n                            \"X-Authentication-Key\": \"HSxZK8nHniLzZtv0Qtfk87wvNvXpJZ5K\",\n                        }\n                    })\n                        .then(response => {\n\/\/ debugger;return\n\/\/                                 return\n                            if(response.data.success){\n                                measureOpenAiAdsResponse(response)\n                                const canonicalRequestId = syncCanonicalEnrollmentIdentifiers(response, modifiedData)\n                                trackStep(progress[5], 'order_created', {\n                                    enrollment_id: response.data?.id || response.data?.data?.enrollment_id || null,\n                                    payment_method: isYisihuiReviewMode.value ? 'yisihui_review' : cardPaymentProvider,\n                                    request_id: canonicalRequestId,\n                                    stepall_success: true\n                                })\n                                if (isYisihuiReviewMode.value) {\n                                    setCardCheckoutProcessing(false)\n                                    pageMode.value = 'card-success'\n                                    window.scrollTo({ top: 0, behavior: 'smooth' })\n                                    return true\n                                }\n                                if (useStripeCheckout) {\n                                    return redirectToStripeCheckout(response)\n                                }\n\n                                prepareLegacyWellAwayPayload(modifiedData)\n                                return formSubmit(modifiedData)\n                            }else{\n                                setCardCheckoutProcessing(false)\n                                if (isRejectedReferralCodeError(response)) clearRejectedReferralCode()\n                                if (useStripeCheckout) {\n                                    console.error('Stripe enrollment submission failed:', response?.data);\n                                    showErrorMessage(getApiErrorMessage(response, 'Stripe checkout failed. Please check your information and try again.'))\n                                    return false\n                                }\n                                console.error('Enrollment submission failed:', response?.data);\n                                showErrorMessage(getApiErrorMessage(response, 'Enrollment submission failed. Please check your information and try again.'))\n                                return false\n                            }\n                        })\n                        .catch(error => {\n                            setCardCheckoutProcessing(false)\n                            if (isRejectedReferralCodeError(error)) clearRejectedReferralCode()\n                            if (useStripeCheckout) {\n                                console.error('Stripe enrollment request failed:', error);\n                                showErrorMessage(getApiErrorMessage(error, 'Network or Stripe checkout failed. Please try again.'))\n                                return false\n                            }\n                            console.error('Enrollment request failed:', error);\n                            showErrorMessage(getApiErrorMessage(error, 'Network or enrollment submission failed. Please try again.'))\n                            return false\n                        });\n                }\n                \/\/ \u63d0\u4ea4\u8868\u5355\u5e76\u786e\u4fdd\u8bf7\u6c42\u4e0d\u88ab\u963b\u585e\n                const formSubmit = (payload = allData.value) => {\n                    try {\n                        if (!useDirectWellAwayCheckout) {\n                            console.error('Blocked unexpected WellAway submission for provider:', cardPaymentProvider)\n                            setCardCheckoutProcessing(false)\n                            showErrorMessage('The payment method changed unexpectedly. Please try again.')\n                            return false\n                        }\n                        const modifiedFormData = { ...payload };\n                        applyWellAwayEnrollmentRouting(modifiedFormData)\n                        \/\/ \u5220\u9664\u4e0d\u9700\u8981\u7684\u5b57\u6bb5\n                        delete modifiedFormData.yisihui;\n                        delete modifiedFormData.email;\n                        delete modifiedFormData.password;\n                        delete modifiedFormData.is_easytransfer;\n                        delete modifiedFormData.referral_code;\n                        delete modifiedFormData.student_id;\n                        delete modifiedFormData.payment_method;\n                        delete modifiedFormData.blog_id;\n                        delete modifiedFormData.source_institution;\n                        delete modifiedFormData.graduateDate;\n                        delete modifiedFormData.tracking_session_id;\n                        delete modifiedFormData.phoneOrigin;\n                        delete modifiedFormData.submission_type;\n                        delete modifiedFormData.yisihui_code;\n                        if (modifiedFormData.members[0].contacts[2].value == 'UCBerkeley Extention (UCB Extention)') {\n                            modifiedFormData.members[0].contacts[2].value = 'University Of California Berkeley'\n                        }\n                        \/\/ \/\/ \u521b\u5efa\u8868\u5355\n                        const form = document.createElement('form');\n                        form.id = 'jsonForm';\n                        form.style.display = 'none';\n                        form.method = 'post';\n                        form.action = 'https:\/\/portal.wellaway.com\/Students\/PostEnrollJson';\n                        form.classList.add('ng-pristine', 'ng-valid');\n\n                        \/\/ \u521b\u5efa\u5e76\u586b\u5145 textarea\n                        const textarea = document.createElement('textarea');\n                        textarea.id = 'jsonString';\n                        textarea.name = 'jsonString';\n                        textarea.rows = 50;\n                        textarea.cols = 80;\n                        textarea.value = JSON.stringify(modifiedFormData);\n\n                        \/\/ \u5c06 textarea \u6dfb\u52a0\u5230\u8868\u5355\u4e2d\n                        form.appendChild(textarea);\n                        document.body.appendChild(form);\n\n                        form.submit();\n                        window.setTimeout(() => {\n                            if (document.visibilityState === 'visible') {\n                                setCardCheckoutProcessing(false)\n                                showErrorMessage('The payment page did not open. Please try again or contact support.')\n                            }\n                        }, 15000)\n                        return true\n                    } catch (err) {\n                        console.error('Form submission failed:', err);\n                        setCardCheckoutProcessing(false)\n                        showErrorMessage('The payment page could not be opened. Please try again or contact support.')\n                        return false\n                    }\n                }\n\n                return await apiRequest()\n\n                \/\/ }\n                \/\/\n                \/\/ catch (error) {\n                \/\/     \/\/ \u5904\u7406\u9a8c\u8bc1\u5931\u8d25\u65f6\u7684\u9519\u8bef\n                \/\/     console.log(error);\n                \/\/ }\n            };\n            \/\/ const BuyPlan = () => {\n            \/\/     \/\/ showModel()\n            \/\/     thirdNext()\n\n            \/\/ }\n            const visaOptionFlags = computed(() => {\n                const productName = String(product.value || localStorage.getItem(\"InsuranceName\") || '').toLowerCase()\n                const planCode = String(selectedPlanCode.value || localStorage.getItem('selected_plan_code') || '').trim().toUpperCase()\n                const isOptPlan = productName.includes('opt') || ['WAOPT', 'WAOPTPREMIER'].includes(planCode)\n                const isScholarPlan = productName.includes('scholar')\n                const isRoyalPlan = productName.includes('royal')\n                const isUscPlan = productName.includes('usc')\n                const isElitePlan = productName.includes('elite')\n                const isCromoPlan = productName.includes('cromo')\n                const isCalSelectPlan = productName.includes('cal select')\n                    || productName.includes('calselect')\n                    || planCode === 'GGSCS450'\n                const f1 = !isOptPlan && (isRoyalPlan || isUscPlan || isElitePlan || isCromoPlan || isScholarPlan || isCalSelectPlan)\n                    && product.value !== 'USC Scholar 500'\n                    && product.value !== 'USC Scholar 100'\n                const m1 = !isOptPlan && (isRoyalPlan || isCromoPlan || isScholarPlan || isCalSelectPlan)\n                const j1 = !isOptPlan && (isRoyalPlan || isCromoPlan || isUscPlan || isScholarPlan || isCalSelectPlan)\n                const showAllVisaOptions = !isOptPlan && !f1 && !m1 && !j1\n                return {\n                    opt: isOptPlan,\n                    \/\/ Never leave an unknown plan with an empty Visa selector.\n                    f1: f1 || showAllVisaOptions,\n                    m1: m1 || showAllVisaOptions,\n                    j1: j1 || showAllVisaOptions\n                }\n            })\n            watch(\n                () => visaOptionFlags.value.opt,\n                (isOptPlan) => {\n                    if (isOptPlan && visaType.value !== 'F1') visaType.value = 'F1'\n                },\n                { immediate: true }\n            )\n            let wechatOrderStatusTimer = null\n            let wechatOrderStatusChecking = false\n            const stopWechatOrderStatusPolling = () => {\n                if (wechatOrderStatusTimer) {\n                    clearInterval(wechatOrderStatusTimer)\n                    wechatOrderStatusTimer = null\n                }\n            }\n            const normalizeWechatOrderRequestId = (statusRequestId = requestId) => {\n                const raw = normalizeTextValue(statusRequestId)\n                if (!raw) return `re-${requestId}`\n                return raw.startsWith('re-') ? raw : `re-${raw}`\n            }\n            const normalizeEasyTransferReturnRequestId = (value) => {\n                const raw = normalizeTextValue(value)\n                if (!raw) return ''\n                return raw.startsWith('re-') ? raw : `re-${raw}`\n            }\n            const reuseUploadedI20 = async (statusRequestId) => {\n                if (!i20UploadToken.value) return false\n                wechatUploading.value = true\n                wechatUploadMessage.value = i20IsChinese.value ? '\u6b63\u5728\u63d0\u4ea4\u5df2\u4e0a\u4f20\u7684 I-20\u2026' : 'Submitting your uploaded I-20\u2026'\n                const payload = { request_id: normalizeWechatOrderRequestId(statusRequestId), upload_token: i20UploadToken.value }\n                for (let attempt = 0; attempt < 2; attempt++) {\n                    try {\n                        const response = await window.apiClient.post('https:\/\/agent.goglobalsafe.com\/api\/v1\/insurance\/baoxian\/easytransfer\/attachments\/reuse-i20', payload, {\n                            headers: { 'Accept': 'application\/json', 'X-Authentication-Key': 'HSxZK8nHniLzZtv0Qtfk87wvNvXpJZ5K' }\n                        })\n                        const status = normalizeTextValue(response?.data?.data?.status)\n                        if (response?.data?.success || status === 'already_synced') {\n                            wechatUploadSuccess.value = true\n                            wechatUploadMessage.value = response?.data?.message || 'I-20 submitted'\n                            sessionStorage.removeItem(i20TokenStorageKey)\n                            await loadSuccessSummary({ requestId: normalizeWechatOrderRequestId(statusRequestId) })\n                            wechatUploading.value = false\n                            return true\n                        }\n                    } catch (error) {\n                        if (attempt === 0) await new Promise(resolve => setTimeout(resolve, 800))\n                    }\n                }\n                wechatUploading.value = false\n                wechatUploadSuccess.value = false\n                wechatUploadMessage.value = i20IsChinese.value ? '\u81ea\u52a8\u63d0\u4ea4\u5931\u8d25\uff0c\u8bf7\u91cd\u65b0\u9009\u62e9\u6587\u4ef6\u6216\u8054\u7cfb\u5ba2\u670d\u3002' : 'Automatic submission failed. Please upload the file again or contact support.'\n                return false\n            }\n            const queryWechatOrderStatus = async (statusRequestId = requestId, { showFailureMessage = false } = {}) => {\n                if (wechatOrderStatusChecking) return false\n                wechatOrderStatusChecking = true\n                try {\n                    const response = await window.apiClient.post(\"https:\/\/agent.goglobalsafe.com\/api\/v1\/us\/order_status\", {\n                        requestId: normalizeWechatOrderRequestId(statusRequestId),\n                        openai_ads: getOpenAiAdsContext(),\n                    }, {\n                        headers: {\n                            \"Accept\": \"application\/json\",\n                            \"X-Authentication-Key\": \"HSxZK8nHniLzZtv0Qtfk87wvNvXpJZ5K\",\n                        }\n                    })\n                    const res = response?.data?.data || {}\n                    measureOpenAiAdsResponse(response)\n                    if (res.status === \"completed\") {\n                        stopWechatOrderStatusPolling()\n                        hiddenModel()\n                        currentStep.value = 3\n                        if (i20UploadToken.value) await reuseUploadedI20(statusRequestId)\n                        if (!wechatUploadSuccess.value) {\n                            await loadSuccessSummary({ requestId: normalizeWechatOrderRequestId(statusRequestId) })\n                        }\n                        await nextTick()\n                        window.scrollTo({ top: 0, behavior: 'smooth' })\n                        return true\n                    }\n                    if (showFailureMessage) {\n                        showErrorMessage('\u8ba2\u5355\u672a\u652f\u4ed8\u6210\u529f')\n                    }\n                    return false\n                } catch (error) {\n                    if (showFailureMessage) {\n                        showErrorMessage(getApiErrorMessage(error, '\u8ba2\u5355\u672a\u652f\u4ed8\u6210\u529f'))\n                    }\n                    return false\n                } finally {\n                    wechatOrderStatusChecking = false\n                }\n            }\n            \/\/ \u76d1\u89c6\u8fd4\u56de\u7684\u652f\u4ed8\u94fe\u63a5\uff0c\u5982\u679c\u6210\u529f\u5219\u8f6e\u8be2\uff0c\u6bcf6\u79d2\u53d1\u8d77\u4e00\u6b21\u67e5\u8be2\u8ba2\u5355\u7684\u8bf7\u6c42\uff0c\u6700\u591a20\u6b21\uff0c\u4e5f\u5c31\u662f\u4e24\u5206\u949f\n            const getStatus = (statusRequestId = requestId) => {\n                stopWechatOrderStatusPolling()\n                let requestCount = 0\n                wechatOrderStatusTimer = setInterval(() => {\n                    requestCount++\n                    if (requestCount > 30) {\n                        stopWechatOrderStatusPolling()\n                        return\n                    }\n                    queryWechatOrderStatus(statusRequestId)\n                }, 6000)\n            }\n            const startEasyTransferReturnFlow = async (statusRequestId) => {\n                const normalizedRequestId = normalizeWechatOrderRequestId(statusRequestId)\n                if (!normalizedRequestId) return\n                stopWechatOrderStatusPolling()\n                loading.value = true\n                try {\n                    const completed = await queryWechatOrderStatus(normalizedRequestId)\n                    if (completed) {\n                        loading.value = false\n                        return\n                    }\n                    let requestCount = 0\n                    wechatOrderStatusTimer = setInterval(async () => {\n                        requestCount++\n                        if (requestCount > 30) {\n                            stopWechatOrderStatusPolling()\n                            loading.value = false\n                            return\n                        }\n                        const isCompleted = await queryWechatOrderStatus(normalizedRequestId)\n                        if (isCompleted) {\n                            loading.value = false\n                        }\n                    }, 6000)\n                } catch (error) {\n                    loading.value = false\n                    throw error\n                }\n            }\n            watch(\n                ()=>pay_url.value,\n                (newValue)=>{\n                    if(newValue!==\"\"){\n                        getStatus()\n                    }\n                },\n                {\n                    immediately:true\n                }\n            )\n            const checkWechatOrderCompleted = async () => {\n                if (loading.value) return\n                loading.value = true\n                try {\n                    await queryWechatOrderStatus(wechatPaymentRequestId.value || requestId, { showFailureMessage: true })\n                } finally {\n                    loading.value = false\n                }\n            }\n\n            function formatDate(dateStr) {\n                \/\/ \u5c06\u65e5\u671f\u5b57\u7b26\u4e32\u8f6c\u6362\u4e3a Date \u5bf9\u8c61\n                \/\/ const date = new Date(dateString);\n                \/\/ \/\/ \u83b7\u53d6\u5e74\u4efd\u3001\u6708\u4efd\u548c\u65e5\u671f\n                \/\/ const year = date.getFullYear();\n                \/\/ const month = String(date.getMonth() + 1).padStart(2, '0'); \/\/ \u786e\u4fdd\u6708\u4efd\u662f\u4e24\u4f4d\u6570\n                \/\/ const day = String(date.getDate()).padStart(2, '0'); \/\/ \u786e\u4fdd\u65e5\u671f\u662f\u4e24\u4f4d\u6570\n                \/\/ \/\/ \u8fd4\u56de\u683c\u5f0f\u5316\u540e\u7684\u65e5\u671f\u5b57\u7b26\u4e32\n                \/\/ return `${year}-${month}-${day}`;\n                return dayjs(dateStr).format('YYYY-MM-DD')\n            }\n            function resolveReqCoveragePeriod(startDate, endDate, insuranceName = '', code = '') {\n                const normalizedStart = normalizeTextValue(startDate)\n                const normalizedEnd = normalizeTextValue(endDate)\n                if (!isRenewalPrefillRequest || !dayjs(normalizedStart).isValid() || !dayjs(normalizedEnd).isValid()) {\n                    return { start: normalizedStart, end: normalizedEnd }\n                }\n\n                let renewalMonths = getMinimumCoverageMonths(insuranceName, code)\n                try {\n                    renewalMonths = normalizeCoverageMonthsToMinimum(\n                        calculateMonthDifference2(normalizedStart, normalizedEnd),\n                        insuranceName,\n                        code\n                    )\n                } catch (error) {}\n\n                const dayAfterCurrentCoverage = dayjs(normalizedEnd).add(1, 'day')\n                const earliestAllowedStart = dayjs(minStartDate.value)\n                const renewalStart = dayAfterCurrentCoverage.isBefore(earliestAllowedStart, 'day')\n                    ? earliestAllowedStart\n                    : dayAfterCurrentCoverage\n                return {\n                    start: renewalStart.format('YYYY-MM-DD'),\n                    end: renewalStart.add(renewalMonths, 'month').subtract(1, 'day').format('YYYY-MM-DD')\n                }\n            }\n            const getStoredStudentDob = () => {\n                const dob = normalizeTextValue(localStorage.getItem('prefilled_student_dob'))\n                if (!dob || !dayjs(dob).isValid()) return ''\n                return formatDate(dob)\n            }\n            const applyPrefilledStudentDob = () => {\n                if (currentReq) return false\n                const dob = getStoredStudentDob()\n                if (!dob) return false\n                inputDataTwo[4].value = dob\n                getStudentAge(inputDataOne[0].value)\n                return true\n            }\n            const persistCurrentStudentDob = () => {\n                const dob = normalizeTextValue(inputDataTwo[4].value)\n                if (dob && dayjs(dob).isValid()) {\n                    localStorage.setItem('prefilled_student_dob', formatDate(dob))\n                }\n            }\n            const normalizeBooleanLike = (value) => {\n                if (typeof value === 'boolean') return value\n                if (typeof value === 'number') return value === 1\n                const normalized = String(value || '').trim().toLowerCase()\n                return ['1', 'true', 'yes', 'y'].includes(normalized)\n            }\n            const normalizeRenewCardReward = (text) => {\n                return String(text || '')\n                    .replace(\/\u661f\u5df4\u514b\u5361\/g, 'Starbucks Gift Card')\n                    .replace(\/\u5361\/g, 'Card')\n                    .replace(\/(\\$\\d+(?:\\.\\d+)?)\\s*Starbucks\/gi, '$1 Starbucks')\n                    .replace(\/\\s{2,}\/g, ' ')\n                    .trim()\n            }\n            const normalizeRenewCashReward = (value) => {\n                const raw = String(value || '').trim()\n                if (!raw) return ''\n                const digitsMatch = raw.match(\/(\\d+(?:\\.\\d+)?)\/)\n                if (!digitsMatch) return raw\n                return `\u00a5${digitsMatch[1]}`\n            }\n            const normalizeRenewRulePayload = (rule) => {\n                if (!rule || typeof rule !== 'object') return null\n                const normalizedRule = JSON.parse(JSON.stringify(rule))\n                const stages = Array.isArray(normalizedRule.all_stages) ? normalizedRule.all_stages : []\n                const shanghaiDateParts = new Intl.DateTimeFormat('en-US', {\n                    timeZone: 'Asia\/Shanghai', year: 'numeric', month: '2-digit', day: '2-digit',\n                    hour: '2-digit', minute: '2-digit', second: '2-digit', hourCycle: 'h23'\n                }).formatToParts(new Date()).reduce((parts, part) => {\n                    if (part.type !== 'literal') parts[part.type] = part.value\n                    return parts\n                }, {})\n                const nowInShanghai = `${shanghaiDateParts.year}-${shanghaiDateParts.month}-${shanghaiDateParts.day} ${shanghaiDateParts.hour}:${shanghaiDateParts.minute}:${shanghaiDateParts.second}`\n                const normalizeStageBoundary = (value, endOfDay) => {\n                    const normalized = String(value || '').trim().replace('T', ' ')\n                    if (!normalized) return ''\n                    if (normalized.length <= 10) {\n                        return `${normalized} ${endOfDay ? '23:59:59' : '00:00:00'}`\n                    }\n                    return normalized.slice(0, 19)\n                }\n                const activeStage = stages.find((stage) => {\n                    if (!stage || !stage.start_at || !stage.end_at) return false\n                    const start = normalizeStageBoundary(stage.start_at, false)\n                    const end = normalizeStageBoundary(stage.end_at, true)\n                    return nowInShanghai >= start && nowInShanghai <= end\n                })\n                const defaultStage = stages.find((stage) => stage && !stage.start_at && !stage.end_at)\n                const resolvedStage = activeStage || defaultStage\n                if (resolvedStage) {\n                    normalizedRule.current = {\n                        ...(normalizedRule.current || {}),\n                        ...resolvedStage,\n                    }\n                }\n                if (normalizedRule.current && typeof normalizedRule.current === 'object') {\n                    normalizedRule.current.extra_cash_reward = normalizeRenewCashReward(\n                        normalizedRule.current.extra_cash_reward\n                    )\n                }\n                return normalizedRule\n            }\n            const getRenewBannerRewardText = () => {\n                const current = renewalRule.value && renewalRule.value.current ? renewalRule.value.current : {}\n                const parts = []\n                const cardReward = normalizeRenewCardReward(current.card_reward)\n                if (cardReward) {\n                    parts.push(cardReward)\n                }\n                const cashReward = normalizeRenewCashReward(current.extra_cash_reward)\n                if (cashReward) {\n                    parts.push(`${cashReward} cash`)\n                }\n                return parts.join(' + ') || 'renewal reward'\n            }\n            const renewalBannerTitle = computed(() => {\n                return `\ud83c\udf89 Exclusive Renewal Reward: Complete your renewal to instantly receive a ${getRenewBannerRewardText()} via email!`\n            })\n            const renewalBannerDesc = computed(() => {\n                return 'This promotion is only available for plans with a coverage period longer than 6 months.'\n            })\n            const showRenewalBanner = computed(() => {\n                return Boolean(currentReq && renewalRule.value && renewalCode.value)\n            })\n            const RENEW_PROMO_STORAGE_KEY = 'renewal_reward_rule'\n            const resolveRenewalBannerState = () => {\n                try {\n                    const storedRuleRaw = localStorage.getItem(RENEW_PROMO_STORAGE_KEY)\n                    if (storedRuleRaw) {\n                        const storedRule = JSON.parse(storedRuleRaw)\n                        if (storedRule && typeof storedRule === 'object') {\n                            const normalizedStoredRule = normalizeRenewRulePayload(storedRule)\n                            renewalRule.value = normalizedStoredRule\n                            renewalCode.value = normalizedStoredRule && normalizedStoredRule.renew_code ? String(normalizedStoredRule.renew_code).trim() : ''\n                            return\n                        }\n                    }\n                    const raw = localStorage.getItem('user_info')\n                    if (!raw) {\n                        renewalRule.value = null\n                        renewalCode.value = ''\n                        return\n                    }\n                    const cachedUser = JSON.parse(raw)\n                    const shouldShow = normalizeBooleanLike(cachedUser && cachedUser.show_renew_popup)\n                    const rule = shouldShow ? normalizeRenewRulePayload(cachedUser && cachedUser.renewal_reward_rule) : null\n                    renewalRule.value = rule || null\n                    renewalCode.value = rule && rule.renew_code ? String(rule.renew_code).trim() : ''\n                } catch (error) {\n                    renewalRule.value = null\n                    renewalCode.value = ''\n                }\n            }\n            resolveRenewalBannerState()\n            const showModifyPlanButton = computed(() => Boolean(schoolSlugForModify.value))\n            const goToSchoolPlanPage = () => {\n                const slug = String(schoolSlugForModify.value || '').trim()\n                if (!slug) return\n                window.location.href = `\/schools\/${encodeURIComponent(slug)}\/`\n            }\n            const LEGACY_SCHOOL_COVERAGE_CUTOFF = '2026-05-01'\n            const isValidCoverageDate = (dateValue) => {\n                if (!dateValue || dateValue === 'null' || dateValue === 'undefined') return false\n                return dayjs(dateValue).isValid()\n            }\n            const isLegacySchoolCoverage = (storedStart) => {\n                if (!isValidCoverageDate(storedStart)) return false\n                return dayjs(storedStart).isBefore(dayjs(LEGACY_SCHOOL_COVERAGE_CUTOFF), 'day')\n            }\n            const isSchoolCoverageStartAfterCutoff = (storedStart) => {\n                if (!isValidCoverageDate(storedStart)) return false\n                return dayjs(storedStart).isAfter(dayjs(LEGACY_SCHOOL_COVERAGE_CUTOFF), 'day')\n            }\n            const getMinimumCoverageMonths = (insuranceName, code) => {\n                if (String(insuranceName || '').toLowerCase().includes('opt')) return 5\n                if (isWorldEliteMinimum12Plan(insuranceName)) return 12\n                if (String(insuranceName || '').toLowerCase().includes('plus')) return 12\n                return is6MonthProduct(insuranceName) && !String(code || '').includes('UCB') ? 6 : 5\n            }\n            const isOptDirectEnrollment = () => {\n                const planCode = String(\n                    selectedPlanCode.value\n                    || localStorage.getItem('selected_plan_code')\n                    || ''\n                ).trim().toUpperCase()\n                return ['WAOPT', 'WAOPTPREMIER'].includes(planCode)\n            }\n            const allowCoverageEndDateEdit = computed(() => {\n                if (getWellAwayDirectSchool()?.allowCoverageEndDateEdit) {\n                    return true\n                }\n                if (schoolCheckoutSettings.allowCoverageEndDateEdit !== null) {\n                    return schoolCheckoutSettings.allowCoverageEndDateEdit\n                }\n                return false\n            })\n            const getCoverageEndDateBoundary = (months, startDate = inputDataOne[0].value) => {\n                if (!isValidCoverageDate(startDate)) return ''\n                return dayjs(formatDate(startDate)).add(months, 'month').subtract(1, 'day').format('YYYY-MM-DD')\n            }\n            const minimumCoverageEndDate = computed(() => {\n                return getCoverageEndDateBoundary(getMinimumCoverageMonths(getCurrentInsuranceName(), school.value))\n            })\n            const maximumCoverageEndDate = computed(() => getCoverageEndDateBoundary(12))\n            const isCoverageEndDateAtLeastMinimum = (startDate, endDate, insuranceName = getCurrentInsuranceName(), code = school.value) => {\n                if (!isValidCoverageDate(startDate) || !isValidCoverageDate(endDate)) return false\n                const minEndDate = getCoverageEndDateBoundary(getMinimumCoverageMonths(insuranceName, code), startDate)\n                const normalizedEndDate = dayjs(formatDate(endDate))\n                return !normalizedEndDate.isBefore(dayjs(minEndDate), 'day')\n            }\n            const isCoverageEndDateWithinPlanRange = (startDate, endDate, insuranceName = getCurrentInsuranceName(), code = school.value) => {\n                if (!isCoverageEndDateAtLeastMinimum(startDate, endDate, insuranceName, code)) return false\n                const maxEndDate = getCoverageEndDateBoundary(12, startDate)\n                return !dayjs(formatDate(endDate)).isAfter(dayjs(maxEndDate), 'day')\n            }\n            const isCoverageStartBeforeMinStart = (startDate) => {\n                if (!isValidCoverageDate(startDate)) return false\n                return dayjs(formatDate(startDate)).isBefore(dayjs(minStartDate.value), 'day')\n            }\n            const isCoverageStartInCurrentYear = (startDate) => {\n                if (!isValidCoverageDate(startDate)) return false\n                return dayjs(formatDate(startDate)).year() === dayjs().year()\n            }\n            const isCoverageEndExpired = (endDate) => {\n                if (!isValidCoverageDate(endDate)) return true\n                return dayjs(formatDate(endDate)).isBefore(dayjs(), 'day')\n            }\n            const canUseCoveragePeriodDates = (startDate, endDate) => {\n                return isValidCoverageDate(startDate)\n                    && isValidCoverageDate(endDate)\n                    && !isLegacySchoolCoverage(startDate)\n                    && !isCoverageStartBeforeMinStart(startDate)\n                    && isCoverageStartInCurrentYear(startDate)\n            }\n            const canUseCoveragePeriodDatesForPlan = (startDate, endDate, insuranceName = getCurrentInsuranceName(), code = school.value) => {\n                if (!canUseCoveragePeriodDates(startDate, endDate)) return false\n                return isCoverageEndDateAtLeastMinimum(startDate, endDate, insuranceName, code)\n            }\n            const canUseFullReqCoveragePeriodDatesForPlan = (\n                startDate,\n                endDate,\n                insuranceName = getCurrentInsuranceName(),\n                code = school.value\n            ) => {\n                if (!(currentReq && shouldFillReferralFromReq)) return false\n                if (!isValidCoverageDate(startDate) || !isValidCoverageDate(endDate)) return false\n                if (isCoverageEndExpired(endDate)) return false\n                return isCoverageEndDateAtLeastMinimum(startDate, endDate, insuranceName, code)\n            }\n            const canUsePreferredCoveragePeriodDatesForPlan = (\n                startDate,\n                endDate,\n                insuranceName = getCurrentInsuranceName(),\n                code = school.value\n            ) => {\n                return canUseFullReqCoveragePeriodDatesForPlan(startDate, endDate, insuranceName, code)\n                    || canUseCoveragePeriodDatesForPlan(startDate, endDate, insuranceName, code)\n            }\n            const normalizeCoverageMonthsToMinimum = (months, insuranceName = getCurrentInsuranceName(), code = school.value) => {\n                const minMonths = getMinimumCoverageMonths(insuranceName, code)\n                const numericMonths = Number(months)\n                if (!Number.isFinite(numericMonths) || numericMonths < minMonths) return minMonths\n                return numericMonths\n            }\n            const resetCoverageToMinimumPeriod = (insuranceName = getCurrentInsuranceName(), code = school.value) => {\n                const minMonths = getMinimumCoverageMonths(insuranceName, code)\n                isHidePeriod.value = false\n                isCoverageFromSchool.value = false\n                inputDataOne[0].value = defaultCoverageStartDate\n                selectedMonths.value = minMonths\n                inputDataOne[1].value = dayjs(inputDataOne[0].value).add(minMonths, 'month').subtract(1, 'day').format('YYYY-MM-DD')\n                startDefault.value = inputDataOne[0].value\n                endDefault.value = inputDataOne[1].value\n            }\n            const ensureCoverageDatesWithinCurrentRules = () => {\n                const insuranceName = getCurrentInsuranceName()\n                const code = school.value\n                const storedStart = localStorage.getItem('coverage_start_date')\n                const storedEnd = localStorage.getItem('coverage_end_date')\n                if (selectedMonths.value === NYU_LLM_PERIOD_VALUE) {\n                    if (canUseNyuLlmPeriod.value) {\n                        return applyNyuLlmCoverageDates()\n                    }\n                    resetCoverageToMinimumPeriod(insuranceName, code)\n                    return true\n                }\n                \/\/ Numeric periods are explicit user choices. Cached renewal dates remain\n                \/\/ authoritative only for the school-required coverage option below.\n                if (selectedMonths.value === SCHOOL_REQUIRED_PERIOD_LABEL) {\n                    if (canUsePreferredCoveragePeriodDatesForPlan(storedStart, storedEnd, insuranceName, code)) {\n                        const normalizedStoredStart = formatDate(storedStart)\n                        const normalizedStoredEnd = formatDate(storedEnd)\n                        if (inputDataOne[0].value !== normalizedStoredStart || inputDataOne[1].value !== normalizedStoredEnd) {\n                            inputDataOne[0].value = normalizedStoredStart\n                            inputDataOne[1].value = normalizedStoredEnd\n                            startDefault.value = normalizedStoredStart\n                            endDefault.value = normalizedStoredEnd\n                            isCoverageFromSchool.value = true\n                            return true\n                        }\n                        return false\n                    }\n                    resetCoverageToMinimumPeriod(insuranceName, code)\n                    return true\n                }\n                if (inputDataOne[0].value && (!isValidCoverageDate(inputDataOne[0].value) || isCoverageStartBeforeMinStart(inputDataOne[0].value))) {\n                    resetCoverageToMinimumPeriod(insuranceName, code)\n                    return true\n                }\n                return false\n            }\n            const normalizeSchoolNameForPeriod = (value) => String(value || '')\n                .toLowerCase()\n                .replace(\/[^a-z0-9]+\/g, ' ')\n                .trim()\n            const isNyuSchoolName = (value) => {\n                const normalizedSchoolName = normalizeSchoolNameForPeriod(value)\n                return normalizedSchoolName === 'nyu'\n                    || normalizedSchoolName.includes('new york university')\n            }\n            const isNyuSchool = computed(() => {\n                return [\n                    school.value,\n                    schoolNew.value,\n                    localStorage.getItem('school_name')\n                ].some(isNyuSchoolName)\n            })\n            const isTwelveMonthOnlyPlan = (insuranceName = getCurrentInsuranceName()) => {\n                const normalizedName = String(insuranceName || '').toLowerCase()\n                return isFixed12Month.value\n                    || isWorldEliteMinimum12Plan(insuranceName)\n                    || normalizedName.includes('plus')\n            }\n            const canUseNyuLlmPeriod = computed(() => isNyuSchool.value && !isTwelveMonthOnlyPlan())\n            const applyNyuLlmCoverageDates = () => {\n                if (!canUseNyuLlmPeriod.value) return false\n                const changed = inputDataOne[0].value !== NYU_LLM_COVERAGE_START\n                    || inputDataOne[1].value !== NYU_LLM_COVERAGE_END\n                inputDataOne[0].value = NYU_LLM_COVERAGE_START\n                inputDataOne[1].value = NYU_LLM_COVERAGE_END\n                startDefault.value = NYU_LLM_COVERAGE_START\n                endDefault.value = NYU_LLM_COVERAGE_END\n                isCoverageFromSchool.value = true\n                return changed\n            }\n            const isSchoolRequiredStartUnlocked = computed(() => isNyuSchool.value)\n            const PERIOD_LOCK_SCHOOL_KEYWORDS = [\n                'University Of Southern California',\n                'UCLA',\n                'University Of California Los Angeles',\n                'UCI',\n                'University Of California Irvine',\n                'Rutgers University',\n                'UCM',\n                'University Of California Merced',\n                'UCD',\n                'University Of California Davis',\n                'UCSB',\n                'University Of California Santa Barbara',\n                'UCB',\n                'University Of California Berkeley',\n                'University Of CA Berkeley'\n            ].map(normalizeSchoolNameForPeriod)\n            const isPeriodLockSchool = computed(() => {\n                const schoolCandidates = [\n                    school.value,\n                    schoolNew.value,\n                    localStorage.getItem('school_name')\n                ].map(normalizeSchoolNameForPeriod).filter(Boolean)\n                return schoolCandidates.some((schoolName) =>\n                    PERIOD_LOCK_SCHOOL_KEYWORDS.some((keyword) => schoolName.includes(keyword))\n                )\n            })\n            const isPeriodSelectDisabled = computed(() => {\n                if (isOptDirectEnrollment()) return false\n                const storedStart = localStorage.getItem('coverage_start_date')\n                const insurance_name = localStorage.getItem(\"InsuranceName\")\n                const isRoyalNonPlus = isRoyal(insurance_name) && !isRoyalPlus(insurance_name)\n                return isFixed12Month.value || (\n                    isCoverageFromSchool.value\n                    && isPeriodLockSchool.value\n                    && canUseCoveragePeriodDates(storedStart, localStorage.getItem('coverage_end_date'))\n                    && !isRoyalNonPlus\n                )\n            })\n            \/\/ Coverage priority: renewal period, full=1 req period, current-year school period, then minimum period from tomorrow.\n            const applySchoolCoverageDefaults = (storedStart, storedEnd, insuranceName, code) => {\n                const minMonths = getMinimumCoverageMonths(insuranceName, code)\n                const hasEnrollmentCoverage = isValidCoverageDate(enrollmentCoverageStartDate.value) && isValidCoverageDate(enrollmentCoverageEndDate.value)\n                const canUseEnrollmentCoverage = hasEnrollmentCoverage && canUseFullReqCoveragePeriodDatesForPlan(enrollmentCoverageStartDate.value, enrollmentCoverageEndDate.value, insuranceName, code)\n                const hasReqEnrollmentCoverage = Boolean(currentReq) && shouldFillReferralFromReq && canUseEnrollmentCoverage\n                isFixed12Month.value = false\n                if (hasReqEnrollmentCoverage) {\n                    try {\n                        const exactMonths = calculateMonthDifference2(enrollmentCoverageStartDate.value, enrollmentCoverageEndDate.value)\n                        selectedMonths.value = normalizeCoverageMonthsToMinimum(\n                            Number.isFinite(exactMonths) && exactMonths > 0 ? exactMonths : minMonths,\n                            insuranceName,\n                            code\n                        )\n                    } catch (error) {\n                        selectedMonths.value = minMonths\n                    }\n                    isHidePeriod.value = false\n                    isCoverageFromSchool.value = false\n                    inputDataOne[0].value = formatDate(enrollmentCoverageStartDate.value)\n                    inputDataOne[1].value = formatDate(enrollmentCoverageEndDate.value)\n                    startDefault.value = inputDataOne[0].value\n                    endDefault.value = inputDataOne[1].value\n                    return\n                }\n                if (canUsePreferredCoveragePeriodDatesForPlan(storedStart, storedEnd, insuranceName, code)) {\n                    isHidePeriod.value = false\n                    isCoverageFromSchool.value = true\n                    inputDataOne[0].value = formatDate(storedStart)\n                    inputDataOne[1].value = formatDate(storedEnd)\n                    startDefault.value = inputDataOne[0].value\n                    endDefault.value = inputDataOne[1].value\n                    selectedMonths.value = SCHOOL_REQUIRED_PERIOD_LABEL\n                    return\n                }\n                isHidePeriod.value = false\n                isCoverageFromSchool.value = false\n                resetCoverageToMinimumPeriod(insuranceName, code)\n            }\n            const getWaiver = () => {\n                const inputSchool = school.value?.toLowerCase() || '';\n\n                if (!inputSchool) {\n                    return null;\n                }\n                \/\/ \u904d\u5386\u6240\u6709\u5b66\u6821\u540d\u79f0\uff0c\u67e5\u627e\u5305\u542b\u5173\u7cfb\n                for (const [schoolName, link] of Object.entries(waiver)) {\n                    \/\/ \u5c06\u6620\u5c04\u8868\u4e2d\u7684\u5b66\u6821\u540d\u79f0\u4e5f\u6807\u51c6\u5316\n                    const normalizedSchoolName = schoolName.toLowerCase();\n\n                    \/\/ \u68c0\u67e5\u8f93\u5165\u7684\u5b66\u6821\u540d\u662f\u5426\u5305\u542b\u5728\u6620\u5c04\u8868\u7684\u5b66\u6821\u540d\u4e2d\uff0c\u6216\u53cd\u4e4b\n                    if (normalizedSchoolName.includes(inputSchool) || inputSchool.includes(normalizedSchoolName)) {\n                        return {schoolName, link};\n                    }\n                }\n            }\n            const formDataPay=ref()\n            const dataFill2 = (userHistory)=> {\n                if (userHistory.id) {\n                    const member = userHistory.members?.[0] || {}\n                    const coverage = member.enrollmentCoverage || member.coverage || {}\n                    const homeAddress = userHistory.addresses?.[0] || userHistory.homeAddress || {}\n                    const destinationAddress = userHistory.addresses?.[1] || userHistory.billingAddress || {}\n                    sourceInstitutionFromReq.value = normalizeTextValue(userHistory.source_institution || userHistory.sourceInstitution)\n\n                    applyReferralCodeByPriority(userHistory.referral_code)\n\n                    inputDataTwo[0].value = normalizeTextValue(member.firstName)\n                    inputDataTwo[1].value = normalizeTextValue(member.middleName)\n                    inputDataTwo[2].value = normalizeTextValue(member.lastName)\n                    inputDataTwo[3].value = normalizeTextValue(member.gender)\n                    inputDataTwo[4].value = getEnrollmentDob(userHistory)\n\n                    \/\/ console.log('\u8fdb\u6765\u586b\u5199', userHistory.member[0].coverage.coverageStartDate)\n\n                    const restoredNationalityCode = resolveHomeCountryCode(\n                        homeAddress.countryCode,\n                        userHistory.homeCountryCode,\n                        userHistory.source_country_code,\n                        userHistory.sourceCountryCode\n                    )\n                    if (restoredNationalityCode) {\n                        \/\/ nationaly\u56de\u9009\n                        inputDataTwo[5].value = restoredNationalityCode\n                        cleanPhone()\n                        changeNation()\n                    }\n\n                    const effectiveCoverageStart = isRenewalPrefillRequest\n                        ? enrollmentCoverageStartDate.value\n                        : normalizeTextValue(coverage.coverageStartDate)\n                    const effectiveCoverageEnd = isRenewalPrefillRequest\n                        ? enrollmentCoverageEndDate.value\n                        : normalizeTextValue(coverage.coverageEndDate)\n                    if (effectiveCoverageStart) {\n                        \/\/ console.log('\u8fdb\u6765\u770b\u770b11111')\n                        inputDataOne[0].value = effectiveCoverageStart\n                        inputDataOne[1].value = effectiveCoverageEnd\n                        getStudentAge(inputDataOne[0].value)\n                        getlastPrice()\n                    }\n                    inputDataTwo[6].value = normalizeTextValue(userHistory.email) || getContactValue(member, 'Email', 0)\n                    inputDataTwo[7].value = getContactValue(member, 'Passport', 3)\n                    inputDataThree[0].value = getContactValue(member, 'PhoneOrigin', 5)\n                    inputDataThree[1].value = getContactValue(member, 'Phone', 1)\n                    visaType.value = getOptionValue(member, 'Visa', 0)\n                    inputDataSix[0].value = getOptionValue(member, 'VisaStartDate', 1)\n                    inputDataSix[1].value = getOptionValue(member, 'VisaEndDate', 2)\n                    studentID.value = normalizeTextValue(userHistory.student_id)\n                    syncSchoolValue(getEnrollmentSchoolName(userHistory))\n                    graduateDate.value = normalizeTextValue(userHistory.graduateDate) || getContactValue(member, 'GraduateDate', 4)\n                    homeData[0].value = normalizeTextValue(homeAddress.address1)\n                    homeData[1].value = normalizeTextValue(homeAddress.address2)\n                    homeData[2].value = normalizeTextValue(homeAddress.city)\n                    homeData[3].value = normalizeTextValue(homeAddress.postalCode)\n                    syncHomeStateOptions(\n                        inputDataTwo[5].value || restoredNationalityCode,\n                        homeAddress.stateCode\n                    )\n\n                    destinationData[0].value = normalizeTextValue(destinationAddress.address1)\n                    destinationData[1].value = normalizeTextValue(destinationAddress.address2)\n                    destinationData[2].value = normalizeTextValue(destinationAddress.city)\n                    destinationData[3].value = normalizeTextValue(destinationAddress.postalCode)\n                    dsState.value = normalizeTextValue(destinationAddress.stateCode)\n                    applyFamilyStateFromHistory(userHistory)\n                    yesOrNo.value = \"No\"\n                    sanitizeAddressCollection()\n                    saveEnrollmentDraft(userHistory)\n                }\n            }\n            const dataFill = (userHistory)=> {\n                if (userHistory) {\n                    userHistory = sanitizeEnrollmentBackup(userHistory)\n                    if (!userHistory?.members?.[0]) return\n                    localStorage.setItem('user_form_history', JSON.stringify(userHistory))\n                    applyReferralCodeByPriority(userHistory.referral_code)\n                    inputDataTwo[0].value = userHistory.members[0].firstName\n                    inputDataTwo[1].value = userHistory.members[0].middleName\n                    inputDataTwo[2].value = userHistory.members[0].lastName\n                    inputDataTwo[3].value = userHistory.members[0].gender\n                    if (userHistory.members[0].dob) {\n                        inputDataTwo[4].value = userHistory.members[0].dob\n                        getStudentAge(inputDataOne[0].value)\n                        getlastPrice()\n                    }\n                    const restoredNationalityCode = resolveHomeCountryCode(\n                        userHistory.homeAddress?.countryCode,\n                        userHistory.homeCountryCode,\n                        userHistory.source_country_code,\n                        userHistory.sourceCountryCode\n                    )\n                    if (restoredNationalityCode) {\n                        \/\/ nationaly\u56de\u9009\n                        inputDataTwo[5].value = restoredNationalityCode\n                        cleanPhone()\n                        changeNation()\n                    }\n                    \/\/ if (userHistory.member[0].coverage.coverageStartDate) {\n                    \/\/     inputDataOne[0].value = userHistory.member[0].coverage.coverageStartDate\n                    \/\/     getStudentAge(inputDataOne[0].value)\n                    \/\/     getlastPrice()\n                    \/\/ }\n                    if (!inputDataTwo[6].value) {\n                        inputDataTwo[6].value = userHistory.members[0].contacts[0].value\n                    }\n                    inputDataTwo[7].value = userHistory.members[0].contacts[3].value\n                    inputDataThree[0].value = userHistory.phoneOrigin\n                    inputDataThree[1].value = userHistory.members[0].contacts[1].value\n                    visaType.value = userHistory.members[0].options[0].value\n                    inputDataSix[0].value = userHistory.members[0].options[1].value\n                    inputDataSix[1].value = userHistory.members[0].options[2].value\n                    studentID.value = userHistory.student_id\n                    graduateDate.value = userHistory.graduateDate\n\n                    homeData[0].value = userHistory.homeAddress.address1\n                    homeData[1].value = userHistory.homeAddress.address2\n                    homeData[2].value = userHistory.homeAddress.city\n                    homeData[3].value = userHistory.homeAddress.postalCode\n                    syncHomeStateOptions(inputDataTwo[5].value, userHistory.homeAddress.stateCode)\n\n                    destinationData[0].value = userHistory.billingAddress.address1\n                    destinationData[1].value = userHistory.billingAddress.address2\n                    destinationData[2].value = userHistory.billingAddress.city\n                    destinationData[3].value = userHistory.billingAddress.postalCode\n                    dsState.value = userHistory.billingAddress.stateCode\n                    yesOrNo.value = \"No\"\n                    applyFamilyStateFromHistory(userHistory)\n                    sanitizeAddressCollection()\n                }\n            }\n            const calculateMonthDifference2 = (startDateStr, endDateStr) => {\n                const start = dayjs(startDateStr)\n                const end = dayjs(endDateStr)\n\n                \/\/ \u5904\u7406\u65e5\u671f\u65e0\u6548\u7684\u60c5\u51b5\n                if (!start.isValid() || !end.isValid()) {\n                    throw new Error('\u65e0\u6548\u7684\u65e5\u671f\u683c\u5f0f');\n                }\n\n                \/\/ \u786e\u4fdd\u5f00\u59cb\u65e5\u671f\u4e0d\u665a\u4e8e\u7ed3\u675f\u65e5\u671f\n                if (end.isBefore(start, 'day')) {\n                    return 0; \/\/ \u7ed3\u675f\u65e5\u671f\u5728\u5f00\u59cb\u65e5\u671f\u4e4b\u524d\uff0c\u7b970\u4e2a\u6708\n                }\n\n                const roughMonthDiff = (end.year() - start.year()) * 12 + (end.month() - start.month());\n                const maxMonthsToCheck = Math.max(1, roughMonthDiff + 1);\n\n                \/\/ \u89c4\u5219\uff1a\n                \/\/ \u7ed3\u675f\u65e5\u671f = \u5f00\u59cb\u65e5\u671f + N\u4e2a\u6708 - 1\u5929\uff0c\u7b97 N \u4e2a\u6708\n                for (let months = 1; months <= maxMonthsToCheck; months++) {\n                    const exactTargetDate = start.add(months, 'month').subtract(1, 'day')\n                    if (exactTargetDate.isSame(end, 'day')) {\n                        return months;\n                    }\n                }\n\n                return Math.max(1, roughMonthDiff);\n            };\n            const calculateMonthDifference = (startDateStr, endDateStr) => {\n                return calculateMonthDifference2(startDateStr, endDateStr)\n            }\n            const schoolInformation = ref(null)\n            const forcedAetnaSchoolIds = new Set(['662', '163', '154', '1180', '280'])\n            const resolveWellAwayNetwork = (payload = {}) => {\n                const schoolData = schoolInformation.value || {}\n                const apiNetwork = String(schoolData.network ?? '').trim()\n                if (apiNetwork) {\n                    return apiNetwork\n                }\n                const planName = String(payload.planName || getCurrentInsuranceName() || '').toUpperCase()\n                if (planName.includes('USC')) {\n                    return 'Aetna'\n                }\n                const schoolId = schoolData.id ?? schoolData.school_id ?? schoolData.schoolId\n                if (forcedAetnaSchoolIds.has(String(schoolId ?? ''))) {\n                    return 'Aetna'\n                }\n                return 'United'\n            }\n            const schoolExist = async () => {\n                \/\/\u90ae\u4ef6\u68c0\u67e5\n                try {\n                    const response = await window.apiClient.post('https:\/\/agent.goglobalsafe.com\/api\/v1\/Enrollment\/school',{\n                        school: normalizeSchoolNameForSubmission(schoolNew.value || school.value),\n                        email: inputDataTwo[6].value,\n                        source: getSource()\n                    },{\n                        timeout: 15000,\n                        headers:{\n                            \"X-Authentication-Key\": \"HSxZK8nHniLzZtv0Qtfk87wvNvXpJZ5K\",\n                        }\n                    })\n                    if (response.status === 200) {\n                        schoolInformation.value = response?.data?.data || null\n                        syncSchoolIdValue(\n                            response?.data?.data?.id\n                            || response?.data?.data?.school_id\n                            || response?.data?.data?.schoolId\n                        )\n                    }\n                    return schoolInformation.value\n                } catch (error) {\n                    console.error('\u5b66\u6821\u8bf7\u6c42\u51fa\u9519:', error);\n                    return schoolInformation.value\n                }\n            }\n            const EmailCode = ref('')\n            const emailExist = (user_email) => {\n                \/\/\u90ae\u4ef6\u68c0\u67e5\n                window.apiClient.post('https:\/\/agent.goglobalsafe.com\/api\/v1\/student\/email\/email_exist',{\n                    email:user_email,\n                    school: normalizeSchoolNameForSubmission(school.value),\n                },{\n                    headers:{\n                        \"X-Authentication-Key\": \" HSxZK8nHniLzZtv0Qtfk87wvNvXpJZ5K\",\n                    }\n                }).then(response => {\n                    if (response.status === 200) {\n                        delete progress[4]; \/\/ \u5220\u9664\u7b2c4\u9879\n                        EmailCode.value = response.data.data.code\n                    }\n                }).catch(error => {\n                    console.error('\u90ae\u7bb1\u8bf7\u6c42\u51fa\u9519:', error);\n                    if (error.response) {\n                    }\n                });\n            }\n            const isLock = ref(false)\n            const isHidePeriod = ref(false)\n            \/\/ \u4e00\u8fdb\u9875\u9762\u5c31\u6267\u884c\n            onMounted(() => {\n                window.addEventListener('pagehide', resetTransientCheckoutUi)\n                window.addEventListener('pageshow', resetTransientCheckoutUi)\n                initPromise.then(async (initReady) => {\n                    if (successPreviewMode) {\n                        const previewQrSvg = '<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 160 160\"><rect width=\"160\" height=\"160\" fill=\"#fff\"\/><path fill=\"#102b63\" d=\"M8 8h44v44H8zM16 16v28h28V16zm8 8h12v12H24zM108 8h44v44h-44zM116 16v28h28V16zm8 8h12v12h-12zM8 108h44v44H8zm8 8v28h28v-28zm8 8h12v12H24zM68 8h12v12H68zM84 8h12v28H84zM68 28h12v12H68zM60 48h20v12H60zM88 44h12v20H88zM108 68h20v12h-20zM132 68h20v12h-20zM60 72h12v20H60zM76 68h12v12H76zM92 76h20v12H92zM116 88h12v20h-12zM136 92h16v12h-16zM60 100h20v12H60zM84 96h12v28H84zM100 108h12v12h-12zM116 116h20v12h-20zM68 132h12v20H68zM92 132h20v12H92zM124 136h12v16h-12z\"\/><\/svg>'\n                        successSummary.value = {\n                            payment_method: 'preview',\n                            force_chinese: false,\n                            referral: {\n                                code: 'GGS8K2P',\n                                share_url: 'https:\/\/www.goglobalsafe.com\/us-enrollment'\n                            },\n                            school_community: {\n                                qr_code_url: `data:image\/svg+xml;charset=UTF-8,${encodeURIComponent(previewQrSvg)}`,\n                                title_en: 'USC 2026 Incoming Students WeChat Group',\n                                second_title_en: 'Scan with WeChat. Contact GGS support if the QR code has expired.'\n                            }\n                        }\n                        cardSuccessEnrollment.value = 'preview'\n                        enrollmentIdDisplay.value = 'PREVIEW'\n                        pageMode.value = 'card-success'\n                        return\n                    }\n                    if (draftResumeToken && initReady === false) return\n                    \/\/ \u70b9\u51fb\u6a21\u6001\u6846\u4e4b\u5916\u7684\u90e8\u5206\uff0c\u6a21\u6001\u6846\u9690\u85cf\n                    window.onclick = function(event) {\n                        \/\/ console.log(event.target);\n                        var modal = document.getElementById(\"myModal\");\n                        if (event.target === modal) {\n                            hiddenModel()\n                        }\n                    }\n                    \/\/ \u83b7\u53d6\u8def\u5f84\u4e2d\u7684\u53c2\u6570\uff0c\u53bb\u5230\u7b2c\u56db\u6b65\uff0c\u652f\u4ed8\u6210\u529f\n                    const urlParams = new URLSearchParams(window.location.search);\n                    const stepParam = String(urlParams.get('step') || '').trim()\n                    const requestIdFromUrl = normalizeEasyTransferReturnRequestId(\n                        urlParams.get('request_id') || urlParams.get('requestId')\n                    )\n                    const isPaymentReturnFlow = (stepParam === '3' && Boolean(requestIdFromUrl)) || stepParam === '4'\n                    const yisihuiValue = String(urlParams.get('yisihui') || '').trim()\n                    if (yisihuiValue === yisihuiReviewCode) {\n                        localStorage.setItem('yisihui', yisihuiReviewCode)\n                        localStorage.setItem('yisihui_source', yisihuiSourceLabel)\n                        localStorage.removeItem(yisihuiPaymentModeStorageKey)\n                    } else if (yisihuiValue === yisihuiAllPaymentsCode) {\n                        localStorage.removeItem('yisihui')\n                        localStorage.setItem('yisihui_source', yisihuiSourceLabel)\n                        localStorage.setItem(yisihuiPaymentModeStorageKey, 'all')\n                    } else if (yisihuiValue === 'S25CNYSH') {\n                        localStorage.removeItem('yisihui')\n                        localStorage.setItem('yisihui_source', yisihuiSourceLabel)\n                        localStorage.removeItem(yisihuiPaymentModeStorageKey)\n                    } else if (urlParams.has('yisihui')) {\n                        localStorage.removeItem('yisihui')\n                        localStorage.removeItem('yisihui_source')\n                        localStorage.removeItem(yisihuiPaymentModeStorageKey)\n                    }\n                    const blogIdFromUrl = String(urlParams.get('blog_id') || '').trim()\n                    const blogSourceFromUrl = String(urlParams.get('source') || '').trim()\n                    if (blogIdFromUrl) {\n                        localStorage.setItem('blog_id', blogIdFromUrl)\n                        localStorage.setItem('blog_source', blogTrackingSource)\n                    } else if (blogSourceFromUrl === blogTrackingSource && getBlogTrackingId()) {\n                        localStorage.setItem('blog_source', blogTrackingSource)\n                    }\n                    applyReferralCodeByPriority()\n                    const enrollmentParam = urlParams.get('enrollment')\n                    if (enrollmentParam) {\n                        pageMode.value = 'card-success'\n                        cardSuccessEnrollment.value = enrollmentParam\n                        enrollmentIdDisplay.value = enrollmentParam\n                        await loadSuccessSummary({ enrollmentId: enrollmentParam })\n                        return\n                    }\n                    if (stepParam === '3' && requestIdFromUrl) {\n                        wechatPaymentRequestId.value = requestIdFromUrl\n                        startEasyTransferReturnFlow(requestIdFromUrl)\n                    }\n                    \/\/ let req = urlParams.get('req');\n                    \/\/ if (req) {\n                    \/\/     getUserFormAndProduct(req)\n                    \/\/ }\n                    \/\/ \u83b7\u53d6 `param` \u53c2\u6570\u7684\u503c\n                    if (showWechatPaymentOption.value && !showCardPaymentOption.value) {\n                        selectedPayType.value = 'wechat';\n                    }\n                    if (!showWechatPaymentOption.value && selectedPayType.value === 'wechat') {\n                        selectedPayType.value = 'credit';\n                    } else if (!showCardPaymentOption.value && selectedPayType.value === 'credit') {\n                        selectedPayType.value = 'wechat';\n                    }\n                    if (stepParam === '4') {\n                        pageMode.value = 'card-success';\n                        document.querySelector('.entry-content').style.background = 'none';\n                        document.querySelector('.elementor-element-populated').style.background = 'none';\n                        const legacySuccessRequestId = requestIdFromUrl || resolveLegacySuccessRequestId()\n                        if (legacySuccessRequestId) {\n                            await loadSuccessSummary({ requestId: legacySuccessRequestId })\n                        }\n                    }\n                    if (urlParams.get('isClear')) {\n                        localStorage.removeItem(\"user_form_history\");\n                    }\n                    \/\/ \u83b7\u53d6\u5b8c\u6574\u7684\u67e5\u8be2\u5b57\u7b26\u4e32\uff08\u5982 \"?name=value&age=20\"\uff09\n                    const queryString = window.location.search;\n\n                    const url_email = localStorage.getItem(\"student_email\");\n                    \/\/ \u5c1d\u8bd5\u83b7\u53d6\u7528\u6237\u4fe1\u606f\n                    const userInfoStr = localStorage.getItem(\"user_info\");\n                    let userData = {};\n                    if (userInfoStr) {\n                        try {\n                            userData = JSON.parse(userInfoStr);\n                        } catch (e) {\n                            console.error('\u89e3\u6790\u7528\u6237\u4fe1\u606f\u5931\u8d25', e);\n                        }\n                    }\n                    if (url_email) {\n                        inputDataTwo[6].value = url_email;\n                    } else if (userData && userData.email) {\n                        inputDataTwo[6].value = userData.email;\n                    } else {\n                        delete progress[4]; \/\/ \u5220\u9664\u7b2c4\u9879\n                    }\n                    if (inputDataTwo[6].value != null && inputDataTwo[6].value !== \"\") {\n                        emailExist(inputDataTwo[6].value)\n                    } else{\n                        inputDataTwo[6].value = urlParams.get('email')\n                        if (inputDataTwo[6].value) {\n                            emailExist(inputDataTwo[6].value)\n                        }\n                    }\n\n                    const storedPaymentFormData = getStoredJson(\"formData\")\n                    formDataPay.value = isPaymentReturnFlow\n                        ? storedPaymentFormData\n                        : sanitizeEnrollmentBackup(storedPaymentFormData)\n                    if (!isPaymentReturnFlow && storedPaymentFormData) {\n                        localStorage.setItem(\"formData\", JSON.stringify(formDataPay.value))\n                    }\n                    const storedStart = localStorage.getItem('coverage_start_date')\n                    const storedEnd = localStorage.getItem('coverage_end_date')\n                    const insurance_name = localStorage.getItem(\"InsuranceName\")\n                    let code = school.value;\n                    if (isOptDirectEnrollment()) {\n                        resetCoverageToMinimumPeriod(insurance_name, code)\n                    } else {\n                        applySchoolCoverageDefaults(storedStart, storedEnd, insurance_name, code)\n                        ensureCoverageDatesWithinCurrentRules()\n                    }\n                    toBrown()\n                    const phoneOriginContainer = document.querySelector(\"#PhoneinoriginDiv\")\n                    if (phoneOriginContainer) phoneOriginContainer.style.display=\"block\"\n                    getschoolNew()\n                    getStudentAge(inputDataOne[0].value)\n                    if (!hasUserStartedStepNavigation) {\n                        toggleDetails(progress[0], true)\n                    }\n                    const dateInput = document.getElementById('DateofBirth');\n                    if (dateInput) dateInput.lang = 'en-US'; \/\/ JavaScript \u5f3a\u5236\u8bbe\u7f6e\n\n                    \/\/ \u521d\u59cb\u6e32\u67d3\n                    layui.use('laydate', function() {\n                        \/\/\u4fdd\u9669\u5f00\u59cb\u65e5\u671f\n                        layui.laydate.render({\n                            elem: \"#\"+inputDataOne[0].id,\n                            lang: 'en',\n                            theme: \"#1558da\",\n                            btns: ['confirm'],\n                            min: minStartDate.value,\n                            \/\/ \u5173\u952e\uff1a\u76d1\u542c\u65e5\u671f\u9009\u62e9\u4e8b\u4ef6\n                            done: (value, date) => {\n                                \/\/ \u627e\u5230\u5bf9\u5e94\u7684 Vue \u6570\u636e\u9879\u5e76\u66f4\u65b0\n                                const item = inputDataOne.find(item => item.id === inputDataOne[0].id);\n                                if (item) {\n                                    applyCoverageStartDateSelection(value)\n                                    getStudentAge(value)\n                                }\n                            }\n                        });\n                        layui.laydate.render({\n                            elem: \"#\"+inputDataTwo[4].id,\n                            lang: 'en',\n                            theme: \"#1558da\",\n                            btns: ['confirm'],\n                            min: maxDate.value,\n                            max: minDate.value,\n                            \/\/ \u5173\u952e\uff1a\u76d1\u542c\u65e5\u671f\u9009\u62e9\u4e8b\u4ef6\n                            done: (value, date) => {\n                                \/\/ \u627e\u5230\u5bf9\u5e94\u7684 Vue \u6570\u636e\u9879\u5e76\u66f4\u65b0\n                                const item = inputDataTwo.find(item => item.id === inputDataTwo[4].id);\n                                if (item) {\n                                    \/\/ console.log('\u8fdb\u95e8\u6765\u4e86')\n                                    inputDataTwo[4].value = value; \/\/ \u540c\u6b65\u5230 Vue \u7684 v-model\n                                    getStudentAge(inputDataOne[0].value)\n                                    birthChange(inputDataTwo[4].type)\n                                }\n                            }\n                        });\n                        \/\/\u7b7e\u8bc1startDate\n                        layui.laydate.render({\n                            elem: \"#\"+inputDataSix[0].id,\n                            lang: 'en',\n                            theme: \"#1558da\",\n                            btns: ['confirm'],\n                            \/\/ \u5173\u952e\uff1a\u76d1\u542c\u65e5\u671f\u9009\u62e9\u4e8b\u4ef6\n                            done: (value, date) => {\n                                \/\/ \u627e\u5230\u5bf9\u5e94\u7684 Vue \u6570\u636e\u9879\u5e76\u66f4\u65b0\n                                const item = inputDataSix.find(item => item.id === inputDataSix[0].id);\n                                if (item) {\n                                    inputDataSix[0].value = value; \/\/ \u540c\u6b65\u5230 Vue \u7684 v-model\n                                }\n                            }\n                        });\n                        \/\/\u7b7e\u8bc1endDate\n                        layui.laydate.render({\n                            elem: \"#\"+inputDataSix[1].id,\n                            lang: 'en',\n                            theme: \"#1558da\",\n                            btns: ['confirm'],\n                            \/\/ \u5173\u952e\uff1a\u76d1\u542c\u65e5\u671f\u9009\u62e9\u4e8b\u4ef6\n                            done: (value, date) => {\n                                \/\/ \u627e\u5230\u5bf9\u5e94\u7684 Vue \u6570\u636e\u9879\u5e76\u66f4\u65b0\n                                const item = inputDataSix.find(item => item.id === inputDataSix[1].id);\n                                if (item) {\n                                    inputDataSix[1].value = value; \/\/ \u540c\u6b65\u5230 Vue \u7684 v-model\n                                }\n                            }\n                        });\n                        \/\/graduateDate\n                        layui.laydate.render({\n                            elem: \"#graduateDate\",\n                            lang: 'en',\n                            theme: \"#1558da\",\n                            btns: ['confirm'],\n                            \/\/ \u5173\u952e\uff1a\u76d1\u542c\u65e5\u671f\u9009\u62e9\u4e8b\u4ef6\n                            done: (value, date) => {\n                                \/\/ \u627e\u5230\u5bf9\u5e94\u7684 Vue \u6570\u636e\u9879\u5e76\u66f4\u65b0\n                                graduateDate.value = value; \/\/ \u540c\u6b65\u5230 Vue \u7684 v-model\n                                \/\/ graduateDateChange()\n                            }\n                        });\n                    });\n                    \/\/\u6ca1\u6709req\u8bf7\u6c42\u7684\u65f6\u5019\u6267\u884c\u8fd9\u4e2a\n                    if (!req && !isPaymentReturnFlow) {\n                        if (remoteDraftResumeData) {\n                            persistRemoteEnrollmentDraft()\n                        }\n                        let userHistory = remoteDraftResumeData\n                            ? null\n                            : getStoredJson(\"user_form_history\");\n                        dataFill(userHistory);\n                        applyPrefilledStudentDob()\n                        applyEnrollmentDraft()\n                        await applyNavigationSchool()\n                        ensureCoverageDatesWithinCurrentRules()\n                        \/\/ console.log('\u7528\u6237\u586b\u5199\u5386\u53f2', userHistory)\n                    }\n                    fetchSchoolCheckoutSettings()\n                    requestInitialQuote()\n                    checkMobileDevice()\n                    schoolExist()\n                    await openRemoteDraftContinuation()\n                });\n            })\n            onBeforeUnmount(() => {\n                window.removeEventListener('pagehide', resetTransientCheckoutUi)\n                window.removeEventListener('pageshow', resetTransientCheckoutUi)\n            })\n\n            const toBrown=()=>{\n                document.addEventListener('DOMContentLoaded', () => {\n                    \/\/ \u83b7\u53d6\u6240\u6709 input \u548c select \u5143\u7d20\n                    const inputFields = document.querySelectorAll('input');\n                    const selectFields = document.querySelectorAll('select');\n\n                    \/\/ \u4e3a\u6bcf\u4e2a input \u5143\u7d20\u6dfb\u52a0\u539f\u59cb\u503c\n                    inputFields.forEach(input => {\n                        input.dataset.originalValue = input.value; \/\/ \u4fdd\u5b58\u539f\u59cb\u503c\n                    });\n\n                    \/\/ \u4e3a\u6bcf\u4e2a select \u5143\u7d20\u6dfb\u52a0\u539f\u59cb\u503c\n                    selectFields.forEach(select => {\n                        select.dataset.originalValue = select.value; \/\/ \u4fdd\u5b58\u539f\u59cb\u503c\n                    });\n\n                    \/\/ \u5904\u7406\u5931\u53bb\u7126\u70b9\u4e8b\u4ef6\n                    function handleBlur(event) {\n                        const element = event.target;\n\n                        \/\/ \u68c0\u67e5\u662f\u5426\u4e3a input \u6216 select\n                        if ((element.tagName === 'INPUT' || element.tagName === 'SELECT') && element.value !== '' && element.value !== element.dataset.originalValue) {\n                            element.style.backgroundColor = '#F9FAFB'; \/\/ \u5982\u679c\u503c\u4e0d\u4e3a\u7a7a\u5e76\u4e14\u5df2\u66f4\u6539\uff0c\u80cc\u666f\u53d8\u7070\n                        } else {\n                            element.style.backgroundColor = ''; \/\/ \u6062\u590d\u539f\u6765\u7684\u80cc\u666f\u989c\u8272\n                        }\n                    }\n\n                    \/\/ \u4e3a\u6bcf\u4e2a input \u548c select \u5143\u7d20\u7ed1\u5b9a\u5931\u53bb\u7126\u70b9\u4e8b\u4ef6\n                    inputFields.forEach(input => {\n                        input.addEventListener('change', handleBlur);\n                    });\n\n                    selectFields.forEach(select => {\n                        select.addEventListener('change', handleBlur);\n                    });\n\n                });\n\n            }\n            \/\/ \u8fd4\u56de\u9996\u9875\n            function redirectToHome() {\n                window.location.href = window.location.origin;\n            }\n            const agreement=ref(true)\n            const getStepSnapshot = (stepName) => {\n                const snapshots = {\n                    [progress[0]]: () => ({\n                        dates: inputDataOne.map((item) => item.value),\n                        selectedMonths: selectedMonths.value,\n                        referralCode: referralCode.value\n                    }),\n                    [progress[1]]: () => ({\n                        personal: inputDataTwo.map((item) => item.value),\n                        visaType: visaType.value,\n                        visaDates: inputDataSix.map((item) => item.value),\n                        spouseSelected: SpouseyesOrNo.value,\n                        spouse: {\n                            firstName: spouseMember.firstName,\n                            middleName: spouseMember.middleName,\n                            lastName: spouseMember.lastName,\n                            dob: spouseMember.dob\n                        },\n                        dependents: dependentMembers.value.map((dependent) => ({\n                            firstName: dependent.firstName,\n                            middleName: dependent.middleName,\n                            lastName: dependent.lastName,\n                            dob: dependent.dob\n                        }))\n                    }),\n                    [progress[2]]: () => ({\n                        school: school.value,\n                        studentID: studentID.value,\n                        graduateDate: graduateDate.value\n                    }),\n                    [progress[3]]: () => ({\n                        homeAddress: homeData.map((item) => item.value),\n                        homeState: HomeState.value,\n                        destinationAddress: destinationData.map((item) => item.value),\n                        destinationState: dsState.value,\n                        phones: inputDataThree.map((item) => item.value),\n                        noAddress: noAddress.value,\n                        noPhone: noPhone.value\n                    }),\n                    [progress[4]]: () => ({\n                        password: password.value,\n                        confirmPassword: confirmPassword.value\n                    }),\n                    [progress[5]]: () => ({\n                        selectedPayType: selectedPayType.value,\n                        termsChecked: termsChecked.value,\n                        agreement: agreement.value\n                    })\n                }\n                const snapshotFactory = snapshots[stepName]\n                return snapshotFactory ? JSON.stringify(snapshotFactory()) : ''\n            }\n            const completeStepStatus = (stepName) => {\n                if (!stepName || !Object.prototype.hasOwnProperty.call(stepValidationState, stepName)) return\n                stepValidationState[stepName] = 'complete'\n                stepValidationSnapshots[stepName] = getStepSnapshot(stepName)\n            }\n            const markCompletedStepForReview = (stepName) => {\n                if (stepValidationState[stepName] !== 'complete') return\n                const completedSnapshot = stepValidationSnapshots[stepName]\n                if (completedSnapshot && completedSnapshot !== getStepSnapshot(stepName)) {\n                    stepValidationState[stepName] = 'review'\n                }\n            }\n            const hasAddressStepActivity = () => Boolean(\n                homeData.some((item) => normalizeTextValue(item.value))\n                || destinationData.some((item) => normalizeTextValue(item.value))\n                || normalizeTextValue(HomeState.value)\n                || normalizeTextValue(dsState.value)\n                || inputDataThree.some((item) => normalizeTextValue(item.value))\n            )\n            const getEffectiveStepState = (stepName) => {\n                const state = stepValidationState[stepName]\n                if (state === 'default' && stepName === progress[3] && hasAddressStepActivity()) {\n                    return 'review'\n                }\n                return state\n            }\n            const getStepStatusText = (stepName) => {\n                const state = getEffectiveStepState(stepName)\n                if (state === 'complete') {\n                    return lang === 'zh' ? '\u5df2\u5b8c\u6210' : 'Completed'\n                }\n                if (state === 'review') {\n                    return lang === 'zh' ? '\u9700\u8981\u68c0\u67e5' : 'Needs review'\n                }\n                return lang === 'zh' ? '\u672a\u5f00\u59cb' : 'Not started'\n            }\n            const getStepStatusClass = (stepName) => {\n                const state = getEffectiveStepState(stepName)\n                return {\n                    'us-v4-step-chip--complete': state === 'complete',\n                    'us-v4-step-chip--review': state === 'review',\n                    'us-v4-step-chip--pending': state === 'default'\n                }\n            }\n            const getStepOpenStatusText = (stepName) => {\n                const state = getEffectiveStepState(stepName)\n                if (state === 'complete') {\n                    return lang === 'zh' ? '\u5df2\u5b8c\u6210 \u00b7 \u6b63\u5728\u7f16\u8f91' : 'Completed \u00b7 editing'\n                }\n                if (state === 'review') {\n                    return lang === 'zh' ? '\u9700\u8981\u68c0\u67e5' : 'Needs review'\n                }\n                return lang === 'zh' ? '\u5f53\u524d\u586b\u5199' : 'Current section'\n            }\n            const getStepOpenStatusClass = (stepName) => {\n                const state = getEffectiveStepState(stepName)\n                return {\n                    'us-v4-card-status--complete': state === 'complete',\n                    'us-v4-card-status--review': state === 'review'\n                }\n            }\n            watch(\n                () => [\n                    inputDataOne.map((item) => item.value),\n                    inputDataTwo.map((item) => item.value),\n                    inputDataSix.map((item) => item.value),\n                    inputDataThree.map((item) => item.value),\n                    homeData.map((item) => item.value),\n                    destinationData.map((item) => item.value),\n                    school.value,\n                    studentID.value,\n                    graduateDate.value,\n                    HomeState.value,\n                    dsState.value,\n                    visaType.value,\n                    SpouseyesOrNo.value,\n                    {\n                        firstName: spouseMember.firstName,\n                        middleName: spouseMember.middleName,\n                        lastName: spouseMember.lastName,\n                        dob: spouseMember.dob\n                    },\n                    dependentMembers.value.map((dependent) => ({\n                        firstName: dependent.firstName,\n                        middleName: dependent.middleName,\n                        lastName: dependent.lastName,\n                        dob: dependent.dob\n                    })),\n                    password.value,\n                    confirmPassword.value,\n                    selectedPayType.value,\n                    termsChecked.value,\n                    agreement.value,\n                    referralCode.value,\n                    noAddress.value,\n                    noPhone.value\n                ],\n                () => {\n                    Object.keys(stepValidationState).forEach(markCompletedStepForReview)\n                },\n                { deep: true }\n            )\n            \/\/ \u4fdd\u9669\u8ba1\u5212\u7684\u7b80\u79f0\u6570\u636e\n            const insuranceNameAndCode=[\n                { name1: \"Cromo\",name2: \"Cromo\", code: \"WACROMO\" },\n                { name1: \"Cromo Premier\",  name2: \"Cromo Premier\", code: \"WACROMOPREMIER\" },\n                { name1: \"J1 Scholar Premier\",  name2: \"J1 Scholar Premier\", code: \"WASCHOLARPREMIER\" },\n                { name1: \"J1 Scholar\",  name2: \"J1 Scholar\", code: \"WASCHOLAR\" },\n                { name1: \"USC World Elite 250\", name2: \"USC Elite 250\", code: \"USCWE250\" },\n                { name1: \"USC World Elite 450\", name2: \"USC Elite 450\", aliases: [\"USC450\"], code: \"USCWE450\" },\n                { name1: \"USC World Elite 800\", name2: \"USC Elite 800\", code: \"USCWE800\" },\n                { name1: \"USC World Elite Plus\", name2: \"USC Elite Plus\", code: \"USCWEPLUS\" },\n                { name1: \"USF World Elite 450\", name2: \"USF World 450\", code: \"USFWE450\" },\n                { name1: \"WellAway Royal 100\", name2: \"Royal 100\", code: \"WR100\" },\n                { name1: \"WellAway Royal 1500\", name2: \"Royal 1500\", code: \"WR1500\" },\n                { name1: \"WellAway Royal 500\", name2: \"Royal 500\", code: \"WR500\" },\n                { name1: \"WellAway Royal Plus\", name2: \"Royal Plus\", code: \"WRPLUS\" },\n                { name1: \"Royal UNC 1500\", name2: \"Royal UNC 1500\", code: \"WRR1500\" },\n                { name1: \"Royal UNC 500\", name2: \"Royal UNC 500\", code: \"WRR500\" },\n                { name1: \"Royal UNC 100\", name2: \"Royal UNC 100\", code: \"WRR100\" },\n                { name1: \"Royal UNC Plus\", name2: \"Royal UNC Plus\", code: \"WRRPLUS\" },\n                { name1: \"WellAway World Elite 250\", name2: \"World Elite 250\", code: \"WWE250\" },\n                { name1: \"WellAway World Elite 450\", name2: \"World Elite 450\", code: \"WWE450\" },\n                { name1: \"WellAway World Elite 800\", name2: \"World Elite 800\", code: \"WWE800\" },\n                { name1: \"WellAway World Elite Plus\", name2: \"World Elite Plus\", code: \"WWE0PLUS\"},\n                { name1: \"USC Scholar 100\", name2: \"USC Scholar 100\", code: \"USCSCHOLAR100\" },\n                { name1: \"USC Scholar 500\", name2: \"USC Scholar 500\", code: \"USCSCHOLAR500\" },\n                { name1: \"OPT choice\", name2: \"OPT\", code: \"WAOPT\" },\n                { name1: \"OPT Premier\", name2: \"OPT Premier\", code: \"WAOPTPREMIER\" },\n            ]\n            const normalizeInsurancePlanName = (value) => String(value || '')\n                .replace(\/[^A-Za-z0-9]+\/g, '')\n                .toUpperCase()\n            const insurancePlanByProductId = new Map([\n                ['17', { name1: \"USC World Elite 450\", name2: \"USC Elite 450\", aliases: [\"USC450\"], code: \"USCWE450\" }],\n                ['38', { name1: \"Royal UNC 1500\", name2: \"Royal UNC 1500\", code: \"WRR1500\" }],\n                ['39', { name1: \"Royal UNC 500\", name2: \"Royal UNC 500\", code: \"WRR500\" }],\n                ['40', { name1: \"Royal UNC 100\", name2: \"Royal UNC 100\", code: \"WRR100\" }],\n                ['41', { name1: \"Royal UNC Plus\", name2: \"Royal UNC Plus\", code: \"WRRPLUS\" }]\n            ])\n            const getSelectedInsurancePlan = () => {\n                const currentSelectedPlanId = String(\n                    selectedPlanId.value\n                    || localStorage.getItem('selected_plan_id')\n                    || ''\n                ).trim()\n                const rawInsuranceName = String(\n                    product.value\n                    || selectedPlanName.value\n                    || localStorage.getItem(\"InsuranceName\")\n                    || localStorage.getItem('selected_plan_name')\n                    || ''\n                ).trim()\n                const normalizedInsuranceName = normalizeInsurancePlanName(rawInsuranceName)\n                const matchedPlan = normalizedInsuranceName\n                    ? insuranceNameAndCode.find((plan) => {\n                        const planNames = [plan.name1, plan.name2, ...(Array.isArray(plan.aliases) ? plan.aliases : [])]\n                        return planNames.some((planName) => normalizeInsurancePlanName(planName) === normalizedInsuranceName)\n                    })\n                    : null\n                if (matchedPlan) return matchedPlan\n\n                const planById = insurancePlanByProductId.get(currentSelectedPlanId)\n                const isPlanIdCompatible = Boolean(planById && (\n                    !normalizedInsuranceName\n                    || [planById.name1, planById.name2, ...(Array.isArray(planById.aliases) ? planById.aliases : [])]\n                        .map(normalizeInsurancePlanName)\n                        .some((planName) => normalizedInsuranceName === planName || normalizedInsuranceName.endsWith(planName))\n                ))\n                if (isPlanIdCompatible) return planById\n\n                const storedPlanCode = String(\n                    selectedPlanCode.value\n                    || localStorage.getItem('selected_plan_code')\n                    || ''\n                ).trim()\n                if (!storedPlanCode) return null\n\n                return {\n                    name1: rawInsuranceName || String(selectedPlanName.value || localStorage.getItem('selected_plan_name') || '').trim(),\n                    name2: rawInsuranceName,\n                    code: storedPlanCode\n                }\n            }\n            const applyWellAwayEnrollmentRouting = (payload = {}) => {\n                const selectedPlan = getSelectedInsurancePlan()\n                const planName = normalizeInsurancePlanName(\n                    payload.planName\n                    || selectedPlan?.name1\n                    || localStorage.getItem(\"InsuranceName\")\n                    || ''\n                )\n                const isRoyalUnc = planName.includes('ROYALUNC')\n\n                payload.groupId = isRoyalUnc ? '136' : (payload.groupId || '130')\n                payload.agentNumber = isRoyalUnc ? 'S15BM0001-001' : (payload.agentNumber || 'S23HK755')\n                return payload\n            }\n            const getStudentAge = (startDate) => {\n                const ageInput = document.querySelector(\"#DateofBirth\");\n                const storedAgeRanges = getStoredJson(\"age_ranges\")\n                const ageRanges = Array.isArray(storedAgeRanges) ? storedAgeRanges : []\n\n                if (ageInput && ageRanges.length) {\n                    \/\/ \u76d1\u542c\u5e74\u9f84\u8f93\u5165\u6846\u7684\u53d8\u5316\n                    const birthDate = new Date(inputDataTwo[4].value); \/\/ \u83b7\u53d6\u51fa\u751f\u65e5\u671f\n                    const currentDate = new Date(); \/\/ \u83b7\u53d6\u5f53\u524d\u65e5\u671f\n                    let insuraneStartData = new Date(startDate)\n                    \/\/ console.log(currentDate);\n                    \/\/ \u8ba1\u7b97\u5e74\u9f84\n                    let age = insuraneStartData.getFullYear() - birthDate.getFullYear();\n                    const monthDifference = insuraneStartData.getMonth() - birthDate.getMonth();\n\n                    \/\/ \u5982\u679c\u5f53\u524d\u6708\u4efd\u5c0f\u4e8e\u4fdd\u9669\u5f00\u59cb\u6708\u4efd\uff0c\u51cf\u53bb\u4e00\u5e74\n                    if (monthDifference < 0 || (monthDifference === 0 && insuraneStartData.getDate() < birthDate.getDate())) {\n                        age--;\n                    }\n                    \/\/ let tempCurrent = currentDate\n                    \/\/ let tempBirth = birthDate\n                    \/\/ tempCurrent.setFullYear(2000);\n                    \/\/ tempBirth.setFullYear(2000);\n                    \/\/ let tempinsuraneStartData = insuraneStartData\n                    \/\/ tempinsuraneStartData.setFullYear(2000);\n                    \/\/ \/\/ console.log('\u6d4b\u8bd51', tempinsuraneStartData)\n                    \/\/ \/\/ console.log('\u6d4b\u8bd53', birthDate)\n                    \/\/ \/\/ console.log('Ces 5', tempinsuraneStartData)\n                    \/\/ \/\/ console.log(tempCurrent < tempBirth);\n                    \/\/ if (tempinsuraneStartData >= tempBirth && tempBirth >= tempCurrent) {\n                    \/\/     console.log('\u6267\u884c+1')\n                    \/\/     age++;\n                    \/\/ }\n                    \/\/ \u5224\u65ad\u5e74\u9f84\u662f\u5426\u6709\u6548\n                    if (!isNaN(age)) {\n                        \/\/ \u904d\u5386\u5e74\u9f84\u8303\u56f4\u6570\u636e\n                        ageRanges.forEach(item => {\n                            \/\/ \u5982\u679c\u5e74\u9f84\u5728\u5f53\u524d\u8303\u56f4\u5185\n                            if (age >= item.age_start && age <= item.age_end) {\n                                \/\/ \u66f4\u65b0 localStorage \u4e2d\u7684\u4ef7\u683c\n                                localStorage.setItem(\"monthly_price\", item.price);\n                            }\n                        });\n                    } else {\n                    }\n                }\n            };\n            \/\/ \u83b7\u53d6\u4eca\u5e747\u67081\u65e5\n            const getDefaultStartDate = () => {\n                const now = new Date()\n                return `${now.getFullYear()}-07-01`\n            }\n            const enforceMinimumCoveragePeriod = () => {\n                const insuranceName = getCurrentInsuranceName()\n                if (selectedMonths.value === SCHOOL_REQUIRED_PERIOD_LABEL) return false\n                if (selectedMonths.value === NYU_LLM_PERIOD_VALUE) {\n                    if (canUseNyuLlmPeriod.value) return false\n                    selectedMonths.value = normalizeCoverageMonthsToMinimum(12, insuranceName, school.value)\n                    return true\n                }\n                const normalizedMonths = normalizeCoverageMonthsToMinimum(selectedMonths.value, insuranceName, school.value)\n                if (normalizedMonths !== Number(selectedMonths.value)) {\n                    selectedMonths.value = normalizedMonths\n                    return true\n                }\n                return false\n            }\n            \/\/ \u8bbe\u7f6e\u6708\u9009\u9879\n            const monthOptions = computed(() => {\n                if (isOptDirectEnrollment()) {\n                    const options = []\n                    for (let i = 5; i <= 12; i++) options.push(i)\n                    return options\n                }\n                if (isFixed12Month.value) return [12]\n                let insurance_name = getCurrentInsuranceName()\n                const isPlusPlan = String(insurance_name || '').toLowerCase().includes('plus')\n                const isWorldEliteMinimum12 = isWorldEliteMinimum12Plan(insurance_name)\n                const isRoyalNonPlus = isRoyal(insurance_name) && !isRoyalPlus(insurance_name)\n                let code = school.value\n                const storedStart = localStorage.getItem('coverage_start_date')\n                const storedEnd = localStorage.getItem('coverage_end_date')\n                const canUseSchoolRequiredPeriod = canUsePreferredCoveragePeriodDatesForPlan(storedStart, storedEnd, insurance_name, code)\n                const canUseNyuLlm = canUseNyuLlmPeriod.value\n                const options = []\n                if (isWorldEliteMinimum12) {\n                    if (canUseSchoolRequiredPeriod) {\n                        options.push(SCHOOL_REQUIRED_PERIOD_LABEL)\n                    }\n                    options.push(12)\n                    return options\n                }\n                if (isPlusPlan) {\n                    if (canUseSchoolRequiredPeriod) {\n                        options.push(SCHOOL_REQUIRED_PERIOD_LABEL)\n                    }\n                    options.push(12)\n                    return options\n                }\n                if (isRoyalNonPlus) {\n                    if (canUseNyuLlm) {\n                        options.push(NYU_LLM_PERIOD_VALUE)\n                    }\n                    if (canUseSchoolRequiredPeriod) {\n                        options.push(SCHOOL_REQUIRED_PERIOD_LABEL)\n                    }\n                    for (let i = 5; i <= 12; i++) {\n                        options.push(i)\n                    }\n                    return options\n                }\n                if (canUseNyuLlm) {\n                    options.push(NYU_LLM_PERIOD_VALUE)\n                }\n                if (canUseSchoolRequiredPeriod) {\n                    options.push(SCHOOL_REQUIRED_PERIOD_LABEL)\n                    if (isJ1ScholarSeries(insurance_name)) {\n                        for (let i = 5; i <= 12; i++) {\n                            options.push(i)\n                        }\n                    } else {\n                        options.push(12)\n                    }\n                } else if (is6MonthProduct(insurance_name) && !code.includes('UCB')) {\n                    for (let i = 6; i <= 12; i++) {\n                        options.push(i)\n                    }\n                } else {\n                    for (let i = 5; i <= 12; i++) {\n                        options.push(i)\n                    }\n                }\n\n                return options\n            })\n            const getAutoPeriodAfterSchoolStartChange = () => {\n                const numericOptions = monthOptions.value\n                    .map((option) => Number(option))\n                    .filter((option) => Number.isFinite(option) && option > 0)\n                const insuranceName = getCurrentInsuranceName()\n                const isPlusPlan = String(insuranceName || '').toLowerCase().includes('plus')\n                if (isWorldEliteMinimum12Plan(insuranceName) || isPlusPlan) return 12\n                if (numericOptions.includes(6)) return 6\n                if (numericOptions.includes(12)) return 12\n                return numericOptions[0] || 12\n            }\n            const shouldLeaveSchoolRequiredPeriodForStart = (startDate) => {\n                if (selectedMonths.value !== SCHOOL_REQUIRED_PERIOD_LABEL) return false\n                if (!isSchoolRequiredStartUnlocked.value) return false\n                if (!isValidCoverageDate(startDate) || isCoverageStartBeforeMinStart(startDate)) return false\n                const storedStart = localStorage.getItem('coverage_start_date')\n                const storedEnd = localStorage.getItem('coverage_end_date')\n                if (!canUsePreferredCoveragePeriodDatesForPlan(storedStart, storedEnd)) return false\n                return formatDate(startDate) !== formatDate(storedStart)\n            }\n            const applyCoverageStartDateSelection = (value) => {\n                if (selectedMonths.value === NYU_LLM_PERIOD_VALUE) {\n                    applyNyuLlmCoverageDates()\n                    updateEndDate()\n                    return\n                }\n                if (shouldLeaveSchoolRequiredPeriodForStart(value)) {\n                    isCoverageFromSchool.value = false\n                    selectedMonths.value = getAutoPeriodAfterSchoolStartChange()\n                }\n                inputDataOne[0].value = value\n                updateEndDate()\n            }\n            const validateEditableCoverageEndDate = (showMessage = false) => {\n                if (!allowCoverageEndDateEdit.value) return true\n                const startDate = inputDataOne[0].value\n                const endDate = inputDataOne[1].value\n                if (isCoverageEndDateWithinPlanRange(startDate, endDate)) return true\n\n                const isTooShort = !isValidCoverageDate(endDate)\n                    || dayjs(formatDate(endDate)).isBefore(dayjs(minimumCoverageEndDate.value), 'day')\n                inputDataOne[1].value = isTooShort\n                    ? minimumCoverageEndDate.value\n                    : maximumCoverageEndDate.value\n\n                if (showMessage) {\n                    const minMonths = getMinimumCoverageMonths(getCurrentInsuranceName(), school.value)\n                    const message = isTooShort\n                        ? (lang === 'zh'\n                            ? `\u4fdd\u969c\u671f\u81f3\u5c11\u9700\u8981 ${minMonths} \u4e2a\u6708\u3002`\n                            : `Coverage must be at least ${minMonths} months.`)\n                        : (lang === 'zh'\n                            ? '\u4fdd\u969c\u671f\u6700\u957f\u4e3a 12 \u4e2a\u6708\u3002'\n                            : 'Coverage cannot exceed 12 months.')\n                    scrollToElement(inputDataOne[1].id, message)\n                }\n                return false\n            }\n            const handleCoverageEndDateChange = () => {\n                if (!allowCoverageEndDateEdit.value) return false\n                const isValid = validateEditableCoverageEndDate(true)\n                isCoverageFromSchool.value = false\n                const calculatedMonths = calculateMonthDifference2(inputDataOne[0].value, inputDataOne[1].value)\n                selectedMonths.value = normalizeCoverageMonthsToMinimum(\n                    Math.min(12, calculatedMonths),\n                    getCurrentInsuranceName(),\n                    school.value\n                )\n                endDefault.value = inputDataOne[1].value\n                requestQuote()\n                return isValid\n            }\n            \/\/ \u6839\u636e\u6708\u4efd\u548c\u5f00\u59cb\u65e5\u671f\u66f4\u65b0\u7ed3\u675f\u65e5\u671f\n            const updateEndDate = () => {\n                \/\/ let insurance_name = localStorage.getItem(\"InsuranceName\")\n                \/\/ let code = school.value\n                enforceMinimumCoveragePeriod()\n                if (selectedMonths.value === NYU_LLM_PERIOD_VALUE) {\n                    if (!canUseNyuLlmPeriod.value) {\n                        resetCoverageToMinimumPeriod()\n                    } else {\n                        applyNyuLlmCoverageDates()\n                    }\n                    requestQuote();\n                } else if (selectedMonths.value === SCHOOL_REQUIRED_PERIOD_LABEL) {\n                    const storedStart = localStorage.getItem('coverage_start_date')\n                    const storedEnd = localStorage.getItem('coverage_end_date')\n                    const insuranceName = getCurrentInsuranceName()\n                    const code = school.value\n                    if (!canUsePreferredCoveragePeriodDatesForPlan(storedStart, storedEnd, insuranceName, code)) {\n                        resetCoverageToMinimumPeriod()\n                        requestQuote();\n                        return\n                    }\n                    inputDataOne[0].value = formatDate(storedStart)\n                    inputDataOne[1].value = formatDate(storedEnd)\n                    requestQuote();\n                } else if (selectedMonths.value) {\n                    const start = inputDataOne[0].value\n                    if (start && selectedMonths.value) {\n                        const newEnd = dayjs(start).add(selectedMonths.value, 'month').subtract(1, 'day').format('YYYY-MM-DD')\n                        inputDataOne[1].value = newEnd\n                    }\n                    requestQuote();\n                } else {\n                    requestQuote();\n                }\n            }\n            const guide=(link)=>{\n                window.location.href=link\n            }\n            \/\/ \u652f\u4ed8\u51fd\u6570\uff08\u6839\u636e\u4e0d\u540c\u7684\u652f\u4ed8\u65b9\u5f0f\u8c03\u7528\u4e0d\u540c\u903b\u8f91\uff09\n            const handleBuy = async () => {\n                if (isPaymentProcessing.value) return false;\n                if (showWechatPaymentOption.value && !showCardPaymentOption.value) {\n                    selectedPayType.value = 'wechat'\n                } else if (!showWechatPaymentOption.value && selectedPayType.value === 'wechat') {\n                    selectedPayType.value = 'credit'\n                } else if (!showCardPaymentOption.value && selectedPayType.value === 'credit') {\n                    selectedPayType.value = 'wechat'\n                }\n                if (isYisihuiReviewMode.value) {\n                    const confirmed = window.confirm('\u786e\u8ba4\u63d0\u4ea4\u5417\uff1f\u63d0\u4ea4\u540e\u5c06\u76f4\u63a5\u8fdb\u5165 GGS \u5ba1\u6838\u3002')\n                    if (!confirmed) return false\n                    try {\n                        return await BuyPlan()\n                    } catch (error) {\n                        console.error('Enrollment submission failed:', error)\n                        setCardCheckoutProcessing(false)\n                        showErrorMessage('Enrollment submission failed. Please check your information and try again.')\n                        return false\n                    }\n                }\n                if (selectedPayType.value === 'credit') {\n                    try {\n                        return await BuyPlan()\n                    } catch (error) {\n                        console.error('Card checkout failed:', error)\n                        setCardCheckoutProcessing(false)\n                        showErrorMessage('Card checkout failed. Please check your information and try again.')\n                        return false\n                    }\n                } else if (selectedPayType.value === 'wechat') {\n                    return await prepareWechatPayment() \/\/ \u5fae\u4fe1\u652f\u4ed8\u903b\u8f91\uff1a\u5148\u622a\u56fe\uff0c\u518d\u5f00\u5f39\u7a97\n                } else {\n                    showErrorMessage('Please select a payment method.')\n                    return false\n                }\n            };\n            window.__ggsHandleBuy = handleBuy\n            window.__ggsOpenWechatPaymentModal = openWechatPaymentModal\n            window.__ggsHiddenWechatPaymentModal = hiddenModel\n            const changeNation = (event) => {\n                \/\/ \u5982\u679c\u586b\u5199\u4e86\u56fd\u7c4d\uff0c\u5219\u5339\u914d\u5bf9\u5e94\u7684\u5730\u533a\n                if (inputDataTwo[5].value) {\n                    code_verify(inputDataTwo[5].value)\n                }\n                if (!showWechatPaymentOption.value && selectedPayType.value === 'wechat') {\n                    selectedPayType.value = 'credit'\n                } else if (!showCardPaymentOption.value && selectedPayType.value === 'credit') {\n                    selectedPayType.value = 'wechat'\n                }\n            };\n            const usStateChange = (event) => {\n                \/\/ nextForms(nowForm.value)\n                dsState.value = event.target.value;\n            };\n            \/\/\u68c0\u67e5\u53c2\u6570\n            \/\/ 0: 'Insurance Information',\n            \/\/     1: 'Personal information',\n            \/\/     2: 'School information',\n            \/\/     3: 'address',\n            \/\/     4: 'Create an account',\n            \/\/     5: 'Payment Option',\n            \/\/     6: 'Accept the Terms'\n            const checkForms = async () => {\n                if (isConfirmChecking.value || isPaymentProcessing.value) return false\n                sanitizeAddressCollection()\n                \/\/ console.log('\u5bc6\u7801', password.value)\n                \/\/ console.log('\u5bc6\u78012', confirmPassword.value)\n                const normalizedReferralCode = String(referralCode.value || '').trim()\n                referralCode.value = normalizedReferralCode\n                if (normalizedReferralCode) {\n                    const ownReferralCode = String(EmailCode.value || '').trim()\n                    if (ownReferralCode && ownReferralCode == normalizedReferralCode) {\n                        toggleDetails(progress[0])\n                        scrollToElement('referralCode',\"Cannot use own code\" );\n                        return false\n                    }\n                }\n                if (enforceMinimumCoveragePeriod()) {\n                    updateEndDate()\n                }\n                if (!validateEditableCoverageEndDate(true)) {\n                    toggleDetails(progress[0], true)\n                    return false\n                }\n\n                \/\/Personal information\n                if (isEmpty(inputDataTwo[0].value, 'First name')) {\n                    toggleDetails(progress[1])\n                    scrollToElement(inputDataTwo[0].id,'First name is required !');\n                    return false\n                }\n                if (isEmpty(inputDataTwo[2].value, 'Last name')) {\n                    toggleDetails(progress[1])\n                    scrollToElement(inputDataTwo[2].id,'Last name is required !');\n                    return false\n                }\n                if (isEmpty(inputDataTwo[3].value, 'Gender')) {\n                    toggleDetails(progress[1])\n                    scrollToElement(inputDataTwo[3].id,'Gender is required !');\n                    return false\n                }\n                if (isEmpty(inputDataTwo[4].value, 'Date of birth')) {\n                    toggleDetails(progress[1])\n                    scrollToElement(inputDataTwo[4].id,'Date of birth is required !');\n                    return false\n                }\n                if (inputDataOne[0].value, inputDataTwo[4].value) {\n                    getStudentAge(inputDataOne[0].value)\n                    birthChange(inputDataTwo[4].type)\n                }\n\n                if (isEmpty(inputDataTwo[5].value, 'Nationality')) {\n                    toggleDetails(progress[1])\n                    scrollToElement(inputDataTwo[5].id,'Nationality is required !');\n                    return false\n                }\n                if (isEmpty(inputDataTwo[6].value, 'Email')) {\n                    toggleDetails(progress[1])\n                    scrollToElement(inputDataTwo[6].id,'Email is required !');\n                    return false\n                }\n                if (isEmpty(inputDataTwo[7].value, 'Passport')) {\n                    toggleDetails(progress[1])\n                    scrollToElement(inputDataTwo[7].id,'Passport is required !');\n                    return false\n                }\n                if (isEmpty(inputDataThree[0].value, 'Phone in origin')) {\n                    toggleDetails(progress[3])\n                    scrollToElement(inputDataThree[0].id,'Phone in origin is required !');\n                    return false\n                }\n                if (isEmpty(inputDataThree[1].value, 'Phone in destination')) {\n                    toggleDetails(progress[3])\n                    scrollToElement(inputDataThree[1].id,'Phone in destination is required !');\n                    return false\n                }\n                if (isEmpty(visaType.value, 'Policyholder.Visa')) {\n                    toggleDetails(progress[1])\n                    scrollToElement('Policyholder_Visa','Visa is required !');\n                    return false\n                }\n                if (isEmpty(inputDataSix[0].value, 'Visa start date')) {\n                    toggleDetails(progress[1])\n                    scrollToElement(inputDataSix[0].id,'Visa start date is required !');\n                    return false\n                }\n                if (isEmpty(inputDataSix[1].value, 'Visa end date')) {\n                    toggleDetails(progress[1])\n                    scrollToElement(inputDataSix[1].id,'Visa end date is required !');\n                    return false\n                }\n                \/\/ 4. \u7535\u8bdd\u9a8c\u8bc1\n                let phoneOrigin = inputDataThree[0].value.trim();\n                let phoneDestination = inputDataThree[1].value.trim();\n                let usPhoneRegex = \/^(?:\\+1\\s?)?(?:\\(?\\d{3}\\)?[\\s.-]?)?\\d{3}[\\s.-]?\\d{4}$\/;\n\n                \/\/ \u9a8c\u8bc1 Phone in origin\n                if (phoneOrigin.length < 7) {\n                    toggleDetails(progress[3])\n                    scrollToElement(inputDataThree[0].id, \"Please enter a valid phone number for origin!\");\n                    return false;\n                }\n                if (!usPhoneRegex.test(phoneDestination)) {\n                    toggleDetails(progress[3])\n                    scrollToElement(inputDataThree[1].id, \"Please enter a valid U.S. phone number for destination!\");\n                    return false;\n                }\n                \/\/ 5. \u9a8c\u8bc1\u662f\u5426\u6709\u5176\u4ed6\u4fdd\u9669\n                if (isEmpty(yesOrNo.value, 'Yes\/No')) {\n                    toggleDetails(progress[1])\n                    scrollToElement(\"Yes\",'Yes\/No is required !');\n                    return false;\n                }\n                \/\/student\n                if (isEmpty(school.value, 'School')) {\n                    toggleDetails(progress[2])\n                    scrollToElement(\"school\",'School is required !');\n                    return false;\n                }\n                \/\/ \u9a8c\u8bc1\u5b66\u751fID\n                if (isEmpty(studentID.value, 'Student ID')) {\n                    toggleDetails(progress[2])\n                    scrollToElement(\"studentID\",'Student ID is required !');\n                    return false;\n                }\n                if (isEmpty(graduateDate.value, 'Graduate Date')) {\n                    toggleDetails(progress[2])\n                    scrollToElement(\"graduateDate\",'Graduate Date is required !');\n                    return false;\n                }\n\n                \/\/ address\n                if (isEmpty(getAddressSubmitValue(homeData[0]), 'Address 1')) {\n                    toggleDetails(progress[3])\n                    scrollToElement(homeData[0].id, addressRequiredMessage('Home address line 1'));\n                    return false\n                }\n                if (isEmpty(getAddressSubmitValue(homeData[2]), '')) {\n                    toggleDetails(progress[3])\n                    scrollToElement(homeData[2].id, addressRequiredMessage('Home city'));\n                    return false\n                }\n                if (isEmpty(getAddressSubmitValue(homeData[3]), 'PostalCode')) {\n                    toggleDetails(progress[3])\n                    scrollToElement(homeData[3].id, addressRequiredMessage('Home postal code'));\n                    return false\n                }\n                if (isEmpty(HomeState.value, 'state')) {\n                    toggleDetails(progress[3])\n                    scrollToElement(\"HomeState\",'state is required !');\n                    return false\n                }\n                if (isEmpty(getAddressSubmitValue(destinationData[0]), 'Address 1')) {\n                    toggleDetails(progress[3])\n                    scrollToElement(destinationData[0].id, addressRequiredMessage('Destination address line 1'));\n                    return false\n                }\n                if (isEmpty(getAddressSubmitValue(destinationData[2]), 'City')) {\n                    toggleDetails(progress[3])\n                    scrollToElement(destinationData[2].id, addressRequiredMessage('Destination city'));\n                    return false\n                }\n                if (isEmpty(getAddressSubmitValue(destinationData[3]), 'PostalCode')) {\n                    toggleDetails(progress[3])\n                    scrollToElement(destinationData[3].id, addressRequiredMessage('Destination postal code'));\n                    return false\n                }\n                if (isEmpty(dsState.value, 'dsState')) {\n                    toggleDetails(progress[3])\n                    scrollToElement('dsState','State is required !');\n                    return false\n                }\n                if (!isYisihuiReviewMode.value) {\n                    \/\/create an account\n                    if (progress[4]) {\n                        if (isEmpty(password.value, 'password')) {\n                            toggleDetails(progress[4])\n                            scrollToElement('password','password is required !');\n                            return false\n                        }\n                        if (isEmpty(confirmPassword.value, 'confirm password')) {\n                            toggleDetails(progress[4])\n                            scrollToElement('confirm_password','confirm password is required !');\n                            return false\n                        }\n                        if (password.value != confirmPassword.value) {\n                            toggleDetails(progress[4])\n                            scrollToElement('confirm_password','Password inconsistency !');\n                            return false\n                        }\n                        \/\/\u68c0\u6d4b\u662f\u5426\u5305\u542b\u4e2d\u6587\n                        let chineseRegex = \/[\\u4e00-\\u9fa5]\/;\n                        if (chineseRegex.test(confirmPassword.value)) {\n                            toggleDetails(progress[4])\n                            scrollToElement('confirm_password','cannot contain Chinese characters!');\n                            return false;\n                        }\n                        if ((confirmPassword.value).length < 8) {\n                            toggleDetails(progress[4])\n                            scrollToElement('confirm_password','At least 8 characters!');\n                            return false;\n                        }\n                    }\n                    \/\/payment\n                    if (isEmpty(selectedPayType.value, 'selectedPayType')) {\n                        toggleDetails(progress[5])\n                        scrollToElement(\"payment\",'Please select the payType !');\n                        return false;\n                    }\n                }\n                isConfirmChecking.value = true\n                try {\n                    if (normalizedReferralCode) {\n                        const referralValid = await codeExist(normalizedReferralCode, 2, true)\n                        if (!referralValid) return false\n                    }\n                    for (let index = 0; index <= 5; index += 1) {\n                        if (progress[index]) completeStepStatus(progress[index])\n                    }\n                    checkFormsCompleted.value = 1\n                    trackStep(progress[5], 'step_completed', {\n                        source: 'checkForms',\n                        checkFormsCompleted: checkFormsCompleted.value\n                    })\n                    isBuying.value = 1;\n                    setTimeout(() => {\n                        isBuying.value = 0;\n                    }, 500);\n                    return await handleBuy()\n                } finally {\n                    isConfirmChecking.value = false\n                }\n            }\n            \/\/\u70b9\u51fb\u4e0b\u4e00\u6b65\n            const nextForms = async (thisForm) => {\n                hasUserStartedStepNavigation = true\n                const navigationSequence = ++stepNavigationSequence\n                if (thisForm == progress[0]) {\n                    ensureCoverageDatesWithinCurrentRules()\n                    \/\/ 1. \u9a8c\u8bc1\u65e5\u671f\u5b57\u6bb5\n                    if (isEmpty(inputDataOne[0].value, 'Start Date')) {\n                        scrollToElement(inputDataOne[0].id, 'Start Date is is required !')\n                        return false;\n                    }\n                    if (isEmpty(inputDataOne[1].value, 'End Date')) {\n                        scrollToElement(inputDataOne[1].id, 'End Date is is required !')\n                        return false;\n                    }\n                    if (enforceMinimumCoveragePeriod()) {\n                        updateEndDate()\n                    }\n                    if (!validateEditableCoverageEndDate(true)) {\n                        toggleDetails(progress[0], true)\n                        return false\n                    }\n                    \/\/ console.log('referralCode.value', referralCode.value)\n                    const normalizedReferralCode = String(referralCode.value || '').trim()\n                    referralCode.value = normalizedReferralCode\n                    if (normalizedReferralCode) {\n                        const ownReferralCode = String(EmailCode.value || '').trim()\n                        if (ownReferralCode && ownReferralCode == normalizedReferralCode) {\n                            referralCode.value = ''\n                            scrollToElement('referralCode', \"Cannot use own code\")\n                            return false;\n                        }\n                        const validationKey = getReferralValidationKey(normalizedReferralCode)\n                        const referralValid = await codeExist(normalizedReferralCode, 2, true)\n                        if (navigationSequence !== stepNavigationSequence) return false\n                        if (!referralValid) {\n                            if (getReferralValidationKey(referralCode.value) === validationKey) {\n                                toggleDetails(progress[0], true)\n                            }\n                            return false\n                        }\n                    }\n                } else if (thisForm == progress[1]) {\n                    \/\/Personal information\n                    if (isEmpty(inputDataTwo[0].value, 'First name')) {\n                        scrollToElement(inputDataTwo[0].id,'First name is required !');\n                        return\n                    }\n                    if (isEmpty(inputDataTwo[2].value, 'Last name')) {\n                        scrollToElement(inputDataTwo[2].id,'Last name is required !');\n                        return\n                    }\n                    if (isEmpty(inputDataTwo[3].value, 'Gender')) {\n                        scrollToElement(inputDataTwo[3].id,'Gender is required !');\n                        return\n                    }\n                    if (isEmpty(inputDataTwo[4].value, 'Date of birth')) {\n                        scrollToElement(inputDataTwo[4].id,'Date of birth is required !');\n                        return\n                    }\n                    if (isEmpty(inputDataTwo[5].value, 'Nationality')) {\n                        scrollToElement(inputDataTwo[5].id,'Nationality is required !');\n                        return\n                    }\n                    if (isEmpty(inputDataTwo[6].value, 'Email')) {\n                        scrollToElement(inputDataTwo[6].id,'Email is required !');\n                        return\n                    }\n                    if (isEmpty(inputDataTwo[7].value, 'Passport')) {\n                        scrollToElement(inputDataTwo[7].id,'Passport is required !');\n                        return\n                    }\n                    if (isEmpty(visaType.value, 'Policyholder.Visa')) {\n                        scrollToElement('Policyholder_Visa','Visa is required !');\n                        return\n                    }\n                    if (isEmpty(inputDataSix[0].value, 'Visa start date')) {\n                        scrollToElement(inputDataSix[0].id,'Visa start date is required !');\n                        return\n                    }\n                    if (isEmpty(inputDataSix[1].value, 'Visa end date')) {\n                        scrollToElement(inputDataSix[1].id,'Visa end date is required !');\n                        return\n                    }\n                    \/\/ 5. \u9a8c\u8bc1\u662f\u5426\u6709\u5176\u4ed6\u4fdd\u9669\n                    if (isEmpty(yesOrNo.value, 'Yes\/No')) {\n                        scrollToElement(\"Yes\",'Yes\/No is required !');\n                        return;\n                    }\n                    \/\/\u68c0\u67e5\u5b66\u751f\u5e74\u9f84\u548c\u4ef7\u683c\n                    if (inputDataOne[0].value, inputDataTwo[4].value) {\n                        getStudentAge(inputDataOne[0].value)\n                        birthChange(inputDataTwo[4].type)\n                    }\n                    if (!validateFamilyMembers()) {\n                        return\n                    }\n                } else if (thisForm == progress[2]) {\n                    \/\/student\n                    if (isEmpty(school.value, 'School')) {\n                        scrollToElement(\"school\",'School is required !');\n                        return;\n                    }\n                    \/\/ \u9a8c\u8bc1\u5b66\u751fID\n                    if (isEmpty(studentID.value, 'Student ID')) {\n                        scrollToElement(\"studentID\",'Student ID is required !');\n                        return;\n                    }\n                    if (isEmpty(graduateDate.value, 'Graduate Date')) {\n                        scrollToElement(\"graduateDate\",'Graduate Date is required !');\n                        return;\n                    }\n                } else if (thisForm == progress[3]) {\n                    sanitizeAddressCollection()\n                    if (isEmpty(inputDataThree[0].value, 'Phone in origin')) {\n                        scrollToElement(inputDataThree[0].id,'Phone in origin is required !');\n                        return\n                    }\n                    if (isEmpty(inputDataThree[1].value, 'Phone in destination')) {\n                        scrollToElement(inputDataThree[1].id,'Phone in destination is required !');\n                        return\n                    }\n                    let phoneOrigin = inputDataThree[0].value.trim();\n                    let phoneDestination = inputDataThree[1].value.trim();\n                    let usPhoneRegex = \/^(?:\\+1\\s?)?(?:\\(?\\d{3}\\)?[\\s.-]?)?\\d{3}[\\s.-]?\\d{4}$\/;\n                    if (phoneOrigin.length < 7) {\n                        scrollToElement(inputDataThree[0].id, \"Please enter a valid phone number for origin!\");\n                        return;\n                    }\n                    if (!usPhoneRegex.test(phoneDestination)) {\n                        scrollToElement(inputDataThree[1].id, \"Please enter a valid U.S. phone number for destination!\");\n                        return;\n                    }\n                    \/\/ address\n                    if (isEmpty(getAddressSubmitValue(homeData[0]), 'Address 1')) {\n                        scrollToElement(homeData[0].id, addressRequiredMessage('Home address line 1'));\n                        return\n                    }\n                    if (isEmpty(getAddressSubmitValue(homeData[2]), '')) {\n                        scrollToElement(homeData[2].id, addressRequiredMessage('Home city'));\n                        return\n                    }\n                    if (isEmpty(getAddressSubmitValue(homeData[3]), 'PostalCode')) {\n                        scrollToElement(homeData[3].id, addressRequiredMessage('Home postal code'));\n                        return\n                    }\n                    if (isEmpty(HomeState.value, 'state')) {\n                        scrollToElement(\"HomeState\",'state is required !');\n                        return\n                    }\n                    if (isEmpty(getAddressSubmitValue(destinationData[0]), 'Address 1')) {\n                        scrollToElement(destinationData[0].id, addressRequiredMessage('Destination address line 1'));\n                        return\n                    }\n                    if (isEmpty(getAddressSubmitValue(destinationData[2]), 'City')) {\n                        scrollToElement(destinationData[2].id, addressRequiredMessage('Destination city'));\n                        return\n                    }\n                    if (isEmpty(getAddressSubmitValue(destinationData[3]), 'PostalCode')) {\n                        scrollToElement(destinationData[3].id, addressRequiredMessage('Destination postal code'));\n                        return\n                    }\n                    if (isEmpty(dsState.value, 'dsState')) {\n                        scrollToElement('dsState','State is required !');\n                        return\n                    }\n                } else if (thisForm == progress[4]) {\n                    if (!isYisihuiReviewMode.value) {\n                        \/\/create an account\n                        if (isEmpty(password.value, 'password')) {\n                            scrollToElement('password','password is required !');\n                            return\n                        }\n                        if (isEmpty(confirmPassword.value, 'confirm password')) {\n                            scrollToElement('confirm_password','confirm password is required !');\n                            return\n                        }\n                        if (password.value != confirmPassword.value) {\n                            scrollToElement('confirm_password','Password inconsistency !');\n                            return\n                        }\n                        \/\/\u68c0\u6d4b\u662f\u5426\u5305\u542b\u4e2d\u6587\n                        let chineseRegex = \/[\\u4e00-\\u9fa5]\/;\n                        if (chineseRegex.test(confirmPassword.value)) {\n                            scrollToElement('confirm_password','cannot contain Chinese characters!');\n                            return;\n                        }\n                        if ((confirmPassword.value).length < 8) {\n                            scrollToElement('confirm_password','At least 8 characters!');\n                            return;\n                        }\n                    }\n\n                } else if (thisForm == progress[5]) {\n                    if (!isYisihuiReviewMode.value) {\n                        \/\/payment\n                        if (isEmpty(selectedPayType.value, 'selectedPayType')) {\n                            scrollToElement(\"payment\",'Please select the payType !');\n                            return;\n                        }\n                    }\n                }\n                completeStepStatus(thisForm)\n                var now_key = getProgressKey(thisForm)\n                trackStep(thisForm, 'step_completed', {\n                    next_step: progress[Number(now_key) + 1] || null,\n                    source: 'nextForms'\n                })\n                if (thisForm != \"Payment options\") {\n                    if (progress[Number(now_key) + 1] !== undefined) {\n                        toggleDetails(progress[Number(now_key) + 1], true)\n                    } else {\/\/\u5e94\u5bf9\u4e0d\u9700\u8981\u521b\u5efa\u8d26\u6237\u7684\u60c5\u51b5\n                        toggleDetails(progress[Number(now_key) + 2], true)\n                    }\n                } else {\n                    toggleDetails(thisForm)\n                    let check = checkForms()\n                    \/\/ if (check) {\n                    \/\/     if (window.innerWidth < 991) {\n                    \/\/         window.scrollTo(0, -90);\n                    \/\/     }\n                    \/\/ }\n                }\n            }\n            const birthChange = (type) => {\n                \/\/ console.log('date\u53d8\u5316', type)\n                if (type == 'date') {\n                    requestQuote()\n                }\n            }\n            \/\/\u586b\u5199\u5b8c\u81ea\u52a8\u4e0b\u4e00\u6b65\n            const graduateDateChange = (event) => {\n                \/\/ console.log(\"\u8fdb\u6765\u4e86\")\n                \/\/ nextForms(nowForm.value)\n            }\n            const clickPayType = (type) => {\n                if (isPaymentProcessing.value || loading.value) return\n                if (type === 'wechat' && !showWechatPaymentOption.value) return\n                if (type === 'credit' && !showCardPaymentOption.value) return\n                selectedPayType.value = type\n            }\n            const changeNation2 = () => {\n                \/\/ console.log('\u8fdb\u6765\u4e86')\n                if (confirm('Do you want to change the country\uff1f')) {\n                    \/\/ \u7528\u6237\u70b9\u51fb\u786e\u5b9a\n                    toggleDetails(progress['1'])\n                    scrollToElement('Nationality',\"\");\n                }\n            }\n            const getSource = () => {\n                if (String(localStorage.getItem('blog_source') || '').trim() === blogTrackingSource) {\n                    return blogTrackingSource;\n                }\n                if (String(urlParamsOrigin.get('source') || '').trim() === blogTrackingSource) {\n                    return blogTrackingSource;\n                }\n                const reqSource = normalizeTextValue(sourceInstitutionFromReq.value)\n                if (reqSource) {\n                    return reqSource;\n                }\n\n                if (localStorage.getItem('yisihui_source')) {\n                    return '\u6613\u601d\u6c47';\n                }\n                if (localStorage.getItem(\"yisihui\")) {\n                    return '\u6613\u601d\u6c47';\n                }\n                if (isUscSchoolFlow.value) {\n                    return 'GGS'\n                }\n                if (localStorage.getItem(\"tripalink\")) {\n                    return 'TripAlink';\n                }\n                if (localStorage.getItem(\"indigo\")) {\n                    return 'Indigo';\n                }\n                if (localStorage.getItem(\"ggs\")) {\n                    return '\u5e02\u573a\u90e8' + localStorage.getItem(\"ggs\");\n                }\n                if (localStorage.getItem(\"yshlulu\")) {\n                    return '\u6613\u601d\u6c47lulu';\n                }\n                return 'GGS';\n            }\n            return {\n                \/\/ \u6b65\u9aa4\u4e00\n                inputDataOne,\n                inputDataTwo,\n                inputDataThree,\n                inputDataFour,\n                yesOrNo,\n                dynamicInputFields,\n                numDependents,\n                isFamilyOptionAvailable,\n                familyYesNoOptions,\n                dependentCountOptions,\n                spouseMember,\n                dependentMembers,\n                visaType,\n                inputDataSix,\n                inputDataSeven,\n                SpouseDateofBirth,\n                SpouseyesOrNo,\n                currentStep,\n                steps,\n                collectFormData,\n                State,\n                InsuranceName,\n                nextStep,\n                dState,\n                homeCountryData,\n                \/\/ \u6b65\u9aa4\u4e8c\n                homeData,\n                destinationData,\n                getAddressInputType,\n                getAddressInputMode,\n                getAddressInputPattern,\n                restrictAddressInput,\n                inputDataEgiht,\n                keepSafe,\n                secondPrevious,\n                secondNext,\n                thirdPrevious,\n                \/\/ thirdNext,\n                \/\/ cardData,\n                Yisihuipayment,\n                BuyPlan,\n                HomeState,\n                homeStatesOption,\n                HomeCountry,\n                dsState,\n                getNextMonthFirstDate,\n                getMinEndDate,\n                allPrice,\n                showModel,\n                hiddenModel,\n                flag,\n                loading,\n                closeAlert,\n                errMessage,\n                SpouseData,\n                dependentsArray,\n                lastPrice,\n                maxDate,\n                minDate,\n                spouseMaxDate,\n                product,\n                visaOptionFlags,\n                nowTime,\n                pageMode,\n                supportLink,\n                cardSuccessEnrollment,\n                enrollmentIdDisplay,\n                wechatModalStep,\n                wechatModalError,\n                wechatSubmitting,\n                wechatNameZh,\n                wechatIdNumber,\n                wechatPaymentRequestId,\n                pay_url,\n                pay_type,\n                wechatAttachmentInput,\n                wechatAttachmentFiles,\n                wechatAttachmentError,\n                wechatUploadMessage,\n                wechatUploadSuccess,\n                wechatUploading,\n                wechatAttachmentDragOver,\n                showUnifiedPaidSuccess,\n                successCopy,\n                successApplicantName,\n                successIsEasyTransfer,\n                successReferralCode,\n                successReferralCodeDisplay,\n                successCommunity,\n                successSecondaryHref,\n                successToast,\n                eipHandoffLoading,\n                eipSuccessUpsellEnabled,\n                openEipEnrollment,\n                copySuccessReferralCode,\n                shareSuccessReferral,\n                i20FileInput,\n                i20Uploading,\n                i20UploadToken,\n                i20Message,\n                i20MessageType,\n                i20Summary,\n                i20FilledCount,\n                i20FileName,\n                i20FilledFields,\n                i20PersonalRemainingLabel,\n                isI20Prefilled,\n                i20Copy,\n                i20VisaGuideHover,\n                i20VisaGuideVisible,\n                i20VisaGuideCopy,\n                toggleI20VisaGuide,\n                closeI20VisaGuide,\n                openI20Picker,\n                clearI20Prefill,\n                uploadI20ForPrefill,\n                openWechatAttachmentPicker,\n                onWechatAttachmentDragOver,\n                onWechatAttachmentDragLeave,\n                onWechatAttachmentDrop,\n                onWechatAttachmentPickerKeydown,\n                checkWechatOrderCompleted,\n                redirectToHome,\n                agreement,\n                formDataPay,\n                guide,\n                school,\n                isSchoolSelectionMode,\n                schoolSelectOptions,\n                studentID,\n                startDefault,\n                selectedMonths,\n                allowCoverageEndDateEdit,\n                minimumCoverageEndDate,\n                maximumCoverageEndDate,\n                handleCoverageEndDateChange,\n                NYU_LLM_PERIOD_VALUE,\n                isCoverageFromSchool,\n                isFixed12Month,\n                isPeriodSelectDisabled,\n                getDefaultStartDate,\n                monthOptions,\n                updateEndDate,\n                phoneCountry,\n                cleanPhone,\n                getschoolNew,\n                minStartDate,\n                isStratFormSchool,\n                progress,\n                getStepStatusText,\n                getStepStatusClass,\n                getStepOpenStatusText,\n                getStepOpenStatusClass,\n                toggleDetails,\n                selectedPayType,\n                handlePayTypeChange,\n                handleBuy,\n                changeNation,\n                usStateChange,\n                referralCode,\n                graduateDate,\n                graduateDateChange,\n                checkForms,\n                checkFormsCompleted,\n                nextForms,\n                nowForm,\n                birthChange,\n                password,\n                confirmPassword,\n                clickPayType,\n                changeNation2,\n                isBuying,\n                isPaymentProcessing,\n                isConfirmChecking,\n                isNotElite,\n                pageLanguage: lang,\n                inputTitle,\n                termsChecked,\n                isMobileDevice,\n                noPhoneClick,\n                noPhone,\n                noAddressClick,\n                noAddress,\n                schoolAddressLoading,\n                schoolAddressVerified,\n                schoolAddressError,\n                useManualDestinationAddress,\n                addressStepSummary,\n                showRenewalBanner,\n                renewalBannerTitle,\n                renewalBannerDesc,\n                renewalCode,\n                showModifyPlanButton,\n                goToSchoolPlanPage,\n                emailExist,\n                codeExist,\n                isLock,\n                isHidePeriod,\n                checkWENZI,\n                getWaiver,\n                is6MonthProduct,\n                getMonthsDifference,\n                isYshlulu,\n                isYisihuiReviewMode,\n                isWechatOnlyPayment,\n                isWechatDisabledSchoolFlow,\n                showWechatPaymentOption,\n                showCardPaymentOption,\n                isSinglePaymentOption,\n                submitWechatPayment,\n                onWechatAttachmentChange,\n                removeWechatAttachment,\n                uploadWechatAttachments,\n                formatWechatFileSize,\n                \/\/ getNextMonthDate,\n                \/\/ getTodayDate\n            };\n        }\n    })\n    app.mount(\"#app\")\n<\/script>\n<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"site-sidebar-layout":"no-sidebar","site-content-layout":"page-builder","ast-global-header-display":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"disabled","ast-breadcrumbs-content":"","ast-featured-img":"disabled","footer-sml-layout":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","footnotes":""},"class_list":["post-35257","page","type-page","status-publish","hentry"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v22.6 (Yoast SEO v26.4) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>us-enrollment | GoGlobalsafe-\u7559\u5b66\u751f\u4fdd\u9669\u4e00\u7ad9\u5f0f\u89e3\u51b3\u65b9\u6848<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.goglobalsafe.com\/zh\/us-enrollment\/\" \/>\n<meta property=\"og:locale\" content=\"zh_CN\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"us-enrollment\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.goglobalsafe.com\/zh\/us-enrollment\/\" \/>\n<meta property=\"og:site_name\" content=\"GoGlobalsafe-\u7559\u5b66\u751f\u4fdd\u9669\u4e00\u7ad9\u5f0f\u89e3\u51b3\u65b9\u6848\" \/>\n<meta property=\"article:modified_time\" content=\"2026-08-27T05:57:49+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.goglobalsafe.com\/wp-content\/uploads\/2023\/04\/LOGO1.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1000\" \/>\n\t<meta property=\"og:image:height\" content=\"1000\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.goglobalsafe.com\/us-enrollment\/\",\"url\":\"https:\/\/www.goglobalsafe.com\/us-enrollment\/\",\"name\":\"us-enrollment | GoGlobalsafe-\u7559\u5b66\u751f\u4fdd\u9669\u4e00\u7ad9\u5f0f\u89e3\u51b3\u65b9\u6848\",\"isPartOf\":{\"@id\":\"https:\/\/www.goglobalsafe.com\/#website\"},\"datePublished\":\"2024-12-25T10:18:22+00:00\",\"dateModified\":\"2026-08-27T05:57:49+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.goglobalsafe.com\/us-enrollment\/#breadcrumb\"},\"inLanguage\":\"zh-Hans\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.goglobalsafe.com\/us-enrollment\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.goglobalsafe.com\/us-enrollment\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\u9996\u9875\",\"item\":\"https:\/\/www.goglobalsafe.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"us-enrollment\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.goglobalsafe.com\/#website\",\"url\":\"https:\/\/www.goglobalsafe.com\/\",\"name\":\"GoGlobalSafe Student Insurance\",\"description\":\"Your Health, Our Priority\",\"publisher\":{\"@id\":\"https:\/\/www.goglobalsafe.com\/#organization\"},\"alternateName\":\"GoGlobalSafe international student insurance\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.goglobalsafe.com\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"zh-Hans\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.goglobalsafe.com\/#organization\",\"name\":\"Golobal student consulting limited\",\"alternateName\":\"GoGlobalSafe\",\"url\":\"https:\/\/www.goglobalsafe.com\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-Hans\",\"@id\":\"https:\/\/www.goglobalsafe.com\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.goglobalsafe.com\/wp-content\/uploads\/2023\/04\/LOGO3.png\",\"contentUrl\":\"https:\/\/www.goglobalsafe.com\/wp-content\/uploads\/2023\/04\/LOGO3.png\",\"width\":500,\"height\":140,\"caption\":\"Golobal student consulting limited\"},\"image\":{\"@id\":\"https:\/\/www.goglobalsafe.com\/#\/schema\/logo\/image\/\"}}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"us-enrollment | GoGlobalsafe-\u7559\u5b66\u751f\u4fdd\u9669\u4e00\u7ad9\u5f0f\u89e3\u51b3\u65b9\u6848","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.goglobalsafe.com\/zh\/us-enrollment\/","og_locale":"zh_CN","og_type":"article","og_title":"us-enrollment","og_url":"https:\/\/www.goglobalsafe.com\/zh\/us-enrollment\/","og_site_name":"GoGlobalsafe-\u7559\u5b66\u751f\u4fdd\u9669\u4e00\u7ad9\u5f0f\u89e3\u51b3\u65b9\u6848","article_modified_time":"2026-08-27T05:57:49+00:00","og_image":[{"width":1000,"height":1000,"url":"https:\/\/www.goglobalsafe.com\/wp-content\/uploads\/2023\/04\/LOGO1.png","type":"image\/png"}],"twitter_card":"summary_large_image","schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.goglobalsafe.com\/us-enrollment\/","url":"https:\/\/www.goglobalsafe.com\/us-enrollment\/","name":"us-enrollment | GoGlobalsafe-\u7559\u5b66\u751f\u4fdd\u9669\u4e00\u7ad9\u5f0f\u89e3\u51b3\u65b9\u6848","isPartOf":{"@id":"https:\/\/www.goglobalsafe.com\/#website"},"datePublished":"2024-12-25T10:18:22+00:00","dateModified":"2026-08-27T05:57:49+00:00","breadcrumb":{"@id":"https:\/\/www.goglobalsafe.com\/us-enrollment\/#breadcrumb"},"inLanguage":"zh-Hans","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.goglobalsafe.com\/us-enrollment\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.goglobalsafe.com\/us-enrollment\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\u9996\u9875","item":"https:\/\/www.goglobalsafe.com\/"},{"@type":"ListItem","position":2,"name":"us-enrollment"}]},{"@type":"WebSite","@id":"https:\/\/www.goglobalsafe.com\/#website","url":"https:\/\/www.goglobalsafe.com\/","name":"GoGlobalSafe \u5b66\u751f\u4fdd\u9669","description":"\u60a8\u7684\u5065\u5eb7\uff0c\u6211\u4eec\u7684\u9996\u8981\u4efb\u52a1","publisher":{"@id":"https:\/\/www.goglobalsafe.com\/#organization"},"alternateName":"GoGlobalSafe international student insurance","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.goglobalsafe.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"zh-Hans"},{"@type":"Organization","@id":"https:\/\/www.goglobalsafe.com\/#organization","name":"\u73af\u7403\u5b66\u751f\u54a8\u8be2\u6709\u9650\u516c\u53f8","alternateName":"GoGlobalSafe","url":"https:\/\/www.goglobalsafe.com\/","logo":{"@type":"ImageObject","inLanguage":"zh-Hans","@id":"https:\/\/www.goglobalsafe.com\/#\/schema\/logo\/image\/","url":"https:\/\/www.goglobalsafe.com\/wp-content\/uploads\/2023\/04\/LOGO3.png","contentUrl":"https:\/\/www.goglobalsafe.com\/wp-content\/uploads\/2023\/04\/LOGO3.png","width":500,"height":140,"caption":"Golobal student consulting limited"},"image":{"@id":"https:\/\/www.goglobalsafe.com\/#\/schema\/logo\/image\/"}}]}},"_links":{"self":[{"href":"https:\/\/www.goglobalsafe.com\/zh\/wp-json\/wp\/v2\/pages\/35257","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.goglobalsafe.com\/zh\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.goglobalsafe.com\/zh\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.goglobalsafe.com\/zh\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.goglobalsafe.com\/zh\/wp-json\/wp\/v2\/comments?post=35257"}],"version-history":[{"count":10,"href":"https:\/\/www.goglobalsafe.com\/zh\/wp-json\/wp\/v2\/pages\/35257\/revisions"}],"predecessor-version":[{"id":38101,"href":"https:\/\/www.goglobalsafe.com\/zh\/wp-json\/wp\/v2\/pages\/35257\/revisions\/38101"}],"wp:attachment":[{"href":"https:\/\/www.goglobalsafe.com\/zh\/wp-json\/wp\/v2\/media?parent=35257"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}