{"id":1945,"date":"2026-10-13T09:14:30","date_gmt":"2026-10-13T09:14:30","guid":{"rendered":"https:\/\/web.annulartechnologies.com\/staging\/ai-testing-studio\/"},"modified":"2026-10-20T18:20:01","modified_gmt":"2026-10-20T18:20:01","slug":"ai-testing-studio","status":"publish","type":"page","link":"https:\/\/web.annulartechnologies.com\/staging\/ai-testing-studio\/","title":{"rendered":"AI Testing Studio"},"content":{"rendered":"<section class=\"fusion-fullwidth fullwidth-box fusion-builder-row-1 fusion-flex-container hundred-percent-fullwidth non-hundred-percent-height-scrolling\" style=\"--awb-border-radius-top-left:0px;--awb-border-radius-top-right:0px;--awb-border-radius-bottom-right:0px;--awb-border-radius-bottom-left:0px;--awb-padding-top:0px;--awb-padding-right:0px;--awb-padding-bottom:0px;--awb-padding-left:0px;--awb-margin-top:0px;--awb-margin-bottom:0px;--awb-flex-wrap:wrap;\" ><div class=\"fusion-builder-row fusion-row fusion-flex-align-items-flex-start fusion-flex-align-content-flex-start fusion-flex-content-wrap\" style=\"width:104% !important;max-width:104% !important;margin-left: calc(-4% \/ 2 );margin-right: calc(-4% \/ 2 );\"><div class=\"fusion-layout-column fusion_builder_column fusion-builder-column-0 fusion_builder_column_1_1 1_1 fusion-flex-column fusion-flex-align-self-stretch\" style=\"--awb-bg-size:cover;--awb-width-large:100%;--awb-margin-top-large:0px;--awb-spacing-right-large:1.92%;--awb-margin-bottom-large:20px;--awb-spacing-left-large:1.92%;--awb-width-medium:100%;--awb-spacing-right-medium:1.92%;--awb-spacing-left-medium:1.92%;--awb-width-small:100%;--awb-spacing-right-small:1.92%;--awb-spacing-left-small:1.92%;\"><div class=\"fusion-column-wrapper fusion-flex-justify-content-flex-start fusion-content-layout-column\"><style id=\"aits-master-styles\">\n#main, #main.width-100, #main .fusion-row, #content, #content.full-width, .post-ai-testing-studio, #sliders-container {\n  margin-top: 0 !important;\n  padding-top: 0 !important;\n}\n.fusion-tb-header, header.fusion-tb-header, div.fusion-tb-header {\n  margin-bottom: 0 !important;\n  padding-bottom: 0 !important;\n}\n#main .fusion-fullwidth, #main .fusion-builder-row, #main .fusion-layout-column, .aits-page-wrapper {\n  width: 100% !important;\n  max-width: 100% !important;\n  flex: 0 0 100% !important;\n  display: block !important;\n  clear: both !important;\n  box-sizing: border-box !important;\n}\n\n.aits-page-wrapper {\n  font-family: 'Plus Jakarta Sans', 'Inter', system-ui, -apple-system, sans-serif;\n  color: #334155;\n  background-color: #ffffff;\n  line-height: 1.65;\n  -webkit-font-smoothing: antialiased;\n  box-sizing: border-box;\n}\n\n.aits-page-wrapper *, .aits-page-wrapper *::before, .aits-page-wrapper *::after {\n  box-sizing: border-box;\n}\n\n.aits-container {\n  max-width: 1240px;\n  margin: 0 auto;\n  padding: 0 24px;\n}\n\n.aits-section-header {\n  text-align: center;\n  max-width: 840px;\n  margin: 0 auto 52px;\n}\n\n.aits-section-header h2 {\n  font-size: 38px;\n  font-weight: 800;\n  color: #0f172a;\n  line-height: 1.22;\n  letter-spacing: -0.025em;\n  margin: 0 0 16px;\n}\n\n.aits-section-header h2 span {\n  color: #0284c7;\n}\n\n.aits-section-header p {\n  font-size: 16.5px;\n  color: #64748b;\n  margin: 0;\n  line-height: 1.65;\n}\n\n.aits-btn-group {\n  display: flex;\n  align-items: center;\n  flex-wrap: wrap;\n  gap: 16px;\n  margin-top: 32px;\n}\n\n.aits-btn-primary {\n  display: inline-flex;\n  align-items: center;\n  gap: 10px;\n  padding: 14px 28px;\n  font-size: 15px;\n  font-weight: 700;\n  color: #ffffff !important;\n  background: #0284c7 !important;\n  border: 1px solid #0369a1 !important;\n  border-radius: 10px;\n  text-decoration: none !important;\n  transition: all 0.2s ease;\n  box-shadow: 0 4px 14px -2px rgba(2, 132, 199, 0.35);\n}\n\n.aits-btn-primary:hover {\n  background: #0369a1 !important;\n  transform: translateY(-2px);\n  box-shadow: 0 6px 20px -2px rgba(2, 132, 199, 0.45);\n}\n\n.aits-btn-secondary {\n  display: inline-flex;\n  align-items: center;\n  gap: 10px;\n  padding: 14px 28px;\n  font-size: 15px;\n  font-weight: 700;\n  color: #0f172a !important;\n  background: #ffffff !important;\n  border: 1.5px solid #cbd5e1 !important;\n  border-radius: 10px;\n  text-decoration: none !important;\n  transition: all 0.2s ease;\n}\n\n.aits-btn-secondary:hover {\n  background: #f8fafc !important;\n  border-color: #94a3b8 !important;\n  color: #0284c7 !important;\n  transform: translateY(-2px);\n}\n\n.aits-hero-section {\n  padding: 40px 0 85px;\n  background: radial-gradient(circle at 75% 40%, rgba(200, 228, 255, 0.45) 0%, rgba(235, 245, 255, 0.25) 45%, #ffffff 80%);\n  border-bottom: 1px solid rgba(226, 232, 240, 0.7);\n  position: relative;\n  overflow: hidden;\n}\n\n.aits-breadcrumb {\n  display: flex;\n  align-items: center;\n  gap: 8px;\n  font-size: 13px;\n  color: #64748b;\n  margin-bottom: 20px;\n  font-weight: 500;\n}\n.aits-breadcrumb a { color: #64748b; text-decoration: none; }\n.aits-breadcrumb a:hover { color: #0284c7; }\n.aits-breadcrumb span.curr { color: #0284c7; font-weight: 600; }\n\n.aits-hero-grid {\n  display: grid;\n  grid-template-columns: 1.1fr 0.9fr;\n  gap: 52px;\n  align-items: center;\n}\n\n.aits-hero-content h1 {\n  font-size: 44px;\n  font-weight: 850;\n  color: #0f172a;\n  line-height: 1.18;\n  letter-spacing: -0.03em;\n  margin: 0 0 20px;\n}\n\n.aits-hero-content h1 span { color: #0284c7; }\n\n.aits-hero-content p {\n  font-size: 16.5px;\n  line-height: 1.65;\n  color: #475569;\n  margin: 0;\n  max-width: 580px;\n}\n\n.aits-hero-image-frame {\n  position: relative;\n  border-radius: 20px;\n  overflow: hidden;\n  box-shadow: 0 24px 50px -12px rgba(15, 23, 42, 0.16), 0 0 0 1px rgba(15, 23, 42, 0.06);\n  border: 1px solid #e2e8f0;\n  background: #ffffff;\n}\n\n.aits-hero-image-frame img {\n  width: 100%;\n  height: auto;\n  display: block;\n  object-fit: cover;\n}\n\n.aits-overview-section {\n  padding: 85px 0;\n  background: #ffffff;\n  border-bottom: 1px solid #f1f5f9;\n}\n\n.aits-overview-box {\n  background: linear-gradient(135deg, #f8fafc 0%, #f0f9ff 100%);\n  border: 1.5px solid #bae6fd;\n  border-radius: 22px;\n  padding: 44px 48px;\n  max-width: 1060px;\n  margin: 0 auto;\n  box-shadow: 0 12px 32px -8px rgba(2, 132, 199, 0.06);\n  text-align: center;\n}\n\n.aits-overview-box p {\n  font-size: 18px;\n  line-height: 1.75;\n  color: #334155;\n  margin: 0;\n  text-align: center;\n}\n\n.aits-flow-section {\n  padding: 95px 0;\n  background: #f8fafc;\n  border-bottom: 1px solid #e2e8f0;\n}\n\n.aits-flow-grid {\n  display: grid;\n  grid-template-columns: repeat(5, 1fr);\n  gap: 20px;\n  position: relative;\n}\n\n.aits-flow-card {\n  background: #ffffff;\n  border: 1.5px solid #e2e8f0;\n  border-radius: 16px;\n  padding: 28px 20px;\n  position: relative;\n  transition: all 0.22s ease;\n  box-shadow: 0 4px 12px -2px rgba(15, 23, 42, 0.03);\n}\n\n.aits-flow-card:hover {\n  transform: translateY(-4px);\n  border-color: #0284c7;\n  box-shadow: 0 16px 28px -6px rgba(2, 132, 199, 0.12);\n}\n\n.aits-flow-card:not(:last-child)::after {\n  content: '';\n  position: absolute;\n  right: -21px;\n  top: 50%;\n  transform: translateY(-50%);\n  width: 22px;\n  height: 22px;\n  background-color: #ffffff;\n  border: 1.5px solid #cbd5e1;\n  border-radius: 50%;\n  background-image: url(\"data:image\/svg+xml,%3Csvg xmlns='http:\/\/www.w3.org\/2000\/svg' viewBox='0 0 24 24' fill='none' stroke='%23475569' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='9 18 15 12 9 6'%3E%3C\/polyline%3E%3C\/svg%3E\");\n  background-repeat: no-repeat;\n  background-position: center;\n  background-size: 11px 11px;\n  box-shadow: 0 2px 6px rgba(15, 23, 42, 0.08);\n  z-index: 10;\n  transition: border-color 0.22s ease, background-image 0.22s ease;\n}\n\n.aits-flow-card:hover:not(:last-child)::after {\n  border-color: #0284c7;\n  background-image: url(\"data:image\/svg+xml,%3Csvg xmlns='http:\/\/www.w3.org\/2000\/svg' viewBox='0 0 24 24' fill='none' stroke='%230284c7' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='9 18 15 12 9 6'%3E%3C\/polyline%3E%3C\/svg%3E\");\n}\n\n.aits-flow-num {\n  font-size: 13px;\n  font-weight: 800;\n  color: #0284c7;\n  background: #f0f9ff;\n  border: 1px solid #bae6fd;\n  width: 32px;\n  height: 32px;\n  border-radius: 8px;\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  margin-bottom: 16px;\n}\n\n.aits-flow-card h3 {\n  font-size: 17px;\n  font-weight: 750;\n  color: #0f172a;\n  margin: 0 0 10px;\n}\n\n.aits-flow-card p {\n  font-size: 13.5px;\n  color: #64748b;\n  margin: 0;\n  line-height: 1.55;\n}\n\n.aits-capabilities-section {\n  padding: 100px 0;\n  background: #ffffff;\n  border-bottom: 1px solid #e2e8f0;\n}\n\n.aits-cap-grid {\n  display: grid;\n  grid-template-columns: repeat(3, 1fr);\n  gap: 28px;\n}\n\n.aits-cap-card {\n  background: #ffffff;\n  border: 1.5px solid #e2e8f0;\n  border-radius: 18px;\n  padding: 34px 28px;\n  transition: all 0.24s ease;\n  display: flex;\n  flex-direction: column;\n  position: relative;\n}\n\n.aits-cap-card:hover {\n  transform: translateY(-4px);\n  border-color: #0284c7;\n  box-shadow: 0 18px 36px -8px rgba(2, 132, 199, 0.12);\n}\n\n.aits-cap-icon {\n  width: 52px;\n  height: 52px;\n  border-radius: 14px;\n  background: #f0f9ff;\n  border: 1px solid #bae6fd;\n  color: #0284c7;\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  font-size: 22px;\n  margin-bottom: 22px;\n}\n\n.aits-cap-card h3 {\n  font-size: 20px;\n  font-weight: 750;\n  color: #0f172a;\n  margin: 0 0 14px;\n  line-height: 1.3;\n}\n\n.aits-cap-card p {\n  font-size: 14.5px;\n  line-height: 1.65;\n  color: #475569;\n  margin: 0;\n  flex-grow: 1;\n}\n\n.aits-benefits-section {\n  padding: 95px 0;\n  background: #f8fafc;\n  border-bottom: 1px solid #e2e8f0;\n}\n\n.aits-benefits-grid {\n  display: grid;\n  grid-template-columns: repeat(3, 1fr);\n  gap: 24px;\n}\n\n.aits-benefit-card {\n  background: #ffffff;\n  border: 1.5px solid #e2e8f0;\n  border-radius: 16px;\n  padding: 26px 24px;\n  display: flex;\n  align-items: flex-start;\n  gap: 16px;\n  transition: all 0.2s ease;\n}\n\n.aits-benefit-card:hover {\n  border-color: #0284c7;\n  transform: translateY(-2px);\n  box-shadow: 0 8px 20px -4px rgba(2, 132, 199, 0.08);\n}\n\n.aits-benefit-check {\n  width: 32px;\n  height: 32px;\n  border-radius: 50%;\n  background: #f0f9ff;\n  border: 1px solid #bae6fd;\n  color: #0284c7;\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  font-size: 14px;\n  flex-shrink: 0;\n  margin-top: 2px;\n}\n\n.aits-benefit-card h4 {\n  font-size: 15.5px;\n  font-weight: 650;\n  color: #1e293b;\n  margin: 0;\n  line-height: 1.5;\n}\n\n.aits-workflow-section {\n  padding: 100px 0;\n  background: #ffffff;\n  border-bottom: 1px solid #e2e8f0;\n}\n\n.aits-workflow-grid {\n  display: grid;\n  grid-template-columns: 1.1fr 0.9fr;\n  gap: 52px;\n  align-items: center;\n}\n\n.aits-workflow-content h2 {\n  font-size: 36px;\n  font-weight: 800;\n  color: #0f172a;\n  margin: 0 0 18px;\n  line-height: 1.25;\n}\n\n.aits-workflow-content h2 span { color: #0284c7; }\n\n.aits-workflow-lead {\n  font-size: 16px;\n  line-height: 1.7;\n  color: #475569;\n  margin: 0 0 32px;\n}\n\n.aits-pipeline-steps {\n  display: flex;\n  flex-direction: column;\n  gap: 12px;\n}\n\n.aits-pipeline-item {\n  display: flex;\n  align-items: center;\n  gap: 14px;\n  padding: 12px 18px;\n  background: #f8fafc;\n  border: 1px solid #e2e8f0;\n  border-radius: 12px;\n  font-size: 14.5px;\n  font-weight: 600;\n  color: #1e293b;\n}\n\n.aits-pipeline-item i {\n  color: #0284c7;\n  font-size: 15px;\n}\n\n.aits-workflow-image-frame {\n  position: relative;\n  border-radius: 20px;\n  overflow: hidden;\n  box-shadow: 0 20px 45px -10px rgba(15, 23, 42, 0.14);\n  border: 1px solid #e2e8f0;\n  background: #ffffff;\n}\n\n.aits-workflow-image-frame img {\n  width: 100%;\n  height: auto;\n  display: block;\n}\n\n.aits-roadmap-section {\n  padding: 70px 0 80px;\n  background: #f8fafc;\n  border-bottom: 1px solid #e2e8f0;\n  position: relative;\n}\n\n.aits-timeline-wrapper {\n  max-width: 800px;\n  margin: 0 auto;\n  position: relative;\n  padding: 10px 0;\n}\n\n.aits-timeline-wrapper::before {\n  content: '';\n  position: absolute;\n  top: 10px;\n  bottom: 20px;\n  left: 50%;\n  transform: translateX(-50%);\n  width: 2.5px;\n  background: linear-gradient(180deg, #0284c7 0%, #38bdf8 65%, #cbd5e1 100%);\n  border-radius: 999px;\n  z-index: 1;\n}\n\n.aits-timeline-item {\n  position: relative;\n  width: 50%;\n  margin-bottom: 16px;\n  display: flex;\n  z-index: 2;\n}\n\n.aits-timeline-item:last-child {\n  margin-bottom: 0;\n}\n\n.aits-timeline-left {\n  left: 0;\n  padding-right: 32px;\n  justify-content: flex-end;\n}\n\n.aits-timeline-right {\n  left: 50%;\n  padding-left: 32px;\n  justify-content: flex-start;\n}\n\n.aits-timeline-node {\n  position: absolute;\n  top: 15px;\n  width: 28px;\n  height: 28px;\n  border-radius: 50%;\n  background: #ffffff;\n  border: 2px solid #0284c7;\n  color: #0284c7;\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  font-size: 11px;\n  font-weight: 850;\n  box-shadow: 0 0 0 4px rgba(2, 132, 199, 0.14), 0 2px 6px rgba(15, 23, 42, 0.06);\n  z-index: 3;\n  transition: all 0.2s ease;\n}\n\n.aits-timeline-left .aits-timeline-node {\n  right: -14px;\n}\n\n.aits-timeline-right .aits-timeline-node {\n  left: -14px;\n}\n\n.aits-timeline-item:hover .aits-timeline-node {\n  background: #0284c7;\n  color: #ffffff;\n  transform: scale(1.1);\n  box-shadow: 0 0 0 5px rgba(2, 132, 199, 0.25);\n}\n\n.aits-timeline-card {\n  background: #ffffff;\n  border: 1.5px solid #e2e8f0;\n  border-radius: 13px;\n  padding: 13px 18px;\n  width: 100%;\n  box-shadow: 0 3px 10px -2px rgba(15, 23, 42, 0.04);\n  transition: all 0.2s ease;\n  position: relative;\n}\n\n.aits-timeline-card:hover {\n  border-color: #0284c7;\n  transform: translateY(-2px);\n  box-shadow: 0 10px 22px -4px rgba(2, 132, 199, 0.1);\n}\n\n.aits-timeline-tag {\n  display: inline-block;\n  font-size: 10px;\n  font-weight: 800;\n  text-transform: uppercase;\n  letter-spacing: 0.06em;\n  color: #0284c7;\n  background: #f0f9ff;\n  border: 1px solid #bae6fd;\n  padding: 2px 8px;\n  border-radius: 5px;\n  margin-bottom: 6px;\n  line-height: 1.3;\n}\n\n.aits-timeline-card h4 {\n  font-size: 14.5px;\n  font-weight: 750;\n  color: #0f172a;\n  margin: 0 0 4px;\n  line-height: 1.3;\n}\n\n.aits-timeline-card p {\n  font-size: 12.5px;\n  color: #64748b;\n  margin: 0;\n  line-height: 1.5;\n}\n\n.aits-faqs-section {\n  padding: 95px 0;\n  background: #ffffff;\n  border-bottom: 1px solid #e2e8f0;\n}\n\n.aits-accordion {\n  max-width: 860px;\n  margin: 0 auto;\n  display: flex;\n  flex-direction: column;\n  gap: 16px;\n}\n\n.aits-accordion-item {\n  border: 1.5px solid #e2e8f0;\n  border-radius: 14px;\n  overflow: hidden;\n  background: #ffffff;\n  transition: all 0.2s ease;\n}\n\n.aits-accordion-item.active {\n  border-color: #0284c7;\n  box-shadow: 0 6px 18px -4px rgba(2, 132, 199, 0.08);\n}\n\n.aits-accordion-header {\n  padding: 22px 24px;\n  display: flex;\n  justify-content: space-between;\n  align-items: center;\n  cursor: pointer;\n  background: #ffffff;\n  user-select: none;\n}\n\n.aits-accordion-header h3 {\n  font-size: 17px;\n  font-weight: 700;\n  color: #0f172a;\n  margin: 0;\n  line-height: 1.4;\n}\n\n.aits-accordion-icon {\n  width: 28px;\n  height: 28px;\n  border-radius: 50%;\n  background: #f1f5f9;\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  font-size: 12px;\n  color: #64748b;\n  transition: transform 0.25s ease;\n  flex-shrink: 0;\n  margin-left: 16px;\n}\n\n.aits-accordion-item.active .aits-accordion-icon {\n  transform: rotate(180deg);\n  background: #0284c7;\n  color: #ffffff;\n}\n\n.aits-accordion-body {\n  padding: 0 24px 22px;\n  font-size: 15px;\n  line-height: 1.7;\n  color: #475569;\n  display: none;\n}\n\n.aits-accordion-item.active .aits-accordion-body {\n  display: block;\n}\n\n.aits-cta-section {\n  padding: 95px 0 100px;\n  background: linear-gradient(180deg, #f8fafc 0%, #ffffff 100%);\n}\n\n.aits-cta-inner {\n  max-width: 960px;\n  margin: 0 auto;\n  text-align: center;\n}\n\n.aits-cta-inner h2 {\n  font-size: 40px;\n  font-weight: 850;\n  color: #0f172a;\n  margin: 0 0 18px;\n  line-height: 1.22;\n  letter-spacing: -0.025em;\n}\n\n.aits-cta-inner p {\n  font-size: 17.5px;\n  color: #64748b;\n  max-width: 720px;\n  margin: 0 auto 36px;\n  line-height: 1.65;\n}\n\n.aits-shared-cta-box {\n  background: linear-gradient(135deg, #0b1e36 0%, #0f172a 100%);\n  border-radius: 24px;\n  padding: 50px 48px;\n  color: #ffffff;\n  text-align: center;\n  margin-top: 48px;\n  box-shadow: 0 24px 50px -12px rgba(4, 47, 46, 0.35);\n  border: 1px solid rgba(255, 255, 255, 0.1);\n}\n\n.aits-shared-cta-box h4 {\n  font-size: 26px;\n  font-weight: 800;\n  color: #ffffff;\n  margin: 0 0 12px;\n}\n\n.aits-shared-cta-box p {\n  font-size: 16px;\n  color: #bae6fd;\n  margin: 0 auto 28px;\n  max-width: 650px;\n  line-height: 1.6;\n}\n\n.aits-shared-cta-box .aits-btn-group {\n  justify-content: center;\n  margin-top: 0;\n}\n\n.aits-shared-cta-box .aits-btn-primary {\n  background: #0284c7 !important;\n  border-color: #0284c7 !important;\n}\n\n.aits-shared-cta-box .aits-btn-secondary {\n  background: rgba(255, 255, 255, 0.12) !important;\n  color: #ffffff !important;\n  border-color: rgba(255, 255, 255, 0.25) !important;\n}\n\n.aits-shared-cta-box .aits-btn-secondary:hover {\n  background: #ffffff !important;\n  color: #0b1e36 !important;\n}\n\n@media (max-width: 1024px) {\n  .aits-hero-grid, .aits-workflow-grid {\n    grid-template-columns: 1fr;\n    gap: 40px;\n  }\n  .aits-flow-grid {\n    grid-template-columns: repeat(3, 1fr);\n  }\n  .aits-flow-card:not(:last-child)::after {\n    display: none;\n  }\n  .aits-cap-grid, .aits-benefits-grid {\n    grid-template-columns: repeat(2, 1fr);\n  }\n}\n\n@media (max-width: 768px) {\n  .aits-timeline-wrapper::before {\n    left: 15px;\n    transform: none;\n  }\n  .aits-timeline-item {\n    width: 100% !important;\n    left: 0 !important;\n    padding-left: 44px !important;\n    padding-right: 0 !important;\n    justify-content: flex-start !important;\n    margin-bottom: 16px;\n  }\n  .aits-timeline-left .aits-timeline-node,\n  .aits-timeline-right .aits-timeline-node {\n    left: 1px !important;\n    right: auto !important;\n    top: 14px;\n  }\n}\n\n@media (max-width: 640px) {\n  .aits-flow-grid, .aits-cap-grid, .aits-benefits-grid {\n    grid-template-columns: 1fr;\n  }\n  .aits-hero-content h1 {\n    font-size: 32px;\n  }\n  .aits-section-header h2 {\n    font-size: 28px;\n  }\n  .aits-overview-box {\n    padding: 30px 22px;\n  }\n  .aits-shared-cta-box {\n    padding: 34px 22px;\n  }\n}\n\n\/* ========================================================\n   AI TESTING STUDIO - DARK FUTURISTIC HERO SECTION STYLES\n   ======================================================== *\/\n.aits-hero-section {\n  position: relative !important;\n  background-color: #06090e !important;\n  background-image: \n    linear-gradient(90deg, #06090e 0%, rgba(6, 9, 14, 0.94) 42%, rgba(6, 9, 14, 0.5) 70%, rgba(6, 9, 14, 0.15) 100%),\n    url('https:\/\/web.annulartechnologies.com\/staging\/wp-content\/uploads\/2026\/10\/ai-testing-studio-hero-bg.png') !important;\n  background-size: cover !important;\n  background-position: center right !important;\n  background-repeat: no-repeat !important;\n  padding: 90px 0 110px 0 !important;\n  color: #ffffff !important;\n  overflow: hidden !important;\n  border-bottom: 1px solid rgba(255, 255, 255, 0.08) !important;\n}\n\n.aits-breadcrumb {\n  display: flex !important;\n  align-items: center !important;\n  gap: 10px !important;\n  margin-bottom: 24px !important;\n  font-size: 14px !important;\n  color: #94a3b8 !important;\n}\n.aits-breadcrumb a {\n  color: #94a3b8 !important;\n  text-decoration: none !important;\n  transition: color 0.2s ease !important;\n}\n.aits-breadcrumb a:hover {\n  color: #38bdf8 !important;\n}\n.aits-breadcrumb i {\n  color: #475569 !important;\n  font-size: 9px !important;\n}\n.aits-breadcrumb span.curr {\n  color: #38bdf8 !important;\n  font-weight: 600 !important;\n}\n\n.aits-hero-grid {\n  display: grid !important;\n  grid-template-columns: minmax(0, 640px) 1fr !important;\n  gap: 40px !important;\n  align-items: center !important;\n  min-height: 480px !important;\n}\n\n.aits-hero-content {\n  z-index: 2 !important;\n  position: relative !important;\n}\n\n.aits-hero-content h1 {\n  font-size: 52px !important;\n  line-height: 1.15 !important;\n  font-weight: 800 !important;\n  color: #ffffff !important;\n  margin: 0 0 20px 0 !important;\n  letter-spacing: -0.025em !important;\n}\n.aits-hero-content h1 span {\n  background: linear-gradient(135deg, #00f2fe 0%, #38bdf8 45%, #10b981 100%) !important;\n  -webkit-background-clip: text !important;\n  -webkit-text-fill-color: transparent !important;\n  display: inline-block !important;\n}\n\n.aits-hero-content p {\n  font-size: 17px !important;\n  line-height: 1.7 !important;\n  color: #cbd5e1 !important;\n  margin: 0 0 34px 0 !important;\n  max-width: 580px !important;\n}\n\n.aits-btn-group {\n  display: flex !important;\n  align-items: center !important;\n  gap: 16px !important;\n  flex-wrap: wrap !important;\n}\n\n.aits-btn-primary {\n  background: linear-gradient(135deg, #0284c7 0%, #0369a1 100%) !important;\n  color: #ffffff !important;\n  padding: 14px 28px !important;\n  border-radius: 8px !important;\n  font-weight: 600 !important;\n  font-size: 15px !important;\n  text-decoration: none !important;\n  display: inline-flex !important;\n  align-items: center !important;\n  gap: 8px !important;\n  box-shadow: 0 4px 20px rgba(2, 132, 199, 0.4) !important;\n  transition: all 0.25s ease !important;\n  border: 1px solid rgba(56, 189, 248, 0.3) !important;\n}\n.aits-btn-primary:hover {\n  transform: translateY(-2px) !important;\n  box-shadow: 0 6px 25px rgba(2, 132, 199, 0.6) !important;\n  background: linear-gradient(135deg, #0369a1 0%, #0284c7 100%) !important;\n  color: #ffffff !important;\n}\n\n.aits-btn-secondary {\n  background: rgba(255, 255, 255, 0.06) !important;\n  color: #f8fafc !important;\n  border: 1px solid rgba(255, 255, 255, 0.2) !important;\n  padding: 14px 28px !important;\n  border-radius: 8px !important;\n  font-weight: 600 !important;\n  font-size: 15px !important;\n  text-decoration: none !important;\n  display: inline-flex !important;\n  align-items: center !important;\n  gap: 8px !important;\n  backdrop-filter: blur(10px) !important;\n  -webkit-backdrop-filter: blur(10px) !important;\n  transition: all 0.25s ease !important;\n}\n.aits-btn-secondary:hover {\n  background: rgba(255, 255, 255, 0.14) !important;\n  border-color: #38bdf8 !important;\n  color: #ffffff !important;\n  transform: translateY(-2px) !important;\n}\n\n\/* Hide the old static image frame since the background image contains the high-tech 3D workbench *\/\n.aits-hero-image-frame {\n  display: none !important;\n}\n\n@media (max-width: 900px) {\n  .aits-hero-section {\n    background-image: \n      linear-gradient(180deg, rgba(6, 9, 14, 0.94) 0%, rgba(6, 9, 14, 0.85) 60%, rgba(6, 9, 14, 0.96) 100%),\n      url('https:\/\/web.annulartechnologies.com\/staging\/wp-content\/uploads\/2026\/10\/ai-testing-studio-hero-bg.png') !important;\n    background-position: center center !important;\n    padding: 50px 0 70px 0 !important;\n  }\n  .aits-hero-grid {\n    grid-template-columns: 1fr !important;\n    min-height: auto !important;\n  }\n  .aits-hero-content h1 {\n    font-size: 38px !important;\n  }\n  .aits-btn-group {\n    flex-direction: column !important;\n    align-items: stretch !important;\n  }\n  .aits-btn-primary, .aits-btn-secondary {\n    justify-content: center !important;\n  }\n}\n\n\n\/* ========================================================\n   HERO SECTION FIX \u2014 STRONGER TEXT CONTRAST + CLEAN SPACING\n   Place this after the existing hero styles.\n   ======================================================== *\/\n.aits-page-wrapper .aits-hero-section {\n  isolation: isolate !important;\n  position: relative !important;\n  min-height: 690px !important;\n  display: flex !important;\n  align-items: center !important;\n  padding: 52px 0 76px !important;\n  background-color: #05080d !important;\n  \/* Keep the text readable on the left while letting the artwork show clearly on the right. *\/\n  background-image:\n    linear-gradient(\n      90deg,\n      rgba(5, 8, 13, 0.94) 0%,\n      rgba(5, 8, 13, 0.86) 24%,\n      rgba(5, 8, 13, 0.62) 40%,\n      rgba(5, 8, 13, 0.24) 58%,\n      rgba(5, 8, 13, 0.04) 100%\n    ),\n    url('https:\/\/web.annulartechnologies.com\/staging\/wp-content\/uploads\/2026\/10\/ai-testing-studio-hero-bg.png') !important;\n  background-repeat: no-repeat !important;\n  background-size: cover !important;\n  background-position: center right !important;\n  border-bottom: 1px solid rgba(148, 163, 184, 0.18) !important;\n  overflow: hidden !important;\n}\n\n.aits-page-wrapper .aits-hero-section > .aits-container {\n  width: 100% !important;\n  max-width: 1240px !important;\n  margin: 0 auto !important;\n  position: relative !important;\n  z-index: 2 !important;\n}\n\n.aits-page-wrapper .aits-breadcrumb {\n  display: flex !important;\n  flex-wrap: wrap !important;\n  align-items: center !important;\n  gap: 10px !important;\n  margin: 0 0 66px !important;\n  font-size: 14px !important;\n  line-height: 1.5 !important;\n  color: #cbd5e1 !important;\n}\n\n.aits-page-wrapper .aits-breadcrumb a {\n  color: #cbd5e1 !important;\n  text-decoration: none !important;\n}\n\n.aits-page-wrapper .aits-breadcrumb a:hover {\n  color: #38bdf8 !important;\n}\n\n.aits-page-wrapper .aits-breadcrumb i {\n  color: #64748b !important;\n}\n\n.aits-page-wrapper .aits-breadcrumb span.curr {\n  color: #38bdf8 !important;\n  font-weight: 700 !important;\n}\n\n.aits-page-wrapper .aits-hero-grid {\n  display: grid !important;\n  grid-template-columns: minmax(0, 680px) minmax(0, 1fr) !important;\n  gap: 28px !important;\n  align-items: center !important;\n  min-height: 390px !important;\n}\n\n.aits-page-wrapper .aits-hero-content {\n  width: 100% !important;\n  max-width: 680px !important;\n  position: relative !important;\n  z-index: 3 !important;\n}\n\n.aits-page-wrapper .aits-hero-content h1 {\n  max-width: 690px !important;\n  margin: 0 0 24px !important;\n  color: #ffffff !important;\n  font-size: clamp(38px, 3.35vw, 54px) !important;\n  font-weight: 800 !important;\n  line-height: 1.12 !important;\n  letter-spacing: -0.035em !important;\n  text-wrap: balance !important;\n}\n\n.aits-page-wrapper .aits-hero-content h1 span {\n  display: inline !important;\n  background: linear-gradient(100deg, #22e6f2 0%, #38bdf8 48%, #10b981 100%) !important;\n  -webkit-background-clip: text !important;\n  background-clip: text !important;\n  -webkit-text-fill-color: transparent !important;\n  color: #38bdf8 !important;\n}\n\n.aits-page-wrapper .aits-hero-content p {\n  max-width: 620px !important;\n  margin: 0 !important;\n  color: #e2e8f0 !important;\n  font-size: 17px !important;\n  font-weight: 400 !important;\n  line-height: 1.75 !important;\n  text-shadow: 0 1px 2px rgba(0, 0, 0, 0.25) !important;\n}\n\n.aits-page-wrapper .aits-hero-content .aits-btn-group {\n  display: flex !important;\n  flex-direction: row !important;\n  align-items: center !important;\n  justify-content: flex-start !important;\n  flex-wrap: wrap !important;\n  gap: 14px !important;\n  margin-top: 34px !important;\n}\n\n.aits-page-wrapper .aits-hero-content .aits-btn-primary,\n.aits-page-wrapper .aits-hero-content .aits-btn-secondary {\n  min-height: 54px !important;\n  display: inline-flex !important;\n  align-items: center !important;\n  justify-content: center !important;\n  padding: 15px 24px !important;\n  border-radius: 10px !important;\n  font-size: 15px !important;\n  font-weight: 700 !important;\n  line-height: 1.35 !important;\n  text-align: center !important;\n  white-space: normal !important;\n  transition: background-color .2s ease, border-color .2s ease, transform .2s ease !important;\n}\n\n.aits-page-wrapper .aits-hero-content .aits-btn-primary {\n  background: #0284c7 !important;\n  border: 1px solid #0ea5e9 !important;\n  color: #ffffff !important;\n  box-shadow: 0 8px 24px rgba(2, 132, 199, 0.25) !important;\n}\n\n.aits-page-wrapper .aits-hero-content .aits-btn-primary:hover {\n  background: #0369a1 !important;\n  transform: translateY(-2px) !important;\n}\n\n.aits-page-wrapper .aits-hero-content .aits-btn-secondary {\n  background: rgba(15, 23, 42, 0.72) !important;\n  border: 1px solid rgba(203, 213, 225, 0.42) !important;\n  color: #f8fafc !important;\n  box-shadow: none !important;\n}\n\n.aits-page-wrapper .aits-hero-content .aits-btn-secondary:hover {\n  background: rgba(30, 41, 59, 0.94) !important;\n  border-color: #38bdf8 !important;\n  color: #ffffff !important;\n  transform: translateY(-2px) !important;\n}\n\n\/* Do not render an empty second grid column or a duplicate hero image. *\/\n.aits-page-wrapper .aits-hero-grid > :not(.aits-hero-content) {\n  display: none !important;\n}\n\n@media (max-width: 1024px) {\n  .aits-page-wrapper .aits-hero-section {\n    min-height: 620px !important;\n    padding: 42px 0 64px !important;\n    background-image:\n      linear-gradient(\n        90deg,\n        rgba(5, 8, 13, 0.92) 0%,\n        rgba(5, 8, 13, 0.78) 38%,\n        rgba(5, 8, 13, 0.38) 72%,\n        rgba(5, 8, 13, 0.16) 100%\n      ),\n      url('https:\/\/web.annulartechnologies.com\/staging\/wp-content\/uploads\/2026\/10\/ai-testing-studio-hero-bg.png') !important;\n    background-position: center right !important;\n  }\n\n  .aits-page-wrapper .aits-breadcrumb {\n    margin-bottom: 48px !important;\n  }\n\n  .aits-page-wrapper .aits-hero-grid {\n    grid-template-columns: minmax(0, 1fr) !important;\n    min-height: auto !important;\n  }\n\n  .aits-page-wrapper .aits-hero-content {\n    max-width: 720px !important;\n  }\n}\n\n@media (max-width: 640px) {\n  .aits-page-wrapper .aits-hero-section {\n    min-height: auto !important;\n    padding: 30px 0 54px !important;\n    background-image:\n      linear-gradient(\n        180deg,\n        rgba(5, 8, 13, 0.82) 0%,\n        rgba(5, 8, 13, 0.76) 48%,\n        rgba(5, 8, 13, 0.66) 100%\n      ),\n      url('https:\/\/web.annulartechnologies.com\/staging\/wp-content\/uploads\/2026\/10\/ai-testing-studio-hero-bg.png') !important;\n    background-position: 68% center !important;\n  }\n\n  .aits-page-wrapper .aits-container {\n    padding-left: 20px !important;\n    padding-right: 20px !important;\n  }\n\n  .aits-page-wrapper .aits-breadcrumb {\n    gap: 7px !important;\n    margin-bottom: 42px !important;\n    font-size: 12px !important;\n  }\n\n  .aits-page-wrapper .aits-hero-content h1 {\n    font-size: clamp(34px, 9vw, 42px) !important;\n    line-height: 1.13 !important;\n    margin-bottom: 20px !important;\n  }\n\n  .aits-page-wrapper .aits-hero-content p {\n    font-size: 15.5px !important;\n    line-height: 1.7 !important;\n  }\n\n  .aits-page-wrapper .aits-hero-content .aits-btn-group {\n    flex-direction: column !important;\n    align-items: stretch !important;\n    gap: 12px !important;\n    margin-top: 28px !important;\n  }\n\n  .aits-page-wrapper .aits-hero-content .aits-btn-primary,\n  .aits-page-wrapper .aits-hero-content .aits-btn-secondary {\n    width: 100% !important;\n    min-height: 52px !important;\n    padding: 14px 18px !important;\n  }\n}\n\n\n\/* AVADA MOBILE VIEWPORT BREAKOUT \u2014 final override *\/\n@media (max-width: 640px) {\n  html, body {\n    max-width: 100% !important;\n    overflow-x: hidden !important;\n  }\n\n  \/* Break the custom page out of Avada's padded\/narrow column. *\/\n  .aits-page-wrapper {\n    position: relative !important;\n    left: 50% !important;\n    right: 50% !important;\n    width: 100vw !important;\n    max-width: 100vw !important;\n    margin-left: -50vw !important;\n    margin-right: -50vw !important;\n    padding: 0 !important;\n    transform: none !important;\n    overflow-x: clip !important;\n  }\n\n  .aits-page-wrapper .aits-hero-section {\n    width: 100% !important;\n    max-width: 100% !important;\n    margin: 0 !important;\n    padding: 28px 0 38px !important;\n    \n    box-sizing: border-box !important;\n  }\n\n  .aits-page-wrapper .aits-hero-section > .aits-container {\n    width: 100% !important;\n    max-width: none !important;\n    margin: 0 !important;\n    padding: 0 22px !important;\n    box-sizing: border-box !important;\n  }\n\n  .aits-page-wrapper .aits-breadcrumb,\n  .aits-page-wrapper .aits-hero-grid,\n  .aits-page-wrapper .aits-hero-content,\n  .aits-page-wrapper .aits-hero-content h1,\n  .aits-page-wrapper .aits-hero-content p,\n  .aits-page-wrapper .aits-hero-content .aits-btn-group {\n    width: 100% !important;\n    max-width: 100% !important;\n    min-width: 0 !important;\n    margin-left: 0 !important;\n    margin-right: 0 !important;\n    transform: none !important;\n    box-sizing: border-box !important;\n  }\n\n  .aits-page-wrapper .aits-breadcrumb {\n    display: flex !important;\n    flex-wrap: wrap !important;\n    overflow-wrap: anywhere !important;\n    margin-top: 0 !important;\n    margin-bottom: 30px !important;\n    font-size: 12px !important;\n  }\n\n  .aits-page-wrapper .aits-hero-grid {\n    display: block !important;\n  }\n\n  .aits-page-wrapper .aits-hero-content h1 {\n    font-size: clamp(32px, 8.5vw, 40px) !important;\n    line-height: 1.13 !important;\n    overflow-wrap: normal !important;\n  }\n\n  .aits-page-wrapper .aits-hero-content p {\n    font-size: 16px !important;\n    line-height: 1.7 !important;\n    overflow-wrap: break-word !important;\n  }\n\n  .aits-page-wrapper .aits-hero-content .aits-btn-group {\n    display: flex !important;\n    flex-direction: column !important;\n    align-items: stretch !important;\n    gap: 12px !important;\n  }\n\n  .aits-page-wrapper .aits-hero-content .aits-btn-primary,\n  .aits-page-wrapper .aits-hero-content .aits-btn-secondary {\n    width: 100% !important;\n    max-width: 100% !important;\n    min-width: 0 !important;\n    box-sizing: border-box !important;\n  }\n}\n\n<\/style>\n\n<div class=\"aits-page-wrapper\">\n\n  <section class=\"aits-hero-section\">\n    <div class=\"aits-container\">\n      <div class=\"aits-breadcrumb\">\n        <a href=\"https:\/\/web.annulartechnologies.com\/staging\/\">Home<\/a>\n        <i class=\"fas fa-chevron-right\" style=\"font-size: 10px;\"><\/i>\n        <span>Products<\/span>\n        <i class=\"fas fa-chevron-right\" style=\"font-size: 10px;\"><\/i>\n        <span class=\"curr\">AI Testing Studio<\/span>\n      <\/div>\n\n      <div class=\"aits-hero-grid\">\n        <div class=\"aits-hero-content\">\n          <h1>Test Smarter. <span>Release with Confidence.<\/span><\/h1>\n          <p>Bring test case management, test generation, execution, coverage analysis and QA intelligence into one connected workspace. AI Testing Studio helps teams understand application code, generate relevant tests, execute testing workflows and identify gaps in quality coverage.<\/p>\n\n          <div class=\"aits-btn-group\">\n            <a href=\"https:\/\/web.annulartechnologies.com\/staging\/contact\/\" class=\"aits-btn-primary\">Discuss Your QA Requirements<\/a>\n          <\/div>\n        <\/div>\n\n        <\/div>\n    <\/div>\n  <\/section>\n\n  <section class=\"aits-overview-section\" id=\"aits-overview\">\n    <div class=\"aits-container\">\n      <div class=\"aits-overview-box\">\n        <div style=\"text-align: center; margin-bottom: 16px;\">\n        <\/div>\n        <p>AI Testing Studio is an AI-powered test case management solution designed to connect code understanding, test case generation, automation, execution, coverage analysis and reporting. The platform flow described in the supplied presentation is: Understand, Generate, Execute, Monitor and Improve.<\/p>\n      <\/div>\n    <\/div>\n  <\/section>\n\n  <section class=\"aits-flow-section\" id=\"aits-workspace\">\n    <div class=\"aits-container\">\n      <div class=\"aits-section-header\">\n        <h2>One Connected <span>Testing Workspace<\/span><\/h2>\n        <p>A unified five-stage lifecycle connecting code understanding with intelligent test automation and quality monitoring.<\/p>\n      <\/div>\n\n      <div class=\"aits-flow-grid\">\n        <div class=\"aits-flow-card\">\n          <div class=\"aits-flow-num\">1<\/div>\n          <h3>Understand<\/h3>\n          <p>AI analyzes the codebase, architecture and business flows.<\/p>\n        <\/div>\n\n        <div class=\"aits-flow-card\">\n          <div class=\"aits-flow-num\">2<\/div>\n          <h3>Generate<\/h3>\n          <p>Convert that understanding into features, test cases and scripts.<\/p>\n        <\/div>\n\n        <div class=\"aits-flow-card\">\n          <div class=\"aits-flow-num\">3<\/div>\n          <h3>Execute<\/h3>\n          <p>Run tests through the automation framework.<\/p>\n        <\/div>\n\n        <div class=\"aits-flow-card\">\n          <div class=\"aits-flow-num\">4<\/div>\n          <h3>Monitor<\/h3>\n          <p>Track status, success rate, coverage and audit information.<\/p>\n        <\/div>\n\n        <div class=\"aits-flow-card\">\n          <div class=\"aits-flow-num\">5<\/div>\n          <h3>Improve<\/h3>\n          <p>Surface insights to support continuous quality improvement.<\/p>\n        <\/div>\n      <\/div>\n    <\/div>\n  <\/section>\n\n  <section class=\"aits-capabilities-section\" id=\"aits-capabilities\">\n    <div class=\"aits-container\">\n      <div class=\"aits-section-header\">\n        <h2>Core Testing <span>Capabilities<\/span><\/h2>\n        <p>Intelligent test automation spanning APIs, performance, security, UI, goal-based execution and code coverage analysis.<\/p>\n      <\/div>\n\n      <div class=\"aits-cap-grid\">\n        <div class=\"aits-cap-card\">\n          <div class=\"aits-cap-icon\"><i class=\"fas fa-network-wired\"><\/i><\/div>\n          <h3>API Testing<\/h3>\n          <p>Analyze the codebase, discover APIs, verify endpoints, normalize results, generate features and test cases, execute tests, add tests to the framework and report outcomes. The presentation describes an API Test Agent for API discovery, generation and execution, including positive, negative and validation scenarios.<\/p>\n        <\/div>\n\n        <div class=\"aits-cap-card\">\n          <div class=\"aits-cap-icon\"><i class=\"fas fa-tachometer-alt\"><\/i><\/div>\n          <h3>Performance Testing<\/h3>\n          <p>Configure the target and load, execute performance tests, capture metrics, analyze results and report findings. The presentation identifies concurrent users, request volume, duration and ramp-up behavior as configuration considerations, with response time, throughput, error rate and stability among key metrics.<\/p>\n        <\/div>\n\n        <div class=\"aits-cap-card\">\n          <div class=\"aits-cap-icon\"><i class=\"fas fa-shield-virus\"><\/i><\/div>\n          <h3>Security Testing<\/h3>\n          <p>Analyze the application, identify boundaries, generate and execute tests, classify findings and report results. The presentation includes discovery scanning, attack-surface mapping, detection of exposed tokens or hardcoded secrets, and AI-assisted remediation support with findings prioritized from Low to Critical.<\/p>\n        <\/div>\n\n        <div class=\"aits-cap-card\">\n          <div class=\"aits-cap-icon\"><i class=\"fas fa-desktop\"><\/i><\/div>\n          <h3>UI Testing<\/h3>\n          <p>Analyze application code, generate features and test cases, discover locators, generate automation, execute tests and report results. The presentation highlights centralized locator management, logical feature grouping and test scenarios that include preconditions, steps and expected results.<\/p>\n        <\/div>\n\n        <div class=\"aits-cap-card\">\n          <div class=\"aits-cap-icon\"><i class=\"fas fa-bullseye\"><\/i><\/div>\n          <h3>Goal-Based Test Execution<\/h3>\n          <p>Define the intended testing goal and let AI plan a path through the application. The workflow includes navigation, observation and action, validation, evidence capture and reporting. This differs from traditional automation that requires each action to be explicitly defined in advance.<\/p>\n        <\/div>\n\n        <div class=\"aits-cap-card\">\n          <div class=\"aits-cap-icon\"><i class=\"fas fa-chart-pie\"><\/i><\/div>\n          <h3>AI Test Coverage and Gap Analysis<\/h3>\n          <p>Connect to the environment, configure selected folders, instrument the application, execute tests, capture coverage, map coverage to code, analyze gaps and report. The goal is to identify code areas that may not have sufficient test coverage rather than relying on test count alone.<\/p>\n        <\/div>\n      <\/div>\n    <\/div>\n  <\/section>\n\n  <section class=\"aits-benefits-section\" id=\"aits-benefits\">\n    <div class=\"aits-container\">\n      <div class=\"aits-section-header\">\n        <h2>Engineered for <span>Speed and Confidence<\/span><\/h2>\n        <p>Measurable QA advantages connecting engineering teams directly with continuous quality insights.<\/p>\n      <\/div>\n\n      <div class=\"aits-benefits-grid\">\n        <div class=\"aits-benefit-card\">\n          <div class=\"aits-benefit-check\"><i class=\"fas fa-check\"><\/i><\/div>\n          <h4>Bring multiple testing dimensions into one connected workspace.<\/h4>\n        <\/div>\n\n        <div class=\"aits-benefit-card\">\n          <div class=\"aits-benefit-check\"><i class=\"fas fa-check\"><\/i><\/div>\n          <h4>Support AI-assisted generation of features, test cases and scripts.<\/h4>\n        <\/div>\n\n        <div class=\"aits-benefit-card\">\n          <div class=\"aits-benefit-check\"><i class=\"fas fa-check\"><\/i><\/div>\n          <h4>Connect testing workflows with automation and execution.<\/h4>\n        <\/div>\n\n        <div class=\"aits-benefit-card\">\n          <div class=\"aits-benefit-check\"><i class=\"fas fa-check\"><\/i><\/div>\n          <h4>Track test status, success rates, coverage and audit information.<\/h4>\n        <\/div>\n\n        <div class=\"aits-benefit-card\">\n          <div class=\"aits-benefit-check\"><i class=\"fas fa-check\"><\/i><\/div>\n          <h4>Identify potential test coverage gaps at code level.<\/h4>\n        <\/div>\n\n        <div class=\"aits-benefit-card\">\n          <div class=\"aits-benefit-check\"><i class=\"fas fa-check\"><\/i><\/div>\n          <h4>Use structured reporting to support QA decisions and release readiness.<\/h4>\n        <\/div>\n      <\/div>\n    <\/div>\n  <\/section>\n\n  <section class=\"aits-workflow-section\" id=\"aits-pipeline\">\n    <div class=\"aits-container\">\n      <div class=\"aits-workflow-grid\">\n        <div class=\"aits-workflow-content\">\n          <h2>From Code Change to <span>Verified Release<\/span><\/h2>\n          <p class=\"aits-workflow-lead\">The presentation describes a workflow that starts with a developer code change, followed by change analysis, impact identification, test updates, regression execution, security and accessibility validation, coverage gap identification, defect logging and release.<\/p>\n\n          <div class=\"aits-pipeline-steps\">\n            <div class=\"aits-pipeline-item\"><i class=\"fas fa-code-branch\"><\/i> 1. Developer Code Change<\/div>\n            <div class=\"aits-pipeline-item\"><i class=\"fas fa-search\"><\/i> 2. Change Analysis & Impact Identification<\/div>\n            <div class=\"aits-pipeline-item\"><i class=\"fas fa-sync-alt\"><\/i> 3. Test Updates & Regression Execution<\/div>\n            <div class=\"aits-pipeline-item\"><i class=\"fas fa-shield-alt\"><\/i> 4. Security & Accessibility Validation<\/div>\n            <div class=\"aits-pipeline-item\"><i class=\"fas fa-bug\"><\/i> 5. Coverage Gap Identification & Defect Logging<\/div>\n            <div class=\"aits-pipeline-item\"><i class=\"fas fa-rocket\"><\/i> 6. Confident Verified Release<\/div>\n          <\/div>\n        <\/div>\n\n        <div class=\"aits-workflow-image-frame\">\n          <img decoding=\"async\" src=\"https:\/\/web.annulartechnologies.com\/staging\/wp-content\/uploads\/2026\/10\/ai-testing-studio-hero.png\" alt=\"From Code Change to Verified Release Flow\" width=\"550\" height=\"420\" \/>\n        <\/div>\n      <\/div>\n    <\/div>\n  <\/section>\n\n  <section class=\"aits-roadmap-section\" id=\"aits-roadmap\">\n    <div class=\"aits-container\">\n      <div class=\"aits-section-header\">\n        <h2>Product <span>Roadmap Items<\/span><\/h2>\n        <p>The supplied presentation identifies the following as future roadmap items, not necessarily current capabilities:<\/p>\n      <\/div>\n\n      <div class=\"aits-timeline-wrapper\">\n        <div class=\"aits-timeline-item aits-timeline-left\">\n          <div class=\"aits-timeline-node\">01<\/div>\n          <div class=\"aits-timeline-card\">\n            <span class=\"aits-timeline-tag\">Agile Integration<\/span>\n            <h4>In-Sprint Test Automation<\/h4>\n            <p>Seamlessly embed automated test creation and execution directly into ongoing agile development sprints.<\/p>\n          <\/div>\n        <\/div>\n\n        <div class=\"aits-timeline-item aits-timeline-right\">\n          <div class=\"aits-timeline-node\">02<\/div>\n          <div class=\"aits-timeline-card\">\n            <span class=\"aits-timeline-tag\">Ecosystem Sync<\/span>\n            <h4>Project Management Tool Integration<\/h4>\n            <p>Bi-directional sync with Jira, Linear, and project trackers for automated issue management.<\/p>\n          <\/div>\n        <\/div>\n\n        <div class=\"aits-timeline-item aits-timeline-left\">\n          <div class=\"aits-timeline-node\">03<\/div>\n          <div class=\"aits-timeline-card\">\n            <span class=\"aits-timeline-tag\">CI\/CD Automation<\/span>\n            <h4>PR-Based Regression Testing<\/h4>\n            <p>Automatically trigger focused regression test suites directly upon Pull Request submission.<\/p>\n          <\/div>\n        <\/div>\n\n        <div class=\"aits-timeline-item aits-timeline-right\">\n          <div class=\"aits-timeline-node\">04<\/div>\n          <div class=\"aits-timeline-card\">\n            <span class=\"aits-timeline-tag\">QA Intelligence<\/span>\n            <h4>Enhanced Dashboards<\/h4>\n            <p>Expanded executive analytics, quality health scorecards, and velocity tracking visualizations.<\/p>\n          <\/div>\n        <\/div>\n\n        <div class=\"aits-timeline-item aits-timeline-left\">\n          <div class=\"aits-timeline-node\">05<\/div>\n          <div class=\"aits-timeline-card\">\n            <span class=\"aits-timeline-tag\">Security Shield<\/span>\n            <h4>Enhanced Security Testing<\/h4>\n            <p>Deeper vulnerability scanning and automated remediation recommendations during test execution.<\/p>\n          <\/div>\n        <\/div>\n\n        <div class=\"aits-timeline-item aits-timeline-right\">\n          <div class=\"aits-timeline-node\">06<\/div>\n          <div class=\"aits-timeline-card\">\n            <span class=\"aits-timeline-tag\">Compliance<\/span>\n            <h4>Enhanced Accessibility Testing<\/h4>\n            <p>Automated WCAG compliance audits and screen reader compatibility validations.<\/p>\n          <\/div>\n        <\/div>\n\n        <div class=\"aits-timeline-item aits-timeline-left\">\n          <div class=\"aits-timeline-node\">07<\/div>\n          <div class=\"aits-timeline-card\">\n            <span class=\"aits-timeline-tag\">Defect Intelligence<\/span>\n            <h4>Automatic Defect Logging<\/h4>\n            <p>Capture and log defects automatically with complete runtime logs, screenshots and reproduction steps.<\/p>\n          <\/div>\n        <\/div>\n      <\/div>\n    <\/div>\n  <\/section>\n\n  <section class=\"aits-faqs-section\" id=\"aits-faqs\">\n    <div class=\"aits-container\">\n      <div class=\"aits-section-header\">\n        <h2>Frequently Asked Questions<\/h2>\n      <\/div>\n\n      <div class=\"aits-accordion\">\n        <div class=\"aits-accordion-item active\">\n          <div class=\"aits-accordion-header\">\n            <h3>Which testing areas are covered in the presentation?<\/h3>\n            <div class=\"aits-accordion-icon\"><i class=\"fas fa-chevron-down\"><\/i><\/div>\n          <\/div>\n          <div class=\"aits-accordion-body\">\n            API testing, performance testing, security testing, UI testing, goal-based execution, and test coverage and gap analysis.\n          <\/div>\n        <\/div>\n\n        <div class=\"aits-accordion-item\">\n          <div class=\"aits-accordion-header\">\n            <h3>Does the platform support AI-assisted test generation?<\/h3>\n            <div class=\"aits-accordion-icon\"><i class=\"fas fa-chevron-down\"><\/i><\/div>\n          <\/div>\n          <div class=\"aits-accordion-body\">\n            Yes. The presentation describes AI-driven generation of features, test cases and scripts based on analysis of the codebase, architecture and business flows.\n          <\/div>\n        <\/div>\n\n        <div class=\"aits-accordion-item\">\n          <div class=\"aits-accordion-header\">\n            <h3>Are all roadmap items available today?<\/h3>\n            <div class=\"aits-accordion-icon\"><i class=\"fas fa-chevron-down\"><\/i><\/div>\n          <\/div>\n          <div class=\"aits-accordion-body\">\n            The presentation labels several items as future roadmap items. Availability should be confirmed before presenting them as released features.\n          <\/div>\n        <\/div>\n      <\/div>\n    <\/div>\n  <\/section>\n\n  <section class=\"aits-cta-section\" id=\"aits-contact\">\n    <div class=\"aits-container\">\n      <div class=\"aits-cta-inner\">\n        <h2>Accelerate Your Quality Lifecycle<\/h2>\n        <p>Looking to connect test design, execution and coverage in one workspace? Contact Annular to discuss AI Testing Studio and your QA workflow.<\/p>\n\n        <div class=\"aits-shared-cta-box\">\n          <h4>Have a product requirement or want to learn more?<\/h4>\n          <p>Contact Annular Technologies to discuss the product, confirm available capabilities and explore a suitable next step.<\/p>\n          <div class=\"aits-btn-group\">\n            <a href=\"https:\/\/web.annulartechnologies.com\/staging\/contact\/\" class=\"aits-btn-primary\">Contact Us<\/a>\n            \n          <\/div>\n        <\/div>\n      <\/div>\n    <\/div>\n  <\/section>\n\n<\/div>\n\n\n\n<!-- FINAL AVADA MOBILE FULL-WIDTH FIX -->\n<style id=\"aits-mobile-full-width-fix\">\n\/* Base Reset & Zero-Overflow Prevention *\/\n*, *::before, *::after {\n  box-sizing: border-box;\n}\n\nhtml, body {\n  width: 100% !important;\n  max-width: 100% !important;\n  overflow-x: hidden !important;\n  margin: 0 !important;\n  padding: 0 !important;\n}\n\n#main,\n#content,\n#content.full-width,\n.post-1945,\n.fusion-builder-container,\n.fusion-builder-row,\n.fusion-layout-column,\n.fusion-column-wrapper {\n  width: 100% !important;\n  max-width: 100% !important;\n  margin-left: 0 !important;\n  margin-right: 0 !important;\n  padding-left: 0 !important;\n  padding-right: 0 !important;\n  box-sizing: border-box !important;\n}\n\n.aits-page-wrapper {\n  width: 100% !important;\n  max-width: 100% !important;\n  margin: 0 !important;\n  padding: 0 !important;\n  box-sizing: border-box !important;\n  overflow-x: hidden !important;\n  position: relative !important;\n  left: auto !important;\n  right: auto !important;\n}\n\n\/* ========================================================\n   AI TESTING STUDIO - MOBILE VIEWPORT (<= 900px)\n   ALL CONTENT CENTERED & 100% FULL WIDTH\n   ======================================================== *\/\n@media (max-width: 900px) {\n  \/* Hero Section: Centered, Full Width, Dark Futuristic Background *\/\n  .aits-hero-section {\n    position: relative !important;\n    display: block !important;\n    width: 100% !important;\n    max-width: 100% !important;\n    margin: 0 !important;\n    padding: 60px 20px 80px 20px !important;\n    background-color: #06090e !important;\n    background-image: \n      linear-gradient(180deg, rgba(6, 9, 14, 0.94) 0%, rgba(6, 9, 14, 0.88) 55%, rgba(6, 9, 14, 0.96) 100%),\n      url('https:\/\/web.annulartechnologies.com\/staging\/wp-content\/uploads\/2026\/10\/ai-testing-studio-hero-bg.png') !important;\n    background-position: center center !important;\n    background-size: cover !important;\n    background-repeat: no-repeat !important;\n    text-align: center !important;\n    box-sizing: border-box !important;\n    overflow: hidden !important;\n    min-height: auto !important;\n  }\n\n  .aits-hero-section > .aits-container,\n  .aits-page-wrapper .aits-container,\n  .aits-container {\n    width: 100% !important;\n    max-width: 100% !important;\n    margin: 0 auto !important;\n    padding: 0 16px !important;\n    box-sizing: border-box !important;\n    text-align: center !important;\n    position: relative !important;\n  }\n\n  .aits-hero-grid {\n    display: flex !important;\n    flex-direction: column !important;\n    align-items: center !important;\n    justify-content: center !important;\n    width: 100% !important;\n    max-width: 100% !important;\n    margin: 0 auto !important;\n    min-height: auto !important;\n    gap: 0 !important;\n    text-align: center !important;\n  }\n\n  .aits-breadcrumb {\n    display: flex !important;\n    justify-content: center !important;\n    align-items: center !important;\n    width: 100% !important;\n    margin: 0 auto 20px auto !important;\n    text-align: center !important;\n    color: #94a3b8 !important;\n    font-size: 13px !important;\n  }\n\n  .aits-eyebrow {\n    display: inline-flex !important;\n    align-items: center !important;\n    justify-content: center !important;\n    margin: 0 auto 20px auto !important;\n    text-align: center !important;\n  }\n\n  .aits-hero-content {\n    display: flex !important;\n    flex-direction: column !important;\n    align-items: center !important;\n    justify-content: center !important;\n    width: 100% !important;\n    max-width: 600px !important;\n    margin: 0 auto !important;\n    text-align: center !important;\n    position: relative !important;\n    z-index: 2 !important;\n  }\n\n  .aits-hero-content h1 {\n    font-size: clamp(30px, 8vw, 42px) !important;\n    line-height: 1.18 !important;\n    text-align: center !important;\n    margin: 0 auto 18px auto !important;\n    color: #ffffff !important;\n    letter-spacing: -0.025em !important;\n    width: 100% !important;\n  }\n\n  .aits-hero-content h1 span {\n    background: linear-gradient(135deg, #00f2fe 0%, #38bdf8 45%, #10b981 100%) !important;\n    -webkit-background-clip: text !important;\n    -webkit-text-fill-color: transparent !important;\n    display: inline-block !important;\n  }\n\n  .aits-hero-content p {\n    font-size: 16px !important;\n    line-height: 1.75 !important;\n    text-align: center !important;\n    color: #cbd5e1 !important;\n    max-width: 520px !important;\n    margin: 0 auto 30px auto !important;\n    width: 100% !important;\n  }\n\n  .aits-btn-group {\n    display: flex !important;\n    flex-direction: column !important;\n    align-items: center !important;\n    justify-content: center !important;\n    gap: 14px !important;\n    width: 100% !important;\n    max-width: 320px !important;\n    margin: 0 auto !important;\n  }\n\n  .aits-btn-primary,\n  .aits-btn-secondary {\n    width: 100% !important;\n    display: flex !important;\n    align-items: center !important;\n    justify-content: center !important;\n    text-align: center !important;\n    padding: 14px 24px !important;\n    font-size: 15px !important;\n    font-weight: 600 !important;\n    border-radius: 8px !important;\n    box-sizing: border-box !important;\n  }\n\n  .aits-hero-image-frame {\n    display: none !important;\n  }\n\n  \/* Grids and Cards on Mobile *\/\n  .aits-flow-grid,\n  .aits-cap-grid,\n  .aits-benefits-grid,\n  .aits-workflow-grid {\n    grid-template-columns: 1fr !important;\n    width: 100% !important;\n    max-width: 100% !important;\n    margin: 0 auto !important;\n    gap: 20px !important;\n  }\n\n  .aits-section-header {\n    text-align: center !important;\n    margin: 0 auto 36px auto !important;\n  }\n\n  .aits-section-header h2 {\n    font-size: clamp(26px, 6.5vw, 34px) !important;\n    text-align: center !important;\n    margin-bottom: 12px !important;\n  }\n\n  .aits-section-header p {\n    text-align: center !important;\n    margin: 0 auto !important;\n  }\n\n  .aits-page-wrapper section {\n    width: 100% !important;\n    max-width: 100% !important;\n    box-sizing: border-box !important;\n    overflow-x: hidden !important;\n  }\n}\n\n@media (max-width: 480px) {\n  .aits-hero-section {\n    padding: 50px 16px 70px 16px !important;\n  }\n  .aits-hero-content h1 {\n    font-size: 28px !important;\n  }\n  .aits-btn-group {\n    max-width: 100% !important;\n  }\n}\n<\/style>\n\n<script>\ndocument.addEventListener('DOMContentLoaded', function() {\n  document.title = 'AI Testing Studio | AI-Powered Test Case Management | Annular';\n  \n  const accItems = document.querySelectorAll('.aits-accordion-item');\n  accItems.forEach(item => {\n    const header = item.querySelector('.aits-accordion-header');\n    if (header) {\n      header.addEventListener('click', () => {\n        const isOpen = item.classList.contains('active');\n        accItems.forEach(i => i.classList.remove('active'));\n        if (!isOpen) item.classList.add('active');\n      });\n    }\n  });\n});\n<\/script><\/div><\/div><\/div><\/section>\n<div class=\"fusion-fullwidth fullwidth-box fusion-builder-row-2 fusion-flex-container hundred-percent-fullwidth non-hundred-percent-height-scrolling\" style=\"--awb-border-radius-top-left:0px;--awb-border-radius-top-right:0px;--awb-border-radius-bottom-right:0px;--awb-border-radius-bottom-left:0px;--awb-padding-top:0px;--awb-padding-right:0px;--awb-padding-bottom:0px;--awb-padding-left:0px;--awb-margin-top:0px;--awb-margin-bottom:0px;--awb-flex-wrap:wrap;\" ><div class=\"fusion-builder-row fusion-row fusion-flex-align-items-flex-start fusion-flex-content-wrap\" style=\"width:104% !important;max-width:104% !important;margin-left: calc(-4% \/ 2 );margin-right: calc(-4% \/ 2 );\"><div class=\"fusion-layout-column fusion_builder_column fusion-builder-column-1 fusion_builder_column_1_1 1_1 fusion-flex-column\" style=\"--awb-padding-top:0px;--awb-padding-right:0px;--awb-padding-bottom:0px;--awb-padding-left:0px;--awb-bg-size:cover;--awb-width-large:100%;--awb-margin-top-large:0px;--awb-spacing-right-large:1.92%;--awb-margin-bottom-large:0px;--awb-spacing-left-large:1.92%;--awb-width-medium:100%;--awb-spacing-right-medium:1.92%;--awb-spacing-left-medium:1.92%;--awb-width-small:100%;--awb-spacing-right-small:1.92%;--awb-spacing-left-small:1.92%;\"><div class=\"fusion-column-wrapper fusion-flex-justify-content-flex-start fusion-content-layout-column\"><!-- =====================================================\n ANNULAR TECHNOLOGIES | TWO-STEP CONSULTATION POPUP\n WordPress \/ Avada + EmailJS + Email OTP\n Responsive Form + PODS \/ Annular Domain Detection\n===================================================== -->\n\n<style>\n#annular-open {\n  display:inline-flex;align-items:center;justify-content:center;\n  min-height:48px;padding:13px 25px;border:0;border-radius:30px;\n  max-width: 40%;\n  background:#175cff;color:#fff;font-family:inherit;font-size:14px;\n  font-weight:600;cursor:pointer;transition:.2s;\n}\n#annular-open:hover {background:#1048d8;transform:translateY(-1px)}\n\nhtml.annular-popup-open,body.annular-popup-open {\n  overflow:hidden!important;\n}\n\n#annular-modal,#annular-thankyou-modal {\n  display:none;position:fixed!important;inset:0!important;\n  z-index:2147483647!important;width:100%!important;height:100vh!important;\n  height:100dvh!important;box-sizing:border-box!important;padding:16px!important;\n  align-items:center!important;justify-content:center!important;\n  overflow-y:auto!important;background:rgba(15,23,42,.68);\n}\n#annular-modal.is-open,#annular-thankyou-modal.is-open {\n  display:flex!important;\n}\n\n#annular-modal .annular-card {\n  position:relative;width:100%;max-width:480px;\n  max-height:calc(100vh - 32px);max-height:calc(100dvh - 32px);\n  box-sizing:border-box;margin:auto;padding:27px;\n  overflow-y:auto;overscroll-behavior:contain;\n  border:1px solid #eaecf0;border-radius:20px;\n  background:#fff;color:#171717;box-shadow:0 20px 70px #0003;\n}\n\n#annular-modal h3 {\n  margin:0 42px 8px 0;color:#171717;font-size:25px;\n  font-weight:700;line-height:1.3;\n}\n#annular-modal .annular-description {\n  margin:0 0 20px;color:#667085;font-size:13px;line-height:1.7;\n}\n\n#annular-close,#annular-thankyou-close {\n  position:absolute;top:12px;right:12px;display:flex;\n  align-items:center;justify-content:center;width:34px;height:34px;\n  padding:0;border:0;border-radius:50%;background:#f3f4f6;\n  color:#4b5563;font-size:24px;cursor:pointer;\n}\n#annular-close:hover,#annular-thankyou-close:hover {\n  background:#e5e7eb;\n}\n\n#annular-modal .annular-progress {\n  display:flex;align-items:center;gap:10px;margin:0 0 20px;\n}\n#annular-modal .annular-progress-line {\n  flex:1;height:3px;border-radius:5px;background:#e5e7eb;\n}\n#annular-modal .annular-progress-line.active {\n  background:#175cff;\n}\n#annular-modal .annular-step-label {\n  margin-bottom:8px;color:#175cff;font-size:11px;font-weight:700;\n  letter-spacing:1px;text-transform:uppercase;\n}\n#annular-modal #annular-form {\n  width:100%;margin:0;\n}\n#annular-modal .annular-screen[hidden],\n#annular-modal #annular-otp-area[hidden] {\n  display:none!important;\n}\n#annular-modal .annular-field {\n  width:100%;min-width:0;margin:0 0 16px;\n}\n#annular-modal label {\n  display:block;margin-bottom:7px;color:#344054;font-size:13px;\n  font-weight:600;line-height:1.4;\n}\n#annular-modal input,#annular-modal textarea {\n  display:block;width:100%;min-width:0;min-height:46px;\n  box-sizing:border-box;margin:0;padding:12px 14px;\n  border:1px solid #d0d5dd;border-radius:11px;background:#fff;\n  color:#171717;font-family:inherit;font-size:14px;line-height:1.5;\n  box-shadow:none;transition:border-color .2s,box-shadow .2s;\n}\n#annular-modal textarea {\n  min-height:105px;resize:vertical;\n}\n#annular-modal input::placeholder,\n#annular-modal textarea::placeholder {\n  color:#98a2b3;\n}\n#annular-modal input:focus,#annular-modal textarea:focus {\n  border-color:#175cff;outline:none;box-shadow:0 0 0 3px #175cff1f;\n}\n#annular-modal button,#annular-thankyou-modal button {\n  font-family:inherit;\n}\n\n#annular-modal .annular-inline-row {\n  display:flex;align-items:stretch;gap:8px;width:100%;\n}\n#annular-modal .annular-inline-row input {\n  flex:1 1 auto;width:100%;\n}\n#annular-send-otp,#annular-verify {\n  display:inline-flex;flex:0 0 auto;align-items:center;justify-content:center;\n  min-height:46px;padding:10px 14px;border:0;border-radius:25px;\n  background:#eaf0ff;color:#175cff;font-size:12px;font-weight:700;\n  white-space:nowrap;cursor:pointer;\n}\n#annular-send-otp:hover:not(:disabled),\n#annular-verify:hover:not(:disabled) {\n  background:#d9e5ff;\n}\n#annular-send-otp:disabled,#annular-verify:disabled {\n  opacity:.5;cursor:not-allowed;\n}\n#annular-otp-area {\n  margin:0 0 16px;padding:15px;border:1px solid #e4e9f2;\n  border-radius:14px;background:#f8faff;\n}\n#annular-modal #annular-otp {\n  letter-spacing:5px;font-size:17px;font-weight:700;\n}\n\n#annular-next,#annular-submit,#annular-back {\n  display:inline-flex;align-items:center;justify-content:center;\n  min-height:47px;box-sizing:border-box;padding:12px 18px;\n  border:0;border-radius:28px;font-size:14px;font-weight:700;\n  cursor:pointer;transition:background .2s,opacity .2s;\n}\n#annular-next,#annular-submit {\n  width:100%;background:#175cff;color:#fff;\n}\n#annular-next:hover:not(:disabled),\n#annular-submit:hover:not(:disabled) {\n  background:#1048d8;\n}\n#annular-next:disabled,#annular-submit:disabled {\n  opacity:.5;cursor:not-allowed;\n}\n#annular-back {\n  flex:0 0 auto;background:#f2f4f7;color:#344054;\n}\n#annular-back:hover {\n  background:#e4e7ec;\n}\n#annular-step2-actions {\n  display:flex;gap:10px;margin-top:8px;\n}\n#annular-step2-actions #annular-submit {\n  flex:1;\n}\n#annular-status {\n  margin-top:12px;color:#475569;font-size:12px;line-height:1.6;\n  overflow-wrap:anywhere;\n}\n#annular-status:empty {\n  display:none;\n}\n#annular-status.success {\n  color:#087443;\n}\n#annular-status.error {\n  color:#b42318;\n}\n\n#annular-thankyou-modal .annular-thankyou-card {\n  position:relative;width:100%;max-width:420px;box-sizing:border-box;\n  margin:auto;padding:40px 30px 30px;border:1px solid #eaecf0;\n  border-radius:22px;background:#fff;color:#171717;text-align:center;\n  box-shadow:0 24px 80px #0005;animation:annular-thankyou-in .25s ease-out;\n}\n#annular-thankyou-modal .annular-success-icon {\n  display:flex;align-items:center;justify-content:center;width:66px;height:66px;\n  margin:0 auto 20px;border:1px solid #b7ebcf;border-radius:50%;\n  background:#ecfdf3;color:#087443;font-size:34px;font-weight:700;\n}\n#annular-thankyou-modal h3 {\n  margin:0 0 12px;font-size:25px;font-weight:700;\n}\n#annular-thankyou-modal .annular-thankyou-message {\n  margin:0 auto 24px;max-width:320px;color:#667085;font-size:14px;line-height:1.8;\n}\n#annular-thankyou-modal .annular-thankyou-button {\n  width:100%;min-height:46px;padding:12px 20px;border:0;border-radius:28px;\n  background:#175cff;color:#fff;font-size:14px;font-weight:700;cursor:pointer;\n}\n#annular-thankyou-modal .annular-thankyou-button:hover {\n  background:#1048d8;\n}\n@keyframes annular-thankyou-in {\n  from {opacity:0;transform:translateY(12px) scale(.98)}\n  to {opacity:1;transform:translateY(0) scale(1)}\n}\n\n@media(max-width:600px) {\n  #annular-modal {padding:10px!important}\n  #annular-modal .annular-card {\n    max-height:calc(100vh - 20px);max-height:calc(100dvh - 20px);\n    padding:22px 17px;border-radius:17px;\n  }\n  #annular-modal h3 {font-size:22px}\n  #annular-modal .annular-description {margin-bottom:16px}\n  #annular-modal input,#annular-modal textarea {font-size:16px}\n  #annular-modal .annular-inline-row {gap:6px}\n  #annular-send-otp,#annular-verify {padding:9px 10px;font-size:11px}\n  #annular-thankyou-modal .annular-thankyou-card {padding:36px 22px 24px}\n}\n@media(max-height:650px) {\n  #annular-modal {align-items:flex-start!important;padding:10px!important}\n  #annular-modal .annular-card {\n    max-height:calc(100vh - 20px);max-height:calc(100dvh - 20px);\n    margin:0 auto;padding-top:18px;padding-bottom:18px;\n  }\n  #annular-modal .annular-field {margin-bottom:12px}\n}\n<\/style>\n\n<!-- OPEN BUTTON -->\n\n\n<!-- CONSULTATION POPUP -->\n<div id=\"annular-modal\" role=\"dialog\" aria-modal=\"true\"\n     aria-labelledby=\"annular-title\" aria-hidden=\"true\">\n  <div class=\"annular-card\">\n    <button id=\"annular-close\" type=\"button\" aria-label=\"Close form\">\u00d7<\/button>\n\n    <h3 id=\"annular-title\">Discuss Your QA Requirements<\/h3>\n    <p class=\"annular-description\">\n      Share your requirements and our team will get in touch.\n    <\/p>\n\n    <div class=\"annular-progress\" aria-label=\"Form progress\">\n      <div id=\"annular-progress-1\" class=\"annular-progress-line active\"><\/div>\n      <div id=\"annular-progress-2\" class=\"annular-progress-line\"><\/div>\n    <\/div>\n\n    <form id=\"annular-form\">\n      <!-- STEP 1 -->\n      <section id=\"annular-screen-1\" class=\"annular-screen\">\n        <div class=\"annular-step-label\">Step 1 of 2<\/div>\n\n        <div class=\"annular-field\">\n          <label for=\"annular-name\">Full Name *<\/label>\n          <input id=\"annular-name\" name=\"user_name\" type=\"text\"\n                 placeholder=\"Enter your full name\" autocomplete=\"name\"\n                 maxlength=\"120\" required>\n        <\/div>\n\n        <div class=\"annular-field\">\n          <label for=\"annular-email\">Email *<\/label>\n          <div class=\"annular-inline-row\">\n            <input id=\"annular-email\" name=\"user_email\" type=\"email\"\n                   placeholder=\"Enter your email address\" autocomplete=\"email\"\n                   maxlength=\"254\" required>\n            <button id=\"annular-send-otp\" type=\"button\" disabled>Send OTP<\/button>\n          <\/div>\n        <\/div>\n\n        <div id=\"annular-otp-area\" hidden>\n          <div class=\"annular-field\">\n            <label for=\"annular-otp\">Enter Email OTP *<\/label>\n            <div class=\"annular-inline-row\">\n              <input id=\"annular-otp\" name=\"otp\" type=\"text\"\n                     inputmode=\"numeric\" autocomplete=\"one-time-code\"\n                     maxlength=\"6\" pattern=\"[0-9]{6}\" placeholder=\"6-digit OTP\">\n              <button id=\"annular-verify\" type=\"button\">Verify<\/button>\n            <\/div>\n          <\/div>\n          <p style=\"margin:0;color:#667085;font-size:12px;line-height:1.6\">\n            Check your inbox and spam folder for the verification code.\n          <\/p>\n        <\/div>\n\n        <button id=\"annular-next\" type=\"button\" disabled style=\"margin-top:8px\">\n          Continue \u2192\n        <\/button>\n      <\/section>\n\n      <!-- STEP 2 -->\n      <section id=\"annular-screen-2\" class=\"annular-screen\" hidden>\n        <div class=\"annular-step-label\">Step 2 of 2<\/div>\n        <p style=\"margin:0 0 17px;color:#667085;font-size:13px;line-height:1.6\">\n          Your email is verified. Tell us a little more about your requirements.\n        <\/p>\n\n        <div class=\"annular-field\">\n          <label for=\"annular-mobile\">Mobile Number *<\/label>\n          <input id=\"annular-mobile\" name=\"user_mobile\" type=\"tel\"\n                 placeholder=\"Enter your mobile number\" autocomplete=\"tel\"\n                 maxlength=\"20\" pattern=\"[+]?[0-9 ()-]{7,20}\"\n                 title=\"Enter a valid mobile number.\" required>\n        <\/div>\n\n        <div class=\"annular-field\">\n          <label for=\"annular-help\">How Can We Help? *<\/label>\n          <textarea id=\"annular-help\" name=\"message\"\n                    placeholder=\"Tell us about your project or requirements\"\n                    maxlength=\"4000\" required><\/textarea>\n        <\/div>\n\n        <div id=\"annular-step2-actions\">\n          <button id=\"annular-back\" type=\"button\">\u2190 Back<\/button>\n          <button id=\"annular-submit\" type=\"submit\" disabled>Submit Enquiry<\/button>\n        <\/div>\n      <\/section>\n\n      <div id=\"annular-status\" role=\"status\" aria-live=\"polite\"><\/div>\n    <\/form>\n  <\/div>\n<\/div>\n\n<!-- THANK-YOU POPUP -->\n<div id=\"annular-thankyou-modal\" role=\"dialog\" aria-modal=\"true\"\n     aria-labelledby=\"annular-thankyou-title\"\n     aria-describedby=\"annular-thankyou-description\" aria-hidden=\"true\">\n  <div class=\"annular-thankyou-card\">\n    <button id=\"annular-thankyou-close\" type=\"button\"\n            aria-label=\"Close thank-you message\">\u00d7<\/button>\n\n    <div class=\"annular-success-icon\" aria-hidden=\"true\">\u2713<\/div>\n    <h3 id=\"annular-thankyou-title\">Thank You!<\/h3>\n    <p id=\"annular-thankyou-description\" class=\"annular-thankyou-message\">\n      Your consultation request has been submitted successfully.\n      Our team will review your requirements and get in touch with you soon.\n    <\/p>\n    <button id=\"annular-thankyou-done\" type=\"button\"\n            class=\"annular-thankyou-button\">Done<\/button>\n  <\/div>\n<\/div>\n\n<script src=\"https:\/\/cdn.jsdelivr.net\/npm\/@emailjs\/browser@4\/dist\/email.min.js\"><\/script>\n\n<script>\n(() => {\n  \"use strict\";\n\n  \/* EMAILJS SETTINGS *\/\n  const SERVICE_ID = \"service_56m8mns\";\n  const PUBLIC_KEY = \"7krsXzZ1B4qnPrCGC\";\n  const OTP_TEMPLATE_ID = \"template_6r4w7s6\";\n  const ENQUIRY_TEMPLATE_ID = \"template_ol5pw49\";\n\n  \/* WEBSITE DETECTION *\/\n  const hostname = window.location.hostname.toLowerCase().replace(\/\\.$\/, \"\");\n\n  const isPods = [\n    \"pods.annulartechnologies.com\",\n    \"www.pods.annulartechnologies.com\"\n  ].includes(hostname);\n\n  const isAnnular = [\n    \"annulartechnologies.com\",\n    \"www.annulartechnologies.com\",\n    \"web.annulartechnologies.com\"\n  ].includes(hostname);\n\n  const $ = id => document.getElementById(id);\n\n  const openButton = $(\"annular-open\") || { addEventListener: () => {}, focus: () => {} };\n  let currentServiceContext = \"AI Test Case Studio\";\n  let currentTitleContext = \"Discuss Your QA Requirements\";\n  const modal = $(\"annular-modal\");\n  const thankyouModal = $(\"annular-thankyou-modal\");\n  const form = $(\"annular-form\");\n\n  const nameInput = $(\"annular-name\");\n  const emailInput = $(\"annular-email\");\n  const mobileInput = $(\"annular-mobile\");\n  const helpInput = $(\"annular-help\");\n  const otpArea = $(\"annular-otp-area\");\n  const otpInput = $(\"annular-otp\");\n\n  const sendButton = $(\"annular-send-otp\");\n  const verifyButton = $(\"annular-verify\");\n  const nextButton = $(\"annular-next\");\n  const backButton = $(\"annular-back\");\n  const submitButton = $(\"annular-submit\");\n  const status = $(\"annular-status\");\n\n  let currentOTP = \"\";\n  let verifiedEmail = \"\";\n  let otpExpiresAt = 0;\n  let otpAttempts = 0;\n  let resendAvailableAt = 0;\n  let resendTimer = null;\n  let sendingOTP = false;\n  let sendingEnquiry = false;\n  let requestVersion = 0;\n  let previousFocus = null;\n  let previousBodyOverflow = \"\";\n  let previousHtmlOverflow = \"\";\n\n  \/* Move popups outside Avada containers *\/\n  document.body.appendChild(modal);\n  document.body.appendChild(thankyouModal);\n\n  function setStatus(message, type = \"\") {\n    status.textContent = message;\n    status.className = type;\n  }\n\n  function getEmail() {\n    return emailInput.value.trim().toLowerCase();\n  }\n\n  function emailJSReady() {\n    return Boolean(window.emailjs &&\n      typeof window.emailjs.send === \"function\");\n  }\n\n  if (emailJSReady()) {\n    window.emailjs.init({ publicKey: PUBLIC_KEY });\n  } else {\n    setStatus(\"Email service failed to load. Refresh the page and try again.\", \"error\");\n  }\n\n  \/* Enable OTP only when the email is valid *\/\n  function updateSendButton() {\n    const validEmail =\n      emailInput.value.trim() !== \"\" && emailInput.checkValidity();\n\n    const coolingDown = Date.now() < resendAvailableAt;\n\n    sendButton.disabled =\n      !validEmail || sendingOTP || sendingEnquiry || coolingDown;\n  }\n\n  \/* Enable Continue only when name and verified email are valid *\/\n  function updateContinueButton() {\n    const nameValid = nameInput.value.trim().length > 0;\n\n    const verificationValid =\n      verifiedEmail !== \"\" &&\n      verifiedEmail === getEmail() &&\n      Date.now() < otpExpiresAt;\n\n    nextButton.disabled = !(\n      nameValid && verificationValid && !sendingEnquiry\n    );\n  }\n\n  \/*\n   * IMPORTANT FIX:\n   * Submit is enabled only when:\n   * 1. Email has been verified and OTP is not expired.\n   * 2. Mobile number is valid.\n   * 3. Message is not empty.\n   * 4. No enquiry is currently being submitted.\n   *\/\n  function updateSubmitButton() {\n    const verificationValid =\n      verifiedEmail !== \"\" &&\n      verifiedEmail === getEmail() &&\n      currentOTP !== \"\" &&\n      Date.now() < otpExpiresAt;\n\n    const mobileValid =\n      mobileInput.value.trim() !== \"\" &&\n      mobileInput.checkValidity();\n\n    const messageValid =\n      helpInput.value.trim().length > 0;\n\n    submitButton.disabled = !(\n      verificationValid &&\n      mobileValid &&\n      messageValid &&\n      !sendingEnquiry\n    );\n  }\n\n  function lockPageScroll() {\n    previousBodyOverflow = document.body.style.overflow;\n    previousHtmlOverflow = document.documentElement.style.overflow;\n\n    document.documentElement.classList.add(\"annular-popup-open\");\n    document.body.classList.add(\"annular-popup-open\");\n\n    document.documentElement.style.overflow = \"hidden\";\n    document.body.style.overflow = \"hidden\";\n  }\n\n  function unlockPageScroll() {\n    document.documentElement.classList.remove(\"annular-popup-open\");\n    document.body.classList.remove(\"annular-popup-open\");\n\n    document.documentElement.style.overflow = previousHtmlOverflow;\n    document.body.style.overflow = previousBodyOverflow;\n  }\n\n  function openModal() {\n    previousFocus = document.activeElement;\n    lockPageScroll();\n\n    modal.classList.add(\"is-open\");\n    modal.setAttribute(\"aria-hidden\", \"false\");\n\n    requestAnimationFrame(() =>\n      nameInput.focus({ preventScroll: true })\n    );\n  }\n\n  function closeModal() {\n    modal.classList.remove(\"is-open\");\n    modal.setAttribute(\"aria-hidden\", \"true\");\n\n    if (!thankyouModal.classList.contains(\"is-open\")) {\n      unlockPageScroll();\n    }\n\n    if (previousFocus && typeof previousFocus.focus === \"function\") {\n      previousFocus.focus({ preventScroll: true });\n    }\n  }\n\n  \n  function openModalWithConfig(title, service) {\n    if (title) {\n      currentTitleContext = title;\n      const titleEl = $(\"annular-title\");\n      if (titleEl) titleEl.textContent = title;\n    }\n    if (service) {\n      currentServiceContext = service;\n    }\n    openModal();\n  }\n\n  \/\/ Attach global click listener for trigger buttons\n  const triggerList = [\".aits-btn-primary\",\".aits-btn-secondary\",\"a[href*=\\\"\/contact\/\\\"]\"];\n  document.addEventListener(\"click\", function(event) {\n    const selectorStr = triggerList.join(\", \");\n    if (!selectorStr) return;\n    const trigger = event.target.closest(selectorStr);\n    if (trigger) {\n      event.preventDefault();\n      \/\/ Extract clean text from clicked button (stripping arrow icons like \u2192, \u2197)\n      const rawText = (trigger.innerText || \"\").replace(\/[\\u2190-\\u21FF\\u27F0-\\u27FF\\u2900-\\u297F\u2192\u2197\u2190\u25ba]\/g, \"\").trim();\n      const customTitle = trigger.getAttribute(\"data-modal-title\") || \n                          (rawText.length >= 3 && rawText.length <= 60 ? rawText : \"Discuss Your QA Requirements\");\n      const customService = trigger.getAttribute(\"data-service\") || \"AI Test Case Studio\";\n      openModalWithConfig(customTitle, customService);\n    }\n  });\n\n  openButton.addEventListener(\"click\", openModal);\n  $(\"annular-close\").addEventListener(\"click\", closeModal);\n\n  modal.addEventListener(\"click\", event => {\n    if (event.target === modal) closeModal();\n  });\n\n  function showThankYou() {\n    modal.classList.remove(\"is-open\");\n    modal.setAttribute(\"aria-hidden\", \"true\");\n\n    thankyouModal.classList.add(\"is-open\");\n    thankyouModal.setAttribute(\"aria-hidden\", \"false\");\n\n    requestAnimationFrame(() =>\n      $(\"annular-thankyou-done\").focus({ preventScroll: true })\n    );\n  }\n\n  function closeThankYou() {\n    thankyouModal.classList.remove(\"is-open\");\n    thankyouModal.setAttribute(\"aria-hidden\", \"true\");\n\n    unlockPageScroll();\n    openButton.focus({ preventScroll: true });\n  }\n\n  $(\"annular-thankyou-close\").addEventListener(\"click\", closeThankYou);\n  $(\"annular-thankyou-done\").addEventListener(\"click\", closeThankYou);\n\n  thankyouModal.addEventListener(\"click\", event => {\n    if (event.target === thankyouModal) closeThankYou();\n  });\n\n  document.addEventListener(\"keydown\", event => {\n    if (event.key !== \"Escape\") return;\n\n    if (thankyouModal.classList.contains(\"is-open\")) {\n      closeThankYou();\n    } else if (modal.classList.contains(\"is-open\")) {\n      closeModal();\n    }\n  });\n\n  function clearResendTimer() {\n    if (resendTimer) {\n      clearInterval(resendTimer);\n      resendTimer = null;\n    }\n  }\n\n  function resetVerification(message = \"\", type = \"\") {\n    requestVersion++;\n\n    currentOTP = \"\";\n    verifiedEmail = \"\";\n    otpExpiresAt = 0;\n    otpAttempts = 0;\n\n    otpArea.hidden = true;\n    otpInput.value = \"\";\n\n    verifyButton.disabled = false;\n\n    clearResendTimer();\n\n    updateSendButton();\n    updateContinueButton();\n    updateSubmitButton();\n\n    setStatus(message, type);\n  }\n\n  \/* Email edits invalidate the previous verification *\/\n  emailInput.addEventListener(\"input\", () => {\n    if (currentOTP || verifiedEmail || !otpArea.hidden) {\n      resetVerification(\n        \"Email changed. Please request a new OTP.\",\n        \"error\"\n      );\n    } else {\n      updateSendButton();\n      updateContinueButton();\n      updateSubmitButton();\n    }\n  });\n\n  nameInput.addEventListener(\"input\", updateContinueButton);\n\n  \/* CRITICAL FIX: update Submit whenever these fields change *\/\n  mobileInput.addEventListener(\"input\", updateSubmitButton);\n  mobileInput.addEventListener(\"change\", updateSubmitButton);\n  helpInput.addEventListener(\"input\", updateSubmitButton);\n  helpInput.addEventListener(\"change\", updateSubmitButton);\n\n  function generateOTP() {\n    if (!window.crypto || !window.crypto.getRandomValues) {\n      throw new Error(\"Secure random number generation is unavailable.\");\n    }\n\n    const values = new Uint32Array(1);\n    window.crypto.getRandomValues(values);\n\n    return String(values[0] % 1000000).padStart(6, \"0\");\n  }\n\n  \/* SEND OTP *\/\n  sendButton.addEventListener(\"click\", async () => {\n    if (!emailJSReady()) {\n      setStatus(\"Email service is unavailable. Please refresh and try again.\", \"error\");\n      return;\n    }\n\n    if (!emailInput.checkValidity()) {\n      emailInput.reportValidity();\n      updateSendButton();\n      return;\n    }\n\n    if (sendingOTP || sendingEnquiry) return;\n\n    if (Date.now() < resendAvailableAt) {\n      setStatus(\n        \"Please wait \" +\n        Math.ceil((resendAvailableAt - Date.now()) \/ 1000) +\n        \" seconds before requesting another OTP.\",\n        \"error\"\n      );\n\n      updateSendButton();\n      return;\n    }\n\n    const email = getEmail();\n    const version = ++requestVersion;\n\n    sendingOTP = true;\n    updateSendButton();\n\n    currentOTP = \"\";\n    verifiedEmail = \"\";\n    otpExpiresAt = 0;\n    otpAttempts = 0;\n\n    otpArea.hidden = true;\n    otpInput.value = \"\";\n\n    updateContinueButton();\n    updateSubmitButton();\n\n    setStatus(\"Sending OTP...\");\n\n    try {\n      const otp = generateOTP();\n\n      await window.emailjs.send(\n        SERVICE_ID,\n        OTP_TEMPLATE_ID,\n        {\n          email: email,\n          passcode: otp,\n          time: new Date(Date.now() + 5 * 60 * 1000)\n            .toLocaleTimeString()\n        }\n      );\n\n      if (version !== requestVersion) return;\n\n      if (getEmail() !== email) {\n        setStatus(\"Email changed. Please request a new OTP.\", \"error\");\n        return;\n      }\n\n      currentOTP = otp;\n      otpExpiresAt = Date.now() + 5 * 60 * 1000;\n      resendAvailableAt = Date.now() + 60000;\n\n      otpArea.hidden = false;\n\n      otpInput.focus({ preventScroll: true });\n\n      setStatus(\"OTP sent. Please check your email.\", \"success\");\n\n      clearResendTimer();\n\n      \/*\n       * Also refresh validation periodically so an expired OTP\n       * cannot leave the Submit button enabled.\n       *\/\n      resendTimer = setInterval(() => {\n        updateSendButton();\n        updateContinueButton();\n        updateSubmitButton();\n\n        if (Date.now() >= resendAvailableAt) {\n          resendAvailableAt = 0;\n          updateSendButton();\n        }\n\n        if (Date.now() >= otpExpiresAt) {\n          clearResendTimer();\n\n          if (verifiedEmail) {\n            verifiedEmail = \"\";\n            updateContinueButton();\n            updateSubmitButton();\n\n            setStatus(\n              \"OTP expired. Please request a new OTP to continue.\",\n              \"error\"\n            );\n          } else {\n            updateSubmitButton();\n          }\n        }\n      }, 1000);\n\n    } catch (error) {\n      console.error(\"OTP EmailJS error:\", error);\n\n      setStatus(\n        \"Unable to send OTP. Check your EmailJS service and OTP template.\",\n        \"error\"\n      );\n\n    } finally {\n      sendingOTP = false;\n      updateSendButton();\n      updateContinueButton();\n      updateSubmitButton();\n    }\n  });\n\n  \/* VERIFY OTP *\/\n  verifyButton.addEventListener(\"click\", () => {\n    const email = getEmail();\n    const enteredOTP = otpInput.value.trim();\n\n    if (!currentOTP || Date.now() >= otpExpiresAt) {\n      resetVerification(\"OTP expired. Please request a new OTP.\", \"error\");\n      return;\n    }\n\n    if (otpAttempts >= 5) {\n      resetVerification(\"Too many attempts. Please request a new OTP.\", \"error\");\n      return;\n    }\n\n    otpAttempts++;\n\n    if (!\/^\\d{6}$\/.test(enteredOTP) || enteredOTP !== currentOTP) {\n      verifiedEmail = \"\";\n\n      updateContinueButton();\n      updateSubmitButton();\n\n      if (otpAttempts >= 5) {\n        resetVerification(\n          \"Too many attempts. Please request a new OTP.\",\n          \"error\"\n        );\n      } else {\n        setStatus(\"Incorrect OTP. Please try again.\", \"error\");\n      }\n\n      return;\n    }\n\n    verifiedEmail = email;\n    verifyButton.disabled = true;\n\n    updateContinueButton();\n    updateSubmitButton();\n\n    setStatus(\"Email verified successfully.\", \"success\");\n  });\n\n  \/* STEP NAVIGATION *\/\n  nextButton.addEventListener(\"click\", () => {\n    if (!nameInput.checkValidity()) {\n      nameInput.reportValidity();\n      return;\n    }\n\n    if (!verifiedEmail || verifiedEmail !== getEmail()) {\n      setStatus(\"Please verify your email before continuing.\", \"error\");\n      return;\n    }\n\n    if (Date.now() >= otpExpiresAt) {\n      resetVerification(\"OTP expired. Please request a new OTP.\", \"error\");\n      return;\n    }\n\n    $(\"annular-screen-1\").hidden = true;\n    $(\"annular-screen-2\").hidden = false;\n\n    $(\"annular-progress-2\").classList.add(\"active\");\n\n    setStatus(\"\");\n\n    updateSubmitButton();\n\n    mobileInput.focus({ preventScroll: true });\n  });\n\n  backButton.addEventListener(\"click\", () => {\n    $(\"annular-screen-2\").hidden = true;\n    $(\"annular-screen-1\").hidden = false;\n\n    $(\"annular-progress-2\").classList.remove(\"active\");\n\n    setStatus(\"\");\n\n    updateContinueButton();\n    updateSubmitButton();\n  });\n\n  \/* SUBMIT ENQUIRY *\/\n  form.addEventListener(\"submit\", async event => {\n    event.preventDefault();\n\n    if (sendingEnquiry) return;\n\n    \/*\n     * Revalidate at submission time instead of trusting\n     * the button's disabled state alone.\n     *\/\n    updateSubmitButton();\n\n    if (!form.checkValidity()) {\n      form.reportValidity();\n      return;\n    }\n\n    const name = nameInput.value.trim();\n    const email = getEmail();\n    const mobile = mobileInput.value.trim();\n    const message = helpInput.value.trim();\n\n    if (!name || !email || !mobile || !message) {\n      setStatus(\n        \"Name, email, mobile number, and message are required.\",\n        \"error\"\n      );\n      return;\n    }\n\n    if (\n      !verifiedEmail ||\n      verifiedEmail !== email ||\n      !currentOTP ||\n      Date.now() >= otpExpiresAt\n    ) {\n      resetVerification(\n        \"Please verify your email before submitting.\",\n        \"error\"\n      );\n\n      $(\"annular-screen-2\").hidden = true;\n      $(\"annular-screen-1\").hidden = false;\n      $(\"annular-progress-2\").classList.remove(\"active\");\n\n      return;\n    }\n\n    if (!mobileInput.checkValidity()) {\n      mobileInput.reportValidity();\n      return;\n    }\n\n    if (!emailJSReady()) {\n      setStatus(\"Email service is unavailable. Please try again.\", \"error\");\n      return;\n    }\n\n    sendingEnquiry = true;\n\n    updateSubmitButton();\n    updateSendButton();\n\n    setStatus(\"Submitting your enquiry...\");\n\n    try {\n      await window.emailjs.send(\n        SERVICE_ID,\n        ENQUIRY_TEMPLATE_ID,\n        {\n          \/*\n           * Annular domain: company fields are populated.\n           * PODS domain: company fields are blank.\n           *\/\n          website_name: isAnnular ? \"Annular Technologies\" : \"\",\n          company_name: isAnnular ? \"Annular Technologies\" : \"\",\n\n          user_name: name,\n          user_email: email,\n          user_mobile: mobile,\n          service_name: currentServiceContext,\n          service_title: currentTitleContext,\n          message: \"[Product: \" + currentServiceContext + \" | \" + currentTitleContext + \"]\\n\" + message\n        }\n      );\n\n      form.reset();\n\n      clearResendTimer();\n\n      currentOTP = \"\";\n      verifiedEmail = \"\";\n      otpExpiresAt = 0;\n      otpAttempts = 0;\n      resendAvailableAt = 0;\n\n      $(\"annular-screen-1\").hidden = false;\n      $(\"annular-screen-2\").hidden = true;\n\n      $(\"annular-progress-1\").classList.add(\"active\");\n      $(\"annular-progress-2\").classList.remove(\"active\");\n\n      otpArea.hidden = true;\n      verifyButton.disabled = false;\n\n      updateSendButton();\n      updateContinueButton();\n      updateSubmitButton();\n\n      setStatus(\"\");\n\n      showThankYou();\n\n    } catch (error) {\n      console.error(\"Consultation EmailJS error:\", error);\n\n      setStatus(\n        \"Unable to submit your enquiry. Check your EmailJS template settings and try again.\",\n        \"error\"\n      );\n\n    } finally {\n      sendingEnquiry = false;\n\n      updateSendButton();\n      updateContinueButton();\n      updateSubmitButton();\n    }\n  });\n\n  \/* INITIAL STATE *\/\n  updateSendButton();\n  updateContinueButton();\n  updateSubmitButton();\n\n})();\n<\/script>\n<\/div><\/div><\/div><\/div>\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":2,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"100-width.php","meta":{"_acf_changed":false,"om_disable_all_campaigns":false,"footnotes":""},"class_list":["post-1945","page","type-page","status-publish","hentry"],"acf":[],"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/web.annulartechnologies.com\/staging\/wp-json\/wp\/v2\/pages\/1945","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/web.annulartechnologies.com\/staging\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/web.annulartechnologies.com\/staging\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/web.annulartechnologies.com\/staging\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/web.annulartechnologies.com\/staging\/wp-json\/wp\/v2\/comments?post=1945"}],"version-history":[{"count":52,"href":"https:\/\/web.annulartechnologies.com\/staging\/wp-json\/wp\/v2\/pages\/1945\/revisions"}],"predecessor-version":[{"id":2633,"href":"https:\/\/web.annulartechnologies.com\/staging\/wp-json\/wp\/v2\/pages\/1945\/revisions\/2633"}],"wp:attachment":[{"href":"https:\/\/web.annulartechnologies.com\/staging\/wp-json\/wp\/v2\/media?parent=1945"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}