diff --git a/Client-Registration/dist/bundle.js b/Client-Registration/dist/bundle.js
index 545f1b2..45f1b1f 100644
--- a/Client-Registration/dist/bundle.js
+++ b/Client-Registration/dist/bundle.js
@@ -1,2 +1,2 @@
/*! For license information please see bundle.js.LICENSE.txt */
-(()=>{"use strict";var e={877(e,t,n){n.d(t,{A:()=>s});var r=n(601),o=n.n(r),i=n(314),a=n.n(i)()(o());a.push([e.id,"/* ============================================================\n AdPlatform Registration Portal Styles\n ============================================================ */\n\n* { box-sizing: border-box; margin: 0; padding: 0; }\n\n:root {\n --bg: #f4f5f7;\n --surface: #ffffff;\n --card-bg: #ffffff;\n --border: rgba(0,0,0,0.09);\n --border-light: rgba(0,0,0,0.05);\n --text: #1a1d23;\n --text-secondary: #5f6672;\n --text-dim: #9099a4;\n --accent: #3b82f6;\n --accent-hover: #2563eb;\n --accent-light: rgba(59,130,246,0.08);\n --danger: #dc2626;\n --danger-bg: #fef2f2;\n --success: #16a34a;\n --success-bg: #dcfce7;\n --warning-bg: #fef3cd;\n --warning-border: #ffc107;\n --warning-text: #856404;\n --header-height: 56px;\n --card-radius: 12px;\n}\n\nbody {\n font-family: 'DM Sans', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;\n font-size: 14px;\n line-height: 1.5;\n color: var(--text);\n background: var(--bg);\n}\n\n\n/* ============================================================\n Shell Layout\n ============================================================ */\n\n.shell { min-height: 100vh; display: flex; flex-direction: column; }\n\n.shell-header {\n background: #1a1a2e;\n color: #fff;\n padding: 0 24px;\n height: var(--header-height);\n display: flex;\n align-items: center;\n justify-content: space-between;\n}\n\n.shell-logo { display: flex; align-items: center; gap: 8px; }\n.logo-icon { font-size: 24px; color: var(--accent); }\n.logo-text { font-size: 18px; font-weight: 600; }\n.logo-badge {\n font-size: 11px;\n background: var(--accent);\n padding: 2px 8px;\n border-radius: 4px;\n text-transform: uppercase;\n}\n\n.shell-user { display: flex; align-items: center; gap: 16px; }\n.user-name { font-size: 13px; opacity: 0.9; }\n\n.btn-signout {\n background: transparent;\n border: 1px solid rgba(255,255,255,0.3);\n color: #fff;\n padding: 6px 12px;\n border-radius: 4px;\n cursor: pointer;\n font-size: 12px;\n font-family: inherit;\n}\n.btn-signout:hover { background: rgba(255,255,255,0.1); }\n\n.shell-content {\n flex: 1;\n padding: 32px 24px;\n display: flex;\n justify-content: center;\n}\n\n.shell-footer {\n background: #1a1a2e;\n color: rgba(255,255,255,0.5);\n padding: 12px 24px;\n font-size: 12px;\n text-align: center;\n}\n\n\n/* ============================================================\n Loading\n ============================================================ */\n\n.loading-container {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 80px 0;\n color: var(--text-dim);\n gap: 16px;\n}\n\n.spinner {\n width: 32px;\n height: 32px;\n border: 3px solid var(--border);\n border-top-color: var(--accent);\n border-radius: 50%;\n animation: spin 0.6s linear infinite;\n}\n\n@keyframes spin {\n to { transform: rotate(360deg); }\n}\n\n\n/* ============================================================\n Wizard Container\n ============================================================ */\n\n.wizard-container {\n width: 100%;\n max-width: 580px;\n}\n\n\n/* ============================================================\n Progress Stepper\n ============================================================ */\n\n.stepper {\n display: flex;\n align-items: flex-start;\n justify-content: center;\n margin-bottom: 28px;\n padding: 0 8px;\n}\n\n.stepper-item {\n display: flex;\n flex-direction: column;\n align-items: center;\n min-width: 56px;\n}\n\n.stepper-circle {\n width: 32px;\n height: 32px;\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 13px;\n font-weight: 600;\n background: #e5e7eb;\n color: var(--text-dim);\n transition: all 0.25s ease;\n}\n\n.stepper-active .stepper-circle {\n background: var(--accent);\n color: #fff;\n}\n\n.stepper-complete .stepper-circle {\n background: var(--success);\n color: #fff;\n}\n\n.stepper-label {\n font-size: 11px;\n margin-top: 4px;\n color: var(--text-dim);\n font-weight: 400;\n}\n\n.stepper-active .stepper-label {\n color: var(--accent);\n font-weight: 600;\n}\n\n.stepper-complete .stepper-label {\n color: var(--success);\n}\n\n.stepper-line {\n flex: 1;\n height: 2px;\n background: #e5e7eb;\n margin: 15px 8px 0;\n transition: background 0.25s ease;\n}\n\n.stepper-line-complete {\n background: var(--success);\n}\n\n\n/* ============================================================\n Step Card\n ============================================================ */\n\n.step-card {\n background: var(--card-bg);\n border: 1px solid var(--border);\n border-radius: var(--card-radius);\n padding: 32px;\n box-shadow: 0 1px 3px rgba(0,0,0,0.04), 0 4px 16px rgba(0,0,0,0.03);\n}\n\n.step-header {\n text-align: center;\n margin-bottom: 24px;\n}\n\n.step-icon {\n font-size: 32px;\n display: block;\n margin-bottom: 8px;\n}\n\n.step-header h2 {\n font-size: 20px;\n font-weight: 700;\n color: var(--text);\n margin-bottom: 6px;\n}\n\n.step-description {\n color: var(--text-secondary);\n font-size: 14px;\n line-height: 1.5;\n max-width: 400px;\n margin: 0 auto;\n}\n\n.step-fine-print {\n text-align: center;\n font-size: 12px;\n color: var(--text-dim);\n line-height: 1.6;\n margin-top: 24px;\n}\n\n\n/* ============================================================\n Sign-In Providers\n ============================================================ */\n\n.provider-list {\n display: flex;\n flex-direction: column;\n gap: 10px;\n max-width: 360px;\n margin: 0 auto;\n}\n\n.btn-provider {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 12px 20px;\n border-radius: 8px;\n border: 1px solid var(--border);\n font-size: 14px;\n font-weight: 500;\n font-family: inherit;\n cursor: pointer;\n transition: all 0.15s ease;\n background: var(--surface);\n color: var(--text);\n}\n\n.btn-provider:hover { border-color: var(--accent); background: var(--accent-light); }\n.btn-provider:disabled { opacity: 0.5; cursor: not-allowed; }\n\n.btn-provider-google { background: #fff; border-color: #d1d5db; }\n.btn-provider-apple { background: #000; color: #fff; border-color: #000; }\n.btn-provider-apple:hover { background: #1a1a1a; border-color: #1a1a1a; }\n.btn-provider-microsoft { background: #0078d4; color: #fff; border-color: #0078d4; }\n.btn-provider-microsoft:hover { background: #006abc; border-color: #006abc; }\n\n/* Two-path landing */\n.path-choice { display: flex; flex-direction: column; gap: 12px; margin-top: 8px; }\n\n.btn-path {\n display: flex; align-items: center; gap: 16px;\n padding: 18px 20px; border-radius: 12px; border: 2px solid var(--border);\n background: #fff; cursor: pointer; text-align: left;\n transition: border-color 0.15s, box-shadow 0.15s;\n width: 100%;\n}\n.btn-path:hover { border-color: var(--accent); box-shadow: 0 0 0 3px var(--accent-light); }\n.btn-path-primary:hover { border-color: #0078d4; box-shadow: 0 0 0 3px rgba(0,120,212,0.1); }\n\n.path-icon { font-size: 24px; flex-shrink: 0; }\n.path-text { flex: 1; display: flex; flex-direction: column; gap: 2px; }\n.path-text strong { font-size: 15px; color: var(--text); font-weight: 600; }\n.path-text span { font-size: 13px; color: var(--text-muted); }\n.path-arrow { font-size: 18px; color: var(--text-muted); flex-shrink: 0; }\n\n.btn-back {\n display: inline-flex; align-items: center; gap: 4px;\n background: none; border: none; cursor: pointer;\n color: var(--text-muted); font-size: 14px; padding: 0 0 16px 0;\n transition: color 0.15s;\n}\n.btn-back:hover { color: var(--text); }\n\n.provider-icon {\n font-size: 18px;\n width: 24px;\n text-align: center;\n}\n\n\n/* ============================================================\n Forms\n ============================================================ */\n\n.form-group {\n margin-bottom: 16px;\n}\n\n.form-group label {\n display: block;\n font-size: 13px;\n font-weight: 600;\n color: var(--text);\n margin-bottom: 5px;\n}\n\n.required { color: var(--danger); }\n\n.form-group input,\n.form-group select,\n.form-group textarea {\n width: 100%;\n padding: 10px 14px;\n border-radius: 8px;\n border: 1px solid #d1d5db;\n font-size: 14px;\n font-family: inherit;\n color: var(--text);\n background: var(--surface);\n transition: border-color 0.15s ease;\n outline: none;\n}\n\n.form-group input:focus,\n.form-group select:focus,\n.form-group textarea:focus {\n border-color: var(--accent);\n box-shadow: 0 0 0 3px var(--accent-light);\n}\n\n.form-group textarea {\n resize: vertical;\n line-height: 1.5;\n}\n\n.form-group select {\n cursor: pointer;\n}\n\n.form-help {\n display: block;\n font-size: 12px;\n color: var(--text-dim);\n margin-top: 4px;\n}\n\n\n/* ============================================================\n Buttons\n ============================================================ */\n\n.step-actions {\n display: flex;\n justify-content: flex-end;\n gap: 12px;\n margin-top: 24px;\n}\n\n.btn-primary {\n padding: 10px 24px;\n border-radius: 8px;\n border: none;\n background: var(--accent);\n color: #fff;\n font-size: 14px;\n font-weight: 600;\n font-family: inherit;\n cursor: pointer;\n transition: background 0.15s ease;\n}\n\n.btn-primary:hover { background: var(--accent-hover); }\n.btn-primary:disabled { opacity: 0.5; cursor: not-allowed; }\n\n.btn-secondary {\n padding: 10px 24px;\n border-radius: 8px;\n border: 1px solid var(--border);\n background: var(--surface);\n color: var(--text);\n font-size: 14px;\n font-weight: 500;\n font-family: inherit;\n cursor: pointer;\n transition: all 0.15s ease;\n}\n\n.btn-secondary:hover { background: var(--bg); }\n\n\n/* ============================================================\n Info Cards & Banners\n ============================================================ */\n\n.info-card {\n background: var(--bg);\n border: 1px solid var(--border-light);\n border-radius: 8px;\n padding: 12px 16px;\n margin-bottom: 20px;\n}\n\n.info-card-primary {\n font-weight: 600;\n color: var(--text);\n font-size: 14px;\n}\n\n.info-card-secondary {\n font-size: 13px;\n color: var(--text-secondary);\n}\n\n.info-banner {\n background: #eff6ff;\n border: 1px solid #bfdbfe;\n border-radius: 8px;\n padding: 12px 16px;\n font-size: 13px;\n color: #1e40af;\n line-height: 1.5;\n margin-bottom: 16px;\n}\n\n.info-banner code {\n background: #dbeafe;\n padding: 1px 6px;\n border-radius: 4px;\n font-size: 12px;\n}\n\n.info-banner-highlight {\n background: #fefce8;\n border-color: #fde68a;\n color: #92400e;\n}\n\n.info-banner-highlight code {\n background: #fef3c7;\n}\n\n\n/* ============================================================\n Error\n ============================================================ */\n\n.error-message {\n background: var(--danger-bg);\n border: 1px solid #fecaca;\n border-radius: 8px;\n padding: 10px 16px;\n color: #991b1b;\n font-size: 13px;\n margin-bottom: 16px;\n}\n\n\n/* ============================================================\n Review Step\n ============================================================ */\n\n.review-section {\n margin-bottom: 20px;\n}\n\n.review-section-title {\n font-size: 12px;\n font-weight: 700;\n color: var(--text-secondary);\n text-transform: uppercase;\n letter-spacing: 0.05em;\n margin-bottom: 8px;\n}\n\n.review-section-body {\n background: var(--bg);\n border-radius: 8px;\n padding: 12px 16px;\n}\n\n.review-row {\n display: flex;\n justify-content: space-between;\n padding: 5px 0;\n border-bottom: 1px solid var(--border-light);\n}\n\n.review-row:last-child { border-bottom: none; }\n\n.review-label {\n color: var(--text-secondary);\n font-size: 13px;\n}\n\n.review-value {\n color: var(--text);\n font-size: 13px;\n font-weight: 500;\n text-align: right;\n max-width: 60%;\n word-break: break-word;\n}\n\n\n/* ============================================================\n Confirmation Step\n ============================================================ */\n\n.confirmation-hero {\n text-align: center;\n padding: 24px 0;\n}\n\n.confirmation-check {\n width: 72px;\n height: 72px;\n border-radius: 50%;\n background: linear-gradient(135deg, var(--success), #059669);\n color: #fff;\n font-size: 32px;\n display: flex;\n align-items: center;\n justify-content: center;\n margin: 0 auto 20px;\n}\n\n.confirmation-hero h2 {\n font-size: 24px;\n font-weight: 700;\n color: var(--text);\n margin-bottom: 8px;\n}\n\n\n/* ── Next Steps ── */\n\n.next-steps {\n background: var(--bg);\n border-radius: var(--card-radius);\n padding: 24px;\n margin-bottom: 16px;\n}\n\n.next-steps-title {\n font-size: 12px;\n font-weight: 700;\n color: var(--text-secondary);\n text-transform: uppercase;\n letter-spacing: 0.05em;\n margin-bottom: 16px;\n}\n\n.next-steps-list {\n display: flex;\n flex-direction: column;\n gap: 16px;\n}\n\n.next-step-item {\n display: flex;\n gap: 14px;\n align-items: flex-start;\n}\n\n.next-step-icon {\n width: 40px;\n height: 40px;\n border-radius: 8px;\n background: var(--surface);\n border: 1px solid var(--border);\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 18px;\n flex-shrink: 0;\n}\n\n.next-step-label {\n font-weight: 600;\n color: var(--text);\n font-size: 14px;\n margin-bottom: 2px;\n}\n\n.next-step-desc {\n color: var(--text-secondary);\n font-size: 13px;\n line-height: 1.4;\n}\n\n\n/* ============================================================\n Responsive\n ============================================================ */\n\n@media (max-width: 640px) {\n .shell-content { padding: 20px 12px; }\n .step-card { padding: 24px 20px; }\n .stepper-label { font-size: 10px; }\n .stepper-item { min-width: 44px; }\n .review-row { flex-direction: column; gap: 2px; }\n .review-value { text-align: left; max-width: 100%; }\n}\n\n/* ── Account Type Selector ─────────────────────────────────────────────── */\n\n.account-type-list {\n display: flex;\n flex-direction: column;\n gap: 10px;\n}\n\n.account-type-option {\n display: flex;\n align-items: center;\n gap: 14px;\n width: 100%;\n padding: 14px 16px;\n background: var(--surface);\n border: 2px solid var(--border);\n border-radius: 10px;\n cursor: pointer;\n text-align: left;\n transition: border-color 0.15s, background 0.15s;\n}\n\n.account-type-option:hover {\n border-color: var(--accent);\n background: var(--bg);\n}\n\n.account-type-option.selected {\n border-color: var(--accent);\n background: var(--accent-light);\n}\n\n.account-type-icon {\n font-size: 22px;\n flex-shrink: 0;\n width: 36px;\n text-align: center;\n}\n\n.account-type-text {\n flex: 1;\n display: flex;\n flex-direction: column;\n gap: 2px;\n}\n\n.account-type-label {\n font-weight: 600;\n font-size: 14px;\n color: var(--text);\n}\n\n.account-type-desc {\n font-size: 13px;\n color: var(--text-secondary);\n line-height: 1.4;\n}\n\n.account-type-check {\n width: 22px;\n height: 22px;\n border-radius: 50%;\n border: 2px solid var(--border);\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 12px;\n font-weight: 700;\n color: white;\n background: transparent;\n flex-shrink: 0;\n transition: background 0.15s, border-color 0.15s;\n}\n\n.account-type-option.selected .account-type-check {\n background: var(--accent);\n border-color: var(--accent);\n}\n",""]);const s=a},314(e){e.exports=function(e){var t=[];return t.toString=function(){return this.map(function(t){var n="",r=void 0!==t[5];return t[4]&&(n+="@supports (".concat(t[4],") {")),t[2]&&(n+="@media ".concat(t[2]," {")),r&&(n+="@layer".concat(t[5].length>0?" ".concat(t[5]):""," {")),n+=e(t),r&&(n+="}"),t[2]&&(n+="}"),t[4]&&(n+="}"),n}).join("")},t.i=function(e,n,r,o,i){"string"==typeof e&&(e=[[null,e,void 0]]);var a={};if(r)for(var s=0;s
No information available for this topic yet.
")}).finally(function(){return f(!1)})},[t]),r.createElement("div",{className:"svc-popup-backdrop",onClick:function(e){e.target===e.currentTarget&&o()}},r.createElement("div",{className:"svc-popup"},r.createElement("div",{className:"svc-popup-bar",style:{background:a.color}}),r.createElement("div",{className:"svc-popup-head"},r.createElement("div",null,r.createElement("div",{className:"svc-popup-title",style:{color:a.color}},a.label),r.createElement("div",{className:"svc-popup-sub"},a.sub)),r.createElement("button",{className:"svc-popup-close",onClick:o},"✕")),r.createElement("div",{className:"svc-popup-status-row"},r.createElement("div",{className:"svc-popup-stat"},r.createElement("div",{className:"svc-popup-stat-label"},"STATUS"),r.createElement("div",{className:"svc-popup-stat-value",style:{color:n?i:"#94a3b8"}},n&&r.createElement("span",{className:"svc-popup-dot",style:{background:i,boxShadow:"0 0 4px ".concat(i)}}),{healthy:"Healthy",error:"Error",unreachable:"Unreachable"}[null==n?void 0:n.status]||"Not checked")),null!=(null==n?void 0:n.ms)&&r.createElement("div",{className:"svc-popup-stat"},r.createElement("div",{className:"svc-popup-stat-label"},"RESPONSE"),r.createElement("div",{className:"svc-popup-stat-value"},n.ms,"ms")),r.createElement("div",{className:"svc-popup-stat"},r.createElement("div",{className:"svc-popup-stat-label"},"TIER"),r.createElement("div",{className:"svc-popup-stat-value",style:{color:"#64748b"}},"public"===a.tier?"Public":"registration"===a.tier?"Registration":"Internal"))),"none"!==a.mode&&r.createElement("div",{className:"svc-popup-section"},r.createElement("div",{className:"svc-popup-section-label"},"HEALTH ENDPOINT"),r.createElement("code",{className:"svc-popup-code"},"direct"===a.mode?a.url:"POST ".concat(xc,'/api/execution/request → provider: "').concat(a.provider,'" → Ping'))),r.createElement("div",{className:"svc-popup-section"},r.createElement("div",{className:"svc-popup-section-label"},"ABOUT"),p?r.createElement("p",{className:"svc-popup-loading"},"Loading…"):r.createElement("div",{className:"svc-popup-about",dangerouslySetInnerHTML:{__html:u}})),r.createElement("div",{className:"svc-popup-section"},r.createElement("div",{className:"svc-popup-section-label"},"STACK"),r.createElement("div",{className:"svc-popup-tech"},a.tech)),(null==n?void 0:n.message)&&r.createElement("div",{className:"svc-popup-section"},r.createElement("div",{className:"svc-popup-section-label"},"DETAIL"),r.createElement("code",{className:"svc-popup-code svc-popup-error"},n.message))))}function gu(e){var t=e.results,n=e.onNodeClick;return r.createElement("div",{className:"arch2-wrap"},r.createElement("div",{className:"arch2-title"},"Platform Architecture"),r.createElement("div",{className:"arch2-top"},r.createElement("div",{className:"arch2-tier",style:{flex:1}},r.createElement("div",{className:"arch2-tier-label"},"Public Access"),r.createElement("div",{className:"arch2-tier-nodes"},cu.map(function(e){return r.createElement(pu,{key:e,id:e,result:t[e],onClick:n})})),r.createElement("div",{className:"arch2-db-connector"},r.createElement("div",{className:"arch2-vline"}),r.createElement("div",{className:"arch2-db"},"🗄 SQL DB"))),r.createElement("div",{className:"arch2-pillar-sep"}),r.createElement("div",{className:"arch2-tier arch2-tier-reg"},r.createElement("div",{className:"arch2-tier-label"},"Registration"),r.createElement("div",{className:"arch2-tier-nodes"},lu.map(function(e){return r.createElement(pu,{key:e,id:e,result:t[e],onClick:n})})),r.createElement("div",{className:"arch2-db-connector"},r.createElement("div",{className:"arch2-vline"}),r.createElement("div",{className:"arch2-db"},"🗄 Reg DB")))),r.createElement("div",{className:"arch2-arrow-zone"},r.createElement("div",{className:"arch2-arrow-line"},r.createElement("span",{className:"arch2-arrow-label"},"internal routing via Gateway"))),r.createElement("div",{className:"arch2-tier arch2-tier-internal"},r.createElement("div",{className:"arch2-tier-label"},"Internal Only — Azure Container Apps"),r.createElement("div",{className:"arch2-tier-nodes arch2-tier-nodes-center"},uu.map(function(e){return r.createElement(pu,{key:e,id:e,result:t[e],onClick:n})}))),r.createElement("div",{className:"arch2-legend"},[["#22c55e","Healthy"],["#f59e0b","Error"],["#ef4444","Unreachable"],["#cbd5e1","Not checked"]].map(function(e){var t=au(e,2),n=t[0],o=t[1];return r.createElement("span",{key:o,className:"arch2-legend-item"},r.createElement("span",{className:"arch2-legend-dot",style:{background:n}}),o)})))}function mu(){var e=Fc().getIdToken,t=au((0,r.useState)({}),2),n=t[0],o=t[1],a=au((0,r.useState)(!1),2),i=a[0],s=a[1],c=au((0,r.useState)(null),2),l=c[0],u=c[1],d=au((0,r.useState)(null),2),h=d[0],p=d[1],f=(0,r.useCallback)(ou(Xl().m(function t(){var n,r;return Xl().w(function(t){for(;;)switch(t.n){case 0:return s(!0),n={},t.n=1,e();case 1:return r=t.v,t.n=2,Promise.all(du.map(function(){var e=ou(Xl().m(function e(t){var o,a,i,s,c,l,u,d;return Xl().w(function(e){for(;;)switch(e.p=e.n){case 0:if(o=su[t],a=performance.now(),e.p=1,"direct"!==o.mode){e.n=3;break}return e.n=2,fetch(o.url,{signal:AbortSignal.timeout(8e3)});case 2:i=e.v,e.n=5;break;case 3:return e.n=4,fetch("".concat(xc,"/api/execution/request"),{method:"POST",headers:tu({"Content-Type":"application/json"},r?{Authorization:"Bearer ".concat(r)}:{}),body:JSON.stringify({provider:o.provider,operation:"Ping",payload:{}}),signal:AbortSignal.timeout(8e3)});case 4:i=e.v;case 5:if(s=Math.round(performance.now()-a),!i.ok){e.n=10;break}return c=null,e.p=6,e.n=7,i.json();case 7:c=e.v,e.n=9;break;case 8:e.p=8,e.v;case 9:n[t]={status:"healthy",ms:s,data:c,httpStatus:i.status},e.n=15;break;case 10:return l="",e.p=11,e.n=12,i.text();case 12:l=e.v,e.n=14;break;case 13:e.p=13,e.v;case 14:n[t]={status:"error",ms:s,httpStatus:i.status,message:"HTTP ".concat(i.status,": ").concat(l.substring(0,200))};case 15:e.n=17;break;case 16:e.p=16,d=e.v,u=Math.round(performance.now()-a),n[t]={status:"unreachable",ms:u,message:"TimeoutError"===d.name?"Timed out (8s)":d.message};case 17:return e.a(2)}},e,null,[[11,13],[6,8],[1,16]])}));return function(t){return e.apply(this,arguments)}}()));case 2:o(n),u(new Date),s(!1);case 3:return t.a(2)}},t)})),[e]),g=Object.values(n).filter(function(e){return"healthy"===e.status}).length,m=Object.keys(n).length;return r.createElement("div",{className:"health-dashboard"},r.createElement("div",{className:"health-header"},r.createElement("div",{className:"health-title-row"},r.createElement("h3",{className:"health-title"},"⚡ Service Health"),m>0&&r.createElement("span",{className:"health-summary ".concat(g===m?"all-healthy":"has-issues")},g,"/",m," services up")),r.createElement("div",{className:"health-actions"},l&&r.createElement("span",{className:"health-timestamp"},"Last check: ",l.toLocaleTimeString()),r.createElement("button",{className:"token-btn token-btn-primary",onClick:f,disabled:i,style:{minWidth:120}},i?"⟳ Checking…":"▶ Check All"))),0===m&&r.createElement("p",{className:"arch2-hint"},"Click any node for details · Run Check All to test live status"),r.createElement(gu,{results:n,onNodeClick:p}),h&&r.createElement(fu,{id:h,result:n[h],onClose:function(){return p(null)}}))}function yu(e){return yu="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},yu(e)}function vu(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function bu(e){for(var t=1;t
Your help text here…
",value:A.body,onChange:function(e){return _(function(t){return zu(zu({},t),{},{body:e.target.value})})},rows:8})),r.createElement("div",{style:{display:"flex",justifyContent:"flex-end"}},r.createElement("button",{onClick:V,disabled:R,style:{padding:"7px 20px",borderRadius:6,border:"none",background:R?"#93c5fd":"#2563eb",color:"#fff",fontSize:13,fontWeight:500,cursor:R?"not-allowed":"pointer",fontFamily:"inherit"}},R?"Saving…":"Save Entry"))),s&&r.createElement("div",{style:{padding:"40px 0",textAlign:"center",color:"#94a3b8",fontSize:13}},"Loading help content…"),u&&!s&&r.createElement("div",{style:{padding:"12px 16px",background:"#fef2f2",border:"1px solid #fecaca",borderRadius:8,color:"#dc2626",fontSize:13,marginBottom:16}},u),!s&&!u&&0===o.length&&r.createElement("div",{style:{textAlign:"center",padding:"60px 20px",color:"#94a3b8"}},r.createElement("div",{style:{fontSize:32,marginBottom:12}},"📝"),r.createElement("div",{style:{fontWeight:600,color:"#475569",marginBottom:6}},"No help entries yet"),r.createElement("div",{style:{fontSize:13}},"Click ",r.createElement("strong",null,"New Entry")," to create the first one.")),!s&&o.length>0&&r.createElement("div",{style:{background:"#fff",border:"1px solid #e5e7eb",borderRadius:10,overflow:"hidden"}},0===G.length?r.createElement("div",{style:{padding:"32px 20px",textAlign:"center",color:"#94a3b8",fontSize:13}},"No entries match the current filter."):r.createElement("table",{style:{width:"100%",borderCollapse:"collapse"}},r.createElement("thead",null,r.createElement("tr",{style:{background:"#f8fafc",borderBottom:"1px solid #e5e7eb"}},[{label:"Help Key",width:"38%"},{label:"Title",width:null},{label:"Status",width:90},{label:"Updated",width:80},{label:"",width:106}].map(function(e){var t=e.label,n=e.width;return r.createElement("th",{key:t,style:{padding:"10px 16px",textAlign:"left",fontSize:11,fontWeight:700,color:"#94a3b8",letterSpacing:"0.05em",textTransform:"uppercase",width:n||void 0}},t)}))),r.createElement("tbody",null,G.map(function(e,t){return r.createElement("tr",{key:e.helpKey,style:{borderBottom:tNo information available for this topic yet.
")}).finally(function(){return g(!1)})},[t]),o.createElement("div",{className:"svc-popup-backdrop",onClick:function(e){e.target===e.currentTarget&&a()}},o.createElement("div",{className:"svc-popup"},o.createElement("div",{className:"svc-popup-bar",style:{background:i.color}}),o.createElement("div",{className:"svc-popup-head"},o.createElement("div",null,o.createElement("div",{className:"svc-popup-title",style:{color:i.color}},i.label),o.createElement("div",{className:"svc-popup-sub"},i.sub)),o.createElement("button",{className:"svc-popup-close",onClick:a},"✕")),o.createElement("div",{className:"svc-popup-status-row"},o.createElement("div",{className:"svc-popup-stat"},o.createElement("div",{className:"svc-popup-stat-label"},"STATUS"),o.createElement("div",{className:"svc-popup-stat-value",style:{color:n?s:"#94a3b8"}},n&&o.createElement("span",{className:"svc-popup-dot",style:{background:s,boxShadow:"0 0 4px ".concat(s)}}),{healthy:"Healthy",error:"Error",unreachable:"Unreachable"}[null==n?void 0:n.status]||"Not checked")),null!=(null==n?void 0:n.ms)&&o.createElement("div",{className:"svc-popup-stat"},o.createElement("div",{className:"svc-popup-stat-label"},"RESPONSE"),o.createElement("div",{className:"svc-popup-stat-value"},n.ms,"ms")),o.createElement("div",{className:"svc-popup-stat"},o.createElement("div",{className:"svc-popup-stat-label"},"TIER"),o.createElement("div",{className:"svc-popup-stat-value",style:{color:"#64748b"}},"public"===i.tier?"Public":"registration"===i.tier?"Registration":"Internal"))),"none"!==i.mode&&o.createElement("div",{className:"svc-popup-section"},o.createElement("div",{className:"svc-popup-section-label"},"HEALTH ENDPOINT"),o.createElement("code",{className:"svc-popup-code"},"direct"===i.mode?i.url:"POST ".concat(r.API_BASE,'/api/execution/request → provider: "').concat(i.provider,'" → Ping'))),o.createElement("div",{className:"svc-popup-section"},o.createElement("div",{className:"svc-popup-section-label"},"ABOUT"),f?o.createElement("p",{className:"svc-popup-loading"},"Loading…"):o.createElement("div",{className:"svc-popup-about",dangerouslySetInnerHTML:{__html:d}})),o.createElement("div",{className:"svc-popup-section"},o.createElement("div",{className:"svc-popup-section-label"},"STACK"),o.createElement("div",{className:"svc-popup-tech"},i.tech)),(null==n?void 0:n.message)&&o.createElement("div",{className:"svc-popup-section"},o.createElement("div",{className:"svc-popup-section-label"},"DETAIL"),o.createElement("code",{className:"svc-popup-code svc-popup-error"},n.message))))}function fu(e){var t=e.results,n=e.onNodeClick;return o.createElement("div",{className:"arch2-wrap"},o.createElement("div",{className:"arch2-title"},"Platform Architecture"),o.createElement("div",{className:"arch2-top"},o.createElement("div",{className:"arch2-tier",style:{flex:1}},o.createElement("div",{className:"arch2-tier-label"},"Public Access"),o.createElement("div",{className:"arch2-tier-nodes"},su.map(function(e){return o.createElement(hu,{key:e,id:e,result:t[e],onClick:n})})),o.createElement("div",{className:"arch2-db-connector"},o.createElement("div",{className:"arch2-vline"}),o.createElement("div",{className:"arch2-db"},"🗄 SQL DB"))),o.createElement("div",{className:"arch2-pillar-sep"}),o.createElement("div",{className:"arch2-tier arch2-tier-reg"},o.createElement("div",{className:"arch2-tier-label"},"Registration"),o.createElement("div",{className:"arch2-tier-nodes"},cu.map(function(e){return o.createElement(hu,{key:e,id:e,result:t[e],onClick:n})})),o.createElement("div",{className:"arch2-db-connector"},o.createElement("div",{className:"arch2-vline"}),o.createElement("div",{className:"arch2-db"},"🗄 Reg DB")))),o.createElement("div",{className:"arch2-arrow-zone"},o.createElement("div",{className:"arch2-arrow-line"},o.createElement("span",{className:"arch2-arrow-label"},"internal routing via Gateway"))),o.createElement("div",{className:"arch2-tier arch2-tier-internal"},o.createElement("div",{className:"arch2-tier-label"},"Internal Only — Azure Container Apps"),o.createElement("div",{className:"arch2-tier-nodes arch2-tier-nodes-center"},lu.map(function(e){return o.createElement(hu,{key:e,id:e,result:t[e],onClick:n})}))),o.createElement("div",{className:"arch2-legend"},[["#22c55e","Healthy"],["#f59e0b","Error"],["#ef4444","Unreachable"],["#cbd5e1","Not checked"]].map(function(e){var t=ou(e,2),n=t[0],r=t[1];return o.createElement("span",{key:r,className:"arch2-legend-item"},o.createElement("span",{className:"arch2-legend-dot",style:{background:n}}),r)})))}function gu(){var e=Dc().getIdToken,t=ou((0,o.useState)({}),2),n=t[0],a=t[1],i=ou((0,o.useState)(!1),2),s=i[0],c=i[1],l=ou((0,o.useState)(null),2),u=l[0],d=l[1],h=ou((0,o.useState)(null),2),p=h[0],f=h[1],g=(0,o.useCallback)(ru(Jl().m(function t(){var n,o;return Jl().w(function(t){for(;;)switch(t.n){case 0:return c(!0),n={},t.n=1,e();case 1:return o=t.v,t.n=2,Promise.all(uu.map(function(){var e=ru(Jl().m(function e(t){var a,i,s,c,l,u,d,h;return Jl().w(function(e){for(;;)switch(e.p=e.n){case 0:if(a=iu[t],i=performance.now(),e.p=1,"direct"!==a.mode){e.n=3;break}return e.n=2,fetch(a.url,{signal:AbortSignal.timeout(8e3)});case 2:s=e.v,e.n=5;break;case 3:return e.n=4,fetch("".concat(r.API_BASE,"/api/execution/request"),{method:"POST",headers:eu({"Content-Type":"application/json"},o?{Authorization:"Bearer ".concat(o)}:{}),body:JSON.stringify({provider:a.provider,operation:"Ping",payload:{}}),signal:AbortSignal.timeout(8e3)});case 4:s=e.v;case 5:if(c=Math.round(performance.now()-i),!s.ok){e.n=10;break}return l=null,e.p=6,e.n=7,s.json();case 7:l=e.v,e.n=9;break;case 8:e.p=8,e.v;case 9:n[t]={status:"healthy",ms:c,data:l,httpStatus:s.status},e.n=15;break;case 10:return u="",e.p=11,e.n=12,s.text();case 12:u=e.v,e.n=14;break;case 13:e.p=13,e.v;case 14:n[t]={status:"error",ms:c,httpStatus:s.status,message:"HTTP ".concat(s.status,": ").concat(u.substring(0,200))};case 15:e.n=17;break;case 16:e.p=16,h=e.v,d=Math.round(performance.now()-i),n[t]={status:"unreachable",ms:d,message:"TimeoutError"===h.name?"Timed out (8s)":h.message};case 17:return e.a(2)}},e,null,[[11,13],[6,8],[1,16]])}));return function(t){return e.apply(this,arguments)}}()));case 2:a(n),d(new Date),c(!1);case 3:return t.a(2)}},t)})),[e]),m=Object.values(n).filter(function(e){return"healthy"===e.status}).length,y=Object.keys(n).length;return o.createElement("div",{className:"health-dashboard"},o.createElement("div",{className:"health-header"},o.createElement("div",{className:"health-title-row"},o.createElement("h3",{className:"health-title"},"⚡ Service Health"),y>0&&o.createElement("span",{className:"health-summary ".concat(m===y?"all-healthy":"has-issues")},m,"/",y," services up")),o.createElement("div",{className:"health-actions"},u&&o.createElement("span",{className:"health-timestamp"},"Last check: ",u.toLocaleTimeString()),o.createElement("button",{className:"token-btn token-btn-primary",onClick:g,disabled:s,style:{minWidth:120}},s?"⟳ Checking…":"▶ Check All"))),0===y&&o.createElement("p",{className:"arch2-hint"},"Click any node for details · Run Check All to test live status"),o.createElement(fu,{results:n,onNodeClick:f}),p&&o.createElement(pu,{id:p,result:n[p],onClose:function(){return f(null)}}))}function mu(e){return mu="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},mu(e)}function yu(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function vu(e){for(var t=1;t
Your help text here…
",value:_.body,onChange:function(e){return P(function(t){return Ou(Ou({},t),{},{body:e.target.value})})},rows:8})),o.createElement("div",{style:{display:"flex",justifyContent:"flex-end"}},o.createElement("button",{onClick:Y,disabled:N,style:{padding:"7px 20px",borderRadius:6,border:"none",background:N?"#93c5fd":"#2563eb",color:"#fff",fontSize:13,fontWeight:500,cursor:N?"not-allowed":"pointer",fontFamily:"inherit"}},N?"Saving…":"Save Entry"))),c&&o.createElement("div",{style:{padding:"40px 0",textAlign:"center",color:"#94a3b8",fontSize:13}},"Loading help content…"),d&&!c&&o.createElement("div",{style:{padding:"12px 16px",background:"#fef2f2",border:"1px solid #fecaca",borderRadius:8,color:"#dc2626",fontSize:13,marginBottom:16}},d),!c&&!d&&0===a.length&&o.createElement("div",{style:{textAlign:"center",padding:"60px 20px",color:"#94a3b8"}},o.createElement("div",{style:{fontSize:32,marginBottom:12}},"📝"),o.createElement("div",{style:{fontWeight:600,color:"#475569",marginBottom:6}},"No help entries yet"),o.createElement("div",{style:{fontSize:13}},"Click ",o.createElement("strong",null,"New Entry")," to create the first one.")),!c&&a.length>0&&o.createElement("div",{style:{background:"#fff",border:"1px solid #e5e7eb",borderRadius:10,overflow:"hidden"}},0===W.length?o.createElement("div",{style:{padding:"32px 20px",textAlign:"center",color:"#94a3b8",fontSize:13}},"No entries match the current filter."):o.createElement("table",{style:{width:"100%",borderCollapse:"collapse"}},o.createElement("thead",null,o.createElement("tr",{style:{background:"#f8fafc",borderBottom:"1px solid #e5e7eb"}},[{label:"Help Key",width:"38%"},{label:"Title",width:null},{label:"Status",width:90},{label:"Updated",width:80},{label:"",width:106}].map(function(e){var t=e.label,n=e.width;return o.createElement("th",{key:t,style:{padding:"10px 16px",textAlign:"left",fontSize:11,fontWeight:700,color:"#94a3b8",letterSpacing:"0.05em",textTransform:"uppercase",width:n||void 0}},t)}))),o.createElement("tbody",null,W.map(function(e,t){return o.createElement("tr",{key:e.helpKey,style:{borderBottom:t