{"id":1930,"date":"2026-05-08T20:33:04","date_gmt":"2026-05-08T20:33:04","guid":{"rendered":"https:\/\/securitycurve.com\/?page_id=1930"},"modified":"2026-05-11T13:29:21","modified_gmt":"2026-05-11T13:29:21","slug":"atlas-demo","status":"publish","type":"page","link":"https:\/\/securitycurve.com\/?page_id=1930","title":{"rendered":"Atlas Demo"},"content":{"rendered":"\n[et_pb_section fb_built=&#8221;1&#8243; admin_label=&#8221;section&#8221; _builder_version=&#8221;4.16&#8243; global_colors_info=&#8221;{}&#8221;][et_pb_row _builder_version=&#8221;4.27.6&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_column type=&#8221;4_4&#8243; _builder_version=&#8221;4.27.6&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_image src=&#8221;https:\/\/securitycurve.com\/wp-content\/uploads\/2026\/05\/Screenshot_20260508_163548.png&#8221; title_text=&#8221;Screenshot_20260508_163548&#8243; _builder_version=&#8221;4.27.6&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][\/et_pb_image][\/et_pb_column][\/et_pb_row][et_pb_row admin_label=&#8221;row&#8221; _builder_version=&#8221;4.16&#8243; background_size=&#8221;initial&#8221; background_position=&#8221;top_left&#8221; background_repeat=&#8221;repeat&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_column type=&#8221;4_4&#8243; _builder_version=&#8221;4.16&#8243; custom_padding=&#8221;|||&#8221; global_colors_info=&#8221;{}&#8221; custom_padding__hover=&#8221;|||&#8221;][et_pb_code _builder_version=&#8221;4.27.6&#8243; _module_preset=&#8221;default&#8221; hover_enabled=&#8221;0&#8243; sticky_enabled=&#8221;0&#8243;] <!-- CTSNet Atlas Chat Widget -->                                                                                                                     <!-- [et_pb_line_break_holder] -->                                                                                                                                                        <!-- [et_pb_line_break_holder] -->  <style>                                                                                                                                               <!-- [et_pb_line_break_holder] -->  #ctsnet-bubble {                                                                                                                                      <!-- [et_pb_line_break_holder] -->    position: fixed;                                        <!-- [et_pb_line_break_holder] -->    bottom: 24px;<!-- [et_pb_line_break_holder] -->    right: 24px;                                                                                                                                        <!-- [et_pb_line_break_holder] -->    width: 52px;<!-- [et_pb_line_break_holder] -->    height: 52px;                                                                                                                                       <!-- [et_pb_line_break_holder] -->    background: #1a4f8a;                                    <!-- [et_pb_line_break_holder] -->    border-radius: 50%;                                                                                                                                 <!-- [et_pb_line_break_holder] -->    cursor: pointer;<!-- [et_pb_line_break_holder] -->    display: flex;                                                                                                                                      <!-- [et_pb_line_break_holder] -->    align-items: center;                                    <!-- [et_pb_line_break_holder] -->    justify-content: center;<!-- [et_pb_line_break_holder] -->    box-shadow: 0 4px 12px rgba(0,0,0,0.3);                                                                                                             <!-- [et_pb_line_break_holder] -->    z-index: 9999;<!-- [et_pb_line_break_holder] -->  }                                                                                                                                                     <!-- [et_pb_line_break_holder] -->  #ctsnet-bubble svg { width: 26px; height: 26px; fill: white; }<!-- [et_pb_line_break_holder] -->                                                                                                                                                        <!-- [et_pb_line_break_holder] -->  #ctsnet-panel {                                           <!-- [et_pb_line_break_holder] -->    position: fixed;                                                                                                                                    <!-- [et_pb_line_break_holder] -->    bottom: 88px;                                           <!-- [et_pb_line_break_holder] -->    right: 24px;<!-- [et_pb_line_break_holder] -->    width: 360px;<!-- [et_pb_line_break_holder] -->    max-height: 520px;<!-- [et_pb_line_break_holder] -->    background: white;                                                                                                                                  <!-- [et_pb_line_break_holder] -->    border-radius: 12px;<!-- [et_pb_line_break_holder] -->    box-shadow: 0 8px 32px rgba(0,0,0,0.2);                                                                                                             <!-- [et_pb_line_break_holder] -->    display: none;                                                                                                                                      <!-- [et_pb_line_break_holder] -->    flex-direction: column;<!-- [et_pb_line_break_holder] -->    z-index: 9999;                                                                                                                                      <!-- [et_pb_line_break_holder] -->    font-family: system-ui, sans-serif;                                                                                                                 <!-- [et_pb_line_break_holder] -->    font-size: 14px;<!-- [et_pb_line_break_holder] -->  }                                                                                                                                                     <!-- [et_pb_line_break_holder] -->  #ctsnet-header {                                                                                                                                      <!-- [et_pb_line_break_holder] -->    background: #1a4f8a;<!-- [et_pb_line_break_holder] -->    color: white;                                                                                                                                       <!-- [et_pb_line_break_holder] -->    padding: 14px 16px;                                     <!-- [et_pb_line_break_holder] -->    border-radius: 12px 12px 0 0;<!-- [et_pb_line_break_holder] -->    font-weight: 600;                                                                                                                                   <!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] -->  #ctsnet-messages {                                                                                                                                    <!-- [et_pb_line_break_holder] -->    flex: 1;                                                <!-- [et_pb_line_break_holder] -->    overflow-y: auto;<!-- [et_pb_line_break_holder] -->    padding: 12px;<!-- [et_pb_line_break_holder] -->    display: flex;                                                                                                                                      <!-- [et_pb_line_break_holder] -->    flex-direction: column;<!-- [et_pb_line_break_holder] -->    gap: 10px;                                                                                                                                          <!-- [et_pb_line_break_holder] -->    max-height: 340px;                                      <!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] -->  .ctsnet-msg { max-width: 85%; padding: 8px 12px; border-radius: 8px; line-height: 1.4; }                                                              <!-- [et_pb_line_break_holder] -->  .ctsnet-msg.user { align-self: flex-end; background: #1a4f8a; color: white; }                                                                         <!-- [et_pb_line_break_holder] -->  .ctsnet-msg.bot { align-self: flex-start; background: #f1f3f5; color: #222; }                                                                         <!-- [et_pb_line_break_holder] -->  .ctsnet-msg a { color: #1a4f8a; }                                                                                                                     <!-- [et_pb_line_break_holder] -->  #ctsnet-input-row {                                                                                                                                   <!-- [et_pb_line_break_holder] -->    display: flex;                                                                                                                                      <!-- [et_pb_line_break_holder] -->    border-top: 1px solid #e9ecef;                          <!-- [et_pb_line_break_holder] -->    padding: 10px;                                                                                                                                      <!-- [et_pb_line_break_holder] -->    gap: 8px;                                                                                                                                           <!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] -->  #ctsnet-input {                                                                                                                                       <!-- [et_pb_line_break_holder] -->    flex: 1;                                                <!-- [et_pb_line_break_holder] -->    border: 1px solid #ced4da;<!-- [et_pb_line_break_holder] -->    border-radius: 6px;                                                                                                                                 <!-- [et_pb_line_break_holder] -->    padding: 8px 10px;<!-- [et_pb_line_break_holder] -->    font-size: 14px;                                                                                                                                    <!-- [et_pb_line_break_holder] -->    outline: none;                                          <!-- [et_pb_line_break_holder] -->  }                                                                                                                                                     <!-- [et_pb_line_break_holder] -->  #ctsnet-send {<!-- [et_pb_line_break_holder] -->    background: #1a4f8a;                                                                                                                                <!-- [et_pb_line_break_holder] -->    color: white;                                           <!-- [et_pb_line_break_holder] -->    border: none;<!-- [et_pb_line_break_holder] -->    border-radius: 6px;<!-- [et_pb_line_break_holder] -->    padding: 8px 14px;<!-- [et_pb_line_break_holder] -->    cursor: pointer;                                                                                                                                    <!-- [et_pb_line_break_holder] -->    font-size: 14px;<!-- [et_pb_line_break_holder] -->  }                                                                                                                                                     <!-- [et_pb_line_break_holder] -->  #ctsnet-send:disabled { opacity: 0.5; cursor: default; }  <!-- [et_pb_line_break_holder] -->  <\/style>                                                                                                                                              <!-- [et_pb_line_break_holder] -->   <!-- [et_pb_line_break_holder] -->  <div id=\"ctsnet-bubble\" onclick=\"ctsnetToggle()\">                                                                                                     <!-- [et_pb_line_break_holder] -->    <svg viewBox=\"0 0 24 24\"><path d=\"M20 2H4c-1.1 0-2 .9-2 2v18l4-4h14c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2z\"\/><\/svg><!-- [et_pb_line_break_holder] -->  <\/div>                                                                                                                                                <!-- [et_pb_line_break_holder] -->                                                            <!-- [et_pb_line_break_holder] -->  <div id=\"ctsnet-panel\">                                                                                                                               <!-- [et_pb_line_break_holder] -->    <div id=\"ctsnet-header\">CTSNet Atlas Assistant<\/div>    <!-- [et_pb_line_break_holder] -->    <div id=\"ctsnet-messages\"><!-- [et_pb_line_break_holder] -->      <div class=\"ctsnet-msg bot\">Ask me anything about the surgical techniques in Vince Gaudiani&#8217;s video atlas.<\/div>                                  <!-- [et_pb_line_break_holder] -->    <\/div>                                                                                                                                              <!-- [et_pb_line_break_holder] -->    <div id=\"ctsnet-input-row\">                                                                                                                         <!-- [et_pb_line_break_holder] -->      <input id=\"ctsnet-input\" type=\"text\" placeholder=\"Ask a question...\" onkeydown=\"if(event.key==='Enter')ctsnetSend()\">                             <!-- [et_pb_line_break_holder] -->      <button id=\"ctsnet-send\" onclick=\"ctsnetSend()\">Send<\/button>                                                                                     <!-- [et_pb_line_break_holder] -->    <\/div>                                                                                                                                              <!-- [et_pb_line_break_holder] -->  <\/div>                                                                                                                                                <!-- [et_pb_line_break_holder] -->                                                                                                                                                        <!-- [et_pb_line_break_holder] -->  <script>                                                  <!-- [et_pb_line_break_holder] -->  const CTSNET_API = \"https:\/\/ctsnet-atlas-api-production.up.railway.app\/chat\";<!-- [et_pb_line_break_holder] -->                                                                                                                                                        <!-- [et_pb_line_break_holder] -->  window.ctsnetToggle = function() {<!-- [et_pb_line_break_holder] -->    const panel = document.getElementById(\"ctsnet-panel\");                                                                                              <!-- [et_pb_line_break_holder] -->    panel.style.display = panel.style.display === \"flex\" ? \"none\" : \"flex\";<!-- [et_pb_line_break_holder] -->  }                                                                                                                                                     <!-- [et_pb_line_break_holder] -->   <!-- [et_pb_line_break_holder] -->  window.ctsnetAppend = function(text, role) {                                                                                                          <!-- [et_pb_line_break_holder] -->    const msgs = document.getElementById(\"ctsnet-messages\");<!-- [et_pb_line_break_holder] -->    const div = document.createElement(\"div\");<!-- [et_pb_line_break_holder] -->    div.className = \"ctsnet-msg \" + role;<!-- [et_pb_line_break_holder] -->    div.innerHTML = text.replace(\/\\n\/g, \"<!\u2013- [et_pb_br_holder] -\u2013>\").replace(\/(https?:\\\/\\\/[^\\s]+)\/g, '<a href=\"$1\" target=\"_blank\">$1<\/a>');                                 <!-- [et_pb_line_break_holder] -->    msgs.appendChild(div);                                                                                                                              <!-- [et_pb_line_break_holder] -->    msgs.scrollTop = msgs.scrollHeight;                                                                                                                 <!-- [et_pb_line_break_holder] -->  }                                                                                                                                                     <!-- [et_pb_line_break_holder] -->                                                            <!-- [et_pb_line_break_holder] -->  window.ctsnetSend = async function() {<!-- [et_pb_line_break_holder] -->    const input = document.getElementById(\"ctsnet-input\");<!-- [et_pb_line_break_holder] -->    const btn = document.getElementById(\"ctsnet-send\");<!-- [et_pb_line_break_holder] -->    const question = input.value.trim();                                                                                                                <!-- [et_pb_line_break_holder] -->    if (!question) return;<!-- [et_pb_line_break_holder] -->                                                                                                                                                        <!-- [et_pb_line_break_holder] -->    input.value = \"\";                                       <!-- [et_pb_line_break_holder] -->    btn.disabled = true;                                                                                                                                <!-- [et_pb_line_break_holder] -->    ctsnetAppend(question, \"user\");                         <!-- [et_pb_line_break_holder] -->    ctsnetAppend(\"Searching the atlas\u2026\", \"bot\");<!-- [et_pb_line_break_holder] -->                                                                                                                                                        <!-- [et_pb_line_break_holder] -->    try {<!-- [et_pb_line_break_holder] -->      const res = await fetch(CTSNET_API, {                                                                                                             <!-- [et_pb_line_break_holder] -->        method: \"POST\",                                     <!-- [et_pb_line_break_holder] -->        headers: { \"Content-Type\": \"application\/json\" },                                                                                                <!-- [et_pb_line_break_holder] -->        body: JSON.stringify({ question }),<!-- [et_pb_line_break_holder] -->      });                                                                                                                                               <!-- [et_pb_line_break_holder] -->      const data = await res.json();                        <!-- [et_pb_line_break_holder] -->      document.getElementById(\"ctsnet-messages\").lastChild.remove();<!-- [et_pb_line_break_holder] -->      ctsnetAppend(data.answer, \"bot\");                                                                                                                 <!-- [et_pb_line_break_holder] -->    } catch {<!-- [et_pb_line_break_holder] -->      document.getElementById(\"ctsnet-messages\").lastChild.remove();                                                                                    <!-- [et_pb_line_break_holder] -->      ctsnetAppend(\"Sorry, something went wrong. Please try again.\", \"bot\");<!-- [et_pb_line_break_holder] -->    }                                                                                                                                                   <!-- [et_pb_line_break_holder] -->    btn.disabled = false;                                                                                                                               <!-- [et_pb_line_break_holder] -->    input.focus();<!-- [et_pb_line_break_holder] -->  }                                                                                                                                                     <!-- [et_pb_line_break_holder] -->  <\/script>                                                 <!-- [et_pb_line_break_holder] -->[\/et_pb_code][\/et_pb_column][\/et_pb_row][\/et_pb_section]\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":4,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_et_pb_use_builder":"on","_et_pb_old_content":"<!-- wp:html -->\n  \n  <!-- CTSNet Atlas Chat Widget -->                                                                                                                     \n  <!-- Drop this into WordPress via WPCode or Theme > Custom HTML -->\n  <!-- Replace API_URL with your deployed backend URL -->                                                                                               \n                                                                                                                                                        \n  <style>                                                                                                                                               \n  #ctsnet-bubble {                                                                                                                                      \n    position: fixed;                                                                                                                                    \n    bottom: 24px;\n    right: 24px;                                                                                                                                        \n    width: 52px;                                            \n    height: 52px;\n    background: #1a4f8a;\n    border-radius: 50%;                                                                                                                                 \n    cursor: pointer;\n    display: flex;                                                                                                                                      \n    align-items: center;                                    \n    justify-content: center;                                                                                                                            \n    box-shadow: 0 4px 12px rgba(0,0,0,0.3);\n    z-index: 9999;                                                                                                                                      \n  }                                                                                                                                                     \n  #ctsnet-bubble svg { width: 26px; height: 26px; fill: white; }\n                                                                                                                                                        \n  #ctsnet-panel {                                           \n    position: fixed;                                                                                                                                    \n    bottom: 88px;                                           \n    right: 24px;\n    width: 360px;\n    max-height: 520px;\n    background: white;                                                                                                                                  \n    border-radius: 12px;\n    box-shadow: 0 8px 32px rgba(0,0,0,0.2);                                                                                                             \n    display: none;                                                                                                                                      \n    flex-direction: column;\n    z-index: 9999;                                                                                                                                      \n    font-family: system-ui, sans-serif;                                                                                                                 \n    font-size: 14px;\n  }                                                                                                                                                     \n  #ctsnet-header {                                                                                                                                      \n    background: #1a4f8a;\n    color: white;                                                                                                                                       \n    padding: 14px 16px;                                     \n    border-radius: 12px 12px 0 0;\n    font-weight: 600;                                                                                                                                   \n  }\n  #ctsnet-messages {                                                                                                                                    \n    flex: 1;                                                \n    overflow-y: auto;\n    padding: 12px;\n    display: flex;                                                                                                                                      \n    flex-direction: column;\n    gap: 10px;                                                                                                                                          \n    max-height: 340px;                                      \n  }                                                                                                                                                     \n  .ctsnet-msg { max-width: 85%; padding: 8px 12px; border-radius: 8px; line-height: 1.4; }\n  .ctsnet-msg.user { align-self: flex-end; background: #1a4f8a; color: white; }                                                                         \n  .ctsnet-msg.bot { align-self: flex-start; background: #f1f3f5; color: #222; }                                                                         \n  .ctsnet-msg a { color: #1a4f8a; }                                                                                                                     \n  #ctsnet-input-row {                                                                                                                                   \n    display: flex;                                                                                                                                      \n    border-top: 1px solid #e9ecef;                          \n    padding: 10px;                                                                                                                                      \n    gap: 8px;                                                                                                                                           \n  }\n  #ctsnet-input {                                                                                                                                       \n    flex: 1;                                                \n    border: 1px solid #ced4da;\n    border-radius: 6px;                                                                                                                                 \n    padding: 8px 10px;\n    font-size: 14px;                                                                                                                                    \n    outline: none;                                          \n  }                                                                                                                                                     \n  #ctsnet-send {\n    background: #1a4f8a;                                                                                                                                \n    color: white;                                           \n    border: none;\n    border-radius: 6px;\n    padding: 8px 14px;\n    cursor: pointer;                                                                                                                                    \n    font-size: 14px;\n  }                                                                                                                                                     \n  #ctsnet-send:disabled { opacity: 0.5; cursor: default; }  \n  <\/style>                                                                                                                                              \n   \n  <div id=\"ctsnet-bubble\" onclick=\"ctsnetToggle()\">                                                                                                     \n    <svg viewBox=\"0 0 24 24\"><path d=\"M20 2H4c-1.1 0-2 .9-2 2v18l4-4h14c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2z\"\/><\/svg>\n  <\/div>                                                                                                                                                \n                                                            \n  <div id=\"ctsnet-panel\">                                                                                                                               \n    <div id=\"ctsnet-header\">CTSNet Atlas Assistant<\/div>    \n    <div id=\"ctsnet-messages\">                                                                                                                          \n      <div class=\"ctsnet-msg bot\">Ask me anything about the surgical techniques in Vince Gaudiani's video atlas.<\/div>\n    <\/div>                                                                                                                                              \n    <div id=\"ctsnet-input-row\">                                                                                                                         \n      <input id=\"ctsnet-input\" type=\"text\" placeholder=\"Ask a question...\" onkeydown=\"if(event.key==='Enter')ctsnetSend()\">                             \n      <button id=\"ctsnet-send\" onclick=\"ctsnetSend()\">Send<\/button>                                                                                     \n    <\/div>                                                  \n                                                                                                                                                        \n  <script>                                                  \n  const CTSNET_API = \"https:\/\/ctsnet-atlas-api-production.up.railway.app\/chat\";                                                                         \n                                                                               \n  function ctsnetToggle() {                                                                                                                             \n    const panel = document.getElementById(\"ctsnet-panel\");\n    panel.style.display = panel.style.display === \"flex\" ? \"none\" : \"flex\";                                                                             \n  }                                                                                                                                                     \n   \n  function ctsnetAppend(text, role) {                                                                                                                   \n    const msgs = document.getElementById(\"ctsnet-messages\");\n    const div = document.createElement(\"div\");              \n    div.className = \"ctsnet-msg \" + role;                                                                                                               \n    div.innerHTML = text.replace(\/n\/g, \"<br>\").replace(\/(https?:\/\/[^s]+)\/g, '<a href=\"$1\" target=\"_blank\">$1<\/a>');\n    msgs.appendChild(div);                                                                                                                              \n    msgs.scrollTop = msgs.scrollHeight;                                                                                                                 \n  }                                    \n                                                                                                                                                        \n  async function ctsnetSend() {                                                                                                                         \n    const input = document.getElementById(\"ctsnet-input\");\n    const btn = document.getElementById(\"ctsnet-send\");                                                                                                 \n    const question = input.value.trim();                    \n    if (!question) return;              \n                                                                                                                                                        \n    input.value = \"\";\n    btn.disabled = true;                                                                                                                                \n    ctsnetAppend(question, \"user\");                         \n    ctsnetAppend(\"Searching the atlas\u2026\", \"bot\");\n                                                \n    try {\n      const res = await fetch(CTSNET_API, {                                                                                                             \n        method: \"POST\",                    \n        headers: { \"Content-Type\": \"application\/json\" },                                                                                                \n        body: JSON.stringify({ question }),                 \n      });                                  \n      const data = await res.json();\n      document.getElementById(\"ctsnet-messages\").lastChild.remove();\n      ctsnetAppend(data.answer, \"bot\");                                                                                                                 \n    } catch {                          \n      document.getElementById(\"ctsnet-messages\").lastChild.remove();                                                                                    \n      ctsnetAppend(\"Sorry, something went wrong. Please try again.\", \"bot\");\n    }                                                                                                                                                   \n    btn.disabled = false;\n    input.focus();                                                                                                                                      \n  }                                                         \n  <\/script>\n           \n\n<!-- \/wp:html -->","_et_gb_content_width":"","footnotes":""},"class_list":["post-1930","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/securitycurve.com\/index.php?rest_route=\/wp\/v2\/pages\/1930","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/securitycurve.com\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/securitycurve.com\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/securitycurve.com\/index.php?rest_route=\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/securitycurve.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1930"}],"version-history":[{"count":7,"href":"https:\/\/securitycurve.com\/index.php?rest_route=\/wp\/v2\/pages\/1930\/revisions"}],"predecessor-version":[{"id":1941,"href":"https:\/\/securitycurve.com\/index.php?rest_route=\/wp\/v2\/pages\/1930\/revisions\/1941"}],"wp:attachment":[{"href":"https:\/\/securitycurve.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1930"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}