{"id":196,"date":"2026-06-03T01:09:54","date_gmt":"2026-06-02T17:09:54","guid":{"rendered":"https:\/\/www.meditech.com.eg\/?page_id=196"},"modified":"2026-09-01T16:14:26","modified_gmt":"2026-09-01T08:14:26","slug":"careers-at-meditech-join-our-medical-technology-team","status":"publish","type":"page","link":"https:\/\/www.meditech.com.eg\/careers-at-meditech-join-our-medical-technology-team\/","title":{"rendered":"\u0627\u0644\u0648\u0638\u0627\u0626\u0641"},"content":{"rendered":"<div id=\"mt-portal-root\">\n\n<div id=\"toast\"><\/div>\n\n<!-- \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n     AUTH PAGE\n\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 -->\n<div id=\"pg-auth\" class=\"page active\">\n  <div class=\"auth-wrap\">\n    <div class=\"auth-card\">\n      <div class=\"auth-header\">\n        <div class=\"auth-logo\"><span class=\"logo-medi\">MEDI<\/span><span class=\"logo-tech-auth\">TECH<\/span><span class=\"logo-grp\"> GROUP<\/span><\/div>\n        <p>Career Portal &amp; HR Management System<\/p>\n      <\/div>\n      <div class=\"auth-body\">\n        <div class=\"auth-tabs\">\n          <div class=\"auth-tab active\" onclick=\"switchTab('login')\">Sign In<\/div>\n          <div class=\"auth-tab\" onclick=\"switchTab('register')\">Register<\/div>\n        <\/div>\n\n        <!-- LOGIN -->\n        <div id=\"tab-login\">\n          <div id=\"login-alert\" class=\"alert alert-error\"><\/div>\n          <div class=\"form-group\"><label>Username or Email<\/label>\n            <input id=\"l-user\" type=\"text\" placeholder=\"Enter username or email\">\n          <\/div>\n          <div class=\"form-group\"><label>Password<\/label>\n            <input id=\"l-pass\" type=\"password\" placeholder=\"Enter password\">\n          <\/div>\n          <button class=\"btn btn-primary btn-full\" onclick=\"doLogin()\">Sign In<\/button>\n          <div style=\"text-align:center;margin-top:1rem;font-size:0.82rem;color:var(--muted)\">\n            Don't have an account? <a href=\"#\" onclick=\"switchTab('register')\" style=\"color:var(--navy);font-weight:600\">Register here<\/a>\n          <\/div>\n        <\/div>\n\n        <!-- REGISTER -->\n        <div id=\"tab-register\" style=\"display:none\">\n          <div id=\"reg-alert\" class=\"alert alert-error\"><\/div>\n          <div class=\"form-row\">\n            <div class=\"form-group\"><label>Username<\/label>\n              <input id=\"r-user\" type=\"text\" placeholder=\"Choose a username\">\n            <\/div>\n            <div class=\"form-group\"><label>Age<\/label>\n              <input id=\"r-age\" type=\"number\" placeholder=\"Your age\" min=\"18\" max=\"70\">\n            <\/div>\n          <\/div>\n          <div class=\"form-group\"><label>Email Address<\/label>\n            <input id=\"r-email\" type=\"email\" placeholder=\"your@email.com\">\n          <\/div>\n          <div class=\"form-row\">\n            <div class=\"form-group\"><label>Country<\/label>\n              <select id=\"r-country\" class=\"country-sel\">\n                <option value=\"\">Select country...<\/option>\n<option>Afghanistan<\/option><option>Albania<\/option><option>Algeria<\/option><option>Andorra<\/option><option>Angola<\/option>\n<option>Antigua and Barbuda<\/option><option>Argentina<\/option><option>Armenia<\/option><option>Australia<\/option><option>Austria<\/option>\n<option>Azerbaijan<\/option><option>Bahamas<\/option><option>Bahrain<\/option><option>Bangladesh<\/option><option>Barbados<\/option>\n<option>Belarus<\/option><option>Belgium<\/option><option>Belize<\/option><option>Benin<\/option><option>Bhutan<\/option>\n<option>Bolivia<\/option><option>Bosnia and Herzegovina<\/option><option>Botswana<\/option><option>Brazil<\/option><option>Brunei<\/option>\n<option>Bulgaria<\/option><option>Burkina Faso<\/option><option>Burundi<\/option><option>Cabo Verde<\/option><option>Cambodia<\/option>\n<option>Cameroon<\/option><option>Canada<\/option><option>Central African Republic<\/option><option>Chad<\/option><option>Chile<\/option>\n<option>China<\/option><option>Colombia<\/option><option>Comoros<\/option><option>Congo (Brazzaville)<\/option><option>Congo (Kinshasa)<\/option>\n<option>Costa Rica<\/option><option>Croatia<\/option><option>Cuba<\/option><option>Cyprus<\/option><option>Czech Republic<\/option>\n<option>Denmark<\/option><option>Djibouti<\/option><option>Dominica<\/option><option>Dominican Republic<\/option><option>Ecuador<\/option>\n<option>Egypt<\/option><option>El Salvador<\/option><option>Equatorial Guinea<\/option><option>Eritrea<\/option><option>Estonia<\/option>\n<option>Eswatini<\/option><option>Ethiopia<\/option><option>Fiji<\/option><option>Finland<\/option><option>France<\/option>\n<option>Gabon<\/option><option>Gambia<\/option><option>Georgia<\/option><option>Germany<\/option><option>Ghana<\/option>\n<option>Greece<\/option><option>Grenada<\/option><option>Guatemala<\/option><option>Guinea<\/option><option>Guinea-Bissau<\/option>\n<option>Guyana<\/option><option>Haiti<\/option><option>Honduras<\/option><option>Hungary<\/option><option>Iceland<\/option>\n<option>India<\/option><option>Indonesia<\/option><option>Iran<\/option><option>Iraq<\/option><option>Ireland<\/option>\n<option>Israel<\/option><option>Italy<\/option><option>Jamaica<\/option><option>Japan<\/option><option>Jordan<\/option>\n<option>Kazakhstan<\/option><option>Kenya<\/option><option>Kiribati<\/option><option>Kosovo<\/option><option>Kuwait<\/option>\n<option>Kyrgyzstan<\/option><option>Laos<\/option><option>Latvia<\/option><option>Lebanon<\/option><option>Lesotho<\/option>\n<option>Liberia<\/option><option>Libya<\/option><option>Liechtenstein<\/option><option>Lithuania<\/option><option>Luxembourg<\/option>\n<option>Madagascar<\/option><option>Malawi<\/option><option>Malaysia<\/option><option>Maldives<\/option><option>Mali<\/option>\n<option>Malta<\/option><option>Marshall Islands<\/option><option>Mauritania<\/option><option>Mauritius<\/option><option>Mexico<\/option>\n<option>Micronesia<\/option><option>Moldova<\/option><option>Monaco<\/option><option>Mongolia<\/option><option>Montenegro<\/option>\n<option>Morocco<\/option><option>Mozambique<\/option><option>Myanmar<\/option><option>Namibia<\/option><option>Nauru<\/option>\n<option>Nepal<\/option><option>Netherlands<\/option><option>New Zealand<\/option><option>Nicaragua<\/option><option>Niger<\/option>\n<option>Nigeria<\/option><option>North Korea<\/option><option>North Macedonia<\/option><option>Norway<\/option><option>Oman<\/option>\n<option>Pakistan<\/option><option>Palau<\/option><option>Palestine<\/option><option>Panama<\/option><option>Papua New Guinea<\/option>\n<option>Paraguay<\/option><option>Peru<\/option><option>Philippines<\/option><option>Poland<\/option><option>Portugal<\/option>\n<option>Qatar<\/option><option>Romania<\/option><option>Russia<\/option><option>Rwanda<\/option><option>Saint Kitts and Nevis<\/option>\n<option>Saint Lucia<\/option><option>Saint Vincent and the Grenadines<\/option><option>Samoa<\/option><option>San Marino<\/option>\n<option>Sao Tome and Principe<\/option><option>Saudi Arabia<\/option><option>Senegal<\/option><option>Serbia<\/option>\n<option>Seychelles<\/option><option>Sierra Leone<\/option><option>Singapore<\/option><option>Slovakia<\/option><option>Slovenia<\/option>\n<option>Solomon Islands<\/option><option>Somalia<\/option><option>South Africa<\/option><option>South Korea<\/option><option>South Sudan<\/option>\n<option>Spain<\/option><option>Sri Lanka<\/option><option>Sudan<\/option><option>Suriname<\/option><option>Sweden<\/option>\n<option>Switzerland<\/option><option>Syria<\/option><option>Taiwan<\/option><option>Tajikistan<\/option><option>Tanzania<\/option>\n<option>Thailand<\/option><option>Timor-Leste<\/option><option>Togo<\/option><option>Tonga<\/option><option>Trinidad and Tobago<\/option>\n<option>Tunisia<\/option><option>Turkey<\/option><option>Turkmenistan<\/option><option>Tuvalu<\/option><option>Uganda<\/option>\n<option>Ukraine<\/option><option>United Arab Emirates<\/option><option>United Kingdom<\/option><option>United States<\/option>\n<option>Uruguay<\/option><option>Uzbekistan<\/option><option>Vanuatu<\/option><option>Vatican City<\/option><option>Venezuela<\/option>\n<option>Vietnam<\/option><option>Yemen<\/option><option>Zambia<\/option><option>Zimbabwe<\/option>\n              <\/select>\n            <\/div>\n            <div class=\"form-group\"><label>Password<\/label>\n              <input id=\"r-pass\" type=\"password\" placeholder=\"Min 6 characters\">\n            <\/div>\n          <\/div>\n          <button class=\"btn btn-primary btn-full\" onclick=\"doRegister()\">Create Account<\/button>\n        <\/div>\n      <\/div>\n    <\/div>\n  <\/div>\n<\/div>\n\n<!-- \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n     ACTIVATION PAGE\n\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 -->\n<div id=\"pg-activate\" class=\"page\">\n  <div class=\"activation-wrap\">\n    <div class=\"activation-card\">\n      <div class=\"activation-icon\">\ud83d\udce7<\/div>\n      <h2>Check Your Email<\/h2>\n      <p id=\"act-msg\">We sent a 6-digit activation code to your email address. Enter it below to activate your account.<\/p>\n      <div class=\"code-inputs\">\n        <input type=\"text\" maxlength=\"1\" class=\"code-digit\" oninput=\"codeNext(this)\">\n        <input type=\"text\" maxlength=\"1\" class=\"code-digit\" oninput=\"codeNext(this)\">\n        <input type=\"text\" maxlength=\"1\" class=\"code-digit\" oninput=\"codeNext(this)\">\n        <input type=\"text\" maxlength=\"1\" class=\"code-digit\" oninput=\"codeNext(this)\">\n        <input type=\"text\" maxlength=\"1\" class=\"code-digit\" oninput=\"codeNext(this)\">\n        <input type=\"text\" maxlength=\"1\" class=\"code-digit\" oninput=\"codeNext(this)\">\n      <\/div>\n      <div id=\"act-alert\" class=\"alert alert-error\"><\/div>\n      <div id=\"act-success\" class=\"alert alert-success\"><\/div>\n      <button class=\"btn btn-primary btn-full\" onclick=\"doActivate()\">Activate Account<\/button>\n      <div style=\"margin-top:1rem;font-size:0.8rem;color:var(--muted)\">\n        <strong>Demo:<\/strong> Check the simulated email log below\n      <\/div>\n      <div id=\"email-sim-box\" class=\"email-sim\" style=\"margin-top:0.75rem;text-align:left;display:none\"><\/div>\n      <div style=\"margin-top:1rem\">\n        <a href=\"#\" onclick=\"showPage('pg-auth')\" style=\"font-size:0.82rem;color:var(--navy)\">\u2190 Back to Sign In<\/a>\n      <\/div>\n    <\/div>\n  <\/div>\n<\/div>\n\n<!-- \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n     IP BLOCKED PAGE\n\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 -->\n<div id=\"pg-blocked\" class=\"page\">\n  <div style=\"min-height:100vh;display:flex;align-items:center;justify-content:center;background:var(--bg);padding:1rem\">\n    <div style=\"background:#fff;border-radius:18px;box-shadow:var(--shadow);max-width:440px;width:100%;padding:2.5rem;text-align:center\">\n      <div style=\"font-size:3rem;margin-bottom:1rem\">\ud83d\udeab<\/div>\n      <h2 style=\"font-family:'Orbitron',sans-serif;margin-bottom:0.5rem\">Access Restricted<\/h2>\n      <p style=\"color:var(--muted);font-size:0.88rem;margin-bottom:1.5rem\">Your IP address is not authorized to access this account. Please contact your administrator.<\/p>\n      <div style=\"background:var(--red-light);border-radius:8px;padding:0.75rem;font-size:0.82rem;color:var(--red);margin-bottom:1.5rem\" id=\"blocked-ip-display\"><\/div>\n      <button class=\"btn btn-ghost\" onclick=\"doLogout()\">\u2190 Back to Login<\/button>\n    <\/div>\n  <\/div>\n<\/div>\n\n<!-- \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n     MAIN DASHBOARD\n\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 -->\n<div id=\"pg-dashboard\" class=\"page\">\n  <div class=\"topbar\">\n    <div class=\"logo-wrap\">\n      <span class=\"logo-medi\">MEDI<\/span><span class=\"logo-tech\">TECH<\/span><span class=\"logo-group\"> GROUP<\/span>\n    <\/div>\n    <div class=\"topbar-right\">\n      <div class=\"user-chip\" onclick=\"switchView(document.querySelector('[data-view=profile]'),'profile')\" style=\"cursor:pointer\" title=\"My Profile\">\n        <span id=\"tb-username\">User<\/span>\n        <span id=\"tb-rolebadge\" class=\"role-badge role-user\">user<\/span>\n      <\/div>\n      <button class=\"btn btn-ghost btn-sm\" onclick=\"doLogout()\">Sign Out<\/button>\n    <\/div>\n  <\/div>\n\n  <div class=\"dash-layout\">\n    <!-- SIDEBAR -->\n    <div class=\"sidebar\" id=\"sidebar\">\n      <div class=\"sidebar-section\">Main<\/div>\n      <div class=\"sidebar-item active\" data-view=\"overview\" onclick=\"switchView(this,'overview')\">\n        <span class=\"icon\">\ud83c\udfe0<\/span> Overview\n      <\/div>\n      <!-- Shown to all -->\n      <div class=\"sidebar-section\">Applications<\/div>\n      <div class=\"sidebar-item\" data-view=\"apply\" onclick=\"switchView(this,'apply')\" id=\"si-apply\">\n        <span class=\"icon\">\ud83d\udcdd<\/span> Apply for a Job\n      <\/div>\n      <div class=\"sidebar-item\" data-view=\"profile\" onclick=\"switchView(this,'profile')\" id=\"si-profile\">\n        <span class=\"icon\">\ud83d\udc64<\/span> My Profile\n      <\/div>\n      <!-- HR \/ Admin \/ Assistant only -->\n      <div class=\"sidebar-item\" data-view=\"cvs\" onclick=\"switchView(this,'cvs')\" id=\"si-cvs\" style=\"display:none\">\n        <span class=\"icon\">\ud83d\udcc2<\/span> View CVs\n      <\/div>\n      <!-- Admin only -->\n      <div class=\"sidebar-item\" data-view=\"users\" onclick=\"switchView(this,'users')\" id=\"si-users\" style=\"display:none\">\n        <span class=\"icon\">\ud83d\udc65<\/span> Manage Users\n      <\/div>\n      <div class=\"sidebar-item\" data-view=\"settings\" onclick=\"switchView(this,'settings')\" id=\"si-settings\" style=\"display:none\">\n        <span class=\"icon\">\u2699\ufe0f<\/span> System Settings\n      <\/div>\n      <div class=\"sidebar-item\" data-view=\"email-cfg\" onclick=\"switchView(this,'email-cfg')\" id=\"si-email\" style=\"display:none\">\n        <span class=\"icon\">\ud83d\udce7<\/span> Email Config\n      <\/div>\n      <div class=\"sidebar-section\">Account<\/div>\n      <div class=\"sidebar-item\" data-view=\"profile\" onclick=\"switchView(this,'profile')\" id=\"si-profile\">\n        <span class=\"icon\">\ud83d\udc64<\/span> My Profile\n      <\/div>\n    <\/div>\n\n    <!-- CONTENT AREA -->\n    <div class=\"dash-content\">\n\n      <!-- OVERVIEW -->\n      <div id=\"view-overview\" class=\"view\">\n        <div class=\"page-title\" id=\"welcome-title\">Welcome back!<\/div>\n        <div class=\"stats-grid\" id=\"stats-grid\"><\/div>\n        <!-- IP notice for HR\/Assistant -->\n        <div id=\"ip-notice\" style=\"display:none;background:var(--navy-light);border:1px solid #c8ddf5;border-radius:10px;padding:0.85rem 1.1rem;margin-bottom:1.25rem;font-size:0.84rem;color:var(--navy);display:none\">\n          \ud83d\udda5\ufe0f Your session IP: <strong id=\"ov-ip\"><\/strong>\n        <\/div>\n        <div class=\"card\">\n          <div class=\"card-header\"><h3>Recent Applications<\/h3><\/div>\n          <div class=\"card-body\" id=\"recent-apps\"><\/div>\n        <\/div>\n      <\/div>\n\n      <!-- APPLY -->\n      <div id=\"view-apply\" class=\"view\" style=\"display:none\">\n        <div class=\"apply-hero\">\n          <h1>Open Positions<\/h1>\n          <p>Choose a role and submit your application to join Meditech Group<\/p>\n        <\/div>\n        <div class=\"apply-wrap\">\n          <div class=\"job-tabs\">\n            <div class=\"job-tab active\" onclick=\"selectJob(this,'sales')\">\ud83d\udfe2 Sales Representative<\/div>\n            <div class=\"job-tab\" onclick=\"selectJob(this,'bio')\">\ud83d\udd35 Biomedical Engineer<\/div>\n            <div class=\"job-tab\" onclick=\"selectJob(this,'sm')\">\u26ab Sales Manager<\/div>\n            <div class=\"job-tab\" onclick=\"selectJob(this,'mkt')\">\ud83d\udfe3 Online Marketing<\/div>\n          <\/div>\n          <div id=\"apply-form-area\"><\/div>\n        <\/div>\n      <\/div>\n\n      <div id=\"view-cvs\" class=\"view\" style=\"display:none\">\n        <!-- TOP BAR -->\n        <div class=\"flex-between mb-1\">\n          <div class=\"page-title\" style=\"margin-bottom:0\">Applications \/ CVs<\/div>\n          <div style=\"display:flex;gap:0.5rem;flex-wrap:wrap;align-items:center\">\n            <select id=\"cv-filter-role\" onchange=\"renderCVTable()\" style=\"padding:0.45rem 0.75rem;border:1.5px solid var(--border);border-radius:8px;font-size:0.83rem;font-family:inherit;outline:none\">\n              <option value=\"\">All Roles<\/option>\n              <option value=\"sales\">Sales Rep<\/option>\n              <option value=\"bio\">Biomedical<\/option>\n              <option value=\"sm\">Sales Manager<\/option>\n              <option value=\"mkt\">Marketing<\/option>\n            <\/select>\n            <select id=\"cv-filter-status\" onchange=\"renderCVTable()\" style=\"padding:0.45rem 0.75rem;border:1.5px solid var(--border);border-radius:8px;font-size:0.83rem;font-family:inherit;outline:none\">\n              <option value=\"\">All Status<\/option>\n              <option value=\"pending\">Pending<\/option>\n              <option value=\"review\">In Review<\/option>\n              <option value=\"active\">Accepted<\/option>\n              <option value=\"rejected\">Rejected<\/option>\n            <\/select>\n            <input id=\"cv-search\" type=\"text\" placeholder=\"\ud83d\udd0d Search name \/ email...\" oninput=\"renderCVTable()\" style=\"padding:0.45rem 0.75rem;border:1.5px solid var(--border);border-radius:8px;font-size:0.83rem;font-family:inherit;outline:none;min-width:180px\">\n          <\/div>\n        <\/div>\n\n        <!-- BULK ACTION TOOLBAR (shown when items selected) -->\n        <div id=\"bulk-toolbar\" style=\"display:none;background:var(--navy);color:#fff;border-radius:10px;padding:0.75rem 1.1rem;margin-bottom:1rem;display:none;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:0.5rem\">\n          <div style=\"font-size:0.88rem;font-weight:600\"><span id=\"selected-count\">0<\/span> selected<\/div>\n          <div style=\"display:flex;gap:0.5rem;flex-wrap:wrap\">\n            <button class=\"btn btn-sm\" style=\"background:#fff;color:var(--navy);font-weight:700\" onclick=\"exportExcel()\">\ud83d\udcca Export Excel<\/button>\n            <button class=\"btn btn-sm\" style=\"background:#e53935;color:#fff;font-weight:700\" onclick=\"exportPDF()\">\ud83d\udcc4 Export PDF<\/button>\n            <button class=\"btn btn-sm\" style=\"background:var(--green);color:#fff;font-weight:700\" onclick=\"printSelected()\">\ud83d\udda8\ufe0f Print<\/button>\n            <button class=\"btn btn-sm\" style=\"background:rgba(255,255,255,0.15);color:#fff\" onclick=\"clearSelection()\">\u2715 Deselect All<\/button>\n          <\/div>\n        <\/div>\n\n        <!-- TABLE CARD -->\n        <div class=\"card\">\n          <!-- SELECT ALL ROW -->\n          <div id=\"cv-select-bar\" style=\"display:none;padding:0.65rem 1.1rem;border-bottom:1px solid var(--border);background:#fafafa;font-size:0.83rem;display:flex;align-items:center;gap:0.75rem\">\n            <label style=\"display:flex;align-items:center;gap:0.5rem;cursor:pointer;font-weight:600\">\n              <input type=\"checkbox\" id=\"select-all-cb\" onchange=\"toggleSelectAll(this.checked)\" style=\"width:16px;height:16px;accent-color:var(--navy);cursor:pointer\">\n              Select All Visible\n            <\/label>\n            <span id=\"cv-count-label\" style=\"color:var(--muted)\"><\/span>\n            <div style=\"margin-left:auto;display:flex;gap:0.4rem\">\n              <button class=\"btn btn-ghost btn-sm\" onclick=\"exportExcel()\" title=\"Export to Excel\">\ud83d\udcca Excel<\/button>\n              <button class=\"btn btn-ghost btn-sm\" onclick=\"exportPDF()\" title=\"Export to PDF\">\ud83d\udcc4 PDF<\/button>\n              <button class=\"btn btn-ghost btn-sm\" onclick=\"printSelected()\" title=\"Print\">\ud83d\udda8\ufe0f Print<\/button>\n            <\/div>\n          <\/div>\n          <div class=\"card-body\" style=\"padding:0\">\n            <div class=\"table-wrap\" id=\"cv-table-wrap\"><\/div>\n          <\/div>\n        <\/div>\n      <\/div>\n\n      <!-- USERS -->\n      <div id=\"view-users\" class=\"view\" style=\"display:none\">\n        <div class=\"flex-between mb-1\">\n          <div class=\"page-title\" style=\"margin-bottom:0\">Manage Users<\/div>\n          <button class=\"btn btn-primary\" onclick=\"toggleAddUser()\">\uff0b Add User<\/button>\n        <\/div>\n\n        <!-- ADD USER PANEL -->\n        <div class=\"add-user-panel\" id=\"add-user-panel\" style=\"display:none\">\n          <h4>\u2795 Create New Staff Account<\/h4>\n          <div class=\"g2\" style=\"gap:0.75rem\">\n            <div class=\"form-group\"><label>Full Name<\/label>\n              <input id=\"nu-name\" type=\"text\" placeholder=\"Full name\">\n            <\/div>\n            <div class=\"form-group\"><label>Username<\/label>\n              <input id=\"nu-user\" type=\"text\" placeholder=\"Login username\">\n            <\/div>\n            <div class=\"form-group\"><label>Email Address<\/label>\n              <input id=\"nu-email\" type=\"email\" placeholder=\"user@meditech.com\">\n            <\/div>\n            <div class=\"form-group\"><label>Role<\/label>\n              <select id=\"nu-role\">\n                <option value=\"hr\">HR<\/option>\n                <option value=\"assistant\">Assistant<\/option>\n                <option value=\"admin\">Admin<\/option>\n                <option value=\"user\">Applicant (User)<\/option>\n              <\/select>\n            <\/div>\n            <div class=\"form-group\"><label>Country<\/label>\n              <select id=\"nu-country\" class=\"country-sel\">\n                <option value=\"\">Select country...<\/option>\n<option>Afghanistan<\/option><option>Albania<\/option><option>Algeria<\/option><option>Andorra<\/option><option>Angola<\/option>\n<option>Antigua and Barbuda<\/option><option>Argentina<\/option><option>Armenia<\/option><option>Australia<\/option><option>Austria<\/option>\n<option>Azerbaijan<\/option><option>Bahamas<\/option><option>Bahrain<\/option><option>Bangladesh<\/option><option>Barbados<\/option>\n<option>Belarus<\/option><option>Belgium<\/option><option>Belize<\/option><option>Benin<\/option><option>Bhutan<\/option>\n<option>Bolivia<\/option><option>Bosnia and Herzegovina<\/option><option>Botswana<\/option><option>Brazil<\/option><option>Brunei<\/option>\n<option>Bulgaria<\/option><option>Burkina Faso<\/option><option>Burundi<\/option><option>Cabo Verde<\/option><option>Cambodia<\/option>\n<option>Cameroon<\/option><option>Canada<\/option><option>Central African Republic<\/option><option>Chad<\/option><option>Chile<\/option>\n<option>China<\/option><option>Colombia<\/option><option>Comoros<\/option><option>Congo (Brazzaville)<\/option><option>Congo (Kinshasa)<\/option>\n<option>Costa Rica<\/option><option>Croatia<\/option><option>Cuba<\/option><option>Cyprus<\/option><option>Czech Republic<\/option>\n<option>Denmark<\/option><option>Djibouti<\/option><option>Dominica<\/option><option>Dominican Republic<\/option><option>Ecuador<\/option>\n<option>Egypt<\/option><option>El Salvador<\/option><option>Equatorial Guinea<\/option><option>Eritrea<\/option><option>Estonia<\/option>\n<option>Eswatini<\/option><option>Ethiopia<\/option><option>Fiji<\/option><option>Finland<\/option><option>France<\/option>\n<option>Gabon<\/option><option>Gambia<\/option><option>Georgia<\/option><option>Germany<\/option><option>Ghana<\/option>\n<option>Greece<\/option><option>Grenada<\/option><option>Guatemala<\/option><option>Guinea<\/option><option>Guinea-Bissau<\/option>\n<option>Guyana<\/option><option>Haiti<\/option><option>Honduras<\/option><option>Hungary<\/option><option>Iceland<\/option>\n<option>India<\/option><option>Indonesia<\/option><option>Iran<\/option><option>Iraq<\/option><option>Ireland<\/option>\n<option>Israel<\/option><option>Italy<\/option><option>Jamaica<\/option><option>Japan<\/option><option>Jordan<\/option>\n<option>Kazakhstan<\/option><option>Kenya<\/option><option>Kiribati<\/option><option>Kosovo<\/option><option>Kuwait<\/option>\n<option>Kyrgyzstan<\/option><option>Laos<\/option><option>Latvia<\/option><option>Lebanon<\/option><option>Lesotho<\/option>\n<option>Liberia<\/option><option>Libya<\/option><option>Liechtenstein<\/option><option>Lithuania<\/option><option>Luxembourg<\/option>\n<option>Madagascar<\/option><option>Malawi<\/option><option>Malaysia<\/option><option>Maldives<\/option><option>Mali<\/option>\n<option>Malta<\/option><option>Marshall Islands<\/option><option>Mauritania<\/option><option>Mauritius<\/option><option>Mexico<\/option>\n<option>Micronesia<\/option><option>Moldova<\/option><option>Monaco<\/option><option>Mongolia<\/option><option>Montenegro<\/option>\n<option>Morocco<\/option><option>Mozambique<\/option><option>Myanmar<\/option><option>Namibia<\/option><option>Nauru<\/option>\n<option>Nepal<\/option><option>Netherlands<\/option><option>New Zealand<\/option><option>Nicaragua<\/option><option>Niger<\/option>\n<option>Nigeria<\/option><option>North Korea<\/option><option>North Macedonia<\/option><option>Norway<\/option><option>Oman<\/option>\n<option>Pakistan<\/option><option>Palau<\/option><option>Palestine<\/option><option>Panama<\/option><option>Papua New Guinea<\/option>\n<option>Paraguay<\/option><option>Peru<\/option><option>Philippines<\/option><option>Poland<\/option><option>Portugal<\/option>\n<option>Qatar<\/option><option>Romania<\/option><option>Russia<\/option><option>Rwanda<\/option><option>Saint Kitts and Nevis<\/option>\n<option>Saint Lucia<\/option><option>Saint Vincent and the Grenadines<\/option><option>Samoa<\/option><option>San Marino<\/option>\n<option>Sao Tome and Principe<\/option><option>Saudi Arabia<\/option><option>Senegal<\/option><option>Serbia<\/option>\n<option>Seychelles<\/option><option>Sierra Leone<\/option><option>Singapore<\/option><option>Slovakia<\/option><option>Slovenia<\/option>\n<option>Solomon Islands<\/option><option>Somalia<\/option><option>South Africa<\/option><option>South Korea<\/option><option>South Sudan<\/option>\n<option>Spain<\/option><option>Sri Lanka<\/option><option>Sudan<\/option><option>Suriname<\/option><option>Sweden<\/option>\n<option>Switzerland<\/option><option>Syria<\/option><option>Taiwan<\/option><option>Tajikistan<\/option><option>Tanzania<\/option>\n<option>Thailand<\/option><option>Timor-Leste<\/option><option>Togo<\/option><option>Tonga<\/option><option>Trinidad and Tobago<\/option>\n<option>Tunisia<\/option><option>Turkey<\/option><option>Turkmenistan<\/option><option>Tuvalu<\/option><option>Uganda<\/option>\n<option>Ukraine<\/option><option>United Arab Emirates<\/option><option>United Kingdom<\/option><option>United States<\/option>\n<option>Uruguay<\/option><option>Uzbekistan<\/option><option>Vanuatu<\/option><option>Vatican City<\/option><option>Venezuela<\/option>\n<option>Vietnam<\/option><option>Yemen<\/option><option>Zambia<\/option><option>Zimbabwe<\/option>\n              <\/select>\n            <\/div>\n            <div class=\"form-group\"><label>Age<\/label>\n              <input id=\"nu-age\" type=\"number\" placeholder=\"Age\" min=\"18\" max=\"70\">\n            <\/div>\n          <\/div>\n          <!-- Allowed IPs for this user -->\n          <div class=\"form-group\" id=\"nu-ip-section\">\n            <label>Allowed IP Addresses <span style=\"font-size:0.72rem;color:var(--muted);text-transform:none;font-weight:400\">(leave empty = no restriction)<\/span><\/label>\n            <div style=\"display:flex;gap:0.5rem;margin-bottom:0.5rem\">\n              <input id=\"nu-ip-input\" type=\"text\" placeholder=\"e.g. 192.168.1.100\" style=\"flex:1\">\n              <button class=\"btn btn-ghost btn-sm\" onclick=\"addUserIP()\">Add IP<\/button>\n            <\/div>\n            <div class=\"user-ip-tags\" id=\"nu-ip-list\"><\/div>\n          <\/div>\n          <!-- Auto-generated password preview -->\n          <div class=\"form-group\">\n            <label>Password <span style=\"font-size:0.72rem;color:var(--muted);text-transform:none;font-weight:400\">(auto-generated, sent by email)<\/span><\/label>\n            <div style=\"display:flex;gap:0.5rem;align-items:center\">\n              <input id=\"nu-pass\" type=\"text\" placeholder=\"Auto-generated\" readonly style=\"flex:1;background:#fafafa;font-family:monospace\">\n              <button class=\"btn btn-ghost btn-sm\" onclick=\"genPassword()\">\ud83d\udd04 Generate<\/button>\n            <\/div>\n          <\/div>\n          <div id=\"add-user-alert\" class=\"alert\" style=\"margin-top:0.5rem\"><\/div>\n          <div style=\"display:flex;gap:0.75rem;margin-top:0.75rem\">\n            <button class=\"btn btn-primary\" style=\"flex:2\" onclick=\"createUser()\">Create Account &amp; Send Welcome Email<\/button>\n            <button class=\"btn btn-ghost\" style=\"flex:1\" onclick=\"toggleAddUser()\">Cancel<\/button>\n          <\/div>\n        <\/div>\n\n        <div class=\"card\">\n          <div class=\"card-body\" style=\"padding:0\">\n            <div class=\"table-wrap\" id=\"users-table-wrap\"><\/div>\n          <\/div>\n        <\/div>\n      <\/div>\n\n      <!-- SETTINGS -->\n      <div id=\"view-settings\" class=\"view\" style=\"display:none\">\n        <div class=\"page-title\">System Settings<\/div>\n\n        <!-- GLOBAL IP -->\n        <div class=\"card mb-1\">\n          <div class=\"card-header\"><h3>\ud83c\udf10 Global IP Restriction<\/h3><\/div>\n          <div class=\"card-body\">\n            <p class=\"text-muted\" style=\"margin-bottom:1rem\">Global allowed IPs apply to <strong>all<\/strong> HR and Assistant accounts that have no personal IP list set. Per-user IPs override this list.<\/p>\n            <div style=\"margin-bottom:1rem\">\n              <label style=\"font-size:0.78rem;font-weight:700;text-transform:uppercase;color:var(--muted);display:block;margin-bottom:0.5rem\">Global Allowed IPs<\/label>\n              <div style=\"display:flex;gap:0.5rem\">\n                <input id=\"ip-input\" type=\"text\" placeholder=\"e.g. 192.168.1.100\" style=\"flex:1;padding:0.6rem 0.85rem;border:1.5px solid var(--border);border-radius:8px;font-size:0.88rem;font-family:inherit;outline:none\">\n                <button class=\"btn btn-primary\" onclick=\"addIP()\">Add<\/button>\n              <\/div>\n              <div class=\"ip-list\" id=\"ip-list\"><\/div>\n            <\/div>\n            <div class=\"settings-row\">\n              <div><div class=\"lbl\">Enable IP Restriction<\/div><div class=\"sub\">Block HR\/Assistant from unauthorized IPs globally<\/div><\/div>\n              <input type=\"checkbox\" class=\"toggle\" id=\"ip-enabled\" onchange=\"saveIPSettings()\">\n            <\/div>\n          <\/div>\n        <\/div>\n\n        <!-- REGISTRATION -->\n        <div class=\"card mb-1\">\n          <div class=\"card-header\"><h3>\ud83d\udccb Registration Settings<\/h3><\/div>\n          <div class=\"card-body\">\n            <div class=\"settings-row\">\n              <div><div class=\"lbl\">Require Email Activation<\/div><div class=\"sub\">New users must verify email before logging in<\/div><\/div>\n              <input type=\"checkbox\" class=\"toggle\" id=\"act-required\" checked onchange=\"saveSysSettings()\">\n            <\/div>\n            <div class=\"settings-row\">\n              <div><div class=\"lbl\">Allow Public Registration<\/div><div class=\"sub\">Anyone can self-register as an applicant<\/div><\/div>\n              <input type=\"checkbox\" class=\"toggle\" id=\"pub-reg\" checked onchange=\"saveSysSettings()\">\n            <\/div>\n          <\/div>\n        <\/div>\n\n        <!-- MY IP -->\n        <div class=\"card\">\n          <div class=\"card-header\"><h3>\ud83d\udda5\ufe0f Your Current Session IP<\/h3><\/div>\n          <div class=\"card-body\">\n            <p class=\"text-muted\" style=\"margin-bottom:0.75rem\">Your detected IP address for this session (simulated in demo). Copy it to whitelist yourself.<\/p>\n            <div style=\"display:flex;align-items:center;gap:0.75rem;flex-wrap:wrap\">\n              <code id=\"my-ip-display\" style=\"background:var(--bg);padding:0.5rem 1rem;border-radius:8px;font-size:1rem;font-weight:700;border:1.5px solid var(--border)\"><\/code>\n              <button class=\"btn btn-ghost btn-sm\" onclick=\"copyMyIP()\">\ud83d\udccb Copy IP<\/button>\n              <button class=\"btn btn-primary btn-sm\" onclick=\"whitelistMyIP()\">\u2705 Add to Global Whitelist<\/button>\n            <\/div>\n          <\/div>\n        <\/div>\n      <\/div>\n\n      <!-- EMAIL CONFIG -->\n      <div id=\"view-email-cfg\" class=\"view\" style=\"display:none\">\n        <div class=\"page-title\">Email Configuration<\/div>\n\n        <!-- EmailJS Setup -->\n        <div class=\"card mb-1\">\n          <div class=\"card-header\"><h3>\ud83d\udd0c EmailJS Integration (Real Email Sending)<\/h3><\/div>\n          <div class=\"card-body\">\n            <div style=\"background:var(--navy-light);border-radius:8px;padding:0.85rem 1rem;margin-bottom:1rem;font-size:0.83rem;color:var(--navy)\">\n              <strong>How to set up:<\/strong> Go to <a href=\"https:\/\/www.emailjs.com\" target=\"_blank\" style=\"color:var(--navy);font-weight:700\">emailjs.com<\/a> \u2192 Create account \u2192 Add Email Service (Gmail\/Outlook) \u2192 Create Template \u2192 Copy your IDs below. Free plan sends 200 emails\/month.\n            <\/div>\n            <div class=\"g2\">\n              <div class=\"form-group\"><label>EmailJS Service ID<\/label>\n                <input id=\"ejs-service\" type=\"text\" placeholder=\"service_xxxxxxx\">\n              <\/div>\n              <div class=\"form-group\"><label>EmailJS Template ID<\/label>\n                <input id=\"ejs-template\" type=\"text\" placeholder=\"template_xxxxxxx\">\n              <\/div>\n              <div class=\"form-group\"><label>EmailJS Public Key<\/label>\n                <input id=\"ejs-pubkey\" type=\"text\" placeholder=\"your_public_key\">\n              <\/div>\n              <div class=\"form-group\"><label>Sender Name<\/label>\n                <input id=\"ejs-from\" type=\"text\" placeholder=\"Meditech HR Team\">\n              <\/div>\n            <\/div>\n            <div style=\"background:#fafafa;border:1px solid var(--border);border-radius:8px;padding:0.85rem;margin-bottom:1rem;font-size:0.8rem;color:var(--muted)\">\n              <strong>Required template variables in EmailJS:<\/strong><br>\n              <code style=\"color:var(--navy)\">{{to_email}}<\/code> \u2014 recipient email &nbsp;|&nbsp;\n              <code style=\"color:var(--navy)\">{{to_name}}<\/code> \u2014 recipient name &nbsp;|&nbsp;\n              <code style=\"color:var(--navy)\">{{activation_code}}<\/code> \u2014 6-digit code &nbsp;|&nbsp;\n              <code style=\"color:var(--navy)\">{{message}}<\/code> \u2014 full email body\n            <\/div>\n            <div style=\"display:flex;gap:0.75rem\">\n              <button class=\"btn btn-primary\" onclick=\"saveEmailJS()\">\ud83d\udcbe Save EmailJS Config<\/button>\n              <button class=\"btn btn-ghost\" onclick=\"testEmailJS()\">\ud83d\udce7 Send Test Email<\/button>\n            <\/div>\n            <div id=\"ejs-alert\" class=\"alert\" style=\"margin-top:0.75rem\"><\/div>\n          <\/div>\n        <\/div>\n\n        <!-- Email Template -->\n        <div class=\"card mb-1\">\n          <div class=\"card-header\"><h3>\u2709\ufe0f Activation Email Template<\/h3><\/div>\n          <div class=\"card-body\">\n            <div class=\"form-group\"><label>Subject<\/label>\n              <input id=\"tpl-subject\" type=\"text\" value=\"Your Meditech Account Activation Code\">\n            <\/div>\n            <div class=\"form-group\"><label>Body \u2014 placeholders: <code>{CODE}<\/code> <code>{NAME}<\/code> <code>{USERNAME}<\/code><\/label>\n              <textarea id=\"tpl-body\" rows=\"8\" style=\"width:100%;padding:0.65rem;border:1.5px solid var(--border);border-radius:8px;font-family:inherit;font-size:0.88rem;outline:none\">Dear {NAME},\n\nWelcome to Meditech Group Career Portal!\n\nYour account activation code is:\n\n  \u25ba {CODE} \u25c4\n\nEnter this code on the activation page to complete your registration.\nThis code is valid for 24 hours.\n\nYour username: {USERNAME}\n\nIf you did not register, please ignore this email.\n\nBest regards,\nMeditech HR Team\ncareer.meditech.com<\/textarea>\n            <\/div>\n            <button class=\"btn btn-primary\" onclick=\"saveTpl()\">Save Template<\/button>\n          <\/div>\n        <\/div>\n\n        <!-- Email Log -->\n        <div class=\"card\">\n          <div class=\"card-header\">\n            <h3>\ud83d\udcec Email Send Log<\/h3>\n            <button class=\"btn btn-ghost btn-sm\" onclick=\"clearEmailLog()\">Clear Log<\/button>\n          <\/div>\n          <div class=\"card-body\" id=\"email-log-body\">\n            <div class=\"empty-state\"><div class=\"icon\">\ud83d\udced<\/div><p>No emails sent yet.<\/p><\/div>\n          <\/div>\n        <\/div>\n      <\/div>\n\n      <!-- \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n           PROFILE VIEW\n      \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 -->\n      <div id=\"view-profile\" class=\"view\" style=\"display:none\">\n        <div class=\"page-title\">My Profile<\/div>\n\n        <!-- PROFILE INFO CARD -->\n        <div class=\"card mb-1\">\n          <div class=\"card-header\">\n            <h3>\ud83d\udc64 Account Information<\/h3>\n            <div id=\"profile-saved-badge\" style=\"display:none;background:var(--green-light);color:var(--green);font-size:0.78rem;font-weight:700;padding:0.25rem 0.75rem;border-radius:20px\">\u2705 Saved<\/div>\n          <\/div>\n          <div class=\"card-body\">\n            <div style=\"display:flex;align-items:center;gap:1.5rem;margin-bottom:1.5rem;padding-bottom:1.25rem;border-bottom:1px solid var(--border)\">\n              <div id=\"profile-avatar\" style=\"width:72px;height:72px;border-radius:50%;background:linear-gradient(135deg,var(--navy),#2a6bbf);display:flex;align-items:center;justify-content:center;font-family:'Orbitron',sans-serif;font-size:1.5rem;font-weight:900;color:#fff;flex-shrink:0\">A<\/div>\n              <div>\n                <div id=\"profile-display-name\" style=\"font-family:'Orbitron',sans-serif;font-size:1.1rem;font-weight:800;color:var(--navy)\">Admin<\/div>\n                <div id=\"profile-display-role\" style=\"font-size:0.78rem;margin-top:0.2rem\"><\/div>\n                <div id=\"profile-display-email\" style=\"font-size:0.83rem;color:var(--muted);margin-top:0.2rem\"><\/div>\n                <div id=\"profile-display-since\" style=\"font-size:0.75rem;color:var(--muted);margin-top:0.1rem\"><\/div>\n              <\/div>\n            <\/div>\n            <div class=\"g2\">\n              <div class=\"form-group\">\n                <label>Username <span style=\"font-size:0.7rem;color:var(--muted);font-weight:400\">(cannot be changed)<\/span><\/label>\n                <input id=\"prof-username\" type=\"text\" readonly style=\"background:#f9fafb;color:var(--muted);cursor:not-allowed\">\n              <\/div>\n              <div class=\"form-group\">\n                <label>Full Name<\/label>\n                <input id=\"prof-fullname\" type=\"text\" placeholder=\"Your full name\">\n              <\/div>\n              <div class=\"form-group\">\n                <label>Email Address<\/label>\n                <input id=\"prof-email\" type=\"email\" placeholder=\"your@email.com\">\n              <\/div>\n              <div class=\"form-group\">\n                <label>Country<\/label>\n                <select id=\"prof-country\" class=\"country-sel\"><\/select>\n              <\/div>\n              <div class=\"form-group\">\n                <label>Age<\/label>\n                <input id=\"prof-age\" type=\"number\" min=\"18\" max=\"70\" placeholder=\"Age\">\n              <\/div>\n              <div class=\"form-group\">\n                <label>Role <span style=\"font-size:0.7rem;color:var(--muted);font-weight:400\">(set by admin)<\/span><\/label>\n                <input id=\"prof-role\" type=\"text\" readonly style=\"background:#f9fafb;color:var(--muted);cursor:not-allowed\">\n              <\/div>\n            <\/div>\n            <div id=\"profile-info-alert\" class=\"alert\" style=\"margin-top:0.5rem\"><\/div>\n            <button class=\"btn btn-primary\" onclick=\"saveProfileInfo()\" style=\"margin-top:0.5rem\">\ud83d\udcbe Save Changes<\/button>\n          <\/div>\n        <\/div>\n\n        <!-- CHANGE PASSWORD CARD -->\n        <div class=\"card mb-1\">\n          <div class=\"card-header\"><h3>\ud83d\udd12 Change Password<\/h3><\/div>\n          <div class=\"card-body\">\n            <div class=\"g2\">\n              <div class=\"form-group\">\n                <label>Current Password<\/label>\n                <input id=\"prof-old-pass\" type=\"password\" placeholder=\"Enter current password\">\n              <\/div>\n              <div style=\"display:none\" class=\"form-group\"><\/div>\n              <div class=\"form-group\">\n                <label>New Password<\/label>\n                <input id=\"prof-new-pass\" type=\"password\" placeholder=\"Min 6 characters\">\n              <\/div>\n              <div class=\"form-group\">\n                <label>Confirm New Password<\/label>\n                <input id=\"prof-confirm-pass\" type=\"password\" placeholder=\"Repeat new password\">\n              <\/div>\n            <\/div>\n            <!-- Password strength bar -->\n            <div style=\"margin-bottom:0.75rem\">\n              <div style=\"display:flex;justify-content:space-between;font-size:0.75rem;margin-bottom:0.3rem\">\n                <span style=\"color:var(--muted)\">Password strength<\/span>\n                <span id=\"prof-strength-lbl\" style=\"font-weight:700\"><\/span>\n              <\/div>\n              <div style=\"background:var(--border);border-radius:4px;height:6px\">\n                <div id=\"prof-strength-bar\" style=\"height:6px;border-radius:4px;width:0%;transition:all 0.3s\"><\/div>\n              <\/div>\n            <\/div>\n            <div id=\"profile-pass-alert\" class=\"alert\" style=\"margin-bottom:0.75rem\"><\/div>\n            <button class=\"btn btn-primary\" onclick=\"saveProfilePassword()\">\ud83d\udd11 Update Password<\/button>\n          <\/div>\n        <\/div>\n\n        <!-- ADMIN: EMAIL CHANGE FOR ANY USER -->\n        <div class=\"card\" id=\"admin-email-tool\" style=\"display:none\">\n          <div class=\"card-header\"><h3>\ud83d\udee0\ufe0f Admin: Change Any User's Email or Password<\/h3><\/div>\n          <div class=\"card-body\">\n            <p class=\"text-muted\" style=\"margin-bottom:1rem\">As admin you can update credentials for any user. Find them in Manage Users \u2192 Edit instead, or use the quick tool below.<\/p>\n            <div class=\"g2\">\n              <div class=\"form-group\">\n                <label>Find User (username or email)<\/label>\n                <input id=\"admin-find-user\" type=\"text\" placeholder=\"username or email\">\n              <\/div>\n              <div class=\"form-group\" style=\"display:flex;align-items:flex-end\">\n                <button class=\"btn btn-ghost w-full\" onclick=\"adminFindUser()\">\ud83d\udd0d Find User<\/button>\n              <\/div>\n            <\/div>\n            <div id=\"admin-found-user\" style=\"display:none;background:var(--navy-light);border-radius:8px;padding:0.85rem 1rem;margin-bottom:1rem;font-size:0.85rem\"><\/div>\n            <div id=\"admin-user-edit-fields\" style=\"display:none\">\n              <div class=\"g2\">\n                <div class=\"form-group\">\n                  <label>New Email<\/label>\n                  <input id=\"admin-new-email\" type=\"email\" placeholder=\"new@email.com\">\n                <\/div>\n                <div class=\"form-group\">\n                  <label>New Password <span style=\"font-size:0.7rem;color:var(--muted)\">(leave blank to keep)<\/span><\/label>\n                  <div style=\"display:flex;gap:0.5rem\">\n                    <input id=\"admin-new-pass\" type=\"text\" placeholder=\"New password\" style=\"flex:1;font-family:monospace\">\n                    <button class=\"btn btn-ghost btn-sm\" onclick=\"adminGenPass()\">\ud83d\udd04<\/button>\n                  <\/div>\n                <\/div>\n              <\/div>\n              <div id=\"admin-edit-alert\" class=\"alert\" style=\"margin-bottom:0.5rem\"><\/div>\n              <button class=\"btn btn-primary\" onclick=\"adminSaveUserCreds()\">\ud83d\udcbe Save User Credentials<\/button>\n            <\/div>\n          <\/div>\n        <\/div>\n      <\/div>\n\n      <!-- PROFILE -->\n      <div id=\"view-profile\" class=\"view\" style=\"display:none\"><\/div>\n\n    <\/div><!-- \/dash-content -->\n  <\/div><!-- \/dash-layout -->\n<\/div><!-- \/pg-dashboard -->\n\n<!-- \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n     CV DETAIL MODAL\n\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 -->\n<div id=\"cv-modal\" class=\"modal-overlay\" onclick=\"if(event.target===this)closeCVModal()\">\n  <div class=\"modal\">\n    <div class=\"modal-header\">\n      <h3 id=\"cv-modal-title\">Application Detail<\/h3>\n      <div style=\"display:flex;align-items:center;gap:0.5rem\">\n        <button class=\"btn btn-ghost btn-sm\" id=\"cv-modal-print-btn\" onclick=\"printCurrentCV()\" title=\"Print this CV\">\ud83d\udda8\ufe0f Print<\/button>\n        <button class=\"btn btn-ghost btn-sm\" id=\"cv-modal-pdf-btn\" onclick=\"downloadCurrentCV()\" title=\"Download PDF\">\ud83d\udcc4 PDF<\/button>\n        <button class=\"modal-close\" onclick=\"closeCVModal()\">\u2715<\/button>\n      <\/div>\n    <\/div>\n    <div class=\"modal-body\" id=\"cv-modal-body\"><\/div>\n  <\/div>\n<\/div>\n\n<!-- \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n     USER EDIT MODAL\n\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 -->\n<div id=\"user-modal\" class=\"modal-overlay\" onclick=\"if(event.target===this)closeUserModal()\">\n  <div class=\"modal\" style=\"max-width:520px\">\n    <div class=\"modal-header\">\n      <h3 id=\"user-modal-title\">Edit User<\/h3>\n      <button class=\"modal-close\" onclick=\"closeUserModal()\">\u2715<\/button>\n    <\/div>\n    <div class=\"modal-body\">\n      <input type=\"hidden\" id=\"edit-uid\">\n\n      <!-- User info summary -->\n      <div id=\"edit-user-info\" style=\"background:var(--bg);border-radius:8px;padding:0.75rem 1rem;margin-bottom:1rem;font-size:0.85rem\"><\/div>\n\n      <div class=\"form-row\">\n        <div class=\"form-group\"><label>Role<\/label>\n          <select id=\"edit-role\">\n            <option value=\"user\">User (Applicant)<\/option>\n            <option value=\"assistant\">Assistant<\/option>\n            <option value=\"hr\">HR<\/option>\n            <option value=\"admin\">Admin<\/option>\n          <\/select>\n        <\/div>\n        <div class=\"form-group\"><label>Account Status<\/label>\n          <select id=\"edit-status\">\n            <option value=\"active\">Active<\/option>\n            <option value=\"suspended\">Suspended<\/option>\n          <\/select>\n        <\/div>\n      <\/div>\n\n      <!-- Per-user IP restriction -->\n      <div id=\"edit-ip-section\">\n        <div class=\"form-group\">\n          <label>Personal Allowed IPs <span style=\"font-size:0.72rem;color:var(--muted);text-transform:none;font-weight:400\">(overrides global list \u2014 empty = use global)<\/span><\/label>\n          <div style=\"display:flex;gap:0.5rem;margin-bottom:0.5rem\">\n            <input id=\"edit-ip-input\" type=\"text\" placeholder=\"e.g. 203.0.113.45\" style=\"flex:1\">\n            <button class=\"btn btn-ghost btn-sm\" onclick=\"addEditUserIP()\">Add<\/button>\n          <\/div>\n          <div class=\"user-ip-tags\" id=\"edit-ip-list\"><\/div>\n          <div style=\"margin-top:0.5rem;font-size:0.75rem;color:var(--muted)\">\n            \ud83d\udca1 Adding IPs here means this user can <em>only<\/em> log in from these addresses.\n          <\/div>\n        <\/div>\n      <\/div>\n\n      <!-- Reset password -->\n      <div class=\"form-group\">\n        <label>Reset Password <span style=\"font-size:0.72rem;color:var(--muted);text-transform:none;font-weight:400\">(leave empty to keep current)<\/span><\/label>\n        <div style=\"display:flex;gap:0.5rem\">\n          <input id=\"edit-newpass\" type=\"text\" placeholder=\"New password or leave empty\" style=\"flex:1;font-family:monospace\">\n          <button class=\"btn btn-ghost btn-sm\" onclick=\"genEditPassword()\">\ud83d\udd04 Auto<\/button>\n        <\/div>\n      <\/div>\n\n      <div id=\"edit-user-alert\" class=\"alert\" style=\"margin-bottom:0.75rem\"><\/div>\n\n      <div style=\"display:flex;gap:0.75rem\">\n        <button class=\"btn btn-primary\" style=\"flex:2\" onclick=\"saveUserEdit()\">\ud83d\udcbe Save Changes<\/button>\n        <button class=\"btn btn-danger btn-sm\" style=\"flex:1\" onclick=\"deleteUser()\">\ud83d\uddd1 Delete<\/button>\n        <button class=\"btn btn-ghost\" style=\"flex:1\" onclick=\"closeUserModal()\">Cancel<\/button>\n      <\/div>\n    <\/div>\n  <\/div>\n<\/div>\n\n<script>\n\/\/ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n\/\/ DATA LAYER \u2014 localStorage\n\/\/ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\nconst DB = {\n  get(k){ try{ return JSON.parse(localStorage.getItem('mt_'+k)) }catch(e){ return null } },\n  set(k,v){ localStorage.setItem('mt_'+k, JSON.stringify(v)) },\n  del(k){ localStorage.removeItem('mt_'+k) }\n};\n\n\n\/\/ \u2500\u2500 WORLD COUNTRIES \u2500\u2500\nconst WORLD_COUNTRIES = ['Afghanistan', 'Albania', 'Algeria', 'Andorra', 'Angola', 'Antigua and Barbuda', 'Argentina', 'Armenia', 'Australia', 'Austria', 'Azerbaijan', 'Bahamas', 'Bahrain', 'Bangladesh', 'Barbados', 'Belarus', 'Belgium', 'Belize', 'Benin', 'Bhutan', 'Bolivia', 'Bosnia and Herzegovina', 'Botswana', 'Brazil', 'Brunei', 'Bulgaria', 'Burkina Faso', 'Burundi', 'Cabo Verde', 'Cambodia', 'Cameroon', 'Canada', 'Central African Republic', 'Chad', 'Chile', 'China', 'Colombia', 'Comoros', 'Congo (Brazzaville)', 'Congo (Kinshasa)', 'Costa Rica', 'Croatia', 'Cuba', 'Cyprus', 'Czech Republic', 'Denmark', 'Djibouti', 'Dominica', 'Dominican Republic', 'Ecuador', 'Egypt', 'El Salvador', 'Equatorial Guinea', 'Eritrea', 'Estonia', 'Eswatini', 'Ethiopia', 'Fiji', 'Finland', 'France', 'Gabon', 'Gambia', 'Georgia', 'Germany', 'Ghana', 'Greece', 'Grenada', 'Guatemala', 'Guinea', 'Guinea-Bissau', 'Guyana', 'Haiti', 'Honduras', 'Hungary', 'Iceland', 'India', 'Indonesia', 'Iran', 'Iraq', 'Ireland', 'Israel', 'Italy', 'Jamaica', 'Japan', 'Jordan', 'Kazakhstan', 'Kenya', 'Kiribati', 'Kosovo', 'Kuwait', 'Kyrgyzstan', 'Laos', 'Latvia', 'Lebanon', 'Lesotho', 'Liberia', 'Libya', 'Liechtenstein', 'Lithuania', 'Luxembourg', 'Madagascar', 'Malawi', 'Malaysia', 'Maldives', 'Mali', 'Malta', 'Marshall Islands', 'Mauritania', 'Mauritius', 'Mexico', 'Micronesia', 'Moldova', 'Monaco', 'Mongolia', 'Montenegro', 'Morocco', 'Mozambique', 'Myanmar', 'Namibia', 'Nauru', 'Nepal', 'Netherlands', 'New Zealand', 'Nicaragua', 'Niger', 'Nigeria', 'North Korea', 'North Macedonia', 'Norway', 'Oman', 'Pakistan', 'Palau', 'Palestine', 'Panama', 'Papua New Guinea', 'Paraguay', 'Peru', 'Philippines', 'Poland', 'Portugal', 'Qatar', 'Romania', 'Russia', 'Rwanda', 'Saint Kitts and Nevis', 'Saint Lucia', 'Saint Vincent and the Grenadines', 'Samoa', 'San Marino', 'Sao Tome and Principe', 'Saudi Arabia', 'Senegal', 'Serbia', 'Seychelles', 'Sierra Leone', 'Singapore', 'Slovakia', 'Slovenia', 'Solomon Islands', 'Somalia', 'South Africa', 'South Korea', 'South Sudan', 'Spain', 'Sri Lanka', 'Sudan', 'Suriname', 'Sweden', 'Switzerland', 'Syria', 'Taiwan', 'Tajikistan', 'Tanzania', 'Thailand', 'Timor-Leste', 'Togo', 'Tonga', 'Trinidad and Tobago', 'Tunisia', 'Turkey', 'Turkmenistan', 'Tuvalu', 'Uganda', 'Ukraine', 'United Arab Emirates', 'United Kingdom', 'United States', 'Uruguay', 'Uzbekistan', 'Vanuatu', 'Vatican City', 'Venezuela', 'Vietnam', 'Yemen', 'Zambia', 'Zimbabwe'];\nfunction countryOptions(selectedVal=''){\n  return '<option value=\"\">Select country...<\/option>' +\n    WORLD_COUNTRIES.map(c=>`<option${c===selectedVal?' selected':''}>${c}<\/option>`).join('');\n}\n\nfunction initDB(){\n  if(!DB.get('users')){\n    const admin = {\n      id:'u0', username:'admin', email:'admin@meditech.com',\n      password:'admin123', role:'admin', country:'Egypt',\n      age:35, active:true, status:'active', created:Date.now(),\n      allowedIPs:[]\n    };\n    DB.set('users',[admin]);\n  }\n  if(!DB.get('applications')) DB.set('applications',[]);\n  if(!DB.get('ejsConfig')){ DB.set('ejsConfig',{serviceId:'',templateId:'',pubKey:'',fromName:'Meditech HR Team'}); }\n  if(!DB.get('tpl')){ DB.set('tpl',{subject:'Your Meditech Account Activation Code', body:'Dear {NAME},\\n\\nWelcome to Meditech Group Career Portal!\\n\\nYour activation code is:\\n\\n  \u25ba {CODE} \u25c4\\n\\nUsername: {USERNAME}\\n\\nBest regards,\\nMeditech HR Team'}); }\n  if(!DB.get('ipSettings')){ DB.set('ipSettings',{enabled:false,ips:[]}); }\n  if(!DB.get('sysSettings')){ DB.set('sysSettings',{requireActivation:true,publicReg:true}); }\n  if(!DB.get('emailLog')) DB.set('emailLog',[]);\n}\n\n\/\/ Simulated IP \u2014 we fake it for demo purposes\nlet SIMULATED_IP = '197.'+Math.floor(Math.random()*255)+'.'+Math.floor(Math.random()*255)+'.'+Math.floor(Math.random()*255);\n\n\/\/ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n\/\/ SESSION\n\/\/ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\nlet currentUser = null;\n\nfunction getSession(){\n  const s = DB.get('session');\n  if(!s) return null;\n  const users = DB.get('users')||[];\n  return users.find(u=>u.id===s.uid)||null;\n}\nfunction setSession(user){ DB.set('session',{uid:user.id}); }\nfunction clearSession(){ DB.del('session'); }\n\n\/\/ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n\/\/ PAGE ROUTER\n\/\/ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\nfunction showPage(id){\n  document.querySelectorAll('.page').forEach(p=>p.classList.remove('active'));\n  document.getElementById(id).classList.add('active');\n}\n\n\/\/ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n\/\/ AUTH TABS\n\/\/ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\nfunction switchTab(tab){\n  document.querySelectorAll('.auth-tab').forEach((t,i)=>t.classList.toggle('active', (tab==='login'&&i===0)||(tab==='register'&&i===1)));\n  document.getElementById('tab-login').style.display = tab==='login'?'block':'none';\n  document.getElementById('tab-register').style.display = tab==='register'?'block':'none';\n}\n\n\/\/ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n\/\/ REGISTER\n\/\/ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\nfunction doRegister(){\n  const username = document.getElementById('r-user').value.trim();\n  const email    = document.getElementById('r-email').value.trim();\n  const password = document.getElementById('r-pass').value;\n  const country  = document.getElementById('r-country').value;\n  const age      = parseInt(document.getElementById('r-age').value);\n  const alertEl  = document.getElementById('reg-alert');\n\n  function err(m){ alertEl.textContent=m; alertEl.className='alert alert-error show'; }\n  alertEl.className='alert';\n\n  if(!username||!email||!password||!country||!age){ return err('Please fill in all fields.'); }\n  if(password.length<6){ return err('Password must be at least 6 characters.'); }\n  if(age<18||age>70){ return err('Age must be between 18 and 70.'); }\n\n  const sys = DB.get('sysSettings')||{};\n  if(!sys.publicReg){ return err('Registration is currently disabled.'); }\n\n  const users = DB.get('users')||[];\n  if(users.find(u=>u.username.toLowerCase()===username.toLowerCase())){ return err('Username already taken.'); }\n  if(users.find(u=>u.email.toLowerCase()===email.toLowerCase())){ return err('Email already registered.'); }\n\n  const code = Math.floor(100000+Math.random()*900000).toString();\n  const newUser = {\n    id:'u'+Date.now(), username, email, password, country, age,\n    role:'user', active: !sys.requireActivation,\n    status:'active', created:Date.now(), activationCode:code\n  };\n  users.push(newUser);\n  DB.set('users', users);\n\n  \/\/ Simulate email send\n  sendSimulatedEmail(email, username, code, username);\n\n  \/\/ Go to activation page\n  DB.set('pendingActivation', {uid: newUser.id});\n  document.getElementById('act-msg').textContent = `We sent a 6-digit activation code to ${email}. Enter it below.`;\n\n  \/\/ Show email log\n  const logEl = document.getElementById('email-sim-box');\n  const tpl = DB.get('tpl')||{};\n  const smtp = DB.get('smtp')||{};\n  const fromEmail = smtp.email || 'noreply@meditech.com';\n  const subject = (tpl.subject||'Your Meditech Activation Code');\n  const body = (tpl.body||'Your code: {CODE}').replace('{CODE}',code).replace('{NAME}',username);\n  logEl.style.display='block';\n  logEl.textContent = `FROM: ${fromEmail}\\nTO: ${email}\\nSUBJECT: ${subject}\\n\\n${body}\\n\\n\u2500\u2500 Activation Code: ${code} \u2500\u2500`;\n\n  showPage('pg-activate');\n}\n\n\/\/ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n\/\/ EMAIL \u2014 EMAILJS REAL SENDING\n\/\/ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\nasync function sendEmail(toEmail, toName, code, username){\n  const tpl  = DB.get('tpl')||{};\n  const cfg  = DB.get('ejsConfig')||{};\n  const body = (tpl.body||'Your code: {CODE}')\n    .replace(\/\\{CODE\\}\/g, code)\n    .replace(\/\\{NAME\\}\/g, toName)\n    .replace(\/\\{USERNAME\\}\/g, username||toName);\n  const subject = (tpl.subject||'Meditech Activation Code')\n    .replace(\/\\{NAME\\}\/g, toName);\n\n  \/\/ Log entry\n  const log = DB.get('emailLog')||[];\n  const entry = {\n    id:'e'+Date.now(), to:toEmail, name:toName, code, username:username||toName,\n    subject, body, time:Date.now(), status:'simulated'\n  };\n\n  \/\/ Try real send via EmailJS if configured\n  let sent = false;\n  if(cfg.serviceId && cfg.templateId && cfg.pubKey){\n    try{\n      emailjs.init(cfg.pubKey);\n      await emailjs.send(cfg.serviceId, cfg.templateId, {\n        to_email: toEmail,\n        to_name:  toName,\n        activation_code: code,\n        message: body,\n        subject: subject\n      });\n      entry.status = 'sent';\n      sent = true;\n    } catch(e){\n      entry.status = 'failed';\n      entry.error  = e.text||e.message||String(e);\n    }\n  }\n\n  log.unshift(entry);\n  DB.set('emailLog', log.slice(0,100));\n  return {sent, entry, body, subject};\n}\n\nfunction sendSimulatedEmail(to, name, code, username){\n  \/\/ fire-and-forget wrapper for registration flow\n  sendEmail(to, name, code, username).then(({entry})=>{\n    \/\/ update activation page sim box\n    const logEl = document.getElementById('email-sim-box');\n    if(logEl){\n      logEl.style.display='block';\n      const cfg = DB.get('ejsConfig')||{};\n      const statusLabel = entry.status==='sent'?'\u2705 REAL EMAIL SENT':'\ud83d\udccb SIMULATED (configure EmailJS to send real emails)';\n      logEl.textContent = `${statusLabel}\\n\\nFROM: ${cfg.fromName||'Meditech HR'}\\nTO: ${to}\\nSUBJECT: ${entry.subject}\\n\\n${entry.body}\\n\\n${'\u2500'.repeat(40)}\\nActivation Code: ${code}`;\n    }\n  });\n}\n\n\/\/ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n\/\/ ACTIVATION\n\/\/ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\nfunction codeNext(el){\n  const digits = document.querySelectorAll('.code-digit');\n  const idx = Array.from(digits).indexOf(el);\n  if(el.value && idx < digits.length-1) digits[idx+1].focus();\n}\n\nfunction doActivate(){\n  const digits = document.querySelectorAll('.code-digit');\n  const entered = Array.from(digits).map(d=>d.value).join('');\n  const errEl = document.getElementById('act-alert');\n  const okEl  = document.getElementById('act-success');\n  errEl.className='alert'; okEl.className='alert';\n\n  if(entered.length<6){ errEl.textContent='Enter all 6 digits.'; errEl.className='alert alert-error show'; return; }\n\n  const pending = DB.get('pendingActivation');\n  if(!pending){ errEl.textContent='Session expired.'; errEl.className='alert alert-error show'; return; }\n\n  const users = DB.get('users')||[];\n  const user = users.find(u=>u.id===pending.uid);\n  if(!user){ errEl.textContent='User not found.'; errEl.className='alert alert-error show'; return; }\n\n  if(user.activationCode !== entered){ errEl.textContent='Incorrect code. Try again.'; errEl.className='alert alert-error show'; return; }\n\n  user.active = true;\n  user.activationCode = null;\n  DB.set('users', users);\n  DB.del('pendingActivation');\n\n  okEl.textContent = '\u2705 Account activated! Redirecting to login...';\n  okEl.className = 'alert alert-success show';\n  setTimeout(()=>showPage('pg-auth'), 1800);\n}\n\n\/\/ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n\/\/ LOGIN\n\/\/ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\nfunction doLogin(){\n  const identifier = document.getElementById('l-user').value.trim();\n  const password   = document.getElementById('l-pass').value;\n  const alertEl    = document.getElementById('login-alert');\n  function err(m){ alertEl.textContent=m; alertEl.className='alert alert-error show'; }\n  alertEl.className='alert';\n\n  const users = DB.get('users')||[];\n  const user = users.find(u=>\n    (u.username.toLowerCase()===identifier.toLowerCase() || u.email.toLowerCase()===identifier.toLowerCase())\n    && u.password===password\n  );\n  if(!user){ return err('Invalid username\/email or password.'); }\n  if(user.status==='suspended'){ return err('This account has been suspended. Contact admin.'); }\n  if(!user.active){ return err('Account not activated. Please check your email.'); }\n\n  \/\/ IP Restriction check for HR and Assistant\n  const ipSettings = DB.get('ipSettings')||{};\n  if(ipSettings.enabled && (user.role==='hr'||user.role==='assistant')){\n    \/\/ Per-user IPs take priority; fall back to global list\n    const userIPs = (user.allowedIPs||[]);\n    const globalIPs = (ipSettings.ips||[]);\n    const effectiveIPs = userIPs.length>0 ? userIPs : globalIPs;\n    if(effectiveIPs.length>0 && !effectiveIPs.includes(SIMULATED_IP)){\n      document.getElementById('blocked-ip-display').innerHTML =\n        `Your IP: <strong>${SIMULATED_IP}<\/strong><br>Allowed: ${effectiveIPs.join(', ')||'none'}`;\n      showPage('pg-blocked');\n      return;\n    }\n  }\n\n  setSession(user);\n  currentUser = user;\n  loadDashboard(user);\n}\n\n\/\/ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n\/\/ DASHBOARD LOAD\n\/\/ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\nfunction loadDashboard(user){\n  document.getElementById('tb-username').textContent = user.username;\n  const rb = document.getElementById('tb-rolebadge');\n  rb.textContent = user.role;\n  rb.className = 'role-badge role-'+user.role;\n\n  \/\/ Sidebar visibility\n  const canSeeCV   = ['admin','hr','assistant'].includes(user.role);\n  const isAdmin    = user.role==='admin';\n  document.getElementById('si-cvs').style.display      = canSeeCV  ? 'flex':'none';\n  document.getElementById('si-users').style.display    = isAdmin   ? 'flex':'none';\n  document.getElementById('si-settings').style.display = isAdmin   ? 'flex':'none';\n  document.getElementById('si-email').style.display    = isAdmin   ? 'flex':'none';\n\n  \/\/ IP notice for HR\/assistant\n  const ipNotice = document.getElementById('ip-notice');\n  const ovIp = document.getElementById('ov-ip');\n  if(['hr','assistant'].includes(user.role) && ipNotice){\n    ipNotice.style.display='block';\n    if(ovIp) ovIp.textContent = SIMULATED_IP;\n  } else if(ipNotice){ ipNotice.style.display='none'; }\n\n  \/\/ Welcome\n  document.getElementById('welcome-title').textContent = `Welcome, ${user.username}! \ud83d\udc4b`;\n\n  renderStats(user);\n  renderRecentApps(user);\n  renderApplyForm('sales');\n  switchView(null,'overview');\n  showPage('pg-dashboard');\n}\n\n\/\/ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n\/\/ STATS\n\/\/ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\nfunction renderStats(user){\n  const apps = DB.get('applications')||[];\n  const users = DB.get('users')||[];\n  const grid = document.getElementById('stats-grid');\n\n  let html = '';\n  if(user.role==='admin'){\n    html += statCard(apps.length,'Total Applications','navy');\n    html += statCard(users.filter(u=>u.role==='user').length,'Registered Users','green');\n    html += statCard(apps.filter(a=>a.status==='pending').length,'Pending Review','gold');\n    html += statCard(apps.filter(a=>a.status==='active').length,'Accepted','purple');\n  } else if(['hr','assistant'].includes(user.role)){\n    html += statCard(apps.length,'Total CVs','navy');\n    html += statCard(apps.filter(a=>a.status==='pending').length,'Pending','gold');\n    html += statCard(apps.filter(a=>a.status==='review').length,'In Review','purple');\n    html += statCard(apps.filter(a=>a.status==='active').length,'Accepted','green');\n  } else {\n    const myApps = apps.filter(a=>a.userId===user.id);\n    html += statCard(myApps.length,'My Applications','navy');\n    html += statCard(myApps.filter(a=>a.status==='pending').length,'Pending','gold');\n    html += statCard(myApps.filter(a=>a.status==='review').length,'In Review','purple');\n    html += statCard(myApps.filter(a=>a.status==='active').length,'Accepted','green');\n  }\n  grid.innerHTML = html;\n}\n\nfunction statCard(num,lbl,color){\n  return `<div class=\"stat-card stat-${color}\"><div class=\"stat-num\">${num}<\/div><div class=\"stat-lbl\">${lbl}<\/div><\/div>`;\n}\n\n\/\/ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n\/\/ RECENT APPS\n\/\/ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\nfunction renderRecentApps(user){\n  const apps = DB.get('applications')||[];\n  const el = document.getElementById('recent-apps');\n  let list = user.role==='user' ? apps.filter(a=>a.userId===user.id) : apps;\n  list = list.slice(-5).reverse();\n  if(!list.length){ el.innerHTML='<div class=\"empty-state\"><div class=\"icon\">\ud83d\udccb<\/div><p>No applications yet.<\/p><\/div>'; return; }\n  el.innerHTML = '<div class=\"table-wrap\">'+buildAppTable(list, user)+'<\/div>';\n}\n\n\/\/ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n\/\/ VIEW SWITCHER\n\/\/ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\nfunction switchView(el, view){\n  document.querySelectorAll('.sidebar-item').forEach(i=>i.classList.remove('active'));\n  if(el) el.classList.add('active');\n  document.querySelectorAll('.view').forEach(v=>v.style.display='none');\n  document.getElementById('view-'+view).style.display='block';\n\n  if(view==='cvs') renderCVTable();\n  if(view==='users') renderUsersTable();\n  if(view==='settings') renderIPSettings();\n  if(view==='email-cfg') loadEmailCfg();\n  if(view==='profile') loadProfileView();\n}\n\n\/\/ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n\/\/ CV TABLE\n\/\/ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n\/\/ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n\/\/ CV TABLE  \u2014 with checkboxes + search\n\/\/ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\nlet selectedCVs = new Set();\n\nfunction renderCVTable(){\n  const user = currentUser;\n  if(!user) return;\n  const apps = DB.get('applications')||[];\n  const roleFilter   = document.getElementById('cv-filter-role')?.value||'';\n  const statusFilter = document.getElementById('cv-filter-status')?.value||'';\n  const searchQ      = (document.getElementById('cv-search')?.value||'').toLowerCase().trim();\n\n  let list = apps;\n  if(user.role==='user') list = list.filter(a=>a.userId===user.id);\n  if(roleFilter)   list = list.filter(a=>a.jobRole===roleFilter);\n  if(statusFilter) list = list.filter(a=>a.status===statusFilter);\n  if(searchQ)      list = list.filter(a=>\n    (a.fullName||'').toLowerCase().includes(searchQ) ||\n    (a.email||'').toLowerCase().includes(searchQ) ||\n    (a.country||'').toLowerCase().includes(searchQ) ||\n    (a.phone||'').toLowerCase().includes(searchQ)\n  );\n  list = list.slice().reverse();\n\n  \/\/ Show\/hide select bar for admin\/hr\n  const canExport = ['admin','hr'].includes(user.role);\n  const bar = document.getElementById('cv-select-bar');\n  if(bar) bar.style.display = canExport ? 'flex' : 'none';\n\n  const wrap = document.getElementById('cv-table-wrap');\n  if(!wrap) return;\n  if(!list.length){ wrap.innerHTML='<div class=\"empty-state\"><div class=\"icon\">\ud83d\udcc2<\/div><p>No applications found.<\/p><\/div>'; updateBulkToolbar(); return; }\n  wrap.innerHTML = buildAppTable(list, user);\n  updateBulkToolbar();\n  const countLabel = document.getElementById('cv-count-label');\n  if(countLabel) countLabel.textContent = list.length + ' application' + (list.length!==1?'s':'');\n}\n\nfunction buildAppTable(list, user){\n  const roleTag  = {sales:'tag-sales',bio:'tag-bio',sm:'tag-sm',mkt:'tag-mkt'};\n  const roleName = {sales:'Sales Rep',bio:'Biomedical',sm:'Sales Mgr',mkt:'Marketing'};\n  const canAct    = ['admin','hr'].includes(user.role);\n  const canView   = ['admin','hr','assistant'].includes(user.role);\n  const canExport = ['admin','hr'].includes(user.role);\n\n  let rows = list.map(a=>{\n    const isSelected = selectedCVs.has(a.id);\n    return `<tr class=\"${isSelected?'row-selected':''}\" id=\"row-${a.id}\">\n      ${canExport?`<td style=\"width:36px;padding:0.5rem 0.75rem\"><input type=\"checkbox\" class=\"cv-row-cb\" ${isSelected?'checked':''} onchange=\"toggleRowSelect('${a.id}',this.checked)\" onclick=\"event.stopPropagation()\"><\/td>`:''}\n      <td>\n        <strong>${a.fullName}<\/strong>\n        <div style=\"font-size:0.75rem;color:var(--muted)\">${a.email}<\/div>\n        <div style=\"font-size:0.72rem;color:var(--muted)\">${a.phone||''}<\/div>\n      <\/td>\n      <td><span class=\"tag ${roleTag[a.jobRole]||''}\">${roleName[a.jobRole]||a.jobRole}<\/span><\/td>\n      <td>${a.country||'\u2014'}<\/td>\n      <td><span class=\"status status-${a.status||'pending'}\">${a.status||'pending'}<\/span><\/td>\n      <td>${new Date(a.created).toLocaleDateString()}<\/td>\n      <td>\n        <div style=\"display:flex;gap:0.35rem;flex-wrap:wrap\">\n          ${(canView||user.id===a.userId)?`<button class=\"btn btn-ghost btn-sm\" onclick=\"viewCV('${a.id}')\">\ud83d\udc41 View<\/button>`:''}\n          ${canExport?`<button class=\"btn btn-ghost btn-sm\" title=\"Download PDF\" onclick=\"downloadSinglePDF('${a.id}')\">\ud83d\udcc4 PDF<\/button>`:''}\n          ${canExport?`<button class=\"btn btn-ghost btn-sm\" title=\"Print this CV\" onclick=\"printSingle('${a.id}')\">\ud83d\udda8\ufe0f<\/button>`:''}\n          ${canAct?`<button class=\"btn btn-primary btn-sm\" onclick=\"changeStatus('${a.id}','review')\">Review<\/button>\n            <button class=\"btn btn-green btn-sm\" onclick=\"changeStatus('${a.id}','active')\">\u2713<\/button>\n            <button class=\"btn btn-danger btn-sm\" onclick=\"changeStatus('${a.id}','rejected')\">\u2717<\/button>`:''}\n        <\/div>\n      <\/td>\n    <\/tr>`;\n  }).join('');\n\n  const cbHeader = canExport ? '<th style=\"width:36px\"><\/th>' : '';\n  return `<table><thead><tr>${cbHeader}<th>Applicant<\/th><th>Role<\/th><th>Country<\/th><th>Status<\/th><th>Date<\/th><th>Actions<\/th><\/tr><\/thead><tbody>${rows}<\/tbody><\/table>`;\n}\n\nfunction toggleRowSelect(id, checked){\n  if(checked) selectedCVs.add(id); else selectedCVs.delete(id);\n  const row = document.getElementById('row-'+id);\n  if(row) row.classList.toggle('row-selected', checked);\n  updateBulkToolbar();\n  \/\/ update select-all checkbox state\n  const allCbs = document.querySelectorAll('.cv-row-cb');\n  const allChecked = [...allCbs].every(cb=>cb.checked);\n  const allCb = document.getElementById('select-all-cb');\n  if(allCb){ allCb.checked = allChecked; allCb.indeterminate = !allChecked && selectedCVs.size>0; }\n}\n\nfunction toggleSelectAll(checked){\n  document.querySelectorAll('.cv-row-cb').forEach(cb=>{\n    cb.checked = checked;\n    const id = cb.closest('tr')?.id?.replace('row-','');\n    if(id){ if(checked) selectedCVs.add(id); else selectedCVs.delete(id); }\n    cb.closest('tr')?.classList.toggle('row-selected', checked);\n  });\n  updateBulkToolbar();\n}\n\nfunction clearSelection(){\n  selectedCVs.clear();\n  document.querySelectorAll('.cv-row-cb').forEach(cb=>{ cb.checked=false; cb.closest('tr')?.classList.remove('row-selected'); });\n  const allCb = document.getElementById('select-all-cb');\n  if(allCb){ allCb.checked=false; allCb.indeterminate=false; }\n  updateBulkToolbar();\n}\n\nfunction updateBulkToolbar(){\n  const tb = document.getElementById('bulk-toolbar');\n  const countEl = document.getElementById('selected-count');\n  if(tb){ tb.style.display = selectedCVs.size>0 ? 'flex' : 'none'; }\n  if(countEl) countEl.textContent = selectedCVs.size;\n}\n\nfunction getSelectedApps(){\n  const apps = DB.get('applications')||[];\n  if(selectedCVs.size===0){\n    toast('Please select at least one application first.'); return [];\n  }\n  return apps.filter(a=>selectedCVs.has(a.id));\n}\n\nfunction changeStatus(appId, newStatus){\n  const apps = DB.get('applications')||[];\n  const app = apps.find(a=>a.id===appId);\n  if(app){ app.status=newStatus; DB.set('applications',apps); }\n  renderCVTable();\n  renderStats(currentUser);\n  toast('Status updated to: '+newStatus);\n}\n\n\/\/ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n\/\/ VIEW CV MODAL\n\/\/ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\nlet currentViewingAppId = null;\n\nfunction viewCV(appId){\n  currentViewingAppId = appId;\n  const apps = DB.get('applications')||[];\n  const a = apps.find(x=>x.id===appId);\n  if(!a) return;\n  const roleName = {sales:'Sales Representative',bio:'Biomedical Engineer',sm:'Sales Manager',mkt:'Online Marketing'};\n  const canReply = ['admin','hr'].includes(currentUser.role);\n\n  document.getElementById('cv-modal-title').textContent = `${a.fullName} \u2014 ${roleName[a.jobRole]||a.jobRole}`;\n  document.getElementById('cv-modal-body').innerHTML = `\n    <div class=\"cv-section\"><h4>Personal Information<\/h4>\n      <div class=\"cv-grid\">\n        <div class=\"cv-field\"><div class=\"lbl\">Full Name<\/div><div class=\"val\">${a.fullName||'\u2014'}<\/div><\/div>\n        <div class=\"cv-field\"><div class=\"lbl\">Email<\/div><div class=\"val\">${a.email||'\u2014'}<\/div><\/div>\n        <div class=\"cv-field\"><div class=\"lbl\">Phone<\/div><div class=\"val\">${a.phone||'\u2014'}<\/div><\/div>\n        <div class=\"cv-field\"><div class=\"lbl\">Country<\/div><div class=\"val\">${a.country||'\u2014'}<\/div><\/div>\n        <div class=\"cv-field\"><div class=\"lbl\">Nationality<\/div><div class=\"val\">${a.nationality||'\u2014'}<\/div><\/div>\n        <div class=\"cv-field\"><div class=\"lbl\">Date of Birth<\/div><div class=\"val\">${a.dob||'\u2014'}<\/div><\/div>\n      <\/div>\n    <\/div>\n    <div class=\"cv-section\"><h4>Education<\/h4>\n      <div class=\"cv-grid\">\n        <div class=\"cv-field\"><div class=\"lbl\">Degree<\/div><div class=\"val\">${a.degree||'\u2014'}<\/div><\/div>\n        <div class=\"cv-field\"><div class=\"lbl\">University<\/div><div class=\"val\">${a.university||'\u2014'}<\/div><\/div>\n        <div class=\"cv-field\"><div class=\"lbl\">Major<\/div><div class=\"val\">${a.major||'\u2014'}<\/div><\/div>\n        <div class=\"cv-field\"><div class=\"lbl\">Grad Year<\/div><div class=\"val\">${a.gradYear||'\u2014'}<\/div><\/div>\n      <\/div>\n    <\/div>\n    <div class=\"cv-section\"><h4>Experience<\/h4>\n      <div class=\"cv-grid\">\n        <div class=\"cv-field\"><div class=\"lbl\">Years Experience<\/div><div class=\"val\">${a.yearsExp||'\u2014'}<\/div><\/div>\n        <div class=\"cv-field\"><div class=\"lbl\">Industry<\/div><div class=\"val\">${a.industry||'\u2014'}<\/div><\/div>\n      <\/div>\n      <div class=\"cv-field\" style=\"margin-top:0.75rem\"><div class=\"lbl\">Previous Roles<\/div><div class=\"val\" style=\"white-space:pre-wrap\">${a.prevRoles||'\u2014'}<\/div><\/div>\n      <div class=\"cv-field\" style=\"margin-top:0.5rem\"><div class=\"lbl\">Key Achievements<\/div><div class=\"val\" style=\"white-space:pre-wrap\">${a.achievements||'\u2014'}<\/div><\/div>\n    <\/div>\n    <div class=\"cv-section\"><h4>Skills &amp; Preferences<\/h4>\n      <div class=\"cv-grid\">\n        <div class=\"cv-field\"><div class=\"lbl\">Expected Salary<\/div><div class=\"val\">${a.salary?'$'+a.salary+'\/mo':'\u2014'}<\/div><\/div>\n        <div class=\"cv-field\"><div class=\"lbl\">Available From<\/div><div class=\"val\">${a.startDate||'\u2014'}<\/div><\/div>\n        <div class=\"cv-field\"><div class=\"lbl\">Preferred Location<\/div><div class=\"val\">${a.prefLocation||'\u2014'}<\/div><\/div>\n        ${a.languages?`<div class=\"cv-field\"><div class=\"lbl\">Languages<\/div><div class=\"val\">${a.languages}<\/div><\/div>`:''}\n      <\/div>\n      ${a.jobRole==='sales'?`\n        ${a.salesSkills?`<div class=\"cv-field\" style=\"margin-top:0.5rem\"><div class=\"lbl\">Sales Skills<\/div><div class=\"val\">${a.salesSkills}<\/div><\/div>`:''}\n        ${a.crmTools?`<div class=\"cv-field\" style=\"margin-top:0.5rem\"><div class=\"lbl\">CRM Tools<\/div><div class=\"val\">${a.crmTools}<\/div><\/div>`:''}\n      `:''}\n      ${a.jobRole==='bio'?`\n        ${a.devices?`<div class=\"cv-field\" style=\"margin-top:0.5rem\"><div class=\"lbl\">Device Categories<\/div><div class=\"val\">${a.devices}<\/div><\/div>`:''}\n        ${a.calibTools?`<div class=\"cv-field\" style=\"margin-top:0.5rem\"><div class=\"lbl\">Calibration Tools<\/div><div class=\"val\">${a.calibTools}<\/div><\/div>`:''}\n        ${a.protocols?`<div class=\"cv-field\" style=\"margin-top:0.5rem\"><div class=\"lbl\">Protocols \/ Software<\/div><div class=\"val\">${a.protocols}<\/div><\/div>`:''}\n        ${a.cert1?`<div class=\"cv-field\" style=\"margin-top:0.5rem\"><div class=\"lbl\">ISO\/CE\/FDA Training<\/div><div class=\"val\">${a.cert1}<\/div><\/div>`:''}\n        ${a.cert2?`<div class=\"cv-field\" style=\"margin-top:0.5rem\"><div class=\"lbl\">Other Certifications<\/div><div class=\"val\">${a.cert2}<\/div><\/div>`:''}\n      `:''}\n      ${a.jobRole==='sm'?`\n        ${a.mgmtYears?`<div class=\"cv-field\" style=\"margin-top:0.5rem\"><div class=\"lbl\">Years in Management<\/div><div class=\"val\">${a.mgmtYears}<\/div><\/div>`:''}\n        ${a.teamSize?`<div class=\"cv-field\" style=\"margin-top:0.5rem\"><div class=\"lbl\">Max Team Size<\/div><div class=\"val\">${a.teamSize}<\/div><\/div>`:''}\n        ${a.revenue?`<div class=\"cv-field\" style=\"margin-top:0.5rem\"><div class=\"lbl\">Revenue Managed<\/div><div class=\"val\">${a.revenue}<\/div><\/div>`:''}\n        ${a.mgmtStyle?`<div class=\"cv-field\" style=\"margin-top:0.5rem\"><div class=\"lbl\">Management Style<\/div><div class=\"val\">${a.mgmtStyle}<\/div><\/div>`:''}\n        ${a.smTools?`<div class=\"cv-field\" style=\"margin-top:0.5rem\"><div class=\"lbl\">Tools Used<\/div><div class=\"val\">${a.smTools}<\/div><\/div>`:''}\n        ${a.linkedin?`<div class=\"cv-field\" style=\"margin-top:0.5rem\"><div class=\"lbl\">LinkedIn<\/div><div class=\"val\"><a href=\"${a.linkedin}\" target=\"_blank\">${a.linkedin}<\/a><\/div><\/div>`:''}\n      `:''}\n      ${a.jobRole==='mkt'?`\n        ${a.mktTools?`<div class=\"cv-field\" style=\"margin-top:0.5rem\"><div class=\"lbl\">Marketing Tools<\/div><div class=\"val\">${a.mktTools}<\/div><\/div>`:''}\n        ${a.certifs?`<div class=\"cv-field\" style=\"margin-top:0.5rem\"><div class=\"lbl\">Certifications<\/div><div class=\"val\">${a.certifs}<\/div><\/div>`:''}\n        ${a.portfolio?`<div class=\"cv-field\" style=\"margin-top:0.5rem\"><div class=\"lbl\">Portfolio Links<\/div><div class=\"val\" style=\"white-space:pre-wrap\">${a.portfolio}<\/div><\/div>`:''}\n        ${a.socials?`<div class=\"cv-field\" style=\"margin-top:0.5rem\"><div class=\"lbl\">Social Accounts<\/div><div class=\"val\" style=\"white-space:pre-wrap\">${a.socials}<\/div><\/div>`:''}\n        ${a.linkedin?`<div class=\"cv-field\" style=\"margin-top:0.5rem\"><div class=\"lbl\">LinkedIn<\/div><div class=\"val\"><a href=\"${a.linkedin}\" target=\"_blank\">${a.linkedin}<\/a><\/div><\/div>`:''}\n      `:''}\n    <\/div>\n    <div class=\"cv-section\"><h4>Motivation<\/h4>\n      <div class=\"cv-field\"><div class=\"val\" style=\"white-space:pre-wrap\">${a.motivation||'\u2014'}<\/div><\/div>\n    <\/div>\n    ${a.hrReplies && a.hrReplies.length ? `\n    <div class=\"cv-section\"><h4>HR Communications<\/h4>\n      ${a.hrReplies.map(r=>`\n        <div style=\"background:var(--navy-light);border-radius:8px;padding:0.75rem;margin-bottom:0.5rem;font-size:0.85rem\">\n          <div style=\"font-size:0.72rem;color:var(--muted);margin-bottom:0.25rem\">${r.author} \u00b7 ${new Date(r.time).toLocaleString()}<\/div>\n          <div>${r.text}<\/div>\n        <\/div>\n      `).join('')}\n    <\/div>` : ''}\n    ${canReply ? `\n    <div class=\"cv-section\"><h4>Reply to Applicant<\/h4>\n      <div class=\"reply-area\">\n        <textarea id=\"reply-text\" placeholder=\"Write your response to ${a.fullName}...\"><\/textarea>\n        <div style=\"display:flex;gap:0.5rem;margin-top:0.75rem\">\n          <button class=\"btn btn-primary\" onclick=\"sendReply('${a.id}')\">Send Reply<\/button>\n          <button class=\"btn btn-green\" onclick=\"changeStatus('${a.id}','active');closeCVModal()\">\u2713 Accept<\/button>\n          <button class=\"btn btn-danger\" onclick=\"changeStatus('${a.id}','rejected');closeCVModal()\">\u2717 Reject<\/button>\n        <\/div>\n      <\/div>\n    <\/div>` : ''}\n  `;\n  document.getElementById('cv-modal').classList.add('show');\n}\n\nfunction sendReply(appId){\n  const text = document.getElementById('reply-text').value.trim();\n  if(!text){ toast('Please write a reply first.'); return; }\n  const apps = DB.get('applications')||[];\n  const app = apps.find(a=>a.id===appId);\n  if(!app) return;\n  if(!app.hrReplies) app.hrReplies=[];\n  app.hrReplies.push({author:currentUser.username, text, time:Date.now()});\n  app.status='review';\n  DB.set('applications',apps);\n  toast('Reply sent successfully!');\n  viewCV(appId);\n}\n\nfunction closeCVModal(){\n  document.getElementById('cv-modal').classList.remove('show');\n  currentViewingAppId = null;\n}\nfunction printCurrentCV(){\n  if(!currentViewingAppId) return;\n  printSingle(currentViewingAppId);\n}\nfunction downloadCurrentCV(){\n  if(!currentViewingAppId) return;\n  downloadSinglePDF(currentViewingAppId);\n}\n\n\/\/ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n\/\/ EXPORT \u2014 EXCEL (CSV)\n\/\/ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\nfunction exportExcel(){\n  const apps = getSelectedApps();\n  if(!apps.length) return;\n\n  const roleName = {sales:'Sales Representative',bio:'Biomedical Engineer',sm:'Sales Manager',mkt:'Online Marketing'};\n  const cols = [\n    'Full Name','Email','Phone','Date of Birth','Nationality','Country',\n    'Job Role','Status','Degree','University','Major','Grad Year',\n    'Years Experience','Industry','Previous Roles','Achievements',\n    'Skills','Expected Salary (USD)','Available From','Preferred Location','Motivation',\n    \/\/ Role-specific\n    'Sales Skills','CRM Tools','Device Categories','Calibration Tools','Protocols',\n    'ISO\/CE\/FDA Certs','Other Certs','Mgmt Years','Team Size','Revenue Managed',\n    'Mgmt Style','SM Tools','Marketing Tools','Certifications','Portfolio Links',\n    'Social Accounts','LinkedIn','Languages','Submission Date'\n  ];\n\n  const esc = v => {\n    if(v===null||v===undefined) return '';\n    const s = String(v).replace(\/\"\/g,'\"\"');\n    return s.includes(',') || s.includes('\"') || s.includes('\\n') ? `\"${s}\"` : s;\n  };\n\n  const rows = apps.map(a=>[\n    esc(a.fullName), esc(a.email), esc(a.phone), esc(a.dob), esc(a.nationality), esc(a.country),\n    esc(roleName[a.jobRole]||a.jobRole), esc(a.status),\n    esc(a.degree), esc(a.university), esc(a.major), esc(a.gradYear),\n    esc(a.yearsExp), esc(a.industry), esc(a.prevRoles), esc(a.achievements),\n    esc(a.skills), esc(a.salary?'$'+a.salary:''), esc(a.startDate), esc(a.prefLocation), esc(a.motivation),\n    esc(a.salesSkills), esc(a.crmTools), esc(a.devices), esc(a.calibTools), esc(a.protocols),\n    esc(a.cert1), esc(a.cert2), esc(a.mgmtYears), esc(a.teamSize), esc(a.revenue),\n    esc(a.mgmtStyle), esc(a.smTools), esc(a.mktTools), esc(a.certifs), esc(a.portfolio),\n    esc(a.socials), esc(a.linkedin), esc(a.languages), esc(new Date(a.created).toLocaleDateString())\n  ].join(','));\n\n  const csv = [cols.map(esc).join(','), ...rows].join('\\r\\n');\n  const bom = '\\uFEFF'; \/\/ UTF-8 BOM for Excel\n  const blob = new Blob([bom+csv], {type:'text\/csv;charset=utf-8'});\n  const url  = URL.createObjectURL(blob);\n  const a_el = document.createElement('a');\n  a_el.href = url;\n  a_el.download = `meditech-applications-${new Date().toISOString().slice(0,10)}.csv`;\n  a_el.click();\n  URL.revokeObjectURL(url);\n  toast(`\u2705 Excel file downloaded \u2014 ${apps.length} application${apps.length!==1?'s':''}`);\n}\n\n\/\/ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n\/\/ EXPORT \u2014 PDF (multi-CV)\n\/\/ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\nfunction exportPDF(){\n  const apps = getSelectedApps();\n  if(!apps.length) return;\n  openPrintWindow(apps, 'pdf');\n}\n\nfunction downloadSinglePDF(appId){\n  const apps = DB.get('applications')||[];\n  const app = apps.find(a=>a.id===appId);\n  if(!app) return;\n  openPrintWindow([app], 'pdf');\n}\n\n\/\/ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n\/\/ PRINT & PDF \u2014 popup window approach (100% browser compatible)\n\/\/ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\nfunction printSelected(){\n  const apps = getSelectedApps();\n  if(!apps.length) return;\n  openPrintWindow(apps, 'print');\n}\n\nfunction printSingle(appId){\n  const apps = DB.get('applications')||[];\n  const app = apps.find(a=>a.id===appId);\n  if(!app) return;\n  openPrintWindow([app], 'print');\n}\n\nfunction openPrintWindow(apps, mode){\n  \/\/ Build self-contained HTML for a new window\n  const roleName = {sales:'Sales Representative',bio:'Biomedical Engineer',sm:'Sales Manager',mkt:'Online Marketing'};\n  const statusColor = {pending:'#fff3cd;color:#856404',active:'#d1fae5;color:#065f46',\n                       rejected:'#fdecea;color:#c62828',review:'#eaf0f9;color:#1a4f8b'};\n\n  const cardsHTML = apps.map((a,idx)=>{\n    const role   = roleName[a.jobRole]||a.jobRole;\n    const status = a.status||'pending';\n    const sc     = statusColor[status]||statusColor.pending;\n\n    const field = (lbl,val)=> val ? `<div class=\"pf\"><div class=\"pl\">${lbl}<\/div><div class=\"pv\">${val}<\/div><\/div>` : '';\n    const section = (title, html)=> html ? `<div class=\"psh\">${title}<\/div>${html}` : '';\n    const block = (...items)=> `<div class=\"pgrid\">${items.join('')}<\/div>`;\n\n    \/\/ role extras\n    let extras = '';\n    if(a.jobRole==='sales'){\n      extras += section('Sales Skills', a.salesSkills ? `<div class=\"ptxt\">${a.salesSkills}<\/div>` : '');\n      extras += section('CRM Tools',    a.crmTools    ? `<div class=\"ptxt\">${a.crmTools}<\/div>` : '');\n      extras += a.languages ? field('Languages', a.languages) : '';\n    } else if(a.jobRole==='bio'){\n      extras += section('Device Categories',  a.devices    ? `<div class=\"ptxt\">${a.devices}<\/div>` : '');\n      extras += section('Calibration Tools',  a.calibTools ? `<div class=\"ptxt\">${a.calibTools}<\/div>` : '');\n      extras += section('Protocols\/Software', a.protocols  ? `<div class=\"ptxt\">${a.protocols}<\/div>` : '');\n      extras += section('ISO\/CE\/FDA Training',a.cert1      ? `<div class=\"ptxt\">${a.cert1}<\/div>` : '');\n      extras += section('Other Certifications',a.cert2     ? `<div class=\"ptxt\">${a.cert2}<\/div>` : '');\n    } else if(a.jobRole==='sm'){\n      extras += block(\n        field('Mgmt Years', a.mgmtYears), field('Team Size', a.teamSize),\n        field('Revenue Managed', a.revenue), field('Mgmt Style', a.mgmtStyle)\n      );\n      extras += section('Tools Used', a.smTools ? `<div class=\"ptxt\">${a.smTools}<\/div>` : '');\n      extras += a.languages ? field('Languages', a.languages) : '';\n    } else if(a.jobRole==='mkt'){\n      extras += section('Marketing Tools',  a.mktTools  ? `<div class=\"ptxt\">${a.mktTools}<\/div>` : '');\n      extras += section('Certifications',   a.certifs   ? `<div class=\"ptxt\">${a.certifs}<\/div>` : '');\n      extras += section('Portfolio Links',  a.portfolio ? `<div class=\"ptxt\">${a.portfolio}<\/div>` : '');\n      extras += section('Social Accounts',  a.socials   ? `<div class=\"ptxt\">${a.socials}<\/div>` : '');\n      extras += a.languages ? `<div class=\"pgrid\">${field('Languages',a.languages)}<\/div>` : '';\n    }\n    if(a.linkedin) extras += `<div class=\"pgrid\">${field('LinkedIn', a.linkedin)}<\/div>`;\n\n    return `\n    <div class=\"cv-card\" style=\"page-break-before:${idx>0?'always':'auto'}\">\n      <div class=\"cv-name\">${a.fullName||'\u2014'}<\/div>\n      <div style=\"margin-bottom:6px\">\n        <span class=\"role-tag\">${role}<\/span>\n        <span class=\"status-tag\" style=\"background:${sc.split(';')[0].split(':')[1]};color:${sc.split(';color:')[1]}\">${status.toUpperCase()}<\/span>\n        <span style=\"font-size:9pt;color:#666;margin-left:8px\">Applied: ${new Date(a.created).toLocaleDateString()}<\/span>\n      <\/div>\n      <div class=\"psh\">Personal Information<\/div>\n      <div class=\"pgrid\">\n        ${field('Email',a.email)}${field('Phone',a.phone)}${field('Country',a.country)}\n        ${field('Date of Birth',a.dob)}${field('Nationality',a.nationality)}${field('Expected Salary',a.salary?'$'+a.salary+'\/mo':'')}\n      <\/div>\n      <div class=\"psh\">Education<\/div>\n      <div class=\"pgrid\">\n        ${field('Degree',a.degree)}${field('University',a.university)}\n        ${field('Major',a.major)}${field('Grad Year',a.gradYear)}\n      <\/div>\n      <div class=\"psh\">Experience<\/div>\n      <div class=\"pgrid\">\n        ${field('Years Experience',a.yearsExp)}${field('Industry',a.industry)}\n        ${field('Available From',a.startDate)}${field('Pref. Location',a.prefLocation)}\n      <\/div>\n      ${a.prevRoles   ? section('Previous Roles',    `<div class=\"ptxt\">${a.prevRoles}<\/div>`) : ''}\n      ${a.achievements? section('Key Achievements',  `<div class=\"ptxt\">${a.achievements}<\/div>`) : ''}\n      ${extras}\n      ${a.motivation  ? section('Motivation \/ Why Meditech', `<div class=\"ptxt\">${a.motivation}<\/div>`) : ''}\n    <\/div>`;\n  }).join('');\n\n  const now = new Date().toLocaleString();\n  const html = `<!DOCTYPE html><html><head><meta charset=\"UTF-8\">\n<title>Meditech CVs \u2014 ${now}<\/title>\n<style>\n  *{box-sizing:border-box;margin:0;padding:0}\n  body{font-family:Arial,sans-serif;font-size:10pt;color:#111;background:#fff;padding:12mm 14mm}\n  .page-header{display:flex;justify-content:space-between;align-items:flex-start;border-bottom:3px solid #1a4f8b;padding-bottom:5mm;margin-bottom:6mm}\n  .logo{font-size:16pt;font-weight:900;color:#1a4f8b;letter-spacing:1px}\n  .logo span{color:#0d9e6e}\n  .meta{font-size:8pt;color:#666;text-align:right;line-height:1.6}\n  .cv-card{border:1px solid #ccc;border-radius:3mm;padding:6mm;margin-bottom:6mm}\n  .cv-name{font-size:14pt;font-weight:700;color:#1a4f8b;margin-bottom:3px}\n  .role-tag{display:inline-block;background:#eaf0f9;color:#1a4f8b;padding:1px 8px;border-radius:3px;font-size:8pt;font-weight:700;margin-right:6px}\n  .status-tag{display:inline-block;padding:1px 8px;border-radius:3px;font-size:8pt;font-weight:700}\n  .psh{font-size:8pt;font-weight:700;text-transform:uppercase;color:#555;letter-spacing:0.5px;border-bottom:1px solid #e5e7eb;padding-bottom:2px;margin:5px 0 4px}\n  .pgrid{display:grid;grid-template-columns:repeat(3,1fr);gap:3px 8px;margin-bottom:4px}\n  .pf{margin-bottom:2px}\n  .pl{font-size:7pt;color:#888;text-transform:uppercase;font-weight:700;letter-spacing:0.4px}\n  .pv{font-size:9pt;font-weight:500;color:#111}\n  .ptxt{font-size:9pt;color:#222;line-height:1.5;white-space:pre-wrap;word-break:break-word;margin-bottom:4px}\n  @media print{\n    body{padding:10mm 12mm}\n    .no-print{display:none!important}\n    @page{size:A4 portrait;margin:0}\n  }\n  .print-btn-bar{position:fixed;top:10px;right:10px;display:flex;gap:8px;z-index:999}\n  .pbtn{padding:8px 16px;border:none;border-radius:6px;font-size:13px;font-weight:700;cursor:pointer;font-family:Arial}\n  .pbtn-print{background:#1a4f8b;color:#fff}\n  .pbtn-pdf{background:#e53935;color:#fff}\n  .pbtn-close{background:#6b7280;color:#fff}\n<\/style>\n<\/head><body>\n<div class=\"print-btn-bar no-print\">\n  <button class=\"pbtn pbtn-print\" onclick=\"window.print()\">\ud83d\udda8\ufe0f Print<\/button>\n  <button class=\"pbtn pbtn-pdf\" onclick=\"alert('To save as PDF:\\n1. Click the Print button\\n2. In the Print dialog, set Destination to \\\"Save as PDF\\\"\\n3. Click Save')\">\ud83d\udcc4 How to Save PDF<\/button>\n  <button class=\"pbtn pbtn-close\" onclick=\"window.close()\">\u2715 Close<\/button>\n<\/div>\n<div class=\"page-header\">\n  <div class=\"logo\">MEDI<span>TECH<\/span> GROUP<\/div>\n  <div class=\"meta\">Applications Report<br>Generated: ${now}<br>${apps.length} CV${apps.length!==1?'s':''}<\/div>\n<\/div>\n${cardsHTML}\n<\/script>\n<\/div>\n\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_acf_changed":false,"footnotes":""},"class_list":["post-196","page","type-page","status-publish","hentry"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.2 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\r\n<title>\u0627\u0644\u0648\u0638\u0627\u0626\u0641 | \u0645\u064a\u062f\u064a\u062a\u0643<\/title>\r\n<meta name=\"description\" content=\"\u062a\u0648\u0641\u0631 \u0645\u064a\u062f\u064a\u062a\u0643 \u0641\u0631\u0635\u0627\u064b \u0641\u064a \u0627\u0644\u0647\u0646\u062f\u0633\u0629 \u0648\u0627\u0644\u0628\u062d\u062b \u0648\u0627\u0644\u062a\u0637\u0648\u064a\u0631 \u0648\u0627\u0644\u062c\u0648\u062f\u0629 \u0648\u0627\u0644\u0634\u0624\u0648\u0646 \u0627\u0644\u062a\u0646\u0638\u064a\u0645\u064a\u0629 \u0648\u0627\u0644\u0645\u0628\u064a\u0639\u0627\u062a \u0648\u0627\u0644\u062a\u0633\u0648\u064a\u0642.\" \/>\r\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\r\n<link rel=\"canonical\" href=\"https:\/\/www.meditech.com.eg\/careers-at-meditech-join-our-medical-technology-team\/\" \/>\r\n<meta property=\"og:locale\" content=\"en_US\" \/>\r\n<meta property=\"og:type\" content=\"article\" \/>\r\n<meta property=\"og:title\" content=\"\u0627\u0644\u0648\u0638\u0627\u0626\u0641 | \u0645\u064a\u062f\u064a\u062a\u0643\" \/>\r\n<meta property=\"og:description\" content=\"\u062a\u0648\u0641\u0631 \u0645\u064a\u062f\u064a\u062a\u0643 \u0641\u0631\u0635\u0627\u064b \u0641\u064a \u0627\u0644\u0647\u0646\u062f\u0633\u0629 \u0648\u0627\u0644\u0628\u062d\u062b \u0648\u0627\u0644\u062a\u0637\u0648\u064a\u0631 \u0648\u0627\u0644\u062c\u0648\u062f\u0629 \u0648\u0627\u0644\u0634\u0624\u0648\u0646 \u0627\u0644\u062a\u0646\u0638\u064a\u0645\u064a\u0629 \u0648\u0627\u0644\u0645\u0628\u064a\u0639\u0627\u062a \u0648\u0627\u0644\u062a\u0633\u0648\u064a\u0642.\" \/>\r\n<meta property=\"og:url\" content=\"https:\/\/www.meditech.com.eg\/careers-at-meditech-join-our-medical-technology-team\/\" \/>\r\n<meta property=\"og:site_name\" content=\"\u0627\u0644\u0645\u0648\u0642\u0639 \u0627\u0644\u0631\u0633\u0645\u064a \u0644\u0645\u062c\u0645\u0648\u0639\u0629 \u0645\u064a\u062f\u064a\u062a\u0643 | \u0645\u0635\u0646\u0639 \u0627\u0644\u0645\u0639\u062f\u0627\u062a \u0627\u0644\u0637\u0628\u064a\u0629 \u0648\u0645\u0632\u0648\u062f \u062d\u0644\u0648\u0644 \u0637\u0628\u064a\u0629 \u0639\u0627\u0644\u0645\u064a\u0629 | \u0627\u0644\u0635\u064a\u0646\" \/>\r\n<meta property=\"article:modified_time\" content=\"2026-09-01T08:14:26+00:00\" \/>\r\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\r\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.meditech.com.eg\\\/careers-at-meditech-join-our-medical-technology-team\\\/\",\"url\":\"https:\\\/\\\/www.meditech.com.eg\\\/careers-at-meditech-join-our-medical-technology-team\\\/\",\"name\":\"\u0627\u0644\u0648\u0638\u0627\u0626\u0641 | \u0645\u064a\u062f\u064a\u062a\u0643\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.meditech.com.eg\\\/#website\"},\"datePublished\":\"2026-06-02T17:09:54+00:00\",\"dateModified\":\"2026-09-01T08:14:26+00:00\",\"description\":\"\u062a\u0648\u0641\u0631 \u0645\u064a\u062f\u064a\u062a\u0643 \u0641\u0631\u0635\u0627\u064b \u0641\u064a \u0627\u0644\u0647\u0646\u062f\u0633\u0629 \u0648\u0627\u0644\u0628\u062d\u062b \u0648\u0627\u0644\u062a\u0637\u0648\u064a\u0631 \u0648\u0627\u0644\u062c\u0648\u062f\u0629 \u0648\u0627\u0644\u0634\u0624\u0648\u0646 \u0627\u0644\u062a\u0646\u0638\u064a\u0645\u064a\u0629 \u0648\u0627\u0644\u0645\u0628\u064a\u0639\u0627\u062a \u0648\u0627\u0644\u062a\u0633\u0648\u064a\u0642.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.meditech.com.eg\\\/careers-at-meditech-join-our-medical-technology-team\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.meditech.com.eg\\\/careers-at-meditech-join-our-medical-technology-team\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.meditech.com.eg\\\/careers-at-meditech-join-our-medical-technology-team\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\u9996\u9875\",\"item\":\"https:\\\/\\\/www.meditech.com.eg\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"\u0627\u0644\u0648\u0638\u0627\u0626\u0641\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.meditech.com.eg\\\/#website\",\"url\":\"https:\\\/\\\/www.meditech.com.eg\\\/\",\"name\":\"\u0627\u0644\u0645\u0648\u0642\u0639 \u0627\u0644\u0631\u0633\u0645\u064a \u0644\u0645\u062c\u0645\u0648\u0639\u0629 \u0645\u064a\u062f\u064a\u062a\u0643 | \u0645\u0635\u0646\u0639 \u0627\u0644\u0645\u0639\u062f\u0627\u062a \u0627\u0644\u0637\u0628\u064a\u0629 \u0648\u0645\u0632\u0648\u062f \u062d\u0644\u0648\u0644 \u0637\u0628\u064a\u0629 \u0639\u0627\u0644\u0645\u064a\u0629 | \u0627\u0644\u0635\u064a\u0646\",\"description\":\"\u0627\u0644\u0645\u0648\u0642\u0639 \u0627\u0644\u0631\u0633\u0645\u064a \u0644\u0645\u062c\u0645\u0648\u0639\u0629 \u0645\u064a\u062f\u064a\u062a\u0643 | \u0645\u0635\u0646\u0639 \u0627\u0644\u0645\u0639\u062f\u0627\u062a \u0627\u0644\u0637\u0628\u064a\u0629 \u0648\u0645\u0632\u0648\u062f \u062d\u0644\u0648\u0644 \u0637\u0628\u064a\u0629 \u0639\u0627\u0644\u0645\u064a\u0629 | \u0627\u0644\u0635\u064a\u0646\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.meditech.com.eg\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.meditech.com.eg\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.meditech.com.eg\\\/#organization\",\"name\":\"\u0627\u0644\u0645\u0648\u0642\u0639 \u0627\u0644\u0631\u0633\u0645\u064a \u0644\u0645\u062c\u0645\u0648\u0639\u0629 \u0645\u064a\u062f\u064a\u062a\u0643 | \u0645\u0635\u0646\u0639 \u0627\u0644\u0645\u0639\u062f\u0627\u062a \u0627\u0644\u0637\u0628\u064a\u0629 \u0648\u0645\u0632\u0648\u062f \u062d\u0644\u0648\u0644 \u0637\u0628\u064a\u0629 \u0639\u0627\u0644\u0645\u064a\u0629 | \u0627\u0644\u0635\u064a\u0646\",\"url\":\"https:\\\/\\\/www.meditech.com.eg\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.meditech.com.eg\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"\\\/wp-content\\\/uploads\\\/2026\\\/06\\\/cropped-logo11.webp\",\"contentUrl\":\"\\\/wp-content\\\/uploads\\\/2026\\\/06\\\/cropped-logo11.webp\",\"width\":1006,\"height\":212,\"caption\":\"\u0627\u0644\u0645\u0648\u0642\u0639 \u0627\u0644\u0631\u0633\u0645\u064a \u0644\u0645\u062c\u0645\u0648\u0639\u0629 \u0645\u064a\u062f\u064a\u062a\u0643 | \u0645\u0635\u0646\u0639 \u0627\u0644\u0645\u0639\u062f\u0627\u062a \u0627\u0644\u0637\u0628\u064a\u0629 \u0648\u0645\u0632\u0648\u062f \u062d\u0644\u0648\u0644 \u0637\u0628\u064a\u0629 \u0639\u0627\u0644\u0645\u064a\u0629 | \u0627\u0644\u0635\u064a\u0646\"},\"image\":{\"@id\":\"https:\\\/\\\/www.meditech.com.eg\\\/#\\\/schema\\\/logo\\\/image\\\/\"}}]}<\/script>\r\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"\u0627\u0644\u0648\u0638\u0627\u0626\u0641 | \u0645\u064a\u062f\u064a\u062a\u0643","description":"\u062a\u0648\u0641\u0631 \u0645\u064a\u062f\u064a\u062a\u0643 \u0641\u0631\u0635\u0627\u064b \u0641\u064a \u0627\u0644\u0647\u0646\u062f\u0633\u0629 \u0648\u0627\u0644\u0628\u062d\u062b \u0648\u0627\u0644\u062a\u0637\u0648\u064a\u0631 \u0648\u0627\u0644\u062c\u0648\u062f\u0629 \u0648\u0627\u0644\u0634\u0624\u0648\u0646 \u0627\u0644\u062a\u0646\u0638\u064a\u0645\u064a\u0629 \u0648\u0627\u0644\u0645\u0628\u064a\u0639\u0627\u062a \u0648\u0627\u0644\u062a\u0633\u0648\u064a\u0642.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.meditech.com.eg\/careers-at-meditech-join-our-medical-technology-team\/","og_locale":"en_US","og_type":"article","og_title":"\u0627\u0644\u0648\u0638\u0627\u0626\u0641 | \u0645\u064a\u062f\u064a\u062a\u0643","og_description":"\u062a\u0648\u0641\u0631 \u0645\u064a\u062f\u064a\u062a\u0643 \u0641\u0631\u0635\u0627\u064b \u0641\u064a \u0627\u0644\u0647\u0646\u062f\u0633\u0629 \u0648\u0627\u0644\u0628\u062d\u062b \u0648\u0627\u0644\u062a\u0637\u0648\u064a\u0631 \u0648\u0627\u0644\u062c\u0648\u062f\u0629 \u0648\u0627\u0644\u0634\u0624\u0648\u0646 \u0627\u0644\u062a\u0646\u0638\u064a\u0645\u064a\u0629 \u0648\u0627\u0644\u0645\u0628\u064a\u0639\u0627\u062a \u0648\u0627\u0644\u062a\u0633\u0648\u064a\u0642.","og_url":"https:\/\/www.meditech.com.eg\/careers-at-meditech-join-our-medical-technology-team\/","og_site_name":"\u0627\u0644\u0645\u0648\u0642\u0639 \u0627\u0644\u0631\u0633\u0645\u064a \u0644\u0645\u062c\u0645\u0648\u0639\u0629 \u0645\u064a\u062f\u064a\u062a\u0643 | \u0645\u0635\u0646\u0639 \u0627\u0644\u0645\u0639\u062f\u0627\u062a \u0627\u0644\u0637\u0628\u064a\u0629 \u0648\u0645\u0632\u0648\u062f \u062d\u0644\u0648\u0644 \u0637\u0628\u064a\u0629 \u0639\u0627\u0644\u0645\u064a\u0629 | \u0627\u0644\u0635\u064a\u0646","article_modified_time":"2026-09-01T08:14:26+00:00","twitter_card":"summary_large_image","schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.meditech.com.eg\/careers-at-meditech-join-our-medical-technology-team\/","url":"https:\/\/www.meditech.com.eg\/careers-at-meditech-join-our-medical-technology-team\/","name":"\u0627\u0644\u0648\u0638\u0627\u0626\u0641 | \u0645\u064a\u062f\u064a\u062a\u0643","isPartOf":{"@id":"https:\/\/www.meditech.com.eg\/#website"},"datePublished":"2026-06-02T17:09:54+00:00","dateModified":"2026-09-01T08:14:26+00:00","description":"\u062a\u0648\u0641\u0631 \u0645\u064a\u062f\u064a\u062a\u0643 \u0641\u0631\u0635\u0627\u064b \u0641\u064a \u0627\u0644\u0647\u0646\u062f\u0633\u0629 \u0648\u0627\u0644\u0628\u062d\u062b \u0648\u0627\u0644\u062a\u0637\u0648\u064a\u0631 \u0648\u0627\u0644\u062c\u0648\u062f\u0629 \u0648\u0627\u0644\u0634\u0624\u0648\u0646 \u0627\u0644\u062a\u0646\u0638\u064a\u0645\u064a\u0629 \u0648\u0627\u0644\u0645\u0628\u064a\u0639\u0627\u062a \u0648\u0627\u0644\u062a\u0633\u0648\u064a\u0642.","breadcrumb":{"@id":"https:\/\/www.meditech.com.eg\/careers-at-meditech-join-our-medical-technology-team\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.meditech.com.eg\/careers-at-meditech-join-our-medical-technology-team\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.meditech.com.eg\/careers-at-meditech-join-our-medical-technology-team\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\u9996\u9875","item":"https:\/\/www.meditech.com.eg\/"},{"@type":"ListItem","position":2,"name":"\u0627\u0644\u0648\u0638\u0627\u0626\u0641"}]},{"@type":"WebSite","@id":"https:\/\/www.meditech.com.eg\/#website","url":"https:\/\/www.meditech.com.eg\/","name":"\u0627\u0644\u0645\u0648\u0642\u0639 \u0627\u0644\u0631\u0633\u0645\u064a \u0644\u0645\u062c\u0645\u0648\u0639\u0629 \u0645\u064a\u062f\u064a\u062a\u0643 | \u0645\u0635\u0646\u0639 \u0627\u0644\u0645\u0639\u062f\u0627\u062a \u0627\u0644\u0637\u0628\u064a\u0629 \u0648\u0645\u0632\u0648\u062f \u062d\u0644\u0648\u0644 \u0637\u0628\u064a\u0629 \u0639\u0627\u0644\u0645\u064a\u0629 | \u0627\u0644\u0635\u064a\u0646","description":"\u0627\u0644\u0645\u0648\u0642\u0639 \u0627\u0644\u0631\u0633\u0645\u064a \u0644\u0645\u062c\u0645\u0648\u0639\u0629 \u0645\u064a\u062f\u064a\u062a\u0643 | \u0645\u0635\u0646\u0639 \u0627\u0644\u0645\u0639\u062f\u0627\u062a \u0627\u0644\u0637\u0628\u064a\u0629 \u0648\u0645\u0632\u0648\u062f \u062d\u0644\u0648\u0644 \u0637\u0628\u064a\u0629 \u0639\u0627\u0644\u0645\u064a\u0629 | \u0627\u0644\u0635\u064a\u0646","publisher":{"@id":"https:\/\/www.meditech.com.eg\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.meditech.com.eg\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.meditech.com.eg\/#organization","name":"\u0627\u0644\u0645\u0648\u0642\u0639 \u0627\u0644\u0631\u0633\u0645\u064a \u0644\u0645\u062c\u0645\u0648\u0639\u0629 \u0645\u064a\u062f\u064a\u062a\u0643 | \u0645\u0635\u0646\u0639 \u0627\u0644\u0645\u0639\u062f\u0627\u062a \u0627\u0644\u0637\u0628\u064a\u0629 \u0648\u0645\u0632\u0648\u062f \u062d\u0644\u0648\u0644 \u0637\u0628\u064a\u0629 \u0639\u0627\u0644\u0645\u064a\u0629 | \u0627\u0644\u0635\u064a\u0646","url":"https:\/\/www.meditech.com.eg\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.meditech.com.eg\/#\/schema\/logo\/image\/","url":"\/wp-content\/uploads\/2026\/06\/cropped-logo11.webp","contentUrl":"\/wp-content\/uploads\/2026\/06\/cropped-logo11.webp","width":1006,"height":212,"caption":"\u0627\u0644\u0645\u0648\u0642\u0639 \u0627\u0644\u0631\u0633\u0645\u064a \u0644\u0645\u062c\u0645\u0648\u0639\u0629 \u0645\u064a\u062f\u064a\u062a\u0643 | \u0645\u0635\u0646\u0639 \u0627\u0644\u0645\u0639\u062f\u0627\u062a \u0627\u0644\u0637\u0628\u064a\u0629 \u0648\u0645\u0632\u0648\u062f \u062d\u0644\u0648\u0644 \u0637\u0628\u064a\u0629 \u0639\u0627\u0644\u0645\u064a\u0629 | \u0627\u0644\u0635\u064a\u0646"},"image":{"@id":"https:\/\/www.meditech.com.eg\/#\/schema\/logo\/image\/"}}]}},"_links":{"self":[{"href":"https:\/\/www.meditech.com.eg\/wp-json\/wp\/v2\/pages\/196","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.meditech.com.eg\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.meditech.com.eg\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.meditech.com.eg\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.meditech.com.eg\/wp-json\/wp\/v2\/comments?post=196"}],"version-history":[{"count":4,"href":"https:\/\/www.meditech.com.eg\/wp-json\/wp\/v2\/pages\/196\/revisions"}],"predecessor-version":[{"id":3580,"href":"https:\/\/www.meditech.com.eg\/wp-json\/wp\/v2\/pages\/196\/revisions\/3580"}],"wp:attachment":[{"href":"https:\/\/www.meditech.com.eg\/wp-json\/wp\/v2\/media?parent=196"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}