{"id":6169,"date":"2025-07-15T10:07:51","date_gmt":"2025-07-15T02:07:51","guid":{"rendered":"https:\/\/www.testcyb.info\/?page_id=6169"},"modified":"2026-03-03T21:49:03","modified_gmt":"2026-03-03T13:49:03","slug":"lp_hr_form","status":"publish","type":"page","link":"https:\/\/www.testcyb.info\/ja\/lp_hr_form\/","title":{"rendered":"\u6e2c\u8a66hr_form"},"content":{"rendered":"<style>\r\n:root {\r\n    --professional-blue: 222 97% 28%;\r\n    --professional-blue-light: 222 97% 95%;\r\n    --professional-gray: 215 16% 47%;\r\n    --professional-gray-light: 215 16% 95%;\r\n    --background: 248 50% 98%;\r\n    --foreground: 222.2 84% 4.9%;\r\n    --border: 214.3 31.8% 91.4%;\r\n}\r\n\r\n* {\r\n    box-sizing: border-box;\r\n    margin: 0;\r\n    padding: 0;\r\n}\r\n\r\nbody {\r\n    background: linear-gradient(180deg, hsl(248 50% 98%) 0%, hsl(222 97% 98%) 100%);\r\n    min-height: 100vh;\r\n}\r\n\r\n.hr-form-container {\r\n    max-width: 80rem;\r\n    margin: 0 auto;\r\n    padding: 3.5rem 2rem;\r\n    font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif;\r\n    position: relative;\r\n}\r\n\r\n.form-navigation {\r\n    position: absolute;\r\n    top: 3.5rem;\r\n    left: 2rem;\r\n    width: 17rem;\r\n    background-color: white;\r\n    padding: 1.75rem;\r\n    border-radius: 1rem;\r\n    box-shadow: 0 4px 20px -4px hsl(222 97% 28% \/ 0.18);\r\n    border: 1px solid hsl(var(--border));\r\n    max-height: calc(100vh - 4rem);\r\n    overflow-y: auto;\r\n    z-index: 100;\r\n}\r\n\r\n.form-content-wrapper {\r\n    margin-left: calc(17rem + 2.5rem);\r\n}\r\n\r\n.nav-title {\r\n    font-size: 1.1rem;\r\n    font-weight: 600;\r\n    color: hsl(var(--foreground));\r\n    margin-bottom: 1.25rem;\r\n    padding-bottom: 1rem;\r\n    border-bottom: 2px solid hsl(var(--border));\r\n}\r\n\r\n.nav-list {\r\n    list-style: none;\r\n    padding: 0;\r\n    margin: 0;\r\n}\r\n\r\n.nav-item {\r\n    margin-bottom: 0.375rem;\r\n}\r\n\r\n.nav-link {\r\n    display: block;\r\n    padding: 0.75rem 1rem;\r\n    color: hsl(var(--foreground) \/ 0.7);\r\n    text-decoration: none;\r\n    border-radius: 0.5rem;\r\n    font-size: 0.938rem;\r\n    transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);\r\n    cursor: pointer;\r\n    border-left: 3px solid transparent;\r\n}\r\n\r\n.nav-link:hover {\r\n    background: rgba(255, 125, 0, 0.1);\r\n    color: #FF7D00;\r\n    border-left-color: #FF7D00;\r\n    text-decoration: none;\r\n}\r\n\r\n.nav-link.active {\r\n    background: hsl(var(--professional-blue-light) \/ 0.5);\r\n    color: hsl(var(--professional-blue));\r\n    font-weight: 600;\r\n    border-left-color: hsl(var(--professional-blue));\r\n}\r\n\r\n\r\n.hr-form {\r\n    background: transparent;\r\n    padding: 0;\r\n    border-radius: 0;\r\n    box-shadow: none;\r\n    border: none;\r\n}\r\n\r\n.back-to-top {\r\n    position: fixed;\r\n    bottom: 2rem;\r\n    right: 2rem;\r\n    width: 2.75rem;\r\n    height: 2.75rem;\r\n    background: hsl(var(--professional-blue));\r\n    color: white;\r\n    border: none;\r\n    border-radius: 50%;\r\n    cursor: pointer;\r\n    display: flex;\r\n    align-items: center;\r\n    justify-content: center;\r\n    box-shadow: 0 4px 12px hsl(222 97% 28% \/ 0.3);\r\n    opacity: 0;\r\n    visibility: hidden;\r\n    transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);\r\n    z-index: 999;\r\n    padding: 0;\r\n}\r\n\r\n.back-to-top svg {\r\n    width: 1.25rem;\r\n    height: 1.25rem;\r\n    flex-shrink: 0;\r\n}\r\n\r\n.back-to-top.show {\r\n    opacity: 1;\r\n    visibility: visible;\r\n}\r\n\r\n.back-to-top:hover {\r\n    background: hsl(222 97% 23%);\r\n    transform: translateY(-4px);\r\n    box-shadow: 0 6px 16px hsl(222 97% 28% \/ 0.4);\r\n}\r\n\r\n.back-to-top:active {\r\n    transform: translateY(-2px);\r\n}\r\n\r\n.form-header {\r\n    text-align: center;\r\n    margin-bottom: 2rem;\r\n    padding: 1.5rem 0;\r\n    background-color: transparent;\r\n    border-radius: 0;\r\n    box-shadow: none;\r\n    border: none;\r\n}\r\n\r\n.form-header h1 {\r\n    font-size: 2.25rem;\r\n    font-weight: 700;\r\n    color: hsl(var(--foreground));\r\n    margin-bottom: 1rem;\r\n    letter-spacing: -0.025em;\r\n}\r\n\r\n.section-card {\r\n    background-color: white;\r\n    padding: 2.5rem;\r\n    border-radius: 1rem;\r\n    box-shadow: 0 4px 12px -2px hsl(222 97% 28% \/ 0.12);\r\n    border: 1px solid hsl(var(--border));\r\n    margin-bottom: 2rem;\r\n    transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);\r\n}\r\n\r\n.section-card:hover {\r\n    box-shadow: 0 6px 20px -4px hsl(222 97% 28% \/ 0.18);\r\n    border-color: hsl(var(--professional-blue) \/ 0.3);\r\n}\r\n\r\n.section-title {\r\n    font-size: 1.375rem;\r\n    font-weight: 600;\r\n    color: hsl(var(--foreground));\r\n    margin: 0 0 2rem 0;\r\n    padding: 1rem 1.25rem 0 1.25rem ;\r\n    background: hsl(var(--professional-blue-light) \/ 0.35);\r\n    border-left: 4px solid hsl(var(--professional-blue));\r\n    border-radius: 0.5rem;\r\n    text-align: center;\r\n    line-height: 2;\r\n}\r\n\r\n.sub-section {\r\n    background: hsl(var(--professional-gray-light) \/ 0.4);\r\n    padding: 1.75rem;\r\n    border-radius: 0.75rem;\r\n    margin-bottom: 1.75rem;\r\n    border: 1px solid hsl(var(--border));\r\n}\r\n\r\n.sub-section:last-child {\r\n    margin-bottom: 0;\r\n}\r\n\r\n.sub-section-title {\r\n    font-size: 1.1rem;\r\n    font-weight: 600;\r\n    color: hsl(var(--foreground));\r\n    margin: 0 0 1.5rem 0;\r\n    padding-bottom: 1rem;\r\n    border-bottom: 2px solid hsl(var(--professional-blue) \/ 0.3);\r\n}\r\n\r\n.form-group {\r\n    margin-bottom: 1.75rem;\r\n}\r\n\r\n.form-row {\r\n    display: grid;\r\n    grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));\r\n    gap: 1.75rem;\r\n    margin-bottom: 1.75rem;\r\n}\r\n\r\n.form-label {\r\n    display: block;\r\n    margin-bottom: 0.625rem;\r\n    font-weight: 500;\r\n    color: hsl(var(--foreground));\r\n    font-size: 0.938rem;\r\n    letter-spacing: -0.01em;\r\n}\r\n\r\n.required {\r\n    color: hsl(0 84.2% 60.2%);\r\n}\r\n\r\n.form-control {\r\n    width: 100%;\r\n    padding: 0.75rem 1rem;\r\n    border: 1px solid hsl(var(--border));\r\n    border-radius: 0.5rem !important;\r\n    font-size: 0.938rem;\r\n    transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);\r\n    background-color: #ffffff !important;\r\n    color: hsl(var(--foreground));\r\n}\r\n\r\n.form-control:focus {\r\n    outline: none;\r\n    border-color: hsl(var(--professional-blue));\r\n    box-shadow: 0 0 0 4px hsl(var(--professional-blue) \/ 0.12);\r\n}\r\n\r\n.form-control::placeholder {\r\n    color: hsl(var(--professional-gray) \/ 0.6);\r\n}\r\n\r\n\/* \u6587\u5b57\u5340\u57df *\/\r\ntextarea.form-control {\r\n    resize: vertical;\r\n    min-height: 100px;\r\n    border: 1px solid hsl(var(--border)) !important;\r\n}\r\n\r\n\/* \u9078\u64c7\u6846 *\/\r\nselect.form-control {\r\n    cursor: pointer;\r\n    height: auto;\r\n    min-height: 28px;\r\n    padding: 0.75rem 1rem;\r\n    background-color: #ffffff !important;\r\n}\r\n\r\n\/* \u65e5\u671f\u8f38\u5165\u6846 - Safari \u76f8\u5bb9\u6027\u4fee\u6b63 *\/\r\ninput[type=\"date\"].form-control,\r\ninput[type=\"month\"].form-control {\r\n    -webkit-appearance: none;\r\n    -moz-appearance: none;\r\n    appearance: none;\r\n    min-height: 2.75rem;\r\n    line-height: 1.5;\r\n}\r\n\r\n\/* Safari \u65e5\u671f\u8f38\u5165\u6846\u5167\u90e8\u6a23\u5f0f\u4fee\u6b63 *\/\r\ninput[type=\"date\"].form-control::-webkit-date-and-time-value {\r\n    text-align: left;\r\n    padding: 0;\r\n}\r\n\r\ninput[type=\"month\"].form-control::-webkit-date-and-time-value {\r\n    text-align: left;\r\n    padding: 0;\r\n}\r\n\r\n\/* Safari \u65e5\u671f\u9078\u64c7\u5668\u5716\u793a\u6a23\u5f0f *\/\r\ninput[type=\"date\"].form-control::-webkit-calendar-picker-indicator,\r\ninput[type=\"month\"].form-control::-webkit-calendar-picker-indicator {\r\n    cursor: pointer;\r\n    opacity: 0.6;\r\n    transition: opacity 0.2s;\r\n}\r\n\r\ninput[type=\"date\"].form-control::-webkit-calendar-picker-indicator:hover,\r\ninput[type=\"month\"].form-control::-webkit-calendar-picker-indicator:hover {\r\n    opacity: 1;\r\n}\r\n\r\n\/* \u932f\u8aa4\u63d0\u793a\u8a0a\u606f *\/\r\n.error-message {\r\n    color: #e74c3c;\r\n    display: none;\r\n    margin-top: 0.5rem;\r\n    font-size: 0.813rem;\r\n}\r\n\r\n.warning-message {\r\n    color: #f39c12;\r\n    display: none;\r\n    margin-top: 0.5rem;\r\n    font-size: 0.813rem;\r\n}\r\n\r\n.form-control.error {\r\n    border-color: #e74c3c;\r\n}\r\n\r\n.form-control.warning {\r\n    border-color: #f39c12;\r\n}\r\n\r\n.form-control.success {\r\n    border-color: #27ae60;\r\n}\r\n\r\n\r\n\/* \u55ae\u9078\u6309\u9215\u548c\u6838\u53d6\u65b9\u584a *\/\r\n.radio-group, .checkbox-group {\r\n    display: flex;\r\n    gap: 1.25rem;\r\n    flex-wrap: wrap;\r\n    margin-top: 0.625rem;\r\n}\r\n\r\n.radio-label, .checkbox-label {\r\n    display: flex;\r\n    align-items: center;\r\n    cursor: pointer;\r\n    font-weight: normal;\r\n    font-size: 0.938rem;\r\n    padding: 0.375rem 0;\r\n}\r\n\r\n.radio-label input, .checkbox-label input {\r\n    margin-right: 0.5rem;\r\n    width: 1.125rem;\r\n    height: 1.125rem;\r\n}\r\n\r\n.work-experience-block {\r\n    background: hsl(var(--professional-gray-light) \/ 0.3);\r\n    padding: 1.75rem;\r\n    border-radius: 0.75rem;\r\n    margin-bottom: 1.75rem;\r\n    border: 1px solid hsl(var(--border));\r\n    position: relative;\r\n    transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);\r\n}\r\n\r\n.work-experience-block:hover {\r\n    box-shadow: 0 4px 12px -2px hsl(222 97% 28% \/ 0.12);\r\n}\r\n\r\n.work-experience-header {\r\n    font-weight: 600;\r\n    color: hsl(var(--foreground));\r\n    margin-bottom: 1.5rem;\r\n    display: flex;\r\n    justify-content: space-between;\r\n    align-items: center;\r\n    font-size: 1.05rem;\r\n}\r\n\r\n.btn-add-work, .btn-remove-work {\r\n    padding: 0.75rem 1.5rem;\r\n    border: none;\r\n    border-radius: 0.5rem;\r\n    font-size: 0.938rem;\r\n    font-weight: 500;\r\n    cursor: pointer;\r\n    transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);\r\n    box-shadow: 0 2px 4px 0 rgb(0 0 0 \/ 0.08);\r\n}\r\n\r\n.btn-add-work {\r\n    background: #FF7D00;\r\n    color: white;\r\n    margin: 1.75rem auto;\r\n    display: block;\r\n}\r\n\r\n.btn-add-work:hover {\r\n    background: #E06D00;\r\n    transform: translateY(-1px);\r\n    box-shadow: 0 4px 6px -1px rgb(0 0 0 \/ 0.1);\r\n}\r\n\r\n.btn-remove-work {\r\n    background: hsl(0 84.2% 60.2%);\r\n    color: white;\r\n    font-size: 0.813rem;\r\n    padding: 0.5rem 1rem;\r\n}\r\n\r\n.btn-remove-work:hover {\r\n    background: hsl(0 84.2% 50%);\r\n    transform: translateY(-1px);\r\n}\r\n\r\n#workExperienceContainer {\r\n    margin-bottom: 20px;\r\n}\r\n\r\n.language-table {\r\n    width: 100%;\r\n    border-collapse: collapse;\r\n    margin-top: 1.25rem;\r\n    border-radius: 0.75rem;\r\n    overflow: hidden;\r\n    border: 1px solid hsl(var(--border));\r\n}\r\n\r\n.language-table th, .language-table td {\r\n    border: 1px solid hsl(var(--border));\r\n    padding: 1rem;\r\n    text-align: center;\r\n    font-size: 0.938rem;\r\n}\r\n\r\n.language-table th {\r\n    background: hsl(var(--professional-blue-light) \/ 0.5);\r\n    font-weight: 600;\r\n    color: hsl(var(--foreground));\r\n    padding: 1rem 0.75rem;\r\n}\r\n\r\n.language-table tbody tr:hover {\r\n    background: hsl(var(--professional-gray-light) \/ 0.2);\r\n}\r\n\r\n.language-table input[type=\"checkbox\"] {\r\n    width: 1.25rem;\r\n    height: 1.25rem;\r\n    cursor: pointer;\r\n    accent-color: hsl(var(--professional-blue));\r\n}\r\n\r\n.btn-container {\r\n    text-align: center;\r\n    margin-top: 0;\r\n    padding-top: 0;\r\n    border-top: none;\r\n    display: flex;\r\n    gap: 1.25rem;\r\n    justify-content: center;\r\n}\r\n\r\n.submit-card {\r\n    background-color: white;\r\n    padding: 2.5rem;\r\n    border-radius: 1rem;\r\n    box-shadow: 0 4px 12px -2px hsl(222 97% 28% \/ 0.12);\r\n    border: 1px solid hsl(var(--border));\r\n    margin-bottom: 2rem;\r\n}\r\n\r\n.btn-submit {\r\n    background: hsl(var(--professional-blue));\r\n    color: white;\r\n    padding: 0.875rem 3rem;\r\n    border: none;\r\n    border-radius: 0.625rem;\r\n    font-size: 1.0625rem;\r\n    font-weight: 600;\r\n    cursor: pointer;\r\n    transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);\r\n    box-shadow: 0 2px 4px 0 rgb(0 0 0 \/ 0.08);\r\n}\r\n\r\n.btn-submit:hover {\r\n    background: hsl(222 97% 23%);\r\n    transform: translateY(-2px);\r\n    box-shadow: 0 4px 12px hsl(222 97% 28% \/ 0.3);\r\n}\r\n\r\n.btn-reset {\r\n    background: hsl(var(--professional-gray) \/ 0.8);\r\n    color: white;\r\n    padding: 0.875rem 2.5rem;\r\n    border: none;\r\n    border-radius: 0.625rem;\r\n    font-size: 1.0625rem;\r\n    font-weight: 500;\r\n    cursor: pointer;\r\n    transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);\r\n    box-shadow: 0 2px 4px 0 rgb(0 0 0 \/ 0.08);\r\n}\r\n\r\n.btn-reset:hover {\r\n    background: hsl(var(--professional-gray));\r\n    transform: translateY(-2px);\r\n    box-shadow: 0 4px 12px hsl(215 16% 47% \/ 0.3);\r\n}\r\n\r\n.btn-fill-sample {\r\n    display: none;\r\n    background: linear-gradient(135deg, hsl(38 92% 50%) 0%, hsl(27 90% 51%) 100%);\r\n    color: white;\r\n    padding: 0.75rem 2rem;\r\n    border: none;\r\n    border-radius: 0.5rem;\r\n    font-size: 0.938rem;\r\n    font-weight: 600;\r\n    cursor: pointer;\r\n    transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);\r\n    margin-bottom: 1.5rem;\r\n    box-shadow: 0 2px 4px 0 rgb(0 0 0 \/ 0.08);\r\n}\r\n\r\n.btn-fill-sample:hover {\r\n    transform: translateY(-1px);\r\n    box-shadow: 0 4px 12px hsl(38 92% 50% \/ 0.3);\r\n}\r\n\r\n.notice-section {\r\n    background: hsl(48 97% 88% \/ 0.5);\r\n    border: 1px solid hsl(48 97% 77%);\r\n    border-radius: 0.75rem;\r\n    padding: 1.75rem;\r\n    margin-bottom: 1.75rem;\r\n}\r\n\r\n.notice-title {\r\n    font-weight: 600;\r\n    color: hsl(38 92% 27%);\r\n    margin-bottom: 1rem;\r\n    font-size: 1.05rem;\r\n}\r\n\r\n.notice-list {\r\n    list-style-position: inside;\r\n    color: hsl(38 92% 27%);\r\n    line-height: 2;\r\n    font-size: 0.938rem;\r\n}\r\n\r\n.signature-section {\r\n    padding: 1.5rem;\r\n    background: hsl(var(--professional-gray-light) \/ 0.3);\r\n    border-radius: 0.75rem;\r\n    border: 1px solid hsl(var(--border));\r\n}\r\n\r\n@media (max-width: 1024px) {\r\n    .form-navigation {\r\n        position: relative;\r\n        top: 0;\r\n        left: 0;\r\n        width: 100%;\r\n        max-height: none;\r\n        margin-bottom: 1.5rem;\r\n    }\r\n\r\n    .form-content-wrapper {\r\n        margin-left: 0;\r\n    }\r\n\r\n    .nav-list {\r\n        display: flex;\r\n        flex-wrap: wrap;\r\n        gap: 0.5rem;\r\n    }\r\n\r\n    .nav-item {\r\n        margin-bottom: 0;\r\n    }\r\n}\r\n\r\n@media (max-width: 768px) {\r\n    .form-navigation {\r\n        display: none;\r\n    }\r\n\r\n    .form-content-wrapper {\r\n        margin-left: 0;\r\n    }\r\n\r\n    .hr-form-container {\r\n        padding: 1.5rem 1rem;\r\n    }\r\n    \r\n    .section-card {\r\n        padding: 1.5rem;\r\n        margin-bottom: 1rem;\r\n    }\r\n    \r\n    .sub-section {\r\n        padding: 1rem;\r\n        margin-bottom: 1rem;\r\n    }\r\n    \r\n    .form-header {\r\n        padding: 1.5rem;\r\n        margin-bottom: 1rem;\r\n    }\r\n    \r\n    .submit-card {\r\n        padding: 1.5rem;\r\n        margin-bottom: 1rem;\r\n    }\r\n    \r\n    .form-row {\r\n        grid-template-columns: 1fr;\r\n        gap: 1rem;\r\n    }\r\n    \r\n    .btn-container {\r\n        flex-direction: column;\r\n        gap: 0.75rem;\r\n    }\r\n    \r\n    .btn-submit, .btn-reset {\r\n        width: 100%;\r\n    }\r\n    \r\n    .form-header h1 {\r\n        font-size: 1.5rem;\r\n    }\r\n    \r\n    .nav-list {\r\n        display: grid;\r\n        grid-template-columns: repeat(2, 1fr);\r\n    }\r\n    \r\n    .back-to-top {\r\n        bottom: 1rem;\r\n        right: 1rem;\r\n        width: 2.5rem;\r\n        height: 2.5rem;\r\n    }\r\n    \r\n    .back-to-top svg {\r\n        width: 1.125rem;\r\n        height: 1.125rem;\r\n    }\r\n\r\n    \/* \u8a9e\u8a00\u80fd\u529b\u8868\u683c - \u624b\u6a5f\u7248\uff1a\u807d\u8aaa\u5beb\u6539\u70ba\u7e31\u5411\u6392\u5217 *\/\r\n    .language-table {\r\n        border: none;\r\n    }\r\n\r\n    .language-table thead {\r\n        display: none;\r\n    }\r\n\r\n    .language-table,\r\n    .language-table tbody {\r\n        display: block;\r\n        width: 100%;\r\n    }\r\n\r\n    .language-table tbody tr {\r\n        display: grid;\r\n        grid-template-columns: 1fr 1fr 1fr;\r\n        margin-bottom: 1rem;\r\n        border: 1px solid hsl(var(--border));\r\n        border-radius: 0.5rem;\r\n        overflow: hidden;\r\n    }\r\n\r\n    .language-table tbody tr td {\r\n        border: none;\r\n        padding: 0.5rem 0.75rem;\r\n        display: flex;\r\n        align-items: center;\r\n        justify-content: center;\r\n        gap: 0.25rem;\r\n    }\r\n\r\n    \/* \u8a9e\u8a00\u540d\u7a31 - \u4f54\u6eff\u6574\u884c *\/\r\n    .language-table tbody tr td:first-child {\r\n        grid-column: 1 \/ -1;\r\n        font-weight: 600;\r\n        background: hsl(var(--professional-blue-light) \/ 0.3);\r\n        justify-content: flex-start;\r\n        padding: 0.75rem;\r\n        border-bottom: 1px solid hsl(var(--border));\r\n    }\r\n\r\n    \/* \u807d\/\u8aaa\/\u5beb \u5206\u985e\u6a19\u7c64 - \u6bcf\u7d44\u7b2c\u4e00\u500b checkbox \u524d\u65b9 *\/\r\n    .language-table tbody tr td:nth-child(2)::before { content: '\u807d'; font-weight: 600; margin-right: 0.25rem; }\r\n    .language-table tbody tr td:nth-child(5)::before { content: '\u8aaa'; font-weight: 600; margin-right: 0.25rem; }\r\n    .language-table tbody tr td:nth-child(8)::before { content: '\u5beb'; font-weight: 600; margin-right: 0.25rem; }\r\n\r\n    \/* \u7a0b\u5ea6\u6a19\u7c64 - \u6bcf\u500b checkbox \u5f8c\u65b9 *\/\r\n    .language-table tbody tr td:nth-child(2)::after,\r\n    .language-table tbody tr td:nth-child(5)::after,\r\n    .language-table tbody tr td:nth-child(8)::after { content: '\u6d41\u5229'; font-size: 0.813rem; }\r\n\r\n    .language-table tbody tr td:nth-child(3)::after,\r\n    .language-table tbody tr td:nth-child(6)::after,\r\n    .language-table tbody tr td:nth-child(9)::after { content: '\u5c1a\u53ef'; font-size: 0.813rem; }\r\n\r\n    .language-table tbody tr td:nth-child(4)::after,\r\n    .language-table tbody tr td:nth-child(7)::after,\r\n    .language-table tbody tr td:nth-child(10)::after { content: '\u4e0d\u719f\u6089'; font-size: 0.813rem; }\r\n}\r\n\r\n@keyframes slideIn {\r\n    from {\r\n        opacity: 0;\r\n        transform: translateY(1.25rem);\r\n    }\r\n    to {\r\n        opacity: 1;\r\n        transform: translateY(0);\r\n    }\r\n}\r\n\r\n.work-experience-block {\r\n    animation: slideIn 0.3s cubic-bezier(0.4, 0, 0.2, 1);\r\n}\r\n\r\n.confirmation-modal {\r\n    display: none;\r\n    position: fixed;\r\n    z-index: 1000;\r\n    left: 0;\r\n    top: 0;\r\n    width: 100%;\r\n    height: 100%;\r\n    background-color: rgba(0, 0, 0, 0.6);\r\n    backdrop-filter: blur(4px);\r\n    animation: fadeIn 0.3s cubic-bezier(0.4, 0, 0.2, 1);\r\n    overflow-y: auto;\r\n}\r\n\r\n.confirmation-modal.show {\r\n    display: flex;\r\n    justify-content: center;\r\n    align-items: center;\r\n    padding: 2rem 0;\r\n}\r\n\r\n.confirmation-content {\r\n    background-color: white;\r\n    padding: 2.5rem;\r\n    border-radius: 1rem;\r\n    box-shadow: 0 20px 25px -5px rgb(0 0 0 \/ 0.1), 0 8px 10px -6px rgb(0 0 0 \/ 0.1);\r\n    max-width: 50rem;\r\n    width: 90%;\r\n    max-height: 85vh;\r\n    overflow-y: auto;\r\n    animation: slideUp 0.3s cubic-bezier(0.4, 0, 0.2, 1);\r\n    border: 1px solid hsl(var(--border));\r\n    margin: auto;\r\n}\r\n\r\n@keyframes fadeIn {\r\n    from {\r\n        opacity: 0;\r\n    }\r\n    to {\r\n        opacity: 1;\r\n    }\r\n}\r\n\r\n@keyframes slideUp {\r\n    from {\r\n        opacity: 0;\r\n        transform: translateY(2rem);\r\n    }\r\n    to {\r\n        opacity: 1;\r\n        transform: translateY(0);\r\n    }\r\n}\r\n\r\n.confirmation-header {\r\n    text-align: center;\r\n    margin-bottom: 2.25rem;\r\n    padding-bottom: 1.5rem;\r\n    border-bottom: 2px solid hsl(var(--border));\r\n}\r\n\r\n.confirmation-header h2 {\r\n    color: hsl(var(--foreground));\r\n    font-size: 1.625rem;\r\n    font-weight: 700;\r\n    margin: 0;\r\n}\r\n\r\n.confirmation-body {\r\n    margin-bottom: 2.25rem;\r\n}\r\n\r\n.confirmation-section {\r\n    margin-bottom: 1.75rem;\r\n}\r\n\r\n.confirmation-section-title {\r\n    font-size: 1.1rem;\r\n    font-weight: 600;\r\n    color: hsl(var(--foreground));\r\n    margin-bottom: 1rem;\r\n    padding: 0.75rem 1rem;\r\n    background: hsl(var(--professional-blue-light) \/ 0.35);\r\n    border-left: 4px solid hsl(var(--professional-blue));\r\n    border-radius: 0.375rem;\r\n}\r\n\r\n.confirmation-item {\r\n    display: flex;\r\n    padding: 0.75rem 1rem;\r\n    border-bottom: 1px solid hsl(var(--border));\r\n    transition: background-color 0.15s;\r\n}\r\n\r\n.confirmation-item:hover {\r\n    background: hsl(var(--professional-gray-light) \/ 0.2);\r\n}\r\n\r\n.confirmation-label {\r\n    font-weight: 500;\r\n    color: hsl(var(--foreground) \/ 0.7);\r\n    min-width: 10rem;\r\n    margin-right: 1.25rem;\r\n    font-size: 0.938rem;\r\n}\r\n\r\n.confirmation-value {\r\n    color: hsl(var(--foreground));\r\n    flex: 1;\r\n    word-break: break-word;\r\n    font-size: 0.938rem;\r\n}\r\n\r\n.confirmation-footer {\r\n    display: flex;\r\n    justify-content: center;\r\n    gap: 1.25rem;\r\n    padding-top: 1.75rem;\r\n    border-top: 2px solid hsl(var(--border));\r\n}\r\n\r\n.btn-confirm, .btn-cancel {\r\n    padding: 0.875rem 2.5rem;\r\n    border: none;\r\n    border-radius: 0.625rem;\r\n    font-size: 1.0625rem;\r\n    font-weight: 600;\r\n    cursor: pointer;\r\n    transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);\r\n    box-shadow: 0 2px 4px 0 rgb(0 0 0 \/ 0.08);\r\n}\r\n\r\n.btn-confirm {\r\n    background: #FF7D00;\r\n    color: white;\r\n}\r\n\r\n.btn-confirm:hover {\r\n    background: #E06D00;\r\n    transform: translateY(-2px);\r\n    box-shadow: 0 4px 12px rgba(255, 125, 0, 0.3);\r\n}\r\n\r\n.btn-cancel {\r\n    background: hsl(var(--professional-gray) \/ 0.8);\r\n    color: white;\r\n}\r\n\r\n.btn-cancel:hover {\r\n    background: hsl(var(--professional-gray));\r\n    transform: translateY(-2px);\r\n    box-shadow: 0 4px 12px hsl(215 16% 47% \/ 0.3);\r\n}\r\n\r\n.confirmation-empty {\r\n    color: hsl(var(--professional-gray) \/ 0.7);\r\n    font-style: italic;\r\n    font-size: 0.938rem;\r\n}\r\n\r\n@media (max-width: 768px) {\r\n    .confirmation-content {\r\n        width: 95%;\r\n        padding: 1.5rem;\r\n        max-height: 90vh;\r\n    }\r\n    \r\n    .confirmation-label {\r\n        min-width: 7rem;\r\n    }\r\n    \r\n    .confirmation-footer {\r\n        flex-direction: column;\r\n    }\r\n    \r\n    .btn-confirm, .btn-cancel {\r\n        width: 100%;\r\n    }\r\n}\r\n<\/style>\r\n<\/head>\r\n<body>\r\n<div class=\"hr-form-container\">\r\n    <!-- \u5de6\u5074\u5c0e\u822a -->\r\n    <nav class=\"form-navigation\">\r\n        <ul class=\"nav-list\">\r\n            <li class=\"nav-item\"><a class=\"nav-link active\" data-section=\"basic-info\">\u57fa\u672c\u8cc7\u6599<\/a><\/li>\r\n            <li class=\"nav-item\"><a class=\"nav-link\" data-section=\"education\">\u5b78\u6b77<\/a><\/li>\r\n            <li class=\"nav-item\"><a class=\"nav-link\" data-section=\"work-experience\">\u5de5\u4f5c\u7d93\u6b77<\/a><\/li>\r\n            <li class=\"nav-item\"><a class=\"nav-link\" data-section=\"language-skills\">\u8a9e\u8a00\u80fd\u529b<\/a><\/li>\r\n            <li class=\"nav-item\"><a class=\"nav-link\" data-section=\"other-info\">\u5176\u4ed6\u8cc7\u8a0a<\/a><\/li>\r\n            <li class=\"nav-item\"><a class=\"nav-link\" data-section=\"declarations\">\u5176\u4ed6\u8072\u660e<\/a><\/li>\r\n            <li class=\"nav-item\"><a class=\"nav-link\" data-section=\"emergency-contact\">\u7dca\u6025\u9023\u7d61\u4eba<\/a><\/li>\r\n        <\/ul>\r\n    <\/nav>\r\n\r\n    <!-- \u53f3\u5074\u8868\u55ae\u5167\u5bb9 -->\r\n    <div class=\"form-content-wrapper\">\r\n        <form class=\"hr-form\" id=\"hrApplicationForm\">\r\n            <div class=\"form-header\">\r\n                <h1>\u6c42\u8077\u8005\u8cc7\u6599\u8868\u55ae<\/h1>\r\n                <button type=\"button\" class=\"btn-fill-sample\" onclick=\"fillSampleData()\">\ud83d\udcdd \u586b\u5165\u7bc4\u4f8b\u8cc7\u6599\uff08\u6e2c\u8a66\u7528\uff09<\/button>\r\n            <\/div>\r\n\r\n            <!-- \u57fa\u672c\u8cc7\u6599 -->\r\n            <section id=\"basic-info\" class=\"section-card\">\r\n                <h2 class=\"section-title\">\u57fa\u672c\u8cc7\u6599<\/h2>\r\n                <!-- \u61c9\u5fb5\u8077\u52d9 -->\r\n                <div class=\"sub-section\">\r\n                    <h3 class=\"sub-section-title\">\u61c9\u5fb5\u8077\u52d9<\/h3>\r\n                    <div class=\"form-group\">\r\n                        <label class=\"form-label\" for=\"position\">\u61c9\u5fb5\u8077\u52d9 <span class=\"required\">*<\/span><\/label>\r\n                        <input type=\"text\" class=\"form-control\" id=\"position\" name=\"position\" placeholder=\"\u8acb\u8f38\u5165\u61c9\u5fb5\u8077\u52d9\" required maxlength=\"191\">\r\n                    <\/div>\r\n                <\/div>\r\n\r\n                <!-- \u500b\u4eba\u57fa\u672c\u8cc7\u6599 -->\r\n                <div class=\"sub-section\">\r\n                    <h3 class=\"sub-section-title\">\u500b\u4eba\u57fa\u672c\u8cc7\u6599<\/h3>\r\n                    <div class=\"form-row\">\r\n                        <div class=\"form-group\">\r\n                            <label class=\"form-label\" for=\"name\">\u4e2d\u6587\u59d3\u540d <span class=\"required\">*<\/span><\/label>\r\n                            <input type=\"text\" class=\"form-control\" id=\"name\" name=\"name\" required placeholder=\"\u8acb\u8f38\u5165\u60a8\u7684\u4e2d\u6587\u59d3\u540d\" maxlength=\"191\">\r\n                        <\/div>\r\n                        <div class=\"form-group\">\r\n                            <label class=\"form-label\" for=\"englishName\">\u82f1\u6587\u59d3\u540d <span class=\"required\">*<\/span><\/label>\r\n                            <input type=\"text\" class=\"form-control\" id=\"englishName\" name=\"englishName\" required placeholder=\"\u5982\u5f8c\u7e8c\u5165\u8077\u5c07\u4f5c\u70ba email \u4f7f\u7528\uff0cex: Alice Wang\" maxlength=\"191\">\r\n                            <small id=\"englishNameError\" style=\"color: #e74c3c; display: none; margin-top: 5px; font-size: 0.75rem;\"><\/small>\r\n                        <\/div>\r\n                    <\/div>\r\n                    <div class=\"form-row\" style=\"grid-template-columns: repeat(2, 1fr);\">\r\n                        <div class=\"form-group\">\r\n                            <label class=\"form-label\" for=\"idNumber\">\u8eab\u5206\u8b49\u5b57\u865f<\/label>\r\n                            <input type=\"text\" class=\"form-control\" id=\"idNumber\" name=\"idNumber\" placeholder=\"A123456789\" maxlength=\"10\">\r\n                            <small id=\"idNumberError\" style=\"color: #e74c3c; display: none; margin-top: 5px; font-size: 0.75rem;\"><\/small>\r\n                        <\/div>\r\n                        <div class=\"form-group\">\r\n                            <label class=\"form-label\" for=\"birthdate\">\u51fa\u751f\u65e5\u671f <span class=\"required\">*<\/span><\/label>\r\n                            <input type=\"date\" class=\"form-control\" id=\"birthdate\" name=\"birthdate\" required>\r\n                        <\/div>\r\n                    <\/div>\r\n                    <div class=\"form-row\" style=\"grid-template-columns: repeat(2, 1fr);\">\r\n                        <div class=\"form-group\">\r\n                            <label class=\"form-label\" for=\"gender\">\u6027\u5225 <span class=\"required\">*<\/span><\/label>\r\n                            <select class=\"form-control\" id=\"gender\" name=\"gender\" required>\r\n                                <option value=\"\">\u8acb\u9078\u64c7<\/option>\r\n                                <option value=\"\u7537\">\u7537<\/option>\r\n                                <option value=\"\u5973\">\u5973<\/option>\r\n                                <option value=\"\u5176\u4ed6\">\u5176\u4ed6<\/option>\r\n                            <\/select>\r\n                        <\/div>\r\n                        <div class=\"form-group\">\r\n                            <label class=\"form-label\" for=\"militaryService\">\u5175\u5f79\u72c0\u6cc1 <span class=\"required\">*<\/span><\/label>\r\n                            <select class=\"form-control\" id=\"militaryService\" name=\"militaryService\" required>\r\n                                <option value=\"\">\u8acb\u9078\u64c7<\/option>\r\n                                <option value=\"\u5df2\u9000\u4f0d\">\u5df2\u9000\u4f0d<\/option>\r\n                                <option value=\"\u66ff\u4ee3\u5f79\">\u66ff\u4ee3\u5f79<\/option>\r\n                                <option value=\"\u514d\u5f79\">\u514d\u5f79<\/option>\r\n                                <option value=\"\u672a\u5f79\">\u672a\u5f79<\/option>\r\n                            <\/select>\r\n                        <\/div>\r\n                    <\/div>\r\n                <\/div>\r\n\r\n                <!-- \u806f\u7d61\u8cc7\u8a0a -->\r\n                <div class=\"sub-section\">\r\n                    <h3 class=\"sub-section-title\">\u806f\u7d61\u8cc7\u8a0a<\/h3>\r\n                    <div class=\"form-group\">\r\n                        <label class=\"form-label\" for=\"phone\">\u96fb\u8a71 <span class=\"required\">*<\/span><\/label>\r\n                        <input type=\"tel\" class=\"form-control\" id=\"phone\" name=\"phone\" required placeholder=\"0912345678\" maxlength=\"191\">\r\n                    <\/div>\r\n                    <div class=\"form-group\">\r\n                        <label class=\"form-label\" for=\"contact_mail\">\u96fb\u5b50\u90f5\u4ef6 <span class=\"required\">*<\/span><\/label>\r\n                        <input type=\"text\" class=\"form-control\" id=\"contact_mail\" name=\"contact_mail\" required placeholder=\"example@example.com\" autocomplete=\"off\" maxlength=\"191\">\r\n                        <small id=\"contactMailError\" style=\"color: #e74c3c; display: none; margin-top: 5px; font-size: 0.75rem;\"><\/small>\r\n                    <\/div>\r\n                    <div class=\"form-group\">\r\n                        <label class=\"form-label\" for=\"mailingAddress\">\u901a\u8a0a\u5730\u5740 <span class=\"required\">*<\/span><\/label>\r\n                        <input type=\"text\" class=\"form-control\" id=\"mailingAddress\" name=\"mailingAddress\" required placeholder=\"\u8acb\u586b\u5beb\u60a8\u7684\u901a\u8a0a\u5730\u5740\" maxlength=\"191\">\r\n                    <\/div>\r\n                    <div class=\"form-group\">\r\n                        <label class=\"form-label\" for=\"domicileAddress\">\u6236\u7c4d\u5730\u5740<\/label>\r\n                        <input type=\"text\" class=\"form-control\" id=\"domicileAddress\" name=\"domicileAddress\" placeholder=\"\u8acb\u586b\u5beb\u60a8\u7684\u6236\u7c4d\u5730\u5740\" maxlength=\"191\">\r\n                    <\/div>\r\n                <\/div>\r\n            <\/section>\r\n\r\n        <!-- \u5b78\u6b77 -->\r\n        <section id=\"education\" class=\"section-card\">\r\n            <h2 class=\"section-title\">\u5b78\u6b77<\/h2>\r\n        \r\n        <div class=\"work-experience-block\">\r\n            <div class=\"work-experience-header\">\u6700\u9ad8\u5b78\u6b77<\/div>\r\n            <div class=\"form-row\">\r\n                <div class=\"form-group\">\r\n                    <label class=\"form-label\" for=\"edu1_level\">\u5b78\u4f4d <span class=\"required\">*<\/span><\/label>\r\n                    <select class=\"form-control\" id=\"edu1_level\" name=\"edu1_level\" required>\r\n                        <option value=\"\">\u8acb\u9078\u64c7<\/option>\r\n                        <option value=\"\u535a\u58eb\">\u535a\u58eb<\/option>\r\n                        <option value=\"\u78a9\u58eb\">\u78a9\u58eb<\/option>\r\n                        <option value=\"\u5927\u5b78\">\u5927\u5b78<\/option>\r\n                        <option value=\"\u5c08\u79d1\">\u5c08\u79d1<\/option>\r\n                        <option value=\"\u9ad8\u4e2d\u8077\">\u9ad8\u4e2d\u8077<\/option>\r\n                    <\/select>\r\n                <\/div>\r\n                <div class=\"form-group\">\r\n                    <label class=\"form-label\" for=\"edu1_school\">\u5b78\u6821\u540d\u7a31 <span class=\"required\">*<\/span><\/label>\r\n                    <input type=\"text\" class=\"form-control\" id=\"edu1_school\" name=\"edu1_school\" required maxlength=\"191\">\r\n                <\/div>\r\n            <\/div>\r\n            <div class=\"form-row\">\r\n                <div class=\"form-group\">\r\n                    <label class=\"form-label\" for=\"edu1_department\">\u4e3b\u4fee\u79d1\u76ee <span class=\"required\">*<\/span><\/label>\r\n                    <input type=\"text\" class=\"form-control\" id=\"edu1_department\" name=\"edu1_department\" required maxlength=\"191\">\r\n                <\/div>\r\n            <\/div>\r\n            <div class=\"form-row\">\r\n                <div class=\"form-group\">\r\n                    <label class=\"form-label\" for=\"edu1_start\">\u5165\u5b78\u5e74\u6708 <span class=\"required\">*<\/span><\/label>\r\n                    <input type=\"month\" class=\"form-control\" id=\"edu1_start\" name=\"edu1_start\" required>\r\n                <\/div>\r\n                <div class=\"form-group\">\r\n                    <label class=\"form-label\" for=\"edu1_end\">\u96e2\u6821\u5e74\u6708 <span class=\"required\">*<\/span><\/label>\r\n                    <input type=\"month\" class=\"form-control\" id=\"edu1_end\" name=\"edu1_end\" required>\r\n                <\/div>\r\n            <\/div>\r\n            <div class=\"form-row\">\r\n                <div class=\"form-group\">\r\n                    <label class=\"form-label\" for=\"edu1_status\">\u5c31\u5b78\u72c0\u614b <span class=\"required\">*<\/span><\/label>\r\n                    <select class=\"form-control\" id=\"edu1_status\" name=\"edu1_status\" required>\r\n                        <option value=\"\">\u8acb\u9078\u64c7<\/option>\r\n                        <option value=\"\u5df2\u7562\u696d\">\u5df2\u7562\u696d<\/option>\r\n                        <option value=\"\u5728\u5b78\u4e2d\">\u5728\u5b78\u4e2d<\/option>\r\n                        <option value=\"\u8084\u696d\">\u8084\u696d<\/option>\r\n                    <\/select>\r\n                <\/div>\r\n            <\/div>\r\n        <\/div>\r\n\r\n        <div class=\"work-experience-block\">\r\n            <div class=\"work-experience-header\">\u6b21\u9ad8\u5b78\u6b77<\/div>\r\n            <div class=\"form-row\">\r\n                <div class=\"form-group\">\r\n                    <label class=\"form-label\" for=\"edu2_level\">\u5b78\u4f4d<\/label>\r\n                    <select class=\"form-control\" id=\"edu2_level\" name=\"edu2_level\">\r\n                        <option value=\"\">\u8acb\u9078\u64c7<\/option>\r\n                        <option value=\"\u535a\u58eb\">\u535a\u58eb<\/option>\r\n                        <option value=\"\u78a9\u58eb\">\u78a9\u58eb<\/option>\r\n                        <option value=\"\u5927\u5b78\">\u5927\u5b78<\/option>\r\n                        <option value=\"\u5c08\u79d1\">\u5c08\u79d1<\/option>\r\n                        <option value=\"\u9ad8\u4e2d\u8077\">\u9ad8\u4e2d\u8077<\/option>\r\n                    <\/select>\r\n                <\/div>\r\n                <div class=\"form-group\">\r\n                    <label class=\"form-label\" for=\"edu2_school\">\u5b78\u6821\u540d\u7a31<\/label>\r\n                    <input type=\"text\" class=\"form-control\" id=\"edu2_school\" name=\"edu2_school\" maxlength=\"191\">\r\n                <\/div>\r\n            <\/div>\r\n            <div class=\"form-row\">\r\n                <div class=\"form-group\">\r\n                    <label class=\"form-label\" for=\"edu2_department\">\u4e3b\u4fee\u79d1\u76ee<\/label>\r\n                    <input type=\"text\" class=\"form-control\" id=\"edu2_department\" name=\"edu2_department\" placeholder=\"\u4e00\u822c\u9ad8\u4e2d\u586b\u5beb\u666e\u901a\u79d1\u5373\u53ef\" maxlength=\"191\">\r\n                <\/div>\r\n            <\/div>\r\n            <div class=\"form-row\">\r\n                <div class=\"form-group\">\r\n                    <label class=\"form-label\" for=\"edu2_start\">\u5165\u5b78\u5e74\u6708<\/label>\r\n                    <input type=\"month\" class=\"form-control\" id=\"edu2_start\" name=\"edu2_start\">\r\n                <\/div>\r\n                <div class=\"form-group\">\r\n                    <label class=\"form-label\" for=\"edu2_end\">\u96e2\u6821\u5e74\u6708<\/label>\r\n                    <input type=\"month\" class=\"form-control\" id=\"edu2_end\" name=\"edu2_end\">\r\n                <\/div>\r\n            <\/div>\r\n            <div class=\"form-row\">\r\n                <div class=\"form-group\">\r\n                    <label class=\"form-label\" for=\"edu2_status\">\u5c31\u5b78\u72c0\u614b<\/label>\r\n                    <select class=\"form-control\" id=\"edu2_status\" name=\"edu2_status\">\r\n                        <option value=\"\">\u8acb\u9078\u64c7<\/option>\r\n                        <option value=\"\u5df2\u7562\u696d\">\u5df2\u7562\u696d<\/option>\r\n                        <option value=\"\u5728\u5b78\u4e2d\">\u5728\u5b78\u4e2d<\/option>\r\n                        <option value=\"\u8084\u696d\">\u8084\u696d<\/option>\r\n                    <\/select>\r\n                <\/div>\r\n            <\/div>\r\n        <\/div>\r\n        <\/section>\r\n\r\n        <!-- \u5de5\u4f5c\u7d93\u6b77 -->\r\n        <section id=\"work-experience\" class=\"section-card\">\r\n            <h2 class=\"section-title\">\u5de5\u4f5c\u7d93\u6b77<\/h2>\r\n        \r\n        <!-- \u52d5\u614b\u5de5\u4f5c\u7d93\u6b77\u5bb9\u5668 -->\r\n        <div id=\"workExperienceContainer\">\r\n            <!-- \u5de5\u4f5c\u7d93\u6b77\u6703\u52d5\u614b\u63d2\u5165\u9019\u88e1 -->\r\n        <\/div>\r\n        \r\n        <!-- \u65b0\u589e\u5de5\u4f5c\u7d93\u6b77\u6309\u9215 -->\r\n        <button type=\"button\" class=\"btn-add-work\" onclick=\"addWorkExperience()\">+ \u65b0\u589e\u5de5\u4f5c\u7d93\u6b77<\/button>\r\n        <\/section>\r\n\r\n        <!-- \u8a9e\u8a00\u80fd\u529b -->\r\n        <section id=\"language-skills\" class=\"section-card\">\r\n            <h2 class=\"section-title\">\u8a9e\u8a00\u80fd\u529b<\/h2>\r\n        <table class=\"language-table\">\r\n            <thead>\r\n                <tr>\r\n                    <th>\u8a9e\u8a00<\/th>\r\n                    <th colspan=\"3\">\u807d<\/th>\r\n                    <th colspan=\"3\">\u8aaa<\/th>\r\n                    <th colspan=\"3\">\u5beb<\/th>\r\n                <\/tr>\r\n                <tr>\r\n                    <th><\/th>\r\n                    <th>\u6d41\u5229<\/th>\r\n                    <th>\u5c1a\u53ef<\/th>\r\n                    <th>\u4e0d\u719f\u6089<\/th>\r\n                    <th>\u6d41\u5229<\/th>\r\n                    <th>\u5c1a\u53ef<\/th>\r\n                    <th>\u4e0d\u719f\u6089<\/th>\r\n                    <th>\u6d41\u5229<\/th>\r\n                    <th>\u5c1a\u53ef<\/th>\r\n                    <th>\u4e0d\u719f\u6089<\/th>\r\n                <\/tr>\r\n            <\/thead>\r\n            <tbody>\r\n                <tr>\r\n                    <td>\u82f1\u8a9e<\/td>\r\n                    <td><input type=\"checkbox\" name=\"eng_fluent_listen\"><\/td>\r\n                    <td><input type=\"checkbox\" name=\"eng_fair_listen\"><\/td>\r\n                    <td><input type=\"checkbox\" name=\"eng_poor_listen\"><\/td>\r\n                    <td><input type=\"checkbox\" name=\"eng_fluent_speak\"><\/td>\r\n                    <td><input type=\"checkbox\" name=\"eng_fair_speak\"><\/td>\r\n                    <td><input type=\"checkbox\" name=\"eng_poor_speak\"><\/td>\r\n                    <td><input type=\"checkbox\" name=\"eng_fluent_write\"><\/td>\r\n                    <td><input type=\"checkbox\" name=\"eng_fair_write\"><\/td>\r\n                    <td><input type=\"checkbox\" name=\"eng_poor_write\"><\/td>\r\n                <\/tr>\r\n                <tr>\r\n                    <td>\u65e5\u8a9e<\/td>\r\n                    <td><input type=\"checkbox\" name=\"jp_fluent_listen\"><\/td>\r\n                    <td><input type=\"checkbox\" name=\"jp_fair_listen\"><\/td>\r\n                    <td><input type=\"checkbox\" name=\"jp_poor_listen\"><\/td>\r\n                    <td><input type=\"checkbox\" name=\"jp_fluent_speak\"><\/td>\r\n                    <td><input type=\"checkbox\" name=\"jp_fair_speak\"><\/td>\r\n                    <td><input type=\"checkbox\" name=\"jp_poor_speak\"><\/td>\r\n                    <td><input type=\"checkbox\" name=\"jp_fluent_write\"><\/td>\r\n                    <td><input type=\"checkbox\" name=\"jp_fair_write\"><\/td>\r\n                    <td><input type=\"checkbox\" name=\"jp_poor_write\"><\/td>\r\n                <\/tr>\r\n            <\/tbody>\r\n        <\/table>\r\n        \r\n        <!-- \u65b0\u589e\u5176\u4ed6\u8a9e\u8a00\u6309\u9215 -->\r\n        <button type=\"button\" class=\"btn-add-work\" onclick=\"addOtherLanguage()\">+ \u65b0\u589e\u5176\u4ed6\u8a9e\u8a00<\/button>\r\n        <\/section>\r\n\r\n        <!-- \u5176\u4ed6\u8cc7\u8a0a -->\r\n        <section id=\"other-info\" class=\"section-card\">\r\n            <h2 class=\"section-title\">\u5176\u4ed6\u8cc7\u8a0a<\/h2>\r\n        \r\n\r\n        <div class=\"form-group\">\r\n            <label class=\"form-label\">\u61c9\u5fb5\u7ba1\u9053 <span class=\"required\">*<\/span><\/label>\r\n            <div class=\"radio-group\">\r\n                <label class=\"radio-label\">\r\n                    <input type=\"radio\" name=\"application_channel\" value=\"\u516c\u53f8\u4e3b\u52d5\u806f\u7d61\" required> \u516c\u53f8\u4e3b\u52d5\u806f\u7d61\r\n                <\/label>\r\n                <label class=\"radio-label\">\r\n                    <input type=\"radio\" name=\"application_channel\" value=\"104\u4eba\u529b\u9280\u884c\"> 104\u4eba\u529b\u9280\u884c\r\n                <\/label>\r\n                <label class=\"radio-label\">\r\n                    <input type=\"radio\" name=\"application_channel\" value=\"\u5167\u90e8\u63a8\u85a6\"> \u5167\u90e8\u63a8\u85a6\r\n                <\/label>\r\n                <label class=\"radio-label\">\r\n                    <input type=\"radio\" name=\"application_channel\" value=\"\u793e\u7fa4\u5e73\u53f0\"> \u793e\u7fa4\u5e73\u53f0\r\n                <\/label>\r\n                <label class=\"radio-label\">\r\n                    <input type=\"radio\" name=\"application_channel\" value=\"\u516c\u53f8\u5b98\u7db2\"> \u516c\u53f8\u5b98\u7db2\r\n                <\/label>\r\n                <label class=\"radio-label\">\r\n                    <input type=\"radio\" name=\"application_channel\" value=\"\u5176\u4ed6\"> \u5176\u4ed6\r\n                <\/label>\r\n            <\/div>\r\n        <\/div>\r\n        \r\n        <div class=\"form-group\">\r\n            <label class=\"form-label\" for=\"referrer\">\u5167\u90e8\u63a8\u85a6\u4eba<\/label>\r\n            <input type=\"text\" class=\"form-control\" id=\"referrer\" name=\"referrer\" placeholder=\"\u8acb\u586b\u5beb\u63a8\u85a6\u4eba\u59d3\u540d\" maxlength=\"191\">\r\n        <\/div>\r\n\r\n        <div class=\"form-group\">\r\n            <label class=\"form-label\">\u671f\u671b\u5f85\u9047 <span class=\"required\">*<\/span><\/label>\r\n            <div class=\"radio-group\">\r\n                <label class=\"radio-label\">\r\n                    <input type=\"radio\" name=\"employment_type\" value=\"\u6b63\u8077\" required onchange=\"toggleSalaryFields()\"> \u6b63\u8077\r\n                <\/label>\r\n                <label class=\"radio-label\">\r\n                    <input type=\"radio\" name=\"employment_type\" value=\"\u5be6\u7fd2\" onchange=\"toggleSalaryFields()\"> \u5be6\u7fd2\r\n                <\/label>\r\n            <\/div>\r\n        <\/div>\r\n\r\n        <div id=\"fulltime-salary-fields\" style=\"display: none;\">\r\n            <div class=\"form-group\">\r\n                <label class=\"form-label\" for=\"expected_monthly_salary\">\u671f\u671b\u6708\u85aa <span class=\"required\">*<\/span><\/label>\r\n                <input type=\"text\" class=\"form-control\" id=\"expected_monthly_salary\" name=\"expected_monthly_salary\" placeholder=\"\u8acb\u8f38\u5165\u671f\u671b\u6708\u85aa\" maxlength=\"191\">\r\n            <\/div>\r\n            <div class=\"form-group\">\r\n                <label class=\"form-label\" for=\"expected_annual_salary\">\u671f\u671b\u5e74\u85aa <span class=\"required\">*<\/span><\/label>\r\n                <input type=\"text\" class=\"form-control\" id=\"expected_annual_salary\" name=\"expected_annual_salary\" placeholder=\"\u8acb\u8f38\u5165\u671f\u671b\u5e74\u85aa\" maxlength=\"191\">\r\n            <\/div>\r\n        <\/div>\r\n\r\n        <div id=\"intern-salary-fields\" style=\"display: none;\">\r\n            <div class=\"form-group\">\r\n                <label class=\"form-label\" for=\"expected_hourly_salary\">\u671f\u671b\u6642\u85aa <span class=\"required\">*<\/span><\/label>\r\n                <input type=\"text\" class=\"form-control\" id=\"expected_hourly_salary\" name=\"expected_hourly_salary\" placeholder=\"\u8acb\u8f38\u5165\u671f\u671b\u6642\u85aa\" maxlength=\"191\">\r\n            <\/div>\r\n        <\/div>\r\n\r\n        <div class=\"form-group\">\r\n            <label class=\"form-label\" for=\"available_date\">\u53ef\u5230\u8077\u65e5 <span class=\"required\">*<\/span><\/label>\r\n            <input type=\"text\" class=\"form-control\" id=\"available_date\" name=\"available_date\" placeholder=\"\u8acb\u8f38\u5165\u53ef\u5230\u8077\u65e5\" required maxlength=\"191\">\r\n        <\/div>\r\n        <\/section>\r\n\r\n        <!-- \u5176\u4ed6\u8072\u660e -->\r\n        <section id=\"declarations\" class=\"section-card\">\r\n            <h2 class=\"section-title\">\u5176\u4ed6\u8072\u660e<\/h2>\r\n        \r\n        <div class=\"form-group\">\r\n            <label class=\"form-label\">1. \u662f\u5426\u66fe\u727d\u6d89\u53f8\u6cd5\u8a34\u8a1f<\/label>\r\n            <div class=\"radio-group\">\r\n                <label class=\"radio-label\">\r\n                    <input type=\"radio\" name=\"legal_issue\" value=\"\u5426\"> \u5426\r\n                <\/label>\r\n                <label class=\"radio-label\">\r\n                    <input type=\"radio\" name=\"legal_issue\" value=\"\u662f\"> \u662f\r\n                <\/label>\r\n            <\/div>\r\n        <\/div>\r\n\r\n        <div class=\"form-group\">\r\n            <label class=\"form-label\">2. \u662f\u5426\u66fe\u53d7\u53f8\u6cd5\u6a5f\u95dc\u5224\u5211<\/label>\r\n            <div class=\"radio-group\">\r\n                <label class=\"radio-label\">\r\n                    <input type=\"radio\" name=\"conviction\" value=\"\u5426\"> \u5426\r\n                <\/label>\r\n                <label class=\"radio-label\">\r\n                    <input type=\"radio\" name=\"conviction\" value=\"\u662f\"> \u662f\r\n                <\/label>\r\n            <\/div>\r\n        <\/div>\r\n\r\n        <div class=\"form-group\">\r\n            <label class=\"form-label\">3. \u662f\u5426\u66fe\u5728\u5176\u4ed6\u516c\u53f8\u7c3d\u7f72\u300c\u7af6\u696d\u7981\u6b62\u689d\u6b3e\u300d<\/label>\r\n            <div class=\"radio-group\">\r\n                <label class=\"radio-label\">\r\n                    <input type=\"radio\" name=\"non_compete\" value=\"\u5426\"> \u5426\r\n                <\/label>\r\n                <label class=\"radio-label\">\r\n                    <input type=\"radio\" name=\"non_compete\" value=\"\u662f\"> \u662f\r\n                <\/label>\r\n            <\/div>\r\n        <\/div>\r\n\r\n        <div class=\"form-group\">\r\n            <label class=\"form-label\">4. \u8eab\u5fc3\u969c\u7919\u624b\u518a<\/label>\r\n            <div class=\"radio-group\">\r\n                <label class=\"radio-label\">\r\n                    <input type=\"radio\" name=\"disability\" value=\"\u7121\"> \u7121\r\n                <\/label>\r\n                <label class=\"radio-label\">\r\n                    <input type=\"radio\" name=\"disability\" value=\"\u6709\"> \u6709\r\n                <\/label>\r\n            <\/div>\r\n        <\/div>\r\n        <\/section>\r\n\r\n        <!-- \u7dca\u6025\u9023\u7d61\u4eba -->\r\n        <section id=\"emergency-contact\" class=\"section-card\">\r\n            <h2 class=\"section-title\">\u7dca\u6025\u9023\u7d61\u4eba<\/h2>\r\n        \r\n        <div class=\"form-row\">\r\n            <div class=\"form-group\">\r\n                <label class=\"form-label\" for=\"emergency_name\">\u7dca\u6025\u9023\u7d61\u4eba\u59d3\u540d<\/label>\r\n                <input type=\"text\" class=\"form-control\" id=\"emergency_name\" name=\"emergency_name\" placeholder=\"\u738b\u5c0f\u660e\" maxlength=\"191\">\r\n            <\/div>\r\n            <div class=\"form-group\">\r\n                <label class=\"form-label\" for=\"emergency_relation\">\u95dc\u4fc2<\/label>\r\n                <select class=\"form-control\" id=\"emergency_relation\" name=\"emergency_relation\">\r\n                    <option value=\"\">\u8acb\u9078\u64c7<\/option>\r\n                    <option value=\"\u7236\u89aa\">\u7236\u89aa<\/option>\r\n                    <option value=\"\u6bcd\u89aa\">\u6bcd\u89aa<\/option>\r\n                    <option value=\"\u914d\u5076\">\u914d\u5076<\/option>\r\n                    <option value=\"\u5144\u5f1f\u59d0\u59b9\">\u5144\u5f1f\u59d0\u59b9<\/option>\r\n                    <option value=\"\u5176\u4ed6\">\u5176\u4ed6<\/option>\r\n                <\/select>\r\n            <\/div>\r\n            <div class=\"form-group\">\r\n                <label class=\"form-label\" for=\"emergency_phone\">\u7dca\u6025\u9023\u7d61\u4eba\u96fb\u8a71<\/label>\r\n                <input type=\"tel\" class=\"form-control\" id=\"emergency_phone\" name=\"emergency_phone\" placeholder=\"0912345678\" maxlength=\"191\">\r\n            <\/div>\r\n        <\/div>\r\n        <\/section>\r\n\r\n        <!-- \u6ce8\u610f\u4e8b\u9805\u8207\u7c3d\u540d -->\r\n        <section class=\"section-card\">\r\n            <h2 class=\"section-title\">\u6ce8\u610f\u4e8b\u9805\u8207\u7c3d\u540d<\/h2>\r\n        <div class=\"notice-section\">\r\n            <div class=\"notice-title\">\u6ce8\u610f\u4e8b\u9805\uff1a<\/div>\r\n            <ul class=\"notice-list\">\r\n                <li>\u672c\u4eba\u4fdd\u8b49\u4ee5\u4e0a\u6240\u586b\u5beb\u8cc7\u6599\u5c6c\u5be6\uff0c\u5982\u6709\u865b\u507d\u60c5\u4e8b\uff0c\u9858\u53d7\u89e3\u8077\u8655\u5206\u6216\u7d42\u6b62\u7504\u9078\u4efb\u7528\u7a0b\u5e8f\u3002<\/li>\r\n                <li>\u672c\u4eba\u4e86\u89e3\u4e14\u540c\u610f\uff0c\u65bc\u57f7\u884c\u696d\u52d9\u6642\u9700\u9075\u5b88\u71df\u696d\u79d8\u5bc6\u6cd5\u53ca\u500b\u8cc7\u4fdd\u8b77\u6cd5\u7b49\u76f8\u95dc\u898f\u5b9a\uff0c\u4e0d\u5f97\u5c07\u696d\u52d9\u4e0a\u6240\u77e5\u6089\u4e4b\u71df\u696d\u4e8b\u9805\u6216\u57f7\u884c\u5167\u5bb9\u6d29\u6f0f\u4e88\u7b2c\u4e09\u4eba\u3002\u5982\u6709\u9055\u53cd\uff0c\u5247\u61c9\u8ca0\u640d\u5bb3\u8ce0\u511f\u53ca\u76f8\u95dc\u6cd5\u5f8b\u4e0a\u8cac\u4efb\u3002<\/li>\r\n                <li>\u672c\u4eba\u77e5\u6089\u516c\u53f8\u4f9d\u500b\u4eba\u8cc7\u6599\u4fdd\u8b77\u6cd5\u53ca\u76f8\u95dc\u6cd5\u4ee4\u4e4b\u898f\u5b9a\u57f7\u884c\u500b\u4eba\u8cc7\u6599\u6536\u96c6\uff0c\u4e26\u65bc\u5fc5\u8981\u6642\u9032\u884c\u8cc7\u6599\u9a57\u8b49\u3002<\/li>\r\n                <li>\u672c\u4eba\u540c\u610f\u53ca\u6388\u6b0a\u516c\u53f8\u3001\u95dc\u4fc2\u4f01\u696d\u8207\u8077\u5de5\u798f\u5229\u59d4\u54e1\u6703\u53ca\u6240\u59d4\u8a17\u4e4b\u7b2c\u4e09\u4eba\u70ba\u62db\u52df\u8058\u7528\u3001\u4eba\u4e8b\u7ba1\u7406\u53ca\u696d\u52d9\u57f7\u884c\u4e4b\u76ee\u7684\uff0c\u5728\u7b26\u5408\u500b\u4eba\u8cc7\u6599\u4fdd\u8b77\u76f8\u95dc\u6cd5\u4ee4\u4e4b\u7bc4\u570d\u5167\u8490\u96c6\u3001\u4e26\u65bc\u570b\u5167\u8207\u570b\u969b\u9593\u8655\u7406\u5229\u7528\u672c\u4eba\u5df2\u7d93\u63d0\u4f9b\u53ca\u672a\u4f86\u5c07\u63d0\u4f9b\u7684\u500b\u4eba\u8cc7\u6599\u3002<\/li>\r\n                <li>\u672c\u4eba\u77e5\u6089\u500b\u4eba\u8cc7\u6599\u4fdd\u8b77\u6cd5\u898f\u5b9a\u6b0a\u5229\u53ca\u884c\u4f7f\u65b9\u5f0f\uff0c\u53ca\u4e0d\u63d0\u4f9b\u5c65\u6b77\u8868\u8207\u4eba\u4e8b\u8cc7\u6599\u8868\u5167\u500b\u4eba\u8cc7\u6599\u6642\u5c07\u5c0d\u672c\u4eba\u6b0a\u76ca\u4e4b\u5f71\u97ff\u3002<\/li>\r\n            <\/ul>\r\n        <\/div>\r\n\r\n        <div class=\"signature-section\">\r\n            <div class=\"form-group\">\r\n                <label class=\"checkbox-label\">\r\n                    <input type=\"checkbox\" name=\"agree_terms\" required>\r\n                    <strong>\u672c\u4eba\u5df2\u8a73\u7d30\u95b1\u8b80\u4e26\u540c\u610f\u4ee5\u4e0a\u6240\u6709\u689d\u6b3e <span class=\"required\">*<\/span><\/strong>\r\n                <\/label>\r\n            <\/div>\r\n            <div class=\"form-group\">\r\n                <label class=\"form-label\" for=\"signature_name\">\u672c\u4eba\u7c3d\u540d (\u8acb\u8f38\u5165\u59d3\u540d\u4ee3\u8868\u7c3d\u540d) <span class=\"required\">*<\/span><\/label>\r\n                <input type=\"text\" class=\"form-control\" id=\"signature_name\" name=\"signature_name\" required placeholder=\"\u8acb\u8f38\u5165\u60a8\u7684\u59d3\u540d\" maxlength=\"191\">\r\n                <small style=\"color: #666; margin-top: 5px; display: block;\">\u96fb\u5b50\u56de\u50b3\u8996\u540c\u7c3d\u540d<\/small>\r\n            <\/div>\r\n        <\/div>\r\n        <\/section>\r\n\r\n        <!-- \u63d0\u4ea4\u6309\u9215 -->\r\n        <div class=\"submit-card\">\r\n            <div class=\"btn-container\">\r\n                <button type=\"submit\" class=\"btn-submit\">\u63d0\u4ea4\u7533\u8acb<\/button>\r\n                <button type=\"reset\" class=\"btn-reset\">\u6e05\u9664\u91cd\u586b<\/button>\r\n            <\/div>\r\n        <\/div>\r\n        <\/form>\r\n    <\/div>\r\n<\/div>\r\n\r\n<!-- \u56de\u5230\u9802\u90e8\u6309\u9215 -->\r\n<button class=\"back-to-top\" id=\"backToTop\" title=\"\u56de\u5230\u9802\u90e8\">\r\n    <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\r\n        <polyline points=\"18 15 12 9 6 15\"><\/polyline>\r\n    <\/svg>\r\n<\/button>\r\n\r\n<!-- \u78ba\u8a8d\u5f48\u7a97 -->\r\n<div id=\"confirmationModal\" class=\"confirmation-modal\">\r\n    <div class=\"confirmation-content\">\r\n        <div class=\"confirmation-header\">\r\n            <h2>\u8acb\u78ba\u8a8d\u60a8\u586b\u5beb\u7684\u8cc7\u6599<\/h2>\r\n        <\/div>\r\n        <div class=\"confirmation-body\" id=\"confirmationBody\">\r\n            <!-- \u52d5\u614b\u63d2\u5165\u78ba\u8a8d\u5167\u5bb9 -->\r\n        <\/div>\r\n        <div class=\"confirmation-footer\">\r\n            <button type=\"button\" class=\"btn-cancel\" onclick=\"closeConfirmationModal()\">\u8fd4\u56de\u4fee\u6539<\/button>\r\n            <button type=\"button\" class=\"btn-confirm\" onclick=\"submitForm()\">\u78ba\u8a8d\u9001\u51fa<\/button>\r\n        <\/div>\r\n    <\/div>\r\n<\/div>\r\n\r\n<script>\r\n\/\/ \u5c0e\u822a\u529f\u80fd\r\ndocument.addEventListener('DOMContentLoaded', function() {\r\n    const navLinks = document.querySelectorAll('.nav-link');\r\n    const sections = document.querySelectorAll('section[id]');\r\n    const backToTopBtn = document.getElementById('backToTop');\r\n\r\n    \/\/ \u96e2\u958b\u9801\u9762\u524d\u63d0\u793a\r\n    window.addEventListener('beforeunload', function(e) {\r\n        e.preventDefault();\r\n        e.returnValue = '\u8868\u55ae\u8cc7\u6599\u5c07\u6703\u6e05\u7a7a\uff0c\u78ba\u8a8d\u96e2\u958b\uff1f';\r\n        return '\u8868\u55ae\u8cc7\u6599\u5c07\u6703\u6e05\u7a7a\uff0c\u78ba\u8a8d\u96e2\u958b\uff1f';\r\n    });\r\n\r\n    \/\/ Safari \u6708\u4efd\u9078\u64c7\u5668\u76f8\u5bb9\u6027\u8655\u7406\r\n    initMonthInputPolyfill();\r\n\r\n    \/\/ \u521d\u59cb\u5316\u5b57\u5143\u9577\u5ea6\u6aa2\u67e5\r\n    initMaxLengthCheck();\r\n\r\n    \/\/ \u521d\u59cb\u5316\u85aa\u6c34\u4e0a\u9650\u6aa2\u67e5\r\n    initSalaryMaxCheck();\r\n\r\n    \/\/ \u6392\u9664\u5373\u6642\u9a57\u8b49\u7684\u6b04\u4f4d\uff08\u6539\u70ba\u63d0\u4ea4\u6642\u9a57\u8b49\uff09\r\n    const fieldsWithoutRealTimeValidation = ['contact_mail'];\r\n\r\n    \/\/ \u70ba\u6240\u6709\u5fc5\u586b\u6b04\u4f4d\u6dfb\u52a0\u5373\u6642\u9a57\u8b49\r\n    const requiredFields = document.querySelectorAll('[required]');\r\n    requiredFields.forEach(field => {\r\n        \/\/ \u6392\u9664\u6307\u5b9a\u6b04\u4f4d\u7684\u5373\u6642\u9a57\u8b49\r\n        if (fieldsWithoutRealTimeValidation.includes(field.id)) {\r\n            return;\r\n        }\r\n\r\n        \/\/ \u7576\u7528\u6236\u958b\u59cb\u8f38\u5165\u6642,\u6e05\u9664\u932f\u8aa4\u63d0\u793a\r\n        if (field.type === 'checkbox') {\r\n            field.addEventListener('change', function() {\r\n                if (this.checked) {\r\n                    clearFieldError(this);\r\n                }\r\n            });\r\n        } else if (field.type === 'radio') {\r\n            field.addEventListener('change', function() {\r\n                const radioGroup = document.querySelectorAll(`input[name=\"${this.name}\"]`);\r\n                radioGroup.forEach(radio => clearFieldError(radio));\r\n            });\r\n        } else {\r\n            field.addEventListener('input', function() {\r\n                if (this.value.trim() !== '') {\r\n                    clearFieldError(this);\r\n                }\r\n            });\r\n\r\n            \/\/ \u5931\u53bb\u7126\u9ede\u6642\u9a57\u8b49\r\n            field.addEventListener('blur', function() {\r\n                if (this.value.trim() === '') {\r\n                    this.classList.add('error');\r\n                    showFieldError(this, '\u6b64\u70ba\u5fc5\u586b\u6b04\u4f4d');\r\n                } else {\r\n                    this.classList.remove('error');\r\n                    this.classList.add('success');\r\n                }\r\n            });\r\n        }\r\n    });\r\n    \r\n    \/\/ \u9ede\u64ca\u5c0e\u822a\u9805\u76ee\u6efe\u52d5\u5230\u5c0d\u61c9\u5340\u584a\r\n    navLinks.forEach(link => {\r\n        link.addEventListener('click', function(e) {\r\n            e.preventDefault();\r\n            const targetId = this.getAttribute('data-section');\r\n            const targetSection = document.getElementById(targetId);\r\n            \r\n            if (targetSection) {\r\n                \/\/ \u79fb\u9664\u6240\u6709 active \u72c0\u614b\r\n                navLinks.forEach(l => l.classList.remove('active'));\r\n                \/\/ \u6dfb\u52a0\u7576\u524d\u9805\u76ee\u7684 active \u72c0\u614b\r\n                this.classList.add('active');\r\n                \r\n                \/\/ \u6efe\u52d5\u5230\u76ee\u6a19\u5340\u584a\uff08\u8003\u616esticky\u5c0e\u822a\u7684\u9ad8\u5ea6\uff09\r\n                const offsetTop = targetSection.offsetTop - 60;\r\n                window.scrollTo({\r\n                    top: offsetTop,\r\n                    behavior: 'smooth'\r\n                });\r\n            }\r\n        });\r\n    });\r\n    \r\n    \/\/ \u56de\u5230\u9802\u90e8\u6309\u9215\u529f\u80fd\r\n    backToTopBtn.addEventListener('click', function() {\r\n        window.scrollTo({\r\n            top: 0,\r\n            behavior: 'smooth'\r\n        });\r\n    });\r\n    \r\n    \/\/ \u76e3\u807d\u6efe\u52d5\uff0c\u66f4\u65b0\u5c0e\u822a\u72c0\u614b\u548c\u986f\u793a\/\u96b1\u85cf\u56de\u5230\u9802\u90e8\u6309\u9215\r\n    let isScrolling = false;\r\n    const formNavigation = document.querySelector('.form-navigation');\r\n    const formContainer = document.querySelector('.hr-form-container');\r\n    const submitCard = document.querySelector('.submit-card');\r\n    const basicInfoCard = document.getElementById('basic-info');\r\n    const navOffsetTop = 100; \/\/ \u5c0e\u822a\u8ddd\u96e2\u8996\u7a97\u9802\u90e8\u7684\u9593\u8ddd\uff08\u9810\u7559\u6a21\u677f header \u7a7a\u9593\uff09\r\n\r\n    function updateNavPosition() {\r\n        if (!formNavigation || !formContainer || !submitCard || !basicInfoCard) return;\r\n        if (window.innerWidth <= 1024) {\r\n            formNavigation.style.top = '0';\r\n            return;\r\n        }\r\n\r\n        const containerRect = formContainer.getBoundingClientRect();\r\n        const basicInfoRect = basicInfoCard.getBoundingClientRect();\r\n        const submitCardRect = submitCard.getBoundingClientRect();\r\n        const navHeight = formNavigation.offsetHeight;\r\n\r\n        \/\/ \u8a08\u7b97\u57fa\u672c\u8cc7\u6599\u5361\u7247\u76f8\u5c0d\u65bc\u5bb9\u5668\u7684\u4f4d\u7f6e\uff08\u4f5c\u70ba\u5c0e\u822a\u7684\u521d\u59cb\/\u6700\u5c0f top \u503c\uff09\r\n        const containerTop = containerRect.top + window.scrollY;\r\n        const basicInfoTop = basicInfoRect.top + window.scrollY;\r\n        const initialTop = basicInfoTop - containerTop;\r\n\r\n        \/\/ \u8a08\u7b97\u6efe\u52d5\u4f4d\u7f6e\r\n        const scrollTop = window.scrollY;\r\n\r\n        \/\/ \u5c0e\u822a\u53ef\u4ee5\u79fb\u52d5\u7684\u6700\u5927\u8ddd\u96e2\uff08\u63d0\u4ea4\u6309\u9215\u5e95\u90e8 - \u5c0e\u822a\u9ad8\u5ea6 - \u5bb9\u5668\u9802\u90e8\u4f4d\u7f6e\uff09\r\n        const maxNavTop = submitCardRect.bottom + scrollTop - containerTop - navHeight;\r\n\r\n        if (basicInfoRect.top >= navOffsetTop) {\r\n            \/\/ \u57fa\u672c\u8cc7\u6599\u5361\u7247\u9084\u6c92\u6efe\u52d5\u5230\u9802\u90e8\uff0c\u5c0e\u822a\u4fdd\u6301\u8207\u5361\u7247\u5c0d\u9f4a\r\n            formNavigation.style.top = initialTop + 'px';\r\n        } else {\r\n            \/\/ \u8a08\u7b97\u5c0e\u822a\u61c9\u8a72\u7684\u4f4d\u7f6e\r\n            const desiredTop = scrollTop - containerTop + navOffsetTop;\r\n            \/\/ \u9650\u5236\u5728 initialTop \u548c maxNavTop \u4e4b\u9593\r\n            const newTop = Math.max(initialTop, Math.min(desiredTop, maxNavTop));\r\n            formNavigation.style.top = newTop + 'px';\r\n        }\r\n    }\r\n\r\n    window.addEventListener('scroll', function() {\r\n        if (isScrolling) return;\r\n\r\n        isScrolling = true;\r\n        requestAnimationFrame(() => {\r\n            \/\/ \u986f\u793a\/\u96b1\u85cf\u56de\u5230\u9802\u90e8\u6309\u9215\r\n            if (window.scrollY > 300) {\r\n                backToTopBtn.classList.add('show');\r\n            } else {\r\n                backToTopBtn.classList.remove('show');\r\n            }\r\n\r\n            \/\/ \u66f4\u65b0\u5c0e\u822a\u4f4d\u7f6e\r\n            updateNavPosition();\r\n\r\n            \/\/ \u66f4\u65b0\u5c0e\u822a\u72c0\u614b\r\n            let current = '';\r\n\r\n            sections.forEach(section => {\r\n                const sectionTop = section.offsetTop - 150;\r\n                const sectionBottom = sectionTop + section.offsetHeight;\r\n\r\n                if (window.scrollY >= sectionTop && window.scrollY < sectionBottom) {\r\n                    current = section.getAttribute('id');\r\n                }\r\n            });\r\n\r\n            if (current) {\r\n                navLinks.forEach(link => {\r\n                    link.classList.remove('active');\r\n                    if (link.getAttribute('data-section') === current) {\r\n                        link.classList.add('active');\r\n                    }\r\n                });\r\n            }\r\n\r\n            isScrolling = false;\r\n        });\r\n    });\r\n\r\n    \/\/ \u8996\u7a97\u5927\u5c0f\u6539\u8b8a\u6642\u4e5f\u66f4\u65b0\u4f4d\u7f6e\r\n    window.addEventListener('resize', updateNavPosition);\r\n    \/\/ \u521d\u59cb\u5316\u4f4d\u7f6e\r\n    updateNavPosition();\r\n});\r\n\r\n\/\/ \u5132\u5b58\u6700\u7d42\u8981\u63d0\u4ea4\u7684\u8cc7\u6599\r\nlet finalFormData = null;\r\n\r\n\/\/ \u986f\u793a\u6b04\u4f4d\u932f\u8aa4\u8a0a\u606f\r\nfunction showFieldError(field, message) {\r\n    \/\/ \u7279\u6b8a\u8655\u7406\u6709\u9810\u8a2d\u932f\u8aa4\u5143\u7d20\u7684\u6b04\u4f4d\r\n    if (field.id === 'idNumber') {\r\n        const errorElement = document.getElementById('idNumberError');\r\n        if (errorElement) {\r\n            errorElement.textContent = message;\r\n            errorElement.style.display = 'block';\r\n            return;\r\n        }\r\n    }\r\n\r\n    if (field.id === 'englishName') {\r\n        const errorElement = document.getElementById('englishNameError');\r\n        if (errorElement) {\r\n            errorElement.textContent = message;\r\n            errorElement.style.display = 'block';\r\n            return;\r\n        }\r\n    }\r\n\r\n    \/\/ \u7372\u53d6\u6216\u5275\u5efa\u932f\u8aa4\u8a0a\u606f\u5143\u7d20\r\n    let errorElement = field.nextElementSibling;\r\n\r\n    \/\/ \u5982\u679c\u4e0b\u4e00\u500b\u5143\u7d20\u4e0d\u662f error-message,\u5247\u5275\u5efa\u4e00\u500b\r\n    if (!errorElement || !errorElement.classList.contains('error-message')) {\r\n        errorElement = document.createElement('small');\r\n        errorElement.className = 'error-message';\r\n        field.parentNode.insertBefore(errorElement, field.nextSibling);\r\n    }\r\n\r\n    errorElement.textContent = message;\r\n    errorElement.style.display = 'block';\r\n}\r\n\r\n\/\/ \u6e05\u9664\u6b04\u4f4d\u932f\u8aa4\u8a0a\u606f\r\nfunction clearFieldError(field) {\r\n    \/\/ \u7279\u6b8a\u8655\u7406\u6709\u9810\u8a2d\u932f\u8aa4\u5143\u7d20\u7684\u6b04\u4f4d\r\n    if (field.id === 'idNumber') {\r\n        const errorElement = document.getElementById('idNumberError');\r\n        if (errorElement) {\r\n            errorElement.style.display = 'none';\r\n        }\r\n    } else if (field.id === 'englishName') {\r\n        const errorElement = document.getElementById('englishNameError');\r\n        if (errorElement) {\r\n            errorElement.style.display = 'none';\r\n        }\r\n    } else if (field.id === 'contact_mail') {\r\n        const errorElement = document.getElementById('contactMailError');\r\n        if (errorElement) {\r\n            errorElement.style.display = 'none';\r\n        }\r\n    } else {\r\n        const errorElement = field.nextElementSibling;\r\n        \/\/ \u53ea\u6e05\u9664 error-message\uff0c\u4e0d\u6e05\u9664 warning-message\uff08\u5b57\u5143\u4e0a\u9650\u8b66\u544a\uff09\r\n        if (errorElement && errorElement.classList.contains('error-message') && !errorElement.classList.contains('warning-message')) {\r\n            errorElement.style.display = 'none';\r\n        }\r\n    }\r\n    field.classList.remove('error');\r\n    field.classList.remove('success');\r\n    field.style.borderColor = '';\r\n}\r\n\r\n\/\/ \u4e0d\u986f\u793a\u5b57\u5143\u4e0a\u9650\u8b66\u544a\u7684\u6b04\u4f4d\r\nconst fieldsWithoutMaxLengthWarning = ['idNumber'];\r\n\r\n\/\/ \u5132\u5b58\u6bcf\u500b\u6b04\u4f4d\u7684\u8b66\u544a\u5143\u7d20\u53c3\u8003\uff0c\u907f\u514d\u91cd\u8907\u67e5\u8a62 DOM\r\nconst maxLengthWarningElements = new Map();\r\n\r\n\/\/ \u6aa2\u67e5\u5b57\u5143\u9577\u5ea6\u4e26\u986f\u793a\u8b66\u544a\r\nfunction checkMaxLength(field) {\r\n    const maxLength = field.getAttribute('maxlength');\r\n    if (!maxLength) return;\r\n\r\n    \/\/ \u6392\u9664\u4e0d\u9700\u8981\u986f\u793a\u8b66\u544a\u7684\u6b04\u4f4d\r\n    if (fieldsWithoutMaxLengthWarning.includes(field.id)) return;\r\n\r\n    const currentLength = field.value.length;\r\n    const max = parseInt(maxLength);\r\n    const fieldId = field.id || field.name || Math.random().toString(36);\r\n\r\n    \/\/ \u53d6\u5f97\u6216\u5275\u5efa\u8b66\u544a\u5143\u7d20\uff08\u53ea\u5275\u5efa\u4e00\u6b21\uff0c\u4e4b\u5f8c\u91cd\u8907\u4f7f\u7528\uff09\r\n    let warningElement = maxLengthWarningElements.get(fieldId);\r\n    if (!warningElement) {\r\n        warningElement = document.createElement('small');\r\n        warningElement.className = 'warning-message';\r\n        warningElement.style.display = 'none';\r\n        field.parentNode.insertBefore(warningElement, field.nextSibling);\r\n        maxLengthWarningElements.set(fieldId, warningElement);\r\n    }\r\n\r\n    \/\/ \u63a5\u8fd1\u4e0a\u9650(90%\u4ee5\u4e0a)\u6642\u986f\u793a\u6a59\u8272\u8b66\u544a\r\n    if (currentLength >= max * 0.9) {\r\n        field.classList.add('warning');\r\n        const remaining = max - currentLength;\r\n        warningElement.textContent = `\u5df2\u8f38\u5165 ${currentLength}\/${max} \u5b57\u5143\uff0c\u5269\u9918 ${remaining} \u5b57\u5143`;\r\n        warningElement.style.display = 'block';\r\n    } else {\r\n        field.classList.remove('warning');\r\n        warningElement.style.display = 'none';\r\n    }\r\n}\r\n\r\n\/\/ Debounce \u5de5\u5177\u51fd\u6578\r\nfunction debounce(func, wait) {\r\n    let timeout;\r\n    return function executedFunction(...args) {\r\n        const later = () => {\r\n            clearTimeout(timeout);\r\n            func.apply(this, args);\r\n        };\r\n        clearTimeout(timeout);\r\n        timeout = setTimeout(later, wait);\r\n    };\r\n}\r\n\r\n\/\/ \u6aa2\u6e2c\u662f\u5426\u9700\u8981 Safari \u6708\u4efd\u9078\u64c7\u5668 polyfill\r\nfunction needsMonthInputPolyfill() {\r\n    \/\/ \u6aa2\u6e2c\u662f\u5426\u70ba Safari \u700f\u89bd\u5668\r\n    const isSafari = \/^((?!chrome|android).)*safari\/i.test(navigator.userAgent);\r\n\r\n    \/\/ \u6aa2\u6e2c\u700f\u89bd\u5668\u662f\u5426\u652f\u63f4 type=\"month\"\r\n    const testInput = document.createElement('input');\r\n    testInput.setAttribute('type', 'month');\r\n    const supportsMonthInput = testInput.type === 'month';\r\n\r\n    return !supportsMonthInput || isSafari;\r\n}\r\n\r\n\/\/ \u70ba\u55ae\u4e00 month input \u61c9\u7528 polyfill\r\nfunction applyMonthPolyfillToInput(input) {\r\n    \/\/ \u5982\u679c\u5df2\u7d93\u8655\u7406\u904e\uff0c\u8df3\u904e\r\n    if (input.dataset.monthPolyfillApplied) return;\r\n    input.dataset.monthPolyfillApplied = 'true';\r\n\r\n    \/\/ \u5efa\u7acb\u66ff\u4ee3\u7684\u65e5\u671f\u9078\u64c7\u5668\u5bb9\u5668\r\n    const wrapper = document.createElement('div');\r\n    wrapper.className = 'month-picker-wrapper';\r\n    wrapper.style.cssText = 'display: flex; gap: 0.5rem;';\r\n\r\n    \/\/ \u5efa\u7acb\u5e74\u4efd\u9078\u64c7\u5668\r\n    const yearSelect = document.createElement('select');\r\n    yearSelect.className = 'form-control month-picker-year';\r\n    yearSelect.style.cssText = 'flex: 1; min-width: 100px;';\r\n\r\n    \/\/ \u586b\u5145\u5e74\u4efd\u9078\u9805\uff08\u5f9e 1950 \u5230\u7576\u524d\u5e74\u4efd + 10\uff09\r\n    const currentYear = new Date().getFullYear();\r\n    yearSelect.innerHTML = '<option value=\"\">\u5e74\u4efd<\/option>';\r\n    for (let year = currentYear + 10; year >= 1950; year--) {\r\n        yearSelect.innerHTML += `<option value=\"${year}\">${year}<\/option>`;\r\n    }\r\n\r\n    \/\/ \u5efa\u7acb\u6708\u4efd\u9078\u64c7\u5668\r\n    const monthSelect = document.createElement('select');\r\n    monthSelect.className = 'form-control month-picker-month';\r\n    monthSelect.style.cssText = 'flex: 1; min-width: 80px;';\r\n    monthSelect.innerHTML = `\r\n        <option value=\"\">\u6708\u4efd<\/option>\r\n        <option value=\"01\">1\u6708<\/option>\r\n        <option value=\"02\">2\u6708<\/option>\r\n        <option value=\"03\">3\u6708<\/option>\r\n        <option value=\"04\">4\u6708<\/option>\r\n        <option value=\"05\">5\u6708<\/option>\r\n        <option value=\"06\">6\u6708<\/option>\r\n        <option value=\"07\">7\u6708<\/option>\r\n        <option value=\"08\">8\u6708<\/option>\r\n        <option value=\"09\">9\u6708<\/option>\r\n        <option value=\"10\">10\u6708<\/option>\r\n        <option value=\"11\">11\u6708<\/option>\r\n        <option value=\"12\">12\u6708<\/option>\r\n    `;\r\n\r\n    \/\/ \u4fdd\u5b58\u539f\u59cb input \u7684\u5c6c\u6027\r\n    const originalRequired = input.required;\r\n    const originalValue = input.value;\r\n\r\n    \/\/ \u5c07\u539f\u59cb input \u96b1\u85cf\u4e26\u4fdd\u7559\u7528\u65bc\u8868\u55ae\u63d0\u4ea4\r\n    input.type = 'hidden';\r\n    input.removeAttribute('required');\r\n\r\n    \/\/ \u66f4\u65b0\u9078\u64c7\u5668\u7684\u503c\u5230\u96b1\u85cf input\r\n    const updateHiddenInput = () => {\r\n        const year = yearSelect.value;\r\n        const month = monthSelect.value;\r\n        if (year && month) {\r\n            input.value = `${year}-${month}`;\r\n            \/\/ \u89f8\u767c input \u4e8b\u4ef6\u4ee5\u4fbf\u9a57\u8b49\r\n            input.dispatchEvent(new Event('input', { bubbles: true }));\r\n            input.dispatchEvent(new Event('change', { bubbles: true }));\r\n        } else {\r\n            input.value = '';\r\n        }\r\n    };\r\n\r\n    yearSelect.addEventListener('change', updateHiddenInput);\r\n    monthSelect.addEventListener('change', updateHiddenInput);\r\n\r\n    \/\/ \u5982\u679c\u6709\u9810\u8a2d\u503c\uff0c\u89e3\u6790\u4e26\u8a2d\u5b9a\r\n    if (originalValue) {\r\n        const [year, month] = originalValue.split('-');\r\n        if (year) yearSelect.value = year;\r\n        if (month) monthSelect.value = month;\r\n    }\r\n\r\n    \/\/ \u5982\u679c\u539f\u672c\u662f\u5fc5\u586b\uff0c\u70ba\u9078\u64c7\u5668\u6dfb\u52a0\u9a57\u8b49\r\n    if (originalRequired) {\r\n        yearSelect.required = true;\r\n        monthSelect.required = true;\r\n    }\r\n\r\n    \/\/ \u7d44\u88dd\u4e26\u63d2\u5165 DOM\r\n    wrapper.appendChild(yearSelect);\r\n    wrapper.appendChild(monthSelect);\r\n    input.parentNode.insertBefore(wrapper, input.nextSibling);\r\n}\r\n\r\n\/\/ \u70ba\u7279\u5b9a\u5143\u7d20\u5167\u7684 month input \u61c9\u7528 polyfill\uff08\u7528\u65bc\u52d5\u614b\u65b0\u589e\u7684\u5143\u7d20\uff09\r\nfunction applyMonthInputPolyfillToElement(element) {\r\n    if (!needsMonthInputPolyfill()) return;\r\n\r\n    const monthInputs = element.querySelectorAll('input[type=\"month\"]');\r\n    monthInputs.forEach(input => applyMonthPolyfillToInput(input));\r\n}\r\n\r\n\/\/ \u4f9d\u7167\u61c9\u5fb5\u985e\u578b\u5207\u63db\u85aa\u6c34\u6b04\u4f4d\r\nfunction toggleSalaryFields() {\r\n    const employmentType = document.querySelector('input[name=\"employment_type\"]:checked')?.value;\r\n    const fulltimeFields = document.getElementById('fulltime-salary-fields');\r\n    const internFields = document.getElementById('intern-salary-fields');\r\n    const monthlyInput = document.getElementById('expected_monthly_salary');\r\n    const annualInput = document.getElementById('expected_annual_salary');\r\n    const hourlyInput = document.getElementById('expected_hourly_salary');\r\n\r\n    if (employmentType === '\u6b63\u8077') {\r\n        fulltimeFields.style.display = '';\r\n        internFields.style.display = 'none';\r\n        monthlyInput.required = true;\r\n        annualInput.required = true;\r\n        hourlyInput.required = false;\r\n        hourlyInput.value = '';\r\n    } else if (employmentType === '\u5be6\u7fd2') {\r\n        fulltimeFields.style.display = 'none';\r\n        internFields.style.display = '';\r\n        monthlyInput.required = false;\r\n        annualInput.required = false;\r\n        hourlyInput.required = true;\r\n        monthlyInput.value = '';\r\n        annualInput.value = '';\r\n    }\r\n}\r\n\r\n\/\/ Safari \u6708\u4efd\u9078\u64c7\u5668\u76f8\u5bb9\u6027\u8655\u7406 - \u521d\u59cb\u5316\r\nfunction initMonthInputPolyfill() {\r\n    if (!needsMonthInputPolyfill()) return;\r\n\r\n    \/\/ \u53d6\u5f97\u6240\u6709 month \u985e\u578b\u7684 input\r\n    const monthInputs = document.querySelectorAll('input[type=\"month\"]');\r\n    monthInputs.forEach(input => applyMonthPolyfillToInput(input));\r\n}\r\n\r\n\/\/ \u70ba\u6240\u6709\u6709 maxlength \u7684 input \u548c textarea \u6dfb\u52a0\u5b57\u5143\u9577\u5ea6\u6aa2\u67e5\r\nfunction initMaxLengthCheck() {\r\n    \/\/ \u975c\u614b\u6b04\u4f4d\r\n    const fieldsWithMaxLength = document.querySelectorAll('input[maxlength], textarea[maxlength]');\r\n    fieldsWithMaxLength.forEach(field => {\r\n        \/\/ \u6392\u9664\u4e0d\u9700\u8981\u6aa2\u67e5\u7684\u6b04\u4f4d\uff0c\u5b8c\u5168\u4e0d\u7d81\u5b9a\u4e8b\u4ef6\r\n        if (fieldsWithoutMaxLengthWarning.includes(field.id)) {\r\n            return;\r\n        }\r\n        \/\/ \u4f7f\u7528 debounce \u907f\u514d\u5feb\u901f\u8f38\u5165\u6642\u7684\u6548\u80fd\u554f\u984c\r\n        const debouncedCheck = debounce(function() {\r\n            checkMaxLength(field);\r\n        }, 150);\r\n        field.addEventListener('input', debouncedCheck);\r\n    });\r\n}\r\n\r\n\/\/ \u5132\u5b58\u85aa\u6c34\u6b04\u4f4d\u7684\u932f\u8aa4\u5143\u7d20\u53c3\u8003\r\nconst salaryErrorElements = new Map();\r\n\r\n\/\/ \u6aa2\u67e5\u85aa\u6c34\u4e0a\u9650\r\nfunction checkSalaryMax(field) {\r\n    const max = parseInt(field.getAttribute('max'));\r\n    if (!max) return;\r\n\r\n    const value = parseInt(field.value) || 0;\r\n    const fieldId = field.id || field.name || Math.random().toString(36);\r\n\r\n    \/\/ \u53d6\u5f97\u6216\u5275\u5efa\u932f\u8aa4\u5143\u7d20\uff08\u53ea\u5275\u5efa\u4e00\u6b21\uff0c\u4e4b\u5f8c\u91cd\u8907\u4f7f\u7528\uff09\r\n    let errorElement = salaryErrorElements.get(fieldId);\r\n    if (!errorElement) {\r\n        errorElement = document.createElement('small');\r\n        errorElement.className = 'salary-error-message error-message';\r\n        errorElement.style.display = 'none';\r\n        field.parentNode.insertBefore(errorElement, field.nextSibling);\r\n        salaryErrorElements.set(fieldId, errorElement);\r\n    }\r\n\r\n    if (value > max) {\r\n        field.classList.add('error');\r\n        errorElement.textContent = `\u85aa\u6c34\u4e0a\u9650\u70ba ${max.toLocaleString()} \u5143`;\r\n        errorElement.style.display = 'block';\r\n    } else {\r\n        field.classList.remove('error');\r\n        errorElement.style.display = 'none';\r\n    }\r\n}\r\n\r\n\/\/ \u70ba\u85aa\u6c34\u6b04\u4f4d\u6dfb\u52a0\u4e0a\u9650\u6aa2\u67e5\uff08\u4f7f\u7528 debounce\uff09\r\nfunction initSalaryMaxCheck() {\r\n    const debouncedCheck = debounce(function(e) {\r\n        if (e.target.matches('input[type=\"number\"][max]')) {\r\n            checkSalaryMax(e.target);\r\n        }\r\n    }, 100);\r\n    document.addEventListener('input', debouncedCheck);\r\n}\r\n\r\n\/\/ \u8868\u55ae\u9a57\u8b49\u548c\u986f\u793a\u78ba\u8a8d\u5f48\u7a97\r\ndocument.getElementById('hrApplicationForm').addEventListener('submit', function(e) {\r\n    e.preventDefault();\r\n\r\n    \/\/ \u6e05\u9664\u6240\u6709\u820a\u7684\u932f\u8aa4\u8a0a\u606f\r\n    document.querySelectorAll('.error-message').forEach(msg => {\r\n        msg.style.display = 'none';\r\n    });\r\n\r\n    \/\/ \u78ba\u8a8d\u5fc5\u586b\u6b04\u4f4d\r\n    const requiredFields = this.querySelectorAll('[required]');\r\n    let isValid = true;\r\n    let firstInvalidField = null;\r\n\r\n    requiredFields.forEach(field => {\r\n        \/\/ \u6e05\u9664\u4e4b\u524d\u7684\u932f\u8aa4\u6a23\u5f0f\r\n        field.classList.remove('error');\r\n\r\n        \/\/ \u6aa2\u67e5\u6b04\u4f4d\u662f\u5426\u6709\u503c\r\n        let isEmpty = false;\r\n        let fieldLabel = '';\r\n\r\n        if (field.type === 'checkbox') {\r\n            if (!field.checked) {\r\n                isEmpty = true;\r\n            }\r\n        } else if (field.type === 'radio') {\r\n            const radioGroup = document.querySelectorAll(`input[name=\"${field.name}\"]`);\r\n            const isChecked = Array.from(radioGroup).some(radio => radio.checked);\r\n            if (!isChecked) {\r\n                isEmpty = true;\r\n            }\r\n        } else {\r\n            if (!field.value || field.value.trim() === '') {\r\n                isEmpty = true;\r\n            }\r\n        }\r\n\r\n        if (isEmpty) {\r\n            field.classList.add('error');\r\n            isValid = false;\r\n\r\n            \/\/ \u7372\u53d6\u6b04\u4f4d\u6a19\u7c64\u6587\u5b57\r\n            const label = field.closest('.form-group')?.querySelector('.form-label');\r\n            if (label) {\r\n                fieldLabel = label.textContent.replace('*', '').trim();\r\n            }\r\n\r\n            \/\/ \u8a18\u9304\u7b2c\u4e00\u500b\u7121\u6548\u7684\u6b04\u4f4d\r\n            if (!firstInvalidField) {\r\n                firstInvalidField = field;\r\n            }\r\n\r\n            \/\/ \u986f\u793a\u932f\u8aa4\u8a0a\u606f - \u4f7f\u7528\u6b04\u4f4d\u540d\u7a31\r\n            const errorMessage = fieldLabel ? `\u8acb\u586b\u5beb${fieldLabel}` : '\u6b64\u70ba\u5fc5\u586b\u6b04\u4f4d';\r\n            showFieldError(field, errorMessage);\r\n        }\r\n    });\r\n\r\n    \/\/ \u9a57\u8b49\u82f1\u6587\u59d3\u540d\r\n    const englishNameField = document.getElementById('englishName');\r\n    if (englishNameField.value.trim()) {\r\n        const nameValidation = validateEnglishName(englishNameField.value.trim());\r\n        if (!nameValidation.valid) {\r\n            englishNameField.classList.add('error');\r\n            englishNameField.style.borderColor = '#e74c3c';\r\n            showFieldError(englishNameField, nameValidation.message);\r\n            isValid = false;\r\n            if (!firstInvalidField) {\r\n                firstInvalidField = englishNameField;\r\n            }\r\n        } else {\r\n            englishNameField.style.borderColor = '#27ae60';\r\n        }\r\n    }\r\n\r\n    \/\/ \u9a57\u8b49\u8eab\u5206\u8b49\u5b57\u865f\r\n    const idNumberField = document.getElementById('idNumber');\r\n    if (idNumberField.value.trim()) {\r\n        const idValidation = validateTaiwanID(idNumberField.value.trim());\r\n        if (!idValidation.valid) {\r\n            idNumberField.classList.add('error');\r\n            idNumberField.style.borderColor = '#e74c3c';\r\n            showFieldError(idNumberField, idValidation.message);\r\n            isValid = false;\r\n            if (!firstInvalidField) {\r\n                firstInvalidField = idNumberField;\r\n            }\r\n        } else {\r\n            idNumberField.style.borderColor = '#27ae60';\r\n        }\r\n    }\r\n\r\n    \/\/ \u9a57\u8b49 Email \u683c\u5f0f\r\n    const contactMailField = document.getElementById('contact_mail');\r\n    const contactMailError = document.getElementById('contactMailError');\r\n    if (contactMailField.value.trim()) {\r\n        const emailValidation = validateEmail(contactMailField.value.trim());\r\n        if (!emailValidation.valid) {\r\n            contactMailField.classList.add('error');\r\n            contactMailField.style.borderColor = '#e74c3c';\r\n            contactMailError.textContent = emailValidation.message;\r\n            contactMailError.style.display = 'block';\r\n            isValid = false;\r\n            if (!firstInvalidField) {\r\n                firstInvalidField = contactMailField;\r\n            }\r\n        } else {\r\n            contactMailField.classList.remove('error');\r\n            contactMailField.style.borderColor = '#27ae60';\r\n            contactMailError.style.display = 'none';\r\n        }\r\n    }\r\n\r\n    if (!isValid) {\r\n        alert('\u8acb\u586b\u5beb\u6240\u6709\u5fc5\u586b\u6b04\u4f4d\u4e26\u78ba\u8a8d\u683c\u5f0f\u6b63\u78ba\uff01');\r\n\r\n        \/\/ \u6efe\u52d5\u5230\u7b2c\u4e00\u500b\u932f\u8aa4\u6b04\u4f4d\r\n        if (firstInvalidField) {\r\n            firstInvalidField.scrollIntoView({ behavior: 'smooth', block: 'center' });\r\n            setTimeout(() => firstInvalidField.focus(), 500);\r\n        }\r\n        return;\r\n    }\r\n\r\n    \/\/ \u9a57\u8b49\u7c3d\u540d\u662f\u5426\u8207\u59d3\u540d\u6216\u82f1\u6587\u59d3\u540d\u76f8\u540c\r\n    const signatureName = document.getElementById('signature_name').value.trim();\r\n    const chineseName = document.getElementById('name').value.trim();\r\n    const englishName = document.getElementById('englishName').value.trim();\r\n\r\n    if (signatureName !== chineseName && signatureName !== englishName) {\r\n        const signatureField = document.getElementById('signature_name');\r\n        signatureField.classList.add('error');\r\n        showFieldError(signatureField, '\u7c3d\u540d\u5fc5\u9808\u8207\u60a8\u7684\u59d3\u540d\u6216\u82f1\u6587\u59d3\u540d\u76f8\u540c');\r\n        alert('\u7c3d\u540d\u5fc5\u9808\u8207\u60a8\u7684\u59d3\u540d\u6216\u82f1\u6587\u59d3\u540d\u76f8\u540c\uff01');\r\n        signatureField.scrollIntoView({ behavior: 'smooth', block: 'center' });\r\n        setTimeout(() => signatureField.focus(), 500);\r\n        return;\r\n    }\r\n    \r\n    \/\/ \u6536\u96c6\u4e26\u986f\u793a\u78ba\u8a8d\u8cc7\u6599\r\n    showConfirmationModal();\r\n});\r\n\r\n\/\/ \u986f\u793a\u78ba\u8a8d\u5f48\u7a97\r\nfunction showConfirmationModal() {\r\n    const formData = collectAllFormData();\r\n    const confirmationBody = document.getElementById('confirmationBody');\r\n    \r\n    \/\/ \u6e05\u7a7a\u73fe\u6709\u5167\u5bb9\r\n    confirmationBody.innerHTML = '';\r\n    \r\n    \/\/ \u57fa\u672c\u8cc7\u6599\r\n    const basicSection = createConfirmationSection('\u57fa\u672c\u8cc7\u6599', {\r\n        '\u61c9\u5fb5\u8077\u52d9': formData.position,\r\n        '\u59d3\u540d': formData.name,\r\n        '\u82f1\u6587\u540d': formData.englishName,\r\n        '\u6027\u5225': formData.gender,\r\n        '\u51fa\u751f\u65e5\u671f': formData.birthdate,\r\n        '\u624b\u6a5f': formData.phone,\r\n        'E-mail': formData.contact_mail,\r\n        '\u5f79\u5225': formData.militaryService,\r\n        '\u8eab\u5206\u8b49\u865f': formData.idNumber,\r\n        '\u6236\u7c4d\u5730\u5740': formData.domicileAddress,\r\n        '\u901a\u8a0a\u5730\u5740': formData.mailingAddress\r\n    });\r\n    confirmationBody.appendChild(basicSection);\r\n    \r\n    \/\/ \u5b78\u6b77\r\n    if (formData.edu1_level || formData.edu1_school || formData.edu2_level || formData.edu2_school) {\r\n        const educationSection = document.createElement('div');\r\n        educationSection.className = 'confirmation-section';\r\n        \r\n        const sectionTitle = document.createElement('div');\r\n        sectionTitle.className = 'confirmation-section-title';\r\n        sectionTitle.textContent = '\u5b78\u6b77';\r\n        educationSection.appendChild(sectionTitle);\r\n        \r\n        if (formData.edu1_level || formData.edu1_school) {\r\n            educationSection.appendChild(createSubSection('\u6700\u9ad8\u5b78\u6b77', {\r\n                '\u5b78\u4f4d': formData.edu1_level,\r\n                '\u5b78\u6821\u540d\u7a31': formData.edu1_school,\r\n                '\u79d1\u7cfb': formData.edu1_department,\r\n                '\u7562\/\u8084\u696d': formData.edu1_status,\r\n                '\u5165\u5b78\u5e74\u6708': formData.edu1_start,\r\n                '\u96e2\u6821\u5e74\u6708': formData.edu1_end\r\n            }));\r\n        }\r\n        if (formData.edu2_level || formData.edu2_school) {\r\n            educationSection.appendChild(createSubSection('\u6b21\u9ad8\u5b78\u6b77', {\r\n                '\u5b78\u4f4d': formData.edu2_level,\r\n                '\u5b78\u6821\u540d\u7a31': formData.edu2_school,\r\n                '\u79d1\u7cfb': formData.edu2_department,\r\n                '\u7562\/\u8084\u696d': formData.edu2_status,\r\n                '\u5165\u5b78\u5e74\u6708': formData.edu2_start,\r\n                '\u96e2\u6821\u5e74\u6708': formData.edu2_end\r\n            }));\r\n        }\r\n        confirmationBody.appendChild(educationSection);\r\n    }\r\n    \r\n    \/\/ \u5de5\u4f5c\u7d93\u6b77\r\n    const workExperiences = collectWorkExperiences();\r\n    if (workExperiences.length > 0) {\r\n        const workSection = document.createElement('div');\r\n        workSection.className = 'confirmation-section';\r\n        \r\n        const sectionTitle = document.createElement('div');\r\n        sectionTitle.className = 'confirmation-section-title';\r\n        sectionTitle.textContent = '\u5de5\u4f5c\u7d93\u6b77';\r\n        workSection.appendChild(sectionTitle);\r\n        \r\n        workExperiences.forEach((work, index) => {\r\n            if (work.company || work.title) {\r\n                workSection.appendChild(createSubSection(`\u5de5\u4f5c\u7d93\u6b77 ${index + 1}`, {\r\n                    '\u516c\u53f8\u540d\u7a31': work.company,\r\n                    '\u8077\u7a31': work.title,\r\n                    '\u5230\u8077\u5e74\u6708': work.start,\r\n                    '\u96e2\u8077\u5e74\u6708': work.end,\r\n                    '\u6708\u85aa': work.monthly ? `NT$ ${work.monthly}` : '',\r\n                    '\u5e74\u85aa': work.annual ? `NT$ ${work.annual}` : '',\r\n                    '\u5de5\u4f5c\u5167\u5bb9': work.content,\r\n                    '\u96e2\u8077\u539f\u56e0': work.reason\r\n                }));\r\n            }\r\n        });\r\n        confirmationBody.appendChild(workSection);\r\n    }\r\n    \r\n    \/\/ \u8a9e\u8a00\u80fd\u529b\r\n    const englishSkills = getLanguageSkills('eng');\r\n    const japaneseSkills = getLanguageSkills('jp');\r\n    const otherLanguages = collectOtherLanguages();\r\n    \r\n    \/\/ \u6aa2\u67e5\u662f\u5426\u6709\u4efb\u4f55\u8a9e\u8a00\u80fd\u529b\u8cc7\u6599\r\n    const hasLanguageData = englishSkills || japaneseSkills || otherLanguages.length > 0;\r\n    \r\n    if (hasLanguageData) {\r\n        const languageSection = document.createElement('div');\r\n        languageSection.className = 'confirmation-section';\r\n        \r\n        const sectionTitle = document.createElement('div');\r\n        sectionTitle.className = 'confirmation-section-title';\r\n        sectionTitle.textContent = '\u8a9e\u8a00\u80fd\u529b';\r\n        languageSection.appendChild(sectionTitle);\r\n        \r\n        if (englishSkills) {\r\n            languageSection.appendChild(createSubSection('\u82f1\u8a9e', englishSkills));\r\n        }\r\n        if (japaneseSkills) {\r\n            languageSection.appendChild(createSubSection('\u65e5\u8a9e', japaneseSkills));\r\n        }\r\n        \r\n        \/\/ \u5176\u4ed6\u8a9e\u8a00\r\n        otherLanguages.forEach(lang => {\r\n            if (lang.name) {\r\n                const skills = {};\r\n                if (lang.fluent_listen || lang.fluent_speak || lang.fluent_write) {\r\n                    skills['\u6d41\u5229\u7a0b\u5ea6'] = [\r\n                        lang.fluent_listen && '\u807d',\r\n                        lang.fluent_speak && '\u8aaa',\r\n                        lang.fluent_write && '\u5beb'\r\n                    ].filter(Boolean).join('\u3001');\r\n                }\r\n                if (lang.fair_listen || lang.fair_speak || lang.fair_write) {\r\n                    skills['\u5c1a\u53ef\u7a0b\u5ea6'] = [\r\n                        lang.fair_listen && '\u807d',\r\n                        lang.fair_speak && '\u8aaa',\r\n                        lang.fair_write && '\u5beb'\r\n                    ].filter(Boolean).join('\u3001');\r\n                }\r\n                if (lang.poor_listen || lang.poor_speak || lang.poor_write) {\r\n                    skills['\u4e0d\u719f\u6089\u7a0b\u5ea6'] = [\r\n                        lang.poor_listen && '\u807d',\r\n                        lang.poor_speak && '\u8aaa',\r\n                        lang.poor_write && '\u5beb'\r\n                    ].filter(Boolean).join('\u3001');\r\n                }\r\n                if (Object.keys(skills).length > 0) {\r\n                    languageSection.appendChild(createSubSection(lang.name, skills));\r\n                }\r\n            }\r\n        });\r\n        \r\n        confirmationBody.appendChild(languageSection);\r\n    }\r\n    \r\n    \/\/ \u5176\u4ed6\u8cc7\u8a0a\r\n    const otherSection = createConfirmationSection('\u5176\u4ed6\u8cc7\u8a0a', {\r\n        '\u61c9\u5fb5\u7ba1\u9053': formData.application_channel,\r\n        '\u5167\u90e8\u63a8\u85a6\u4eba': formData.referrer,\r\n        '\u61c9\u5fb5\u985e\u578b': formData.employment_type,\r\n        '\u671f\u671b\u6708\u85aa': formData.expected_monthly_salary,\r\n        '\u671f\u671b\u5e74\u85aa': formData.expected_annual_salary,\r\n        '\u671f\u671b\u6642\u85aa': formData.expected_hourly_salary,\r\n        '\u53ef\u5230\u8077\u65e5': formData.available_date\r\n    });\r\n    confirmationBody.appendChild(otherSection);\r\n    \r\n    \/\/ \u5176\u4ed6\u8072\u660e\r\n    const declarationSection = createConfirmationSection('\u5176\u4ed6\u8072\u660e', {\r\n        '\u727d\u6d89\u53f8\u6cd5\u8a34\u8a1f': formData.legal_issue,\r\n        '\u53d7\u53f8\u6cd5\u6a5f\u95dc\u5224\u5211': formData.conviction,\r\n        '\u7af6\u696d\u7981\u6b62\u689d\u6b3e': formData.non_compete,\r\n        '\u8eab\u5fc3\u969c\u7919\u624b\u518a': formData.disability\r\n    });\r\n    confirmationBody.appendChild(declarationSection);\r\n    \r\n    \/\/ \u7dca\u6025\u9023\u7d61\u4eba\r\n    if (formData.emergency_name || formData.emergency_phone) {\r\n        const emergencySection = createConfirmationSection('\u7dca\u6025\u9023\u7d61\u4eba', {\r\n            '\u59d3\u540d': formData.emergency_name,\r\n            '\u95dc\u4fc2': formData.emergency_relation,\r\n            '\u96fb\u8a71': formData.emergency_phone\r\n        });\r\n        confirmationBody.appendChild(emergencySection);\r\n    }\r\n    \r\n    \/\/ \u7c3d\u540d\r\n    const signatureSection = createConfirmationSection('\u8072\u660e\u8207\u7c3d\u540d', {\r\n        '\u540c\u610f\u689d\u6b3e': formData.agree_terms ? '\u5df2\u540c\u610f' : '\u672a\u540c\u610f',\r\n        '\u96fb\u5b50\u7c3d\u540d': formData.signature_name\r\n    });\r\n    confirmationBody.appendChild(signatureSection);\r\n    \r\n    \/\/ \u5132\u5b58\u8868\u55ae\u8cc7\u6599\r\n    finalFormData = formData;\r\n    \r\n    \/\/ \u986f\u793a\u5f48\u7a97\r\n    document.getElementById('confirmationModal').classList.add('show');\r\n}\r\n\r\n\/\/ \u5efa\u7acb\u78ba\u8a8d\u5340\u6bb5\r\nfunction createConfirmationSection(title, data) {\r\n    const section = document.createElement('div');\r\n    section.className = 'confirmation-section';\r\n    \r\n    const sectionTitle = document.createElement('div');\r\n    sectionTitle.className = 'confirmation-section-title';\r\n    sectionTitle.textContent = title;\r\n    section.appendChild(sectionTitle);\r\n    \r\n    let hasData = false;\r\n    \r\n    for (const [label, value] of Object.entries(data)) {\r\n        if (value && value !== '') {\r\n            const item = document.createElement('div');\r\n            item.className = 'confirmation-item';\r\n            \r\n            const itemLabel = document.createElement('div');\r\n            itemLabel.className = 'confirmation-label';\r\n            itemLabel.textContent = label + '\uff1a';\r\n            \r\n            const itemValue = document.createElement('div');\r\n            itemValue.className = 'confirmation-value';\r\n            itemValue.textContent = value;\r\n            \r\n            item.appendChild(itemLabel);\r\n            item.appendChild(itemValue);\r\n            section.appendChild(item);\r\n            hasData = true;\r\n        }\r\n    }\r\n    \r\n    \/\/ \u53ea\u6709\u5728\u50b3\u5165\u7684 data \u6c92\u6709\u4efb\u4f55\u6709\u6548\u8cc7\u6599\u6642\u624d\u986f\u793a\u300c\u672a\u586b\u5beb\u300d\r\n    \/\/ \u4e0d\u8003\u616e\u5f8c\u7e8c\u53ef\u80fd\u52d5\u614b\u52a0\u5165\u7684\u5b50\u5340\u6bb5\r\n    if (!hasData && Object.keys(data).length > 0) {\r\n        const empty = document.createElement('div');\r\n        empty.className = 'confirmation-empty';\r\n        empty.textContent = '\uff08\u672a\u586b\u5beb\uff09';\r\n        section.appendChild(empty);\r\n    }\r\n    \r\n    return section;\r\n}\r\n\r\n\/\/ \u5efa\u7acb\u5b50\u5340\u6bb5\r\nfunction createSubSection(title, data) {\r\n    const subsection = document.createElement('div');\r\n    subsection.style.marginBottom = '15px';\r\n    subsection.style.paddingLeft = '20px';\r\n    \r\n    const subtitle = document.createElement('div');\r\n    subtitle.style.fontWeight = 'bold';\r\n    subtitle.style.color = '#666';\r\n    subtitle.style.marginBottom = '8px';\r\n    subtitle.textContent = title;\r\n    subsection.appendChild(subtitle);\r\n    \r\n    for (const [label, value] of Object.entries(data)) {\r\n        if (value && value !== '') {\r\n            const item = document.createElement('div');\r\n            item.className = 'confirmation-item';\r\n            \r\n            const itemLabel = document.createElement('div');\r\n            itemLabel.className = 'confirmation-label';\r\n            itemLabel.textContent = label + '\uff1a';\r\n            \r\n            const itemValue = document.createElement('div');\r\n            itemValue.className = 'confirmation-value';\r\n            itemValue.textContent = value;\r\n            \r\n            item.appendChild(itemLabel);\r\n            item.appendChild(itemValue);\r\n            subsection.appendChild(item);\r\n        }\r\n    }\r\n    \r\n    return subsection;\r\n}\r\n\r\n\/\/ \u6536\u96c6\u6240\u6709\u8868\u55ae\u8cc7\u6599\r\nfunction collectAllFormData() {\r\n    const form = document.getElementById('hrApplicationForm');\r\n    const formData = new FormData(form);\r\n    const data = {};\r\n    \r\n    \/\/ \u6536\u96c6\u4e00\u822c\u6b04\u4f4d\r\n    for (let [key, value] of formData.entries()) {\r\n        if (!key.includes('[]')) {\r\n            data[key] = value;\r\n        }\r\n    }\r\n    \r\n    \/\/ \u8655\u7406\u5de5\u4f5c\u7d93\u6b77\uff08\u4f7f\u7528\u73fe\u6709\u51fd\u6578\uff09\r\n    data.workExperiences = collectWorkExperiences();\r\n    \r\n    \/\/ \u8655\u7406\u5176\u4ed6\u8a9e\u8a00\uff08\u4f7f\u7528\u73fe\u6709\u51fd\u6578\uff09\r\n    data.otherLanguages = collectOtherLanguages();\r\n    \r\n    return data;\r\n}\r\n\r\n\/\/ \u53d6\u5f97\u8a9e\u8a00\u6280\u80fd\r\nfunction getLanguageSkills(langPrefix) {\r\n    const skills = {};\r\n    const form = document.getElementById('hrApplicationForm');\r\n    \r\n    \/\/ \u6aa2\u67e5\u6d41\u5229\u7a0b\u5ea6\r\n    const fluentListen = form.querySelector(`input[name=\"${langPrefix}_fluent_listen\"]`)?.checked;\r\n    const fluentSpeak = form.querySelector(`input[name=\"${langPrefix}_fluent_speak\"]`)?.checked;\r\n    const fluentWrite = form.querySelector(`input[name=\"${langPrefix}_fluent_write\"]`)?.checked;\r\n    \r\n    if (fluentListen || fluentSpeak || fluentWrite) {\r\n        skills['\u6d41\u5229'] = [\r\n            fluentListen && '\u807d',\r\n            fluentSpeak && '\u8aaa',\r\n            fluentWrite && '\u5beb'\r\n        ].filter(Boolean).join('\u3001');\r\n    }\r\n    \r\n    \/\/ \u6aa2\u67e5\u5c1a\u53ef\u7a0b\u5ea6\r\n    const fairListen = form.querySelector(`input[name=\"${langPrefix}_fair_listen\"]`)?.checked;\r\n    const fairSpeak = form.querySelector(`input[name=\"${langPrefix}_fair_speak\"]`)?.checked;\r\n    const fairWrite = form.querySelector(`input[name=\"${langPrefix}_fair_write\"]`)?.checked;\r\n    \r\n    if (fairListen || fairSpeak || fairWrite) {\r\n        skills['\u5c1a\u53ef'] = [\r\n            fairListen && '\u807d',\r\n            fairSpeak && '\u8aaa',\r\n            fairWrite && '\u5beb'\r\n        ].filter(Boolean).join('\u3001');\r\n    }\r\n    \r\n    \/\/ \u6aa2\u67e5\u4e0d\u719f\u6089\u7a0b\u5ea6\r\n    const poorListen = form.querySelector(`input[name=\"${langPrefix}_poor_listen\"]`)?.checked;\r\n    const poorSpeak = form.querySelector(`input[name=\"${langPrefix}_poor_speak\"]`)?.checked;\r\n    const poorWrite = form.querySelector(`input[name=\"${langPrefix}_poor_write\"]`)?.checked;\r\n    \r\n    if (poorListen || poorSpeak || poorWrite) {\r\n        skills['\u4e0d\u719f\u6089'] = [\r\n            poorListen && '\u807d',\r\n            poorSpeak && '\u8aaa',\r\n            poorWrite && '\u5beb'\r\n        ].filter(Boolean).join('\u3001');\r\n    }\r\n    \r\n    return Object.keys(skills).length > 0 ? skills : null;\r\n}\r\n\r\n\/\/ \u95dc\u9589\u78ba\u8a8d\u5f48\u7a97\r\nfunction closeConfirmationModal() {\r\n    document.getElementById('confirmationModal').classList.remove('show');\r\n}\r\n\r\n\/\/ \u5be6\u969b\u63d0\u4ea4\u8868\u55ae\r\nfunction submitForm() {\r\n    if (!finalFormData) {\r\n        alert('\u8cc7\u6599\u932f\u8aa4\uff0c\u8acb\u91cd\u65b0\u586b\u5beb');\r\n        return;\r\n    }\r\n    \r\n    \/\/ \u8f49\u63db\u8cc7\u6599\u683c\u5f0f\u70ba API \u9700\u8981\u7684\u683c\u5f0f\r\n    const apiData = transformToApiFormat(finalFormData);\r\n\r\n    \/\/ \u63d0\u4ea4\u5230\u5f8c\u7aef API\r\n    fetch('\/create_hr_candidate', {\r\n        method: 'POST',\r\n        headers: {\r\n            'Content-Type': 'application\/json',\r\n        },\r\n        body: JSON.stringify(apiData)\r\n    })\r\n    .then(response => {\r\n        if (!response.ok) {\r\n            throw new Error('\u63d0\u4ea4\u5931\u6557');\r\n        }\r\n        return response.json();\r\n    })\r\n    .then(result => {\r\n        alert('\u8868\u55ae\u63d0\u4ea4\u6210\u529f\uff01\u611f\u8b1d\u60a8\u7684\u61c9\u5fb5\uff01');\r\n        document.getElementById('hrApplicationForm').reset();\r\n        closeConfirmationModal();\r\n        \/\/ \u91cd\u7f6e\u5de5\u4f5c\u7d93\u6b77\u5340\u584a\r\n        document.getElementById('workExperienceContainer').innerHTML = '';\r\n        workExperienceCount = 0;\r\n        workExperienceIds.clear();\r\n        addWorkExperience();\r\n        \/\/ \u5c07\u756b\u9762\u79fb\u5230\u6700\u4e0a\u9762\r\n        window.scrollTo({ top: 0, behavior: 'smooth' });\r\n    })\r\n    .catch(error => {\r\n        alert('\u63d0\u4ea4\u5931\u6557\uff0c\u8acb\u7a0d\u5f8c\u518d\u8a66\u3002');\r\n        console.error('Error:', error);\r\n    });\r\n}\r\n\r\n\/\/ \u8f49\u63db\u8cc7\u6599\u683c\u5f0f\u70ba API \u9700\u8981\u7684\u683c\u5f0f\r\nfunction transformToApiFormat(formData) {\r\n    \/\/ \u6027\u5225\u8f49\u63db\r\n    const genderMap = {\r\n        '\u7537': 'male',\r\n        '\u5973': 'female',\r\n        '\u5176\u4ed6': 'other'\r\n    };\r\n    \r\n    \/\/ \u5175\u5f79\u72c0\u614b\u8f49\u63db\r\n    const militaryServiceMap = {\r\n        '\u5df2\u9000\u4f0d': 'discharged',\r\n        '\u672a\u5f79': 'not_served',\r\n        '\u514d\u5f79': 'exempted',\r\n        '\u66ff\u4ee3\u5f79': 'alternative_service'\r\n    };\r\n    \r\n    \/\/ \u5b78\u4f4d\u8f49\u63db\r\n    const educationLevelMap = {\r\n        '\u535a\u58eb': 'phd',\r\n        '\u78a9\u58eb': 'master',\r\n        '\u5927\u5b78': 'bachelor',\r\n        '\u5c08\u79d1': 'junior_college',\r\n        '\u9ad8\u4e2d\u8077': 'high_school'\r\n    };\r\n    \r\n    \/\/ \u7562\u696d\u72c0\u614b\u8f49\u63db\r\n    const graduationStatusMap = {\r\n        '\u5df2\u7562\u696d': 'graduated',\r\n        '\u8084\u696d': 'incomplete',\r\n        '\u5728\u5b78\u4e2d': 'studying'\r\n    };\r\n    \r\n    \/\/ \u6708\u4efd\u683c\u5f0f\u8f49\u65e5\u671f (YYYY-MM -> YYYY-MM-01)\r\n    const monthToDate = (monthStr) => {\r\n        return monthStr ? `${monthStr}-01` : '';\r\n    };\r\n    \r\n    \/\/ \u5efa\u69cb hr_candidate \u8cc7\u6599\r\n    const hrCandidate = {\r\n        position: formData.position || '',\r\n        chinese_name: formData.name || '',\r\n        english_name: formData.englishName || '',\r\n        gender: genderMap[formData.gender] || '',\r\n        date_of_birth: formData.birthdate || '',\r\n        phone: formData.phone || '',\r\n        email: formData.contact_mail || '',\r\n        military_service: militaryServiceMap[formData.militaryService] || '',\r\n        id_number: formData.idNumber || '',\r\n        household_address: formData.domicileAddress || '',\r\n        mailing_address: formData.mailingAddress || '',\r\n        agree_terms: formData.agree_terms === 'on'\r\n    };\r\n    \r\n    \/\/ \u5efa\u69cb\u5b78\u6b77\u8cc7\u6599\r\n    const hrEducations = [];\r\n    \r\n    \/\/ \u6700\u9ad8\u5b78\u6b77\r\n    if (formData.edu1_level || formData.edu1_school) {\r\n        hrEducations.push({\r\n            hr_education: 'highest',\r\n            level: educationLevelMap[formData.edu1_level] || '',\r\n            school_name: formData.edu1_school || '',\r\n            department: formData.edu1_department || '',\r\n            graduation_status: graduationStatusMap[formData.edu1_status] || '',\r\n            start_date: monthToDate(formData.edu1_start),\r\n            end_date: monthToDate(formData.edu1_end)\r\n        });\r\n    }\r\n    \r\n    \/\/ \u6b21\u9ad8\u5b78\u6b77\r\n    if (formData.edu2_level || formData.edu2_school) {\r\n        hrEducations.push({\r\n            hr_education: 'second_highest',\r\n            level: educationLevelMap[formData.edu2_level] || '',\r\n            school_name: formData.edu2_school || '',\r\n            department: formData.edu2_department || '',\r\n            graduation_status: graduationStatusMap[formData.edu2_status] || '',\r\n            start_date: monthToDate(formData.edu2_start),\r\n            end_date: monthToDate(formData.edu2_end)\r\n        });\r\n    }\r\n    \r\n    \/\/ \u5efa\u69cb\u5de5\u4f5c\u7d93\u9a57\u8cc7\u6599\r\n    const hrWorkExperiences = formData.workExperiences.map(work => ({\r\n        company_name: work.company || '',\r\n        job_title: work.title || '',\r\n        start_date: monthToDate(work.start),\r\n        end_date: monthToDate(work.end),\r\n        monthly_salary: work.monthly ? parseInt(work.monthly) : null,\r\n        annual_salary: work.annual ? parseInt(work.annual) : null,\r\n        job_description: work.content || '',\r\n        leaving_reason: work.reason || '',\r\n        position: work.title || ''\r\n    }));\r\n    \r\n    \/\/ \u5efa\u69cb\u8a9e\u8a00\u80fd\u529b\u8cc7\u6599\r\n    const languageSkills = [];\r\n    \r\n    \/\/ \u8a9e\u8a00\u80fd\u529b\u7b49\u7d1a\u8f49\u63db\r\n    const getLevelFromSkills = (skills) => {\r\n        if (skills['\u6d41\u5229']) return 'high';\r\n        if (skills['\u5c1a\u53ef']) return 'medium';\r\n        if (skills['\u4e0d\u719f\u6089']) return 'low';\r\n        return '';\r\n    };\r\n    \r\n    \/\/ \u82f1\u8a9e\r\n    const englishSkills = getLanguageSkills('eng');\r\n    if (englishSkills) {\r\n        const listening = getLevelFromCheckboxes('eng', 'listen');\r\n        const speaking = getLevelFromCheckboxes('eng', 'speak');\r\n        const writing = getLevelFromCheckboxes('eng', 'write');\r\n        \r\n        if (listening || speaking || writing) {\r\n            languageSkills.push({\r\n                language_name: '\u82f1\u8a9e',\r\n                listening_level: listening,\r\n                speaking_level: speaking,\r\n                writing_level: writing\r\n            });\r\n        }\r\n    }\r\n    \r\n    \/\/ \u65e5\u8a9e\r\n    const japaneseSkills = getLanguageSkills('jp');\r\n    if (japaneseSkills) {\r\n        const listening = getLevelFromCheckboxes('jp', 'listen');\r\n        const speaking = getLevelFromCheckboxes('jp', 'speak');\r\n        const writing = getLevelFromCheckboxes('jp', 'write');\r\n        \r\n        if (listening || speaking || writing) {\r\n            languageSkills.push({\r\n                language_name: '\u65e5\u8a9e',\r\n                listening_level: listening,\r\n                speaking_level: speaking,\r\n                writing_level: writing\r\n            });\r\n        }\r\n    }\r\n    \r\n    \/\/ \u5176\u4ed6\u8a9e\u8a00\r\n    formData.otherLanguages.forEach(lang => {\r\n        const listening = getLevelFromOtherLang(lang, 'listen');\r\n        const speaking = getLevelFromOtherLang(lang, 'speak');\r\n        const writing = getLevelFromOtherLang(lang, 'write');\r\n        \r\n        if (lang.name && (listening || speaking || writing)) {\r\n            languageSkills.push({\r\n                language_name: lang.name,\r\n                listening_level: listening,\r\n                speaking_level: speaking,\r\n                writing_level: writing\r\n            });\r\n        }\r\n    });\r\n    \r\n    \/\/ \u5efa\u69cb\u5176\u4ed6\u8072\u660e\u8cc7\u6599\uff08\u53ea\u6709\u9078\u64c7\u4e86\u624d\u50b3\uff09\r\n    const otherDeclarations = {};\r\n    if (formData.conviction) {\r\n        otherDeclarations.has_criminal_record = formData.conviction === '\u662f';\r\n    }\r\n    if (formData.legal_issue) {\r\n        otherDeclarations.has_legal_issue = formData.legal_issue === '\u662f';\r\n    }\r\n    if (formData.non_compete) {\r\n        otherDeclarations.has_non_compete = formData.non_compete === '\u662f';\r\n    }\r\n    if (formData.disability) {\r\n        otherDeclarations.has_disability = formData.disability === '\u6709';\r\n    }\r\n    \r\n    \/\/ \u5efa\u69cb\u5176\u4ed6\u8cc7\u8a0a\u8cc7\u6599\r\n    const otherInfo = {\r\n        available_date: formData.available_date || '',\r\n        expected_hourly_salary: formData.expected_hourly_salary || '',\r\n        expected_monthly_salary: formData.expected_monthly_salary || '',\r\n        expected_annual_salary: formData.expected_annual_salary || '',\r\n        referral_source: formData.application_channel || '',\r\n        referral_name: formData.referrer || '',\r\n        emergency_contact_name: formData.emergency_name || '',\r\n        emergency_contact_relation: formData.emergency_relation || '',\r\n        emergency_contact_phone: formData.emergency_phone || ''\r\n    };\r\n    \r\n    return {\r\n        hr_candidate: hrCandidate,\r\n        hr_educations: hrEducations,\r\n        hr_work_experiences: hrWorkExperiences,\r\n        language_skills: languageSkills,\r\n        other_declarations: otherDeclarations,\r\n        other_info: otherInfo\r\n    };\r\n}\r\n\r\n\/\/ \u5f9e checkbox \u53d6\u5f97\u8a9e\u8a00\u80fd\u529b\u7b49\u7d1a\r\nfunction getLevelFromCheckboxes(langPrefix, skill) {\r\n    const form = document.getElementById('hrApplicationForm');\r\n    if (form.querySelector(`input[name=\"${langPrefix}_fluent_${skill}\"]`)?.checked) {\r\n        return 'high';\r\n    }\r\n    if (form.querySelector(`input[name=\"${langPrefix}_fair_${skill}\"]`)?.checked) {\r\n        return 'medium';\r\n    }\r\n    if (form.querySelector(`input[name=\"${langPrefix}_poor_${skill}\"]`)?.checked) {\r\n        return 'low';\r\n    }\r\n    return '';\r\n}\r\n\r\n\/\/ \u5f9e\u5176\u4ed6\u8a9e\u8a00\u8cc7\u6599\u53d6\u5f97\u8a9e\u8a00\u80fd\u529b\u7b49\u7d1a\r\nfunction getLevelFromOtherLang(lang, skill) {\r\n    if (lang[`fluent_${skill}`]) return 'high';\r\n    if (lang[`fair_${skill}`]) return 'medium';\r\n    if (lang[`poor_${skill}`]) return 'low';\r\n    return '';\r\n}\r\n\r\n\/\/ \u9ede\u64ca\u5f48\u7a97\u5916\u90e8\u95dc\u9589\uff08\u53ef\u9078\u529f\u80fd\uff09\r\ndocument.getElementById('confirmationModal').addEventListener('click', function(e) {\r\n    if (e.target === this) {\r\n        closeConfirmationModal();\r\n    }\r\n});\r\n\r\n\/\/ \u9a57\u8b49\u82f1\u6587\u59d3\u540d(\u4e0d\u53ef\u5305\u542b\u4e2d\u6587)\r\nfunction validateEnglishName(name) {\r\n    \/\/ \u6aa2\u67e5\u662f\u5426\u5305\u542b\u4e2d\u6587\u5b57\u7b26\r\n    const chinesePattern = \/[\\u4e00-\\u9fa5\\u3400-\\u4dbf\\u{20000}-\\u{2a6df}\\u{2a700}-\\u{2b73f}\\u{2b740}-\\u{2b81f}\\u{2b820}-\\u{2ceaf}\\uf900-\\ufaff\\u3300-\\u33ff\\ufe30-\\ufe4f\\uf900-\\ufaff\\u{2f800}-\\u{2fa1f}]\/u;\r\n\r\n    if (chinesePattern.test(name)) {\r\n        return {\r\n            valid: false,\r\n            message: '\u82f1\u6587\u59d3\u540d\u4e0d\u53ef\u5305\u542b\u4e2d\u6587\u5b57\u7b26\uff0c\u8acb\u4f7f\u7528\u82f1\u6587\u5b57\u6bcd\u8f38\u5165'\r\n        };\r\n    }\r\n\r\n    \/\/ \u6aa2\u67e5\u662f\u5426\u70ba\u7a7a\u6216\u53ea\u6709\u7a7a\u683c\r\n    if (!name || name.trim() === '') {\r\n        return {\r\n            valid: false,\r\n            message: '\u8acb\u8f38\u5165\u82f1\u6587\u59d3\u540d'\r\n        };\r\n    }\r\n\r\n    \/\/ \u6aa2\u67e5\u662f\u5426\u53ea\u5305\u542b\u82f1\u6587\u5b57\u6bcd\u3001\u7a7a\u683c\u3001\u9ede\u865f\u548c\u9023\u5b57\u865f\r\n    const validPattern = \/^[a-zA-Z\\s.\\-]+$\/;\r\n    if (!validPattern.test(name)) {\r\n        return {\r\n            valid: false,\r\n            message: '\u82f1\u6587\u59d3\u540d\u53ea\u80fd\u5305\u542b\u82f1\u6587\u5b57\u6bcd\u3001\u7a7a\u683c\u3001\u9ede\u865f\u548c\u9023\u5b57\u865f'\r\n        };\r\n    }\r\n\r\n    return {\r\n        valid: true,\r\n        message: '\u82f1\u6587\u59d3\u540d\u683c\u5f0f\u6b63\u78ba'\r\n    };\r\n}\r\n\r\n\/\/ \u53f0\u7063\u8eab\u5206\u8b49\u5b57\u865f\u9a57\u8b49\u51fd\u6578\r\nfunction validateTaiwanNationalID(idNumber) {\r\n    \/\/ \u8f49\u70ba\u5927\u5beb\r\n    idNumber = idNumber.toUpperCase();\r\n\r\n    \/\/ \u683c\u5f0f\u6aa2\u67e5:\u7b2c\u4e00\u78bc\u70ba\u82f1\u6587\u5b57\u6bcd,\u5f8c\u97629\u78bc\u70ba\u6578\u5b57\r\n    const idPattern = \/^[A-Z][0-9]{9}$\/;\r\n    if (!idPattern.test(idNumber)) {\r\n        return { valid: false };\r\n    }\r\n\r\n    \/\/ \u5b57\u6bcd\u5c0d\u61c9\u6578\u5b57\u8868\r\n    const letterMap = {\r\n        'A': 10, 'B': 11, 'C': 12, 'D': 13, 'E': 14, 'F': 15, 'G': 16, 'H': 17, 'I': 34, 'J': 18,\r\n        'K': 19, 'L': 20, 'M': 21, 'N': 22, 'O': 35, 'P': 23, 'Q': 24, 'R': 25, 'S': 26, 'T': 27,\r\n        'U': 28, 'V': 29, 'W': 32, 'X': 30, 'Y': 31, 'Z': 33\r\n    };\r\n\r\n    const firstLetter = idNumber.charAt(0);\r\n    const letterValue = letterMap[firstLetter];\r\n\r\n    if (!letterValue) {\r\n        return { valid: false };\r\n    }\r\n\r\n    \/\/ \u5c07\u82f1\u6587\u5b57\u6bcd\u8f49\u63db\u70ba\u5169\u4f4d\u6578\u5b57\r\n    const d1 = Math.floor(letterValue \/ 10);\r\n    const d2 = letterValue % 10;\r\n\r\n    \/\/ \u53d6\u51fa\u5f8c9\u4f4d\u6578\u5b57\r\n    const numbers = idNumber.substring(1).split('').map(n => parseInt(n));\r\n\r\n    \/\/ \u9a57\u8b49\u6aa2\u67e5\u78bc - \u4fee\u6b63\u7b97\u6cd5\r\n    \/\/ \u516c\u5f0f: d1*1 + d2*9 + n1*8 + n2*7 + n3*6 + n4*5 + n5*4 + n6*3 + n7*2 + n8*1 + n9*1\r\n    const weights = [8, 7, 6, 5, 4, 3, 2, 1, 1];\r\n    let sum = d1 * 1 + d2 * 9;\r\n\r\n    for (let i = 0; i < 9; i++) {\r\n        sum += numbers[i] * weights[i];\r\n    }\r\n\r\n    if (sum % 10 !== 0) {\r\n        return { valid: false };\r\n    }\r\n\r\n    return { valid: true };\r\n}\r\n\r\n\/\/ \u5916\u570b\u4eba\u8eab\u5206\u8b49\u3001\u7a05\u7c4d\u7de8\u865f\u9a57\u8b49\u51fd\u6578\r\nfunction validateForeignerId(idNumber) {\r\n    const id = idNumber.toUpperCase();\r\n    const idLength = id.length;\r\n\r\n    \/\/ \u7a05\u7c4d\u7de8\u865f\u7de8\u78bc\u539f\u5247\r\n    \/\/ \u5927\u9678\u5730\u5340\u4eba\u6c11\uff1a9 \uff0b\u897f\u5143\u51fa\u751f\u5e74\u5f8c 2 \u78bc\u53ca\u51fa\u751f\u6708\u65e5 4 \u78bc\uff087\u78bc\uff09\r\n    const isChinaTaxNumber = idLength === 7 && \/^9\\d{6}$\/.test(id);\r\n    \/\/ \u5176\u9918\u60c5\u5f62\uff1a\u897f\u5143\u51fa\u751f\u5e74\u6708\u65e5 8 \u78bc\uff0b\u82f1\u6587\u59d3\u540d\u524d 2 \u5b57\u6bcd\r\n    const isOtherTaxNumber = idLength === 10 && \/^\\d{8}[A-Z]{2}$\/.test(id);\r\n\r\n    \/\/ \u7d71\u4e00\u8b49\u865f\u7de8\u78bc\u539f\u5247\r\n    \/\/ [\u7b2c\u4e00\u78bc\u8981\u70ba A-Z] AND [\u7b2c\u4e8c\u78bc\u8981\u70ba A-D OR 8,9] AND [\u7b2c\u4e09~\u5341\u78bc\u8981\u70ba 0-9]\r\n    const isForeignerId = idLength === 10 && \/^[A-Z][ABCD89]\\d{8}$\/.test(id);\r\n\r\n    return { valid: isChinaTaxNumber || isOtherTaxNumber || isForeignerId };\r\n}\r\n\r\n\/\/ \u8eab\u5206\u8b49\u5b57\u865f\u9a57\u8b49\uff08\u53f0\u7063\u8eab\u5206\u8b49\u6216\u5916\u570b\u4eba\u8b49\u865f\u7686\u53ef\uff09\r\nfunction validateTaiwanID(idNumber) {\r\n    if (!idNumber) {\r\n        return {\r\n            valid: false,\r\n            message: '\u8acb\u8f38\u5165\u8eab\u5206\u8b49\u5b57\u865f'\r\n        };\r\n    }\r\n\r\n    const taiwanResult = validateTaiwanNationalID(idNumber);\r\n    const foreignerResult = validateForeignerId(idNumber);\r\n\r\n    if (taiwanResult.valid || foreignerResult.valid) {\r\n        return {\r\n            valid: true,\r\n            message: '\u8eab\u5206\u8b49\u5b57\u865f\u683c\u5f0f\u6b63\u78ba'\r\n        };\r\n    }\r\n\r\n    return {\r\n        valid: false,\r\n        message: '\u8acb\u8f38\u5165\u6b63\u78ba\u7684\u8eab\u5206\u8b49\u5b57\u865f\u6216\u5916\u570b\u4eba\u8b49\u865f\/\u7a05\u7c4d\u7de8\u865f'\r\n    };\r\n}\r\n\r\n\/\/ \u82f1\u6587\u59d3\u540d\u5373\u6642\u9a57\u8b49\r\ndocument.getElementById('englishName').addEventListener('input', function() {\r\n    const englishName = this.value;\r\n    const errorElement = document.getElementById('englishNameError');\r\n\r\n    \/\/ \u6e05\u9664\u4e4b\u524d\u7684\u6a23\u5f0f\r\n    this.style.borderColor = '';\r\n    errorElement.style.display = 'none';\r\n\r\n    \/\/ \u5982\u679c\u6709\u8f38\u5165\u5167\u5bb9\u624d\u9032\u884c\u9a57\u8b49\r\n    if (englishName.length > 0) {\r\n        const result = validateEnglishName(englishName);\r\n\r\n        if (!result.valid) {\r\n            this.style.borderColor = '#e74c3c';\r\n            errorElement.textContent = result.message;\r\n            errorElement.style.display = 'block';\r\n        } else {\r\n            this.style.borderColor = '#27ae60';\r\n            errorElement.style.display = 'none';\r\n        }\r\n    }\r\n});\r\n\r\n\/\/ \u82f1\u6587\u59d3\u540d\u5931\u53bb\u7126\u9ede\u6642\u9a57\u8b49\r\ndocument.getElementById('englishName').addEventListener('blur', function() {\r\n    const englishName = this.value.trim();\r\n    const errorElement = document.getElementById('englishNameError');\r\n\r\n    if (englishName.length > 0) {\r\n        const result = validateEnglishName(englishName);\r\n\r\n        if (!result.valid) {\r\n            this.style.borderColor = '#e74c3c';\r\n            errorElement.textContent = result.message;\r\n            errorElement.style.display = 'block';\r\n        }\r\n    }\r\n});\r\n\r\n\/\/ Email \u683c\u5f0f\u9a57\u8b49\r\nfunction validateEmail(email) {\r\n    const emailPattern = \/^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$\/;\r\n    if (!emailPattern.test(email)) {\r\n        return { valid: false, message: 'Email \u683c\u5f0f\u4e0d\u6b63\u78ba' };\r\n    }\r\n    return { valid: true };\r\n}\r\n\r\n\/\/ Email \u5931\u53bb\u7126\u9ede\u6642\u9a57\u8b49\r\ndocument.getElementById('contact_mail').addEventListener('blur', function() {\r\n    const email = this.value.trim();\r\n    const errorElement = document.getElementById('contactMailError');\r\n\r\n    if (email.length > 0) {\r\n        const result = validateEmail(email);\r\n\r\n        if (!result.valid) {\r\n            this.style.borderColor = '#e74c3c';\r\n            errorElement.textContent = result.message;\r\n            errorElement.style.display = 'block';\r\n        } else {\r\n            this.style.borderColor = '#27ae60';\r\n            errorElement.style.display = 'none';\r\n        }\r\n    }\r\n});\r\n\r\n\/\/ \u8eab\u5206\u8b49\u5b57\u865f\u5373\u6642\u9a57\u8b49\r\ndocument.getElementById('idNumber').addEventListener('input', function() {\r\n    \/\/ \u81ea\u52d5\u5c07\u82f1\u6587\u5b57\u6bcd\u8f49\u70ba\u5927\u5beb\uff08\u7dad\u6301\u6e38\u6a19\u4f4d\u7f6e\uff09\r\n    const cursorPos = this.selectionStart;\r\n    const upperValue = this.value.toUpperCase();\r\n    if (this.value !== upperValue) {\r\n        this.value = upperValue;\r\n        this.setSelectionRange(cursorPos, cursorPos);\r\n    }\r\n\r\n    const idNumber = this.value.trim();\r\n    const errorElement = document.getElementById('idNumberError');\r\n\r\n    \/\/ \u6e05\u9664\u4e4b\u524d\u7684\u6a23\u5f0f\r\n    this.style.borderColor = '';\r\n    errorElement.style.display = 'none';\r\n\r\n    \/\/ \u5982\u679c\u6709\u8f38\u5165\u5167\u5bb9\u624d\u9032\u884c\u9a57\u8b49\r\n    if (idNumber.length > 0) {\r\n        const result = validateTaiwanID(idNumber);\r\n\r\n        if (!result.valid) {\r\n            this.style.borderColor = '#e74c3c';\r\n            errorElement.textContent = result.message;\r\n            errorElement.style.display = 'block';\r\n        } else {\r\n            this.style.borderColor = '#27ae60';\r\n            errorElement.style.display = 'none';\r\n        }\r\n    }\r\n});\r\n\r\n\/\/ \u8eab\u5206\u8b49\u5b57\u865f\u5931\u53bb\u7126\u9ede\u6642\u9a57\u8b49\r\ndocument.getElementById('idNumber').addEventListener('blur', function() {\r\n    const idNumber = this.value.trim();\r\n    const errorElement = document.getElementById('idNumberError');\r\n\r\n    if (idNumber.length > 0) {\r\n        const result = validateTaiwanID(idNumber);\r\n\r\n        if (!result.valid) {\r\n            this.style.borderColor = '#e74c3c';\r\n            errorElement.textContent = result.message;\r\n            errorElement.style.display = 'block';\r\n        }\r\n    }\r\n});\r\n\r\n\/\/ \u8a9e\u8a00\u80fd\u529b\u8868\u683c\u7684\u4e92\u65a5\u9078\u64c7\r\ndocument.querySelectorAll('.language-table input[type=\"checkbox\"]').forEach(checkbox => {\r\n    checkbox.addEventListener('change', function() {\r\n        if (this.checked) {\r\n            const row = this.closest('tr');\r\n            const language = row.cells[0].textContent;\r\n            const skill = this.name.split('_').pop(); \/\/ listen, speak, or write\r\n            \r\n            \/\/ \u53d6\u6d88\u540c\u4e00\u8a9e\u8a00\u540c\u4e00\u6280\u80fd\u7684\u5176\u4ed6\u9078\u9805\r\n            row.querySelectorAll(`input[name*=\"${skill}\"]`).forEach(cb => {\r\n                if (cb !== this) cb.checked = false;\r\n            });\r\n        }\r\n    });\r\n});\r\n\r\n\/\/ \u81ea\u52d5\u8a08\u7b97\u5e74\u9f61\uff08\u53ef\u9078\u529f\u80fd\uff09\r\ndocument.getElementById('birthdate').addEventListener('change', function() {\r\n    const birthDate = new Date(this.value);\r\n    const today = new Date();\r\n    let age = today.getFullYear() - birthDate.getFullYear();\r\n    const monthDiff = today.getMonth() - birthDate.getMonth();\r\n\r\n    if (monthDiff < 0 || (monthDiff === 0 && today.getDate() < birthDate.getDate())) {\r\n        age--;\r\n    }\r\n\r\n    \/\/ \u53ef\u4ee5\u5728\u9019\u88e1\u986f\u793a\u5e74\u9f61\u6216\u9032\u884c\u5176\u4ed6\u8655\u7406\r\n    console.log('\u5e74\u9f61\uff1a', age);\r\n});\r\n\r\n\r\n\/\/ \u5de5\u4f5c\u7d93\u6b77\u52d5\u614b\u7ba1\u7406\r\nlet workExperienceCount = 0;\r\nconst workExperienceIds = new Set();\r\n\r\n\/\/ \u65b0\u589e\u5de5\u4f5c\u7d93\u6b77\r\nfunction addWorkExperience() {\r\n    workExperienceCount++;\r\n    const currentId = workExperienceCount;\r\n    workExperienceIds.add(currentId);\r\n    \r\n    const container = document.getElementById('workExperienceContainer');\r\n    \r\n    const workBlock = document.createElement('div');\r\n    workBlock.className = 'work-experience-block';\r\n    workBlock.id = `work-experience-${currentId}`;\r\n    workBlock.setAttribute('data-work-id', currentId);\r\n    \r\n    workBlock.innerHTML = `\r\n        <div class=\"work-experience-header\">\r\n            <span>\u5de5\u4f5c\u7d93\u6b77<\/span>\r\n            <button type=\"button\" class=\"btn-remove-work\" onclick=\"removeWorkExperience(${currentId})\">\u522a\u9664<\/button>\r\n        <\/div>\r\n        <div class=\"form-row\">\r\n            <div class=\"form-group\">\r\n                <label class=\"form-label\" for=\"work${currentId}_company\">\u516c\u53f8\u540d\u7a31<\/label>\r\n                <input type=\"text\" class=\"form-control\" id=\"work${currentId}_company\" name=\"work_company[]\" maxlength=\"191\">\r\n            <\/div>\r\n            <div class=\"form-group\">\r\n                <label class=\"form-label\" for=\"work${currentId}_title\">\u8077\u7a31<\/label>\r\n                <input type=\"text\" class=\"form-control\" id=\"work${currentId}_title\" name=\"work_title[]\" maxlength=\"191\">\r\n            <\/div>\r\n        <\/div>\r\n        <div class=\"form-row\">\r\n            <div class=\"form-group\">\r\n                <label class=\"form-label\" for=\"work${currentId}_start\">\u5230\u8077\u5e74\u6708<\/label>\r\n                <input type=\"month\" class=\"form-control\" id=\"work${currentId}_start\" name=\"work_start[]\">\r\n            <\/div>\r\n            <div class=\"form-group\">\r\n                <label class=\"form-label\" for=\"work${currentId}_end\">\u96e2\u8077\u5e74\u6708<\/label>\r\n                <input type=\"month\" class=\"form-control\" id=\"work${currentId}_end\" name=\"work_end[]\">\r\n            <\/div>\r\n        <\/div>\r\n        <div class=\"form-row\">\r\n            <div class=\"form-group\">\r\n                <label class=\"form-label\" for=\"work${currentId}_monthly\">\u6708\u85aa(\u6bcf\u6708\u56fa\u5b9a\u85aa)<\/label>\r\n                <input type=\"number\" class=\"form-control\" id=\"work${currentId}_monthly\" name=\"work_monthly[]\" placeholder=\"NT$\" min=\"0\" max=\"99999999\">\r\n            <\/div>\r\n            <div class=\"form-group\">\r\n                <label class=\"form-label\" for=\"work${currentId}_annual\">\u5e74\u85aa(\u542b\u5e74\u7d42\u8207\u734e\u91d1)<\/label>\r\n                <input type=\"number\" class=\"form-control\" id=\"work${currentId}_annual\" name=\"work_annual[]\" placeholder=\"NT$\" min=\"0\" max=\"9999999999\">\r\n            <\/div>\r\n        <\/div>\r\n        <div class=\"form-group\">\r\n            <label class=\"form-label\" for=\"work${currentId}_content\">\u5de5\u4f5c\u5167\u5bb9<\/label>\r\n            <textarea class=\"form-control\" id=\"work${currentId}_content\" name=\"work_content[]\" rows=\"3\" maxlength=\"2000\"><\/textarea>\r\n        <\/div>\r\n        <div class=\"form-group\">\r\n            <label class=\"form-label\" for=\"work${currentId}_reason\">\u96e2\u8077\u539f\u56e0<\/label>\r\n            <input type=\"text\" class=\"form-control\" id=\"work${currentId}_reason\" name=\"work_reason[]\" maxlength=\"191\">\r\n        <\/div>\r\n    `;\r\n    \r\n    container.appendChild(workBlock);\r\n\r\n    \/\/ \u70ba\u65b0\u589e\u7684\u5de5\u4f5c\u7d93\u6b77\u6b04\u4f4d\u6dfb\u52a0\u5b57\u5143\u9577\u5ea6\u6aa2\u67e5\r\n    const newInputs = workBlock.querySelectorAll('input[maxlength], textarea[maxlength]');\r\n    newInputs.forEach(input => {\r\n        input.addEventListener('input', function() {\r\n            checkMaxLength(this);\r\n        });\r\n    });\r\n\r\n    \/\/ Safari \u6708\u4efd\u9078\u64c7\u5668\u76f8\u5bb9\u6027\u8655\u7406 - \u52d5\u614b\u65b0\u589e\u7684\u6b04\u4f4d\r\n    applyMonthInputPolyfillToElement(workBlock);\r\n\r\n    \/\/ \u5982\u679c\u53ea\u6709\u4e00\u500b\u5de5\u4f5c\u7d93\u6b77\uff0c\u96b1\u85cf\u522a\u9664\u6309\u9215\r\n    updateDeleteButtons();\r\n\r\n    \/\/ \u53ea\u6709\u5728\u975e\u521d\u59cb\u8f09\u5165\u6642\u624d\u6efe\u52d5\u5230\u65b0\u589e\u7684\u5340\u584a\r\n    if (workExperienceCount > 1) {\r\n        workBlock.scrollIntoView({ behavior: 'smooth', block: 'center' });\r\n    }\r\n}\r\n\r\n\/\/ \u79fb\u9664\u5de5\u4f5c\u7d93\u6b77\r\nfunction removeWorkExperience(id) {\r\n    const totalBlocks = document.querySelectorAll('#workExperienceContainer .work-experience-block').length;\r\n    \r\n    \/\/ \u78ba\u4fdd\u81f3\u5c11\u4fdd\u7559\u4e00\u500b\u5de5\u4f5c\u7d93\u6b77\r\n    if (totalBlocks <= 1) {\r\n        alert('\u81f3\u5c11\u9700\u8981\u4fdd\u7559\u4e00\u500b\u5de5\u4f5c\u7d93\u6b77\u6b04\u4f4d');\r\n        return;\r\n    }\r\n    \r\n    if (confirm('\u78ba\u5b9a\u8981\u522a\u9664\u9019\u4efd\u5de5\u4f5c\u7d93\u6b77\u55ce\uff1f')) {\r\n        const element = document.getElementById(`work-experience-${id}`);\r\n        if (element) {\r\n            element.style.opacity = '0';\r\n            element.style.transform = 'translateX(-20px)';\r\n            setTimeout(() => {\r\n                element.remove();\r\n                workExperienceIds.delete(id);\r\n                updateDeleteButtons();\r\n            }, 300);\r\n        }\r\n    }\r\n}\r\n\r\n\/\/ \u66f4\u65b0\u522a\u9664\u6309\u9215\u7684\u986f\u793a\r\nfunction updateDeleteButtons() {\r\n    const blocks = document.querySelectorAll('#workExperienceContainer .work-experience-block');\r\n    const deleteButtons = document.querySelectorAll('.btn-remove-work');\r\n    \r\n    \/\/ \u5982\u679c\u53ea\u6709\u4e00\u500b\u5340\u584a\uff0c\u96b1\u85cf\u522a\u9664\u6309\u9215\r\n    if (blocks.length === 1) {\r\n        deleteButtons.forEach(btn => btn.style.display = 'none');\r\n    } else {\r\n        deleteButtons.forEach(btn => btn.style.display = 'block');\r\n    }\r\n}\r\n\r\n\/\/ \u9801\u9762\u8f09\u5165\u6642\u81ea\u52d5\u65b0\u589e\u7b2c\u4e00\u500b\u5de5\u4f5c\u7d93\u6b77\r\nwindow.addEventListener('load', function() {\r\n    addWorkExperience();\r\n});\r\n\r\n\/\/ \u586b\u5165\u7bc4\u4f8b\u8cc7\u6599\r\nfunction fillSampleData() {\r\n    if (!confirm('\u78ba\u5b9a\u8981\u586b\u5165\u7bc4\u4f8b\u8cc7\u6599\u55ce\uff1f\u9019\u5c07\u6703\u8986\u84cb\u76ee\u524d\u5df2\u586b\u5beb\u7684\u5167\u5bb9\u3002')) {\r\n        return;\r\n    }\r\n    \r\n    \/\/ \u57fa\u672c\u8cc7\u6599\r\n    document.getElementById('position').value = 'RD-\u5f8c\u7aef\u5de5\u7a0b\u5e2b(\u53f0\u5317)';\r\n    document.getElementById('name').value = '\u738b\u4e8c\u660e';\r\n    document.getElementById('englishName').value = 'Johnny Wang';\r\n    document.getElementById('gender').value = '\u7537';\r\n    document.getElementById('birthdate').value = '1990-01-15';\r\n    document.getElementById('phone').value = '0912345678';\r\n    document.getElementById('contact_mail').value = 'john.wang@example.com';\r\n    document.getElementById('militaryService').value = '\u5df2\u9000\u4f0d';\r\n    document.getElementById('idNumber').value = 'A187732126';\r\n    document.getElementById('domicileAddress').value = '\u53f0\u5317\u5e02\u4e2d\u6b63\u5340\u91cd\u6176\u5357\u8def\u4e00\u6bb5122\u865f';\r\n    document.getElementById('mailingAddress').value = '\u53f0\u5317\u5e02\u4e2d\u6b63\u5340\u91cd\u6176\u5357\u8def\u4e00\u6bb5122\u865f';\r\n    \r\n    \/\/ \u5b78\u6b77 - \u6700\u9ad8\u5b78\u6b77\r\n    document.getElementById('edu1_level').value = '\u78a9\u58eb';\r\n    document.getElementById('edu1_school').value = '\u570b\u7acb\u5167\u6e56\u5927\u5b78';\r\n    document.getElementById('edu1_department').value = '\u8cc7\u8a0a\u5de5\u7a0b\u5b78\u7cfb';\r\n    document.getElementById('edu1_status').value = '\u5df2\u7562\u696d';\r\n    document.getElementById('edu1_start').value = '2012-09';\r\n    document.getElementById('edu1_end').value = '2014-06';\r\n    \r\n    \/\/ \u5b78\u6b77 - \u6b21\u9ad8\u5b78\u6b77\r\n    document.getElementById('edu2_level').value = '\u5927\u5b78';\r\n    document.getElementById('edu2_school').value = '\u570b\u7acb\u4ea4\u901a\u5927\u5b78';\r\n    document.getElementById('edu2_department').value = '\u8cc7\u8a0a\u5de5\u7a0b\u5b78\u7cfb';\r\n    document.getElementById('edu2_status').value = '\u5df2\u7562\u696d';\r\n    document.getElementById('edu2_start').value = '2008-09';\r\n    document.getElementById('edu2_end').value = '2012-06';\r\n    \r\n    \/\/ \u6e05\u7a7a\u73fe\u6709\u5de5\u4f5c\u7d93\u6b77\u4e26\u65b0\u589e\u7bc4\u4f8b\r\n    document.getElementById('workExperienceContainer').innerHTML = '';\r\n    workExperienceCount = 0;\r\n    workExperienceIds.clear();\r\n    \r\n    \/\/ \u65b0\u589e\u7b2c\u4e00\u4efd\u5de5\u4f5c\u7d93\u6b77\r\n    addWorkExperience();\r\n    setTimeout(() => {\r\n        const workId1 = workExperienceCount;\r\n        document.querySelector(`#work${workId1}_company`).value = 'ABC\u79d1\u6280\u80a1\u4efd\u6709\u9650\u516c\u53f8';\r\n        document.querySelector(`#work${workId1}_title`).value = '\u8cc7\u6df1\u5f8c\u7aef\u5de5\u7a0b\u5e2b';\r\n        document.querySelector(`#work${workId1}_start`).value = '2018-07';\r\n        document.querySelector(`#work${workId1}_end`).value = '2023-12';\r\n        document.querySelector(`#work${workId1}_monthly`).value = '60000';\r\n        document.querySelector(`#work${workId1}_annual`).value = '850000';\r\n        document.querySelector(`#work${workId1}_content`).value = '\u8ca0\u8cac\u5f8c\u7aef\u7cfb\u7d71\u67b6\u69cb\u8a2d\u8a08\u8207\u958b\u767c\uff0c\u5305\u542b API \u8a2d\u8a08\u3001\u8cc7\u6599\u5eab\u512a\u5316\u3001\u7cfb\u7d71\u6548\u80fd\u8abf\u6821\u7b49\u5de5\u4f5c\u3002';\r\n        document.querySelector(`#work${workId1}_reason`).value = '\u5c0b\u6c42\u66f4\u597d\u7684\u8077\u6daf\u767c\u5c55\u6a5f\u6703';\r\n    }, 100);\r\n    \r\n    \/\/ \u65b0\u589e\u7b2c\u4e8c\u4efd\u5de5\u4f5c\u7d93\u6b77\r\n    setTimeout(() => {\r\n        addWorkExperience();\r\n        setTimeout(() => {\r\n            const workId2 = workExperienceCount;\r\n            document.querySelector(`#work${workId2}_company`).value = 'XYZ\u7db2\u8def\u79d1\u6280\u516c\u53f8';\r\n            document.querySelector(`#work${workId2}_title`).value = '\u5f8c\u7aef\u5de5\u7a0b\u5e2b';\r\n            document.querySelector(`#work${workId2}_start`).value = '2014-08';\r\n            document.querySelector(`#work${workId2}_end`).value = '2018-06';\r\n            document.querySelector(`#work${workId2}_monthly`).value = '45000';\r\n            document.querySelector(`#work${workId2}_annual`).value = '600000';\r\n            document.querySelector(`#work${workId2}_content`).value = '\u53c3\u8207\u96fb\u5546\u5e73\u53f0\u958b\u767c\uff0c\u8ca0\u8cac\u8a02\u55ae\u7cfb\u7d71\u3001\u91d1\u6d41\u4e32\u63a5\u3001\u6703\u54e1\u7ba1\u7406\u7b49\u6a21\u7d44\u958b\u767c\u3002';\r\n            document.querySelector(`#work${workId2}_reason`).value = '\u516c\u53f8\u7d44\u7e54\u8abf\u6574';\r\n        }, 100);\r\n    }, 200);\r\n    \r\n    \/\/ \u8a9e\u8a00\u80fd\u529b - \u82f1\u8a9e\r\n    document.querySelector('input[name=\"eng_fluent_listen\"]').checked = true;\r\n    document.querySelector('input[name=\"eng_fair_speak\"]').checked = true;\r\n    document.querySelector('input[name=\"eng_fluent_write\"]').checked = true;\r\n    \r\n    \/\/ \u8a9e\u8a00\u80fd\u529b - \u65e5\u8a9e\r\n    document.querySelector('input[name=\"jp_fair_listen\"]').checked = true;\r\n    document.querySelector('input[name=\"jp_poor_speak\"]').checked = true;\r\n    document.querySelector('input[name=\"jp_fair_write\"]').checked = true;\r\n    \r\n    \/\/ \u5176\u4ed6\u8cc7\u8a0a\r\n    document.querySelector('input[name=\"application_channel\"][value=\"\u516c\u53f8\u5b98\u7db2\"]').checked = true;\r\n    document.getElementById('referrer').value = '';\r\n    document.querySelector('input[name=\"employment_type\"][value=\"\u6b63\u8077\"]').checked = true;\r\n    toggleSalaryFields();\r\n    document.getElementById('expected_monthly_salary').value = '60000';\r\n    document.getElementById('expected_annual_salary').value = '800000';\r\n    document.getElementById('available_date').value = '\u96a8\u6642\u53ef\u5230\u8077';\r\n    \r\n    \/\/ \u5176\u4ed6\u8072\u660e\r\n    document.querySelector('input[name=\"legal_issue\"][value=\"\u5426\"]').checked = true;\r\n    document.querySelector('input[name=\"conviction\"][value=\"\u5426\"]').checked = true;\r\n    document.querySelector('input[name=\"non_compete\"][value=\"\u5426\"]').checked = true;\r\n    document.querySelector('input[name=\"disability\"][value=\"\u7121\"]').checked = true;\r\n    \r\n    \/\/ \u7dca\u6025\u806f\u7d61\u4eba\r\n    document.getElementById('emergency_name').value = '\u738b\u5927\u660e';\r\n    document.getElementById('emergency_relation').value = '\u7236\u89aa';\r\n    document.getElementById('emergency_phone').value = '0923456789';\r\n    \r\n    \/\/ \u7c3d\u540d\r\n    document.querySelector('input[name=\"agree_terms\"]').checked = true;\r\n    document.getElementById('signature_name').value = '\u738b\u4e8c\u660e';\r\n    \r\n    alert('\u7bc4\u4f8b\u8cc7\u6599\u5df2\u586b\u5165\u5b8c\u6210\uff01');\r\n}\r\n\r\n\/\/ \u4fee\u6539\u8868\u55ae\u8cc7\u6599\u6536\u96c6\u65b9\u5f0f\r\nfunction collectWorkExperiences() {\r\n    const workExperiences = [];\r\n    const workBlocks = document.querySelectorAll('#workExperienceContainer .work-experience-block');\r\n    \r\n    workBlocks.forEach((block) => {\r\n        const workId = block.getAttribute('data-work-id');\r\n        const workData = {\r\n            company: document.querySelector(`#work${workId}_company`)?.value || '',\r\n            title: document.querySelector(`#work${workId}_title`)?.value || '',\r\n            start: document.querySelector(`#work${workId}_start`)?.value || '',\r\n            end: document.querySelector(`#work${workId}_end`)?.value || '',\r\n            monthly: document.querySelector(`#work${workId}_monthly`)?.value || '',\r\n            annual: document.querySelector(`#work${workId}_annual`)?.value || '',\r\n            content: document.querySelector(`#work${workId}_content`)?.value || '',\r\n            reason: document.querySelector(`#work${workId}_reason`)?.value || ''\r\n        };\r\n        \r\n        \/\/ \u53ea\u52a0\u5165\u6709\u586b\u5beb\u8cc7\u6599\u7684\u5de5\u4f5c\u7d93\u6b77\r\n        if (workData.company || workData.title || workData.start || workData.end) {\r\n            workExperiences.push(workData);\r\n        }\r\n    });\r\n    \r\n    return workExperiences;\r\n}\r\n\r\n\/\/ \u5176\u4ed6\u8a9e\u8a00\u52d5\u614b\u7ba1\u7406\r\nlet otherLanguageCount = 0;\r\nconst otherLanguageIds = new Set();\r\n\r\n\/\/ \u65b0\u589e\u5176\u4ed6\u8a9e\u8a00\r\nfunction addOtherLanguage() {\r\n    otherLanguageCount++;\r\n    const currentId = otherLanguageCount;\r\n    otherLanguageIds.add(currentId);\r\n    \r\n    const languageTableBody = document.querySelector('.language-table tbody');\r\n    \r\n    \/\/ \u5275\u5efa\u65b0\u7684\u8a9e\u8a00\u884c\r\n    const newRow = document.createElement('tr');\r\n    newRow.id = `other-language-row-${currentId}`;\r\n    newRow.setAttribute('data-lang-id', currentId);\r\n    \r\n    newRow.innerHTML = `\r\n        <td>\r\n            <input type=\"text\" class=\"form-control\" id=\"other_lang${currentId}_name\" name=\"other_lang_name[]\" placeholder=\"\u8acb\u8f38\u5165\u8a9e\u8a00\u540d\u7a31\" maxlength=\"191\" style=\"border: none; background: transparent; font-size: 14px; padding: 2px 5px; width: 100%;\">\r\n            <button type=\"button\" onclick=\"removeOtherLanguage(${currentId})\" style=\"background: #dc3545; color: white; border: none; border-radius: 2px; padding: 2px 6px; font-size: 10px; margin-top: 2px; cursor: pointer;\">\u522a\u9664<\/button>\r\n        <\/td>\r\n        <td><input type=\"checkbox\" name=\"other_lang${currentId}_fluent_listen\"><\/td>\r\n        <td><input type=\"checkbox\" name=\"other_lang${currentId}_fair_listen\"><\/td>\r\n        <td><input type=\"checkbox\" name=\"other_lang${currentId}_poor_listen\"><\/td>\r\n        <td><input type=\"checkbox\" name=\"other_lang${currentId}_fluent_speak\"><\/td>\r\n        <td><input type=\"checkbox\" name=\"other_lang${currentId}_fair_speak\"><\/td>\r\n        <td><input type=\"checkbox\" name=\"other_lang${currentId}_poor_speak\"><\/td>\r\n        <td><input type=\"checkbox\" name=\"other_lang${currentId}_fluent_write\"><\/td>\r\n        <td><input type=\"checkbox\" name=\"other_lang${currentId}_fair_write\"><\/td>\r\n        <td><input type=\"checkbox\" name=\"other_lang${currentId}_poor_write\"><\/td>\r\n    `;\r\n    \r\n    languageTableBody.appendChild(newRow);\r\n\r\n    \/\/ \u70ba\u65b0\u589e\u7684\u8a9e\u8a00\u540d\u7a31\u6b04\u4f4d\u6dfb\u52a0\u5b57\u5143\u9577\u5ea6\u6aa2\u67e5\r\n    const langNameInput = newRow.querySelector('input[maxlength]');\r\n    if (langNameInput) {\r\n        langNameInput.addEventListener('input', function() {\r\n            checkMaxLength(this);\r\n        });\r\n    }\r\n\r\n    \/\/ \u70ba\u65b0\u589e\u7684\u8a9e\u8a00\u80fd\u529b\u6dfb\u52a0\u4e92\u65a5\u9078\u64c7\u529f\u80fd\r\n    addLanguageSkillEventListeners(currentId);\r\n\r\n    \/\/ \u5e73\u6ed1\u6efe\u52d5\u5230\u65b0\u589e\u7684\u884c\r\n    newRow.scrollIntoView({ behavior: 'smooth', block: 'center' });\r\n}\r\n\r\n\/\/ \u79fb\u9664\u5176\u4ed6\u8a9e\u8a00\r\nfunction removeOtherLanguage(id) {\r\n    if (confirm('\u78ba\u5b9a\u8981\u522a\u9664\u9019\u500b\u8a9e\u8a00\u55ce\uff1f')) {\r\n        const element = document.getElementById(`other-language-row-${id}`);\r\n        if (element) {\r\n            element.style.opacity = '0';\r\n            element.style.transform = 'translateX(-20px)';\r\n            setTimeout(() => {\r\n                element.remove();\r\n                otherLanguageIds.delete(id);\r\n            }, 300);\r\n        }\r\n    }\r\n}\r\n\r\n\/\/ \u70ba\u7279\u5b9a\u8a9e\u8a00\u6dfb\u52a0\u4e92\u65a5\u9078\u64c7\u529f\u80fd\r\nfunction addLanguageSkillEventListeners(langId) {\r\n    const langRow = document.getElementById(`other-language-row-${langId}`);\r\n    const checkboxes = langRow.querySelectorAll('input[type=\"checkbox\"]');\r\n    \r\n    checkboxes.forEach(checkbox => {\r\n        checkbox.addEventListener('change', function() {\r\n            if (this.checked) {\r\n                const skill = this.name.split('_').pop(); \/\/ listen, speak, or write\r\n                \r\n                \/\/ \u53d6\u6d88\u540c\u4e00\u8a9e\u8a00\u540c\u4e00\u6280\u80fd\u7684\u5176\u4ed6\u9078\u9805\r\n                langRow.querySelectorAll(`input[name*=\"${skill}\"]`).forEach(cb => {\r\n                    if (cb !== this) cb.checked = false;\r\n                });\r\n            }\r\n        });\r\n    });\r\n}\r\n\r\n\/\/ \u6536\u96c6\u5176\u4ed6\u8a9e\u8a00\u8cc7\u6599\r\nfunction collectOtherLanguages() {\r\n    const otherLanguages = [];\r\n    const langRows = document.querySelectorAll('[id^=\"other-language-row-\"]');\r\n    \r\n    langRows.forEach((row) => {\r\n        const langId = row.getAttribute('data-lang-id');\r\n        const langName = document.querySelector(`#other_lang${langId}_name`)?.value || '';\r\n        \r\n        if (langName) {\r\n            const langData = {\r\n                name: langName,\r\n                fluent_listen: document.querySelector(`input[name=\"other_lang${langId}_fluent_listen\"]`)?.checked || false,\r\n                fluent_speak: document.querySelector(`input[name=\"other_lang${langId}_fluent_speak\"]`)?.checked || false,\r\n                fluent_write: document.querySelector(`input[name=\"other_lang${langId}_fluent_write\"]`)?.checked || false,\r\n                fair_listen: document.querySelector(`input[name=\"other_lang${langId}_fair_listen\"]`)?.checked || false,\r\n                fair_speak: document.querySelector(`input[name=\"other_lang${langId}_fair_speak\"]`)?.checked || false,\r\n                fair_write: document.querySelector(`input[name=\"other_lang${langId}_fair_write\"]`)?.checked || false,\r\n                poor_listen: document.querySelector(`input[name=\"other_lang${langId}_poor_listen\"]`)?.checked || false,\r\n                poor_speak: document.querySelector(`input[name=\"other_lang${langId}_poor_speak\"]`)?.checked || false,\r\n                poor_write: document.querySelector(`input[name=\"other_lang${langId}_poor_write\"]`)?.checked || false\r\n            };\r\n            \r\n            otherLanguages.push(langData);\r\n        }\r\n    });\r\n    \r\n    return otherLanguages;\r\n}\r\n<\/script>\r\n\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":22,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"elementor_header_footer","meta":{"footnotes":"","_links_to":"","_links_to_target":""},"class_list":["post-6169","page","type-page","status-publish","hentry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v24.0 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>\u6e2c\u8a66hr_form - Cyberbiz \u4e00\u7ad9\u5f0f\u65b0\u96f6\u552eOMO\uff5c\u54c1\u724c\u5b98\u7db2+\u667a\u80fdPOS+\u667a\u6167\u5009\u5132<\/title>\n<meta name=\"robots\" content=\"noindex, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<meta property=\"og:locale\" content=\"ja_JP\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"\u6e2c\u8a66hr_form - Cyberbiz \u4e00\u7ad9\u5f0f\u65b0\u96f6\u552eOMO\uff5c\u54c1\u724c\u5b98\u7db2+\u667a\u80fdPOS+\u667a\u6167\u5009\u5132\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.testcyb.info\/ja\/lp_hr_form\/\" \/>\n<meta property=\"og:site_name\" content=\"Cyberbiz \u4e00\u7ad9\u5f0f\u65b0\u96f6\u552eOMO\uff5c\u54c1\u724c\u5b98\u7db2+\u667a\u80fdPOS+\u667a\u6167\u5009\u5132\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/CyberbizCorporation\" \/>\n<meta property=\"article:modified_time\" content=\"2026-03-03T13:49:03+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.testcyb.info\/wp-content\/uploads\/2021\/02\/20210201_Website-Thumbnail_1200x630.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1201\" \/>\n\t<meta property=\"og:image:height\" content=\"630\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u63a8\u5b9a\u8aad\u307f\u53d6\u308a\u6642\u9593\" \/>\n\t<meta name=\"twitter:data1\" content=\"1\u5206\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.testcyb.info\/lp_hr_form\/\",\"url\":\"https:\/\/www.testcyb.info\/lp_hr_form\/\",\"name\":\"\u6e2c\u8a66hr_form - Cyberbiz \u4e00\u7ad9\u5f0f\u65b0\u96f6\u552eOMO\uff5c\u54c1\u724c\u5b98\u7db2+\u667a\u80fdPOS+\u667a\u6167\u5009\u5132\",\"isPartOf\":{\"@id\":\"https:\/\/www.testcyb.info\/#website\"},\"datePublished\":\"2025-07-15T02:07:51+00:00\",\"dateModified\":\"2026-03-03T13:49:03+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.testcyb.info\/lp_hr_form\/#breadcrumb\"},\"inLanguage\":\"ja\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.testcyb.info\/lp_hr_form\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.testcyb.info\/lp_hr_form\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\u9996\u9801\",\"item\":\"https:\/\/www.testcyb.info\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"\u6e2c\u8a66hr_form\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.testcyb.info\/#website\",\"url\":\"https:\/\/www.testcyb.info\/\",\"name\":\"Cyberbiz \u4e00\u7ad9\u5f0f\u65b0\u96f6\u552eOMO\uff5c\u54c1\u724c\u5b98\u7db2+\u667a\u80fdPOS+\u667a\u6167\u5009\u5132\",\"description\":\"\u63d0\u4f9b\u7db2\u8def\u667a\u6167\u54c1\u724c\u5b98\u7db2\u3001\u667a\u80fdPOS\u7cfb\u7d71\u3001\u667a\u6167\u5009\u5132\uff0c\u5168\u53f0\u552f\u4e00\u7dda\u4e0a\u3001\u7dda\u4e0b\u3001\u7269\u6d41\u5168\u9762\u6574\u5408\uff0c\u6578\u4f4d\u8f49\u578b\u3001\u54c1\u724c\u5b98\u7db2\u67b6\u8a2d\uff0c\u5354\u52a9\u5546\u5bb6\u8f15\u9b06\u5e36\u7d66\u9867\u5ba2\u6700\u4f73\u7684\u4f7f\u7528\u9ad4\u9a57\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.testcyb.info\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"ja\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"\u6e2c\u8a66hr_form - Cyberbiz \u4e00\u7ad9\u5f0f\u65b0\u96f6\u552eOMO\uff5c\u54c1\u724c\u5b98\u7db2+\u667a\u80fdPOS+\u667a\u6167\u5009\u5132","robots":{"index":"noindex","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"og_locale":"ja_JP","og_type":"article","og_title":"\u6e2c\u8a66hr_form - Cyberbiz \u4e00\u7ad9\u5f0f\u65b0\u96f6\u552eOMO\uff5c\u54c1\u724c\u5b98\u7db2+\u667a\u80fdPOS+\u667a\u6167\u5009\u5132","og_url":"https:\/\/www.testcyb.info\/ja\/lp_hr_form\/","og_site_name":"Cyberbiz \u4e00\u7ad9\u5f0f\u65b0\u96f6\u552eOMO\uff5c\u54c1\u724c\u5b98\u7db2+\u667a\u80fdPOS+\u667a\u6167\u5009\u5132","article_publisher":"https:\/\/www.facebook.com\/CyberbizCorporation","article_modified_time":"2026-03-03T13:49:03+00:00","og_image":[{"width":1201,"height":630,"url":"https:\/\/www.testcyb.info\/wp-content\/uploads\/2021\/02\/20210201_Website-Thumbnail_1200x630.jpg","type":"image\/jpeg"}],"twitter_card":"summary_large_image","twitter_misc":{"\u63a8\u5b9a\u8aad\u307f\u53d6\u308a\u6642\u9593":"1\u5206"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.testcyb.info\/lp_hr_form\/","url":"https:\/\/www.testcyb.info\/lp_hr_form\/","name":"\u6e2c\u8a66hr_form - Cyberbiz \u4e00\u7ad9\u5f0f\u65b0\u96f6\u552eOMO\uff5c\u54c1\u724c\u5b98\u7db2+\u667a\u80fdPOS+\u667a\u6167\u5009\u5132","isPartOf":{"@id":"https:\/\/www.testcyb.info\/#website"},"datePublished":"2025-07-15T02:07:51+00:00","dateModified":"2026-03-03T13:49:03+00:00","breadcrumb":{"@id":"https:\/\/www.testcyb.info\/lp_hr_form\/#breadcrumb"},"inLanguage":"ja","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.testcyb.info\/lp_hr_form\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.testcyb.info\/lp_hr_form\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\u9996\u9801","item":"https:\/\/www.testcyb.info\/"},{"@type":"ListItem","position":2,"name":"\u6e2c\u8a66hr_form"}]},{"@type":"WebSite","@id":"https:\/\/www.testcyb.info\/#website","url":"https:\/\/www.testcyb.info\/","name":"Cyberbiz \u4e00\u7ad9\u5f0f\u65b0\u96f6\u552eOMO\uff5c\u54c1\u724c\u5b98\u7db2+\u667a\u80fdPOS+\u667a\u6167\u5009\u5132","description":"\u63d0\u4f9b\u7db2\u8def\u667a\u6167\u54c1\u724c\u5b98\u7db2\u3001\u667a\u80fdPOS\u7cfb\u7d71\u3001\u667a\u6167\u5009\u5132\uff0c\u5168\u53f0\u552f\u4e00\u7dda\u4e0a\u3001\u7dda\u4e0b\u3001\u7269\u6d41\u5168\u9762\u6574\u5408\uff0c\u6578\u4f4d\u8f49\u578b\u3001\u54c1\u724c\u5b98\u7db2\u67b6\u8a2d\uff0c\u5354\u52a9\u5546\u5bb6\u8f15\u9b06\u5e36\u7d66\u9867\u5ba2\u6700\u4f73\u7684\u4f7f\u7528\u9ad4\u9a57","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.testcyb.info\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"ja"}]}},"_links":{"self":[{"href":"https:\/\/www.testcyb.info\/ja\/wp-json\/wp\/v2\/pages\/6169","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.testcyb.info\/ja\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.testcyb.info\/ja\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.testcyb.info\/ja\/wp-json\/wp\/v2\/users\/22"}],"replies":[{"embeddable":true,"href":"https:\/\/www.testcyb.info\/ja\/wp-json\/wp\/v2\/comments?post=6169"}],"version-history":[{"count":4,"href":"https:\/\/www.testcyb.info\/ja\/wp-json\/wp\/v2\/pages\/6169\/revisions"}],"predecessor-version":[{"id":6325,"href":"https:\/\/www.testcyb.info\/ja\/wp-json\/wp\/v2\/pages\/6169\/revisions\/6325"}],"wp:attachment":[{"href":"https:\/\/www.testcyb.info\/ja\/wp-json\/wp\/v2\/media?parent=6169"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}