|
|
<!DOCTYPE html>
|
|
|
<html lang="en" class="dark">
|
|
|
<head>
|
|
|
<meta charset="UTF-8" />
|
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
|
<title>MultiDom RAG</title>
|
|
|
<script src="https://cdn.tailwindcss.com"></script>
|
|
|
<link
|
|
|
rel="stylesheet"
|
|
|
href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css"
|
|
|
/>
|
|
|
<link rel="stylesheet" href="style.css" />
|
|
|
<script>
|
|
|
tailwind.config = {
|
|
|
darkMode: "class",
|
|
|
theme: {
|
|
|
extend: {
|
|
|
colors: {
|
|
|
primary: {
|
|
|
dark: "#579be8",
|
|
|
light: "#3B82F6",
|
|
|
},
|
|
|
secondary: {
|
|
|
dark: "#9F1239",
|
|
|
light: "#EC4899",
|
|
|
},
|
|
|
accent: {
|
|
|
dark: "#047857",
|
|
|
light: "#10B981",
|
|
|
},
|
|
|
dark: {
|
|
|
900: "#0F172A",
|
|
|
800: "#1E293B",
|
|
|
700: "#334155",
|
|
|
600: "#475569",
|
|
|
},
|
|
|
},
|
|
|
fontFamily: {
|
|
|
sans: ["Inter", "sans-serif"],
|
|
|
mono: ["Fira Code", "monospace"],
|
|
|
},
|
|
|
animation: {
|
|
|
float: "float 6s ease-in-out infinite",
|
|
|
"float-fast": "float 4s ease-in-out infinite",
|
|
|
"spin-slow": "spin 10s linear infinite",
|
|
|
"pulse-slow": "pulse 5s cubic-bezier(0.4, 0, 0.6, 1) infinite",
|
|
|
"bounce-slow": "bounce 3s infinite",
|
|
|
wiggle: "wiggle 1s ease-in-out infinite",
|
|
|
wave: "wave 2s linear infinite",
|
|
|
blink: "blink 1.5s step-end infinite",
|
|
|
},
|
|
|
keyframes: {
|
|
|
float: {
|
|
|
"0%, 100%": { transform: "translateY(0)" },
|
|
|
"50%": { transform: "translateY(-10px)" },
|
|
|
},
|
|
|
wiggle: {
|
|
|
"0%, 100%": { transform: "rotate(-3deg)" },
|
|
|
"50%": { transform: "rotate(3deg)" },
|
|
|
},
|
|
|
wave: {
|
|
|
"0%": { transform: "rotate(0deg)" },
|
|
|
"10%": { transform: "rotate(14deg)" },
|
|
|
"20%": { transform: "rotate(-8deg)" },
|
|
|
"30%": { transform: "rotate(14deg)" },
|
|
|
"40%": { transform: "rotate(-4deg)" },
|
|
|
"50%": { transform: "rotate(10deg)" },
|
|
|
"60%": { transform: "rotate(0deg)" },
|
|
|
"100%": { transform: "rotate(0deg)" },
|
|
|
},
|
|
|
blink: {
|
|
|
"0%, 100%": { opacity: "1" },
|
|
|
"50%": { opacity: "0" },
|
|
|
},
|
|
|
},
|
|
|
},
|
|
|
},
|
|
|
};
|
|
|
</script>
|
|
|
<style>
|
|
|
@import url("https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&display=swap");
|
|
|
|
|
|
body {
|
|
|
font-family: "Inter", sans-serif;
|
|
|
transition: all 0.3s ease;
|
|
|
scroll-behavior: smooth;
|
|
|
}
|
|
|
|
|
|
.gradient-bg {
|
|
|
background: linear-gradient(
|
|
|
135deg,
|
|
|
#1e40af 0%,
|
|
|
#9f1239 50%,
|
|
|
#047857 100%
|
|
|
);
|
|
|
}
|
|
|
|
|
|
.card-hover {
|
|
|
transition: transform 0.3s ease, box-shadow 0.3s ease;
|
|
|
}
|
|
|
|
|
|
.card-hover:hover {
|
|
|
transform: translateY(-5px);
|
|
|
box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.3),
|
|
|
0 10px 10px -5px rgba(0, 0, 0, 0.1);
|
|
|
}
|
|
|
|
|
|
.pulse-animation {
|
|
|
animation: pulse 2s infinite;
|
|
|
}
|
|
|
|
|
|
@keyframes pulse {
|
|
|
0% {
|
|
|
box-shadow: 0 0 0 0 rgba(59, 130, 246, 0.7);
|
|
|
}
|
|
|
70% {
|
|
|
box-shadow: 0 0 0 10px rgba(59, 130, 246, 0);
|
|
|
}
|
|
|
100% {
|
|
|
box-shadow: 0 0 0 0 rgba(59, 130, 246, 0);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
.chat-bubble {
|
|
|
border-radius: 1.5rem;
|
|
|
position: relative;
|
|
|
}
|
|
|
|
|
|
.chat-bubble:after {
|
|
|
content: "";
|
|
|
position: absolute;
|
|
|
bottom: 0;
|
|
|
left: 20%;
|
|
|
width: 0;
|
|
|
height: 0;
|
|
|
border: 10px solid transparent;
|
|
|
border-top-color: #3b82f6;
|
|
|
border-bottom: 0;
|
|
|
margin-left: -10px;
|
|
|
margin-bottom: -10px;
|
|
|
}
|
|
|
|
|
|
.dark .chat-bubble:after {
|
|
|
border-top-color: #1e40af;
|
|
|
}
|
|
|
|
|
|
.glow {
|
|
|
filter: drop-shadow(0 0 8px currentColor);
|
|
|
}
|
|
|
|
|
|
.feature-icon {
|
|
|
transition: all 0.3s ease;
|
|
|
}
|
|
|
|
|
|
.feature-card:hover .feature-icon {
|
|
|
transform: scale(1.2) rotate(10deg);
|
|
|
}
|
|
|
|
|
|
.swarm-particle {
|
|
|
position: absolute;
|
|
|
border-radius: 50%;
|
|
|
opacity: 0.7;
|
|
|
animation: swarm-move 15s linear infinite;
|
|
|
}
|
|
|
|
|
|
@keyframes swarm-move {
|
|
|
0%,
|
|
|
100% {
|
|
|
transform: translate(0, 0);
|
|
|
}
|
|
|
25% {
|
|
|
transform: translate(20px, 20px);
|
|
|
}
|
|
|
50% {
|
|
|
transform: translate(10px, -20px);
|
|
|
}
|
|
|
75% {
|
|
|
transform: translate(-20px, 10px);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
.typing-indicator {
|
|
|
display: flex;
|
|
|
align-items: center;
|
|
|
justify-content: center;
|
|
|
}
|
|
|
|
|
|
.typing-dot {
|
|
|
width: 8px;
|
|
|
height: 8px;
|
|
|
margin: 0 2px;
|
|
|
background-color: currentColor;
|
|
|
border-radius: 50%;
|
|
|
display: inline-block;
|
|
|
animation: typing-dot 1.4s infinite ease-in-out;
|
|
|
}
|
|
|
|
|
|
.typing-dot:nth-child(1) {
|
|
|
animation-delay: 0s;
|
|
|
}
|
|
|
|
|
|
.typing-dot:nth-child(2) {
|
|
|
animation-delay: 0.2s;
|
|
|
}
|
|
|
|
|
|
.typing-dot:nth-child(3) {
|
|
|
animation-delay: 0.4s;
|
|
|
}
|
|
|
|
|
|
@keyframes typing-dot {
|
|
|
0%,
|
|
|
60%,
|
|
|
100% {
|
|
|
transform: translateY(0);
|
|
|
}
|
|
|
30% {
|
|
|
transform: translateY(-5px);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
.progress-bar {
|
|
|
height: 4px;
|
|
|
width: 0;
|
|
|
background: linear-gradient(90deg, #3b82f6, #ec4899, #10b981);
|
|
|
transition: width 0.4s ease;
|
|
|
}
|
|
|
|
|
|
.scroll-indicator {
|
|
|
position: fixed;
|
|
|
bottom: 30px;
|
|
|
right: 30px;
|
|
|
width: 50px;
|
|
|
height: 50px;
|
|
|
border-radius: 50%;
|
|
|
background-color: #3b82f6;
|
|
|
color: white;
|
|
|
display: flex;
|
|
|
align-items: center;
|
|
|
justify-content: center;
|
|
|
cursor: pointer;
|
|
|
opacity: 0;
|
|
|
transform: translateY(20px);
|
|
|
transition: all 0.3s ease;
|
|
|
z-index: 999;
|
|
|
box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
|
|
|
}
|
|
|
|
|
|
.scroll-indicator.visible {
|
|
|
opacity: 1;
|
|
|
transform: translateY(0);
|
|
|
}
|
|
|
|
|
|
.scroll-indicator:hover {
|
|
|
transform: translateY(-5px) scale(1.1);
|
|
|
box-shadow: 0 6px 8px rgba(0, 0, 0, 0.15);
|
|
|
}
|
|
|
|
|
|
.tooltip {
|
|
|
position: relative;
|
|
|
}
|
|
|
|
|
|
.tooltip-text {
|
|
|
visibility: hidden;
|
|
|
width: 120px;
|
|
|
background-color: #1e293b;
|
|
|
color: #fff;
|
|
|
text-align: center;
|
|
|
border-radius: 6px;
|
|
|
padding: 5px;
|
|
|
position: absolute;
|
|
|
z-index: 1;
|
|
|
bottom: 125%;
|
|
|
left: 50%;
|
|
|
margin-left: -60px;
|
|
|
opacity: 0;
|
|
|
transition: opacity 0.3s;
|
|
|
}
|
|
|
|
|
|
.tooltip:hover .tooltip-text {
|
|
|
visibility: visible;
|
|
|
opacity: 1;
|
|
|
}
|
|
|
|
|
|
.parallax {
|
|
|
background-attachment: fixed;
|
|
|
background-position: center;
|
|
|
background-repeat: no-repeat;
|
|
|
background-size: cover;
|
|
|
}
|
|
|
|
|
|
.floating-label {
|
|
|
position: relative;
|
|
|
margin-bottom: 20px;
|
|
|
}
|
|
|
|
|
|
.floating-label input,
|
|
|
.floating-label textarea {
|
|
|
font-size: 16px;
|
|
|
padding: 20px 16px 10px;
|
|
|
display: block;
|
|
|
width: 100%;
|
|
|
border: 1px solid #cbd5e1;
|
|
|
border-radius: 8px;
|
|
|
background: #f8fafc;
|
|
|
}
|
|
|
|
|
|
.floating-label input:focus,
|
|
|
.floating-label textarea:focus {
|
|
|
outline: none;
|
|
|
border-color: #3b82f6;
|
|
|
}
|
|
|
|
|
|
.floating-label label {
|
|
|
color: #64748b;
|
|
|
font-size: 16px;
|
|
|
position: absolute;
|
|
|
pointer-events: none;
|
|
|
left: 16px;
|
|
|
top: 16px;
|
|
|
transition: 0.2s ease all;
|
|
|
}
|
|
|
|
|
|
.floating-label input:focus ~ label,
|
|
|
.floating-label input:valid ~ label,
|
|
|
.floating-label textarea:focus ~ label,
|
|
|
.floating-label textarea:valid ~ label {
|
|
|
top: 6px;
|
|
|
font-size: 12px;
|
|
|
color: #3b82f6;
|
|
|
}
|
|
|
|
|
|
.dark .floating-label input,
|
|
|
.dark .floating-label textarea {
|
|
|
background: #1e293b;
|
|
|
border-color: #334155;
|
|
|
color: #f8fafc;
|
|
|
}
|
|
|
|
|
|
.dark .floating-label label {
|
|
|
color: #94a3b8;
|
|
|
}
|
|
|
|
|
|
.dark .floating-label input:focus ~ label,
|
|
|
.dark .floating-label input:valid ~ label,
|
|
|
.dark .floating-label textarea:focus ~ label,
|
|
|
.dark .floating-label textarea:valid ~ label {
|
|
|
color: #60a5fa;
|
|
|
}
|
|
|
|
|
|
.toggle-switch {
|
|
|
position: relative;
|
|
|
display: inline-block;
|
|
|
width: 60px;
|
|
|
height: 34px;
|
|
|
}
|
|
|
|
|
|
.toggle-switch input {
|
|
|
opacity: 0;
|
|
|
width: 0;
|
|
|
height: 0;
|
|
|
}
|
|
|
|
|
|
.toggle-slider {
|
|
|
position: absolute;
|
|
|
cursor: pointer;
|
|
|
top: 0;
|
|
|
left: 0;
|
|
|
right: 0;
|
|
|
bottom: 0;
|
|
|
background-color: #cbd5e1;
|
|
|
transition: 0.4s;
|
|
|
border-radius: 34px;
|
|
|
}
|
|
|
|
|
|
.toggle-slider:before {
|
|
|
position: absolute;
|
|
|
content: "";
|
|
|
height: 26px;
|
|
|
width: 26px;
|
|
|
left: 4px;
|
|
|
bottom: 4px;
|
|
|
background-color: white;
|
|
|
transition: 0.4s;
|
|
|
border-radius: 50%;
|
|
|
}
|
|
|
|
|
|
input:checked + .toggle-slider {
|
|
|
background-color: #3b82f6;
|
|
|
}
|
|
|
|
|
|
input:checked + .toggle-slider:before {
|
|
|
transform: translateX(26px);
|
|
|
}
|
|
|
|
|
|
.ripple {
|
|
|
position: relative;
|
|
|
overflow: hidden;
|
|
|
}
|
|
|
|
|
|
.ripple-effect {
|
|
|
position: absolute;
|
|
|
border-radius: 50%;
|
|
|
background-color: rgba(255, 255, 255, 0.4);
|
|
|
transform: scale(0);
|
|
|
animation: ripple 0.6s linear;
|
|
|
pointer-events: none;
|
|
|
}
|
|
|
|
|
|
@keyframes ripple {
|
|
|
to {
|
|
|
transform: scale(4);
|
|
|
opacity: 0;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
.scroll-progress {
|
|
|
position: fixed;
|
|
|
top: 0;
|
|
|
left: 0;
|
|
|
width: 0%;
|
|
|
height: 4px;
|
|
|
background: linear-gradient(90deg, #3b82f6, #ec4899, #10b981);
|
|
|
z-index: 1000;
|
|
|
transition: width 0.1s;
|
|
|
}
|
|
|
|
|
|
.confetti {
|
|
|
position: fixed;
|
|
|
width: 10px;
|
|
|
height: 10px;
|
|
|
background-color: #3b82f6;
|
|
|
opacity: 0;
|
|
|
z-index: 9999;
|
|
|
animation: confetti-fall 5s linear forwards;
|
|
|
}
|
|
|
|
|
|
@keyframes confetti-fall {
|
|
|
0% {
|
|
|
transform: translateY(-100px) rotate(0deg);
|
|
|
opacity: 1;
|
|
|
}
|
|
|
100% {
|
|
|
transform: translateY(100vh) rotate(360deg);
|
|
|
opacity: 0;
|
|
|
}
|
|
|
}
|
|
|
.hero-slide {
|
|
|
position: absolute;
|
|
|
inset: 0;
|
|
|
width: 100%;
|
|
|
height: 100%;
|
|
|
object-fit: cover;
|
|
|
opacity: 0;
|
|
|
transition: opacity 1.5s ease-in-out;
|
|
|
|
|
|
animation: kenBurns 15s ease-out forwards;
|
|
|
}
|
|
|
|
|
|
.hero-slide.active {
|
|
|
opacity: 1;
|
|
|
}
|
|
|
|
|
|
@keyframes kenBurns {
|
|
|
0% {
|
|
|
transform: scale(1.1);
|
|
|
}
|
|
|
100% {
|
|
|
transform: scale(1);
|
|
|
}
|
|
|
}
|
|
|
</style>
|
|
|
</head>
|
|
|
<body
|
|
|
class="bg-gray-100 dark:bg-dark-900 text-gray-800 dark:text-gray-200 min-h-screen"
|
|
|
>
|
|
|
|
|
|
<div class="scroll-progress"></div>
|
|
|
|
|
|
|
|
|
<nav class="bg-white dark:bg-dark-800 shadow-lg sticky top-0 z-50">
|
|
|
<div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
|
|
|
<div class="flex justify-between h-16 items-center relative">
|
|
|
<div class="flex items-center">
|
|
|
<i
|
|
|
class="fa-solid fa-file-medical text-primary-light dark:text-primary-dark text-2xl mr-5"
|
|
|
></i>
|
|
|
<span
|
|
|
class="text-2xl font-bold text-primary-light dark:text-primary-dark"
|
|
|
>MultiDom RAG</span
|
|
|
>
|
|
|
</div>
|
|
|
<div class="hidden sm:flex flex-1 justify-center space-x-8">
|
|
|
<a
|
|
|
href="{{ url_for('homePage') }}"
|
|
|
class="border-primary-light dark:border-primary-dark text-gray-900 dark:text-white inline-flex items-center px-1 pt-1 border-b-2 text-sm text-xl hover:animate-pulse"
|
|
|
>Home</a
|
|
|
>
|
|
|
|
|
|
<div class="relative group">
|
|
|
<button
|
|
|
class="border-transparent text-gray-500 dark:text-gray-400 hover:border-gray-300 hover:text-gray-700 dark:hover:text-gray-300 inline-flex items-center px-1 pt-1 border-b-2 text-sm text-xl hover:animate-pulse"
|
|
|
>
|
|
|
Demo
|
|
|
<svg
|
|
|
class="w-4 h-4 ml-1"
|
|
|
fill="none"
|
|
|
stroke="currentColor"
|
|
|
viewBox="0 0 24 24"
|
|
|
xmlns="http://www.w3.org/2000/svg"
|
|
|
>
|
|
|
<path
|
|
|
stroke-linecap="round"
|
|
|
stroke-linejoin="round"
|
|
|
stroke-width="2"
|
|
|
d="M19 9l-7 7-7-7"
|
|
|
></path>
|
|
|
</svg>
|
|
|
</button>
|
|
|
|
|
|
|
|
|
<div
|
|
|
class="absolute left-1/2 transform -translate-x-1/2 mt-2 w-48 rounded-md shadow-lg bg-white dark:bg-dark-700 ring-1 ring-black ring-opacity-5 opacity-0 invisible group-hover:opacity-100 group-hover:visible transition-all duration-200 ease-in-out z-50"
|
|
|
>
|
|
|
<div class="py-1" role="menu" aria-orientation="vertical">
|
|
|
<a
|
|
|
href="{{ url_for('medical_page') }}"
|
|
|
class="block px-4 py-2 text-lg text-gray-700 dark:text-gray-300 hover:bg-gray-100 dark:hover:bg-dark-600"
|
|
|
role="menuitem"
|
|
|
>Medical</a
|
|
|
>
|
|
|
<a
|
|
|
href="{{ url_for('islamic_page') }}"
|
|
|
class="block px-4 py-2 text-lg text-gray-700 dark:text-gray-300 hover:bg-gray-100 dark:hover:bg-dark-600"
|
|
|
role="menuitem"
|
|
|
>Islamic</a
|
|
|
>
|
|
|
<a
|
|
|
href="{{ url_for('insurance_page') }}"
|
|
|
class="block px-4 py-2 text-lg text-gray-700 dark:text-gray-300 hover:bg-gray-100 dark:hover:bg-dark-600"
|
|
|
role="menuitem"
|
|
|
>Insurance</a
|
|
|
>
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
|
|
|
<a
|
|
|
href="{{ url_for('about') }}"
|
|
|
class="border-transparent text-gray-500 dark:text-gray-400 hover:border-gray-300 hover:text-gray-700 dark:hover:text-gray-300 inline-flex items-center px-1 pt-1 border-b-2 text-sm text-xl hover:animate-pulse"
|
|
|
>About</a
|
|
|
>
|
|
|
</div>
|
|
|
|
|
|
<div class="hidden sm:flex items-center space-x-4">
|
|
|
<button
|
|
|
id="theme-toggle"
|
|
|
type="button"
|
|
|
class="p-1 rounded-full text-gray-400 hover:text-gray-500 dark:hover:text-gray-300 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-primary-light dark:focus:ring-primary-dark ripple"
|
|
|
>
|
|
|
<i class="fas fa-moon dark:hidden"></i>
|
|
|
<i class="fas fa-sun hidden dark:block"></i>
|
|
|
</button>
|
|
|
<button
|
|
|
onclick="window.location.href = '{{ url_for('medical_page') }}'"
|
|
|
class="ml-4 bg-primary-light dark:bg-primary-dark hover:bg-primary-dark dark:hover:bg-primary-light text-white px-4 py-2 rounded-md text-sm font-medium transition duration-300 hover:scale-105 transform ripple"
|
|
|
>
|
|
|
Try Demo
|
|
|
</button>
|
|
|
</div>
|
|
|
<div class="-mr-2 flex items-center sm:hidden">
|
|
|
<button
|
|
|
type="button"
|
|
|
class="inline-flex items-center justify-center p-2 rounded-md text-gray-400 hover:text-gray-500 hover:bg-gray-100 dark:hover:bg-gray-700 focus:outline-none focus:ring-2 focus:ring-inset focus:ring-primary-light dark:focus:ring-primary-dark ripple"
|
|
|
aria-controls="mobile-menu"
|
|
|
aria-expanded="false"
|
|
|
>
|
|
|
<span class="sr-only">Open main menu</span>
|
|
|
<i class="fas fa-bars"></i>
|
|
|
</button>
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
</nav>
|
|
|
|
|
|
|
|
|
<div class="bg-gray-100 px-4 py-4 dark:bg-dark-900">
|
|
|
|
|
|
<div
|
|
|
id="home"
|
|
|
class="relative h-[70vh] max-w-8xl mx-auto flex items-center justify-center text-center text-white overflow-hidden rounded-xl shadow-2xl"
|
|
|
>
|
|
|
|
|
|
|
|
|
<div id="hero-slideshow" class="absolute inset-0 w-full h-full z-0">
|
|
|
|
|
|
<img
|
|
|
src="https://apicms.thestar.com.my/uploads/images/2019/11/20/397347.jpg"
|
|
|
alt="MedicalBg"
|
|
|
class="hero-slide active object-top"
|
|
|
/>
|
|
|
|
|
|
<img
|
|
|
src="https://images.unsplash.com/photo-1579305796288-c534f6cf17ab?ixlib=rb-4.1.0&ixid=M3wxMjA3fDB8MHxzZWFyY2h8MTR8fG1lY2NhJTIwa2FhYmF8ZW58MHx8MHx8fDA%3D&fm=jpg&q=60&w=3000"
|
|
|
alt="IslamicBg"
|
|
|
class="hero-slide object-center"
|
|
|
/>
|
|
|
|
|
|
<img
|
|
|
src="https://www.worldfinance.com/wp-content/uploads/2015/01/Etiqa-Insurance.jpg"
|
|
|
alt="InsuranceBg"
|
|
|
class="hero-slide object-top"
|
|
|
/>
|
|
|
</div>
|
|
|
|
|
|
|
|
|
<div class="absolute inset-0 bg-black/65 z-10"></div>
|
|
|
|
|
|
|
|
|
<div class="relative z-20 px-4 animate-fade-in">
|
|
|
<h1
|
|
|
class="text-4xl font-extrabold tracking-tight sm:text-5xl md:text-6xl"
|
|
|
>
|
|
|
<span class="block">Multimodal Swarm-Based RAG</span>
|
|
|
<span class="block text-blue-400 mt-2">for Domains Specific</span>
|
|
|
</h1>
|
|
|
<p
|
|
|
class="mt-4 max-w-2xl mx-auto text-lg text-gray-200 sm:text-xl md:mt-6"
|
|
|
>
|
|
|
A versatile, multi-agent system combining text and images to provide
|
|
|
deep, accurate, and context-aware information for a wide range of
|
|
|
fields.
|
|
|
</p>
|
|
|
<div class="mt-8 flex justify-center gap-4">
|
|
|
<a
|
|
|
href="{{ url_for('medical_page') }}"
|
|
|
class="px-8 py-3 border border-transparent text-base font-medium rounded-md text-white bg-blue-700 hover:bg-blue-800 md:text-lg transition-transform transform hover:scale-105"
|
|
|
>
|
|
|
Get Started
|
|
|
</a>
|
|
|
<a
|
|
|
href="{{ url_for('about') }}"
|
|
|
class="px-8 py-3 border border-transparent text-base font-medium rounded-md text-primary bg-primary hover:bg-blue-200 hover:text-blue-800 md:text-lg transition-transform transform hover:scale-105"
|
|
|
>
|
|
|
Learn More
|
|
|
</a>
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
|
|
|
|
|
|
<div id="domains" class="py-16 bg-white dark:bg-dark-900">
|
|
|
<div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
|
|
|
<div class="lg:text-center">
|
|
|
<h2
|
|
|
class="text-base text-primary-light dark:text-primary-dark font-semibold tracking-wide uppercase"
|
|
|
>
|
|
|
Domains
|
|
|
</h2>
|
|
|
<p
|
|
|
class="mt-2 text-3xl leading-8 font-extrabold tracking-tight text-gray-900 dark:text-white sm:text-4xl"
|
|
|
>
|
|
|
Multiple Fields of Expertise
|
|
|
</p>
|
|
|
<p
|
|
|
class="mt-4 max-w-3xl text-xl text-gray-500 dark:text-gray-400 lg:mx-auto"
|
|
|
>
|
|
|
Our RAG system is trained to navigate the unique terminologies and
|
|
|
complex data of distinct, high-stakes domains. Click any domain to
|
|
|
try the demo.
|
|
|
</p>
|
|
|
</div>
|
|
|
|
|
|
<div class="mt-16 grid grid-cols-1 md:grid-cols-3 gap-20">
|
|
|
|
|
|
<a
|
|
|
href="{{ url_for('medical_page') }}"
|
|
|
class="block rounded-lg shadow-lg bg-white dark:bg-dark-800 overflow-hidden transition-all duration-300 ease-in-out hover:shadow-2xl hover:shadow-primary-light/20 dark:hover:shadow-primary-dark/20 hover:-translate-y-2"
|
|
|
>
|
|
|
<img
|
|
|
class="w-full h-48 object-cover"
|
|
|
src="https://www.malaymail.com/malaymail/uploads/images/2023/09/05/144179.jpg"
|
|
|
alt="Medical Domain"
|
|
|
/>
|
|
|
<div class="p-6">
|
|
|
<div class="flex items-center space-x-3">
|
|
|
<i
|
|
|
class="fa-solid fa-heart-pulse text-2xl text-primary-light dark:text-primary-dark"
|
|
|
></i>
|
|
|
<h3 class="text-xl font-semibold text-gray-900 dark:text-white">
|
|
|
Medical
|
|
|
</h3>
|
|
|
</div>
|
|
|
<p class="mt-3 text-base text-gray-500 dark:text-gray-400">
|
|
|
Analyze medical records, and diagnostic images with high
|
|
|
accuracy.
|
|
|
</p>
|
|
|
</div>
|
|
|
</a>
|
|
|
|
|
|
|
|
|
<a
|
|
|
href="{{ url_for('islamic_page') }}"
|
|
|
class="block rounded-lg shadow-lg bg-white dark:bg-dark-800 overflow-hidden transition-all duration-300 ease-in-out hover:shadow-2xl hover:shadow-accent-light/20 dark:hover:shadow-accent-dark/20 hover:-translate-y-2"
|
|
|
>
|
|
|
<img
|
|
|
class="w-full h-48 object-cover"
|
|
|
src="https://alwisequranacademy.com/wp-content/uploads/2025/09/Quran-reading-classes-in-Malaysia.jpg"
|
|
|
alt="Islamic Domain"
|
|
|
/>
|
|
|
<div class="p-6">
|
|
|
<div class="flex items-center space-x-3">
|
|
|
<i
|
|
|
class="fa-solid fa-moon text-2xl text-accent-light dark:text-accent-dark"
|
|
|
></i>
|
|
|
<h3 class="text-xl font-semibold text-gray-900 dark:text-white">
|
|
|
Islamic
|
|
|
</h3>
|
|
|
</div>
|
|
|
<p class="mt-3 text-base text-gray-500 dark:text-gray-400">
|
|
|
Retrieve and synthesize knowledge from vast libraries of
|
|
|
historical texts and scholarly interpretations.
|
|
|
</p>
|
|
|
</div>
|
|
|
</a>
|
|
|
|
|
|
|
|
|
<a
|
|
|
href="{{ url_for('insurance_page') }}"
|
|
|
class="block rounded-lg shadow-lg bg-white dark:bg-dark-800 overflow-hidden transition-all duration-300 ease-in-out hover:shadow-2xl hover:shadow-secondary-light/20 dark:hover:shadow-secondary-dark/20 hover:-translate-y-2"
|
|
|
>
|
|
|
<img
|
|
|
class="w-full h-48 object-bottom"
|
|
|
src="https://theedgemalaysia.com/_next/image?url=https%3A%2F%2Fassets.theedgemarkets.com%2FEtiqa_TEM1464_20230321165006_theedgemarkets.jpg&w=1920&q=75"
|
|
|
alt="Insurance Domain"
|
|
|
/>
|
|
|
<div class="p-6">
|
|
|
<div class="flex items-center space-x-3">
|
|
|
<i
|
|
|
class="fa-solid fa-shield-halved text-2xl text-amber-400 dark:text-amber-400"
|
|
|
></i>
|
|
|
<h3 class="text-xl font-semibold text-gray-900 dark:text-white">
|
|
|
Insurance
|
|
|
</h3>
|
|
|
</div>
|
|
|
<p class="mt-3 text-base text-gray-500 dark:text-gray-400">
|
|
|
Process claims, analyze policy documents, and assess risk with
|
|
|
multimodal data inputs.
|
|
|
</p>
|
|
|
</div>
|
|
|
</a>
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
|
|
|
|
|
|
<div
|
|
|
id="features"
|
|
|
class="sm:text-center py-12 bg-gray-100 dark:bg-dark-800"
|
|
|
>
|
|
|
<div class="sm:text-center max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
|
|
|
<div class="lg:text-center">
|
|
|
<h2
|
|
|
class="text-base text-primary-light dark:text-primary-dark font-semibold tracking-wide uppercase"
|
|
|
>
|
|
|
Features
|
|
|
</h2>
|
|
|
<p
|
|
|
class="mt-2 text-3xl leading-8 font-extrabold tracking-tight text-gray-900 dark:text-white sm:text-4xl"
|
|
|
>
|
|
|
Advanced Information Retrieval System
|
|
|
</p>
|
|
|
<p
|
|
|
class="mt-4 max-w-2xl text-xl text-gray-500 dark:text-gray-400 lg:mx-auto"
|
|
|
>
|
|
|
Our system combines cutting-edge technologies to deliver
|
|
|
comprehensive insights across all fields.
|
|
|
</p>
|
|
|
</div>
|
|
|
|
|
|
<div class="mt-10">
|
|
|
<div
|
|
|
class="space-y-5"
|
|
|
>
|
|
|
<div
|
|
|
class="relative card-hover bg-white dark:bg-dark-700 p-6 rounded-lg shadow-lg feature-card"
|
|
|
>
|
|
|
<div
|
|
|
class="absolute -top-6 left-6 rounded-full p-4 bg-primary-light dark:bg-primary-dark text-white feature-icon animate-float"
|
|
|
>
|
|
|
<i class="fas fa-robot text-xl"></i>
|
|
|
</div>
|
|
|
<h3
|
|
|
class="mt-2 text-xl leading-6 font-medium text-gray-900 dark:text-white"
|
|
|
>
|
|
|
Swarm-Based Multi-Agent System
|
|
|
</h3>
|
|
|
<p class="mt-2 text-base text-gray-500 dark:text-gray-400">
|
|
|
Specialized agents collaboratively query diverse knowledge
|
|
|
bases from medical databases to classical Islamic texts to
|
|
|
retrieve and synthesize the most relevant information.
|
|
|
</p>
|
|
|
</div>
|
|
|
|
|
|
<div
|
|
|
class="relative card-hover bg-white dark:bg-dark-700 p-6 rounded-lg shadow-lg feature-card"
|
|
|
>
|
|
|
<div
|
|
|
class="absolute -top-6 left-6 rounded-full p-4 bg-secondary-light dark:bg-secondary-dark text-white feature-icon animate-float"
|
|
|
style="animation-delay: 1s"
|
|
|
>
|
|
|
<i class="fas fa-images text-xl animate-wiggle"></i>
|
|
|
</div>
|
|
|
<h3
|
|
|
class="mt-2 text-xl leading-6 font-medium text-gray-900 dark:text-white"
|
|
|
>
|
|
|
Multimodal Integration
|
|
|
</h3>
|
|
|
<p class="mt-2 text-base text-gray-500 dark:text-gray-400">
|
|
|
Processes both textual and visual data, including research
|
|
|
papers, notes, image, and documents for comprehensive
|
|
|
analysis.
|
|
|
</p>
|
|
|
</div>
|
|
|
|
|
|
<div
|
|
|
class="relative card-hover bg-white dark:bg-dark-700 p-6 rounded-lg shadow-lg feature-card"
|
|
|
>
|
|
|
<div
|
|
|
class="absolute -top-6 left-6 rounded-full p-4 bg-accent-light dark:bg-accent-dark text-white feature-icon animate-float"
|
|
|
style="animation-delay: 2s"
|
|
|
>
|
|
|
<i class="fas fa-book-medical text-xl animate-wave"></i>
|
|
|
</div>
|
|
|
<h3
|
|
|
class="mt-2 text-xl leading-6 font-medium text-gray-900 dark:text-white"
|
|
|
>
|
|
|
Retrieval-Augmented Generation
|
|
|
</h3>
|
|
|
<p class="mt-2 text-base text-gray-500 dark:text-gray-400">
|
|
|
Combines information retrieval with generative AI to provide
|
|
|
accurate, context-aware answers with verifiable citations
|
|
|
from both medical journals and scholarly Islamic sources.
|
|
|
</p>
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
|
|
|
|
|
|
<div class="sm:text-center py-12 bg-gray-50 dark:bg-dark-900">
|
|
|
<div class="sm:text-center max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
|
|
|
<div class="lg:text-center">
|
|
|
<h2
|
|
|
class="text-base text-primary-light dark:text-primary-dark font-semibold tracking-wide uppercase"
|
|
|
>
|
|
|
Technology Stack
|
|
|
</h2>
|
|
|
<p
|
|
|
class="mt-2 text-3xl leading-8 font-extrabold tracking-tight text-gray-900 dark:text-white sm:text-4xl"
|
|
|
>
|
|
|
Powered by Cutting-Edge Technologies
|
|
|
</p>
|
|
|
</div>
|
|
|
|
|
|
<div class="mt-10 grid grid-cols-2 gap-8 md:grid-cols-4">
|
|
|
<div class="col-span-1 flex justify-center">
|
|
|
<div class="flex items-center">
|
|
|
<i
|
|
|
class="fab fa-python text-5xl text-blue-500 mr-3 animate-float"
|
|
|
style="animation-delay: 0s"
|
|
|
></i>
|
|
|
<span class="text-lg font-medium text-gray-900 dark:text-white"
|
|
|
>Flask</span
|
|
|
>
|
|
|
</div>
|
|
|
</div>
|
|
|
<div class="col-span-1 flex justify-center">
|
|
|
<div class="flex items-center">
|
|
|
<i
|
|
|
class="fa-solid fa-users-between-lines text-5xl text-purple-500 mr-3 animate-float"
|
|
|
style="animation-delay: 0.5s"
|
|
|
></i>
|
|
|
<span class="text-lg font-medium text-gray-900 dark:text-white"
|
|
|
>Swarm-Based Agent</span
|
|
|
>
|
|
|
</div>
|
|
|
</div>
|
|
|
<div class="col-span-1 flex justify-center">
|
|
|
<div class="flex items-center">
|
|
|
<i
|
|
|
class="fas fa-database text-5xl text-green-500 mr-3 animate-float"
|
|
|
style="animation-delay: 1s"
|
|
|
></i>
|
|
|
<span class="text-lg font-medium text-gray-900 dark:text-white"
|
|
|
>ChromaDB</span
|
|
|
>
|
|
|
</div>
|
|
|
</div>
|
|
|
<div class="col-span-1 flex justify-center">
|
|
|
<div class="flex items-center">
|
|
|
<i
|
|
|
class="fas fa-robot text-5xl text-red-500 mr-3 animate-float"
|
|
|
style="animation-delay: 1.5s"
|
|
|
></i>
|
|
|
<span class="text-lg font-medium text-gray-900 dark:text-white"
|
|
|
>Gemini</span
|
|
|
>
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
|
|
|
|
|
|
<div
|
|
|
class="scroll-indicator ripple"
|
|
|
onclick="window.scrollTo({top: 0, behavior: 'smooth'})"
|
|
|
>
|
|
|
<i class="fas fa-arrow-up"></i>
|
|
|
</div>
|
|
|
|
|
|
<script>
|
|
|
|
|
|
const themeToggle = document.getElementById("theme-toggle");
|
|
|
const html = document.documentElement;
|
|
|
|
|
|
themeToggle.addEventListener("click", () => {
|
|
|
html.classList.toggle("dark");
|
|
|
localStorage.setItem(
|
|
|
"theme",
|
|
|
html.classList.contains("dark") ? "dark" : "light"
|
|
|
);
|
|
|
});
|
|
|
|
|
|
|
|
|
if (
|
|
|
localStorage.getItem("theme") === "dark" ||
|
|
|
(!localStorage.getItem("theme") &&
|
|
|
window.matchMedia("(prefers-color-scheme: dark)").matches)
|
|
|
) {
|
|
|
html.classList.add("dark");
|
|
|
} else {
|
|
|
html.classList.remove("dark");
|
|
|
}
|
|
|
|
|
|
|
|
|
document.addEventListener("DOMContentLoaded", () => {
|
|
|
const heroSection = document.querySelector(
|
|
|
".lg\\:absolute.lg\\:inset-y-0.lg\\:right-0.lg\\:w-1\\/2"
|
|
|
);
|
|
|
if (heroSection) {
|
|
|
for (let i = 0; i < 10; i++) {
|
|
|
const particle = document.createElement("div");
|
|
|
particle.className = "swarm-particle";
|
|
|
particle.style.width = `${Math.random() * 6 + 2}px`;
|
|
|
particle.style.height = particle.style.width;
|
|
|
particle.style.top = `${Math.random() * 100}%`;
|
|
|
particle.style.left = `${Math.random() * 100}%`;
|
|
|
particle.style.animationDelay = `${Math.random() * 10}s`;
|
|
|
|
|
|
|
|
|
const colors = [
|
|
|
"bg-primary-light",
|
|
|
"bg-secondary-light",
|
|
|
"bg-accent-light",
|
|
|
"bg-primary-dark",
|
|
|
"bg-secondary-dark",
|
|
|
"bg-accent-dark",
|
|
|
];
|
|
|
const color = colors[Math.floor(Math.random() * colors.length)];
|
|
|
particle.classList.add(color);
|
|
|
|
|
|
heroSection.appendChild(particle);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
|
|
|
window.addEventListener("scroll", () => {
|
|
|
const scrollTop =
|
|
|
document.documentElement.scrollTop || document.body.scrollTop;
|
|
|
const scrollHeight =
|
|
|
document.documentElement.scrollHeight -
|
|
|
document.documentElement.clientHeight;
|
|
|
const scrollProgress = (scrollTop / scrollHeight) * 100;
|
|
|
document.querySelector(".scroll-progress").style.width =
|
|
|
scrollProgress + "%";
|
|
|
|
|
|
|
|
|
const scrollIndicator = document.querySelector(".scroll-indicator");
|
|
|
if (scrollTop > 300) {
|
|
|
scrollIndicator.classList.add("visible");
|
|
|
} else {
|
|
|
scrollIndicator.classList.remove("visible");
|
|
|
}
|
|
|
|
|
|
|
|
|
const timelineProgress = Math.min(scrollTop / 3000, 1) * 100;
|
|
|
document.querySelector(".progress-bar").style.width =
|
|
|
timelineProgress + "%";
|
|
|
});
|
|
|
|
|
|
|
|
|
document.querySelectorAll(".ripple").forEach((button) => {
|
|
|
button.addEventListener("click", function (e) {
|
|
|
const rect = this.getBoundingClientRect();
|
|
|
const x = e.clientX - rect.left;
|
|
|
const y = e.clientY - rect.top;
|
|
|
|
|
|
const ripple = document.createElement("span");
|
|
|
ripple.className = "ripple-effect";
|
|
|
ripple.style.left = x + "px";
|
|
|
ripple.style.top = y + "px";
|
|
|
|
|
|
this.appendChild(ripple);
|
|
|
|
|
|
setTimeout(() => {
|
|
|
ripple.remove();
|
|
|
}, 600);
|
|
|
});
|
|
|
});
|
|
|
|
|
|
|
|
|
document
|
|
|
.querySelector('button[class*="Try Demo"]')
|
|
|
.addEventListener("click", function () {
|
|
|
for (let i = 0; i < 50; i++) {
|
|
|
const confetti = document.createElement("div");
|
|
|
confetti.className = "confetti";
|
|
|
confetti.style.left = Math.random() * 100 + "vw";
|
|
|
confetti.style.backgroundColor = `hsl(${
|
|
|
Math.random() * 360
|
|
|
}, 100%, 50%)`;
|
|
|
confetti.style.animationDuration = Math.random() * 3 + 2 + "s";
|
|
|
document.body.appendChild(confetti);
|
|
|
|
|
|
setTimeout(() => {
|
|
|
confetti.remove();
|
|
|
}, 5000);
|
|
|
}
|
|
|
});
|
|
|
|
|
|
|
|
|
document
|
|
|
.querySelectorAll(".floating-label input, .floating-label textarea")
|
|
|
.forEach((input) => {
|
|
|
input.addEventListener("focus", () => {
|
|
|
input.nextElementSibling.classList.add("active");
|
|
|
});
|
|
|
|
|
|
input.addEventListener("blur", () => {
|
|
|
if (!input.value) {
|
|
|
input.nextElementSibling.classList.remove("active");
|
|
|
}
|
|
|
});
|
|
|
|
|
|
|
|
|
if (input.value) {
|
|
|
input.nextElementSibling.classList.add("active");
|
|
|
}
|
|
|
});
|
|
|
|
|
|
|
|
|
const contactDarkMode = document.getElementById("contact-dark-mode");
|
|
|
contactDarkMode.addEventListener("change", () => {
|
|
|
const contactSection = document.getElementById("contact");
|
|
|
if (contactDarkMode.checked) {
|
|
|
contactSection.classList.add("dark");
|
|
|
} else {
|
|
|
contactSection.classList.remove("dark");
|
|
|
}
|
|
|
});
|
|
|
});
|
|
|
</script>
|
|
|
<script>
|
|
|
document.addEventListener("DOMContentLoaded", function () {
|
|
|
const slideshow = document.getElementById("hero-slideshow");
|
|
|
const slides = slideshow.querySelectorAll(".hero-slide");
|
|
|
let currentSlide = 0;
|
|
|
|
|
|
function showNextSlide() {
|
|
|
slides[currentSlide].classList.remove("active");
|
|
|
currentSlide = (currentSlide + 1) % slides.length;
|
|
|
slides[currentSlide].classList.add("active");
|
|
|
}
|
|
|
|
|
|
|
|
|
setInterval(showNextSlide, 3000);
|
|
|
});
|
|
|
</script>
|
|
|
</body>
|
|
|
</html>
|
|
|
|