HEYTHISISFLAGe7cd3feb5d894dcb;{"id":1655,"date":"2026-09-21T13:15:36","date_gmt":"2026-09-21T06:15:36","guid":{"rendered":"https:\/\/senta.its.ac.id\/conf\/senta\/?page_id=1655"},"modified":"2026-09-30T11:00:36","modified_gmt":"2026-09-30T04:00:36","slug":"submission-page","status":"publish","type":"page","link":"https:\/\/senta.its.ac.id\/conf\/senta\/submission-page\/","title":{"rendered":"Register Page"},"content":{"rendered":"\n<link href=\"https:\/\/fonts.googleapis.com\/css2?family=Poppins:wght@400;500;600;700;800&amp;display=swap\" rel=\"stylesheet\">\n\n<style>\n#senta-registration {\n  --navy:#0b203b;\n  --blue:#005a96;\n  --light-blue:#e2f3ff;\n  --yellow:#ffb638;\n  --muted:#536b85;\n  --border:#dfe8f1;\n  --surface:#f7faff;\n  width:100%;\n  max-width:1060px;\n  margin:0 auto;\n  padding:44px 22px;\n  color:var(--navy);\n  font-family:\"Poppins\",sans-serif;\n  font-size:15px;\n  line-height:1.75;\n  text-align:left;\n  color-scheme:light;\n}\n#senta-registration,\n#senta-registration * { box-sizing:border-box; }\n#senta-registration [hidden] { display:none !important; }\n#senta-registration h2,\n#senta-registration h3,\n#senta-registration p { margin:0; font-family:inherit; }\n#senta-registration a { color:var(--blue); text-underline-offset:4px; }\n\n#senta-registration .sr-header { display:flex; justify-content:space-between; align-items:center; gap:28px; padding-bottom:30px; border-bottom:1px solid var(--border); }\n#senta-registration .sr-header h2 { color:var(--navy); font-size:clamp(27px,4vw,40px); font-weight:700; line-height:1.25; letter-spacing:-1.2px; }\n#senta-registration .sr-intro { max-width:610px; margin-top:14px; color:var(--muted); }\n#senta-registration .sr-date { flex-shrink:0; padding:17px 23px; border:1px solid var(--border); border-radius:13px; background:var(--surface); text-align:center; }\n#senta-registration .sr-date strong { display:block; color:var(--blue); font-size:14px; font-weight:700; }\n#senta-registration .sr-date span { color:var(--muted); font-size:12px; }\n\n#senta-registration .sr-steps { display:grid; grid-template-columns:repeat(3,1fr); gap:15px; margin:25px 0 30px; padding:0; list-style:none; }\n#senta-registration .sr-steps li { display:flex; align-items:center; gap:10px; color:var(--muted); font-size:12px; font-weight:500; }\n#senta-registration .sr-step-number { display:grid; place-items:center; flex:0 0 30px; height:30px; border-radius:9px; background:var(--light-blue); color:var(--blue); font-size:11px; font-weight:700; }\n\n#senta-registration .sr-payment-grid { display:grid; grid-template-columns:1fr 1fr; gap:20px; margin-bottom:28px; }\n#senta-registration .sr-card { min-width:0; padding:27px; border:1px solid var(--border); border-radius:18px; background:#fff; box-shadow:0 8px 28px rgba(11,32,59,.035); transition:transform 220ms ease,box-shadow 220ms ease; }\n#senta-registration .sr-card:hover { transform:translateY(-3px); box-shadow:0 12px 32px rgba(11,32,59,.07); }\n#senta-registration .sr-label { display:inline-block; margin-bottom:15px; padding:5px 10px; border-radius:6px; background:var(--light-blue); color:var(--blue); font-size:10px; font-weight:700; letter-spacing:1px; text-transform:uppercase; }\n#senta-registration .sr-card h3 { margin-bottom:12px; color:var(--navy); font-size:19px; font-weight:600; line-height:1.4; }\n#senta-registration .sr-card p { color:var(--muted); font-size:13px; }\n\n#senta-registration .sr-bank-details { display:grid; gap:8px; margin:19px 0; }\n#senta-registration .sr-bank-details div { display:flex; flex-wrap:wrap; justify-content:space-between; gap:6px 15px; font-size:13px; }\n#senta-registration .sr-bank-details dt { color:var(--muted); }\n#senta-registration .sr-bank-details dd { margin:0; color:var(--navy); font-weight:600; }\n#senta-registration .sr-account { padding:16px; border:1px solid #d6e7f6; border-radius:12px; background:var(--surface); }\n#senta-registration .sr-account-label { display:block; margin-bottom:8px; color:var(--muted); font-size:11px; font-weight:500; }\n#senta-registration .sr-account-row { display:flex; align-items:center; justify-content:space-between; flex-wrap:wrap; gap:12px; }\n#senta-registration .sr-account-number { color:var(--blue); font-size:clamp(17px,2.3vw,22px); font-weight:700; letter-spacing:.4px; overflow-wrap:anywhere; }\n\n#senta-registration button { font-family:inherit; cursor:pointer; text-transform:none; }\n#senta-registration .sr-copy { display:inline-flex; align-items:center; gap:7px; min-height:38px; padding:8px 12px; border:1px solid #caddeb; border-radius:8px; background:#fff; color:var(--blue); font-size:12px; font-weight:600; transition:background 180ms ease,transform 180ms ease; }\n#senta-registration .sr-copy:hover { background:var(--light-blue); transform:translateY(-1px); }\n#senta-registration .sr-copy svg { width:15px; height:15px; }\n#senta-registration .sr-copy-status { display:block; margin-top:6px; color:var(--blue); font-size:11px; }\n#senta-registration .sr-card .sr-payment-note { margin-top:15px; font-size:12px; }\n#senta-registration .sr-contact { display:inline-flex; align-items:center; gap:8px; margin:20px 0; padding:10px 15px; border:1px solid #d6e7f6; border-radius:9px; background:var(--surface); font-size:13px; font-weight:600; text-decoration:none; transition:background 180ms ease; }\n#senta-registration .sr-contact:hover { background:var(--light-blue); }\n\n#senta-registration .sr-form-container { padding:32px; border:1px solid var(--border); border-radius:18px; background:#fff; box-shadow:0 8px 32px rgba(11,32,59,.035); }\n#senta-registration .sr-form-heading { margin-bottom:28px; }\n#senta-registration .sr-form-heading h3 { color:var(--navy); font-size:24px; font-weight:700; }\n#senta-registration .sr-form-heading p { margin-top:6px; color:var(--muted); font-size:13px; }\n#senta-registration .sr-section-title { display:flex; align-items:center; gap:11px; margin:0 0 22px; color:var(--navy); font-size:17px; font-weight:600; }\n#senta-registration .sr-section-title span { display:grid; place-items:center; width:29px; height:29px; border-radius:6px; background:var(--yellow); color:var(--navy); font-size:11px; font-weight:700; }\n#senta-registration .sr-fields { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:22px; }\n#senta-registration .sr-field { min-width:0; }\n#senta-registration .sr-full { grid-column:1 \/ -1; }\n#senta-registration .sr-field label { display:block; margin-bottom:8px; color:var(--navy); font-size:13px; font-weight:600; }\n#senta-registration .sr-required { color:#bb253a; }\n\n#senta-registration input:not([type=\"hidden\"]),\n#senta-registration select {\n  display:block;\n  width:100%;\n  max-width:100%;\n  min-height:51px;\n  margin:0;\n  padding:12px 14px;\n  border:1px solid #c8d7e5 !important;\n  border-radius:9px;\n  outline:none;\n  background:#fbfdff !important;\n  color:var(--navy) !important;\n  box-shadow:none;\n  font-family:inherit;\n  font-size:14px;\n  font-weight:400;\n  line-height:1.5;\n  transition:border-color 180ms ease,box-shadow 180ms ease;\n}\n#senta-registration select { appearance:auto; cursor:pointer; }\n#senta-registration input::placeholder { color:#677d93; opacity:1; }\n#senta-registration input:focus,\n#senta-registration select:focus { border-color:var(--blue) !important; box-shadow:0 0 0 3px rgba(0,90,150,.11); background:#fff !important; }\n#senta-registration button:focus-visible,\n#senta-registration a:focus-visible { outline:3px solid var(--blue); outline-offset:4px; }\n#senta-registration .sr-help { display:block; margin-top:7px; color:var(--muted); font-size:11px; line-height:1.7; }\n#senta-registration .sr-divider { height:1px; margin:32px 0; border:0; background:var(--border); }\n\n#senta-registration .sr-amount-box { display:flex; align-items:stretch; overflow:hidden; border:1px solid #c8d7e5; border-radius:9px; background:#fbfdff; }\n#senta-registration .sr-amount-box:focus-within { border-color:var(--blue); box-shadow:0 0 0 3px rgba(0,90,150,.11); }\n#senta-registration .sr-currency-prefix { display:grid; place-items:center; min-width:64px; border-right:1px solid var(--border); background:#eef5fb; color:var(--blue); font-size:13px; font-weight:600; }\n#senta-registration .sr-amount-box input { min-width:0; border:0 !important; border-radius:0; box-shadow:none; }\n\n#senta-registration .sr-upload { padding:21px; border:1px dashed #7da7ca; border-radius:12px; background:#f5faff; }\n#senta-registration .sr-upload-title { color:var(--navy); font-size:14px; font-weight:600; }\n#senta-registration .sr-upload p { margin:5px 0 15px; color:var(--muted); font-size:12px; }\n#senta-registration input[type=\"file\"] { height:auto; min-height:48px; padding:8px; background:#fff !important; font-size:12px; cursor:pointer; }\n#senta-registration input[type=\"file\"]::file-selector-button { margin-right:12px; padding:9px 12px; border:0; border-radius:6px; background:var(--light-blue); color:var(--blue); font-family:inherit; font-size:12px; font-weight:600; cursor:pointer; }\n\n#senta-registration .sr-submit {\n  display:inline-flex;\n  align-items:center;\n  justify-content:center;\n  gap:14px;\n  min-height:53px;\n  margin-top:23px;\n  padding:15px 27px;\n  border:0;\n  border-radius:10px;\n  background-color:var(--blue);\n  background-image:linear-gradient(110deg,transparent 25%,rgba(255,255,255,.22) 50%,transparent 75%);\n  background-size:220% 100%;\n  background-position:150% 0;\n  color:#fff;\n  font-size:14px;\n  font-weight:600;\n  box-shadow:0 5px 14px rgba(0,90,150,.13);\n  transition:transform 220ms ease,box-shadow 220ms ease,background-position 550ms ease;\n}\n#senta-registration .sr-submit:hover { transform:translateY(-2px); background-position:-50% 0; box-shadow:0 9px 20px rgba(0,90,150,.2); }\n#senta-registration .sr-submit svg { width:18px; height:18px; }\n#senta-registration .sr-submit-note { max-width:680px; margin-top:15px; color:var(--muted); font-size:11px; }\n#senta-registration .sr-submit-status { margin-top:12px; color:var(--blue); font-size:12px; }\n#senta-registration .sr-footer { margin-top:23px; color:var(--muted); font-size:11px; text-align:center; }\n#senta-registration .sr-enter { animation:srFadeIn 650ms ease both; }\n#senta-registration .sr-payment-grid { animation-delay:80ms; }\n#senta-registration .sr-form-container { animation-delay:160ms; }\n\n@keyframes srFadeIn {\n  from { opacity:0; }\n  to { opacity:1; }\n}\n\n@media (max-width:720px) {\n  #senta-registration { padding:28px 12px; }\n  #senta-registration .sr-header { flex-direction:column; align-items:flex-start; gap:18px; }\n  #senta-registration .sr-date { text-align:left; }\n  #senta-registration .sr-payment-grid,\n  #senta-registration .sr-fields { grid-template-columns:1fr; }\n  #senta-registration .sr-card,\n  #senta-registration .sr-form-container { padding:22px; }\n  #senta-registration .sr-steps { gap:10px; }\n  #senta-registration .sr-steps li { flex-direction:column; align-items:flex-start; font-size:11px; }\n  #senta-registration input:not([type=\"hidden\"]),\n  #senta-registration select { font-size:16px; }\n  #senta-registration .sr-submit { width:100%; }\n}\n\n@media (prefers-reduced-motion:reduce) {\n  #senta-registration *,\n  #senta-registration *::before,\n  #senta-registration *::after {\n    animation:none !important;\n    transition:none !important;\n    transform:none !important;\n  }\n}\n<\/style>\n\n<section id=\"senta-registration\" aria-labelledby=\"sr-title\">\n  <header class=\"sr-header sr-enter\">\n    <div>\n      <h2 id=\"sr-title\">Registration &amp; Payment<\/h2>\n      <p class=\"sr-intro\">\n        Join the 11th International Conference on Marine Technology.\n        Complete your payment, then submit your registration details\n        and payment receipt below.\n      <\/p>\n    <\/div>\n    <div class=\"sr-date\">\n      <strong>29 \u2013 30 October 2026<\/strong>\n      <span>Surabaya, Indonesia<\/span>\n    <\/div>\n  <\/header>\n\n  <ol class=\"sr-steps\" aria-label=\"Registration process\">\n    <li><span class=\"sr-step-number\">01<\/span>Complete payment<\/li>\n    <li><span class=\"sr-step-number\">02<\/span>Submit registration<\/li>\n    <li><span class=\"sr-step-number\">03<\/span>Await verification<\/li>\n  <\/ol>\n\n  <div class=\"sr-payment-grid sr-enter\">\n    <article class=\"sr-card\">\n      <span class=\"sr-label\">Domestic Payment<\/span>\n      <h3>Registration Fee Payment<\/h3>\n      <p>\n        Please complete your registration fee payment using\n        the following Virtual Account.\n      <\/p>\n\n      <dl class=\"sr-bank-details\">\n        <div>\n          <dt>Bank<\/dt>\n          <dd>BNI (Bank Negara Indonesia)<\/dd>\n        <\/div>\n        <div>\n          <dt>Account Name<\/dt>\n          <dd>SENTA ITS<\/dd>\n        <\/div>\n      <\/dl>\n\n      <div class=\"sr-account\">\n        <span class=\"sr-account-label\">Virtual Account Number<\/span>\n        <div class=\"sr-account-row\">\n          <span class=\"sr-account-number\">8257715060550003<\/span>\n          <button type=\"button\" class=\"sr-copy\" id=\"sr-copy\" aria-label=\"Copy Virtual Account Number\">\n            <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" aria-hidden=\"true\">\n              <rect x=\"8\" y=\"8\" width=\"12\" height=\"12\" rx=\"2\"><\/rect>\n              <path d=\"M16 8V5a2 2 0 0 0-2-2H5a2 2 0 0 0-2 2v9a2 2 0 0 0 2 2h3\"><\/path>\n            <\/svg>\n            <span>Copy<\/span>\n          <\/button>\n        <\/div>\n        <span id=\"sr-copy-status\" class=\"sr-copy-status\" role=\"status\" aria-live=\"polite\"><\/span>\n      <\/div>\n\n      <p class=\"sr-payment-note\">\n        After completing the transaction, upload your payment receipt\n        through the registration form below.\n      <\/p>\n    <\/article>\n\n    <article class=\"sr-card\">\n      <span class=\"sr-label\">International Payment<\/span>\n      <h3>International Participants<\/h3>\n      <p>\n        International participants may pay via international bank transfer\n        (SWIFT transfer). Please contact the organizing committee to obtain\n        the bank account details and payment instructions.\n      <\/p>\n\n      <a class=\"sr-contact\" href=\"mailto:senta@its.ac.id\">\n        senta@its.ac.id <span aria-hidden=\"true\">\u2197<\/span>\n      <\/a>\n\n      <p>\n        Once the transfer is complete, submit your payment receipt\n        through the registration form below.\n      <\/p>\n    <\/article>\n  <\/div>\n\n  <div class=\"sr-form-container sr-enter\">\n    <div class=\"sr-form-heading\">\n      <h3>Registration Form<\/h3>\n      <p>\n        Please complete all required fields marked\n        <span class=\"sr-required\">*<\/span>.\n      <\/p>\n    <\/div>\n\n    <p id=\"sr-loading\" class=\"sr-help\" role=\"status\">\n      The form is loading. If it remains unavailable, please refresh\n      this page or contact senta@its.ac.id.\n    <\/p>\n\n    <form id=\"sr-form\" action=\"https:\/\/smartforms.dev\/submit\/6abc860fc184545ccc23145f\" method=\"POST\" enctype=\"multipart\/form-data\">\n      <h3 class=\"sr-section-title\">\n        <span aria-hidden=\"true\">01<\/span>\n        Participant Information\n      <\/h3>\n\n      <div class=\"sr-fields\">\n        <div class=\"sr-field\">\n          <label for=\"sr-name\">Full Name <span class=\"sr-required\">*<\/span><\/label>\n          <input id=\"sr-name\" name=\"name\" type=\"text\" placeholder=\"Enter your full name\" autocomplete=\"name\" maxlength=\"150\" required>\n        <\/div>\n\n        <div class=\"sr-field\">\n          <label for=\"sr-affiliation\">Affiliation <span class=\"sr-required\">*<\/span><\/label>\n          <input id=\"sr-affiliation\" name=\"Affiliation\" type=\"text\" placeholder=\"University, institution, or company\" autocomplete=\"organization\" maxlength=\"200\" required>\n        <\/div>\n\n        <div class=\"sr-field\">\n          <label for=\"sr-country\">Country <span class=\"sr-required\">*<\/span><\/label>\n          <input id=\"sr-country\" name=\"Country\" type=\"text\" placeholder=\"Enter your country\" autocomplete=\"country-name\" maxlength=\"100\" required>\n        <\/div>\n\n        <div class=\"sr-field\">\n          <label for=\"sr-email\">Email Address <span class=\"sr-required\">*<\/span><\/label>\n          <input id=\"sr-email\" name=\"email\" type=\"email\" placeholder=\"name@example.com\" autocomplete=\"email\" maxlength=\"254\" required>\n        <\/div>\n\n        <div class=\"sr-field sr-full\">\n          <label for=\"sr-tel\">Phone Number \/ WhatsApp<\/label>\n          <input id=\"sr-tel\" name=\"tel\" type=\"tel\" placeholder=\"e.g. +62 812 3456 7890\" autocomplete=\"tel\" maxlength=\"30\" aria-describedby=\"sr-tel-help\">\n          <small class=\"sr-help\" id=\"sr-tel-help\">Include your country code. This field is optional.<\/small>\n        <\/div>\n\n        <div class=\"sr-field\">\n          <label for=\"sr-category\">Registration Category <span class=\"sr-required\">*<\/span><\/label>\n          <select id=\"sr-category\" name=\"Registration Category\" required>\n            <option value=\"\" selected>Select your category<\/option>\n            <option value=\"Author\">Author<\/option>\n            <option value=\"Presenter\">Presenter<\/option>\n            <option value=\"Participant\">Participant<\/option>\n          <\/select>\n        <\/div>\n\n        <div class=\"sr-field\" id=\"sr-paper-field\">\n          <label for=\"sr-paper\">\n            Paper ID <span id=\"sr-paper-star\" class=\"sr-required\" hidden>*<\/span>\n          <\/label>\n          <input id=\"sr-paper\" name=\"Paper ID\" type=\"text\" inputmode=\"numeric\" pattern=\"[0-9]+\" maxlength=\"20\" placeholder=\"Enter your numeric Paper ID\" aria-describedby=\"sr-paper-help\">\n          <small class=\"sr-help\" id=\"sr-paper-help\">\n            Required for Authors and Presenters. Numbers only.\n            Participants may leave this blank.\n          <\/small>\n        <\/div>\n      <\/div>\n\n      <hr class=\"sr-divider\">\n\n      <h3 class=\"sr-section-title\">\n        <span aria-hidden=\"true\">02<\/span>\n        Payment Information\n      <\/h3>\n\n      <div class=\"sr-fields\">\n        <div class=\"sr-field\">\n          <label for=\"sr-payment-date\">Payment Date <span class=\"sr-required\">*<\/span><\/label>\n          <input id=\"sr-payment-date\" name=\"Payment Date\" type=\"date\" required>\n        <\/div>\n\n        <div class=\"sr-field\">\n          <label for=\"sr-currency\">Currency <span class=\"sr-required\">*<\/span><\/label>\n          <select id=\"sr-currency\" name=\"Currency\" required>\n            <option value=\"\" selected>Select currency<\/option>\n            <option value=\"IDR\">IDR \u2014 Indonesian Rupiah<\/option>\n            <option value=\"USD\">USD \u2014 US Dollar<\/option>\n          <\/select>\n        <\/div>\n\n        <div class=\"sr-field sr-full\">\n          <label for=\"sr-amount\">Amount Paid <span class=\"sr-required\">*<\/span><\/label>\n\n          <div class=\"sr-amount-box\">\n            <span class=\"sr-currency-prefix\" id=\"sr-currency-prefix\" aria-hidden=\"true\">\u2014<\/span>\n            <input id=\"sr-amount\" name=\"Amount Entered\" type=\"text\" inputmode=\"numeric\" maxlength=\"20\" autocomplete=\"off\" spellcheck=\"false\" placeholder=\"Enter the amount paid\" aria-describedby=\"sr-amount-help\" required>\n          <\/div>\n\n          <input id=\"sr-amount-summary\" name=\"Amount Paid\" type=\"hidden\">\n          <input id=\"sr-amount-raw\" name=\"Amount Paid (numeric)\" type=\"hidden\">\n\n          <small class=\"sr-help\" id=\"sr-amount-help\" aria-live=\"polite\">\n            Select IDR or USD, then enter the amount shown on your receipt.\n          <\/small>\n        <\/div>\n\n        <div class=\"sr-field sr-full\">\n          <label for=\"sr-proof\">Proof of Payment <span class=\"sr-required\">*<\/span><\/label>\n\n          <div class=\"sr-upload\">\n            <div class=\"sr-upload-title\">Upload your payment receipt<\/div>\n            <p>Make sure the payment date and amount are clearly visible.<\/p>\n\n            <input id=\"sr-proof\" name=\"attachment\" type=\"file\" accept=\".pdf,.jpg,.jpeg,.png,application\/pdf,image\/jpeg,image\/png\" aria-describedby=\"sr-file-help\" required>\n\n            <p id=\"sr-file-status\" class=\"sr-help\" role=\"status\" aria-live=\"polite\"><\/p>\n\n            <img id=\"sr-proof-preview\" hidden alt=\"Selected payment receipt\" style=\"max-width:100%;max-height:260px;object-fit:contain;margin-top:12px;\">\n\n            <input id=\"sr-file-name\" type=\"hidden\" name=\"Receipt Filename\">\n            <input id=\"sr-file-size\" type=\"hidden\" name=\"Receipt Size (bytes)\">\n\n            <small class=\"sr-help\" id=\"sr-file-help\">\n              PDF, JPG, or PNG \u00b7 Maximum file size: 5 MB\n            <\/small>\n          <\/div>\n        <\/div>\n      <\/div>\n\n      <button class=\"sr-submit\" id=\"sr-submit\" type=\"submit\">\n        Submit Registration\n        <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\">\n          <path d=\"M5 12h14M13 6l6 6-6 6\"><\/path>\n        <\/svg>\n      <\/button>\n\n      <p class=\"sr-submit-note\">\n        Your registration details and receipt will be submitted for\n        review by the SENTA organizing committee.\n        Submission does not confirm payment acceptance; your payment\n        will be reviewed by the committee.\n      <\/p>\n\n      <p id=\"sr-submit-status\" class=\"sr-submit-status\" role=\"status\" aria-live=\"polite\"><\/p>\n\n      <noscript>\n        <p class=\"sr-submit-note\">\n          Please enable JavaScript for currency formatting,\n          conditional Paper ID validation, and file size checks.\n        <\/p>\n      <\/noscript>\n    <\/form>\n  <\/div>\n\n  <p class=\"sr-footer\">\n    Need assistance?\n    <a href=\"mailto:senta@its.ac.id\">Contact senta@its.ac.id<\/a>\n  <\/p>\n<\/section>\n\n<script>\n(function () {\n  \"use strict\";\n\n  function initSenta() {\n    const root = document.getElementById(\"senta-registration\");\n    if (!root || root.sentaReady) return;\n\n    const form = root.querySelector(\"#sr-form\");\n    const category = root.querySelector(\"#sr-category\");\n    const paperField = root.querySelector(\"#sr-paper-field\");\n    const paper = root.querySelector(\"#sr-paper\");\n    const paperStar = root.querySelector(\"#sr-paper-star\");\n    const currency = root.querySelector(\"#sr-currency\");\n    const currencyPrefix = root.querySelector(\"#sr-currency-prefix\");\n    const amount = root.querySelector(\"#sr-amount\");\n    const amountHelp = root.querySelector(\"#sr-amount-help\");\n    const paymentDate = root.querySelector(\"#sr-payment-date\");\n    const proof = root.querySelector(\"#sr-proof\");\n    const copyButton = root.querySelector(\"#sr-copy\");\n    const copyStatus = root.querySelector(\"#sr-copy-status\");\n    const submitStatus = root.querySelector(\"#sr-submit-status\");\n    const amountSummary = root.querySelector(\"#sr-amount-summary\");\n    const fileName = root.querySelector(\"#sr-file-name\");\n    const fileSize = root.querySelector(\"#sr-file-size\");\n    const fileStatus = root.querySelector(\"#sr-file-status\");\n    const preview = root.querySelector(\"#sr-proof-preview\");\n    const loading = root.querySelector(\"#sr-loading\");\n\n    let amountRaw = root.querySelector(\"#sr-amount-raw\");\n    let previewURL = \"\";\n    let previousCurrency = currency.value;\n\n    if (!amountRaw) {\n      amountRaw = document.createElement(\"input\");\n      amountRaw.type = \"hidden\";\n      amountRaw.id = \"sr-amount-raw\";\n      amountRaw.name = \"Amount Paid (numeric)\";\n      form.appendChild(amountRaw);\n    }\n\n    amount.type = \"text\";\n    [\"min\", \"max\", \"step\"].forEach(function (attribute) {\n      amount.removeAttribute(attribute);\n    });\n    amount.maxLength = 20;\n    amount.autocomplete = \"off\";\n    amount.spellcheck = false;\n\n    \/\/ Endpoint SmartForms untuk formulir registrasi.\n    form.action = \"https:\/\/smartforms.dev\/submit\/6abc860fc184545ccc23145f\";\n    form.method = \"POST\";\n    form.enctype = \"multipart\/form-data\";\n\n    if (proof.form !== form) {\n      loading.textContent =\n        \"The upload field is unavailable. Please contact senta@its.ac.id.\";\n      return;\n    }\n\n    const accountNumber = \"8257715060550003\";\n    const maximumFileSize = 5 * 1024 * 1024;\n\n    const today = new Date();\n    paymentDate.max = [\n      today.getFullYear(),\n      String(today.getMonth() + 1).padStart(2, \"0\"),\n      String(today.getDate()).padStart(2, \"0\")\n    ].join(\"-\");\n\n    function updatePaperField() {\n      const needsPaper =\n        category.value === \"Author\" ||\n        category.value === \"Presenter\";\n\n      paperField.hidden = !needsPaper;\n      paper.required = needsPaper;\n      paperStar.hidden = !needsPaper;\n      paper.setCustomValidity(\"\");\n\n      if (!needsPaper) paper.value = \"\";\n    }\n\n    category.addEventListener(\"change\", updatePaperField);\n    updatePaperField();\n\n    paper.addEventListener(\"input\", function () {\n      paper.value = paper.value.replace(\/[^0-9]\/g, \"\");\n      paper.setCustomValidity(\"\");\n    });\n\n    function parseAmount(value, code) {\n      const text = value.trim();\n      let raw;\n\n      if (code === \"IDR\") {\n        if (!\/^(?:[0-9]+|[1-9][0-9]{0,2}(?:\\.[0-9]{3})+)$\/.test(text)) {\n          return null;\n        }\n        raw = text.replace(\/\\.\/g, \"\");\n      } else if (code === \"USD\") {\n        if (!\/^(?:[0-9]+|[1-9][0-9]{0,2}(?:,[0-9]{3})+)(?:\\.[0-9]{1,2})?$\/.test(text)) {\n          return null;\n        }\n        raw = text.replace(\/,\/g, \"\");\n      } else {\n        return null;\n      }\n\n      const parts = raw.split(\".\");\n      const whole = parts[0].replace(\/^0+(?=[0-9])\/, \"\");\n      const fraction = (parts[1] || \"\").padEnd(2, \"0\");\n\n      if (\n        whole.length > 12 ||\n        (whole === \"0\" && (code === \"IDR\" || fraction === \"00\"))\n      ) {\n        return null;\n      }\n\n      return code === \"IDR\"\n        ? whole\n        : whole + \".\" + fraction;\n    }\n\n    function formatAmount(raw, code) {\n      const parts = raw.split(\".\");\n      const grouped = parts[0].replace(\n        \/\\B(?=([0-9]{3})+(?![0-9]))\/g,\n        code === \"IDR\" ? \".\" : \",\"\n      );\n\n      return code === \"IDR\"\n        ? grouped\n        : grouped + \".\" + parts[1];\n    }\n\n    function validateAmount(formatDisplay) {\n      amount.setCustomValidity(\"\");\n      amountRaw.value = \"\";\n      amountSummary.value = \"\";\n\n      if (!amount.value.trim()) {\n        amount.setCustomValidity(\"Please enter the amount paid.\");\n        return;\n      }\n\n      if (!currency.value) {\n        amount.setCustomValidity(\"Please select IDR or USD.\");\n        return;\n      }\n\n      const raw = parseAmount(amount.value, currency.value);\n\n      if (raw === null) {\n        amount.setCustomValidity(\n          currency.value === \"IDR\"\n            ? \"Enter a positive amount in whole rupiah, e.g. 1000000 or 1.000.000 (maximum 999.999.999.999).\"\n            : \"Enter a positive USD amount, e.g. 250 or 250.50. Use a dot for cents and at most 12 digits before the decimal point.\"\n        );\n        return;\n      }\n\n      amountRaw.value = raw;\n\n      \/\/ Contoh nilai yang masuk ke email: IDR 100.000.\n      amountSummary.value =\n        currency.value + \" \" + formatAmount(raw, currency.value);\n\n      if (formatDisplay) {\n        amount.value = formatAmount(raw, currency.value);\n      }\n    }\n\n    function updateCurrency() {\n      const isIDR = currency.value === \"IDR\";\n      const selected = isIDR || currency.value === \"USD\";\n\n      currencyPrefix.textContent = selected ? currency.value : \"\u2014\";\n      amount.inputMode = isIDR ? \"numeric\" : \"decimal\";\n\n      amount.placeholder = selected\n        ? (isIDR ? \"1.000.000\" : \"250.00\")\n        : \"Enter the amount paid\";\n\n      amountHelp.textContent = !selected\n        ? \"Select IDR or USD, then enter the amount shown on your receipt.\"\n        : isIDR\n          ? \"Enter whole rupiah, e.g. 1000000 or 1.000.000. Thousands separators appear automatically as you type.\"\n          : \"Enter US dollars, e.g. 250 or 250.50. Use a dot for cents. Thousands separators appear automatically as you type.\";\n\n      validateAmount(document.activeElement !== amount);\n    }\n\n    currency.addEventListener(\"change\", function () {\n      const changedCurrency =\n        previousCurrency && previousCurrency !== currency.value;\n      const hadAmount = amount.value.trim() !== \"\";\n\n      if (changedCurrency) amount.value = \"\";\n\n      previousCurrency = currency.value;\n      updateCurrency();\n\n      if (changedCurrency && hadAmount) {\n        amountHelp.textContent +=\n          \" Currency changed: please re-enter the amount from your receipt.\";\n      }\n    });\n\n    function formatWhileTyping(event) {\n      if (!currency.value) {\n        validateAmount(false);\n        return;\n      }\n\n      if (\n        event &&\n        event.inputType === \"insertFromPaste\" &&\n        amount.value.trim() &&\n        parseAmount(amount.value, currency.value) === null\n      ) {\n        validateAmount(false);\n        return;\n      }\n\n      const isIDR = currency.value === \"IDR\";\n      const value = amount.value;\n      const caret = amount.selectionStart === null\n        ? value.length\n        : amount.selectionStart;\n\n      const significant = isIDR ? \/[0-9]\/ : \/[0-9.]\/;\n      const beforeCaret = value\n        .slice(0, caret)\n        .split(\"\")\n        .filter(function (character) {\n          return significant.test(character);\n        }).length;\n\n      const raw = value.replace(\n        isIDR ? \/\\.\/g : \/,\/g,\n        \"\"\n      );\n\n      const validTyping = isIDR\n        ? \/^[0-9]*$\/\n        : \/^[0-9]*(?:\\.[0-9]{0,2})?$\/;\n\n      if (!validTyping.test(raw)) {\n        validateAmount(false);\n        return;\n      }\n\n      const parts = raw.split(\".\");\n      const whole = parts[0];\n      const grouped = whole.replace(\n        \/\\B(?=([0-9]{3})+(?![0-9]))\/g,\n        isIDR ? \".\" : \",\"\n      );\n\n      amount.value =\n        grouped +\n        (!isIDR && parts.length > 1 ? \".\" + parts[1] : \"\");\n\n      let position = 0;\n      let count = 0;\n\n      while (\n        position < amount.value.length &#038;&#038;\n        count < beforeCaret\n      ) {\n        if (significant.test(amount.value[position])) {\n          count += 1;\n        }\n        position += 1;\n      }\n\n      amount.setSelectionRange(position, position);\n      validateAmount(false);\n    }\n\n    amount.addEventListener(\"input\", formatWhileTyping);\n\n    amount.addEventListener(\"blur\", function () {\n      validateAmount(true);\n    });\n\n    updateCurrency();\n\n    function validateProof() {\n      proof.setCustomValidity(\"\");\n      fileName.value = \"\";\n      fileSize.value = \"\";\n\n      const file = proof.files[0];\n\n      if (!file) {\n        proof.setCustomValidity(\"Please select your payment receipt.\");\n        return;\n      }\n\n      if (!\/\\.(pdf|jpe?g|png)$\/i.test(file.name)) {\n        proof.setCustomValidity(\"Please upload a PDF, JPG, or PNG file.\");\n        return;\n      }\n\n      if (file.size === 0) {\n        proof.setCustomValidity(\n          \"This file is empty. Please choose another file.\"\n        );\n        return;\n      }\n\n      if (file.size > maximumFileSize) {\n        proof.setCustomValidity(\n          \"The file exceeds 5 MB. Please upload a smaller file.\"\n        );\n        return;\n      }\n\n      fileName.value = file.name;\n      fileSize.value = String(file.size);\n    }\n\n    proof.addEventListener(\"change\", function () {\n      validateProof();\n\n      if (previewURL) {\n        URL.revokeObjectURL(previewURL);\n      }\n\n      previewURL = \"\";\n      preview.hidden = true;\n      preview.removeAttribute(\"src\");\n      fileStatus.textContent = proof.validationMessage;\n\n      if (proof.validity.valid && proof.files[0]) {\n        const file = proof.files[0];\n\n        fileStatus.textContent =\n          \"Selected: \" + file.name +\n          \" (\" + Math.ceil(file.size \/ 1024) + \" KB)\";\n\n        if (\/^image\\\/(jpeg|png)$\/.test(file.type)) {\n          previewURL = URL.createObjectURL(file);\n          preview.src = previewURL;\n          preview.hidden = false;\n        }\n      }\n\n      proof.reportValidity();\n    });\n\n    function fallbackCopy(text) {\n      const textarea = document.createElement(\"textarea\");\n      textarea.value = text;\n      textarea.readOnly = true;\n      textarea.style.position = \"fixed\";\n      textarea.style.left = \"-9999px\";\n      document.body.appendChild(textarea);\n\n      try {\n        textarea.select();\n        textarea.setSelectionRange(0, textarea.value.length);\n\n        if (!document.execCommand(\"copy\")) {\n          throw new Error(\"Copy failed\");\n        }\n      } finally {\n        textarea.remove();\n        copyButton.focus();\n      }\n    }\n\n    copyButton.addEventListener(\"click\", async function () {\n      try {\n        if (navigator.clipboard && window.isSecureContext) {\n          try {\n            await navigator.clipboard.writeText(accountNumber);\n          } catch (error) {\n            fallbackCopy(accountNumber);\n          }\n        } else {\n          fallbackCopy(accountNumber);\n        }\n\n        copyStatus.textContent = \"Virtual Account Number copied.\";\n      } catch (error) {\n        copyStatus.textContent =\n          \"Please select and copy the Virtual Account Number manually.\";\n      }\n    });\n\n    form.addEventListener(\"submit\", function (event) {\n      validateProof();\n      validateAmount(true);\n\n      const needsPaper =\n        category.value === \"Author\" ||\n        category.value === \"Presenter\";\n\n      paper.setCustomValidity(\"\");\n\n      if (needsPaper && !\/^[0-9]+$\/.test(paper.value)) {\n        paper.setCustomValidity(\"Please enter your numeric Paper ID.\");\n      }\n\n      if (!form.reportValidity()) {\n        event.preventDefault();\n        return;\n      }\n\n      \/\/ Pastikan file masuk ke data formulir.\n      const attachment = new FormData(form).get(\"attachment\");\n\n      if (!(attachment instanceof File) || attachment.size === 0) {\n        event.preventDefault();\n        submitStatus.textContent =\n          \"Your receipt was not attached. Please choose the file again.\";\n        return;\n      }\n\n      \/\/ Kirim form beserta file melalui multipart\/form-data.\n      submitStatus.textContent =\n        \"Continuing to SmartForms. Please complete any verification shown.\";\n    });\n\n    window.addEventListener(\"pageshow\", function () {\n      submitStatus.textContent = \"\";\n      updatePaperField();\n      updateCurrency();\n    });\n\n    root.sentaReady = true;\n    loading.hidden = true;\n  }\n\n  \/\/ Tunggu jika page builder memasukkan formulir belakangan.\n  function startSenta() {\n    let observer;\n\n    function tryStart() {\n      const root = document.getElementById(\"senta-registration\");\n      if (!root || !root.querySelector(\"#sr-submit-status\")) return;\n\n      if (observer) observer.disconnect();\n\n      initSenta();\n      return true;\n    }\n\n    if (tryStart()) return;\n\n    observer = new MutationObserver(tryStart);\n    observer.observe(document.documentElement, {\n      childList: true,\n      subtree: true\n    });\n  }\n\n  if (document.readyState === \"loading\") {\n    document.addEventListener(\"DOMContentLoaded\", startSenta, { once: true });\n  } else {\n    startSenta();\n  }\n})();\n<\/script>\n","protected":false},"excerpt":{"rendered":"<p>Registration &amp; Payment Join the 11th International Conference on Marine Technology. Complete your payment, then submit your registration details and payment receipt below. 29 \u2013 30 October 2026 Surabaya, Indonesia 01Complete payment 02Submit registration 03Await verification Domestic Payment Registration Fee Payment Please complete your registration fee payment using the following Virtual Account. Bank BNI (Bank [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-1655","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/senta.its.ac.id\/conf\/senta\/wp-json\/wp\/v2\/pages\/1655","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/senta.its.ac.id\/conf\/senta\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/senta.its.ac.id\/conf\/senta\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/senta.its.ac.id\/conf\/senta\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/senta.its.ac.id\/conf\/senta\/wp-json\/wp\/v2\/comments?post=1655"}],"version-history":[{"count":8,"href":"https:\/\/senta.its.ac.id\/conf\/senta\/wp-json\/wp\/v2\/pages\/1655\/revisions"}],"predecessor-version":[{"id":1663,"href":"https:\/\/senta.its.ac.id\/conf\/senta\/wp-json\/wp\/v2\/pages\/1655\/revisions\/1663"}],"wp:attachment":[{"href":"https:\/\/senta.its.ac.id\/conf\/senta\/wp-json\/wp\/v2\/media?parent=1655"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}