Spaces:
Running
Running
1-create modals for all buttons 2- faq must be collapsing 3- enhance copywriting 10x
Browse files- components/modal.js +151 -0
- index.html +134 -99
- script.js +513 -6
- style.css +42 -1
components/modal.js
ADDED
|
@@ -0,0 +1,151 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
class CustomModal extends HTMLElement {
|
| 2 |
+
connectedCallback() {
|
| 3 |
+
this.attachShadow({ mode: 'open' });
|
| 4 |
+
this.shadowRoot.innerHTML = `
|
| 5 |
+
<style>
|
| 6 |
+
:host {
|
| 7 |
+
display: none;
|
| 8 |
+
position: fixed;
|
| 9 |
+
top: 0;
|
| 10 |
+
left: 0;
|
| 11 |
+
width: 100%;
|
| 12 |
+
height: 100%;
|
| 13 |
+
background-color: rgba(0, 0, 0, 0.5);
|
| 14 |
+
z-index: 9999;
|
| 15 |
+
align-items: center;
|
| 16 |
+
justify-content: center;
|
| 17 |
+
}
|
| 18 |
+
:host([open]) {
|
| 19 |
+
display: flex;
|
| 20 |
+
}
|
| 21 |
+
.modal-content {
|
| 22 |
+
background-color: white;
|
| 23 |
+
border-radius: 1rem;
|
| 24 |
+
max-width: 500px;
|
| 25 |
+
width: 90%;
|
| 26 |
+
max-height: 90vh;
|
| 27 |
+
overflow-y: auto;
|
| 28 |
+
box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25);
|
| 29 |
+
animation: modalSlideIn 0.3s ease-out;
|
| 30 |
+
}
|
| 31 |
+
@keyframes modalSlideIn {
|
| 32 |
+
from {
|
| 33 |
+
opacity: 0;
|
| 34 |
+
transform: translateY(-20px) scale(0.95);
|
| 35 |
+
}
|
| 36 |
+
to {
|
| 37 |
+
opacity: 1;
|
| 38 |
+
transform: translateY(0) scale(1);
|
| 39 |
+
}
|
| 40 |
+
}
|
| 41 |
+
.modal-header {
|
| 42 |
+
padding: 1.5rem;
|
| 43 |
+
border-bottom: 1px solid #e2e8f0;
|
| 44 |
+
display: flex;
|
| 45 |
+
justify-content: space-between;
|
| 46 |
+
align-items: center;
|
| 47 |
+
}
|
| 48 |
+
.modal-header h3 {
|
| 49 |
+
margin: 0;
|
| 50 |
+
font-size: 1.25rem;
|
| 51 |
+
font-weight: 700;
|
| 52 |
+
color: #0f172a;
|
| 53 |
+
}
|
| 54 |
+
.close-btn {
|
| 55 |
+
background: none;
|
| 56 |
+
border: none;
|
| 57 |
+
cursor: pointer;
|
| 58 |
+
padding: 0.5rem;
|
| 59 |
+
border-radius: 0.5rem;
|
| 60 |
+
transition: background-color 0.2s;
|
| 61 |
+
}
|
| 62 |
+
.close-btn:hover {
|
| 63 |
+
background-color: #f1f5f9;
|
| 64 |
+
}
|
| 65 |
+
.modal-body {
|
| 66 |
+
padding: 1.5rem;
|
| 67 |
+
color: #475569;
|
| 68 |
+
line-height: 1.6;
|
| 69 |
+
}
|
| 70 |
+
.modal-footer {
|
| 71 |
+
padding: 1rem 1.5rem;
|
| 72 |
+
border-top: 1px solid #e2e8f0;
|
| 73 |
+
display: flex;
|
| 74 |
+
justify-content: flex-end;
|
| 75 |
+
gap: 0.75rem;
|
| 76 |
+
}
|
| 77 |
+
.btn {
|
| 78 |
+
padding: 0.625rem 1.25rem;
|
| 79 |
+
border-radius: 0.5rem;
|
| 80 |
+
font-size: 0.875rem;
|
| 81 |
+
font-weight: 600;
|
| 82 |
+
cursor: pointer;
|
| 83 |
+
transition: all 0.2s;
|
| 84 |
+
border: none;
|
| 85 |
+
}
|
| 86 |
+
.btn-secondary {
|
| 87 |
+
background-color: white;
|
| 88 |
+
color: #475569;
|
| 89 |
+
border: 1px solid #cbd5e1;
|
| 90 |
+
}
|
| 91 |
+
.btn-secondary:hover {
|
| 92 |
+
background-color: #f8fafc;
|
| 93 |
+
}
|
| 94 |
+
.btn-primary {
|
| 95 |
+
background-color: #0d9488;
|
| 96 |
+
color: white;
|
| 97 |
+
}
|
| 98 |
+
.btn-primary:hover {
|
| 99 |
+
background-color: #0f766e;
|
| 100 |
+
}
|
| 101 |
+
</style>
|
| 102 |
+
<div class="modal-content">
|
| 103 |
+
<div class="modal-header">
|
| 104 |
+
<h3 id="modal-title">Modal Title</h3>
|
| 105 |
+
<button class="close-btn" id="close-modal">
|
| 106 |
+
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><line x1="18" y1="6" x2="6" y2="18"></line><line x1="6" y1="6" x2="18" y2="18"></line></svg>
|
| 107 |
+
</button>
|
| 108 |
+
</div>
|
| 109 |
+
<div class="modal-body" id="modal-body">
|
| 110 |
+
Modal content goes here.
|
| 111 |
+
</div>
|
| 112 |
+
<div class="modal-footer">
|
| 113 |
+
<button class="btn btn-secondary" id="modal-cancel">Cancel</button>
|
| 114 |
+
<button class="btn btn-primary" id="modal-confirm">Confirm</button>
|
| 115 |
+
</div>
|
| 116 |
+
</div>
|
| 117 |
+
`;
|
| 118 |
+
|
| 119 |
+
// Event listeners
|
| 120 |
+
this.shadowRoot.getElementById('close-modal').addEventListener('click', () => this.close());
|
| 121 |
+
this.shadowRoot.getElementById('modal-cancel').addEventListener('click', () => this.close());
|
| 122 |
+
this.shadowRoot.querySelector('.modal-content').addEventListener('click', (e) => e.stopPropagation());
|
| 123 |
+
this.addEventListener('click', () => this.close());
|
| 124 |
+
}
|
| 125 |
+
|
| 126 |
+
open(title, content, confirmText = 'Confirm', onConfirm = null) {
|
| 127 |
+
this.shadowRoot.getElementById('modal-title').textContent = title;
|
| 128 |
+
this.shadowRoot.getElementById('modal-body').innerHTML = content;
|
| 129 |
+
const confirmBtn = this.shadowRoot.getElementById('modal-confirm');
|
| 130 |
+
confirmBtn.textContent = confirmText;
|
| 131 |
+
|
| 132 |
+
if (onConfirm) {
|
| 133 |
+
confirmBtn.style.display = 'block';
|
| 134 |
+
confirmBtn.onclick = () => {
|
| 135 |
+
onConfirm();
|
| 136 |
+
this.close();
|
| 137 |
+
};
|
| 138 |
+
} else {
|
| 139 |
+
confirmBtn.style.display = 'none';
|
| 140 |
+
}
|
| 141 |
+
|
| 142 |
+
this.setAttribute('open', '');
|
| 143 |
+
document.body.style.overflow = 'hidden';
|
| 144 |
+
}
|
| 145 |
+
|
| 146 |
+
close() {
|
| 147 |
+
this.removeAttribute('open');
|
| 148 |
+
document.body.style.overflow = '';
|
| 149 |
+
}
|
| 150 |
+
}
|
| 151 |
+
customElements.define('custom-modal', CustomModal);
|
index.html
CHANGED
|
@@ -45,28 +45,27 @@
|
|
| 45 |
HIPAA Compliant & SOC2 Type II
|
| 46 |
</div>
|
| 47 |
<h1 class="text-5xl md:text-7xl font-extrabold text-slate-900 tracking-tight mb-6">
|
| 48 |
-
|
| 49 |
-
<span class="text-primary-600">
|
| 50 |
</h1>
|
| 51 |
<p class="mt-4 max-w-2xl mx-auto text-xl text-slate-600 mb-10">
|
| 52 |
-
|
| 53 |
</p>
|
| 54 |
|
| 55 |
<div class="flex flex-col sm:flex-row justify-center gap-4 mb-12">
|
| 56 |
-
<
|
| 57 |
Get API Key
|
| 58 |
-
</
|
| 59 |
-
<
|
| 60 |
Book a Demo
|
| 61 |
-
</
|
| 62 |
</div>
|
| 63 |
-
|
| 64 |
<div class="flex flex-wrap justify-center gap-6 text-sm font-medium text-slate-500">
|
| 65 |
-
<
|
| 66 |
-
<
|
| 67 |
-
<
|
| 68 |
</div>
|
| 69 |
-
|
| 70 |
|
| 71 |
<!-- Visual Mockup 1: Pipeline -->
|
| 72 |
<div class="mt-16 border-t border-slate-200 bg-white py-12">
|
|
@@ -132,13 +131,12 @@
|
|
| 132 |
<section class="py-24 bg-white">
|
| 133 |
<div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
|
| 134 |
<div class="max-w-3xl mb-16">
|
| 135 |
-
<h2 class="text-3xl font-bold text-slate-900 mb-4">
|
| 136 |
<p class="text-lg text-slate-600 mb-6">
|
| 137 |
-
|
| 138 |
</p>
|
| 139 |
</div>
|
| 140 |
-
|
| 141 |
-
<!-- Visual Mockup 2: Before/After -->
|
| 142 |
<div class="grid md:grid-cols-2 gap-8">
|
| 143 |
<!-- Before -->
|
| 144 |
<div class="relative bg-slate-50 border border-slate-200 rounded-xl p-8 overflow-hidden">
|
|
@@ -199,60 +197,60 @@
|
|
| 199 |
<div class="w-12 h-12 bg-primary-50 rounded-lg flex items-center justify-center text-primary-600 mb-6 group-hover:bg-primary-600 group-hover:text-white transition">
|
| 200 |
<i data-feather="file-text"></i>
|
| 201 |
</div>
|
| 202 |
-
<h3 class="text-xl font-bold text-slate-900 mb-2">Preprocessing</h3>
|
| 203 |
-
<p class="text-slate-600 mb-4 text-sm">
|
| 204 |
-
<
|
| 205 |
-
|
| 206 |
|
| 207 |
<!-- Card 2 -->
|
| 208 |
<div class="bg-white p-8 rounded-xl shadow-sm border border-slate-100 hover:shadow-md transition group cursor-default">
|
| 209 |
<div class="w-12 h-12 bg-red-50 rounded-lg flex items-center justify-center text-red-600 mb-6 group-hover:bg-red-600 group-hover:text-white transition">
|
| 210 |
<i data-feather="shield"></i>
|
| 211 |
</div>
|
| 212 |
-
<h3 class="text-xl font-bold text-slate-900 mb-2">PHI
|
| 213 |
-
<p class="text-slate-600 mb-4 text-sm">
|
| 214 |
-
<
|
| 215 |
-
|
| 216 |
|
| 217 |
<!-- Card 3 -->
|
| 218 |
<div class="bg-white p-8 rounded-xl shadow-sm border border-slate-100 hover:shadow-md transition group cursor-default">
|
| 219 |
<div class="w-12 h-12 bg-blue-50 rounded-lg flex items-center justify-center text-blue-600 mb-6 group-hover:bg-blue-600 group-hover:text-white transition">
|
| 220 |
<i data-feather="cpu"></i>
|
| 221 |
</div>
|
| 222 |
-
<h3 class="text-xl font-bold text-slate-900 mb-2">Entity Extraction</h3>
|
| 223 |
-
<p class="text-slate-600 mb-4 text-sm">Extract
|
| 224 |
-
<
|
| 225 |
-
|
| 226 |
|
| 227 |
<!-- Card 4 -->
|
| 228 |
<div class="bg-white p-8 rounded-xl shadow-sm border border-slate-100 hover:shadow-md transition group cursor-default">
|
| 229 |
<div class="w-12 h-12 bg-purple-50 rounded-lg flex items-center justify-center text-purple-600 mb-6 group-hover:bg-purple-600 group-hover:text-white transition">
|
| 230 |
<i data-feather="hash"></i>
|
| 231 |
</div>
|
| 232 |
-
<h3 class="text-xl font-bold text-slate-900 mb-2">Normalization</h3>
|
| 233 |
-
<p class="text-slate-600 mb-4 text-sm">
|
| 234 |
-
<
|
| 235 |
-
|
| 236 |
|
| 237 |
<!-- Card 5 -->
|
| 238 |
<div class="bg-white p-8 rounded-xl shadow-sm border border-slate-100 hover:shadow-md transition group cursor-default">
|
| 239 |
<div class="w-12 h-12 bg-green-50 rounded-lg flex items-center justify-center text-green-600 mb-6 group-hover:bg-green-600 group-hover:text-white transition">
|
| 240 |
<i data-feather="check-circle"></i>
|
| 241 |
</div>
|
| 242 |
-
<h3 class="text-xl font-bold text-slate-900 mb-2">Evidence Packs</h3>
|
| 243 |
-
<p class="text-slate-600 mb-4 text-sm">Generate
|
| 244 |
-
<
|
| 245 |
-
|
| 246 |
|
| 247 |
<!-- Card 6 -->
|
| 248 |
<div class="bg-white p-8 rounded-xl shadow-sm border border-slate-100 hover:shadow-md transition group cursor-default">
|
| 249 |
<div class="w-12 h-12 bg-indigo-50 rounded-lg flex items-center justify-center text-indigo-600 mb-6 group-hover:bg-indigo-600 group-hover:text-white transition">
|
| 250 |
<i data-feather="lock"></i>
|
| 251 |
</div>
|
| 252 |
-
<h3 class="text-xl font-bold text-slate-900 mb-2">
|
| 253 |
-
<p class="text-slate-600 mb-4 text-sm">
|
| 254 |
-
<
|
| 255 |
-
|
| 256 |
</div>
|
| 257 |
</div>
|
| 258 |
</section>
|
|
@@ -262,17 +260,17 @@
|
|
| 262 |
<div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
|
| 263 |
<div class="grid lg:grid-cols-2 gap-16 items-center">
|
| 264 |
<div>
|
| 265 |
-
<h2 class="text-3xl font-bold text-slate-900 mb-6">
|
| 266 |
<p class="text-lg text-slate-600 mb-8">
|
| 267 |
-
|
| 268 |
</p>
|
| 269 |
<ul class="space-y-3 mb-8">
|
| 270 |
-
<li class="flex items-center text-slate-700"><i data-feather="check" class="w-5 h-5 text-green-500 mr-2"></i> Preprocess Pack (OCR, Sectioning)</li>
|
| 271 |
-
<li class="flex items-center text-slate-700"><i data-feather="check" class="w-5 h-5 text-green-500 mr-2"></i> De-ID Pack (
|
| 272 |
-
<li class="flex items-center text-slate-700"><i data-feather="check" class="w-5 h-5 text-green-500 mr-2"></i> Clinical Context Pack (Negation, Temporality)</li>
|
| 273 |
</ul>
|
| 274 |
-
<
|
| 275 |
-
|
| 276 |
|
| 277 |
<!-- Mockup 4: Pack Picker -->
|
| 278 |
<div class="bg-slate-50 border border-slate-200 rounded-xl p-6 shadow-sm">
|
|
@@ -317,12 +315,11 @@
|
|
| 317 |
<!-- Deployment (Mockup 5) -->
|
| 318 |
<section class="py-24 bg-slate-50">
|
| 319 |
<div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 text-center">
|
| 320 |
-
<h2 class="text-3xl font-bold text-slate-900 mb-6">
|
| 321 |
<p class="text-lg text-slate-600 max-w-2xl mx-auto mb-16">
|
| 322 |
-
|
| 323 |
</p>
|
| 324 |
-
|
| 325 |
-
<!-- Visual Mockup 5: Architecture -->
|
| 326 |
<div class="relative max-w-4xl mx-auto">
|
| 327 |
<!-- Lines -->
|
| 328 |
<div class="hidden md:block absolute top-1/2 left-0 w-full h-0.5 bg-slate-300 -z-10 transform -translate-y-1/2"></div>
|
|
@@ -359,12 +356,11 @@
|
|
| 359 |
</div>
|
| 360 |
</div>
|
| 361 |
</div>
|
| 362 |
-
|
| 363 |
<div class="mt-12 flex justify-center gap-4">
|
| 364 |
-
<
|
| 365 |
-
<
|
| 366 |
</div>
|
| 367 |
-
|
| 368 |
</section>
|
| 369 |
|
| 370 |
<!-- Developers (Mockup 6) -->
|
|
@@ -373,15 +369,15 @@
|
|
| 373 |
<div class="grid lg:grid-cols-2 gap-12 items-center">
|
| 374 |
<div>
|
| 375 |
<div class="text-primary-400 font-bold tracking-wider uppercase text-sm mb-2">Developer First</div>
|
| 376 |
-
<h2 class="text-4xl font-bold mb-6">
|
| 377 |
<p class="text-slate-400 text-lg mb-8">
|
| 378 |
-
Integrate in minutes with our
|
| 379 |
</p>
|
| 380 |
<div class="flex gap-4 mb-8">
|
| 381 |
-
<button class="px-4 py-2 bg-primary-600 rounded text-sm font-bold hover:bg-primary-500">Read Docs</button>
|
| 382 |
-
<button class="px-4 py-2 bg-slate-800 border border-slate-700 rounded text-sm font-bold hover:bg-slate-700">npm install @clinicalapi/sdk</button>
|
| 383 |
</div>
|
| 384 |
-
|
| 385 |
<span class="flex items-center"><i data-feather="check" class="w-4 h-4 mr-2 text-green-400"></i> Webhooks</span>
|
| 386 |
<span class="flex items-center"><i data-feather="check" class="w-4 h-4 mr-2 text-green-400"></i> Versioning</span>
|
| 387 |
<span class="flex items-center"><i data-feather="check" class="w-4 h-4 mr-2 text-green-400"></i> Metering</span>
|
|
@@ -425,12 +421,12 @@ curl -X POST https://api.clinicalapi.com/v1/extract \
|
|
| 425 |
<div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
|
| 426 |
<div class="grid lg:grid-cols-2 gap-16">
|
| 427 |
<div>
|
| 428 |
-
<h2 class="text-3xl font-bold text-slate-900 mb-6">
|
| 429 |
<p class="text-lg text-slate-600 mb-8">
|
| 430 |
-
We
|
| 431 |
</p>
|
| 432 |
-
<
|
| 433 |
-
|
| 434 |
|
| 435 |
<!-- Checklist Mockup -->
|
| 436 |
<div class="bg-slate-50 border border-slate-200 rounded-xl p-8">
|
|
@@ -485,10 +481,9 @@ curl -X POST https://api.clinicalapi.com/v1/extract \
|
|
| 485 |
<section class="py-24 bg-slate-50">
|
| 486 |
<div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
|
| 487 |
<div class="text-center mb-12">
|
| 488 |
-
<h2 class="text-3xl font-bold text-slate-900">
|
| 489 |
</div>
|
| 490 |
-
|
| 491 |
-
<div class="bg-white rounded-xl shadow-sm border border-slate-200 overflow-hidden">
|
| 492 |
<!-- Tabs -->
|
| 493 |
<div class="flex border-b border-slate-200 overflow-x-auto" id="solution-tabs">
|
| 494 |
<button class="solution-tab px-6 py-4 text-sm font-bold text-primary-600 border-b-2 border-primary-600 focus:outline-none whitespace-nowrap" data-target="sol-1">Clinical Note Structuring</button>
|
|
@@ -561,9 +556,9 @@ curl -X POST https://api.clinicalapi.com/v1/extract \
|
|
| 561 |
<section class="py-24 bg-white">
|
| 562 |
<div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
|
| 563 |
<div class="text-center mb-16">
|
| 564 |
-
|
| 565 |
-
|
| 566 |
-
|
| 567 |
|
| 568 |
<div class="grid md:grid-cols-3 gap-8 max-w-5xl mx-auto">
|
| 569 |
<!-- Starter -->
|
|
@@ -575,8 +570,8 @@ curl -X POST https://api.clinicalapi.com/v1/extract \
|
|
| 575 |
<li class="flex"><i data-feather="check" class="w-4 h-4 text-green-500 mr-2"></i> 3 Packs enabled</li>
|
| 576 |
<li class="flex"><i data-feather="check" class="w-4 h-4 text-green-500 mr-2"></i> Community Support</li>
|
| 577 |
</ul>
|
| 578 |
-
<
|
| 579 |
-
|
| 580 |
|
| 581 |
<!-- Growth -->
|
| 582 |
<div class="border-2 border-primary-500 rounded-xl p-8 flex flex-col relative shadow-lg transform md:-translate-y-4">
|
|
@@ -589,8 +584,8 @@ curl -X POST https://api.clinicalapi.com/v1/extract \
|
|
| 589 |
<li class="flex"><i data-feather="check" class="w-4 h-4 text-primary-600 mr-2"></i> Evidence Packs included</li>
|
| 590 |
<li class="flex"><i data-feather="check" class="w-4 h-4 text-primary-600 mr-2"></i> Email Support</li>
|
| 591 |
</ul>
|
| 592 |
-
<
|
| 593 |
-
|
| 594 |
|
| 595 |
<!-- Enterprise -->
|
| 596 |
<div class="border border-slate-200 rounded-xl p-8 flex flex-col">
|
|
@@ -602,8 +597,8 @@ curl -X POST https://api.clinicalapi.com/v1/extract \
|
|
| 602 |
<li class="flex"><i data-feather="check" class="w-4 h-4 text-green-500 mr-2"></i> SSO & SLA</li>
|
| 603 |
<li class="flex"><i data-feather="check" class="w-4 h-4 text-green-500 mr-2"></i> Account Manager</li>
|
| 604 |
</ul>
|
| 605 |
-
<
|
| 606 |
-
|
| 607 |
</div>
|
| 608 |
</div>
|
| 609 |
</section>
|
|
@@ -611,50 +606,90 @@ curl -X POST https://api.clinicalapi.com/v1/extract \
|
|
| 611 |
<!-- FAQ -->
|
| 612 |
<section class="py-24 bg-slate-50">
|
| 613 |
<div class="max-w-3xl mx-auto px-4 sm:px-6 lg:px-8">
|
| 614 |
-
<h2 class="text-3xl font-bold text-slate-900 text-center mb-12">
|
| 615 |
-
<div class="space-y-
|
| 616 |
-
<div class="bg-white
|
| 617 |
-
<
|
| 618 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 619 |
</div>
|
| 620 |
-
<div class="bg-white
|
| 621 |
-
<
|
| 622 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 623 |
</div>
|
| 624 |
-
<div class="bg-white
|
| 625 |
-
<
|
| 626 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 627 |
</div>
|
| 628 |
-
<div class="bg-white
|
| 629 |
-
<
|
| 630 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 631 |
</div>
|
| 632 |
</div>
|
| 633 |
-
|
| 634 |
</section>
|
| 635 |
|
| 636 |
<!-- Final CTA -->
|
| 637 |
<section class="py-24 bg-white border-t border-slate-200">
|
| 638 |
<div class="max-w-4xl mx-auto px-4 sm:px-6 lg:px-8 text-center">
|
| 639 |
-
<h2 class="text-4xl font-bold text-slate-900 mb-6">
|
| 640 |
<div class="flex flex-col sm:flex-row justify-center gap-4">
|
| 641 |
-
<
|
| 642 |
-
<
|
| 643 |
</div>
|
| 644 |
-
<
|
| 645 |
-
|
| 646 |
</section>
|
| 647 |
-
|
| 648 |
<custom-footer></custom-footer>
|
| 649 |
|
|
|
|
|
|
|
|
|
|
| 650 |
<!-- Component Scripts -->
|
| 651 |
<script src="components/header.js"></script>
|
| 652 |
<script src="components/footer.js"></script>
|
|
|
|
| 653 |
|
| 654 |
<!-- Main Script -->
|
| 655 |
<script src="script.js"></script>
|
| 656 |
-
|
| 657 |
-
<script>feather.replace();</script>
|
| 658 |
<script src="https://huggingface.co/deepsite/deepsite-badge.js"></script>
|
| 659 |
</body>
|
| 660 |
</html>
|
|
|
|
| 45 |
HIPAA Compliant & SOC2 Type II
|
| 46 |
</div>
|
| 47 |
<h1 class="text-5xl md:text-7xl font-extrabold text-slate-900 tracking-tight mb-6">
|
| 48 |
+
Transform chaotic clinical data into <br class="hidden md:block" />
|
| 49 |
+
<span class="text-primary-600">compliance-ready intelligence</span>.
|
| 50 |
</h1>
|
| 51 |
<p class="mt-4 max-w-2xl mx-auto text-xl text-slate-600 mb-10">
|
| 52 |
+
The enterprise-grade clinical NLP platform that de-identifies, extracts, and structures medical documents with unprecedented accuracy and regulatory compliance—deployed in minutes, not months.
|
| 53 |
</p>
|
| 54 |
|
| 55 |
<div class="flex flex-col sm:flex-row justify-center gap-4 mb-12">
|
| 56 |
+
<button class="modal-trigger px-8 py-4 bg-primary-600 text-white font-bold rounded-lg hover:bg-primary-700 transition shadow-lg shadow-primary-500/30 flex justify-center items-center" data-modal="get-api-key">
|
| 57 |
Get API Key
|
| 58 |
+
</button>
|
| 59 |
+
<button class="modal-trigger px-8 py-4 bg-white text-slate-700 font-bold rounded-lg border border-slate-300 hover:bg-slate-50 transition flex justify-center items-center" data-modal="book-demo">
|
| 60 |
Book a Demo
|
| 61 |
+
</button>
|
| 62 |
</div>
|
|
|
|
| 63 |
<div class="flex flex-wrap justify-center gap-6 text-sm font-medium text-slate-500">
|
| 64 |
+
<button class="modal-trigger hover:text-primary-600 flex items-center" data-modal="view-docs">View Docs <i data-feather="arrow-right" class="ml-1 w-4 h-4"></i></button>
|
| 65 |
+
<button class="modal-trigger hover:text-primary-600 flex items-center" data-modal="byoc-overview">BYOC Overview <i data-feather="arrow-right" class="ml-1 w-4 h-4"></i></button>
|
| 66 |
+
<button class="modal-trigger hover:text-primary-600 flex items-center" data-modal="security-overview">Security Overview <i data-feather="arrow-right" class="ml-1 w-4 h-4"></i></button>
|
| 67 |
</div>
|
| 68 |
+
</div>
|
| 69 |
|
| 70 |
<!-- Visual Mockup 1: Pipeline -->
|
| 71 |
<div class="mt-16 border-t border-slate-200 bg-white py-12">
|
|
|
|
| 131 |
<section class="py-24 bg-white">
|
| 132 |
<div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
|
| 133 |
<div class="max-w-3xl mb-16">
|
| 134 |
+
<h2 class="text-3xl font-bold text-slate-900 mb-4">Stop wrestling with unstructured clinical text. <br>Start shipping compliant features.</h2>
|
| 135 |
<p class="text-lg text-slate-600 mb-6">
|
| 136 |
+
Healthcare teams waste months building fragile NLP pipelines that struggle with PHI compliance. ClinicalAPI delivers a production-ready, clinically-validated infrastructure that integrates with your existing stack in hours—accelerating your roadmap while staying fully compliant.
|
| 137 |
</p>
|
| 138 |
</div>
|
| 139 |
+
<!-- Visual Mockup 2: Before/After -->
|
|
|
|
| 140 |
<div class="grid md:grid-cols-2 gap-8">
|
| 141 |
<!-- Before -->
|
| 142 |
<div class="relative bg-slate-50 border border-slate-200 rounded-xl p-8 overflow-hidden">
|
|
|
|
| 197 |
<div class="w-12 h-12 bg-primary-50 rounded-lg flex items-center justify-center text-primary-600 mb-6 group-hover:bg-primary-600 group-hover:text-white transition">
|
| 198 |
<i data-feather="file-text"></i>
|
| 199 |
</div>
|
| 200 |
+
<h3 class="text-xl font-bold text-slate-900 mb-2">Intelligent Preprocessing</h3>
|
| 201 |
+
<p class="text-slate-600 mb-4 text-sm">Advanced document parsing, OCR enhancement, and semantic sectioning that transforms messy clinical notes into clean, machine-ready data structures.</p>
|
| 202 |
+
<button class="modal-trigger text-xs text-primary-600 font-semibold opacity-0 group-hover:opacity-100 transition" data-modal="preprocessing">View endpoint →</button>
|
| 203 |
+
</div>
|
| 204 |
|
| 205 |
<!-- Card 2 -->
|
| 206 |
<div class="bg-white p-8 rounded-xl shadow-sm border border-slate-100 hover:shadow-md transition group cursor-default">
|
| 207 |
<div class="w-12 h-12 bg-red-50 rounded-lg flex items-center justify-center text-red-600 mb-6 group-hover:bg-red-600 group-hover:text-white transition">
|
| 208 |
<i data-feather="shield"></i>
|
| 209 |
</div>
|
| 210 |
+
<h3 class="text-xl font-bold text-slate-900 mb-2">Enterprise PHI Protection</h3>
|
| 211 |
+
<p class="text-slate-600 mb-4 text-sm">Military-grade de-identification with 99.8% PHI recall. Customizable policy profiles support HIPAA, GDPR, and 42 CFR Part 2 compliance out of the box.</p>
|
| 212 |
+
<button class="modal-trigger text-xs text-primary-600 font-semibold opacity-0 group-hover:opacity-100 transition" data-modal="phi-protection">View endpoint →</button>
|
| 213 |
+
</div>
|
| 214 |
|
| 215 |
<!-- Card 3 -->
|
| 216 |
<div class="bg-white p-8 rounded-xl shadow-sm border border-slate-100 hover:shadow-md transition group cursor-default">
|
| 217 |
<div class="w-12 h-12 bg-blue-50 rounded-lg flex items-center justify-center text-blue-600 mb-6 group-hover:bg-blue-600 group-hover:text-white transition">
|
| 218 |
<i data-feather="cpu"></i>
|
| 219 |
</div>
|
| 220 |
+
<h3 class="text-xl font-bold text-slate-900 mb-2">Clinical Entity Extraction</h3>
|
| 221 |
+
<p class="text-slate-600 mb-4 text-sm">Extract medications, diagnoses, procedures, labs, and social determinants with clinical-grade accuracy. Includes negation detection, temporality, and assertion modeling.</p>
|
| 222 |
+
<button class="modal-trigger text-xs text-primary-600 font-semibold opacity-0 group-hover:opacity-100 transition" data-modal="entity-extraction">View endpoint →</button>
|
| 223 |
+
</div>
|
| 224 |
|
| 225 |
<!-- Card 4 -->
|
| 226 |
<div class="bg-white p-8 rounded-xl shadow-sm border border-slate-100 hover:shadow-md transition group cursor-default">
|
| 227 |
<div class="w-12 h-12 bg-purple-50 rounded-lg flex items-center justify-center text-purple-600 mb-6 group-hover:bg-purple-600 group-hover:text-white transition">
|
| 228 |
<i data-feather="hash"></i>
|
| 229 |
</div>
|
| 230 |
+
<h3 class="text-xl font-bold text-slate-900 mb-2">Clinical Code Normalization</h3>
|
| 231 |
+
<p class="text-slate-600 mb-4 text-sm">Map extracted entities to standard terminologies including SNOMED CT, ICD-10-CM, RxNorm, LOINC, and CPT with versioned mappings and provenance tracking.</p>
|
| 232 |
+
<button class="modal-trigger text-xs text-primary-600 font-semibold opacity-0 group-hover:opacity-100 transition" data-modal="normalization">View endpoint →</button>
|
| 233 |
+
</div>
|
| 234 |
|
| 235 |
<!-- Card 5 -->
|
| 236 |
<div class="bg-white p-8 rounded-xl shadow-sm border border-slate-100 hover:shadow-md transition group cursor-default">
|
| 237 |
<div class="w-12 h-12 bg-green-50 rounded-lg flex items-center justify-center text-green-600 mb-6 group-hover:bg-green-600 group-hover:text-white transition">
|
| 238 |
<i data-feather="check-circle"></i>
|
| 239 |
</div>
|
| 240 |
+
<h3 class="text-xl font-bold text-slate-900 mb-2">Audit-Ready Evidence Packs</h3>
|
| 241 |
+
<p class="text-slate-600 mb-4 text-sm">Generate cryptographically-verifiable audit trails with complete provenance. Perfect for regulatory submissions, internal audits, and AI model governance.</p>
|
| 242 |
+
<button class="modal-trigger text-xs text-primary-600 font-semibold opacity-0 group-hover:opacity-100 transition" data-modal="evidence-packs">View endpoint →</button>
|
| 243 |
+
</div>
|
| 244 |
|
| 245 |
<!-- Card 6 -->
|
| 246 |
<div class="bg-white p-8 rounded-xl shadow-sm border border-slate-100 hover:shadow-md transition group cursor-default">
|
| 247 |
<div class="w-12 h-12 bg-indigo-50 rounded-lg flex items-center justify-center text-indigo-600 mb-6 group-hover:bg-indigo-600 group-hover:text-white transition">
|
| 248 |
<i data-feather="lock"></i>
|
| 249 |
</div>
|
| 250 |
+
<h3 class="text-xl font-bold text-slate-900 mb-2">Flexible Deployment</h3>
|
| 251 |
+
<p class="text-slate-600 mb-4 text-sm">Lightning-fast SaaS deployment for rapid prototyping, or BYOC runtimes that deploy directly into your AWS VPC for zero-data-egress security architectures.</p>
|
| 252 |
+
<button class="modal-trigger text-xs text-primary-600 font-semibold opacity-0 group-hover:opacity-100 transition" data-modal="deployment">View endpoint →</button>
|
| 253 |
+
</div>
|
| 254 |
</div>
|
| 255 |
</div>
|
| 256 |
</section>
|
|
|
|
| 260 |
<div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
|
| 261 |
<div class="grid lg:grid-cols-2 gap-16 items-center">
|
| 262 |
<div>
|
| 263 |
+
<h2 class="text-3xl font-bold text-slate-900 mb-6">Build powerful pipelines with modular processing packs. <br><span class="text-primary-600">Optimize costs by paying only for what you use.</span></h2>
|
| 264 |
<p class="text-lg text-slate-600 mb-8">
|
| 265 |
+
Mix and match specialized processing packs to create custom pipelines tailored to your specific use case. From simple text extraction to complex clinical reasoning—compose exactly what you need.
|
| 266 |
</p>
|
| 267 |
<ul class="space-y-3 mb-8">
|
| 268 |
+
<li class="flex items-center text-slate-700"><i data-feather="check" class="w-5 h-5 text-green-500 mr-2"></i> Preprocess Pack (OCR, Sectioning, Cleaning)</li>
|
| 269 |
+
<li class="flex items-center text-slate-700"><i data-feather="check" class="w-5 h-5 text-green-500 mr-2"></i> De-ID Pack (18 PHI categories, Custom Policies)</li>
|
| 270 |
+
<li class="flex items-center text-slate-700"><i data-feather="check" class="w-5 h-5 text-green-500 mr-2"></i> Clinical Context Pack (Negation, Temporality, Certainty)</li>
|
| 271 |
</ul>
|
| 272 |
+
<button class="modal-trigger text-primary-600 font-bold hover:text-primary-700 flex items-center" data-modal="explore-packs">Explore Packs in Docs <i data-feather="arrow-right" class="ml-2 w-4 h-4"></i></button>
|
| 273 |
+
</div>
|
| 274 |
|
| 275 |
<!-- Mockup 4: Pack Picker -->
|
| 276 |
<div class="bg-slate-50 border border-slate-200 rounded-xl p-6 shadow-sm">
|
|
|
|
| 315 |
<!-- Deployment (Mockup 5) -->
|
| 316 |
<section class="py-24 bg-slate-50">
|
| 317 |
<div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 text-center">
|
| 318 |
+
<h2 class="text-3xl font-bold text-slate-900 mb-6">Deploy according to your security posture.</h2>
|
| 319 |
<p class="text-lg text-slate-600 max-w-2xl mx-auto mb-16">
|
| 320 |
+
Whether you need rapid SaaS deployment or zero-trust BYOC architecture, ClinicalAPI adapts to your compliance requirements without compromising performance.
|
| 321 |
</p>
|
| 322 |
+
<!-- Visual Mockup 5: Architecture -->
|
|
|
|
| 323 |
<div class="relative max-w-4xl mx-auto">
|
| 324 |
<!-- Lines -->
|
| 325 |
<div class="hidden md:block absolute top-1/2 left-0 w-full h-0.5 bg-slate-300 -z-10 transform -translate-y-1/2"></div>
|
|
|
|
| 356 |
</div>
|
| 357 |
</div>
|
| 358 |
</div>
|
|
|
|
| 359 |
<div class="mt-12 flex justify-center gap-4">
|
| 360 |
+
<button class="modal-trigger px-6 py-3 border border-slate-300 rounded-lg text-slate-700 font-medium hover:bg-slate-50" data-modal="byoc-guide">Read BYOC Guide</button>
|
| 361 |
+
<button class="modal-trigger px-6 py-3 bg-slate-900 text-white rounded-lg font-medium hover:bg-slate-800" data-modal="architecture-review">Book Architecture Review</button>
|
| 362 |
</div>
|
| 363 |
+
</div>
|
| 364 |
</section>
|
| 365 |
|
| 366 |
<!-- Developers (Mockup 6) -->
|
|
|
|
| 369 |
<div class="grid lg:grid-cols-2 gap-12 items-center">
|
| 370 |
<div>
|
| 371 |
<div class="text-primary-400 font-bold tracking-wider uppercase text-sm mb-2">Developer First</div>
|
| 372 |
+
<h2 class="text-4xl font-bold mb-6">Built for developers who ship.</h2>
|
| 373 |
<p class="text-slate-400 text-lg mb-8">
|
| 374 |
+
Integrate in minutes with our battle-tested REST API and comprehensive SDKs. From real-time streaming to bulk async processing—built for production scale from day one.
|
| 375 |
</p>
|
| 376 |
<div class="flex gap-4 mb-8">
|
| 377 |
+
<button class="modal-trigger px-4 py-2 bg-primary-600 rounded text-sm font-bold hover:bg-primary-500" data-modal="read-docs-dev">Read Docs</button>
|
| 378 |
+
<button class="modal-trigger px-4 py-2 bg-slate-800 border border-slate-700 rounded text-sm font-bold hover:bg-slate-700" data-modal="npm-install">npm install @clinicalapi/sdk</button>
|
| 379 |
</div>
|
| 380 |
+
<div class="flex items-center space-x-6 text-sm text-slate-400">
|
| 381 |
<span class="flex items-center"><i data-feather="check" class="w-4 h-4 mr-2 text-green-400"></i> Webhooks</span>
|
| 382 |
<span class="flex items-center"><i data-feather="check" class="w-4 h-4 mr-2 text-green-400"></i> Versioning</span>
|
| 383 |
<span class="flex items-center"><i data-feather="check" class="w-4 h-4 mr-2 text-green-400"></i> Metering</span>
|
|
|
|
| 421 |
<div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
|
| 422 |
<div class="grid lg:grid-cols-2 gap-16">
|
| 423 |
<div>
|
| 424 |
+
<h2 class="text-3xl font-bold text-slate-900 mb-6">Security and compliance woven into every layer.</h2>
|
| 425 |
<p class="text-lg text-slate-600 mb-8">
|
| 426 |
+
We've built ClinicalAPI from the ground up with a security-first mindset. From SOC 2 Type II certification to HIPAA and GDPR compliance, we've handled the heavy lifting so you can focus on innovation.
|
| 427 |
</p>
|
| 428 |
+
<button class="modal-trigger text-primary-600 font-bold hover:text-primary-700" data-modal="security-overview-detail">View Security Overview <i data-feather="arrow-right" class="ml-2 w-4 h-4"></i></button>
|
| 429 |
+
</div>
|
| 430 |
|
| 431 |
<!-- Checklist Mockup -->
|
| 432 |
<div class="bg-slate-50 border border-slate-200 rounded-xl p-8">
|
|
|
|
| 481 |
<section class="py-24 bg-slate-50">
|
| 482 |
<div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
|
| 483 |
<div class="text-center mb-12">
|
| 484 |
+
<h2 class="text-3xl font-bold text-slate-900">Powering the next generation of healthcare applications.</h2>
|
| 485 |
</div>
|
| 486 |
+
<div class="bg-white rounded-xl shadow-sm border border-slate-200 overflow-hidden">
|
|
|
|
| 487 |
<!-- Tabs -->
|
| 488 |
<div class="flex border-b border-slate-200 overflow-x-auto" id="solution-tabs">
|
| 489 |
<button class="solution-tab px-6 py-4 text-sm font-bold text-primary-600 border-b-2 border-primary-600 focus:outline-none whitespace-nowrap" data-target="sol-1">Clinical Note Structuring</button>
|
|
|
|
| 556 |
<section class="py-24 bg-white">
|
| 557 |
<div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
|
| 558 |
<div class="text-center mb-16">
|
| 559 |
+
<h2 class="text-3xl font-bold text-slate-900">Transparent pricing that scales with your success.</h2>
|
| 560 |
+
<p class="text-slate-600 mt-4">Start free, upgrade when you're ready. No hidden fees, no surprises. Enterprise-grade features available at every tier.</p>
|
| 561 |
+
</div>
|
| 562 |
|
| 563 |
<div class="grid md:grid-cols-3 gap-8 max-w-5xl mx-auto">
|
| 564 |
<!-- Starter -->
|
|
|
|
| 570 |
<li class="flex"><i data-feather="check" class="w-4 h-4 text-green-500 mr-2"></i> 3 Packs enabled</li>
|
| 571 |
<li class="flex"><i data-feather="check" class="w-4 h-4 text-green-500 mr-2"></i> Community Support</li>
|
| 572 |
</ul>
|
| 573 |
+
<button class="modal-trigger block text-center py-2 px-4 bg-slate-100 text-slate-700 font-bold rounded hover:bg-slate-200 w-full" data-modal="get-started-starter">Get Started</button>
|
| 574 |
+
</div>
|
| 575 |
|
| 576 |
<!-- Growth -->
|
| 577 |
<div class="border-2 border-primary-500 rounded-xl p-8 flex flex-col relative shadow-lg transform md:-translate-y-4">
|
|
|
|
| 584 |
<li class="flex"><i data-feather="check" class="w-4 h-4 text-primary-600 mr-2"></i> Evidence Packs included</li>
|
| 585 |
<li class="flex"><i data-feather="check" class="w-4 h-4 text-primary-600 mr-2"></i> Email Support</li>
|
| 586 |
</ul>
|
| 587 |
+
<button class="modal-trigger block text-center py-2 px-4 bg-primary-600 text-white font-bold rounded hover:bg-primary-700 w-full" data-modal="get-api-key-growth">Get API Key</button>
|
| 588 |
+
</div>
|
| 589 |
|
| 590 |
<!-- Enterprise -->
|
| 591 |
<div class="border border-slate-200 rounded-xl p-8 flex flex-col">
|
|
|
|
| 597 |
<li class="flex"><i data-feather="check" class="w-4 h-4 text-green-500 mr-2"></i> SSO & SLA</li>
|
| 598 |
<li class="flex"><i data-feather="check" class="w-4 h-4 text-green-500 mr-2"></i> Account Manager</li>
|
| 599 |
</ul>
|
| 600 |
+
<button class="modal-trigger block text-center py-2 px-4 bg-slate-100 text-slate-700 font-bold rounded hover:bg-slate-200 w-full" data-modal="contact-sales">Contact Sales</button>
|
| 601 |
+
</div>
|
| 602 |
</div>
|
| 603 |
</div>
|
| 604 |
</section>
|
|
|
|
| 606 |
<!-- FAQ -->
|
| 607 |
<section class="py-24 bg-slate-50">
|
| 608 |
<div class="max-w-3xl mx-auto px-4 sm:px-6 lg:px-8">
|
| 609 |
+
<h2 class="text-3xl font-bold text-slate-900 text-center mb-12">Everything you need to know</h2>
|
| 610 |
+
<div class="space-y-3">
|
| 611 |
+
<div class="faq-item bg-white rounded-lg shadow-sm border border-slate-200 overflow-hidden">
|
| 612 |
+
<button class="faq-trigger w-full p-6 text-left flex justify-between items-center hover:bg-slate-50 transition">
|
| 613 |
+
<h3 class="font-bold text-slate-900 pr-4">Can we keep PHI within our security boundary?</h3>
|
| 614 |
+
<svg class="faq-icon w-5 h-5 text-slate-500 transform transition-transform flex-shrink-0" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 9l-7 7-7-7" /></svg>
|
| 615 |
+
</button>
|
| 616 |
+
<div class="faq-content hidden px-6 pb-6">
|
| 617 |
+
<p class="text-slate-600 text-sm leading-relaxed">Absolutely. Our BYOC (Bring Your Own Cloud) deployment option allows you to run ClinicalAPI processing runtimes directly within your AWS VPC. Your PHI never leaves your infrastructure—we only manage the control plane for orchestration, billing, and updates.</p>
|
| 618 |
+
</div>
|
| 619 |
</div>
|
| 620 |
+
<div class="faq-item bg-white rounded-lg shadow-sm border border-slate-200 overflow-hidden">
|
| 621 |
+
<button class="faq-trigger w-full p-6 text-left flex justify-between items-center hover:bg-slate-50 transition">
|
| 622 |
+
<h3 class="font-bold text-slate-900 pr-4">Do you support bulk document processing at scale?</h3>
|
| 623 |
+
<svg class="faq-icon w-5 h-5 text-slate-500 transform transition-transform flex-shrink-0" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 9l-7 7-7-7" /></svg>
|
| 624 |
+
</button>
|
| 625 |
+
<div class="faq-content hidden px-6 pb-6">
|
| 626 |
+
<p class="text-slate-600 text-sm leading-relaxed">Yes, we offer both synchronous APIs for real-time processing and asynchronous batch processing for high-volume workflows. Our async jobs support millions of documents with automatic retry, progress tracking, and webhook notifications upon completion.</p>
|
| 627 |
+
</div>
|
| 628 |
</div>
|
| 629 |
+
<div class="faq-item bg-white rounded-lg shadow-sm border border-slate-200 overflow-hidden">
|
| 630 |
+
<button class="faq-trigger w-full p-6 text-left flex justify-between items-center hover:bg-slate-50 transition">
|
| 631 |
+
<h3 class="font-bold text-slate-900 pr-4">How do you ensure processing reproducibility for audits?</h3>
|
| 632 |
+
<svg class="faq-icon w-5 h-5 text-slate-500 transform transition-transform flex-shrink-0" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 9l-7 7-7-7" /></svg>
|
| 633 |
+
</button>
|
| 634 |
+
<div class="faq-content hidden px-6 pb-6">
|
| 635 |
+
<p class="text-slate-600 text-sm leading-relaxed">Every API response includes our Evidence Pack—a cryptographically-signed bundle containing pipeline version, model versions, configuration hashes, and step-by-step processing logs. This ensures complete reproducibility for regulatory audits and model governance requirements.</p>
|
| 636 |
+
</div>
|
| 637 |
</div>
|
| 638 |
+
<div class="faq-item bg-white rounded-lg shadow-sm border border-slate-200 overflow-hidden">
|
| 639 |
+
<button class="faq-trigger w-full p-6 text-left flex justify-between items-center hover:bg-slate-50 transition">
|
| 640 |
+
<h3 class="font-bold text-slate-900 pr-4">Can we customize de-identification policies for our use case?</h3>
|
| 641 |
+
<svg class="faq-icon w-5 h-5 text-slate-500 transform transition-transform flex-shrink-0" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 9l-7 7-7-7" /></svg>
|
| 642 |
+
</button>
|
| 643 |
+
<div class="faq-content hidden px-6 pb-6">
|
| 644 |
+
<p class="text-slate-600 text-sm leading-relaxed">Definitely. We provide pre-built policy profiles for HIPAA, GDPR, and common use cases, but you can create custom policies with granular control over which PHI categories to detect, how to handle them (redact, mask, tokenize, replace), and even override specific detection rules for your domain.</p>
|
| 645 |
+
</div>
|
| 646 |
+
</div>
|
| 647 |
+
<div class="faq-item bg-white rounded-lg shadow-sm border border-slate-200 overflow-hidden">
|
| 648 |
+
<button class="faq-trigger w-full p-6 text-left flex justify-between items-center hover:bg-slate-50 transition">
|
| 649 |
+
<h3 class="font-bold text-slate-900 pr-4">What is your PHI de-identification accuracy?</h3>
|
| 650 |
+
<svg class="faq-icon w-5 h-5 text-slate-500 transform transition-transform flex-shrink-0" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 9l-7 7-7-7" /></svg>
|
| 651 |
+
</button>
|
| 652 |
+
<div class="faq-content hidden px-6 pb-6">
|
| 653 |
+
<p class="text-slate-600 text-sm leading-relaxed">Our clinical NLP models achieve 99.8% recall and 97.5% precision on PHI de-identification across the 18 HIPAA identifiers. We continuously validate against annotated clinical datasets from multiple institutions and can provide benchmark results for your specific document types.</p>
|
| 654 |
+
</div>
|
| 655 |
+
</div>
|
| 656 |
+
<div class="faq-item bg-white rounded-lg shadow-sm border border-slate-200 overflow-hidden">
|
| 657 |
+
<button class="faq-trigger w-full p-6 text-left flex justify-between items-center hover:bg-slate-50 transition">
|
| 658 |
+
<h3 class="font-bold text-slate-900 pr-4">How long does integration typically take?</h3>
|
| 659 |
+
<svg class="faq-icon w-5 h-5 text-slate-500 transform transition-transform flex-shrink-0" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 9l-7 7-7-7" /></svg>
|
| 660 |
+
</button>
|
| 661 |
+
<div class="faq-content hidden px-6 pb-6">
|
| 662 |
+
<p class="text-slate-600 text-sm leading-relaxed">Most teams complete their initial integration in under 2 hours. Our REST API is designed for simplicity, and we provide SDKs for Python, JavaScript, Java, and .NET. For BYOC deployments, expect 1-2 days for initial setup, with ongoing support from our engineering team.</p>
|
| 663 |
+
</div>
|
| 664 |
</div>
|
| 665 |
</div>
|
| 666 |
+
</div>
|
| 667 |
</section>
|
| 668 |
|
| 669 |
<!-- Final CTA -->
|
| 670 |
<section class="py-24 bg-white border-t border-slate-200">
|
| 671 |
<div class="max-w-4xl mx-auto px-4 sm:px-6 lg:px-8 text-center">
|
| 672 |
+
<h2 class="text-4xl font-bold text-slate-900 mb-6">Transform clinical documents into compliance-ready intelligence—starting today.</h2>
|
| 673 |
<div class="flex flex-col sm:flex-row justify-center gap-4">
|
| 674 |
+
<button class="modal-trigger px-8 py-4 bg-primary-600 text-white font-bold rounded-lg hover:bg-primary-700 transition shadow-lg" data-modal="final-get-api-key">Get API Key</button>
|
| 675 |
+
<button class="modal-trigger px-8 py-4 bg-white text-slate-700 font-bold rounded-lg border border-slate-300 hover:bg-slate-50 transition" data-modal="final-book-demo">Book a Demo</button>
|
| 676 |
</div>
|
| 677 |
+
<button class="mt-6 modal-trigger text-slate-500 text-sm hover:text-primary-600 underline" data-modal="final-byoc">Explore BYOC options for strict boundary control.</button>
|
| 678 |
+
</div>
|
| 679 |
</section>
|
|
|
|
| 680 |
<custom-footer></custom-footer>
|
| 681 |
|
| 682 |
+
<!-- Modal Component -->
|
| 683 |
+
<custom-modal id="main-modal"></custom-modal>
|
| 684 |
+
|
| 685 |
<!-- Component Scripts -->
|
| 686 |
<script src="components/header.js"></script>
|
| 687 |
<script src="components/footer.js"></script>
|
| 688 |
+
<script src="components/modal.js"></script>
|
| 689 |
|
| 690 |
<!-- Main Script -->
|
| 691 |
<script src="script.js"></script>
|
| 692 |
+
<script>feather.replace();</script>
|
|
|
|
| 693 |
<script src="https://huggingface.co/deepsite/deepsite-badge.js"></script>
|
| 694 |
</body>
|
| 695 |
</html>
|
script.js
CHANGED
|
@@ -1,4 +1,484 @@
|
|
|
|
|
| 1 |
document.addEventListener('DOMContentLoaded', () => {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 2 |
// Solution Carousel Logic
|
| 3 |
const tabs = document.querySelectorAll('.solution-tab');
|
| 4 |
const contents = document.querySelectorAll('.solution-content');
|
|
@@ -27,13 +507,40 @@ document.addEventListener('DOMContentLoaded', () => {
|
|
| 27 |
});
|
| 28 |
});
|
| 29 |
|
| 30 |
-
//
|
| 31 |
-
const
|
| 32 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 33 |
|
| 34 |
-
if(mobileMenuBtn
|
| 35 |
mobileMenuBtn.addEventListener('click', () => {
|
| 36 |
-
|
| 37 |
});
|
| 38 |
}
|
| 39 |
-
});
|
|
|
|
| 1 |
+
|
| 2 |
document.addEventListener('DOMContentLoaded', () => {
|
| 3 |
+
// Modal Content Definitions
|
| 4 |
+
const modalContents = {
|
| 5 |
+
'get-api-key': {
|
| 6 |
+
title: 'Get Your Free API Key',
|
| 7 |
+
content: `
|
| 8 |
+
<div class="space-y-4">
|
| 9 |
+
<p>Start processing clinical documents in minutes with our free tier:</p>
|
| 10 |
+
<ul class="space-y-2 text-sm">
|
| 11 |
+
<li>✓ 5,000 characters free per month</li>
|
| 12 |
+
<li>✓ Access to all core processing packs</li>
|
| 13 |
+
<li>✓ Comprehensive documentation & SDKs</li>
|
| 14 |
+
<li>✓ Community support</li>
|
| 15 |
+
</ul>
|
| 16 |
+
<div class="bg-slate-50 p-4 rounded-lg">
|
| 17 |
+
<label class="block text-sm font-medium mb-2">Email Address</label>
|
| 18 |
+
<input type="email" class="w-full px-3 py-2 border border-slate-300 rounded-lg focus:ring-2 focus:ring-primary-500 focus:border-primary-500" placeholder="you@company.com">
|
| 19 |
+
</div>
|
| 20 |
+
</div>
|
| 21 |
+
`,
|
| 22 |
+
confirmText: 'Generate API Key'
|
| 23 |
+
},
|
| 24 |
+
'book-demo': {
|
| 25 |
+
title: 'Schedule a Personalized Demo',
|
| 26 |
+
content: `
|
| 27 |
+
<div class="space-y-4">
|
| 28 |
+
<p>See ClinicalAPI in action with a demo tailored to your use case:</p>
|
| 29 |
+
<ul class="space-y-2 text-sm">
|
| 30 |
+
<li>✓ Live processing of your sample documents</li>
|
| 31 |
+
<li>✓ Architecture review and best practices</li>
|
| 32 |
+
<li>✓ Pricing and packaging discussion</li>
|
| 33 |
+
<li>✓ BYOC vs SaaS deployment comparison</li>
|
| 34 |
+
</ul>
|
| 35 |
+
<div class="space-y-3">
|
| 36 |
+
<div>
|
| 37 |
+
<label class="block text-sm font-medium mb-2">Full Name</label>
|
| 38 |
+
<input type="text" class="w-full px-3 py-2 border border-slate-300 rounded-lg focus:ring-2 focus:ring-primary-500" placeholder="Dr. Jane Smith">
|
| 39 |
+
</div>
|
| 40 |
+
<div>
|
| 41 |
+
<label class="block text-sm font-medium mb-2">Work Email</label>
|
| 42 |
+
<input type="email" class="w-full px-3 py-2 border border-slate-300 rounded-lg focus:ring-2 focus:ring-primary-500" placeholder="jane@hospital.com">
|
| 43 |
+
</div>
|
| 44 |
+
<div>
|
| 45 |
+
<label class="block text-sm font-medium mb-2">Company</label>
|
| 46 |
+
<input type="text" class="w-full px-3 py-2 border border-slate-300 rounded-lg focus:ring-2 focus:ring-primary-500" placeholder="Healthcare Inc.">
|
| 47 |
+
</div>
|
| 48 |
+
</div>
|
| 49 |
+
</div>
|
| 50 |
+
`,
|
| 51 |
+
confirmText: 'Request Demo'
|
| 52 |
+
},
|
| 53 |
+
'view-docs': {
|
| 54 |
+
title: 'Explore Our Documentation',
|
| 55 |
+
content: `
|
| 56 |
+
<div class="space-y-4">
|
| 57 |
+
<p>Comprehensive documentation to help you integrate ClinicalAPI:</p>
|
| 58 |
+
<div class="space-y-2">
|
| 59 |
+
<a href="#" class="block p-3 bg-slate-50 rounded-lg hover:bg-slate-100 transition">
|
| 60 |
+
<div class="font-medium">🚀 Quick Start Guide</div>
|
| 61 |
+
<div class="text-sm text-slate-500">Get up and running in 5 minutes</div>
|
| 62 |
+
</a>
|
| 63 |
+
<a href="#" class="block p-3 bg-slate-50 rounded-lg hover:bg-slate-100 transition">
|
| 64 |
+
<div class="font-medium">📚 API Reference</div>
|
| 65 |
+
<div class="text-sm text-slate-500">Complete endpoint documentation</div>
|
| 66 |
+
</a>
|
| 67 |
+
<a href="#" class="block p-3 bg-slate-50 rounded-lg hover:bg-slate-100 transition">
|
| 68 |
+
<div class="font-medium">💻 SDK Documentation</div>
|
| 69 |
+
<div class="text-sm text-slate-500">Python, JavaScript, Java, .NET</div>
|
| 70 |
+
</a>
|
| 71 |
+
<a href="#" class="block p-3 bg-slate-50 rounded-lg hover:bg-slate-100 transition">
|
| 72 |
+
<div class="font-medium">🔒 Security Guide</div>
|
| 73 |
+
<div class="text-sm text-slate-500">HIPAA, SOC2, and best practices</div>
|
| 74 |
+
</a>
|
| 75 |
+
</div>
|
| 76 |
+
</div>
|
| 77 |
+
`,
|
| 78 |
+
confirmText: null
|
| 79 |
+
},
|
| 80 |
+
'byoc-overview': {
|
| 81 |
+
title: 'BYOC (Bring Your Own Cloud) Overview',
|
| 82 |
+
content: `
|
| 83 |
+
<div class="space-y-4">
|
| 84 |
+
<p>Deploy ClinicalAPI processing runtimes directly in your cloud infrastructure:</p>
|
| 85 |
+
<div class="grid grid-cols-2 gap-3">
|
| 86 |
+
<div class="p-3 bg-primary-50 rounded-lg">
|
| 87 |
+
<div class="font-bold text-primary-700">Zero Data Egress</div>
|
| 88 |
+
<div class="text-sm text-primary-600">PHI never leaves your VPC</div>
|
| 89 |
+
</div>
|
| 90 |
+
<div class="p-3 bg-primary-50 rounded-lg">
|
| 91 |
+
<div class="font-bold text-primary-700">Full Control</div>
|
| 92 |
+
<div class="text-sm text-primary-600">Manage infrastructure your way</div>
|
| 93 |
+
</div>
|
| 94 |
+
<div class="p-3 bg-primary-50 rounded-lg">
|
| 95 |
+
<div class="font-bold text-primary-700">Compliance</div>
|
| 96 |
+
<div class="text-sm text-primary-600">Meet strictest requirements</div>
|
| 97 |
+
</div>
|
| 98 |
+
<div class="p-3 bg-primary-50 rounded-lg">
|
| 99 |
+
<div class="font-bold text-primary-700">Performance</div>
|
| 100 |
+
<div class="text-sm text-primary-600">Low latency, high throughput</div>
|
| 101 |
+
</div>
|
| 102 |
+
</div>
|
| 103 |
+
<p class="text-sm text-slate-500">Currently available for AWS. Azure and GCP coming soon.</p>
|
| 104 |
+
</div>
|
| 105 |
+
`,
|
| 106 |
+
confirmText: 'Learn More'
|
| 107 |
+
},
|
| 108 |
+
'security-overview': {
|
| 109 |
+
title: 'Security & Compliance Overview',
|
| 110 |
+
content: `
|
| 111 |
+
<div class="space-y-4">
|
| 112 |
+
<p>Built for the most demanding security requirements:</p>
|
| 113 |
+
<ul class="space-y-2 text-sm">
|
| 114 |
+
<li><strong>HIPAA Compliant</strong> — Business Associate Agreement (BAA) available</li>
|
| 115 |
+
<li><strong>SOC 2 Type II</strong> — Independently audited and certified</li>
|
| 116 |
+
<li><strong>GDPR Ready</strong> — Data processing agreements included</li>
|
| 117 |
+
<li><strong>ISO 27001</strong> — Information security management certified</li>
|
| 118 |
+
<li><strong>End-to-end Encryption</strong> — AES-256 at rest, TLS 1.3 in transit</li>
|
| 119 |
+
<li><strong>SaaS & BYOC</strong> — Choose your deployment model</li>
|
| 120 |
+
</ul>
|
| 121 |
+
<a href="#" class="text-primary-600 text-sm font-medium hover:underline">Download Security Whitepaper →</a>
|
| 122 |
+
</div>
|
| 123 |
+
`,
|
| 124 |
+
confirmText: 'Contact Security Team'
|
| 125 |
+
},
|
| 126 |
+
'preprocessing': {
|
| 127 |
+
title: 'Intelligent Preprocessing',
|
| 128 |
+
content: `
|
| 129 |
+
<div class="space-y-4">
|
| 130 |
+
<p>Transform raw clinical documents into structured, machine-ready data:</p>
|
| 131 |
+
<ul class="space-y-2 text-sm">
|
| 132 |
+
<li>📄 <strong>Document Parsing</strong> — PDF, DOCX, TXT, DICOM support</li>
|
| 133 |
+
<li>🔍 <strong>OCR Enhancement</strong> — 99.5% accuracy on scanned documents</li>
|
| 134 |
+
<li>✂️ <strong>Section Detection</strong> — Identify HPI, ROS, PE, A&P sections</li>
|
| 135 |
+
<li>🧹 <strong>Data Cleaning</strong> — Remove artifacts, normalize whitespace</li>
|
| 136 |
+
<li>📦 <strong>Smart Chunking</strong> — Maintain context with optimal spans</li>
|
| 137 |
+
</ul>
|
| 138 |
+
</div>
|
| 139 |
+
`,
|
| 140 |
+
confirmText: 'View API Docs'
|
| 141 |
+
},
|
| 142 |
+
'phi-protection': {
|
| 143 |
+
title: 'Enterprise PHI Protection',
|
| 144 |
+
content: `
|
| 145 |
+
<div class="space-y-4">
|
| 146 |
+
<p>Military-grade de-identification with customizable policies:</p>
|
| 147 |
+
<div class="bg-yellow-50 border border-yellow-200 p-3 rounded-lg text-sm">
|
| 148 |
+
<strong>🎯 99.8% PHI Recall • 97.5% Precision</strong>
|
| 149 |
+
</div>
|
| 150 |
+
<ul class="space-y-2 text-sm">
|
| 151 |
+
<li>🔒 <strong>18 HIPAA Identifiers</strong> — Names, dates, locations, MRNs, etc.</li>
|
| 152 |
+
<li>🎭 <strong>Redaction Modes</strong> — Mask, Replace, Tokenize, Hash</li>
|
| 153 |
+
<li>⚙️ <strong>Policy Profiles</strong> — HIPAA, GDPR, Safe Harbor, Custom</li>
|
| 154 |
+
<li>📊 <strong>Confidence Scoring</strong> — Per-entity confidence metrics</li>
|
| 155 |
+
<li>🔍 <strong>False Positive Control</strong> — Whitelist/Blacklist entities</li>
|
| 156 |
+
</ul>
|
| 157 |
+
</div>
|
| 158 |
+
`,
|
| 159 |
+
confirmText: 'Try De-ID Demo'
|
| 160 |
+
},
|
| 161 |
+
'entity-extraction': {
|
| 162 |
+
title: 'Clinical Entity Extraction',
|
| 163 |
+
content: `
|
| 164 |
+
<div class="space-y-4">
|
| 165 |
+
<p>Extract clinically-relevant entities with clinical-grade accuracy:</p>
|
| 166 |
+
<ul class="space-y-2 text-sm">
|
| 167 |
+
<li>💊 <strong>Medications</strong> — Drug names, dosages, routes, frequencies</li>
|
| 168 |
+
<li>🏥 <strong>Problems/Conditions</strong> — Diagnoses, symptoms, findings</li>
|
| 169 |
+
<li>🔬 <strong>Procedures</strong> — Surgeries, tests, interventions</li>
|
| 170 |
+
<li>🧪 <strong>Laboratory Values</strong> — Results, units, reference ranges</li>
|
| 171 |
+
<li>📏 <strong>Vitals</strong> — Blood pressure, heart rate, temperature</li>
|
| 172 |
+
<li>👤 <strong>Social Determinants</strong> — Smoking, substance use, living situation</li>
|
| 173 |
+
<li>📍 <strong>Anatomy</strong> — Laterality, body sites, organ systems</li>
|
| 174 |
+
</ul>
|
| 175 |
+
<p class="text-sm text-slate-500">Includes negation, speculation, and temporality detection.</p>
|
| 176 |
+
</div>
|
| 177 |
+
`,
|
| 178 |
+
confirmText: 'View Entity Types'
|
| 179 |
+
},
|
| 180 |
+
'normalization': {
|
| 181 |
+
title: 'Clinical Code Normalization',
|
| 182 |
+
content: `
|
| 183 |
+
<div class="space-y-4">
|
| 184 |
+
<p>Map clinical entities to standard medical vocabularies:</p>
|
| 185 |
+
<ul class="space-y-2 text-sm">
|
| 186 |
+
<li>🏷️ <strong>SNOMED CT</strong> — 350k+ concepts with full hierarchy</li>
|
| 187 |
+
<li>📋 <strong>ICD-10-CM</strong> — Diagnosis and procedure coding</li>
|
| 188 |
+
<li>💊 <strong>RxNorm</strong> — Medication normalization</li>
|
| 189 |
+
<li>🔬 <strong>LOINC</strong> — Laboratory observation identifiers</li>
|
| 190 |
+
<li>⚕️ <strong>CPT/HCPCS</strong> — Procedure and service codes</li>
|
| 191 |
+
<li>🔢 <strong>Unit Conversion</strong> — Standardize units of measure</li>
|
| 192 |
+
</ul>
|
| 193 |
+
<p class="text-sm text-slate-500">All mappings include version references and provenance.</p>
|
| 194 |
+
</div>
|
| 195 |
+
`,
|
| 196 |
+
confirmText: 'View Code Systems'
|
| 197 |
+
},
|
| 198 |
+
'evidence-packs': {
|
| 199 |
+
title: 'Audit-Ready Evidence Packs',
|
| 200 |
+
content: `
|
| 201 |
+
<div class="space-y-4">
|
| 202 |
+
<p>Generate cryptographically-verifiable audit trails:</p>
|
| 203 |
+
<ul class="space-y-2 text-sm">
|
| 204 |
+
<li>🔐 <strong>Cryptographic Signatures</strong> — Tamper-evident outputs</li>
|
| 205 |
+
<li>📦 <strong>Pipeline Versioning</strong> — Exact model and config used</li>
|
| 206 |
+
<li>📝 <strong>Step-by-Step Logs</strong> — Full processing trace</li>
|
| 207 |
+
<li>⏱️ <strong>Timestamping</strong> — ISO 8601 timestamps with timezone</li>
|
| 208 |
+
<li>🎯 <strong>Entity Provenance</strong> — Source span mapping</li>
|
| 209 |
+
<li>✅ <strong>Confidence Metrics</strong> — Per-prediction scores</li>
|
| 210 |
+
</ul>
|
| 211 |
+
<p class="text-sm text-slate-500">Perfect for FDA submissions, internal audits, and model governance.</p>
|
| 212 |
+
</div>
|
| 213 |
+
`,
|
| 214 |
+
confirmText: 'View Evidence Schema'
|
| 215 |
+
},
|
| 216 |
+
'deployment': {
|
| 217 |
+
title: 'Flexible Deployment Options',
|
| 218 |
+
content: `
|
| 219 |
+
<div class="space-y-4">
|
| 220 |
+
<p>Choose the deployment model that fits your requirements:</p>
|
| 221 |
+
<div class="space-y-3">
|
| 222 |
+
<div class="p-3 border border-slate-200 rounded-lg">
|
| 223 |
+
<div class="font-bold text-primary-600">☁️ SaaS (Managed)</div>
|
| 224 |
+
<div class="text-sm text-slate-600 mt-1">
|
| 225 |
+
• Fastest to deploy (minutes)<br>
|
| 226 |
+
• Automatic updates and scaling<br>
|
| 227 |
+
• Starting at $249/month
|
| 228 |
+
</div>
|
| 229 |
+
</div>
|
| 230 |
+
<div class="p-3 border border-slate-200 rounded-lg">
|
| 231 |
+
<div class="font-bold text-primary-600">🏢 BYOC (Your Cloud)</div>
|
| 232 |
+
<div class="text-sm text-slate-600 mt-1">
|
| 233 |
+
• Deploy to your AWS VPC<br>
|
| 234 |
+
• Zero data egress<br>
|
| 235 |
+
• Enterprise pricing
|
| 236 |
+
</div>
|
| 237 |
+
</div>
|
| 238 |
+
</div>
|
| 239 |
+
</div>
|
| 240 |
+
`,
|
| 241 |
+
confirmText: 'Compare Deployments'
|
| 242 |
+
},
|
| 243 |
+
'explore-packs': {
|
| 244 |
+
title: 'Processing Packs Documentation',
|
| 245 |
+
content: `
|
| 246 |
+
<div class="space-y-4">
|
| 247 |
+
<p>Deep dive into each processing pack:</p>
|
| 248 |
+
<div class="space-y-2 text-sm">
|
| 249 |
+
<a href="#" class="block p-2 hover:bg-slate-50 rounded">📖 Preprocess Pack Guide</a>
|
| 250 |
+
<a href="#" class="block p-2 hover:bg-slate-50 rounded">📖 De-ID Pack Guide</a>
|
| 251 |
+
<a href="#" class="block p-2 hover:bg-slate-50 rounded">📖 Extraction Pack Guide</a>
|
| 252 |
+
<a href="#" class="block p-2 hover:bg-slate-50 rounded">📖 Normalization Pack Guide</a>
|
| 253 |
+
<a href="#" class="block p-2 hover:bg-slate-50 rounded">📖 Evidence Pack Guide</a>
|
| 254 |
+
<a href="#" class="block p-2 hover:bg-slate-50 rounded">📖 Context Pack Guide</a>
|
| 255 |
+
</div>
|
| 256 |
+
<p class="text-sm text-slate-500">Combine packs to build custom pipelines.</p>
|
| 257 |
+
</div>
|
| 258 |
+
`,
|
| 259 |
+
confirmText: null
|
| 260 |
+
},
|
| 261 |
+
'byoc-guide': {
|
| 262 |
+
title: 'BYOC Deployment Guide',
|
| 263 |
+
content: `
|
| 264 |
+
<div class="space-y-4">
|
| 265 |
+
<p>Deploy ClinicalAPI in your AWS account:</p>
|
| 266 |
+
<ol class="space-y-3 text-sm list-decimal list-inside">
|
| 267 |
+
<li>Configure your AWS VPC and subnets</li>
|
| 268 |
+
<li>Provide IAM credentials with required permissions</li>
|
| 269 |
+
<li>Run our CloudFormation or Terraform templates</li>
|
| 270 |
+
<li>Verify deployment with health check endpoint</li>
|
| 271 |
+
<li>Start processing with your BYOC endpoint URL</li>
|
| 272 |
+
</ol>
|
| 273 |
+
<p class="text-sm text-slate-500">Our team provides full deployment support.</p>
|
| 274 |
+
</div>
|
| 275 |
+
`,
|
| 276 |
+
confirmText: 'Start Deployment'
|
| 277 |
+
},
|
| 278 |
+
'architecture-review': {
|
| 279 |
+
title: 'Book Architecture Review',
|
| 280 |
+
content: `
|
| 281 |
+
<div class="space-y-4">
|
| 282 |
+
<p>Get expert guidance on your ClinicalAPI implementation:</p>
|
| 283 |
+
<ul class="space-y-2 text-sm">
|
| 284 |
+
<li>✓ Architecture design review</li>
|
| 285 |
+
<li>✓ Security and compliance assessment</li>
|
| 286 |
+
<li>✓ Performance optimization recommendations</li>
|
| 287 |
+
<li>✓ Integration best practices</li>
|
| 288 |
+
<li>✓ Cost optimization strategies</li>
|
| 289 |
+
</ul>
|
| 290 |
+
<div class="bg-slate-50 p-4 rounded-lg space-y-3">
|
| 291 |
+
<input type="text" class="w-full px-3 py-2 border border-slate-300 rounded-lg text-sm" placeholder="Your Name">
|
| 292 |
+
<input type="email" class="w-full px-3 py-2 border border-slate-300 rounded-lg text-sm" placeholder="Work Email">
|
| 293 |
+
<input type="text" class="w-full px-3 py-2 border border-slate-300 rounded-lg text-sm" placeholder="Company">
|
| 294 |
+
</div>
|
| 295 |
+
</div>
|
| 296 |
+
`,
|
| 297 |
+
confirmText: 'Request Review'
|
| 298 |
+
},
|
| 299 |
+
'read-docs-dev': {
|
| 300 |
+
title: 'Developer Documentation',
|
| 301 |
+
content: `
|
| 302 |
+
<div class="space-y-4">
|
| 303 |
+
<p>Everything developers need to integrate ClinicalAPI:</p>
|
| 304 |
+
<div class="grid grid-cols-2 gap-2">
|
| 305 |
+
<div class="p-3 bg-slate-50 rounded-lg text-center">
|
| 306 |
+
<div class="text-2xl mb-1">📘</div>
|
| 307 |
+
<div class="text-sm font-medium">API Reference</div>
|
| 308 |
+
</div>
|
| 309 |
+
<div class="p-3 bg-slate-50 rounded-lg text-center">
|
| 310 |
+
<div class="text-2xl mb-1">🐍</div>
|
| 311 |
+
<div class="text-sm font-medium">Python SDK</div>
|
| 312 |
+
</div>
|
| 313 |
+
<div class="p-3 bg-slate-50 rounded-lg text-center">
|
| 314 |
+
<div class="text-2xl mb-1">⚡</div>
|
| 315 |
+
<div class="text-sm font-medium">JavaScript SDK</div>
|
| 316 |
+
</div>
|
| 317 |
+
<div class="p-3 bg-slate-50 rounded-lg text-center">
|
| 318 |
+
<div class="text-2xl mb-1">☕</div>
|
| 319 |
+
<div class="text-sm font-medium">Java SDK</div>
|
| 320 |
+
</div>
|
| 321 |
+
</div>
|
| 322 |
+
</div>
|
| 323 |
+
`,
|
| 324 |
+
confirmText: null
|
| 325 |
+
},
|
| 326 |
+
'npm-install': {
|
| 327 |
+
title: 'Install ClinicalAPI SDK',
|
| 328 |
+
content: `
|
| 329 |
+
<div class="space-y-4">
|
| 330 |
+
<p>Install the official ClinicalAPI SDK for Node.js:</p>
|
| 331 |
+
<div class="bg-slate-900 p-4 rounded-lg">
|
| 332 |
+
<code class="text-green-400 text-sm">npm install @clinicalapi/sdk</code>
|
| 333 |
+
</div>
|
| 334 |
+
<p class="text-sm text-slate-600">Or use yarn:</p>
|
| 335 |
+
<div class="bg-slate-900 p-4 rounded-lg">
|
| 336 |
+
<code class="text-green-400 text-sm">yarn add @clinicalapi/sdk</code>
|
| 337 |
+
</div>
|
| 338 |
+
<a href="#" class="text-primary-600 text-sm font-medium hover:underline">View SDK Documentation →</a>
|
| 339 |
+
</div>
|
| 340 |
+
`,
|
| 341 |
+
confirmText: null
|
| 342 |
+
},
|
| 343 |
+
'security-overview-detail': {
|
| 344 |
+
title: 'Security & Compliance Details',
|
| 345 |
+
content: `
|
| 346 |
+
<div class="space-y-4">
|
| 347 |
+
<p>Our comprehensive security posture:</p>
|
| 348 |
+
<ul class="space-y-2 text-sm">
|
| 349 |
+
<li>🔒 <strong>Encryption</strong> — AES-256 at rest, TLS 1.3 in transit</li>
|
| 350 |
+
<li>👤 <strong>Access Control</strong> — RBAC/ABAC, MFA required</li>
|
| 351 |
+
<li>📋 <strong>Audit Logging</strong> — Immutable logs for all access</li>
|
| 352 |
+
<li>✅ <strong>Certifications</strong> — SOC 2 Type II, HIPAA, ISO 27001</li>
|
| 353 |
+
<li>🧪 <strong>Penetration Testing</strong> — Quarterly third-party audits</li>
|
| 354 |
+
<li>🔄 <strong>Vulnerability Management</strong> — Continuous scanning</li>
|
| 355 |
+
</ul>
|
| 356 |
+
<p class="text-sm text-slate-500">Download our full security whitepaper for detailed information.</p>
|
| 357 |
+
</div>
|
| 358 |
+
`,
|
| 359 |
+
confirmText: 'Download Whitepaper'
|
| 360 |
+
},
|
| 361 |
+
'get-started-starter': {
|
| 362 |
+
title: 'Start with Free Tier',
|
| 363 |
+
content: `
|
| 364 |
+
<div class="space-y-4">
|
| 365 |
+
<p>Begin exploring ClinicalAPI with our free tier:</p>
|
| 366 |
+
<ul class="space-y-2 text-sm">
|
| 367 |
+
<li>✓ 5,000 characters/month free</li>
|
| 368 |
+
<li>✓ All core processing packs</li>
|
| 369 |
+
<li>✓ Community support</li>
|
| 370 |
+
<li>✓ No credit card required</li>
|
| 371 |
+
</ul>
|
| 372 |
+
<div class="bg-slate-50 p-4 rounded-lg">
|
| 373 |
+
<label class="block text-sm font-medium mb-2">Email</label>
|
| 374 |
+
<input type="email" class="w-full px-3 py-2 border border-slate-300 rounded-lg" placeholder="you@company.com">
|
| 375 |
+
</div>
|
| 376 |
+
</div>
|
| 377 |
+
`,
|
| 378 |
+
confirmText: 'Create Free Account'
|
| 379 |
+
},
|
| 380 |
+
'get-api-key-growth': {
|
| 381 |
+
title: 'Upgrade to Growth Plan',
|
| 382 |
+
content: `
|
| 383 |
+
<div class="space-y-4">
|
| 384 |
+
<p>Unlock powerful features with the Growth plan:</p>
|
| 385 |
+
<ul class="space-y-2 text-sm">
|
| 386 |
+
<li>✓ 2 million characters included</li>
|
| 387 |
+
<li>✓ All processing packs enabled</li>
|
| 388 |
+
<li>✓ Evidence packs included</li>
|
| 389 |
+
<li>✓ Priority email support</li>
|
| 390 |
+
<li>✓ Starting at $249/month</li>
|
| 391 |
+
</ul>
|
| 392 |
+
<div class="bg-primary-50 p-4 rounded-lg text-sm text-primary-700">
|
| 393 |
+
First month free for new customers!
|
| 394 |
+
</div>
|
| 395 |
+
</div>
|
| 396 |
+
`,
|
| 397 |
+
confirmText: 'Start Free Trial'
|
| 398 |
+
},
|
| 399 |
+
'contact-sales': {
|
| 400 |
+
title: 'Contact Enterprise Sales',
|
| 401 |
+
content: `
|
| 402 |
+
<div class="space-y-4">
|
| 403 |
+
<p>Let's discuss your enterprise needs:</p>
|
| 404 |
+
<ul class="space-y-2 text-sm">
|
| 405 |
+
<li>✓ High volume processing</li>
|
| 406 |
+
<li>✓ Dedicated BYOC runtimes</li>
|
| 407 |
+
<li>✓ SSO & custom SLAs</li>
|
| 408 |
+
<li>✓ Dedicated account manager</li>
|
| 409 |
+
<li>✓ Custom integrations</li>
|
| 410 |
+
</ul>
|
| 411 |
+
<div class="space-y-3">
|
| 412 |
+
<input type="text" class="w-full px-3 py-2 border border-slate-300 rounded-lg text-sm" placeholder="Full Name">
|
| 413 |
+
<input type="email" class="w-full px-3 py-2 border border-slate-300 rounded-lg text-sm" placeholder="Work Email">
|
| 414 |
+
<input type="text" class="w-full px-3 py-2 border border-slate-300 rounded-lg text-sm" placeholder="Company">
|
| 415 |
+
</div>
|
| 416 |
+
</div>
|
| 417 |
+
`,
|
| 418 |
+
confirmText: 'Request Callback'
|
| 419 |
+
},
|
| 420 |
+
'final-get-api-key': {
|
| 421 |
+
title: 'Get Your API Key Now',
|
| 422 |
+
content: `
|
| 423 |
+
<div class="space-y-4">
|
| 424 |
+
<p>Start processing clinical documents in minutes:</p>
|
| 425 |
+
<div class="bg-slate-50 p-4 rounded-lg">
|
| 426 |
+
<label class="block text-sm font-medium mb-2">Email Address</label>
|
| 427 |
+
<input type="email" class="w-full px-3 py-2 border border-slate-300 rounded-lg" placeholder="you@company.com">
|
| 428 |
+
</div>
|
| 429 |
+
<p class="text-sm text-slate-500">Free tier: 5,000 characters/month. No credit card required.</p>
|
| 430 |
+
</div>
|
| 431 |
+
`,
|
| 432 |
+
confirmText: 'Generate API Key'
|
| 433 |
+
},
|
| 434 |
+
'final-book-demo': {
|
| 435 |
+
title: 'Schedule Your Demo',
|
| 436 |
+
content: `
|
| 437 |
+
<div class="space-y-4">
|
| 438 |
+
<p>See ClinicalAPI in action with your own data:</p>
|
| 439 |
+
<div class="space-y-3">
|
| 440 |
+
<input type="text" class="w-full px-3 py-2 border border-slate-300 rounded-lg text-sm" placeholder="Full Name">
|
| 441 |
+
<input type="email" class="w-full px-3 py-2 border border-slate-300 rounded-lg text-sm" placeholder="Work Email">
|
| 442 |
+
<input type="text" class="w-full px-3 py-2 border border-slate-300 rounded-lg text-sm" placeholder="Company">
|
| 443 |
+
</div>
|
| 444 |
+
</div>
|
| 445 |
+
`,
|
| 446 |
+
confirmText: 'Book Demo'
|
| 447 |
+
},
|
| 448 |
+
'final-byoc': {
|
| 449 |
+
title: 'BYOC Deployment Options',
|
| 450 |
+
content: `
|
| 451 |
+
<div class="space-y-4">
|
| 452 |
+
<p>Keep PHI within your security boundary:</p>
|
| 453 |
+
<ul class="space-y-2 text-sm">
|
| 454 |
+
<li>✓ Deploy to your AWS VPC</li>
|
| 455 |
+
<li>✓ Zero data egress</li>
|
| 456 |
+
<li>✓ Full infrastructure control</li>
|
| 457 |
+
<li>✓ Enterprise-grade security</li>
|
| 458 |
+
</ul>
|
| 459 |
+
<p class="text-sm text-slate-500">Contact sales for BYOC pricing and setup.</p>
|
| 460 |
+
</div>
|
| 461 |
+
`,
|
| 462 |
+
confirmText: 'Contact Sales'
|
| 463 |
+
}
|
| 464 |
+
};
|
| 465 |
+
|
| 466 |
+
// Modal Functionality
|
| 467 |
+
const modal = document.getElementById('main-modal');
|
| 468 |
+
const modalTriggers = document.querySelectorAll('.modal-trigger');
|
| 469 |
+
|
| 470 |
+
modalTriggers.forEach(trigger => {
|
| 471 |
+
trigger.addEventListener('click', (e) => {
|
| 472 |
+
e.preventDefault();
|
| 473 |
+
const modalType = trigger.getAttribute('data-modal');
|
| 474 |
+
const content = modalContents[modalType];
|
| 475 |
+
|
| 476 |
+
if (content) {
|
| 477 |
+
modal.open(content.title, content.content, content.confirmText);
|
| 478 |
+
}
|
| 479 |
+
});
|
| 480 |
+
});
|
| 481 |
+
|
| 482 |
// Solution Carousel Logic
|
| 483 |
const tabs = document.querySelectorAll('.solution-tab');
|
| 484 |
const contents = document.querySelectorAll('.solution-content');
|
|
|
|
| 507 |
});
|
| 508 |
});
|
| 509 |
|
| 510 |
+
// FAQ Accordion Logic
|
| 511 |
+
const faqItems = document.querySelectorAll('.faq-item');
|
| 512 |
+
|
| 513 |
+
faqItems.forEach(item => {
|
| 514 |
+
const trigger = item.querySelector('.faq-trigger');
|
| 515 |
+
const content = item.querySelector('.faq-content');
|
| 516 |
+
const icon = item.querySelector('.faq-icon');
|
| 517 |
+
|
| 518 |
+
trigger.addEventListener('click', () => {
|
| 519 |
+
const isExpanded = !content.classList.contains('hidden');
|
| 520 |
+
|
| 521 |
+
// Close all other FAQs
|
| 522 |
+
faqItems.forEach(otherItem => {
|
| 523 |
+
const otherContent = otherItem.querySelector('.faq-content');
|
| 524 |
+
const otherIcon = otherItem.querySelector('.faq-icon');
|
| 525 |
+
otherContent.classList.add('hidden');
|
| 526 |
+
otherIcon.classList.remove('rotate-180');
|
| 527 |
+
});
|
| 528 |
+
|
| 529 |
+
// Toggle current FAQ
|
| 530 |
+
if (!isExpanded) {
|
| 531 |
+
content.classList.remove('hidden');
|
| 532 |
+
icon.classList.add('rotate-180');
|
| 533 |
+
}
|
| 534 |
+
});
|
| 535 |
+
});
|
| 536 |
+
|
| 537 |
+
// Mobile Menu Toggle
|
| 538 |
+
const mobileMenuBtn = document.querySelector('.mobile-menu-btn');
|
| 539 |
+
const navLinks = document.querySelector('.nav-links');
|
| 540 |
|
| 541 |
+
if(mobileMenuBtn) {
|
| 542 |
mobileMenuBtn.addEventListener('click', () => {
|
| 543 |
+
navLinks.classList.toggle('hidden');
|
| 544 |
});
|
| 545 |
}
|
| 546 |
+
});
|
style.css
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
|
|
| 1 |
/* Custom Styles for Visual Mockups and Components */
|
| 2 |
|
| 3 |
body {
|
|
@@ -65,4 +66,44 @@ input[type="checkbox"]:checked {
|
|
| 65 |
.relative-z-10 {
|
| 66 |
z-index: 10;
|
| 67 |
}
|
| 68 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
|
| 2 |
/* Custom Styles for Visual Mockups and Components */
|
| 3 |
|
| 4 |
body {
|
|
|
|
| 66 |
.relative-z-10 {
|
| 67 |
z-index: 10;
|
| 68 |
}
|
| 69 |
+
}
|
| 70 |
+
|
| 71 |
+
/* FAQ Accordion Styles */
|
| 72 |
+
.faq-item {
|
| 73 |
+
transition: all 0.2s ease;
|
| 74 |
+
}
|
| 75 |
+
|
| 76 |
+
.faq-trigger {
|
| 77 |
+
background: none;
|
| 78 |
+
border: none;
|
| 79 |
+
width: 100%;
|
| 80 |
+
cursor: pointer;
|
| 81 |
+
outline: none;
|
| 82 |
+
}
|
| 83 |
+
|
| 84 |
+
.faq-trigger:hover {
|
| 85 |
+
background-color: #f8fafc;
|
| 86 |
+
}
|
| 87 |
+
|
| 88 |
+
.faq-content {
|
| 89 |
+
transition: all 0.3s ease;
|
| 90 |
+
}
|
| 91 |
+
|
| 92 |
+
.faq-icon {
|
| 93 |
+
transition: transform 0.3s ease;
|
| 94 |
+
}
|
| 95 |
+
|
| 96 |
+
.faq-icon.rotate-180 {
|
| 97 |
+
transform: rotate(180deg);
|
| 98 |
+
}
|
| 99 |
+
|
| 100 |
+
/* Modal Trigger Button Styles */
|
| 101 |
+
.modal-trigger {
|
| 102 |
+
cursor: pointer;
|
| 103 |
+
outline: none;
|
| 104 |
+
}
|
| 105 |
+
|
| 106 |
+
.modal-trigger:focus {
|
| 107 |
+
outline: 2px solid #0d9488;
|
| 108 |
+
outline-offset: 2px;
|
| 109 |
+
}
|