{"id":2453,"date":"2026-02-25T19:07:11","date_gmt":"2026-02-25T19:07:11","guid":{"rendered":"https:\/\/www.nmp.unirc.it\/?page_id=2453"},"modified":"2026-05-17T11:28:46","modified_gmt":"2026-05-17T11:28:46","slug":"2453-2","status":"publish","type":"page","link":"https:\/\/www.nmp.unirc.it\/?page_id=2453","title":{"rendered":""},"content":{"rendered":"\n<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n<meta charset=\"UTF-8\">\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n<title>Paper Submission Portal<\/title>\n<link href=\"https:\/\/fonts.googleapis.com\/css2?family=Crimson+Pro:ital,wght@0,300;0,400;0,600;1,300&#038;family=DM+Sans:wght@300;400;500;600&#038;display=swap\" rel=\"stylesheet\">\n<style>\n  :root {\n    --navy: #0a1628;\n    --navy-mid: #142240;\n    --gold: #c9a84c;\n    --gold-light: #e8c97a;\n    --cream: #f8f5ef;\n    --cream-dark: #ede9e0;\n    --text: #1a1a2e;\n    --text-muted: #5a6a82;\n    --success: #2d7a5f;\n    --error: #c0392b;\n    --border: #d4cfc4;\n    --white: #ffffff;\n  }\n\n  * { box-sizing: border-box; margin: 0; padding: 0; }\n  body { font-family: 'DM Sans', sans-serif; background: var(--cream); color: var(--text); min-height: 100vh; }\n  \n  .portal-header { background: var(--navy); padding: 20px 40px; display: flex; align-items: center; gap: 16px; border-bottom: 2px solid var(--gold); }\n  .header-badge { width: 42px; height: 42px; background: linear-gradient(135deg, var(--gold), var(--gold-light)); border-radius: 10px; display: flex; align-items: center; justify-content: center; font-size: 18px; }\n  .header-text h1 { font-family: 'Crimson Pro', serif; font-size: 20px; color: var(--white); font-weight: 600; }\n  .header-text p { font-size: 12px; color: rgba(255,255,255,0.6); text-transform: uppercase; letter-spacing: 1px; }\n  \n  .progress-wrap { background: var(--white); border-bottom: 1px solid var(--border); padding: 0 40px; overflow-x: auto; }\n  .progress-steps { display: flex; max-width: 900px; margin: 0 auto; }\n  .step-item { display: flex; align-items: center; gap: 10px; padding: 18px 20px 18px 0; flex: 1; opacity: 0.4; }\n  .step-item.active { opacity: 1; border-bottom: 2px solid var(--gold); }\n  .step-item.done { opacity: 0.7; }\n  .step-num { width: 28px; height: 28px; border-radius: 50%; border: 2px solid var(--border); display: flex; align-items: center; justify-content: center; font-size: 11px; font-weight: 600; background: var(--white); }\n  .step-item.active .step-num { background: var(--navy); color: var(--white); border-color: var(--navy); }\n  .step-item.done .step-num { background: var(--success); color: var(--white); border-color: var(--success); }\n  .step-label { font-size: 11px; font-weight: 600; text-transform: uppercase; white-space: nowrap; }\n\n  .form-container { max-width: 900px; margin: 40px auto; padding: 0 20px 60px; }\n  .form-panel { background: var(--white); border-radius: 16px; border: 1px solid var(--border); overflow: hidden; box-shadow: 0 4px 40px rgba(10,22,40,0.08); display: none; }\n  .form-panel.active { display: block; animation: fadeUp 0.4s ease; }\n  @keyframes fadeUp { from { opacity: 0; transform: translateY(12px); } to { opacity: 1; transform: translateY(0); } }\n  \n  .panel-header { padding: 32px 40px; background: linear-gradient(135deg, var(--navy), var(--navy-mid)); color: var(--white); }\n  .panel-step-tag { font-size: 11px; font-weight: 600; color: var(--gold); text-transform: uppercase; margin-bottom: 8px; }\n  .panel-header h2 { font-family: 'Crimson Pro', serif; font-size: 28px; margin-bottom: 6px; }\n  .panel-body { padding: 36px 40px; }\n  \n  .section-title { font-family: 'Crimson Pro', serif; font-size: 18px; font-weight: 600; color: var(--navy); margin: 32px 0 20px; padding-bottom: 10px; border-bottom: 1px solid var(--cream-dark); display: flex; align-items: center; gap: 10px; }\n  .section-title:first-child { margin-top: 0; }\n  .form-grid { display: grid; gap: 20px; }\n  .form-grid.cols-2 { grid-template-columns: 1fr 1fr; }\n  \n  .field { display: flex; flex-direction: column; gap: 6px; }\n  .field label { font-size: 12px; font-weight: 600; color: var(--text-muted); text-transform: uppercase; }\n  .field label .req { color: var(--error); font-size: 14px; }\n  .field input, .field select { padding: 12px 14px; border: 1.5px solid var(--border); border-radius: 10px; font-size: 14px; outline: none; transition: 0.2s; width: 100%; font-family: 'DM Sans', sans-serif;}\n  .field input:focus, .field select:focus { border-color: var(--navy); }\n  .hint { font-size: 11px; color: var(--text-muted); line-height: 1.4; }\n  .error-msg { font-size: 11px; color: var(--error); display: none; }\n  .has-error input, .has-error select { border-color: var(--error); }\n\n  .btn-add-author { display: flex; align-items: center; justify-content: center; gap: 8px; padding: 12px; border: 1.5px dashed var(--border); border-radius: 10px; background: transparent; cursor: pointer; font-size: 13px; font-family: 'DM Sans', sans-serif; color: var(--navy); font-weight: 600; transition: 0.2s; width: 100%; margin-top: 20px; }\n  .btn-add-author:hover { border-color: var(--navy); background: rgba(10,22,40,0.03); }\n\n  .calc-box { background: rgba(201,168,76,0.1); border: 2px solid var(--gold); border-radius: 12px; padding: 24px; text-align: center; margin-bottom: 24px; }\n  .calc-total { font-family: 'Crimson Pro', serif; font-size: 36px; color: var(--navy); font-weight: 600; margin: 10px 0; }\n  .bank-details { background: var(--cream); padding: 16px; border-radius: 8px; text-align: left; font-size: 13px; line-height: 1.6; border: 1px solid var(--border); }\n\n  .btn-download { display: inline-flex; align-items: center; gap: 8px; padding: 8px 16px; background: var(--cream-dark); color: var(--navy); border-radius: 8px; font-size: 12px; font-weight: 600; text-decoration: none; border: 1px solid var(--border); margin-bottom: 8px; width: fit-content; }\n  .btn-download:hover { background: #e2dcd0; }\n  \n  .file-upload-area { border: 2px dashed var(--border); border-radius: 12px; padding: 24px; text-align: center; cursor: pointer; background: var(--cream); position: relative; }\n  .file-upload-area:hover { border-color: var(--navy); }\n  .file-upload-area input[type=\"file\"] { position: absolute; inset: 0; opacity: 0; cursor: pointer; }\n  .upload-icon { font-size: 24px; margin-bottom: 8px; }\n  .upload-label { font-size: 13px; font-weight: 600; color: var(--navy); }\n  .upload-size-hint { font-size: 11px; color: var(--text-muted); margin-top: 4px; font-weight: normal; }\n  .file-chosen { display: none; align-items: center; gap: 10px; padding: 10px; background: rgba(45,122,95,0.1); border-radius: 8px; margin-top: 10px; font-size: 13px; color: var(--success); font-weight: 500;}\n  .file-chosen.show { display: flex; }\n  .remove-file { margin-left: auto; color: var(--error); cursor: pointer; font-weight: bold; font-size: 14px; padding: 0 4px; }\n\n  .checkbox-field { display: flex; align-items: flex-start; gap: 12px; padding: 16px; background: var(--cream); border-radius: 10px; border: 1.5px solid var(--border); cursor: pointer; margin-top: 8px; }\n  .checkbox-field input { width: 18px; height: 18px; margin-top: 2px; }\n  .checkbox-field-text strong { display: block; font-size: 13px; font-weight: 600; }\n  .checkbox-field-text span { font-size: 12px; color: var(--text-muted); line-height: 1.4; display: block; margin-top: 4px;}\n\n  .form-nav { display: flex; justify-content: space-between; padding: 24px 40px; border-top: 1px solid var(--cream-dark); background: var(--cream); }\n  .btn { padding: 12px 28px; border-radius: 10px; font-size: 14px; font-weight: 600; cursor: pointer; border: none; }\n  .btn-primary { background: var(--navy); color: var(--white); }\n  .btn-secondary { background: var(--white); color: var(--text-muted); border: 1px solid var(--border); }\n  .btn-success { background: var(--success); color: var(--white); }\n\n  #success-screen { display: none; text-align: center; padding: 60px 40px; background: var(--white); border-radius: 16px; border: 1px solid var(--border); box-shadow: 0 4px 40px rgba(10,22,40,0.08); }\n  #success-screen.show { display: block; animation: fadeUp 0.5s ease; }\n  .success-icon { width: 72px; height: 72px; background: linear-gradient(135deg, #1a6b4a, #2d7a5f); border-radius: 50%; display: flex; align-items: center; justify-content: center; font-size: 32px; margin: 0 auto 24px; }\n  #success-screen h2 { font-family: 'Crimson Pro', serif; font-size: 28px; color: var(--navy); margin-bottom: 12px; }\n  #success-screen p { color: var(--text-muted); font-size: 15px; line-height: 1.6; max-width: 500px; margin: 0 auto 8px; }\n\n  @media (max-width: 700px) {\n    .form-grid.cols-2 { grid-template-columns: 1fr; }\n    .panel-body, .panel-header, .form-nav { padding: 20px; }\n  }\n<\/style>\n<\/head>\n<body>\n\n<header class=\"portal-header\">\n  <div class=\"header-badge\">\ud83d\udcc4<\/div>\n  <div class=\"header-text\">\n    <h1>Paper Submission Portal<\/h1>\n    <p>Springer Proceedings &#8211; NMP2026 | Networks, Markets &#038; People for transitioning settlement system<\/p>\n  <\/div>\n<\/header>\n\n<div class=\"progress-wrap\">\n  <div class=\"progress-steps\">\n    <div class=\"step-item active\" id=\"prog-1\"><div class=\"step-num\">1<\/div><div class=\"step-label\">Paper<\/div><\/div>\n    <div class=\"step-item\" id=\"prog-2\"><div class=\"step-num\">2<\/div><div class=\"step-label\">Authors<\/div><\/div>\n    <div class=\"step-item\" id=\"prog-3\"><div class=\"step-num\">3<\/div><div class=\"step-label\">Uploads<\/div><\/div>\n    <div class=\"step-item\" id=\"prog-4\"><div class=\"step-num\">4<\/div><div class=\"step-label\">Logistics<\/div><\/div>\n    <div class=\"step-item\" id=\"prog-5\"><div class=\"step-num\">5<\/div><div class=\"step-label\">Registration<\/div><\/div>\n  <\/div>\n<\/div>\n\n<div class=\"form-container\">\n\n  <div class=\"form-panel active\" id=\"step-1\">\n    <div class=\"panel-header\">\n      <div class=\"panel-step-tag\">Step 1 of 5<\/div>\n      <h2>Submission Details<\/h2>\n    <\/div>\n    <div class=\"panel-body\">\n      <div class=\"form-grid\">\n        <div class=\"field\" style=\"grid-column: 1\/-1;\">\n          <label>Submission Type <span class=\"req\">*<\/span><\/label>\n          <select id=\"f-sub-type\" required onchange=\"togglePresentationOnly(); calculateTotal();\">\n            <option value=\"\">Select Type&#8230;<\/option>\n            <option value=\"full_paper\">Full Paper (Springer Publication)<\/option>\n            <option value=\"presentation_only\">Presentation Only (No Publication)<\/option>\n            <option value=\"auditor\" style=\"color:var(--navy); font-weight:normal;\">Auditor (Attendee Only &#8211; No Paper)<\/option>\n          <\/select>\n        <\/div>\n        <div class=\"field\" id=\"title-box\" style=\"grid-column: 1\/-1;\">\n          <label>Paper Title <span class=\"req\">*<\/span><\/label>\n          <input type=\"text\" id=\"f-title\" required>\n        <\/div>\n        <div class=\"field\" id=\"paperid-box\">\n          <label>Paper ID <span class=\"req\">*<\/span><\/label>\n          <input type=\"text\" id=\"f-paperid\" placeholder=\"e.g. 142\" required onchange=\"calculateTotal()\" onkeyup=\"calculateTotal()\">\n        <\/div>\n        \n        <div class=\"field\" id=\"pages-field-box\">\n          <label>Total Pages <span class=\"req\">*<\/span><\/label>\n          <input type=\"number\" id=\"f-pages\" min=\"1\" max=\"30\" required onchange=\"calculateTotal()\" onkeyup=\"calculateTotal()\">\n          <span class=\"hint\">Note: Registration fee covers max 10 pages. Extra pages are \u20ac40\/each.<\/span>\n        <\/div>\n      <\/div>\n    <\/div>\n    <div class=\"form-nav\">\n      <div><\/div>\n      <button class=\"btn btn-primary\" onclick=\"nextStep(1)\">Continue \u2192<\/button>\n    <\/div>\n  <\/div>\n\n  <div class=\"form-panel\" id=\"step-2\">\n    <div class=\"panel-header\">\n      <div class=\"panel-step-tag\">Step 2 of 5<\/div>\n      <h2 id=\"step-2-title\">Author Details<\/h2>\n    <\/div>\n    <div class=\"panel-body\">\n      <div class=\"section-title\" id=\"step-2-subtitle\">Corresponding Author<\/div>\n      <p id=\"step-2-desc\" style=\"font-size:12px; margin-bottom:16px; color:var(--text-muted)\">The email entered must match the one in the manuscript.<\/p>\n      <div class=\"form-grid cols-2\">\n        <div class=\"field\"><label>First Name <span class=\"req\">*<\/span><\/label><input type=\"text\" id=\"f-firstname\" required><\/div>\n        <div class=\"field\"><label>Last Name <span class=\"req\">*<\/span><\/label><input type=\"text\" id=\"f-lastname\" required><\/div>\n        <div class=\"field\"><label>Email <span class=\"req\">*<\/span><\/label><input type=\"email\" id=\"f-email\" required><\/div>\n        <div class=\"field\"><label>Affiliation <span class=\"req\">*<\/span><\/label><input type=\"text\" id=\"f-affiliation\" required><\/div>\n        <div class=\"field\"><label>Country <span class=\"req\">*<\/span><\/label><input type=\"text\" id=\"f-country\" required><\/div>\n        <div class=\"field\" id=\"orcid-box\"><label>ORCID <span class=\"req\">*<\/span><\/label><input type=\"text\" id=\"f-orcid\" placeholder=\"0000-0000-0000-0000\" required><\/div>\n      <\/div>\n\n      <div id=\"coauthors-wrapper\">\n        <div class=\"section-title\" style=\"margin-top:40px;\">Other Co-Authors<\/div>\n        <p style=\"font-size:12px; margin-bottom:16px; color:var(--text-muted)\">Add the details for all other co-authors exactly as they appear in the paper.<\/p>\n        <div id=\"coauthors-container\"><\/div>\n        <button type=\"button\" class=\"btn-add-author\" onclick=\"addCoAuthor()\"><span>\uff0b<\/span> Add Co-Author<\/button>\n      <\/div>\n    <\/div>\n    <div class=\"form-nav\">\n      <button class=\"btn btn-secondary\" onclick=\"prevStep(2)\">\u2190 Back<\/button>\n      <button class=\"btn btn-primary\" onclick=\"nextStep(2)\">Continue \u2192<\/button>\n    <\/div>\n  <\/div>\n\n  <div class=\"form-panel\" id=\"step-3\">\n    <div class=\"panel-header\">\n      <div class=\"panel-step-tag\">Step 3 of 5<\/div>\n      <h2>Final Uploads &#038; Compliance<\/h2>\n    <\/div>\n    <div class=\"panel-body\">\n      <div id=\"step-3-uploads-wrapper\">\n        <div class=\"form-grid cols-2\">\n          <div class=\"field\">\n            <label>1. Source File (Word only) <span class=\"req\">*<\/span><\/label>\n            <div class=\"file-upload-area\">\n              <input type=\"file\" id=\"f-source\" accept=\".docx,.doc\" required onchange=\"showFile(this, 'c-source')\">\n              <div class=\"upload-icon\">\ud83d\udcc4<\/div>\n              <div class=\"upload-label\">Upload Word File<\/div>\n              <div class=\"upload-size-hint\">(Max 10 MB)<\/div>\n            <\/div>\n            <div class=\"file-chosen\" id=\"c-source\">\u2705 <span class=\"fname\"><\/span><span class=\"remove-file\" onclick=\"removeFile('f-source','c-source')\">\u2715<\/span><\/div>\n          <\/div>\n          <div class=\"field\">\n            <label>2. Final PDF (Camera-ready) <span class=\"req\">*<\/span><\/label>\n            <div class=\"file-upload-area\">\n              <input type=\"file\" id=\"f-pdf\" accept=\".pdf\" required onchange=\"showFile(this, 'c-pdf')\">\n              <div class=\"upload-icon\">\ud83d\udccb<\/div>\n              <div class=\"upload-label\">Upload PDF<\/div>\n              <div class=\"upload-size-hint\">(Max 10 MB)<\/div>\n            <\/div>\n            <div class=\"file-chosen\" id=\"c-pdf\">\u2705 <span class=\"fname\"><\/span><span class=\"remove-file\" onclick=\"removeFile('f-pdf','c-pdf')\">\u2715<\/span><\/div>\n          <\/div>\n        <\/div>\n\n        <div class=\"field\" style=\"margin-top:24px; padding-top:20px; border-top:1px dashed var(--border);\">\n          <label style=\"font-size:14px; color:var(--navy);\">Does your paper contain figures, images, charts, or tables? <span class=\"req\">*<\/span><\/label>\n          <select id=\"f-has-images\" required onchange=\"toggleImagesSection()\">\n            <option value=\"\">Select an option&#8230;<\/option>\n            <option value=\"yes\">Yes, it contains figures\/images\/tables<\/option>\n            <option value=\"no\">No, text only<\/option>\n          <\/select>\n        <\/div>\n\n        <div id=\"images-section\" style=\"display:none; margin-top:20px; padding:20px; background:rgba(201,168,76,0.05); border-radius:12px; border:1px solid var(--gold-light);\">\n          <div class=\"field\">\n            <label>3. Figures, Images &#038; Tables (.ZIP Folder) <span class=\"req\">*<\/span><\/label>\n            <div class=\"file-upload-area\">\n              <input type=\"file\" id=\"f-figures-zip\" accept=\".zip\" onchange=\"showFile(this,'c-zip')\">\n              <div class=\"upload-icon\">\ud83d\udddc\ufe0f<\/div>\n              <div class=\"upload-label\">Upload .ZIP File<\/div>\n              <div class=\"upload-size-hint\">(Max 15 MB)<\/div>\n            <\/div>\n            <div class=\"file-chosen\" id=\"c-zip\">\u2705 <span class=\"fname\"><\/span><span class=\"remove-file\" onclick=\"removeFile('f-figures-zip','c-zip')\">\u2715<\/span><\/div>\n          <\/div>\n          <div class=\"field\" style=\"margin-top:24px;\">\n            <label>4. Alt Text (Excel File) <span class=\"req\">*<\/span><\/label>\n            <div class=\"file-upload-area\" style=\"margin-top:8px;\">\n              <input type=\"file\" id=\"f-alttext\" accept=\".xlsx,.xls\" onchange=\"showFile(this,'c-alt')\">\n              <div class=\"upload-icon\">\ud83d\udcca<\/div>\n              <div class=\"upload-label\">Upload Excel<\/div>\n              <div class=\"upload-size-hint\">(Max 10 MB)<\/div>\n            <\/div>\n            <div class=\"file-chosen\" id=\"c-alt\">\u2705 <span class=\"fname\"><\/span><span class=\"remove-file\" onclick=\"removeFile('f-alttext','c-alt')\">\u2715<\/span><\/div>\n          <\/div>\n        <\/div>\n\n        <div class=\"field\" style=\"margin-top:32px; padding-top:20px; border-top:1px dashed var(--border);\">\n          <label>5. Third-party Permission Form (Copyright) &#8211; OPTIONAL<\/label>\n          <a href=\"https:\/\/www.nmp.unirc.it\/wp-content\/uploads\/2026\/02\/Permission-Request-Form.docx\" target=\"_blank\" class=\"btn-download\">\u2b07 Download Permission Form<\/a>\n          <div class=\"file-upload-area\" style=\"margin-top:8px;\">\n            <input type=\"file\" id=\"f-perm-copyright\" accept=\".pdf,.zip\" multiple onchange=\"showFile(this,'c-perm-copy')\">\n            <div class=\"upload-icon\">\u00a9\ufe0f<\/div>\n            <div class=\"upload-label\">Upload Permission Form(s)<\/div>\n            <div class=\"upload-size-hint\">(Max 10 MB)<\/div>\n          <\/div>\n          <div class=\"file-chosen\" id=\"c-perm-copy\">\u2705 <span class=\"fname\"><\/span><span class=\"remove-file\" onclick=\"removeFile('f-perm-copyright','c-perm-copy')\">\u2715<\/span><\/div>\n        <\/div>\n\n        <div class=\"field\" style=\"margin-top:24px;\">\n          <label>6. Release Request Form (Privacy\/Individuals) &#8211; OPTIONAL<\/label>\n          <a href=\"https:\/\/www.nmp.unirc.it\/wp-content\/uploads\/2026\/02\/Release-Request-Form.docx\" target=\"_blank\" class=\"btn-download\">\u2b07 Download Release Form<\/a>\n          <div class=\"file-upload-area\" style=\"margin-top:8px;\">\n            <input type=\"file\" id=\"f-perm-release\" accept=\".pdf,.zip\" multiple onchange=\"showFile(this,'c-perm-rel')\">\n            <div class=\"upload-icon\">\ud83d\udc64<\/div>\n            <div class=\"upload-label\">Upload Release Form(s)<\/div>\n            <div class=\"upload-size-hint\">(Max 10 MB)<\/div>\n          <\/div>\n          <div class=\"file-chosen\" id=\"c-perm-rel\">\u2705 <span class=\"fname\"><\/span><span class=\"remove-file\" onclick=\"removeFile('f-perm-release','c-perm-rel')\">\u2715<\/span><\/div>\n        <\/div>\n\n        <div class=\"section-title\">Agreements<\/div>\n        <div class=\"form-grid cols-2\">\n          <div class=\"field\">\n            <label>Springer Contributor Agreement <span class=\"req\">*<\/span><\/label>\n            <a href=\"https:\/\/www.nmp.unirc.it\/wp-content\/uploads\/2026\/02\/Springer-Contributor-Agreement.docx\" target=\"_blank\" class=\"btn-download\">\u2b07 Download Springer Agreement<\/a>\n            <div class=\"file-upload-area\" style=\"padding:16px;\">\n              <input type=\"file\" id=\"f-springer-agr\" accept=\".pdf\" required onchange=\"showFile(this,'c-spr')\">\n              <div class=\"upload-label\">Upload Signed PDF<\/div>\n              <div class=\"upload-size-hint\">(Max 10 MB)<\/div>\n            <\/div>\n            <div class=\"file-chosen\" id=\"c-spr\">\u2705 <span class=\"fname\"><\/span><span class=\"remove-file\" onclick=\"removeFile('f-springer-agr','c-spr')\">\u2715<\/span><\/div>\n          <\/div>\n          <div class=\"field\">\n            <label>Editors Agreement <span class=\"req\">*<\/span><\/label>\n            <a href=\"https:\/\/www.nmp.unirc.it\/wp-content\/uploads\/2026\/02\/NMP2026_Editors-agreement.docx\" target=\"_blank\" class=\"btn-download\">\u2b07 Download Editors Agreement<\/a>\n            <div class=\"file-upload-area\" style=\"padding:16px;\">\n              <input type=\"file\" id=\"f-auth-agr\" accept=\".pdf\" required onchange=\"showFile(this,'c-auth')\">\n              <div class=\"upload-label\">Upload Signed PDF<\/div>\n              <div class=\"upload-size-hint\">(Max 10 MB)<\/div>\n            <\/div>\n            <div class=\"file-chosen\" id=\"c-auth\">\u2705 <span class=\"fname\"><\/span><span class=\"remove-file\" onclick=\"removeFile('f-auth-agr','c-auth')\">\u2715<\/span><\/div>\n          <\/div>\n        <\/div>\n\n        <label class=\"checkbox-field\" style=\"margin-top:32px;\">\n          <input type=\"checkbox\" id=\"c-legal\" required>\n          <div class=\"checkbox-field-text\">\n            <strong>Final Declaration<\/strong>\n            <span>I confirm that the official Springer template was used and adheres to research integrity guidelines.<\/span>\n          <\/div>\n        <\/label>\n      <\/div>\n\n      <div id=\"presentation-only-msg\" style=\"display:none; text-align:center; padding:40px; background:rgba(45,122,95,0.1); border-radius:12px; color:var(--success); font-weight:500;\">\n        \u2139\ufe0f Since you selected &#8220;Presentation Only&#8221; or &#8220;Auditor&#8221;, you do not need to upload any files. You can proceed directly to the next step.\n      <\/div>\n    <\/div>\n    <div class=\"form-nav\">\n      <button class=\"btn btn-secondary\" onclick=\"prevStep(3)\">\u2190 Back<\/button>\n      <button class=\"btn btn-primary\" onclick=\"nextStep(3)\">Continue \u2192<\/button>\n    <\/div>\n  <\/div>\n\n  <div class=\"form-panel\" id=\"step-4\">\n    <div class=\"panel-header\">\n      <div class=\"panel-step-tag\">Step 4 of 5<\/div>\n      <h2>Logistics &#038; Organization<\/h2>\n    <\/div>\n    <div class=\"panel-body\">\n      <div class=\"form-grid cols-2\">\n        <div class=\"field\">\n          <label>Days of Presence<\/label>\n          <select id=\"f-days\">\n            <option value=\"not_attending\">Not physically attending (Online)<\/option>\n            <option value=\"1\">1 Day<\/option>\n            <option value=\"2\">2 Days<\/option>\n            <option value=\"3\">3 Days (Full Conference)<\/option>\n          <\/select>\n        <\/div>\n        <div class=\"field\">\n          <label>Do you need an Official Invitation Letter for VISA?<\/label>\n          <select id=\"f-visa\">\n            <option value=\"No\">No<\/option>\n            <option value=\"Yes\">Yes, please contact me<\/option>\n          <\/select>\n        <\/div>\n        <div class=\"field\" style=\"grid-column:1\/-1;\">\n          <label>Dietary Restrictions \/ Allergies<\/label>\n          <input type=\"text\" id=\"f-diet\" placeholder=\"None, Vegetarian, Gluten-Free, etc.\">\n        <\/div>\n      <\/div>\n    <\/div>\n    <div class=\"form-nav\">\n      <button class=\"btn btn-secondary\" onclick=\"prevStep(4)\">\u2190 Back<\/button>\n      <button class=\"btn btn-primary\" onclick=\"nextStep(4)\">Continue \u2192<\/button>\n    <\/div>\n  <\/div>\n\n  <div class=\"form-panel\" id=\"step-5\">\n    <div class=\"panel-header\">\n      <div class=\"panel-step-tag\">Step 5 of 5<\/div>\n      <h2>Registration &#038; Payment<\/h2>\n    <\/div>\n    <div class=\"panel-body\">\n      \n      <div id=\"vip-banner\" style=\"display:none; background:rgba(45,122,95,0.1); border:2px solid var(--success); padding:24px; border-radius:12px; text-align:center; margin-bottom:24px;\">\n        <div style=\"font-size:32px; margin-bottom:12px;\">\u2705<\/div>\n        <h3 style=\"color:var(--success); font-family:'Crimson Pro',serif; font-size:26px; margin-bottom:8px;\">Registration Fee Waived<\/h3>\n        <p style=\"color:var(--navy); font-size:15px; font-weight:500;\">Your profile is entitled to a full registration fee waiver.<\/p>\n      <\/div>\n\n      <p id=\"step-5-desc\" style=\"font-size:12px; margin-bottom:16px; color:var(--text-muted)\">The fee covers the publication\/presentation of ONE paper and the participation of ONE author. Co-authors attending the event must register as Guests.<\/p>\n      \n      <div class=\"form-grid cols-2\">\n        <div class=\"field\" id=\"category-field-box\">\n          <label>Participant Category <span class=\"req\">*<\/span><\/label>\n          <select id=\"fee-role\" onchange=\"calculateTotal()\">\n            <option value=\"\">Select Category&#8230;<\/option>\n            <option value=\"senior_reg\">Senior &#8211; Regular<\/option>\n            <option value=\"senior_red\">Senior &#8211; Reduced (Invited\/Partnership)<\/option>\n            <option value=\"early_reg\">Early Career (Under 35 \/ PhD) &#8211; Regular<\/option>\n            <option value=\"early_red\">Early Career (Under 35 \/ PhD) &#8211; Reduced<\/option>\n            <option value=\"chair_free\" style=\"color:var(--success); font-weight:bold;\">Session Chair<\/option>\n            <option value=\"committee_free\" style=\"color:var(--success); font-weight:bold;\">Scientific Committee<\/option>\n            <option value=\"award_free\" style=\"display:none;\">Award\/Waived<\/option>\n          <\/select>\n        <\/div>\n        <div class=\"field\">\n          <label>Attendance Mode <span class=\"req\">*<\/span><\/label>\n          <select id=\"fee-mode\" onchange=\"calculateTotal()\" required>\n            <option value=\"\">Select Mode&#8230;<\/option>\n            <option value=\"presence\">In Presence<\/option>\n            <option value=\"online\">Online<\/option>\n          <\/select>\n        <\/div>\n      <\/div>\n\n      <div class=\"field\" id=\"chair-session-box\" style=\"display:none; margin-top:15px; background:rgba(201,168,76,0.1); padding:15px; border-radius:8px; border-left:4px solid var(--gold);\">\n        <label style=\"color:var(--navy); font-size:14px;\">Select your Thematic Session <span class=\"req\">*<\/span><\/label>\n        <span style=\"font-size:11px; color:var(--error); margin-bottom:8px; display:block;\">\u26a0\ufe0f Only 1 free paper is allowed per session. The system will verify availability.<\/span>\n        <select id=\"f-chair-session\">\n          <option value=\"\">Select Session&#8230;<\/option>\n          <option value=\"TS01\">TS01<\/option><option value=\"TS02\">TS02<\/option><option value=\"TS03\">TS03<\/option><option value=\"TS04\">TS04<\/option><option value=\"TS05\">TS05<\/option>\n          <option value=\"TS06\">TS06<\/option><option value=\"TS07\">TS07<\/option><option value=\"TS08\">TS08<\/option><option value=\"TS09\">TS09<\/option><option value=\"TS10\">TS10<\/option>\n          <option value=\"TS11\">TS11<\/option><option value=\"TS12\">TS12<\/option><option value=\"TS13\">TS13<\/option><option value=\"TS14\">TS14<\/option><option value=\"TS15\">TS15<\/option>\n          <option value=\"TS16\">TS16<\/option><option value=\"TS17\">TS17<\/option><option value=\"TS18\">TS18<\/option><option value=\"TS19\">TS19<\/option><option value=\"TS20\">TS20<\/option>\n          <option value=\"TS21\">TS21<\/option><option value=\"TS22\">TS22<\/option><option value=\"TS23\">TS23<\/option><option value=\"TS25\">TS25<\/option><option value=\"TS26\">TS26<\/option>\n          <option value=\"TS27\">TS27<\/option><option value=\"TS28\">TS28<\/option><option value=\"TS29\">TS29<\/option><option value=\"TS30\">TS30<\/option><option value=\"TS31\">TS31<\/option>\n          <option value=\"TS32\">TS32<\/option><option value=\"TS33\">TS33<\/option><option value=\"TS34\">TS34<\/option><option value=\"TS35\">TS35<\/option><option value=\"TS36\">TS36<\/option>\n          <option value=\"TS37\">TS37<\/option><option value=\"TS45\">TS45<\/option><option value=\"TSECA1\">TSECA1<\/option><option value=\"TSECA2\">TSECA2<\/option><option value=\"TSPA1\">TSPA1<\/option>\n          <option value=\"TSPA2\">TSPA2<\/option>\n        <\/select>\n      <\/div>\n\n      <div class=\"field\" style=\"margin-top:20px;\">\n        <label>Accompanying Persons (Guests &#8211; \u20ac110\/each)<\/label>\n        <input type=\"number\" id=\"fee-guests\" value=\"0\" min=\"0\" max=\"20\" onchange=\"calculateTotal(); updateGuestNames()\" onkeyup=\"calculateTotal(); updateGuestNames()\">\n        <span class=\"hint\">Includes access to social events only. No kit\/proceedings.<\/span>\n      <\/div>\n\n      <div id=\"guest-names-container\" style=\"display:none; margin-top:16px; padding:16px; background:rgba(201,168,76,0.07); border-radius:10px; border:1px solid var(--gold-light);\">\n        <p style=\"font-size:12px; font-weight:600; color:var(--navy); margin-bottom:12px; text-transform:uppercase;\">\ud83d\udc65 Guest Names (required for name badges)<\/p>\n        <div id=\"guest-names-list\"><\/div>\n      <\/div>\n\n      <div class=\"calc-box\" style=\"margin-top:24px;\">\n        <div id=\"vip-discount-msg\" style=\"display:none; font-size:13px; color:var(--success); margin-bottom:12px; background:rgba(45,122,95,0.1); padding:8px; border-radius:6px; font-weight:500;\">\n          \u2139\ufe0f Your paper is entitled to a registration fee waiver.\n        <\/div>\n        <div style=\"font-size:12px; text-transform:uppercase; letter-spacing:1px; color:var(--text-muted)\">Total Amount to Transfer<\/div>\n        <div class=\"calc-total\">\u20ac <span id=\"display-total\">0.00<\/span><\/div>\n        <div id=\"extra-pages-text\" style=\"font-size:13px; color:var(--error); margin-bottom:12px; display:none;\"><\/div>\n        <div class=\"bank-details\" id=\"bank-instructions\" style=\"display:none;\">\n          <strong style=\"font-size:14px; color:var(--navy); display:block; margin-bottom:8px;\">Bank Transfer Instructions:<\/strong>\n          <strong>Account Name:<\/strong> ASTRI &#8211; Associazione Scientifica Territorio e Ricerca Interdisciplinare<br>\n          <strong>Address:<\/strong> Via Lupardini n. 90, 89121 Reggio Calabria (Italy)<br>\n          <strong>VAT \/ Fiscal Code:<\/strong> 92087160807<br>\n          <div style=\"margin:10px 0; padding:10px 0; border-top:1px dashed var(--border); border-bottom:1px dashed var(--border);\">\n            <strong>Bank Name:<\/strong> BPER Banca<br>\n            <strong>IBAN:<\/strong> <span style=\"font-family:monospace; font-size:14px;\">IT22 H053 8716 3000 0000 1010 942<\/span><br>\n            <strong>SWIFT\/BIC Code:<\/strong> BPMOIT22XXX\n          <\/div>\n          <strong>Reference\/Causale (Mandatory):<\/strong> <span id=\"bank-reference\" style=\"color:var(--error); font-weight:bold; background:rgba(192,57,43,0.1); padding:2px 6px; border-radius:4px;\">Registration fee NMP2026 &#8211; Paper XXX<\/span>\n        <\/div>\n      <\/div>\n\n      <div class=\"field\" id=\"payment-section\">\n        <label id=\"payment-label\">Upload Proof of Payment (Bank Receipt) <span class=\"req\">*<\/span><\/label>\n        <div class=\"file-upload-area\">\n          <input type=\"file\" id=\"f-payment\" accept=\".pdf,.jpg,.png\" required onchange=\"showFile(this,'c-pay')\">\n          <div class=\"upload-icon\">\ud83e\uddfe<\/div>\n          <div class=\"upload-label\">Upload Receipt (.pdf, .jpg)<\/div>\n          <div class=\"upload-size-hint\">(Max 10 MB)<\/div>\n        <\/div>\n        <div class=\"file-chosen\" id=\"c-pay\">\u2705 <span class=\"fname\"><\/span><span class=\"remove-file\" onclick=\"removeFile('f-payment','c-pay')\">\u2715<\/span><\/div>\n      <\/div>\n\n      <div style=\"margin-top:24px; padding:15px; background:rgba(201,168,76,0.1); border-left:4px solid var(--gold); border-radius:8px; font-size:13px; color:var(--navy);\">\n        <strong>\u26a0\ufe0f Please note:<\/strong> The final upload process may take up to 1-2 minutes depending on your connection and file sizes. Please do not close or refresh the window after clicking &#8220;Submit Paper&#8221; until you see the success message.\n      <\/div>\n    <\/div>\n    <div class=\"form-nav\">\n      <button class=\"btn btn-secondary\" onclick=\"prevStep(5)\">\u2190 Back<\/button>\n      <button type=\"button\" class=\"btn btn-success\" id=\"btn-submit\" onclick=\"submitForm()\">\u2713 Submit Paper<\/button>\n    <\/div>\n  <\/div>\n\n  <div id=\"success-screen\">\n    <div class=\"success-icon\">\u2713<\/div>\n    <h2>Submission Received!<\/h2>\n    <p>Your paper has been successfully submitted. A confirmation email will be sent shortly to <strong id=\"confirm-email\"><\/strong>.<\/p>\n    <p style=\"font-size:13px; margin-top:16px;\">For any questions contact us at <strong>nmp@unirc.it<\/strong><\/p>\n  <\/div>\n\n<\/div>\n\n<script>\nconst specialFreePapers = ['999', '167', '197', '223', '237'];\n\nlet currentStep = 1;\n\nfunction showStep(n) {\n  document.querySelectorAll('.form-panel').forEach(p => p.classList.remove('active'));\n  const panel = document.getElementById('step-' + n);\n  if (panel) panel.classList.add('active');\n  for (let i = 1; i <= 5; i++) {\n    const prog = document.getElementById('prog-' + i);\n    if (!prog) continue;\n    prog.classList.remove('active', 'done');\n    if (i < n) prog.classList.add('done');\n    else if (i === n) prog.classList.add('active');\n  }\n  if (n === 5) {\n    const paperId = document.getElementById('f-paperid').value.trim();\n    const isVIP = specialFreePapers.includes(paperId);\n    const type = document.getElementById('f-sub-type').value;\n    const catBox = document.getElementById('category-field-box');\n    const roleSelect = document.getElementById('fee-role');\n    const vipBanner = document.getElementById('vip-banner');\n    const stepDesc = document.getElementById('step-5-desc');\n    \n    if (isVIP) {\n      vipBanner.style.display = 'block';\n      catBox.style.display = 'none';\n      stepDesc.style.display = 'none';\n      roleSelect.required = false;\n      roleSelect.value = 'award_free';\n    } else if (type === 'presentation_only' || type === 'auditor') {\n      vipBanner.style.display = 'none';\n      catBox.style.display = 'none';\n      stepDesc.style.display = 'block';\n      roleSelect.required = false;\n      roleSelect.value = '';\n    } else {\n      vipBanner.style.display = 'none';\n      catBox.style.display = 'flex';\n      stepDesc.style.display = 'block';\n      roleSelect.required = true;\n      if (roleSelect.value === 'award_free') roleSelect.value = '';\n    }\n    calculateTotal();\n  }\n  window.scrollTo({ top: 0, behavior: 'smooth' });\n}\n\nfunction nextStep(n) {\n  const reqs = document.getElementById('step-'+n).querySelectorAll('[required]');\n  let valid = true;\n  reqs.forEach(el => {\n    if (el.type === 'checkbox') {\n      if (!el.checked) { el.parentElement.style.borderColor = 'var(--error)'; valid = false; }\n      else el.parentElement.style.borderColor = 'var(--border)';\n    } else if (el.type === 'file') {\n      if (!el.files || el.files.length === 0) { el.closest('.field').classList.add('has-error'); valid = false; }\n      else el.closest('.field').classList.remove('has-error');\n    } else {\n      if (!el.value) { el.parentElement.classList.add('has-error'); valid = false; }\n      else el.parentElement.classList.remove('has-error');\n    }\n  });\n  if (!valid) { \n    alert(\"\u26a0\ufe0f Please complete all required fields (highlighted in red) before continuing.\"); \n    return; \n  }\n  showStep(n + 1);\n}\n\nfunction prevStep(n) { showStep(n - 1); }\n\nfunction togglePresentationOnly() {\n  const type = document.getElementById('f-sub-type').value;\n  const wrapper = document.getElementById('step-3-uploads-wrapper');\n  const msg = document.getElementById('presentation-only-msg');\n  const pagesBox = document.getElementById('pages-field-box');\n  const pagesInput = document.getElementById('f-pages');\n  \n  const titleBox = document.getElementById('title-box');\n  const paperIdBox = document.getElementById('paperid-box');\n  const titleInput = document.getElementById('f-title');\n  const paperIdInput = document.getElementById('f-paperid');\n  \n  const orcidBox = document.getElementById('orcid-box');\n  const orcidInput = document.getElementById('f-orcid');\n  const coAuthorsWrapper = document.getElementById('coauthors-wrapper');\n\n  const step2Title = document.getElementById('step-2-title');\n  const step2Subtitle = document.getElementById('step-2-subtitle');\n  const step2Desc = document.getElementById('step-2-desc');\n\n  if (type === 'auditor') {\n    wrapper.style.display = 'none';\n    msg.style.display = 'block';\n    wrapper.querySelectorAll('[required]').forEach(el => el.required = false);\n    pagesBox.style.display = 'none';\n    pagesInput.required = false;\n    pagesInput.value = '';\n    \n    if(titleBox) titleBox.style.display = 'none';\n    if(paperIdBox) paperIdBox.style.display = 'none';\n    if(titleInput) { titleInput.required = false; titleInput.value = \"AUDITOR\"; }\n    if(paperIdInput) { paperIdInput.required = false; paperIdInput.value = \"AUDITOR-\" + Math.floor(Math.random() * 10000); }\n    \n    if(orcidBox) orcidBox.style.display = 'none';\n    if(orcidInput) { orcidInput.required = false; orcidInput.value = \"N\/A\"; }\n    if(coAuthorsWrapper) coAuthorsWrapper.style.display = 'none';\n\n    if(step2Title) step2Title.innerText = \"Attendee Details\";\n    if(step2Subtitle) step2Subtitle.innerText = \"Attendee Information\";\n    if(step2Desc) step2Desc.innerText = \"Please enter your personal details below.\";\n\n  } else if (type === 'presentation_only') {\n    wrapper.style.display = 'none';\n    msg.style.display = 'block';\n    wrapper.querySelectorAll('[required]').forEach(el => el.required = false);\n    pagesBox.style.display = 'none';\n    pagesInput.required = false;\n    pagesInput.value = '';\n    \n    if(titleBox) titleBox.style.display = 'flex';\n    if(paperIdBox) paperIdBox.style.display = 'flex';\n    if(titleInput) { titleInput.required = true; if(titleInput.value===\"AUDITOR\") titleInput.value=\"\"; }\n    if(paperIdInput) { paperIdInput.required = true; if(paperIdInput.value.includes(\"AUDITOR\")) paperIdInput.value=\"\"; }\n    \n    if(orcidBox) orcidBox.style.display = 'flex';\n    if(orcidInput) { orcidInput.required = true; if(orcidInput.value===\"N\/A\") orcidInput.value=\"\"; }\n    if(coAuthorsWrapper) coAuthorsWrapper.style.display = 'block';\n\n    if(step2Title) step2Title.innerText = \"Author Details\";\n    if(step2Subtitle) step2Subtitle.innerText = \"Corresponding Author\";\n    if(step2Desc) step2Desc.innerText = \"The email entered must match the one in the manuscript.\";\n\n  } else {\n    wrapper.style.display = 'block';\n    msg.style.display = 'none';\n    document.getElementById('f-source').required = true;\n    document.getElementById('f-pdf').required = true;\n    document.getElementById('f-springer-agr').required = true;\n    document.getElementById('f-auth-agr').required = true;\n    document.getElementById('c-legal').required = true;\n    document.getElementById('f-has-images').required = true;\n    toggleImagesSection();\n    pagesBox.style.display = 'flex';\n    pagesInput.required = true;\n    \n    if(titleBox) titleBox.style.display = 'flex';\n    if(paperIdBox) paperIdBox.style.display = 'flex';\n    if(titleInput) { titleInput.required = true; if(titleInput.value===\"AUDITOR\") titleInput.value=\"\"; }\n    if(paperIdInput) { paperIdInput.required = true; if(paperIdInput.value.includes(\"AUDITOR\")) paperIdInput.value=\"\"; }\n    \n    if(orcidBox) orcidBox.style.display = 'flex';\n    if(orcidInput) { orcidInput.required = true; if(orcidInput.value===\"N\/A\") orcidInput.value=\"\"; }\n    if(coAuthorsWrapper) coAuthorsWrapper.style.display = 'block';\n\n    if(step2Title) step2Title.innerText = \"Author Details\";\n    if(step2Subtitle) step2Subtitle.innerText = \"Corresponding Author\";\n    if(step2Desc) step2Desc.innerText = \"The email entered must match the one in the manuscript.\";\n  }\n}\n\nfunction toggleImagesSection() {\n  const answer = document.getElementById('f-has-images').value;\n  const section = document.getElementById('images-section');\n  const zipInput = document.getElementById('f-figures-zip');\n  const type = document.getElementById('f-sub-type').value;\n  if (answer === 'yes' && type !== 'presentation_only' && type !== 'auditor') {\n    section.style.display = 'block';\n    zipInput.required = true;\n  } else {\n    section.style.display = 'none';\n    zipInput.required = false;\n  }\n}\n\nlet coAuthorCount = 0;\nfunction addCoAuthor() {\n  coAuthorCount++;\n  const container = document.getElementById('coauthors-container');\n  const div = document.createElement('div');\n  div.style.cssText = 'margin-top:20px; padding-top:20px; border-top:1px dashed var(--border)';\n  div.innerHTML = `\n    <div style=\"display:flex; justify-content:space-between; align-items:center; margin-bottom:16px;\">\n      <h4 style=\"font-size:14px; color:var(--navy);\">Co-Author ${coAuthorCount}<\/h4>\n      <button type=\"button\" onclick=\"this.parentElement.parentElement.remove()\" style=\"background:none; border:none; color:var(--error); cursor:pointer; font-size:12px; font-weight:bold;\">\u2715 Remove<\/button>\n    <\/div>\n    <div class=\"form-grid cols-2\">\n      <div class=\"field\"><label>First Name<\/label><input type=\"text\" name=\"co_firstname[]\"><\/div>\n      <div class=\"field\"><label>Last Name<\/label><input type=\"text\" name=\"co_lastname[]\"><\/div>\n      <div class=\"field\"><label>Email<\/label><input type=\"email\" name=\"co_email[]\"><\/div>\n      <div class=\"field\"><label>Affiliation<\/label><input type=\"text\" name=\"co_affiliation[]\"><\/div>\n      <div class=\"field\"><label>Country<\/label><input type=\"text\" name=\"co_country[]\"><\/div>\n      <div class=\"field\"><label>ORCID<\/label><input type=\"text\" name=\"co_orcid[]\" placeholder=\"0000-0000-0000-0000\"><\/div>\n    <\/div>`;\n  container.appendChild(div);\n}\n\nlet currentGuestCount = 0;\nfunction updateGuestNames() {\n  const num = parseInt(document.getElementById('fee-guests').value) || 0;\n  const container = document.getElementById('guest-names-container');\n  const list = document.getElementById('guest-names-list');\n\n  if (num === currentGuestCount) return;\n\n  const currentFirsts = list.querySelectorAll('input[name=\"guest_firstname[]\"]');\n  const currentLasts = list.querySelectorAll('input[name=\"guest_lastname[]\"]');\n  let savedFirsts = [];\n  let savedLasts = [];\n  currentFirsts.forEach(inp => savedFirsts.push(inp.value));\n  currentLasts.forEach(inp => savedLasts.push(inp.value));\n\n  if (num <= 0) {\n    container.style.display = 'none';\n    list.innerHTML = '';\n    currentGuestCount = num;\n    return;\n  }\n\n  container.style.display = 'block';\n  list.innerHTML = '';\n\n  for (let i = 0; i < num; i++) {\n    const div = document.createElement('div');\n    div.style.cssText = 'display:grid; grid-template-columns:1fr 1fr; gap:12px; margin-bottom:12px;';\n    const valF = savedFirsts[i] || '';\n    const valL = savedLasts[i] || '';\n    div.innerHTML = `\n      <div class=\"field\">\n        <label>Guest ${i+1} - First Name <span class=\"req\">*<\/span><\/label>\n        <input type=\"text\" name=\"guest_firstname[]\" required placeholder=\"First name\" value=\"${valF}\">\n      <\/div>\n      <div class=\"field\">\n        <label>Guest ${i+1} - Last Name <span class=\"req\">*<\/span><\/label>\n        <input type=\"text\" name=\"guest_lastname[]\" required placeholder=\"Last name\" value=\"${valL}\">\n      <\/div>`;\n    list.appendChild(div);\n  }\n  currentGuestCount = num;\n}\n\nfunction showFile(input, chosenId) {\n  const c = document.getElementById(chosenId);\n  if (input.files.length > 0) {\n    let MAX_MB = 10;\n    if (input.id === 'f-figures-zip') {\n      MAX_MB = 15;\n    }\n    \n    const MAX_BYTES = MAX_MB * 1024 * 1024;\n    let totalSize = 0;\n    for(let i = 0; i < input.files.length; i++) {\n      totalSize += input.files[i].size;\n    }\n    \n    if(totalSize > MAX_BYTES) {\n      alert(\"\u26a0\ufe0f ERROR: The selected file is too large (Max \" + MAX_MB + \" MB).\\nPlease compress your file and try again.\");\n      input.value = '';\n      c.classList.remove('show');\n      c.querySelector('.fname').textContent = '';\n      return;\n    }\n\n    c.querySelector('.fname').textContent = input.files.length === 1 ? input.files[0].name : input.files.length + \" files selected\";\n    c.classList.add('show');\n  }\n}\n\nfunction removeFile(inputId, chosenId) {\n  document.getElementById(inputId).value = '';\n  const c = document.getElementById(chosenId);\n  c.classList.remove('show');\n  c.querySelector('.fname').textContent = '';\n}\n\nconst feeMatrix = {\n  'senior_reg_presence': 320, 'senior_reg_online': 240,\n  'senior_red_presence': 250, 'senior_red_online': 160,\n  'early_reg_presence': 190,  'early_reg_online': 130,\n  'early_red_presence': 140,  'early_red_online': 110,\n  'chair_free_presence': 0,   'chair_free_online': 0,\n  'committee_free_presence': 0, 'committee_free_online': 0\n};\n\nfunction calculateTotal() {\n  const role = document.getElementById('fee-role').value;\n  const mode = document.getElementById('fee-mode').value;\n  const type = document.getElementById('f-sub-type').value;\n  const paperId = document.getElementById('f-paperid').value.trim();\n  const guests = parseInt(document.getElementById('fee-guests').value) || 0;\n  const isVIP = specialFreePapers.includes(paperId);\n  const totalPages = parseInt(document.getElementById('f-pages').value) || 0;\n  let extraPages = 0;\n  \n  if (type !== 'presentation_only' && type !== 'auditor' && totalPages > 10) {\n    extraPages = totalPages - 10;\n  }\n  let extraPagesFee = extraPages * 40;\n\n  const disp = document.getElementById('display-total');\n  const bank = document.getElementById('bank-instructions');\n  const extraText = document.getElementById('extra-pages-text');\n  const paymentSection = document.getElementById('payment-section');\n  const fPayment = document.getElementById('f-payment');\n  const chairBox = document.getElementById('chair-session-box');\n  const chairSelect = document.getElementById('f-chair-session');\n  const vipMsg = document.getElementById('vip-discount-msg');\n\n  if (role === 'chair_free') {\n    chairBox.style.display = 'block';\n    chairSelect.required = true;\n  } else {\n    chairBox.style.display = 'none';\n    chairSelect.required = false;\n    chairSelect.value = '';\n  }\n\n  if ((role || type === 'presentation_only' || type === 'auditor') && mode && type) {\n    let basePrice = 0;\n    if (type === 'presentation_only' || type === 'auditor') {\n      basePrice = mode === 'presence' ? 110 : 0;\n    } else {\n      basePrice = feeMatrix[role + '_' + mode] || 0;\n    }\n    \n    if (isVIP) {\n      basePrice = 0; extraPagesFee = 0; if (vipMsg) vipMsg.style.display = 'block'; \n    } else { \n      if (vipMsg) vipMsg.style.display = 'none'; \n    }\n\n    const total = basePrice + (guests * 110) + extraPagesFee;\n    disp.textContent = total.toFixed(2);\n\n    if (total > 0) {\n      bank.style.display = 'block';\n      paymentSection.style.display = 'flex';\n      fPayment.required = true;\n    } else {\n      bank.style.display = 'none';\n      paymentSection.style.display = 'none';\n      fPayment.required = false;\n    }\n\n    if (extraPages > 0 && !isVIP) {\n      extraText.innerHTML = `Includes <strong>\u20ac${extraPagesFee}<\/strong> for ${extraPages} extra page(s) (\u20ac40\/each).`;\n      extraText.style.display = 'block';\n    } else {\n      extraText.style.display = 'none';\n    }\n\n    let pId = paperId || 'XXX';\n    if (type === 'auditor') {\n        pId = 'AUDITOR';\n    }\n    document.getElementById('bank-reference').textContent = `Registration fee NMP2026 - ${pId}`;\n  } else {\n    disp.textContent = \"0.00\";\n    bank.style.display = 'none';\n    extraText.style.display = 'none';\n    if (vipMsg) vipMsg.style.display = 'none';\n  }\n}\n\nasync function submitForm() {\n  const step5 = document.getElementById('step-5');\n  const reqs = step5.querySelectorAll('[required]');\n  let valid = true;\n  reqs.forEach(el => {\n    if (el.type === 'file') {\n      if (!el.files || el.files.length === 0) { el.closest('.field').classList.add('has-error'); valid = false; }\n      else el.closest('.field').classList.remove('has-error');\n    } else {\n      if (!el.value) { el.parentElement.classList.add('has-error'); valid = false; }\n      else el.parentElement.classList.remove('has-error');\n    }\n  });\n  if (!valid) {\n    alert(\"\u26a0\ufe0f Please complete all required fields before submitting.\"); \n    return; \n  }\n\n  const WEBHOOK_URL = \"\/?rest_route=\/nmp2026\/v1\/submit\";\n  const btn = document.getElementById('btn-submit');\n  btn.textContent = \"\u23f3 Uploading... Please wait\";\n  btn.disabled = true;\n\n  try {\n    \/\/ ---- INIZIO BLOCCO CO-AUTORI ----\n    let coAuthorsArray = [];\n    const coFirsts    = document.getElementsByName('co_firstname[]');\n    const coLasts     = document.getElementsByName('co_lastname[]');\n    const coEmails    = document.getElementsByName('co_email[]');\n    const coAffils    = document.getElementsByName('co_affiliation[]');\n    const coCountries = document.getElementsByName('co_country[]');\n    const coOrcids    = document.getElementsByName('co_orcid[]');\n\n    for (let i = 0; i < coFirsts.length; i++) {\n      if (coFirsts[i].value) {\n        coAuthorsArray.push({\n          firstName:   coFirsts[i].value,\n          lastName:    coLasts[i]     ? coLasts[i].value     : '',\n          email:       coEmails[i]    ? coEmails[i].value    : '',\n          affiliation: coAffils[i]    ? coAffils[i].value    : '',\n          country:     coCountries[i] ? coCountries[i].value : '',\n          orcid:       coOrcids[i]    ? coOrcids[i].value    : ''\n        });\n      }\n    }\n    \/\/ ---- FINE BLOCCO CO-AUTORI ----\n\n    let guestsStr = document.getElementById('fee-guests').value || '0';\n    let guestNames = [];\n    const guestFirsts = document.getElementsByName('guest_firstname[]');\n    const guestLasts = document.getElementsByName('guest_lastname[]');\n    for (let i = 0; i < guestFirsts.length; i++) {\n      if (guestFirsts[i].value) {\n        guestNames.push(guestFirsts[i].value + ' ' + (guestLasts[i] ? guestLasts[i].value : ''));\n      }\n    }\n    if (guestNames.length > 0) {\n      guestsStr += \" (\" + guestNames.join(', ') + \")\";\n    }\n\n    const type = document.getElementById('f-sub-type').value;\n    let finalTitle = document.getElementById('f-title').value;\n    const paperIdForCheck = document.getElementById('f-paperid').value.trim();\n    const roleSelectEl = document.getElementById('fee-role');\n    let finalRole = \"\";\n    \n    if (type === 'auditor') {\n      finalTitle = \"[AUDITOR] - No Paper\";\n      finalRole = \"Auditor \/ Attendee Only\";\n    } else if (specialFreePapers.includes(paperIdForCheck)) {\n      finalRole = \"Waived \/ Special Guest + [FEE WAIVED]\";\n    } else if (type === 'presentation_only') {\n      finalTitle = \"[PRESENTATION ONLY] \" + finalTitle;\n      finalRole = \"Presentation Only\";\n    } else {\n      finalRole = roleSelectEl.options[roleSelectEl.selectedIndex]?.text || \"Unknown\";\n    }\n\n    const payload = {\n      paperId: document.getElementById('f-paperid').value,\n      title: finalTitle,\n      firstName: document.getElementById('f-firstname').value,\n      lastName: document.getElementById('f-lastname').value,\n      email: document.getElementById('f-email').value,\n      affiliation: document.getElementById('f-affiliation').value,\n      country: document.getElementById('f-country').value,\n      orcid: document.getElementById('f-orcid').value,\n      totalPages: document.getElementById('f-pages').value || '0',\n      hasImages: document.getElementById('f-has-images').value || 'no',\n      coAuthors: coAuthorsArray,\n      daysPresence: document.getElementById('f-days').value,\n      visa: document.getElementById('f-visa').value,\n      diet: document.getElementById('f-diet').value,\n      feeCategory: finalRole,\n      chairSession: document.getElementById('f-chair-session').value,\n      feeMode: document.getElementById('fee-mode').value,\n      guests: guestsStr, \n      totalAmount: document.getElementById('display-total').innerText,\n      files: []\n    };\n\n    const getBase64 = (file) => new Promise((resolve, reject) => {\n      const reader = new FileReader();\n      reader.readAsDataURL(file);\n      reader.onload = () => resolve({ name: file.name, content: reader.result.split(',')[1] });\n      reader.onerror = error => reject(error);\n    });\n\n    const fileMappings = {\n      'f-source': 'Word-Source',\n      'f-pdf': 'Final-PDF',\n      'f-figures-zip': 'Figures-ZIP',\n      'f-perm-copyright': 'Copyright-Permission',\n      'f-perm-release': 'Release-Permission',\n      'f-springer-agr': 'Springer-Agreement',\n      'f-auth-agr': 'Editors-Agreement',\n      'f-payment': 'Payment-Receipt'\n    };\n\n    for (let id in fileMappings) {\n      const input = document.getElementById(id);\n      if (input && input.files && input.files.length > 0) {\n        for (let i = 0; i < input.files.length; i++) {\n          const fileData = await getBase64(input.files[i]);\n          const ext = input.files[i].name.split('.').pop();\n          const suffix = input.files.length > 1 ? `_part${i+1}` : '';\n          fileData.customName = fileMappings[id] + suffix + \".\" + ext;\n          payload.files.push(fileData);\n        }\n      }\n    }\n\n    const response = await fetch(WEBHOOK_URL, {\n      method: \"POST\",\n      headers: { \"Content-Type\": \"application\/json\" },\n      body: JSON.stringify(payload)\n    });\n\n    let responseData;\n    try { responseData = await response.json(); }\n    catch(e) { throw new Error(\"Invalid response from server.\"); }\n\n    if (responseData.success === false) {\n      alert(\"\u274c Submission failed. Please try again or contact nmp@unirc.it\");\n      btn.textContent = \"\u2713 Submit Paper\";\n      btn.disabled = false;\n      return;\n    }\n\n    if (responseData.success === true) {\n      document.querySelectorAll('.form-panel').forEach(p => p.style.display = 'none');\n      document.querySelector('.progress-wrap').style.display = 'none';\n      document.getElementById('confirm-email').textContent = payload.email;\n      document.getElementById('success-screen').classList.add('show');\n      window.scrollTo({ top: 0, behavior: 'smooth' });\n    } else {\n      alert(\"\u274c Unexpected error. Please try again.\");\n      btn.textContent = \"\u2713 Submit Paper\";\n      btn.disabled = false;\n    }\n\n  } catch (error) {\n    console.error(error);\n    alert(\"\u274c An error occurred during upload. Please check your connection and try again.\");\n    btn.textContent = \"\u2713 Submit Paper\";\n    btn.disabled = false;\n  }\n}\n<\/script>\n<\/body>\n<\/html>\n\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Paper Submission Portal \ud83d\udcc4 Paper Submission Portal Springer Proceedings &#8211; NMP2026 | Networks, Markets &#038; People for transitioning settlement system 1 Paper 2 Authors 3 Uploads 4 Logistics 5 Registration Step 1 of 5 Submission Details Submission Type * Select Type&#8230;Full Paper (Springer Publication)Presentation Only (No Publication)Auditor (Attendee Only &#8211; No Paper) Paper Title * [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-2453","page","type-page","status-publish","hentry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.6 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>- NMP2026<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.nmp.unirc.it\/?page_id=2453\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"- NMP2026\" \/>\n<meta property=\"og:description\" content=\"Paper Submission Portal \ud83d\udcc4 Paper Submission Portal Springer Proceedings &#8211; NMP2026 | Networks, Markets &#038; People for transitioning settlement system 1 Paper 2 Authors 3 Uploads 4 Logistics 5 Registration Step 1 of 5 Submission Details Submission Type * Select Type&#8230;Full Paper (Springer Publication)Presentation Only (No Publication)Auditor (Attendee Only &#8211; No Paper) Paper Title * [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.nmp.unirc.it\/?page_id=2453\" \/>\n<meta property=\"og:site_name\" content=\"NMP2026\" \/>\n<meta property=\"article:modified_time\" content=\"2026-05-17T11:28:46+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"3 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.nmp.unirc.it\\\/?page_id=2453\",\"url\":\"https:\\\/\\\/www.nmp.unirc.it\\\/?page_id=2453\",\"name\":\"- NMP2026\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.nmp.unirc.it\\\/#website\"},\"datePublished\":\"2026-02-25T19:07:11+00:00\",\"dateModified\":\"2026-05-17T11:28:46+00:00\",\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.nmp.unirc.it\\\/?page_id=2453\"]}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.nmp.unirc.it\\\/#website\",\"url\":\"https:\\\/\\\/www.nmp.unirc.it\\\/\",\"name\":\"NMP2026\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.nmp.unirc.it\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.nmp.unirc.it\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.nmp.unirc.it\\\/#organization\",\"name\":\"NMP2026\",\"url\":\"https:\\\/\\\/www.nmp.unirc.it\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.nmp.unirc.it\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/www.nmp.unirc.it\\\/wp-content\\\/uploads\\\/2023\\\/10\\\/cropped-cropped-Immagine1-removebg-preview.png\",\"contentUrl\":\"https:\\\/\\\/www.nmp.unirc.it\\\/wp-content\\\/uploads\\\/2023\\\/10\\\/cropped-cropped-Immagine1-removebg-preview.png\",\"width\":570,\"height\":438,\"caption\":\"NMP2026\"},\"image\":{\"@id\":\"https:\\\/\\\/www.nmp.unirc.it\\\/#\\\/schema\\\/logo\\\/image\\\/\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"- NMP2026","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.nmp.unirc.it\/?page_id=2453","og_locale":"en_US","og_type":"article","og_title":"- NMP2026","og_description":"Paper Submission Portal \ud83d\udcc4 Paper Submission Portal Springer Proceedings &#8211; NMP2026 | Networks, Markets &#038; People for transitioning settlement system 1 Paper 2 Authors 3 Uploads 4 Logistics 5 Registration Step 1 of 5 Submission Details Submission Type * Select Type&#8230;Full Paper (Springer Publication)Presentation Only (No Publication)Auditor (Attendee Only &#8211; No Paper) Paper Title * [&hellip;]","og_url":"https:\/\/www.nmp.unirc.it\/?page_id=2453","og_site_name":"NMP2026","article_modified_time":"2026-05-17T11:28:46+00:00","twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.nmp.unirc.it\/?page_id=2453","url":"https:\/\/www.nmp.unirc.it\/?page_id=2453","name":"- NMP2026","isPartOf":{"@id":"https:\/\/www.nmp.unirc.it\/#website"},"datePublished":"2026-02-25T19:07:11+00:00","dateModified":"2026-05-17T11:28:46+00:00","inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.nmp.unirc.it\/?page_id=2453"]}]},{"@type":"WebSite","@id":"https:\/\/www.nmp.unirc.it\/#website","url":"https:\/\/www.nmp.unirc.it\/","name":"NMP2026","description":"","publisher":{"@id":"https:\/\/www.nmp.unirc.it\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.nmp.unirc.it\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.nmp.unirc.it\/#organization","name":"NMP2026","url":"https:\/\/www.nmp.unirc.it\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.nmp.unirc.it\/#\/schema\/logo\/image\/","url":"https:\/\/www.nmp.unirc.it\/wp-content\/uploads\/2023\/10\/cropped-cropped-Immagine1-removebg-preview.png","contentUrl":"https:\/\/www.nmp.unirc.it\/wp-content\/uploads\/2023\/10\/cropped-cropped-Immagine1-removebg-preview.png","width":570,"height":438,"caption":"NMP2026"},"image":{"@id":"https:\/\/www.nmp.unirc.it\/#\/schema\/logo\/image\/"}}]}},"_links":{"self":[{"href":"https:\/\/www.nmp.unirc.it\/index.php?rest_route=\/wp\/v2\/pages\/2453","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.nmp.unirc.it\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.nmp.unirc.it\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.nmp.unirc.it\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.nmp.unirc.it\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=2453"}],"version-history":[{"count":5,"href":"https:\/\/www.nmp.unirc.it\/index.php?rest_route=\/wp\/v2\/pages\/2453\/revisions"}],"predecessor-version":[{"id":2815,"href":"https:\/\/www.nmp.unirc.it\/index.php?rest_route=\/wp\/v2\/pages\/2453\/revisions\/2815"}],"wp:attachment":[{"href":"https:\/\/www.nmp.unirc.it\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=2453"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}