{"id":3232,"date":"2026-10-11T19:17:31","date_gmt":"2026-10-11T19:17:31","guid":{"rendered":"https:\/\/muslimcongress.org\/new\/?page_id=3232"},"modified":"2026-10-12T08:03:12","modified_gmt":"2026-10-12T08:03:12","slug":"muslim-congress-town-hall-2026","status":"publish","type":"page","link":"https:\/\/muslimcongress.org\/new\/muslim-congress-town-hall-2026\/","title":{"rendered":"Muslim Congress Town Hall 2026"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"3232\" class=\"elementor elementor-3232\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-ea6641a e-flex e-con-boxed e-con e-parent\" data-id=\"ea6641a\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-11e4862 elementor-icon-list--layout-traditional elementor-list-item-link-full_width elementor-widget elementor-widget-icon-list\" data-id=\"11e4862\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"icon-list.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<ul class=\"elementor-icon-list-items\">\n\t\t\t\t\t\t\t<li class=\"elementor-icon-list-item\">\n\t\t\t\t\t\t\t\t\t\t\t<a href=\"https:\/\/muslimcongress.org\/new\/muslim-congress-2026\/\">\n\n\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-icon\">\n\t\t\t\t\t\t\t<svg aria-hidden=\"true\" class=\"e-font-icon-svg e-fas-chevron-left\" viewBox=\"0 0 320 512\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"M34.52 239.03L228.87 44.69c9.37-9.37 24.57-9.37 33.94 0l22.67 22.67c9.36 9.36 9.37 24.52.04 33.9L131.49 256l154.02 154.75c9.34 9.38 9.32 24.54-.04 33.9l-22.67 22.67c-9.37 9.37-24.57 9.37-33.94 0L34.52 272.97c-9.37-9.37-9.37-24.57 0-33.94z\"><\/path><\/svg>\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-text\">Conference Details<\/span>\n\t\t\t\t\t\t\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t\t<\/li>\n\t\t\t\t\t\t<\/ul>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-7a7be82 elementor-widget elementor-widget-heading\" data-id=\"7a7be82\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Use the form below to register for the Town Hall.<br><br>Note: You do not have to register for this if you are already registered for the conference.<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-03395e8 elementor-icon-list--layout-inline elementor-align-center elementor-mobile-align-start elementor-list-item-link-full_width elementor-widget elementor-widget-icon-list\" data-id=\"03395e8\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"icon-list.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<ul class=\"elementor-icon-list-items elementor-inline-items\">\n\t\t\t\t\t\t\t<li class=\"elementor-icon-list-item elementor-inline-item\">\n\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-icon\">\n\t\t\t\t\t\t\t<svg aria-hidden=\"true\" class=\"e-font-icon-svg e-far-calendar-alt\" viewBox=\"0 0 448 512\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"M148 288h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12zm108-12v-40c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12zm96 0v-40c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12zm-96 96v-40c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12zm-96 0v-40c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12zm192 0v-40c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12zm96-260v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V112c0-26.5 21.5-48 48-48h48V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h128V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h48c26.5 0 48 21.5 48 48zm-48 346V160H48v298c0 3.3 2.7 6 6 6h340c3.3 0 6-2.7 6-6z\"><\/path><\/svg>\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-text\">Saturday, Nov. 7 2026<\/span>\n\t\t\t\t\t\t\t\t\t<\/li>\n\t\t\t\t\t\t\t\t<li class=\"elementor-icon-list-item elementor-inline-item\">\n\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-icon\">\n\t\t\t\t\t\t\t<svg aria-hidden=\"true\" class=\"e-font-icon-svg e-far-clock\" viewBox=\"0 0 512 512\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm0 448c-110.5 0-200-89.5-200-200S145.5 56 256 56s200 89.5 200 200-89.5 200-200 200zm61.8-104.4l-84.9-61.7c-3.1-2.3-4.9-5.9-4.9-9.7V116c0-6.6 5.4-12 12-12h32c6.6 0 12 5.4 12 12v141.7l66.8 48.6c5.4 3.9 6.5 11.4 2.6 16.8L334.6 349c-3.9 5.3-11.4 6.5-16.8 2.6z\"><\/path><\/svg>\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-text\">7:30 PM<\/span>\n\t\t\t\t\t\t\t\t\t<\/li>\n\t\t\t\t\t\t\t\t<li class=\"elementor-icon-list-item elementor-inline-item\">\n\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-icon\">\n\t\t\t\t\t\t\t<svg aria-hidden=\"true\" class=\"e-font-icon-svg e-fas-map-pin\" viewBox=\"0 0 288 512\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"M112 316.94v156.69l22.02 33.02c4.75 7.12 15.22 7.12 19.97 0L176 473.63V316.94c-10.39 1.92-21.06 3.06-32 3.06s-21.61-1.14-32-3.06zM144 0C64.47 0 0 64.47 0 144s64.47 144 144 144 144-64.47 144-144S223.53 0 144 0zm0 76c-37.5 0-68 30.5-68 68 0 6.62-5.38 12-12 12s-12-5.38-12-12c0-50.73 41.28-92 92-92 6.62 0 12 5.38 12 12s-5.38 12-12 12z\"><\/path><\/svg>\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-text\">The Westin Southfield Detroit, Michigan<\/span>\n\t\t\t\t\t\t\t\t\t<\/li>\n\t\t\t\t\t\t<\/ul>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-be6d06a e-flex e-con-boxed e-con e-parent\" data-id=\"be6d06a\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"elementor-element elementor-element-df1a1ff e-con e-atomic-element e-flexbox-base e-default-div e-df1a1ff-0019a8e \" data-id=\"df1a1ff\" data-element_type=\"e-flexbox\" data-e-type=\"e-flexbox\" data-interaction-id=\"df1a1ff\" data-e-type=\"e-flexbox\" data-id=\"df1a1ff\">\n    \t\t<div class=\"elementor-element elementor-element-556ec43 elementor-widget__width-inherit elementor-widget elementor-widget-html\" data-id=\"556ec43\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<!DOCTYPE html>\r\n<html lang=\"en\">\r\n<head>\r\n<meta charset=\"utf-8\">\r\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\r\n<title>Muslim Congress Town Hall \u2014 Registration<\/title>\r\n<link rel=\"stylesheet\" href=\"https:\/\/cdn.jsdelivr.net\/npm\/@tabler\/icons-webfont@2\/tabler-icons.min.css\">\r\n<style>\r\n  \/* Design tokens \u2014 override any of these from Elementor's Custom CSS panel\r\n     or your theme's Additional CSS to match your brand. *\/\r\n  .mc-registration {\r\n    --font-sans: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif;\r\n    --color-background-primary: white;\r\n    --color-background-secondary: none;\r\n    --color-text-primary: #1a1a1a;\r\n    --color-text-secondary: #6b6b6b;\r\n    --color-border-primary: #d9d9d6;\r\n    --color-border-secondary: #d9d9d6;\r\n    --color-border-tertiary: #e5e5e2;\r\n    --border-radius-md: 4px;\r\n    --border-radius-lg: 12px;\r\n  }\r\n  :root { --teal: #1C58A6; --teal-light: #F6F8FC; --teal-border: #1C58A6; --amber: #BA7517; --amber-light: #FAEEDA; --coral: #D85A30; --coral-light: #FAECE7; }\r\n  * { box-sizing: border-box; margin: 0; padding: 0; }\r\n  body { font-family: var(--font-sans, sans-serif); background: none; }\r\n  .mc-registration { background: none; }\r\n  .shell { padding: 0px; max-width: 100%; margin: 0 auto; }\r\n  .step-nav { display: flex; align-items: center; gap: 0; margin-bottom: 2rem; overflow-x: auto; padding-bottom: 4px; }\r\n  .step-item { display: flex; align-items: center; flex-shrink: 0; }\r\n  .step-bubble { width: 28px; height: 28px; border-radius: 50%; display: flex; align-items: center; justify-content: center; font-size: 12px; font-weight: 500; border: 1.5px solid var(--color-border-tertiary); background: var(--color-background-primary); color: var(--color-text-secondary); cursor: pointer; transition: all 0.15s; }\r\n  .step-bubble.active { background: #1C58A6; border-color: #1C58A6; color: #fff; }\r\n  .step-bubble.done { background: var(--teal-light); border-color: #1C58A6; color: #1C58A6; }\r\n  .step-label { font-size: 11px; color: var(--color-text-secondary); margin-top: 4px; text-align: center; max-width: 70px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }\r\n  .step-label.active { color: #1C58A6; font-weight: 500; }\r\n  .step-col { display: flex; flex-direction: column; align-items: center; gap: 0; }\r\n  .step-connector { height: 1.5px; width: 28px; background: var(--color-border-tertiary); flex-shrink: 0; margin-bottom: 18px; }\r\n  .step-connector.done { background: #1C58A6; }\r\n  .panel { background: var(--color-background-primary); border: 0.5px solid var(--color-border-tertiary); border-radius: var(--border-radius-lg); padding: 1.5rem; margin-bottom: 1.5rem; }\r\n  .panel-title { font-size: 16px; font-weight: 500; color: var(--color-text-primary); margin-bottom: 4px; display: flex; align-items: center; gap: 0px; }\r\n  .panel-sub { font-size: 13px; color: var(--color-text-secondary); margin-bottom: 1.25rem; }\r\n  .field-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; }\r\n  .field-grid.single { grid-template-columns: 1fr; }\r\n  .field-grid.triple { grid-template-columns: 1fr 1fr 1fr; }\r\n  .field { display: flex; flex-direction: column; gap: 8px; }\r\n  .field.span2 { grid-column: span 2; }\r\n  label { font-size: 12px; color: var(--color-text-secondary); font-weight: 500; letter-spacing: 0.02em; display: flex; align-items: center; gap: 4px; }\r\n  .req { color: #D85A30; font-size: 12px; }\r\n  input, select, textarea { border-radius: var(--border-radius-md); border: 0.5px solid var(--color-border-secondary); background: var(--color-background-secondary); color: var(--color-text-primary); padding: 10px 10px; font-size: 13px; width: 100%; font-family: inherit; }\r\n  input:focus, select:focus, textarea:focus { outline: 2px solid #1C58A6; outline-offset: 1px; border-color: #1C58A6; }\r\n  input.invalid, select.invalid { border-color: #D85A30; background: #FAECE7; }\r\n  .field-error { font-size: 11px; color: #993C1D; display: none; }\r\n  .field-error.show { display: block; }\r\n  .badge { display: inline-flex; align-items: center; gap: 4px; font-size: 11px; padding: 3px 8px; border-radius: var(--border-radius-md); font-weight: 500; }\r\n  .badge-required { background: #FAECE7; color: #993C1D; }\r\n  .badge-optional { background: var(--color-background-secondary); color: var(--color-text-secondary); }\r\n  .note { font-size: 12px; color: var(--color-text-secondary); background: var(--color-background-secondary); border-left: 2px solid #1C58A6; padding: 8px 10px; border-radius: 0 var(--border-radius-md) var(--border-radius-md) 0; margin-top: 8px; }\r\n  .member-card { border: 0.5px solid var(--color-border-tertiary); border-radius: var(--border-radius-md); padding: 1rem; margin-bottom: 10px; background: var(--color-background-secondary); }\r\n  .member-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 10px; }\r\n  .member-title { font-size: 13px; font-weight: 500; color: var(--color-text-primary); display: flex; align-items: center; gap: 6px; }\r\n  .remove-member { background: none; border: none; color: var(--color-text-secondary); cursor: pointer; font-size: 12px; display: flex; align-items: center; gap: 4px; width: auto; }\r\n  .remove-member:hover { color: #D85A30; }\r\n  .add-btn { display: flex; align-items: center; gap: 6px; border: 1px dashed var(--color-border-secondary); border-radius: var(--border-radius-md); padding: 8px 14px; font-size: 13px; color: #1C58A6; background: transparent; cursor: pointer; width: 100%; justify-content: center; margin-top: 4px; }\r\n  .add-btn:hover { background: var(--color-background-secondary); }\r\n  .ticket-row { display: flex; justify-content: space-between; align-items: center; padding: 10px 0; border-bottom: 0.5px solid var(--color-border-tertiary); gap: 12px; }\r\n  .ticket-row:last-child { border-bottom: none; }\r\n  .ticket-label { font-size: 13px; color: var(--color-text-primary); }\r\n  .ticket-sub { font-size: 11px; color: var(--color-text-secondary); margin-top: 2px; }\r\n  .ticket-price { font-size: 14px; font-weight: 500; color: var(--color-text-primary); white-space: nowrap; }\r\n  .ticket-price.free { color: #0F6E56; }\r\n  .total-row { display: flex; justify-content: space-between; padding-top: 12px; font-size: 15px; font-weight: 500; color: var(--color-text-primary); }\r\n  .empty-summary { font-size: 13px; color: var(--color-text-secondary); padding: 8px 0; }\r\n  .discount-strip { display: flex; gap: 8px; margin-top: 10px; flex-wrap: wrap; }\r\n  .discount-msg { font-size: 12px; margin-top: 8px; display: none; }\r\n  .discount-msg.ok { color: #0F6E56; display: block; }\r\n  .discount-msg.err { color: #993C1D; display: block; }\r\n  .nav-row { display: flex; justify-content: space-between; align-items: center; margin-top: 1rem; gap: 10px; }\r\n  .btn-back { background: transparent; border: 0.5px solid var(--color-border-secondary); color: var(--color-text-secondary); padding: 9px 20px; border-radius: var(--border-radius-md); font-size: 13px; cursor: pointer; display: flex; align-items: center; gap: 6px; }\r\n  .btn-next { background: #1C58A6; border: none; color: #fff; padding: 9px 24px; border-radius: var(--border-radius-md); font-size: 13px; font-weight: 500; cursor: pointer; display: flex; align-items: center; gap: 6px; }\r\n  .btn-next:hover { background: #164685; }\r\n  .btn-next:disabled { opacity: 0.7; cursor: wait; }\r\n  .add-btn:disabled { opacity: 0.45; cursor: not-allowed; }\r\n  .divider { height: 0.5px; background: var(--color-border-tertiary); margin: 1rem 0; }\r\n  .tag { display: inline-block; font-size: 11px; padding: 2px 7px; border-radius: 100px; font-weight: 500; }\r\n  .tag-age { background: #FAEEDA; color: #633806; }\r\n  .confirmation-icon { width: 56px; height: 56px; border-radius: 50%; background: #F6F8FC; display: flex; align-items: center; justify-content: center; margin: 0 auto 12px; }\r\n  .step-section { display: none; }\r\n  .step-section.visible { display: block; }\r\n  select option { background: var(--color-background-primary); }\r\n  .waiver-box { border: 0.5px solid var(--color-border-tertiary); border-radius: var(--border-radius-md); padding: 10px 12px; font-size: 12px; color: var(--color-text-secondary); max-height: 80px; overflow-y: auto; line-height: 1.6; background: var(--color-background-secondary); }\r\n  .sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0,0,0,0); border: 0; }\r\n\r\n  \/* Read-only fields (e.g. the auto-calculated child\/youth counts). *\/\r\n  input[readonly] { background: #eeeeec; color: var(--color-text-secondary); cursor: not-allowed; }\r\n\r\n  \/* Full-screen dim + block while we confirm the payment on return from Stripe. *\/\r\n  @keyframes mcspin { to { transform: rotate(360deg); } }\r\n  #mcLoadingOverlay { position: fixed; inset: 0; background: rgba(0,0,0,0.8); z-index: 99999; display: none; align-items: center; justify-content: center; flex-direction: column; gap: 16px; }\r\n  #mcLoadingOverlay.show { display: flex; }\r\n  #mcLoadingOverlay .spinner { width: 40px; height: 40px; border: 3px solid rgba(255,255,255,0.25); border-top-color: #fff; border-radius: 50%; animation: mcspin 0.8s linear infinite; }\r\n  #mcLoadingOverlay .overlay-msg { color: #fff; font-size: 14px; font-family: var(--font-sans, sans-serif); }\r\n\r\n  \/* Error banner shown at the top of a step when validation fails. *\/\r\n  .banner { display: none; border-radius: var(--border-radius-md); padding: 10px 12px; font-size: 13px; margin-bottom: 1rem; line-height: 1.5; }\r\n  .banner.show { display: block; }\r\n  .banner-error { background: #FAECE7; color: #993C1D; border-left: 2px solid #D85A30; }\r\n  .banner-warn { background: #FAEEDA; color: #633806; border-left: 2px solid #BA7517; }\r\n  .banner ul { margin: 4px 0 0 18px; }\r\n\r\n  \/* Filter-style chips for the Quran competition categories. *\/\r\n  .chip-row { display: flex; flex-wrap: wrap; gap: 8px; }\r\n  .chip { display: inline-flex; align-items: center; gap: 6px; font-size: 12px; font-weight: 400; letter-spacing: normal; color: var(--color-text-primary); border: 0.5px solid var(--color-border-tertiary); background: var(--color-background-primary); border-radius: 100px; padding: 6px 12px; cursor: pointer; }\r\n  .chip input { width: 14px; height: 14px; accent-color: #1C58A6; flex-shrink: 0; }\r\n  .chip:has(input:checked) { border-color: #1C58A6; background: #E1F5EE; color: #0F6E56; font-weight: 500; }\r\n\r\n  \/* ---------- Elementor hover override fixes ---------- *\/\r\n  .mc-registration button.add-btn,\r\n  .mc-registration button.remove-member {\r\n    box-shadow: none !important;\r\n    text-decoration: none !important;\r\n    transition: background 0.15s ease, border-color 0.15s ease, color 0.15s ease !important;\r\n  }\r\n  .mc-registration button.add-btn,\r\n  .mc-registration button.add-btn:visited {\r\n    color: #1C58A6 !important;\r\n    background: transparent !important;\r\n    border: 1px dashed var(--color-border-secondary) !important;\r\n  }\r\n  .mc-registration button.add-btn:hover,\r\n  .mc-registration button.add-btn:focus,\r\n  .mc-registration button.add-btn:active {\r\n    color: #1C58A6 !important;\r\n    background: var(--color-background-secondary) !important;\r\n    border-color: #1C58A6 !important;\r\n    outline-color: #1C58A6 !important;\r\n  }\r\n  .mc-registration button.remove-member,\r\n  .mc-registration button.remove-member:visited {\r\n    color: var(--color-text-secondary) !important;\r\n    background: transparent !important;\r\n    border: 0 !important;\r\n  }\r\n  .mc-registration button.remove-member:hover,\r\n  .mc-registration button.remove-member:focus,\r\n  .mc-registration button.remove-member:active {\r\n    color: #D85A30 !important;\r\n    background: transparent !important;\r\n    border: 0 !important;\r\n    outline-color: #D85A30 !important;\r\n  }\r\n\r\n  \/* ---------- Responsive ---------- *\/\r\n  @media (max-width: 640px) {\r\n    .shell { padding: 0px; }\r\n    .field-grid, .field-grid.triple { grid-template-columns: 1fr; }\r\n    .field.span2 { grid-column: span 1; }\r\n    .panel { padding: 1.25rem 1rem; }\r\n    .step-label { font-size: 10px; max-width: 54px; }\r\n    .btn-next, .btn-back { padding: 8px 16px; }\r\n    .nav-row { flex-wrap: wrap; }\r\n  }\r\n<\/style>\r\n<\/head>\r\n<body>\r\n<div class=\"mc-registration\">\r\n<div class=\"shell\">\r\n  <h2 class=\"sr-only\">Muslim Congress Town Hall registration<\/h2>\r\n\r\n  <div class=\"step-nav\" id=\"stepNav\">\r\n    <div class=\"step-col\"><div class=\"step-bubble active\" id=\"b0\" onclick=\"goTo(0)\">1<\/div><div class=\"step-label active\" id=\"l0\">Attendees<\/div><\/div>\r\n    <div class=\"step-connector\" id=\"c0\"><\/div>\r\n    <div class=\"step-col\"><div class=\"step-bubble\" id=\"b1\" onclick=\"goTo(1)\">2<\/div><div class=\"step-label\" id=\"l1\">Payment<\/div><\/div>\r\n    <div class=\"step-connector\" id=\"c1\"><\/div>\r\n    <div class=\"step-col\"><div class=\"step-bubble\" id=\"b2\">3<\/div><div class=\"step-label\" id=\"l2\">Confirmed<\/div><\/div>\r\n  <\/div>\r\n\r\n  <div class=\"step-section visible\" id=\"step0\">\r\n    <div class=\"banner banner-error\" id=\"err0\"><\/div>\r\n    <div class=\"panel\">\r\n      <div class=\"panel-title\">Attendees<\/div>\r\n      <div class=\"panel-sub\">Each seat is <span class=\"seat-price-inline\"><\/span>. Add everyone attending \u2014 each person receives their own confirmation email.<\/div>\r\n\r\n      <div class=\"member-card\">\r\n        <div class=\"member-header\">\r\n          <div class=\"member-title\"><i class=\"ti ti-user-circle\" aria-hidden=\"true\"><\/i><span>Attendee 1<\/span><\/div>\r\n        <\/div>\r\n        <div class=\"field-grid\">\r\n          <div class=\"field\"><label>First name <span class=\"req\">*<\/span><\/label><input id=\"p-first\" type=\"text\" placeholder=\"First name\"><\/div>\r\n          <div class=\"field\"><label>Last name <span class=\"req\">*<\/span><\/label><input id=\"p-last\" type=\"text\" placeholder=\"Last name\"><\/div>\r\n          <div class=\"field\"><label>Email address <span class=\"req\">*<\/span><\/label><input id=\"p-email\" type=\"email\" placeholder=\"Email address\"><\/div>\r\n          <div class=\"field\"><label>Phone number <span class=\"req\">*<\/span><\/label><input id=\"p-phone\" type=\"tel\" inputmode=\"numeric\" autocomplete=\"tel\" maxlength=\"14\" placeholder=\"(123) 456-7890\"><\/div>\r\n        <\/div>\r\n      <\/div>\r\n\r\n      <div id=\"membersContainer\"><\/div>\r\n\r\n      <button type=\"button\" class=\"add-btn\" id=\"addRegistrantBtn\" onclick=\"addMember()\"><i class=\"ti ti-plus\" aria-hidden=\"true\"><\/i>Add another attendee<\/button>\r\n      <div class=\"note\" id=\"maxNote\" style=\"display:none;\"><i class=\"ti ti-info-circle\" aria-hidden=\"true\"><\/i>Maximum of <span class=\"max-registrants-inline\"><\/span> seats per registration.<\/div>\r\n    <\/div>\r\n\r\n    <div class=\"nav-row\">\r\n      <div><\/div>\r\n      <button class=\"btn-next\" onclick=\"goTo(1)\">Payment <i class=\"ti ti-arrow-right\" aria-hidden=\"true\"><\/i><\/button>\r\n    <\/div>\r\n  <\/div>\r\n\r\n  <div class=\"step-section\" id=\"step1\">\r\n    <div class=\"banner banner-warn\" id=\"canceledBanner\">Your payment was cancelled, so nothing was charged. Your details are still here \u2014 press <strong>Continue to payment<\/strong> when you're ready to try again.<\/div>\r\n    <div class=\"banner banner-error\" id=\"err1\"><\/div>\r\n\r\n    <div class=\"panel\">\r\n      <div class=\"panel-title\">Order summary<\/div>\r\n      <div id=\"orderItems\"><\/div>\r\n      <div class=\"divider\"><\/div>\r\n      <div class=\"ticket-row\">\r\n        <div style=\"color: var(--color-text-secondary); font-size:13px;\">Subtotal<\/div>\r\n        <div id=\"sumSubtotal\" style=\"font-size:13px; color: var(--color-text-secondary);\">$0.00<\/div>\r\n      <\/div>\r\n      <div class=\"ticket-row\" id=\"discountRow\" style=\"display:none;\">\r\n        <div style=\"color: #0F6E56; font-size:13px;\"><i class=\"ti ti-tag\" style=\"font-size:13px;\" aria-hidden=\"true\"><\/i> <span id=\"discountLabel\">Discount<\/span><\/div>\r\n        <div id=\"sumDiscount\" style=\"font-size:13px; color: #0F6E56;\">\u2212$0.00<\/div>\r\n      <\/div>\r\n      <div class=\"total-row\">\r\n        <span>Total due<\/span>\r\n        <span id=\"sumTotal\">$0.00<\/span>\r\n      <\/div>\r\n    <\/div>\r\n\r\n    <div class=\"panel\">\r\n      <div class=\"panel-title\">Discount code<\/div>\r\n      <div class=\"discount-strip\">\r\n        <input id=\"discountCode\" type=\"text\" placeholder=\"Enter code\" style=\"flex:1; max-width:220px;\">\r\n        <button type=\"button\" onclick=\"applyDiscount()\" style=\"border: 0.5px solid var(--color-border-secondary); background: var(--color-background-secondary); color: var(--color-text-primary); padding: 7px 16px; border-radius: var(--border-radius-md); font-size:13px; cursor:pointer;\">Apply<\/button>\r\n      <\/div>\r\n      <div class=\"discount-msg\" id=\"discountMsg\"><\/div>\r\n    <\/div>\r\n\r\n    <div class=\"panel\">\r\n      <div class=\"panel-title\">Payment<\/div>\r\n      <div class=\"panel-sub\">You'll be taken to our secure payment page to pay by card. Your seats are confirmed the moment payment goes through.<\/div>\r\n      <div class=\"note\"><i class=\"ti ti-lock\" aria-hidden=\"true\"><\/i>Card details are entered on Stripe's page and never touch this site.<\/div>\r\n    <\/div>\r\n\r\n    <div class=\"panel\">\r\n      <div class=\"panel-title\">Consent<\/div>\r\n      <div class=\"waiver-box\">By registering, I confirm that all information provided is accurate and that my registration is confirmed only upon receipt of full payment.<\/div>\r\n      <div style=\"display:flex; align-items:center; gap:8px; margin-top:16px;\">\r\n        <input type=\"checkbox\" id=\"consent\" style=\"width:16px; height:16px; accent-color:#1C58A6; flex-shrink:0;\">\r\n        <label for=\"consent\" style=\"font-size:13px; color:var(--color-text-primary); cursor:pointer;\">I have read and agree to the above terms <span class=\"req\">*<\/span><\/label>\r\n      <\/div>\r\n      <div id=\"consentError\" class=\"field-error\" style=\"margin-top:10px;\">Please agree to the terms to continue.<\/div>\r\n    <\/div>\r\n\r\n    <div class=\"nav-row\">\r\n      <button class=\"btn-back\" onclick=\"goTo(0)\"><i class=\"ti ti-arrow-left\" aria-hidden=\"true\"><\/i>Back<\/button>\r\n      <button id=\"completeBtn\" class=\"btn-next\" onclick=\"complete()\">Continue to payment <i class=\"ti ti-arrow-right\" aria-hidden=\"true\"><\/i><\/button>\r\n    <\/div>\r\n  <\/div>\r\n\r\n  <div class=\"step-section\" id=\"step2\">\r\n    <div class=\"panel\" style=\"text-align:center; padding:2.5rem 1.5rem;\">\r\n      <div class=\"confirmation-icon\"><i class=\"ti ti-circle-check\" style=\"font-size:28px; color:#1C58A6;\" aria-hidden=\"true\"><\/i><\/div>\r\n      <div style=\"font-size:18px; font-weight:500; color:var(--color-text-primary); margin-bottom:6px;\">Registration confirmed<\/div>\r\n      <div style=\"font-size:13px; color:var(--color-text-secondary); margin-bottom:1.5rem;\">Payment received. Each attendee will receive their own confirmation email.<\/div>\r\n      <div style=\"background:var(--color-background-secondary); border-radius:var(--border-radius-md); padding:1rem; text-align:left; font-size:13px; color:var(--color-text-secondary); line-height:2;\">\r\n        <div><strong style=\"color:var(--color-text-primary);\">Confirmation #<\/strong> &nbsp;<span id=\"confNumber\">\u2014<\/span><\/div>\r\n        <div><strong style=\"color:var(--color-text-primary);\">Attendees<\/strong> &nbsp;<span id=\"confRegistrants\">\u2014<\/span><\/div>\r\n        <div><strong style=\"color:var(--color-text-primary);\">Amount paid<\/strong> &nbsp;<span id=\"confTotal\">\u2014<\/span><\/div>\r\n      <\/div>\r\n    <\/div>\r\n  <\/div>\r\n<\/div>\r\n\r\n<div id=\"mcLoadingOverlay\" role=\"alertdialog\" aria-label=\"Confirming payment\" aria-hidden=\"true\">\r\n  <div class=\"spinner\"><\/div>\r\n  <div class=\"overlay-msg\">Confirming your payment\u2026<\/div>\r\n<\/div>\r\n<\/div>\r\n\r\n<script>\r\n(function(){\r\n\r\n  \/* ============================================================\r\n     EVENT_CONFIG \u2014 the only block you edit.\r\n     ============================================================ *\/\r\n  var EVENT_CONFIG = {\r\n    eventId:         'townhall-2026',\r\n    eventTitle:      'Muslim Congress Town Hall',\r\n    seatPrice:       50,      \/\/ display only \u2014 Stripe's Price is what is actually charged\r\n    maxRegistrants:  10,      \/\/ max seats per single registration\r\n    appsScriptUrl:   'https:\/\/script.google.com\/macros\/s\/AKfycbyjCxz1_N7Y6ggWLPBL1E4IgrnByJJGQw3OeMNhLatgJltqrcfy9hXztQcmGVm6wtQJ\/exec'\r\n  };\r\n  \/* ============================================================ *\/\r\n\r\n  var root = document.querySelector('.mc-registration');\r\n  var fee = Number(EVENT_CONFIG.seatPrice);\r\n  var maxRegistrants = Number(EVENT_CONFIG.maxRegistrants) || 10;\r\n  var endpoint = EVENT_CONFIG.appsScriptUrl;\r\n  var discountType = '', discountValue = 0, discountName = '';  \/\/ percent: fraction; amount: dollars\r\n\r\n  document.querySelectorAll('.seat-price-inline').forEach(function(el){ el.textContent = '$' + fee; });\r\n  document.querySelectorAll('.max-registrants-inline').forEach(function(el){ el.textContent = maxRegistrants; });\r\n\r\n  function $(sel){ return root.querySelector(sel); }\r\n  function val(sel){ var el = $(sel); return el ? el.value.trim() : ''; }\r\n  function money(n){ return '$' + n.toFixed(2); }\r\n  function escapeHtml(s){ return (s||'').replace(\/[&<>\"']\/g, function(c){ return ({'&':'&amp;','<':'&lt;','>':'&gt;','\"':'&quot;',\"'\":'&#39;'}[c]); }); }\r\n\r\n  \/* text\/plain avoids a CORS preflight against Apps Script *\/\r\n  function api(path, body){\r\n    var opts = { method: body ? 'POST' : 'GET', redirect: 'follow' };\r\n    if(body){\r\n      opts.headers = { 'Content-Type': 'text\/plain;charset=utf-8' };\r\n      opts.body = JSON.stringify(body);\r\n    }\r\n    return fetch(endpoint + path, opts).then(function(res){\r\n      if(!res.ok) throw new Error('Server error (' + res.status + ')');\r\n      return res.json();\r\n    });\r\n  }\r\n\r\n  function showOverlay(){ var o = document.getElementById('mcLoadingOverlay'); if(o){ o.classList.add('show'); o.setAttribute('aria-hidden', 'false'); } }\r\n  function hideOverlay(){ var o = document.getElementById('mcLoadingOverlay'); if(o){ o.classList.remove('show'); o.setAttribute('aria-hidden', 'true'); } }\r\n\r\n  \/* ---------- Phone formatting ---------- *\/\r\n  function formatPhoneNumber(value){\r\n    var n = (value || '').replace(\/\\D\/g, '').slice(0, 10);\r\n    if(n.length <= 3) return n;\r\n    if(n.length <= 6) return '(' + n.slice(0, 3) + ') ' + n.slice(3);\r\n    return '(' + n.slice(0, 3) + ') ' + n.slice(3, 6) + '-' + n.slice(6);\r\n  }\r\n  root.querySelectorAll('input[type=\"tel\"]').forEach(function(input){\r\n    input.addEventListener('input', function(){ this.value = formatPhoneNumber(this.value); });\r\n    input.addEventListener('paste', function(e){\r\n      e.preventDefault();\r\n      this.value = formatPhoneNumber((e.clipboardData || window.clipboardData).getData('text'));\r\n    });\r\n  });\r\n\r\n  \/* ---------- Name auto-capitalization ---------- *\/\r\n  function toNameCase(str){\r\n    if(!str) return str;\r\n    return str.toLowerCase().replace(\/\\s+\/g, ' ').trim()\r\n      .replace(\/(^|[\\s\\-'\u2019])([a-z\u00e0-\u00f6\u00f8-\u00ff])\/g, function(m, sep, ch){ return sep + ch.toUpperCase(); });\r\n  }\r\n  root.addEventListener('focusout', function(e){\r\n    var t = e.target;\r\n    if(!t || t.tagName !== 'INPUT' || !t.value) return;\r\n    if(t.id === 'p-first' || t.id === 'p-last' || t.classList.contains('m-first') || t.classList.contains('m-last')){\r\n      t.value = toNameCase(t.value);\r\n    }\r\n  });\r\n\r\n  \/* ---------- Additional attendee cards ---------- *\/\r\n  var membersContainer = $('#membersContainer');\r\n  var addBtn = $('#addRegistrantBtn');\r\n  var extraCount = 0;\r\n\r\n  function memberCardHTML(index){\r\n    return ''+\r\n    '<div class=\"member-card\" data-member>'+\r\n      '<div class=\"member-header\">'+\r\n        '<div class=\"member-title\"><i class=\"ti ti-user-circle\" aria-hidden=\"true\"><\/i><span class=\"member-num\">Attendee '+ (index + 1) +'<\/span><\/div>'+\r\n        '<button type=\"button\" class=\"remove-member\" onclick=\"removeMember(this)\">Remove <i class=\"ti ti-x\" aria-hidden=\"true\"><\/i><\/button>'+\r\n      '<\/div>'+\r\n      '<div class=\"field-grid triple\">'+\r\n        '<div class=\"field\"><label>First name <span class=\"req\">*<\/span><\/label><input class=\"m-first\" type=\"text\" placeholder=\"First name\"><\/div>'+\r\n        '<div class=\"field\"><label>Last name <span class=\"req\">*<\/span><\/label><input class=\"m-last\" type=\"text\" placeholder=\"Last name\"><\/div>'+\r\n        '<div class=\"field\"><label>Email <span class=\"req\">*<\/span><\/label><input class=\"m-email\" type=\"email\" placeholder=\"Email\"><\/div>'+\r\n      '<\/div>'+\r\n    '<\/div>';\r\n  }\r\n  window.addMember = function(){\r\n    if(extraCount >= maxRegistrants - 1) return;\r\n    extraCount++;\r\n    membersContainer.insertAdjacentHTML('beforeend', memberCardHTML(extraCount));\r\n    updateAddState();\r\n  };\r\n  window.removeMember = function(btn){\r\n    var card = btn.closest('[data-member]');\r\n    if(card) card.remove();\r\n    extraCount--;\r\n    membersContainer.querySelectorAll('[data-member]').forEach(function(c, i){\r\n      c.querySelector('.member-num').textContent = 'Attendee ' + (i + 2);\r\n    });\r\n    updateAddState();\r\n    if(currentStep === 1) buildSummary();\r\n  };\r\n  function updateAddState(){\r\n    var atMax = extraCount >= maxRegistrants - 1;\r\n    addBtn.disabled = atMax;\r\n    $('#maxNote').style.display = atMax ? 'block' : 'none';\r\n  }\r\n\r\n  \/* ---------- Validation ---------- *\/\r\n  var EMAIL_RE = \/^[^@\\s]+@[^@\\s]+\\.[^@\\s]+$\/;\r\n  function mark(el, bad){ if(el) el.classList.toggle('invalid', !!bad); }\r\n  function showErrors(step, list){\r\n    var banner = document.getElementById('err' + step);\r\n    if(!banner) return;\r\n    if(!list.length){ banner.classList.remove('show'); banner.innerHTML = ''; return; }\r\n    banner.innerHTML = 'Please fix the following before continuing:<ul>' +\r\n      list.map(function(m){ return '<li>' + escapeHtml(m) + '<\/li>'; }).join('') + '<\/ul>';\r\n    banner.classList.add('show');\r\n    banner.scrollIntoView({ behavior: 'smooth', block: 'center' });\r\n  }\r\n\r\n  function validateStep0(){\r\n    var errs = [];\r\n    var emailOk = EMAIL_RE.test(val('#p-email'));\r\n    var phoneDigits = val('#p-phone').replace(\/\\D\/g, '');\r\n\r\n    mark($('#p-first'), !val('#p-first'));\r\n    mark($('#p-last'), !val('#p-last'));\r\n    mark($('#p-email'), !emailOk);\r\n    mark($('#p-phone'), phoneDigits.length !== 10);\r\n\r\n    if(!val('#p-first') || !val('#p-last')) errs.push('Attendee 1 needs a first and last name.');\r\n    if(!emailOk) errs.push('Attendee 1 needs a valid email address.');\r\n    if(phoneDigits.length !== 10) errs.push('Enter a 10-digit phone number for Attendee 1.');\r\n\r\n    membersContainer.querySelectorAll('[data-member]').forEach(function(card, i){\r\n      var first = card.querySelector('.m-first'), last = card.querySelector('.m-last'), em = card.querySelector('.m-email');\r\n      var ok = EMAIL_RE.test(em.value.trim());\r\n      var label = 'Attendee ' + (i + 2);\r\n      mark(first, !first.value.trim()); mark(last, !last.value.trim()); mark(em, !ok);\r\n      if(!first.value.trim() || !last.value.trim()) errs.push(label + ' needs a first and last name.');\r\n      if(!ok) errs.push(label + ' needs a valid email.');\r\n    });\r\n\r\n    showErrors(0, errs);\r\n    return errs.length === 0;\r\n  }\r\n\r\n  function collectRegistrants(){\r\n    var list = [{ name: (val('#p-first') + ' ' + val('#p-last')).trim(), email: val('#p-email'), phone: val('#p-phone') }];\r\n    membersContainer.querySelectorAll('[data-member]').forEach(function(card){\r\n      list.push({\r\n        name: (card.querySelector('.m-first').value.trim() + ' ' + card.querySelector('.m-last').value.trim()).trim(),\r\n        email: card.querySelector('.m-email').value.trim(),\r\n        phone: ''\r\n      });\r\n    });\r\n    return list;\r\n  }\r\n\r\n  \/* ---------- Order summary (display only \u2014 the server recomputes) ---------- *\/\r\n  function buildSummary(){\r\n    var list = collectRegistrants();\r\n    var container = $('#orderItems');\r\n    container.innerHTML = '';\r\n    list.forEach(function(r, i){\r\n      container.insertAdjacentHTML('beforeend',\r\n        '<div class=\"ticket-row\">'+\r\n          '<div><div class=\"ticket-label\">'+ escapeHtml(r.name || ('Attendee ' + (i + 1))) +'<\/div>'+\r\n          '<div class=\"ticket-sub\">1 seat<\/div><\/div>'+\r\n          '<div class=\"ticket-price\">'+ money(fee) +'<\/div>'+\r\n        '<\/div>');\r\n    });\r\n    var subtotal = fee * list.length;\r\n    var discount = 0;\r\n    if(discountType === 'amount'){ discount = Math.min(discountValue, subtotal); }\r\n    else if(discountType === 'percent'){ discount = Math.round(subtotal * discountValue * 100) \/ 100; }\r\n    $('#sumSubtotal').textContent = money(subtotal);\r\n    if(discount > 0){\r\n      $('#discountRow').style.display = 'flex';\r\n      $('#discountLabel').textContent = discountName + (\r\n        discountType === 'amount' ? ' (' + money(discountValue) + ' off)' : ' (' + Math.round(discountValue * 100) + '% off)');\r\n      $('#sumDiscount').textContent = '\u2212' + money(discount);\r\n    } else {\r\n      $('#discountRow').style.display = 'none';\r\n    }\r\n    $('#sumTotal').textContent = money(subtotal - discount);\r\n  }\r\n\r\n  \/* ---------- Discount code (validated by the server) ---------- *\/\r\n  window.applyDiscount = function(){\r\n    var code = val('#discountCode').toUpperCase();\r\n    var msg = $('#discountMsg');\r\n    if(!code){\r\n      discountType = ''; discountValue = 0; discountName = '';\r\n      msg.className = 'discount-msg'; msg.textContent = '';\r\n      buildSummary();\r\n      return;\r\n    }\r\n    msg.className = 'discount-msg ok';\r\n    msg.textContent = 'Checking\u2026';\r\n    api('?action=discount&code=' + encodeURIComponent(code))\r\n      .then(function(d){\r\n        if(d.valid){\r\n          discountType = d.type; discountName = d.code; discountValue = Number(d.value);\r\n          msg.className = 'discount-msg ok';\r\n          msg.textContent = 'Code applied \u2014 ' + (d.type === 'amount' ? (money(d.value) + ' off.') : (Math.round(d.value * 100) + '% off.'));\r\n        } else {\r\n          discountType = ''; discountValue = 0; discountName = '';\r\n          msg.className = 'discount-msg err';\r\n          msg.textContent = 'That code was not recognized.';\r\n        }\r\n        buildSummary();\r\n      })\r\n      .catch(function(){\r\n        msg.className = 'discount-msg err';\r\n        msg.textContent = 'Couldn\\'t check that code right now. Try again in a moment.';\r\n      });\r\n  };\r\n\r\n  \/* ---------- Step navigation ---------- *\/\r\n  var currentStep = 0;\r\n  window.goTo = function(n){\r\n    if(currentStep === 2) return;\r\n    if(n > 1) return;\r\n    if(n === 1 && currentStep === 0 && !validateStep0()) return;\r\n    document.getElementById('step' + currentStep).classList.remove('visible');\r\n    document.getElementById('step' + n).classList.add('visible');\r\n    for(var i = 0; i < 3; i++){\r\n      var b = document.getElementById('b' + i), l = document.getElementById('l' + i);\r\n      b.classList.remove('active', 'done'); l.classList.remove('active');\r\n      if(i < n){ b.classList.add('done'); }\r\n      else if(i === n){ b.classList.add('active'); l.classList.add('active'); }\r\n      if(i < 2){ document.getElementById('c' + i).classList.toggle('done', i < n); }\r\n    }\r\n    currentStep = n;\r\n    if(n === 1) buildSummary();\r\n    window.scrollTo({ top: 0, behavior: 'smooth' });\r\n  };\r\n\r\n  \/* ---------- Submit \u2192 Stripe Checkout ---------- *\/\r\n  window.complete = function(){\r\n    if(!validateStep0()){ goTo(0); return; }\r\n    if(!$('#consent').checked){\r\n      $('#consentError').classList.add('show');\r\n      $('#consent').scrollIntoView({ behavior: 'smooth', block: 'center' });\r\n      return;\r\n    }\r\n    $('#consentError').classList.remove('show');\r\n    showErrors(1, []);\r\n\r\n    var btn = document.getElementById('completeBtn');\r\n    btn.disabled = true;\r\n    btn.innerHTML = '<i class=\"ti ti-loader-2\" aria-hidden=\"true\"><\/i>Taking you to payment\u2026';\r\n\r\n    var payload = { eventId: EVENT_CONFIG.eventId, registrants: collectRegistrants(), discountCode: discountName };\r\n\r\n    api('?action=createCheckout', payload)\r\n      .then(function(data){\r\n        if(data.checkoutUrl){ window.location.href = data.checkoutUrl; return; }\r\n        throw new Error(data.error || 'Something went wrong. Please try again.');\r\n      })\r\n      .catch(function(err){\r\n        showErrors(1, [err.message || 'We couldn\\'t reach the registration server. Please try again.']);\r\n        btn.disabled = false;\r\n        btn.innerHTML = 'Continue to payment <i class=\"ti ti-arrow-right\" aria-hidden=\"true\"><\/i>';\r\n      });\r\n  };\r\n\r\n  $('#consent').addEventListener('change', function(){\r\n    if(this.checked) $('#consentError').classList.remove('show');\r\n  });\r\n\r\n  \/* ---------- Coming back from Stripe (?rid=...) ---------- *\/\r\n  function showConfirmation(data){\r\n    hideOverlay();\r\n    $('#confNumber').textContent = data.registrationId || '\u2014';\r\n    $('#confRegistrants').textContent = (data.registrants || []).join(', ') || '\u2014';\r\n    $('#confTotal').textContent = money(Number(data.amountPaid) || 0);\r\n    document.getElementById('step' + currentStep).classList.remove('visible');\r\n    document.getElementById('step2').classList.add('visible');\r\n    for(var i = 0; i < 3; i++){\r\n      var b = document.getElementById('b' + i), l = document.getElementById('l' + i);\r\n      b.classList.remove('active'); l.classList.remove('active');\r\n      if(i < 2){ b.classList.add('done'); document.getElementById('c' + i).classList.add('done'); }\r\n    }\r\n    document.getElementById('b2').classList.add('active');\r\n    document.getElementById('l2').classList.add('active');\r\n    currentStep = 2;\r\n    window.scrollTo({ top: 0, behavior: 'smooth' });\r\n  }\r\n\r\n  (function handleReturnFromStripe(){\r\n    var params = new URLSearchParams(window.location.search);\r\n    var rid = params.get('rid');\r\n    if(!rid) return;\r\n\r\n    if(params.get('canceled')){\r\n      document.getElementById('canceledBanner').classList.add('show');\r\n      goTo(1);\r\n      return;\r\n    }\r\n\r\n    showOverlay();\r\n    function stillConfirming(){\r\n      hideOverlay();\r\n      showErrors(1, ['Your payment went through, but we\\'re still confirming it. Your confirmation number is ' + rid + ' \u2014 save it, and check your email in a few minutes.']);\r\n      goTo(1);\r\n    }\r\n\r\n    var attempts = 0;\r\n    (function poll(){\r\n      attempts++;\r\n      api('?action=status&rid=' + encodeURIComponent(rid))\r\n        .then(function(data){\r\n          if(data.ok && data.status === 'paid'){\r\n            showConfirmation(data);\r\n            history.replaceState({}, '', window.location.pathname);\r\n            return;\r\n          }\r\n          if(data.ok === false && attempts >= 2){\r\n            hideOverlay();\r\n            showErrors(1, ['We couldn\\'t confirm your payment automatically: ' + (data.error || 'unknown error') + '. Your confirmation number is ' + rid + ' \u2014 please save it and contact us if you were charged.']);\r\n            goTo(1);\r\n            return;\r\n          }\r\n          if(attempts < 8){ setTimeout(poll, 1500); return; }\r\n          stillConfirming();\r\n        })\r\n        .catch(function(){\r\n          if(attempts < 8){ setTimeout(poll, 1500); return; }\r\n          stillConfirming();\r\n        });\r\n    })();\r\n  })();\r\n})();\r\n<\/script>\r\n<\/body>\r\n<\/html>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<img fetchpriority=\"high\" decoding=\"async\" class=\"e-image-base e-default-img e-d95064c-b37449d\" data-interaction-id=\"d95064c\" data-e-type=\"widget\" data-id=\"d95064c\" id=\"3269\" src=\"https:\/\/muslimcongress.org\/new\/wp-content\/uploads\/2026\/10\/TownhallPoster2026.jpg\" width=\"1200\" height=\"1553\" srcset=\"https:\/\/muslimcongress.org\/new\/wp-content\/uploads\/2026\/10\/TownhallPoster2026.jpg 1200w, https:\/\/muslimcongress.org\/new\/wp-content\/uploads\/2026\/10\/TownhallPoster2026-232x300.jpg 232w, https:\/\/muslimcongress.org\/new\/wp-content\/uploads\/2026\/10\/TownhallPoster2026-791x1024.jpg 791w, https:\/\/muslimcongress.org\/new\/wp-content\/uploads\/2026\/10\/TownhallPoster2026-768x994.jpg 768w, https:\/\/muslimcongress.org\/new\/wp-content\/uploads\/2026\/10\/TownhallPoster2026-1187x1536.jpg 1187w\" alt=\"\"\/>\t\t\n<\/div>\n\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Conference Details Use the form below to register for the Town Hall. Note: You do not have to register for this if you are already registered for the conference. Saturday, Nov. 7 2026 7:30 PM The Westin Southfield Detroit, Michigan Muslim Congress Town Hall \u2014 Registration Muslim Congress Town Hall registration 1Attendees 2Payment 3Confirmed Attendees [&hellip;]<\/p>\n","protected":false},"author":3,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"elementor_header_footer","meta":{"_acf_changed":false,"_angie_page":false,"footnotes":""},"class_list":["post-3232","page","type-page","status-publish","hentry"],"acf":[],"_links":{"self":[{"href":"https:\/\/muslimcongress.org\/new\/wp-json\/wp\/v2\/pages\/3232","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/muslimcongress.org\/new\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/muslimcongress.org\/new\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/muslimcongress.org\/new\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/muslimcongress.org\/new\/wp-json\/wp\/v2\/comments?post=3232"}],"version-history":[{"count":5,"href":"https:\/\/muslimcongress.org\/new\/wp-json\/wp\/v2\/pages\/3232\/revisions"}],"predecessor-version":[{"id":3272,"href":"https:\/\/muslimcongress.org\/new\/wp-json\/wp\/v2\/pages\/3232\/revisions\/3272"}],"wp:attachment":[{"href":"https:\/\/muslimcongress.org\/new\/wp-json\/wp\/v2\/media?parent=3232"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}