Spaces:
Sleeping
Sleeping
Upload 32 files
Browse files- .env +2 -0
- Dockerfile +14 -0
- main.py +97 -0
- requirements.txt +11 -0
- static/css/main.css +825 -0
- static/css/utilities.css +155 -0
- static/images/arrow-down.svg +3 -0
- static/images/article-img-1.png +0 -0
- static/images/article-img-2.png +0 -0
- static/images/article-img-3.png +0 -0
- static/images/banner-image.png +0 -0
- static/images/curve-shape-1.png +0 -0
- static/images/curve-shape-2.png +0 -0
- static/images/download-image.png +0 -0
- static/images/element-img-1.png +0 -0
- static/images/element-img-2.png +0 -0
- static/images/element-img-3.png +0 -0
- static/images/element-img-4.png +0 -0
- static/images/element-img-5.png +0 -0
- static/images/health-care-img.png +0 -0
- static/images/person-image.png +0 -0
- static/images/service-icon-1.png +0 -0
- static/images/service-icon-2.png +0 -0
- static/images/service-icon-3.png +0 -0
- static/images/service-icon-4.png +0 -0
- static/images/service-icon-5.png +0 -0
- static/images/service-icon-6.png +0 -0
- static/js/script.js +30 -0
- templates/index.html +495 -0
- templates/med_chatbot.html +562 -0
- templates/skin_disease_identification.html +39 -0
- templates/style.css +279 -0
.env
ADDED
@@ -0,0 +1,2 @@
|
|
|
|
|
|
|
1 |
+
GOOGLE_API_KEY="AIzaSyAyLLDdmALH6qrLa7gnnNX4vRWWx2zB1m8"
|
2 |
+
PINECONE_API_KEY="996d2b6e-9968-46a8-a1ca-10fc647eb550"
|
Dockerfile
ADDED
@@ -0,0 +1,14 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
# read the doc: https://huggingface.co/docs/hub/spaces-sdks-docker
|
2 |
+
# you will also find guides on how best to write your Dockerfile
|
3 |
+
|
4 |
+
FROM python:3.9
|
5 |
+
|
6 |
+
WORKDIR /code
|
7 |
+
|
8 |
+
COPY ./requirements.txt /code/requirements.txt
|
9 |
+
|
10 |
+
RUN pip install --no-cache-dir --upgrade -r /code/requirements.txt
|
11 |
+
|
12 |
+
COPY . .
|
13 |
+
|
14 |
+
CMD ["gunicorn", "-b", "0.0.0.0:7860", "main:app"]
|
main.py
ADDED
@@ -0,0 +1,97 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
from flask import Flask, request, render_template, jsonify
|
2 |
+
import google.generativeai as genai
|
3 |
+
from langchain_google_genai import GoogleGenerativeAIEmbeddings, ChatGoogleGenerativeAI
|
4 |
+
from langchain.prompts import PromptTemplate
|
5 |
+
from dotenv import load_dotenv
|
6 |
+
from langchain_pinecone import PineconeVectorStore
|
7 |
+
import os
|
8 |
+
|
9 |
+
load_dotenv()
|
10 |
+
genai.configure(api_key=os.getenv("GOOGLE_API_KEY"))
|
11 |
+
|
12 |
+
app = Flask(__name__)
|
13 |
+
|
14 |
+
@app.route('/')
|
15 |
+
def index():
|
16 |
+
return render_template('index.html')
|
17 |
+
|
18 |
+
@app.route('/chatbot')
|
19 |
+
def chatbot():
|
20 |
+
return render_template('med_chatbot.html')
|
21 |
+
|
22 |
+
@app.route('/identification')
|
23 |
+
def identification():
|
24 |
+
return render_template('skin_disease_identification.html')
|
25 |
+
|
26 |
+
|
27 |
+
@app.route('/get', methods=['POST'])
|
28 |
+
def get_response():
|
29 |
+
user_question = request.form['msg'] # Get the user's message from the form data
|
30 |
+
response = user_input(user_question) # Get the response from the bot
|
31 |
+
return jsonify({'response': response}) # Send the response back to the client
|
32 |
+
|
33 |
+
def user_input(user_question):
|
34 |
+
embeddings = GoogleGenerativeAIEmbeddings(model="models/embedding-001")
|
35 |
+
index_name = "medicalchatbot2"
|
36 |
+
vectorstore = PineconeVectorStore(index_name=index_name, embedding=embeddings, namespace="example-namespace")
|
37 |
+
docs = vectorstore.similarity_search(user_question, namespace="example-namespace")
|
38 |
+
|
39 |
+
generation_config = {
|
40 |
+
"temperature": 1,
|
41 |
+
"top_p": 0.95,
|
42 |
+
"top_k": 0,
|
43 |
+
"max_output_tokens": 8192,
|
44 |
+
}
|
45 |
+
|
46 |
+
safety_settings = [
|
47 |
+
{
|
48 |
+
"category": "HARM_CATEGORY_HARASSMENT",
|
49 |
+
"threshold": "BLOCK_MEDIUM_AND_ABOVE"
|
50 |
+
},
|
51 |
+
{
|
52 |
+
"category": "HARM_CATEGORY_HATE_SPEECH",
|
53 |
+
"threshold": "BLOCK_MEDIUM_AND_ABOVE"
|
54 |
+
},
|
55 |
+
{
|
56 |
+
"category": "HARM_CATEGORY_SEXUALLY_EXPLICIT",
|
57 |
+
"threshold": "BLOCK_MEDIUM_AND_ABOVE"
|
58 |
+
},
|
59 |
+
{
|
60 |
+
"category": "HARM_CATEGORY_DANGEROUS_CONTENT",
|
61 |
+
"threshold": "BLOCK_MEDIUM_AND_ABOVE"
|
62 |
+
},
|
63 |
+
]
|
64 |
+
|
65 |
+
model = genai.GenerativeModel(model_name="gemini-1.5-pro-latest",
|
66 |
+
generation_config=generation_config,
|
67 |
+
safety_settings=safety_settings)
|
68 |
+
|
69 |
+
prompt_template = """
|
70 |
+
you are a Medical Assistant. If user writes name of the disease, then explain the symptoms and treatment for that disease. Answer the question as detailed as possible, make sure to provide all the details, if the answer is not in provided context then create an answer by yourself that makes sense. give the answer point wise.\n\n
|
71 |
+
Context:\n {context}?\n
|
72 |
+
Question: \n{question}\n
|
73 |
+
Answer:
|
74 |
+
"""
|
75 |
+
|
76 |
+
prompt = PromptTemplate(template=prompt_template, input_variables=["context", "question"])
|
77 |
+
|
78 |
+
convo = model.start_chat(history=[
|
79 |
+
{
|
80 |
+
"role": "user",
|
81 |
+
"parts": ["I am writing an initial prompt. read it carefully. I am deploying you in medical chatbot. you have to act as a medical assistant. your next question will be asked by a user related to medical information. help the user identify the disease based on his symptoms. give him treatment suggestions. and other relevant information. now when you give the response, do not use any title or header or bold letters. just use line spaces. all the best."]
|
82 |
+
},
|
83 |
+
{
|
84 |
+
"role": "model",
|
85 |
+
"parts": ["sounds good! i'm ready to assist users with their medical concerns. just provide me with the user's symptoms and i'll do my best to help diagnose the issue, suggest treatments, and offer relevant information. remember, i'm only an AI assistant, so it's crucial for users to consult with a qualified healthcare professional for a proper diagnosis and treatment plan."]
|
86 |
+
},
|
87 |
+
])
|
88 |
+
|
89 |
+
response = convo.send_message(user_question)
|
90 |
+
response_text = convo.last.text # Extract the text from the ChatSession object
|
91 |
+
return response_text
|
92 |
+
|
93 |
+
def main():
|
94 |
+
app.run(debug=True)
|
95 |
+
|
96 |
+
if __name__ == "__main__":
|
97 |
+
main()
|
requirements.txt
ADDED
@@ -0,0 +1,11 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
streamlit
|
2 |
+
google-generativeai
|
3 |
+
python-dotenv
|
4 |
+
langchain
|
5 |
+
PyPDF2
|
6 |
+
chromadb
|
7 |
+
faiss-cpu
|
8 |
+
langchain_google_genai
|
9 |
+
flask
|
10 |
+
langchain_pinecone
|
11 |
+
gunicorn
|
static/css/main.css
ADDED
@@ -0,0 +1,825 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
@import url('https://fonts.googleapis.com/css2?family=Mulish:ital,wght@0,200;0,300;0,400;0,500;0,600;0,700;0,800;0,900;0,1000;1,200;1,300;1,400;1,500;1,600;1,700;1,800;1,900;1,1000&display=swap');
|
2 |
+
|
3 |
+
|
4 |
+
:root{
|
5 |
+
--clr-blue: #458ff6;
|
6 |
+
--clr-black: #000;
|
7 |
+
--clr-white: #fff;
|
8 |
+
--clr-gray: #7d7987;
|
9 |
+
--clr-dark-blue: #233348;
|
10 |
+
--clr-dark-purple: #1f1534;
|
11 |
+
--font-family-mulish: 'Mulish', sans-serif;
|
12 |
+
--transition-default: all 300ms ease-in-out;
|
13 |
+
}
|
14 |
+
|
15 |
+
html{
|
16 |
+
scroll-behavior: smooth;
|
17 |
+
-moz-osx-font-smoothing: grayscale;
|
18 |
+
-webkit-font-smoothing: antialiased;
|
19 |
+
text-rendering: optimizeLegibility;
|
20 |
+
-webkit-text-size-adjust: 100%;
|
21 |
+
}
|
22 |
+
|
23 |
+
/* some resets & configuration */
|
24 |
+
*,
|
25 |
+
*::before,
|
26 |
+
*::after{
|
27 |
+
box-sizing: border-box;
|
28 |
+
margin: 0;
|
29 |
+
padding: 0;
|
30 |
+
}
|
31 |
+
|
32 |
+
ul, ol{
|
33 |
+
list-style-type: none;
|
34 |
+
}
|
35 |
+
a{
|
36 |
+
text-decoration: none;
|
37 |
+
color: unset;
|
38 |
+
transition: var(--transition-default);
|
39 |
+
}
|
40 |
+
|
41 |
+
a:focus, a:hover{
|
42 |
+
color: unset;
|
43 |
+
}
|
44 |
+
|
45 |
+
img, picture, video, canvas, svg{
|
46 |
+
max-width: 100%;
|
47 |
+
display: block;
|
48 |
+
}
|
49 |
+
input, button, textarea, select{
|
50 |
+
font: inherit;
|
51 |
+
outline: 0;
|
52 |
+
}
|
53 |
+
h1, h2, h3, h4, h5, h6{
|
54 |
+
overflow-wrap: break-word;
|
55 |
+
}
|
56 |
+
textarea{
|
57 |
+
resize: none;
|
58 |
+
}
|
59 |
+
img, object, embed, video{
|
60 |
+
max-width: 100%;
|
61 |
+
}
|
62 |
+
|
63 |
+
body{
|
64 |
+
font-family: var(--font-family-mulish);
|
65 |
+
line-height: 1.6;
|
66 |
+
height: 100%;
|
67 |
+
font-weight: 300;
|
68 |
+
}
|
69 |
+
|
70 |
+
button{
|
71 |
+
background-color: transparent;
|
72 |
+
border: none;
|
73 |
+
cursor: pointer;
|
74 |
+
}
|
75 |
+
.page-wrapper{
|
76 |
+
overflow: hidden!important;
|
77 |
+
}
|
78 |
+
|
79 |
+
/* header section & navbar */
|
80 |
+
.header{
|
81 |
+
position: relative;
|
82 |
+
min-height: 100vh;
|
83 |
+
background-color: var(--clr-blue);
|
84 |
+
}
|
85 |
+
.header *{
|
86 |
+
color: var(--clr-white);
|
87 |
+
}
|
88 |
+
.navbar{
|
89 |
+
padding: 56px 0 80px 0;
|
90 |
+
}
|
91 |
+
.brand-and-toggler{
|
92 |
+
width: 100%;
|
93 |
+
}
|
94 |
+
.navbar-content{
|
95 |
+
height: 41px;
|
96 |
+
}
|
97 |
+
.navbar-brand .brand-shape{
|
98 |
+
width: 41px;
|
99 |
+
height: 41px;
|
100 |
+
border-radius: 50%;
|
101 |
+
background-color: var(--clr-white);
|
102 |
+
font-size: 26px;
|
103 |
+
display: flex;
|
104 |
+
align-items: center;
|
105 |
+
justify-content: center;
|
106 |
+
font-weight: 700;
|
107 |
+
margin-right: 12px;
|
108 |
+
color: var(--clr-blue);
|
109 |
+
}
|
110 |
+
|
111 |
+
.navbar-brand .brand-text{
|
112 |
+
color: var(--clr-white);
|
113 |
+
font-size: 24px;
|
114 |
+
}
|
115 |
+
.nav-item{
|
116 |
+
margin-left: 40px;
|
117 |
+
}
|
118 |
+
.nav-link{
|
119 |
+
font-weight: 400;
|
120 |
+
font-size: 18px;
|
121 |
+
}
|
122 |
+
.nav-link:hover{
|
123 |
+
opacity: 0.9;
|
124 |
+
}
|
125 |
+
.nav-link.nav-active{
|
126 |
+
position: relative;
|
127 |
+
color: var(--clr-white);
|
128 |
+
font-weight: 700;
|
129 |
+
opacity: 1;
|
130 |
+
}
|
131 |
+
.nav-link.nav-active::after{
|
132 |
+
content: "";
|
133 |
+
position: absolute;
|
134 |
+
bottom: -7px;
|
135 |
+
left: 0;
|
136 |
+
width: 100%;
|
137 |
+
height: 2px;
|
138 |
+
background-color: var(--clr-white);
|
139 |
+
}
|
140 |
+
.navbar-show-btn{
|
141 |
+
font-size: 24px;
|
142 |
+
cursor: pointer;
|
143 |
+
}
|
144 |
+
|
145 |
+
.navbar-hide-btn{
|
146 |
+
display: none;
|
147 |
+
cursor: pointer;
|
148 |
+
transition: var(--transition-default);
|
149 |
+
}
|
150 |
+
.navbar-hide-btn:hover{
|
151 |
+
opacity: 0.8;
|
152 |
+
}
|
153 |
+
.element-one{
|
154 |
+
position: absolute;
|
155 |
+
top: calc(56px + 41px + 63px);
|
156 |
+
left: 0;
|
157 |
+
}
|
158 |
+
.element-one img{
|
159 |
+
width: 60px;
|
160 |
+
}
|
161 |
+
|
162 |
+
/* banner */
|
163 |
+
.banner-title{
|
164 |
+
font-size: 48px;
|
165 |
+
line-height: 1.166;
|
166 |
+
}
|
167 |
+
.banner-content{
|
168 |
+
display: grid;
|
169 |
+
column-gap: 78px;
|
170 |
+
grid-template-columns: repeat(2, 1fr);
|
171 |
+
align-items: center;
|
172 |
+
}
|
173 |
+
.banner-left .content-wrapper{
|
174 |
+
max-width: 445px;
|
175 |
+
margin-left: auto;
|
176 |
+
}
|
177 |
+
.banner-left .content-wrapper p{
|
178 |
+
max-width: 340px;
|
179 |
+
}
|
180 |
+
.banner-left .text{
|
181 |
+
margin-top: 25px;
|
182 |
+
margin-bottom: 45px;
|
183 |
+
}
|
184 |
+
|
185 |
+
/* services */
|
186 |
+
.sc-services{
|
187 |
+
padding-top: 179px;
|
188 |
+
padding-bottom: 115.9px;
|
189 |
+
position: relative;
|
190 |
+
overflow: hidden;
|
191 |
+
}
|
192 |
+
.sc-services .content-wrapper{
|
193 |
+
max-width: 670px;
|
194 |
+
margin-right: auto;
|
195 |
+
margin-left: auto;
|
196 |
+
}
|
197 |
+
.sc-services .content-wrapper .text{
|
198 |
+
line-height: 1.6667;
|
199 |
+
}
|
200 |
+
.services-list{
|
201 |
+
margin-top: calc(83px - 18.5px);
|
202 |
+
margin-bottom: -18.5px;
|
203 |
+
margin-right: -18.5px;
|
204 |
+
margin-left: -18.5px;
|
205 |
+
display: flex;
|
206 |
+
flex-wrap: wrap;
|
207 |
+
}
|
208 |
+
.services-item{
|
209 |
+
box-shadow: 10px 40px 50px 0px #e5e9f666;
|
210 |
+
background-color: var(--clr-white);
|
211 |
+
border-radius: 20px;
|
212 |
+
width: 350px;
|
213 |
+
min-height: 354px;
|
214 |
+
padding: 46px 38px;
|
215 |
+
margin: 18.5px;
|
216 |
+
width: calc(33.3333% - 37px);
|
217 |
+
transition: var(--transition-default);
|
218 |
+
}
|
219 |
+
.services-item:hover{
|
220 |
+
box-shadow: rgba(0, 0, 0, 0.1) 0 20px 25px -5px, rgba(0, 0, 0, 0.04) 0 10px 10px -5px;
|
221 |
+
}
|
222 |
+
.services-item .item-title{
|
223 |
+
font-size: 24px;
|
224 |
+
margin-top: 22px;
|
225 |
+
margin-bottom: 12px;
|
226 |
+
}
|
227 |
+
.services-shape{
|
228 |
+
position: absolute;
|
229 |
+
z-index: -1;
|
230 |
+
top: 290px;
|
231 |
+
left: -70px;
|
232 |
+
}
|
233 |
+
.services-main-btn{
|
234 |
+
margin-top: 69px;
|
235 |
+
}
|
236 |
+
|
237 |
+
/* grid block one */
|
238 |
+
.grid-content .content-wrapper{
|
239 |
+
max-width: 360px;
|
240 |
+
}
|
241 |
+
.grid-content{
|
242 |
+
grid-template-columns: repeat(2, 1fr);
|
243 |
+
column-gap: 137px;
|
244 |
+
}
|
245 |
+
.grid-content .title-box .title-separator{
|
246 |
+
margin-left: 0;
|
247 |
+
margin-top: 26px;
|
248 |
+
}
|
249 |
+
.grid-content .text{
|
250 |
+
line-height: 1.667;
|
251 |
+
}
|
252 |
+
.grid-content .btn{
|
253 |
+
margin-top: 37px;
|
254 |
+
}
|
255 |
+
|
256 |
+
/* grid one */
|
257 |
+
.sc-grid-one{
|
258 |
+
padding: 115.5px 0 114.5px 0;
|
259 |
+
background-color: var(--clr-blue);
|
260 |
+
}
|
261 |
+
.sc-grid-one .grid-content .title-box .title-separator{
|
262 |
+
background-color: var(--clr-white);
|
263 |
+
}
|
264 |
+
|
265 |
+
/* grid two */
|
266 |
+
.sc-grid-two{
|
267 |
+
padding: 114.5px 0 125px 0;
|
268 |
+
}
|
269 |
+
.sc-grid-two .grid-content .grid-img{
|
270 |
+
order: 2;
|
271 |
+
}
|
272 |
+
.sc-grid-two .grid-content .grid-text .content-wrapper{
|
273 |
+
max-width: 340px;
|
274 |
+
}
|
275 |
+
.sc-grid-two .btn:hover img{
|
276 |
+
filter: invert(100%) brightness(100);
|
277 |
+
}
|
278 |
+
.sc-grid-two .grid-content .grid-text{
|
279 |
+
margin-left: auto;
|
280 |
+
}
|
281 |
+
.sc-grid-two .btn img{
|
282 |
+
margin-left: 7px;
|
283 |
+
}
|
284 |
+
|
285 |
+
/* feedback section */
|
286 |
+
.sc-feedback{
|
287 |
+
padding: 125px 0 138px 0;
|
288 |
+
}
|
289 |
+
.feedback-content{
|
290 |
+
max-width: 1120px;
|
291 |
+
background: linear-gradient(208.18deg, #67c3f3 9.05%, #5a98f2 76.74%);
|
292 |
+
border-radius: 24px;
|
293 |
+
margin-right: auto;
|
294 |
+
margin-left: auto;
|
295 |
+
min-height: 425px;
|
296 |
+
position: relative;
|
297 |
+
}
|
298 |
+
.feedback-content .title-box{
|
299 |
+
padding-top: 61px;
|
300 |
+
}
|
301 |
+
.feedback-content .title-box .title-separator{
|
302 |
+
background-color: var(--clr-white);
|
303 |
+
}
|
304 |
+
.feedback-content .feedback-element{
|
305 |
+
position: absolute;
|
306 |
+
right: -50px;
|
307 |
+
top: -15px;
|
308 |
+
z-index: 1;
|
309 |
+
}
|
310 |
+
.feedback-content .feedback-element-2{
|
311 |
+
position: absolute;
|
312 |
+
bottom: 50px;
|
313 |
+
left: -52px;
|
314 |
+
z-index: -1;
|
315 |
+
}
|
316 |
+
.feedback-item .item-left .item-info{
|
317 |
+
margin-left: 29px;
|
318 |
+
}
|
319 |
+
.feedback-item{
|
320 |
+
padding: 66px 124px 86px;
|
321 |
+
align-items: center;
|
322 |
+
grid-template-columns: repeat(2, 1fr);
|
323 |
+
column-gap: 111px;
|
324 |
+
}
|
325 |
+
.feedback-item .item-img{
|
326 |
+
width: 141px;
|
327 |
+
height: 141px;
|
328 |
+
border-radius: 50%;
|
329 |
+
overflow: hidden;
|
330 |
+
border: 4px solid var(--clr-white);
|
331 |
+
}
|
332 |
+
.feedback-item .item-img img{
|
333 |
+
width: 100%;
|
334 |
+
height: 100%;
|
335 |
+
object-fit: cover;
|
336 |
+
object-position: 50%;
|
337 |
+
}
|
338 |
+
.feedback-item .item-info .name{
|
339 |
+
font-size: 22px;
|
340 |
+
}
|
341 |
+
.feedback-item .item-info .designation{
|
342 |
+
font-size: 18px;
|
343 |
+
}
|
344 |
+
.feedback-item .item-right{
|
345 |
+
max-width: 340px;
|
346 |
+
line-height: 1.57;
|
347 |
+
}
|
348 |
+
.feedback-list{
|
349 |
+
position: relative;
|
350 |
+
}
|
351 |
+
.feedback-list .owl-dots{
|
352 |
+
position: absolute;
|
353 |
+
left: 50%;
|
354 |
+
transform: translateX(-50%);
|
355 |
+
top: calc(100% + 40px);
|
356 |
+
}
|
357 |
+
.feedback-list .owl-dots .owl-dot span{
|
358 |
+
background-color: var(--clr-blue)!important;
|
359 |
+
opacity: 0.3;
|
360 |
+
}
|
361 |
+
.feedback-list .owl-dots .owl-dot:hover span{
|
362 |
+
background-color: var(--clr-blue)!important;
|
363 |
+
opacity: 1;
|
364 |
+
}
|
365 |
+
.feedback-list .owl-dots .owl-dot.active span{
|
366 |
+
opacity: 1;
|
367 |
+
}
|
368 |
+
.feedback-list .owl-nav{
|
369 |
+
position: absolute;
|
370 |
+
top: calc(100% + 24px);
|
371 |
+
left: 50%;
|
372 |
+
transform: translateX(-50%);
|
373 |
+
}
|
374 |
+
.feedback-list .owl-nav button:hover{
|
375 |
+
background-color:transparent!important;
|
376 |
+
color: var(--clr-blue)!important;
|
377 |
+
}
|
378 |
+
.feedback-list .owl-nav .owl-prev{
|
379 |
+
margin-right: 286px;
|
380 |
+
}
|
381 |
+
.feedback-list .owl-nav{
|
382 |
+
color: var(--clr-blue);
|
383 |
+
opacity: 1;
|
384 |
+
}
|
385 |
+
.feedback-list .owl-nav .disabled{
|
386 |
+
opacity: 0.3;
|
387 |
+
}
|
388 |
+
|
389 |
+
/* articles */
|
390 |
+
.sc-articles{
|
391 |
+
position: relative;
|
392 |
+
padding: 108px 0 64.5px 0;
|
393 |
+
}
|
394 |
+
.articles-item{
|
395 |
+
box-shadow: 10px 40px 50px 0px #e5e9f666;
|
396 |
+
border-radius: 20px;
|
397 |
+
background-color: var(--clr-white);
|
398 |
+
max-width: 350px;
|
399 |
+
}
|
400 |
+
.articles-list{
|
401 |
+
margin-right: -17px;
|
402 |
+
margin-left: -17px;
|
403 |
+
margin-top: 79px;
|
404 |
+
}
|
405 |
+
.articles-shape{
|
406 |
+
position: absolute;
|
407 |
+
right: 0;
|
408 |
+
top: 200px;
|
409 |
+
z-index: -1;
|
410 |
+
}
|
411 |
+
.articles-item{
|
412 |
+
width: calc(33.3333% - 34px);
|
413 |
+
overflow: hidden;
|
414 |
+
margin: 0 17px;
|
415 |
+
transition: var(--transition-default);
|
416 |
+
}
|
417 |
+
.articles-item:hover{
|
418 |
+
box-shadow: rgba(0, 0, 0, 0.1) 0px 20px 25px -5px, rgba(0, 0, 0, 0.04) 0px 10px 10px -5px;
|
419 |
+
}
|
420 |
+
.articles-item .item-img{
|
421 |
+
height: 246px;
|
422 |
+
overflow: hidden;
|
423 |
+
}
|
424 |
+
.articles-item .item-img img{
|
425 |
+
width: 100%;
|
426 |
+
height: 100%;
|
427 |
+
object-fit: cover;
|
428 |
+
}
|
429 |
+
.articles-item .item-body{
|
430 |
+
padding: 24px 33px 35px;
|
431 |
+
}
|
432 |
+
.articles-item .item-title{
|
433 |
+
font-weight: 700;
|
434 |
+
line-height: 1.52;
|
435 |
+
font-size: 21px;
|
436 |
+
margin-bottom: 12px;
|
437 |
+
}
|
438 |
+
.articles-item .text{
|
439 |
+
font-weight: 300;
|
440 |
+
font-size: 16px;
|
441 |
+
margin-bottom: 25px;
|
442 |
+
}
|
443 |
+
.articles-item .item-link-text{
|
444 |
+
font-weight: 600;
|
445 |
+
font-size: 17px;
|
446 |
+
}
|
447 |
+
.articles-item .item-link-icon{
|
448 |
+
margin-left: 12px;
|
449 |
+
}
|
450 |
+
.articles-item .item-link:hover{
|
451 |
+
color: #1472f4;
|
452 |
+
}
|
453 |
+
.articles-content{
|
454 |
+
position: relative;
|
455 |
+
}
|
456 |
+
.articles-element{
|
457 |
+
position: absolute;
|
458 |
+
top: 105px;
|
459 |
+
left: -5px;
|
460 |
+
z-index: -1;
|
461 |
+
}
|
462 |
+
|
463 |
+
/* footer */
|
464 |
+
.footer{
|
465 |
+
margin-top: 136.6px;
|
466 |
+
background: linear-gradient(183.41deg, #67c3f3 -8.57%, #5a98f2 82.96%);
|
467 |
+
padding-top: 118px;
|
468 |
+
padding-bottom: 109px;
|
469 |
+
position: relative;
|
470 |
+
}
|
471 |
+
|
472 |
+
.footer .navbar-brand{
|
473 |
+
margin-bottom: 17px;
|
474 |
+
}
|
475 |
+
|
476 |
+
.footer .navbar-brand .brand-shape{
|
477 |
+
background-color: var(--clr-white);
|
478 |
+
color: var(--clr-blue);
|
479 |
+
}
|
480 |
+
.footer .navbar-brand .brand-text{
|
481 |
+
color: var(--clr-white);
|
482 |
+
}
|
483 |
+
|
484 |
+
.footer-list{
|
485 |
+
grid-template-columns: 3fr 1fr 1fr 1fr;
|
486 |
+
column-gap: 80px;
|
487 |
+
row-gap: 40px;
|
488 |
+
}
|
489 |
+
.footer-item:nth-child(1){
|
490 |
+
padding-right: 100px;
|
491 |
+
}
|
492 |
+
.footer-item:nth-child(1) p{
|
493 |
+
font-weight: 300;
|
494 |
+
font-size: 18px;
|
495 |
+
}
|
496 |
+
.footer-item:nth-child(1) .copyright-text{
|
497 |
+
margin-top: 31px;
|
498 |
+
line-height: 1.55;
|
499 |
+
}
|
500 |
+
.footer-item-title{
|
501 |
+
font-weight: 700;
|
502 |
+
font-size: 20px;
|
503 |
+
margin-bottom: 24px;
|
504 |
+
}
|
505 |
+
.footer-links li a{
|
506 |
+
font-weight: 300;
|
507 |
+
font-size: 18px;
|
508 |
+
}
|
509 |
+
.footer-links li a:hover{
|
510 |
+
opacity: 0.95;
|
511 |
+
text-decoration: underline;
|
512 |
+
}
|
513 |
+
.footer-links li{
|
514 |
+
margin-bottom: 10px;
|
515 |
+
}
|
516 |
+
.footer-element-1{
|
517 |
+
bottom: 0;
|
518 |
+
left: 0;
|
519 |
+
position: absolute;
|
520 |
+
}
|
521 |
+
.footer-element-2{
|
522 |
+
position: absolute;
|
523 |
+
right: 91px;
|
524 |
+
top: -70px;
|
525 |
+
z-index: 1;
|
526 |
+
}
|
527 |
+
|
528 |
+
/* Media queries */
|
529 |
+
@media screen and (max-width: 1120px){
|
530 |
+
.feedback-list .feedback-item{
|
531 |
+
column-gap: 40px;
|
532 |
+
}
|
533 |
+
|
534 |
+
.footer-item:nth-child(1){
|
535 |
+
padding-right: 0;
|
536 |
+
}
|
537 |
+
|
538 |
+
.footer-list{
|
539 |
+
grid-template-columns: repeat(2, 1fr);
|
540 |
+
}
|
541 |
+
}
|
542 |
+
|
543 |
+
@media screen and (max-width: 992px){
|
544 |
+
.navbar .navbar-show-btn{
|
545 |
+
display: block;
|
546 |
+
}
|
547 |
+
|
548 |
+
.navbar .navbar-hide-btn i{
|
549 |
+
color: var(--clr-black);
|
550 |
+
}
|
551 |
+
|
552 |
+
.navbar-box{
|
553 |
+
position: fixed;
|
554 |
+
right: 0;
|
555 |
+
top: 0;
|
556 |
+
width: 280px;
|
557 |
+
height: 100%;
|
558 |
+
box-shadow: rgba(149, 157, 165, 0.4) 0px 8px 24px;
|
559 |
+
z-index: 999;
|
560 |
+
background-color: var(--clr-white);
|
561 |
+
padding: 48px 32px 24px;
|
562 |
+
transform: translateX(100%);
|
563 |
+
transition: var(--transition-default);
|
564 |
+
}
|
565 |
+
|
566 |
+
.navbar-box-show{
|
567 |
+
transform: translateX(0);
|
568 |
+
}
|
569 |
+
|
570 |
+
.navbar-box .nav-link{
|
571 |
+
color: var(--clr-black);
|
572 |
+
position: relative;
|
573 |
+
padding-bottom: 8px;
|
574 |
+
}
|
575 |
+
|
576 |
+
.navbar-box .nav-link::after{
|
577 |
+
content: "";
|
578 |
+
position: absolute;
|
579 |
+
top: 100%;
|
580 |
+
left: 50%;
|
581 |
+
transform: translateX(-50%);
|
582 |
+
height: 1px;
|
583 |
+
width: 0;
|
584 |
+
background-color: var(--clr-blue);
|
585 |
+
transition: var(--transition-default);
|
586 |
+
}
|
587 |
+
.navbar-box .nav-link:hover{
|
588 |
+
color: var(--clr-blue);
|
589 |
+
}
|
590 |
+
.navbar-box .nav-link:hover::after{
|
591 |
+
width: 100%;
|
592 |
+
}
|
593 |
+
.navbar-box .nav-link.nav-active{
|
594 |
+
color: var(--clr-blue);
|
595 |
+
}
|
596 |
+
.navbar-box .nav-item{
|
597 |
+
margin: 12px 0;
|
598 |
+
}
|
599 |
+
.navbar-box .navbar-nav{
|
600 |
+
flex-direction: column;
|
601 |
+
}
|
602 |
+
.navbar-box .navbar-hide-btn{
|
603 |
+
display: block;
|
604 |
+
position: absolute;
|
605 |
+
right: 16px;
|
606 |
+
top: 16px;
|
607 |
+
font-size: 24px;
|
608 |
+
}
|
609 |
+
|
610 |
+
/* banner */
|
611 |
+
.banner-content{
|
612 |
+
column-gap: 36px;
|
613 |
+
grid-template-columns: repeat(1, 1fr);
|
614 |
+
}
|
615 |
+
.banner .banner-left .content-wrapper{
|
616 |
+
max-width: 540px;
|
617 |
+
margin-right: auto;
|
618 |
+
margin-left: auto;
|
619 |
+
text-align: center;
|
620 |
+
}
|
621 |
+
.banner-left .content-wrapper p{
|
622 |
+
max-width: 100%;
|
623 |
+
}
|
624 |
+
.banner .banner-right{
|
625 |
+
justify-content: center;
|
626 |
+
margin-top: 40px;
|
627 |
+
max-width: 480px;
|
628 |
+
margin-right: auto;
|
629 |
+
margin-left: auto;
|
630 |
+
}
|
631 |
+
|
632 |
+
/* services */
|
633 |
+
.sc-services{
|
634 |
+
padding-top: 80px!important;
|
635 |
+
padding-bottom: 80px!important;
|
636 |
+
position: relative;
|
637 |
+
overflow: hidden;
|
638 |
+
}
|
639 |
+
|
640 |
+
.services-item{
|
641 |
+
width: calc(50% - 37px);
|
642 |
+
}
|
643 |
+
|
644 |
+
.sc-services{
|
645 |
+
padding-top: 120px;
|
646 |
+
padding-bottom: 115.5px;
|
647 |
+
}
|
648 |
+
.services-shape{
|
649 |
+
width: 70%;
|
650 |
+
top: 340px;
|
651 |
+
}
|
652 |
+
|
653 |
+
/* grid one */
|
654 |
+
.sc-grid-one, .sc-grid-two{
|
655 |
+
padding: 100px 0;
|
656 |
+
}
|
657 |
+
|
658 |
+
.grid-content .content-wrapper{
|
659 |
+
max-width: 600px;
|
660 |
+
margin-left: auto;
|
661 |
+
margin-right: auto;
|
662 |
+
text-align: center;
|
663 |
+
}
|
664 |
+
.grid-content{
|
665 |
+
grid-template-columns: repeat(1, 1fr);
|
666 |
+
}
|
667 |
+
.grid-content .title-box .title-separator{
|
668 |
+
margin-left: auto;
|
669 |
+
}
|
670 |
+
.grid-content .grid-img{
|
671 |
+
max-width: 480px;
|
672 |
+
margin-right: auto;
|
673 |
+
margin-left: auto;
|
674 |
+
margin-bottom: 40px;
|
675 |
+
}
|
676 |
+
|
677 |
+
.sc-grid.sc-grid-two .grid-content .content-wrapper{
|
678 |
+
max-width: 600px;
|
679 |
+
margin-left: auto;
|
680 |
+
margin-right: auto;
|
681 |
+
text-align: center;
|
682 |
+
}
|
683 |
+
.sc-grid-two .grid-content .grid-text{
|
684 |
+
width: 100%;
|
685 |
+
margin-right: 0;
|
686 |
+
margin-left: 0;
|
687 |
+
margin-bottom: 60px;
|
688 |
+
}
|
689 |
+
|
690 |
+
/* feedback */
|
691 |
+
.sc-feedback{
|
692 |
+
padding: 120px;
|
693 |
+
}
|
694 |
+
.feedback-list .feedback-item{
|
695 |
+
grid-template-columns: repeat(1, 1fr);
|
696 |
+
padding: 32px;
|
697 |
+
}
|
698 |
+
.feedback-list .feedback-item .item-right{
|
699 |
+
max-width: 100%;
|
700 |
+
margin-top: 24px;
|
701 |
+
}
|
702 |
+
.feedback-list .owl-nav .owl-prev{
|
703 |
+
margin-right: 200px;
|
704 |
+
}
|
705 |
+
.feedback-content .feedback-element{
|
706 |
+
width: 40px;
|
707 |
+
right: 5px;
|
708 |
+
top: 5px;
|
709 |
+
}
|
710 |
+
.feedback-content .feedback-element-2{
|
711 |
+
width: 50px;
|
712 |
+
left: 0;
|
713 |
+
}
|
714 |
+
|
715 |
+
/* articles */
|
716 |
+
.sc-articles{
|
717 |
+
padding: 100px 0;
|
718 |
+
}
|
719 |
+
.articles-content .articles-item{
|
720 |
+
width: calc(50% - 34px);
|
721 |
+
overflow: hidden;
|
722 |
+
margin: 17px;
|
723 |
+
}
|
724 |
+
.articles-shape{
|
725 |
+
width: 50%;
|
726 |
+
}
|
727 |
+
.articles-element{
|
728 |
+
top: 180px;
|
729 |
+
width: 60px;
|
730 |
+
}
|
731 |
+
|
732 |
+
/* footer */
|
733 |
+
.footer-element-1{
|
734 |
+
width: 60px;
|
735 |
+
}
|
736 |
+
.footer-element-22{
|
737 |
+
width: 60px;
|
738 |
+
right: 0;
|
739 |
+
top: -35px;
|
740 |
+
}
|
741 |
+
}
|
742 |
+
|
743 |
+
@media screen and (max-width: 768px){
|
744 |
+
/* navbar */
|
745 |
+
.element-one img{
|
746 |
+
width: 40px;
|
747 |
+
}
|
748 |
+
/* grid one */
|
749 |
+
.sc-grid-one, .sc-grid-two{
|
750 |
+
padding: 80px 0;
|
751 |
+
}
|
752 |
+
|
753 |
+
/* feedback */
|
754 |
+
.sc-feedback{
|
755 |
+
padding: 80px 0;
|
756 |
+
}
|
757 |
+
.feedback-list .feedback-item{
|
758 |
+
padding-right: 20px;
|
759 |
+
padding-left: 20px
|
760 |
+
}
|
761 |
+
.feedback-list .feedback-item .item-left{
|
762 |
+
flex-direction: column;
|
763 |
+
}
|
764 |
+
.feedback-list .feedback-item .item-left .item-info{
|
765 |
+
margin-left: 0;
|
766 |
+
text-align: center;
|
767 |
+
margin-top: 16px;
|
768 |
+
}
|
769 |
+
.feedback-list .owl-nav .owl-prev{
|
770 |
+
margin-right: 120px;
|
771 |
+
}
|
772 |
+
|
773 |
+
/* articles */
|
774 |
+
.sc-articles{
|
775 |
+
padding: 80px 0;
|
776 |
+
}
|
777 |
+
|
778 |
+
/* footer */
|
779 |
+
.footer-list{
|
780 |
+
grid-template-columns: repeat(1, 1fr);
|
781 |
+
text-align: center;
|
782 |
+
}
|
783 |
+
.footer-list .navbar-brand{
|
784 |
+
justify-content: center;
|
785 |
+
}
|
786 |
+
.footer-list .footer-item:nth-child(1){
|
787 |
+
max-width: 450px;
|
788 |
+
margin-right: auto;
|
789 |
+
margin-left: auto;
|
790 |
+
}
|
791 |
+
}
|
792 |
+
|
793 |
+
@media screen and (max-width: 678px){
|
794 |
+
.sc-services .services-list{
|
795 |
+
margin-right: 0;
|
796 |
+
margin-left: 0;
|
797 |
+
}
|
798 |
+
|
799 |
+
.services-list .services-item{
|
800 |
+
width: 100%;
|
801 |
+
margin: 12px 0;
|
802 |
+
}
|
803 |
+
|
804 |
+
.articles-list .articles-item{
|
805 |
+
width: calc(100% - 34px);
|
806 |
+
overflow: hidden;
|
807 |
+
max-width: 100%;
|
808 |
+
}
|
809 |
+
}
|
810 |
+
|
811 |
+
@media screen and (max-width: 576px){
|
812 |
+
.services-item{
|
813 |
+
text-align: center;
|
814 |
+
}
|
815 |
+
.services-item .item-icon img{
|
816 |
+
margin-right: auto;
|
817 |
+
margin-left: auto;
|
818 |
+
}
|
819 |
+
}
|
820 |
+
|
821 |
+
@media screen and (max-width: 450px){
|
822 |
+
.navbar-box{
|
823 |
+
width: 100%;
|
824 |
+
}
|
825 |
+
}
|
static/css/utilities.css
ADDED
@@ -0,0 +1,155 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/* utilities classes */
|
2 |
+
.container{
|
3 |
+
margin: 0 auto;
|
4 |
+
padding-right: 16px;
|
5 |
+
padding-left: 16px;
|
6 |
+
max-width: calc(1273px - 32px);
|
7 |
+
}
|
8 |
+
|
9 |
+
/* text stylings and colors */
|
10 |
+
.text{
|
11 |
+
color: var(--clr-gray);
|
12 |
+
mix-blend-mode: normal;
|
13 |
+
font-weight: 300;
|
14 |
+
font-style: normal;
|
15 |
+
}
|
16 |
+
.text-blue{color: var(--clr-blue);}
|
17 |
+
.text-black{color: var(--clr-black);}
|
18 |
+
.text-white{color: var(--clr-white);}
|
19 |
+
.text-gray{color: var(--clr-gray);}
|
20 |
+
.text-dark-purple{color: var(--clr-dark-purple);}
|
21 |
+
|
22 |
+
.text-uppercase{text-transform: uppercase;}
|
23 |
+
.text-capitalize{text-transform: capitalize;}
|
24 |
+
.text-lowercase{text-transform: lowercase;}
|
25 |
+
.text-center{text-align: center;}
|
26 |
+
.text-start{text-align: left;}
|
27 |
+
.text-end{text-align: right;}
|
28 |
+
.text-justify{text-align: justify;}
|
29 |
+
.text-nowrap{white-space: nowrap;}
|
30 |
+
|
31 |
+
/* backgrounds colors */
|
32 |
+
.bg-transparent{background-color: transparent;}
|
33 |
+
.bg-white{background-color: var(--clr-white);}
|
34 |
+
.bg-black{background-color: var(--clr-black);}
|
35 |
+
.bg-blue{background-color: var(--clr-blue);}
|
36 |
+
.bg-gray{background-color: var(--clr-gray);}
|
37 |
+
.bg-dark-purple{background-color: var(--clr-dark-purple);}
|
38 |
+
|
39 |
+
.op-01{opacity: 0.1;}
|
40 |
+
.op-02{opacity: 0.2;}
|
41 |
+
.op-03{opacity: 0.3;}
|
42 |
+
.op-04{opacity: 0.4;}
|
43 |
+
.op-05{opacity: 0.5;}
|
44 |
+
.op-06{opacity: 0.6;}
|
45 |
+
.op-07{opacity: 0.7;}
|
46 |
+
.op-08{opacity: 0.8;}
|
47 |
+
.op-09{opacity: 0.9;}
|
48 |
+
|
49 |
+
/* font weights */
|
50 |
+
.fw-3{font-weight: 300;}
|
51 |
+
.fw-4{font-weight: 400;}
|
52 |
+
.fw-5{font-weight: 500;}
|
53 |
+
.fw-6{font-weight: 600;}
|
54 |
+
.fw-7{font-weight: 700;}
|
55 |
+
.fw-8{font-weight: 800;}
|
56 |
+
.fw-9{font-weight: 900;}
|
57 |
+
|
58 |
+
/* display */
|
59 |
+
.d-block{display: block;}
|
60 |
+
.d-inline{display: inline;}
|
61 |
+
.d-inline-block{display: inline-block;}
|
62 |
+
.d-flex{display: flex;}
|
63 |
+
.d-inline-flex{display: inline-flex;}
|
64 |
+
.d-grid{display: grid;}
|
65 |
+
.d-none{display: none;}
|
66 |
+
|
67 |
+
/* flex */
|
68 |
+
.justify-content-start{justify-content: flex-start;}
|
69 |
+
.justify-content-end{justify-content: flex-end;}
|
70 |
+
.justify-content-center{justify-content: center;}
|
71 |
+
.align-items-center{align-items: center;}
|
72 |
+
.align-items-stretch{align-items: stretch;}
|
73 |
+
.align-items-end{align-items: flex-start;}
|
74 |
+
.align-items-start{align-items: flex-start;}
|
75 |
+
.align-items-baseline{align-items: baseline;}
|
76 |
+
.flex-column{flex-direction: column;}
|
77 |
+
.flex-row{flex-direction: row;}
|
78 |
+
.flex-wrap{flex-wrap: wrap;}
|
79 |
+
|
80 |
+
/* vertically and horizontally centered */
|
81 |
+
.flex-center{
|
82 |
+
display: flex;
|
83 |
+
align-items: center;
|
84 |
+
justify-content: center;
|
85 |
+
}
|
86 |
+
.justify-content-between{justify-content: space-between;}
|
87 |
+
|
88 |
+
/* buttons */
|
89 |
+
.btn{
|
90 |
+
min-width: 200px;
|
91 |
+
height: 56px;
|
92 |
+
border-radius: 54px;
|
93 |
+
display: inline-flex;
|
94 |
+
align-items: center;
|
95 |
+
justify-content: center;
|
96 |
+
font-weight: 700;
|
97 |
+
font-size: 18px;
|
98 |
+
color: var(--clr-white);
|
99 |
+
transition: var(--transition-default);
|
100 |
+
}
|
101 |
+
|
102 |
+
.btn:hover{
|
103 |
+
color: var(--clr-white);
|
104 |
+
background-color: #1472f4;
|
105 |
+
box-shadow: rgba(17, 17, 26, 0.1) 0px 8px 24px, rgba(17, 17, 26, 0.1) 0px 16px 56px, rgba(17, 17, 26, 0.1) 0px 24px 80px;
|
106 |
+
}
|
107 |
+
.btn-primary{
|
108 |
+
background-color: var(--clr-blue);
|
109 |
+
}
|
110 |
+
.btn-primary-outline{
|
111 |
+
border: 1.4px solid var(--clr-blue);
|
112 |
+
color: var(--clr-blue);
|
113 |
+
}
|
114 |
+
.btn-secondary{
|
115 |
+
background-color: var(--clr-white);
|
116 |
+
color: var(--clr-blue);
|
117 |
+
}
|
118 |
+
.btn-white-outline{
|
119 |
+
color: var(--clr-white);
|
120 |
+
border: 1.4px solid var(--clr-white);
|
121 |
+
}
|
122 |
+
.btn-white-outline:hover{
|
123 |
+
background-color: var(--clr-white);
|
124 |
+
color: var(--clr-blue);
|
125 |
+
}
|
126 |
+
|
127 |
+
/* title */
|
128 |
+
.title-box .title-box-name{
|
129 |
+
font-weight: 700;
|
130 |
+
font-size: 36px;
|
131 |
+
}
|
132 |
+
.title-box .title-separator{
|
133 |
+
height: 2px;
|
134 |
+
background-color: var(--clr-black);
|
135 |
+
width: 56px;
|
136 |
+
margin-top: 10px;
|
137 |
+
margin-bottom: 33px;
|
138 |
+
}
|
139 |
+
|
140 |
+
/* margin auto */
|
141 |
+
.mx-auto{
|
142 |
+
margin-right: auto;
|
143 |
+
margin-left: auto;
|
144 |
+
}
|
145 |
+
|
146 |
+
@media screen and (max-width: 992px){
|
147 |
+
.title-box .title-box-name{
|
148 |
+
font-size: 32px;
|
149 |
+
}
|
150 |
+
}
|
151 |
+
|
152 |
+
.resize-animation-stopper *{
|
153 |
+
animation: none!important;
|
154 |
+
transition: none!important;
|
155 |
+
}
|
static/images/arrow-down.svg
ADDED
static/images/article-img-1.png
ADDED
static/images/article-img-2.png
ADDED
static/images/article-img-3.png
ADDED
static/images/banner-image.png
ADDED
static/images/curve-shape-1.png
ADDED
static/images/curve-shape-2.png
ADDED
static/images/download-image.png
ADDED
static/images/element-img-1.png
ADDED
static/images/element-img-2.png
ADDED
static/images/element-img-3.png
ADDED
static/images/element-img-4.png
ADDED
static/images/element-img-5.png
ADDED
static/images/health-care-img.png
ADDED
static/images/person-image.png
ADDED
static/images/service-icon-1.png
ADDED
static/images/service-icon-2.png
ADDED
static/images/service-icon-3.png
ADDED
static/images/service-icon-4.png
ADDED
static/images/service-icon-5.png
ADDED
static/images/service-icon-6.png
ADDED
static/js/script.js
ADDED
@@ -0,0 +1,30 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
|
2 |
+
|
3 |
+
$(document).ready(function(){
|
4 |
+
$('.feedback-slider').owlCarousel({
|
5 |
+
loop: false,
|
6 |
+
margin: 10,
|
7 |
+
nav: true,
|
8 |
+
items: 1,
|
9 |
+
autoplay: true,
|
10 |
+
navText: ["<i class = 'fas fa-arrow-left'></i>", "<i class = 'fas fa-arrow-right'></i>"]
|
11 |
+
});
|
12 |
+
|
13 |
+
// stop animation on resize
|
14 |
+
let resizeTimer;
|
15 |
+
$(window).resize(function(){
|
16 |
+
$(document.body).addClass('resize-animation-stopper');
|
17 |
+
clearTimeout(resizeTimer);
|
18 |
+
resizeTimer = setTimeout(() => {
|
19 |
+
$(document.body).removeClass('resize-animation-stopper');
|
20 |
+
}, 400);
|
21 |
+
});
|
22 |
+
|
23 |
+
$('.navbar-show-btn').click(function(){
|
24 |
+
$('.navbar-box').addClass('navbar-box-show');
|
25 |
+
});
|
26 |
+
|
27 |
+
$('.navbar-hide-btn').click(function(){
|
28 |
+
$('.navbar-box').removeClass("navbar-box-show");
|
29 |
+
})
|
30 |
+
});
|
templates/index.html
ADDED
@@ -0,0 +1,495 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<!DOCTYPE html>
|
2 |
+
<html>
|
3 |
+
<head>
|
4 |
+
<meta charset="utf-8">
|
5 |
+
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
6 |
+
<title>MediAssist</title>
|
7 |
+
<meta name="description" content="">
|
8 |
+
<meta name="viewport" content="width=device-width, initial-scale=1">
|
9 |
+
<!-- font awesome -->
|
10 |
+
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css" integrity="sha512-iecdLmaskl7CVkqkXNQ/ZH/XLlvWZOJyj7Yy7tcenmpD1ypASozpmT/E0iPtmFIB46ZmdtAc9eNBvH0H/ZpiBw==" crossorigin="anonymous" referrerpolicy="no-referrer" />
|
11 |
+
<!-- owl carousel -->
|
12 |
+
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/OwlCarousel2/2.3.4/assets/owl.carousel.min.css" integrity="sha512-tS3S5qG0BlhnQROyJXvNjeEM4UpMXHrQfTGmbQ1gKmelCxlSEBUaxhRBj/EFTzpbP4RVSrpEikbmdJobCvhE3g==" crossorigin="anonymous" referrerpolicy="no-referrer" />
|
13 |
+
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/OwlCarousel2/2.3.4/assets/owl.theme.default.min.css" integrity="sha512-sMXtMNL1zRzolHYKEujM2AqCLUR9F2C4/05cdbxjjLSRvMQIciEPCQZo++nk7go3BtSuK9kfa/s+a4f4i5pLkw==" crossorigin="anonymous" referrerpolicy="no-referrer" />
|
14 |
+
<!-- custom css -->
|
15 |
+
<link rel = "stylesheet" href = "assets/css/main.css" />
|
16 |
+
<link rel = "stylesheet" href = "assets/css/utilities.css" />
|
17 |
+
<!-- normalize.css -->
|
18 |
+
<link rel="stylesheet" type="text/css" href="{{ url_for('static', filename='css/main.css') }}">
|
19 |
+
<link rel="stylesheet" type="text/css" href="{{ url_for('static', filename='css/utilities.css') }}">
|
20 |
+
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/normalize/8.0.1/normalize.min.css" integrity="sha512-NhSC1YmyruXifcj/KFRWoC561YpHpc5Jtzgvbuzx5VozKpWvQ+4nXhPdFgmx8xqexRcpAglTj9sIBWINXa8x5w==" crossorigin="anonymous" referrerpolicy="no-referrer" />
|
21 |
+
</head>
|
22 |
+
<body>
|
23 |
+
|
24 |
+
<div class="page-wrapper">
|
25 |
+
<!-- header -->
|
26 |
+
<header class = "header">
|
27 |
+
<nav class = "navbar">
|
28 |
+
<div class="container">
|
29 |
+
<div class="navbar-content d-flex justify-content-between align-items-center">
|
30 |
+
<div class = "brand-and-toggler d-flex align-items-center justify-content-between">
|
31 |
+
<a href = "#" class = "navbar-brand d-flex align-items-center">
|
32 |
+
<span class="brand-shape d-inline-block text-white">M</span>
|
33 |
+
<span class="brand-text fw-7">MediAssist</span>
|
34 |
+
</a>
|
35 |
+
<button type = "button" class = "d-none navbar-show-btn">
|
36 |
+
<i class = "fas fa-bars"></i>
|
37 |
+
</button>
|
38 |
+
</div>
|
39 |
+
|
40 |
+
<div class = "navbar-box">
|
41 |
+
<button type = "button" class = "navbar-hide-btn">
|
42 |
+
<i class = "fas fa-times"></i>
|
43 |
+
</button>
|
44 |
+
|
45 |
+
<ul class = "navbar-nav d-flex align-items-center">
|
46 |
+
<li class = "nav-item">
|
47 |
+
<a href = "#" class = "nav-link text-white nav-active text-nowrap">Home</a>
|
48 |
+
</li>
|
49 |
+
<li class = "nav-item">
|
50 |
+
<a href = "#" class = "nav-link text-white text-nowrap">Find a doctor</a>
|
51 |
+
</li>
|
52 |
+
<li class = "nav-item">
|
53 |
+
<a href = "#" class = "nav-link text-white text-nowrap">Apps</a>
|
54 |
+
</li>
|
55 |
+
<li class = "nav-item">
|
56 |
+
<a href = "#" class = "nav-link text-white text-nowrap">Testimonials</a>
|
57 |
+
</li>
|
58 |
+
<li class = "nav-item">
|
59 |
+
<a href = "#" class = "nav-link text-white text-nowrap">About us</a>
|
60 |
+
</li>
|
61 |
+
</ul>
|
62 |
+
</div>
|
63 |
+
</div>
|
64 |
+
</div>
|
65 |
+
</nav>
|
66 |
+
|
67 |
+
<div class="element-one">
|
68 |
+
<img src = "{{ url_for('static', filename='images/element-img-1.png') }}" alt = "">
|
69 |
+
</div>
|
70 |
+
|
71 |
+
<div class="banner">
|
72 |
+
<div class="container">
|
73 |
+
<div class="banner-content">
|
74 |
+
<div class="banner-left">
|
75 |
+
<div class="content-wrapper">
|
76 |
+
<h1 class="banner-title">Virtual healthcare <br> for you</h1>
|
77 |
+
<p class="text text-white">MediAssist provides progressive, and affordable healthcare, accessible on mobile and onnline for everyone</p>
|
78 |
+
<a href = "#" class="btn btn-secondary">Consult today</a>
|
79 |
+
</div>
|
80 |
+
</div>
|
81 |
+
|
82 |
+
<div class = "banner-right d-flex align-items-center justify-content-end">
|
83 |
+
<img src="{{ url_for('static', filename='images/banner-image.png') }}" alt="">
|
84 |
+
|
85 |
+
</div>
|
86 |
+
</div>
|
87 |
+
</div>
|
88 |
+
</div>
|
89 |
+
</header>
|
90 |
+
<!-- end of header -->
|
91 |
+
|
92 |
+
<main>
|
93 |
+
<section class = "sc-services">
|
94 |
+
<div class = "services-shape">
|
95 |
+
<img src="{{ url_for('static', filename='images/curve-shape-1.png') }}" alt="">
|
96 |
+
|
97 |
+
</div>
|
98 |
+
<div class="container">
|
99 |
+
<div class = "services-content">
|
100 |
+
<div class="title-box text-center">
|
101 |
+
<div class = "content-wrapper">
|
102 |
+
<h3 class = "title-box-name">Our services</h3>
|
103 |
+
<div class = "title-separator mx-auto"></div>
|
104 |
+
<p class = "text title-box-text">We provide you the best choices for you. Adjust it to your health needs and make sure you undergo treatment with our highly qualified doctors you can consult with us which type of service is suitable for your health</p>
|
105 |
+
</div>
|
106 |
+
</div>
|
107 |
+
|
108 |
+
<div class = "services-list">
|
109 |
+
<div class = "services-item">
|
110 |
+
<div class = "item-icon">
|
111 |
+
<img src="{{ url_for('static', filename='images/service-icon-1.png') }}" alt="service icon">
|
112 |
+
|
113 |
+
</div>
|
114 |
+
<h5 class = "item-title fw-7">Search doctor</h5>
|
115 |
+
<p class = "text">Choose your doctor form thousands of specialist, general and trusted hospitals.</p>
|
116 |
+
</div>
|
117 |
+
|
118 |
+
<div class = "services-item">
|
119 |
+
<div class = "item-icon">
|
120 |
+
<img src="{{ url_for('static', filename='images/service-icon-2.png') }}" alt="service icon">
|
121 |
+
|
122 |
+
</div>
|
123 |
+
<h5 class = "item-title fw-7">Online pharmacy</h5>
|
124 |
+
<p class = "text">Buy your medicines with our mobile application with a simple delivery system</p>
|
125 |
+
</div>
|
126 |
+
|
127 |
+
<div class = "services-item">
|
128 |
+
<a href="/chatbot" class="service-link">
|
129 |
+
<div class = "item-icon">
|
130 |
+
<img src="{{ url_for('static', filename='images/service-icon-3.png') }}" alt="service icon">
|
131 |
+
|
132 |
+
</div>
|
133 |
+
<h5 class = "item-title fw-7">Medibot</h5>
|
134 |
+
<p class = "text">Free chat with our medical chatbot.</p>
|
135 |
+
</a>
|
136 |
+
</div>
|
137 |
+
|
138 |
+
<div class = "services-item">
|
139 |
+
<div class = "item-icon">
|
140 |
+
<img src="{{ url_for('static', filename='images/service-icon-4.png') }}" alt="service icon">
|
141 |
+
|
142 |
+
</div>
|
143 |
+
<h5 class = "item-title fw-7">Details info</h5>
|
144 |
+
<p class = "text">Free consultation with our trusted doctors and get the best recommendations.</p>
|
145 |
+
</div>
|
146 |
+
|
147 |
+
<div class = "services-item">
|
148 |
+
<div class = "item-icon">
|
149 |
+
<img src="{{ url_for('static', filename='images/service-icon-5.png') }}" alt="service icon">
|
150 |
+
|
151 |
+
</div>
|
152 |
+
<h5 class = "item-title fw-7">Emergency care</h5>
|
153 |
+
<p class = "text">You can get 24/7 urgent care for yourself or your children and your lovely family.</p>
|
154 |
+
</div>
|
155 |
+
|
156 |
+
<div class = "services-item">
|
157 |
+
<a href="/identification" class="service-link">
|
158 |
+
|
159 |
+
<div class = "item-icon">
|
160 |
+
<img src="{{ url_for('static', filename='images/service-icon-6.png') }}" alt="service icon">
|
161 |
+
|
162 |
+
</div>
|
163 |
+
<h5 class = "item-title fw-7">skin disease identification</h5>
|
164 |
+
<p class = "text">unaware about your skin disease? Show us and we'll identify it for you.</p>
|
165 |
+
</a>
|
166 |
+
</div>
|
167 |
+
</div>
|
168 |
+
|
169 |
+
<div class = "d-flex align-items-center justify-content-center services-main-btn">
|
170 |
+
<button type = "button" class = "btn btn-primary-outline">Learn more</button>
|
171 |
+
</div>
|
172 |
+
</div>
|
173 |
+
</div>
|
174 |
+
</section>
|
175 |
+
|
176 |
+
<section class = "sc-grid sc-grid-one">
|
177 |
+
<div class="container">
|
178 |
+
<div class = "grid-content d-grid align-items-center">
|
179 |
+
<div class = "grid-img">
|
180 |
+
<img src="{{ url_for('static', filename='images/health-care-img.png') }}" alt="">
|
181 |
+
|
182 |
+
</div>
|
183 |
+
<div class = "grid-text">
|
184 |
+
<div class = "content-wrapper text-start">
|
185 |
+
<div class = "title-box">
|
186 |
+
<h3 class = "title-box-name text-white">Leading healthcare providers</h3>
|
187 |
+
<div class = "title-separator mx-auto"></div>
|
188 |
+
</div>
|
189 |
+
|
190 |
+
<p class = "text title-box-text text-white">MediAssist provides progressive, and affordable healthcare, accessible on mobile and online for everyone. To us, it's not just work. We take pride in the solutions we deliver</p>
|
191 |
+
<button type = "button" class = "btn btn-white-outline">Learn more</button>
|
192 |
+
</div>
|
193 |
+
</div>
|
194 |
+
</div>
|
195 |
+
</div>
|
196 |
+
</section>
|
197 |
+
|
198 |
+
<section class = "sc-grid sc-grid-two">
|
199 |
+
<div class = "container">
|
200 |
+
<div class = "grid-content d-grid align-items-center">
|
201 |
+
<div class = "grid-img">
|
202 |
+
<img src="{{ url_for('static', filename='images/download-image.png') }}" alt="">
|
203 |
+
|
204 |
+
</div>
|
205 |
+
<div class = "grid-text">
|
206 |
+
<div class = "content-wrapper text-start">
|
207 |
+
<div class = "title-box">
|
208 |
+
<h3 class = "title-box-name">Download our mobile apps</h3>
|
209 |
+
<div class = "title-separator mx-auto"></div>
|
210 |
+
</div>
|
211 |
+
<p class = "text title-box-text">Our dedicated patient engagement app and web portal allow you to access information instantaneously (no tedeous form, long calls, or administrative hassle) and securely</p>
|
212 |
+
<button type = "button" class = "btn btn-primary-outline">
|
213 |
+
Download
|
214 |
+
<img src="{{ url_for('static', filename='images/arrow-down.svg') }}" />
|
215 |
+
|
216 |
+
</button>
|
217 |
+
</div>
|
218 |
+
</div>
|
219 |
+
</div>
|
220 |
+
</div>
|
221 |
+
</section>
|
222 |
+
|
223 |
+
<section class = "sc-feedback">
|
224 |
+
<div class="container">
|
225 |
+
<div class = "feedback-content">
|
226 |
+
<div class = "feedback-element">
|
227 |
+
<img src="{{ url_for('static', filename='images/element-img-3.png') }}">
|
228 |
+
|
229 |
+
</div>
|
230 |
+
<div class="feedback-element-2">
|
231 |
+
<img src="{{ url_for('static', filename='images/element-img-5.png') }}">
|
232 |
+
|
233 |
+
</div>
|
234 |
+
<div class = "title-box text-center">
|
235 |
+
<div class = "content-wrapper">
|
236 |
+
<h3 class = "title-box-name text-white">What our customer are saying</h3>
|
237 |
+
<div class = "title-separator mx-auto"></div>
|
238 |
+
</div>
|
239 |
+
</div>
|
240 |
+
|
241 |
+
<div class = "feedback-list feedback-slider owl-carousel owl-theme">
|
242 |
+
<div class = "feedback-item d-grid">
|
243 |
+
<div class = "item-left d-flex align-items-center">
|
244 |
+
<div class = "item-img">
|
245 |
+
<img src="{{ url_for('static', filename='images/person-image.png') }}" alt="">
|
246 |
+
|
247 |
+
</div>
|
248 |
+
<div class = "item-info text-white">
|
249 |
+
<p class = "fw-7 name">Edward Newgate</p>
|
250 |
+
<span class = "designation fw-4">Founder Circle</span>
|
251 |
+
</div>
|
252 |
+
</div>
|
253 |
+
<div class = "item-right">
|
254 |
+
<p class = "text text-white">"Our dedicated patient engagement app and web portal allow you to access information instantaneoulsy (no tedeous form, long calls, or administrative hassle) and securely"</p>
|
255 |
+
</div>
|
256 |
+
</div>
|
257 |
+
|
258 |
+
<div class = "feedback-item d-grid">
|
259 |
+
<div class = "item-left d-flex align-items-center">
|
260 |
+
<div class = "item-img">
|
261 |
+
<img src="{{ url_for('static', filename='images/person-image.png') }}" alt="">
|
262 |
+
|
263 |
+
</div>
|
264 |
+
<div class = "item-info text-white">
|
265 |
+
<p class = "fw-7 name">Edward Newgate</p>
|
266 |
+
<span class = "designation fw-4">Founder Circle</span>
|
267 |
+
</div>
|
268 |
+
</div>
|
269 |
+
<div class = "item-right">
|
270 |
+
<p class = "text text-white">"Our dedicated patient engagement app and web portal allow you to access information instantaneoulsy (no tedeous form, long calls, or administrative hassle) and securely"</p>
|
271 |
+
</div>
|
272 |
+
</div>
|
273 |
+
|
274 |
+
<div class = "feedback-item d-grid">
|
275 |
+
<div class = "item-left d-flex align-items-center">
|
276 |
+
<div class = "item-img">
|
277 |
+
<img src = "assets/images/person-image.png" alt = "">
|
278 |
+
</div>
|
279 |
+
<div class = "item-info text-white">
|
280 |
+
<p class = "fw-7 name">Simon Paul</p>
|
281 |
+
<span class = "designation fw-4">Founder Circle</span>
|
282 |
+
</div>
|
283 |
+
</div>
|
284 |
+
<div class = "item-right">
|
285 |
+
<p class = "text text-white">"Our dedicated patient engagement app and web portal allow you to access information instantaneoulsy (no tedeous form, long calls, or administrative hassle) and securely"</p>
|
286 |
+
</div>
|
287 |
+
</div>
|
288 |
+
|
289 |
+
<div class = "feedback-item d-grid">
|
290 |
+
<div class = "item-left d-flex align-items-center">
|
291 |
+
<div class = "item-img">
|
292 |
+
<img src="{{ url_for('static', filename='images/person-image.png') }}" alt="">
|
293 |
+
|
294 |
+
</div>
|
295 |
+
<div class = "item-info text-white">
|
296 |
+
<p class = "fw-7 name">John Doe</p>
|
297 |
+
<span class = "designation fw-4">Founder Circle</span>
|
298 |
+
</div>
|
299 |
+
</div>
|
300 |
+
<div class = "item-right">
|
301 |
+
<p class = "text text-white">"Our dedicated patient engagement app and web portal allow you to access information instantaneoulsy (no tedeous form, long calls, or administrative hassle) and securely"</p>
|
302 |
+
</div>
|
303 |
+
</div>
|
304 |
+
</div>
|
305 |
+
</div>
|
306 |
+
</div>
|
307 |
+
</section>
|
308 |
+
|
309 |
+
<section class = "sc-articles">
|
310 |
+
<div class = "articles-shape">
|
311 |
+
<img src="{{ url_for('static', filename='images/curve-shape-2.png') }}" alt="">
|
312 |
+
|
313 |
+
</div>
|
314 |
+
<div class = "container">
|
315 |
+
<div class = "articles-content">
|
316 |
+
<div class = "articles-element">
|
317 |
+
<img src="{{ url_for('static', filename='images/element-img-2.png') }}" alt="">
|
318 |
+
|
319 |
+
</div>
|
320 |
+
<div class = "title-box text-center">
|
321 |
+
<div class = "content-wrapper">
|
322 |
+
<h3 class = "title-box-name">Check out our latest article</h3>
|
323 |
+
<div class = "title-separator mx-auto"></div>
|
324 |
+
</div>
|
325 |
+
</div>
|
326 |
+
|
327 |
+
<div class = "articles-list d-flex flex-wrap justify-content-center">
|
328 |
+
<article class = "articles-item">
|
329 |
+
<div class = "item-img">
|
330 |
+
<img src="{{ url_for('static', filename='images/article-img-1.png') }}">
|
331 |
+
|
332 |
+
</div>
|
333 |
+
<div class = "item-body">
|
334 |
+
<div class = "item-title">Disease detection, check up in the laboratory</div>
|
335 |
+
<p class = "text">In this case, the role of the health laboratory is very important to do a disease detection ...</p>
|
336 |
+
<a href = "#" class = "item-link text-blue d-flex align-items-baseline">
|
337 |
+
<span class = "item-link-text">Read more</span>
|
338 |
+
<span class = "item-link-icon">
|
339 |
+
<i class = "fas fa-arrow-right"></i>
|
340 |
+
</span>
|
341 |
+
</a>
|
342 |
+
</div>
|
343 |
+
</article>
|
344 |
+
|
345 |
+
<article class = "articles-item">
|
346 |
+
<div class = "item-img">
|
347 |
+
<img src="{{ url_for('static', filename='images/article-img-2.png') }}">
|
348 |
+
|
349 |
+
</div>
|
350 |
+
<div class = "item-body">
|
351 |
+
<div class = "item-title">Herbal medicines that are safe for consumption</div>
|
352 |
+
<p class = "text">Herbal medicine is very widely used at this time because of its very good for your health ...</p>
|
353 |
+
<a href = "#" class = "item-link text-blue d-flex align-items-baseline">
|
354 |
+
<span class = "item-link-text">Read more</span>
|
355 |
+
<span class = "item-link-icon">
|
356 |
+
<i class = "fas fa-arrow-right"></i>
|
357 |
+
</span>
|
358 |
+
</a>
|
359 |
+
</div>
|
360 |
+
</article>
|
361 |
+
|
362 |
+
<article class = "articles-item">
|
363 |
+
<div class = "item-img">
|
364 |
+
<img src="{{ url_for('static', filename='images/article-img-3.png') }}">
|
365 |
+
|
366 |
+
</div>
|
367 |
+
<div class = "item-body">
|
368 |
+
<div class = "item-title">Natural care for healthy facial skin</div>
|
369 |
+
<p class = "text">A healthy lifestyle should start from now and also for your skin health ...</p>
|
370 |
+
<a href = "#" class = "item-link text-blue d-flex align-items-baseline">
|
371 |
+
<span class = "item-link-text">Read more</span>
|
372 |
+
<span class = "item-link-icon">
|
373 |
+
<i class = "fas fa-arrow-right"></i>
|
374 |
+
</span>
|
375 |
+
</a>
|
376 |
+
</div>
|
377 |
+
</article>
|
378 |
+
</div>
|
379 |
+
</div>
|
380 |
+
</div>
|
381 |
+
</section>
|
382 |
+
</main>
|
383 |
+
|
384 |
+
<footer class = "footer">
|
385 |
+
<div class = "container">
|
386 |
+
<div class = "footer-content">
|
387 |
+
<div class = "footer-list d-grid text-white">
|
388 |
+
<div class = "footer-item">
|
389 |
+
<a href = "#" class = "navbar-brand d-flex align-items-center">
|
390 |
+
<span class = "brand-shape d-inline-block text-white">M</span>
|
391 |
+
<span class = "brand-text fw-7">MediAssist</span>
|
392 |
+
</a>
|
393 |
+
<p class = "text-white">MediAssist provides progressive, and affordable healthcare, accessible on mobile and online for everyone</p>
|
394 |
+
<p class = "text-white copyright-text">© MediAssist PTY LTD 2023. All rights reserved.</p>
|
395 |
+
</div>
|
396 |
+
|
397 |
+
<div class = "footer-item">
|
398 |
+
<h3 class = "footer-item-title">Company</h3>
|
399 |
+
<ul class = "footer-links">
|
400 |
+
<li><a href = "#">About</a></li>
|
401 |
+
<li><a href = "#">Find a doctor</a></li>
|
402 |
+
<li><a href = "#">Apps</a></li>
|
403 |
+
</ul>
|
404 |
+
</div>
|
405 |
+
|
406 |
+
<div class = "footer-item">
|
407 |
+
<h3 class = "footer-item-title">Region</h3>
|
408 |
+
<ul class = "footer-links">
|
409 |
+
<li><a href = "#">Indonesia</a></li>
|
410 |
+
<li><a href = "#">Singapore</a></li>
|
411 |
+
<li><a href = "#">Hongkong</a></li>
|
412 |
+
<li><a href = "#">Canada</a></li>
|
413 |
+
</ul>
|
414 |
+
</div>
|
415 |
+
|
416 |
+
<div class = "footer-item">
|
417 |
+
<h3 class = "footer-item-title">Help</h3>
|
418 |
+
<ul class = "footer-links">
|
419 |
+
<li><a href = "#">Help center</a></li>
|
420 |
+
<li><a href = "#">Contact support</a></li>
|
421 |
+
<li><a href = "#">Instructions</a></li>
|
422 |
+
<li><a href = "#">How it works</a></li>
|
423 |
+
</ul>
|
424 |
+
</div>
|
425 |
+
</div>
|
426 |
+
</div>
|
427 |
+
</div>
|
428 |
+
|
429 |
+
<div class = "footer-element-1">
|
430 |
+
<img src="{{ url_for('static', filename='images/element-img-4.png') }}" alt="">
|
431 |
+
|
432 |
+
</div>
|
433 |
+
<div class = "footer-element-2">
|
434 |
+
<img src="{{ url_for('static', filename='images/element-img-5.png') }}" alt="">
|
435 |
+
|
436 |
+
</div>
|
437 |
+
</footer>
|
438 |
+
</div>
|
439 |
+
|
440 |
+
|
441 |
+
|
442 |
+
|
443 |
+
|
444 |
+
|
445 |
+
|
446 |
+
|
447 |
+
<!-- jquery cdn -->
|
448 |
+
<script src="https://code.jquery.com/jquery-3.6.4.js" integrity="sha256-a9jBBRygX1Bh5lt8GZjXDzyOB+bWve9EiO7tROUtj/E=" crossorigin="anonymous"></script>
|
449 |
+
<!-- owl carousel -->
|
450 |
+
<script src="https://cdnjs.cloudflare.com/ajax/libs/OwlCarousel2/2.3.4/owl.carousel.min.js" integrity="sha512-bPs7Ae6pVvhOSiIcyUClR7/q2OAsRiovw4vAkX+zJbw3ShAeeqezq50RIIcIURq7Oa20rW2n2q+fyXBNcU9lrw==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
|
451 |
+
<!-- custom js -->
|
452 |
+
<script src="{{ url_for('static', filename='js/script.js') }}"></script>
|
453 |
+
|
454 |
+
|
455 |
+
<script>
|
456 |
+
function sendRequest(input) {
|
457 |
+
fetch('http://localhost:5000/chatbot', {
|
458 |
+
method: 'POST',
|
459 |
+
headers: {
|
460 |
+
'Content-Type': 'application/json'
|
461 |
+
},
|
462 |
+
body: JSON.stringify({ input: input })
|
463 |
+
})
|
464 |
+
.then(response => response.json())
|
465 |
+
.then(data => {
|
466 |
+
// Display bot response
|
467 |
+
var botHtml = '<div class="d-flex justify-content-start mb-4"><div class="img_cont_msg"><img src="https://img.freepik.com/free-vector/doctor-character-background_1270-84.jpg?t=st=1711953478~exp=1711957078~hmac=02ec96e4ef878f0702a696389fada16b95b12e21cbc66b1e1a418f6ad64e9ee3&w=740" class="rounded-circle user_img_msg"></div><div class="msg_cotainer">' + data.output + '<span class="msg_time">' + str_time + '</span></div></div>';
|
468 |
+
$("#messageForm").append($.parseHTML(botHtml)); // Append bot response to conversation
|
469 |
+
scrollToBottom(); // Scroll to bottom after appending bot response
|
470 |
+
})
|
471 |
+
.catch(error => console.error('Error:', error));
|
472 |
+
}
|
473 |
+
|
474 |
+
$("#messageArea").on("submit", function (event) {
|
475 |
+
// Prevent form submission
|
476 |
+
event.preventDefault();
|
477 |
+
// Get current time
|
478 |
+
const date = new Date();
|
479 |
+
const hour = date.getHours();
|
480 |
+
const minute = date.getMinutes();
|
481 |
+
const str_time = hour + ":" + minute;
|
482 |
+
// Get user input
|
483 |
+
var rawText = $("#text").val();
|
484 |
+
// Display user message
|
485 |
+
var userHtml = '<div class="d-flex justify-content-end mb-4"><div class="msg_cotainer_send">' + rawText + '<span class="msg_time_send">' + str_time + '</span></div><div class="img_cont_msg"><img src="https://cdn-icons-png.flaticon.com/512/4140/4140038.png" class="rounded-circle user_img_msg"></div></div>';
|
486 |
+
$("#text").val(""); // Clear input field
|
487 |
+
$("#messageForm").append(userHtml);
|
488 |
+
scrollToBottom();// Append user message to conversation
|
489 |
+
// Send user message to Python server
|
490 |
+
sendRequest(rawText);
|
491 |
+
});
|
492 |
+
|
493 |
+
</script>
|
494 |
+
</body>
|
495 |
+
</html>
|
templates/med_chatbot.html
ADDED
@@ -0,0 +1,562 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
|
2 |
+
<!DOCTYPE html>
|
3 |
+
<html>
|
4 |
+
<head>
|
5 |
+
<title>MediBot</title>
|
6 |
+
<link rel="icon"
|
7 |
+
href="https://img.freepik.com/premium-photo/red-medical-caduceus-symbol-white-background-3d-rendering_476612-15069.jpg"
|
8 |
+
class="rounded-circle user_img_msg">
|
9 |
+
<link href="//maxcdn.bootstrapcdn.com/bootstrap/4.1.1/css/bootstrap.min.css" rel="stylesheet" id="bootstrap-css">
|
10 |
+
<script src="//maxcdn.bootstrapcdn.com/bootstrap/4.1.1/js/bootstrap.min.js"></script>
|
11 |
+
<script src="//cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
|
12 |
+
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css"
|
13 |
+
integrity="sha384-MCw98/SFnGE8fJT3GXwEOngsV7Zt27NXFoaoApmYm81iuXoPkFOJwJ8ERdknLPMO" crossorigin="anonymous">
|
14 |
+
<script src="https://kit.fontawesome.com/d75ed78aeb.js" crossorigin="anonymous"></script>
|
15 |
+
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
|
16 |
+
<!-- font awesome -->
|
17 |
+
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css" integrity="sha512-iecdLmaskl7CVkqkXNQ/ZH/XLlvWZOJyj7Yy7tcenmpD1ypASozpmT/E0iPtmFIB46ZmdtAc9eNBvH0H/ZpiBw==" crossorigin="anonymous" referrerpolicy="no-referrer" />
|
18 |
+
<!-- owl carousel -->
|
19 |
+
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/OwlCarousel2/2.3.4/assets/owl.carousel.min.css" integrity="sha512-tS3S5qG0BlhnQROyJXvNjeEM4UpMXHrQfTGmbQ1gKmelCxlSEBUaxhRBj/EFTzpbP4RVSrpEikbmdJobCvhE3g==" crossorigin="anonymous" referrerpolicy="no-referrer" />
|
20 |
+
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/OwlCarousel2/2.3.4/assets/owl.theme.default.min.css" integrity="sha512-sMXtMNL1zRzolHYKEujM2AqCLUR9F2C4/05cdbxjjLSRvMQIciEPCQZo++nk7go3BtSuK9kfa/s+a4f4i5pLkw==" crossorigin="anonymous" referrerpolicy="no-referrer" />
|
21 |
+
<!-- custom css -->
|
22 |
+
<link rel = "stylesheet" href = "assets/css/main.css" />
|
23 |
+
<link rel = "stylesheet" href = "assets/css/utilities.css" />
|
24 |
+
<!-- normalize.css -->
|
25 |
+
<link rel="stylesheet" type="text/css" href="{{ url_for('static', filename='css/main.css') }}">
|
26 |
+
<link rel="stylesheet" type="text/css" href="{{ url_for('static', filename='css/utilities.css') }}">
|
27 |
+
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/normalize/8.0.1/normalize.min.css" integrity="sha512-NhSC1YmyruXifcj/KFRWoC561YpHpc5Jtzgvbuzx5VozKpWvQ+4nXhPdFgmx8xqexRcpAglTj9sIBWINXa8x5w==" crossorigin="anonymous" referrerpolicy="no-referrer" />
|
28 |
+
|
29 |
+
<style>
|
30 |
+
/* Paste your CSS code here */
|
31 |
+
body, html {
|
32 |
+
height: 100%;
|
33 |
+
margin: 0;
|
34 |
+
background-image: url('https://img.freepik.com/free-psd/interior-luxury-hospital-hall-generative-ai_587448-2177.jpg?w=1380&t=st=1711982777~exp=1711983377~hmac=c51bf6095f681cd783f1ecd5fed9b3b1e9bb5365ac5658c820148020b7007cc2'); /* Your image URL */
|
35 |
+
background-size: cover;
|
36 |
+
background-position: center;
|
37 |
+
}
|
38 |
+
|
39 |
+
.home{
|
40 |
+
height: 100%;
|
41 |
+
margin: 0;
|
42 |
+
background-image: url('https://img.freepik.com/free-photo/view-medicine-bandage-arrangement_23-2149341577.jpg?w=1060&t=st=1712301512~exp=1712302112~hmac=a46f1498db978bec565130bed107dacb0f981979a61dc70f9ce52f62cfe9568d'); /* Your image URL */
|
43 |
+
background-size: cover;
|
44 |
+
background-position: center;
|
45 |
+
}
|
46 |
+
|
47 |
+
|
48 |
+
|
49 |
+
.chat {
|
50 |
+
margin-top: auto;
|
51 |
+
margin-bottom: auto;
|
52 |
+
}
|
53 |
+
|
54 |
+
.card {
|
55 |
+
height: 90vh;
|
56 |
+
width: 75vw;
|
57 |
+
border-radius: 25px !important;
|
58 |
+
background-color: rgba(255,255,255,0.9); /* white */
|
59 |
+
margin: auto; /* centering */
|
60 |
+
}
|
61 |
+
|
62 |
+
.home-card{
|
63 |
+
background: linear-gradient(135deg, rgba(255, 182, 193, 0.8), rgba(255, 105, 180, 0.8), rgba(186, 85, 211, 0.8));
|
64 |
+
display: flex;
|
65 |
+
justify-content: center;
|
66 |
+
align-items: center;
|
67 |
+
}
|
68 |
+
|
69 |
+
.chatbot-container{
|
70 |
+
display: flex;
|
71 |
+
flex-direction: column;
|
72 |
+
align-items: center;
|
73 |
+
gap: 20px;
|
74 |
+
}
|
75 |
+
|
76 |
+
.chatbot-container h2{
|
77 |
+
font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif; /* Adjust font-family as needed */
|
78 |
+
color: #fff; /* White color */
|
79 |
+
}
|
80 |
+
|
81 |
+
.chatbot-container h3 {
|
82 |
+
font-size: 24px;
|
83 |
+
color: #ffffffb1;
|
84 |
+
text-align: center;
|
85 |
+
line-height: 1.5;
|
86 |
+
margin-top: 20px;
|
87 |
+
font-family: 'Roboto', sans-serif; /* Apply special font */
|
88 |
+
}
|
89 |
+
|
90 |
+
.button {
|
91 |
+
display: inline-block;
|
92 |
+
padding: 10px 20px;
|
93 |
+
margin: 10px;
|
94 |
+
border: none;
|
95 |
+
border-radius: 5px;
|
96 |
+
cursor: pointer;
|
97 |
+
font-size: 16px;
|
98 |
+
color: #fff !important;
|
99 |
+
text-align: center;
|
100 |
+
text-decoration: none !important;
|
101 |
+
background: linear-gradient(135deg, #FF1493, #C71585); /* Default background */
|
102 |
+
transition: background 0.5s; /* Transition effect for background change */
|
103 |
+
}
|
104 |
+
|
105 |
+
.button:hover {
|
106 |
+
background: linear-gradient(135deg, #8A2BE2, #4B0082) !important; /* Gradient change on hover */
|
107 |
+
opacity: 0.8;
|
108 |
+
}
|
109 |
+
|
110 |
+
.button:active {
|
111 |
+
transform: translateY(1px) !important;
|
112 |
+
}
|
113 |
+
|
114 |
+
.contacts_body {
|
115 |
+
padding: 0.75rem 0 !important;
|
116 |
+
overflow-y: auto;
|
117 |
+
white-space: nowrap;
|
118 |
+
}
|
119 |
+
|
120 |
+
.msg_card_body {
|
121 |
+
overflow-y: auto;
|
122 |
+
}
|
123 |
+
|
124 |
+
.card-header {
|
125 |
+
border-radius: 15px 15px 0 0 !important;
|
126 |
+
border-bottom: 0 !important;
|
127 |
+
}
|
128 |
+
|
129 |
+
.card-footer {
|
130 |
+
border-radius: 0 0 15px 15px !important;
|
131 |
+
border-top: 0 !important;
|
132 |
+
}
|
133 |
+
|
134 |
+
.container {
|
135 |
+
align-content: center;
|
136 |
+
}
|
137 |
+
|
138 |
+
.search {
|
139 |
+
border-radius: 15px 0 0 15px !important;
|
140 |
+
background-color: rgba(241, 242, 242, 1) !important; /* semi-transparent white */
|
141 |
+
border:0 !important;
|
142 |
+
color: #333 !important; /* dark gray */
|
143 |
+
}
|
144 |
+
|
145 |
+
.search:focus {
|
146 |
+
box-shadow: none !important;
|
147 |
+
outline: 0px !important;
|
148 |
+
}
|
149 |
+
|
150 |
+
.type_msg {
|
151 |
+
background-color: rgba(255,255,255,0) !important; /* semi-transparent white */
|
152 |
+
color: #333 !important; /* dark gray */
|
153 |
+
height: 60px !important;
|
154 |
+
border: 0px;
|
155 |
+
overflow-y: auto;
|
156 |
+
text-transform: capitalize;
|
157 |
+
}
|
158 |
+
|
159 |
+
.type_msg:focus {
|
160 |
+
box-shadow: none !important;
|
161 |
+
outline: 0px !important;
|
162 |
+
}
|
163 |
+
|
164 |
+
.attach_btn,
|
165 |
+
.send_btn,
|
166 |
+
.search_btn {
|
167 |
+
border-radius: 9px 9px 9px 9px !important;
|
168 |
+
height: 60px;
|
169 |
+
background-color: rgba(30, 48, 80, 1) !important; /* semi-transparent white */
|
170 |
+
border: 0 !important;
|
171 |
+
color: #fff !important; /* dark gray */
|
172 |
+
cursor: pointer;
|
173 |
+
}
|
174 |
+
|
175 |
+
.contacts {
|
176 |
+
list-style: none;
|
177 |
+
padding: 0;
|
178 |
+
}
|
179 |
+
|
180 |
+
.contacts li {
|
181 |
+
width: 100% !important;
|
182 |
+
padding: 5px 10px;
|
183 |
+
margin-bottom: 15px !important;
|
184 |
+
}
|
185 |
+
|
186 |
+
.active {
|
187 |
+
background-color: rgba(255,255,255,0.3);
|
188 |
+
}
|
189 |
+
|
190 |
+
.user_img,
|
191 |
+
.user_img_msg {
|
192 |
+
height: 55px;
|
193 |
+
width: 55px;
|
194 |
+
border: 1.5px solid #f5f6fa;
|
195 |
+
}
|
196 |
+
|
197 |
+
.img_cont,
|
198 |
+
.img_cont_msg {
|
199 |
+
position: relative;
|
200 |
+
height: 70px;
|
201 |
+
width: 70px;
|
202 |
+
}
|
203 |
+
|
204 |
+
.user_info {
|
205 |
+
margin-top: auto;
|
206 |
+
margin-bottom: auto;
|
207 |
+
margin-left: 15px;
|
208 |
+
font-weight: bold;
|
209 |
+
letter-spacing: 1px;
|
210 |
+
}
|
211 |
+
|
212 |
+
.user_info span {
|
213 |
+
font-size: 20px;
|
214 |
+
color: #333;
|
215 |
+
}
|
216 |
+
|
217 |
+
.user_info p {
|
218 |
+
font-size: 10px;
|
219 |
+
color: rgba(51,51,51,0.6);
|
220 |
+
}
|
221 |
+
|
222 |
+
.video_cam {
|
223 |
+
margin-left: 50px;
|
224 |
+
margin-top: 5px;
|
225 |
+
}
|
226 |
+
|
227 |
+
.video_cam span {
|
228 |
+
color: #333;
|
229 |
+
font-size: 20px;
|
230 |
+
cursor: pointer;
|
231 |
+
margin-right: 20px;
|
232 |
+
}
|
233 |
+
|
234 |
+
.msg_cotainer,
|
235 |
+
.msg_cotainer_send {
|
236 |
+
margin-top: auto;
|
237 |
+
margin-bottom: auto;
|
238 |
+
margin-left: 10px;
|
239 |
+
border-radius: 25px;
|
240 |
+
background-color: #1e3050; /* light blue */
|
241 |
+
padding: 10px;
|
242 |
+
position: relative;
|
243 |
+
color: #fff; /* white */
|
244 |
+
}
|
245 |
+
|
246 |
+
.msg_cotainer_send {
|
247 |
+
margin-right: 10px;
|
248 |
+
background-color: #0ca678; /* green */
|
249 |
+
}
|
250 |
+
|
251 |
+
.msg_cotainer span {
|
252 |
+
font-size: 14px; /* Adjust font size for regular text */
|
253 |
+
}
|
254 |
+
|
255 |
+
.msg_cotainer strong {
|
256 |
+
font-size: 18px; /* Adjust font size for titles or topics */
|
257 |
+
color: #FF1493; /* Adjust color for titles or topics */
|
258 |
+
}
|
259 |
+
|
260 |
+
.msg_time,
|
261 |
+
.msg_time_send {
|
262 |
+
position: absolute;
|
263 |
+
bottom: -15px;
|
264 |
+
color: rgba(0,0,0,0.5);
|
265 |
+
font-size: 10px;
|
266 |
+
}
|
267 |
+
|
268 |
+
.msg_head {
|
269 |
+
position: relative;
|
270 |
+
}
|
271 |
+
|
272 |
+
#action_menu_btn {
|
273 |
+
position: absolute;
|
274 |
+
right: 10px;
|
275 |
+
top: 10px;
|
276 |
+
color: #333;
|
277 |
+
cursor: pointer;
|
278 |
+
font-size: 20px;
|
279 |
+
}
|
280 |
+
|
281 |
+
.action_menu {
|
282 |
+
z-index: 1;
|
283 |
+
position: absolute;
|
284 |
+
padding: 15px 0;
|
285 |
+
background-color: rgba(255,255,255,0.5);
|
286 |
+
color: #333;
|
287 |
+
border-radius: 15px;
|
288 |
+
top: 30px;
|
289 |
+
right: 15px;
|
290 |
+
display: none;
|
291 |
+
}
|
292 |
+
|
293 |
+
.action_menu ul {
|
294 |
+
list-style: none;
|
295 |
+
padding: 0;
|
296 |
+
margin: 0;
|
297 |
+
}
|
298 |
+
|
299 |
+
.action_menu ul li {
|
300 |
+
width: 100%;
|
301 |
+
padding: 10px 15px;
|
302 |
+
margin-bottom: 5px;
|
303 |
+
}
|
304 |
+
|
305 |
+
.action_menu ul li i {
|
306 |
+
padding-right: 10px;
|
307 |
+
}
|
308 |
+
|
309 |
+
.action_menu ul li:hover {
|
310 |
+
cursor: pointer;
|
311 |
+
background-color: rgba(255,255,255,0.2);
|
312 |
+
}
|
313 |
+
|
314 |
+
@media(max-width: 576px) {
|
315 |
+
.contacts_card {
|
316 |
+
margin-bottom: 15px !important;
|
317 |
+
}
|
318 |
+
}
|
319 |
+
|
320 |
+
.navbar-brand .brand-shape {
|
321 |
+
width: 41px;
|
322 |
+
height: 41px;
|
323 |
+
border-radius: 50%;
|
324 |
+
background-color: var(--clr-white);
|
325 |
+
font-size: 26px;
|
326 |
+
display: flex !important;
|
327 |
+
align-items: center;
|
328 |
+
justify-content: center;
|
329 |
+
font-weight: 700;
|
330 |
+
margin-right: 12px;
|
331 |
+
color: var(--clr-blue);
|
332 |
+
}
|
333 |
+
|
334 |
+
.d-inline-block {
|
335 |
+
display: inline-block;
|
336 |
+
}
|
337 |
+
|
338 |
+
.text-white {
|
339 |
+
color: var(--clr-white);
|
340 |
+
}
|
341 |
+
|
342 |
+
.navbar {
|
343 |
+
padding: 30px 0 30px 0;
|
344 |
+
}
|
345 |
+
|
346 |
+
.header {
|
347 |
+
position: relative;
|
348 |
+
min-height: 10vh;
|
349 |
+
background-color: var(--clr-blue);
|
350 |
+
}
|
351 |
+
|
352 |
+
*, *::before, *::after {
|
353 |
+
box-sizing: border-box;
|
354 |
+
margin: 0;
|
355 |
+
padding: 0;
|
356 |
+
}
|
357 |
+
|
358 |
+
.nav {
|
359 |
+
display: block;
|
360 |
+
unicode-bidi: isolate;
|
361 |
+
}
|
362 |
+
|
363 |
+
.align-items-center {
|
364 |
+
align-items: center;
|
365 |
+
}
|
366 |
+
|
367 |
+
.d-flex {
|
368 |
+
display: flex;
|
369 |
+
}
|
370 |
+
|
371 |
+
|
372 |
+
/* Add the rest of your CSS styles here */
|
373 |
+
</style>
|
374 |
+
<link rel="stylesheet" type="text/css" href="./style.css"/>
|
375 |
+
</head>
|
376 |
+
|
377 |
+
<body>
|
378 |
+
|
379 |
+
|
380 |
+
<!-- header -->
|
381 |
+
<header class = "header">
|
382 |
+
<nav class = "navbar">
|
383 |
+
<div class="container">
|
384 |
+
<div class="navbar-content d-flex justify-content-between align-items-center">
|
385 |
+
<div class = "brand-and-toggler d-flex align-items-center justify-content-between">
|
386 |
+
<a href = "#" class = "navbar-brand d-flex align-items-center">
|
387 |
+
<span class="brand-shape d-inline-block">M</span>
|
388 |
+
<span class="brand-text fw-7">MediAssist</span>
|
389 |
+
</a>
|
390 |
+
<button type = "button" class = "d-none navbar-show-btn">
|
391 |
+
<i class = "fas fa-bars"></i>
|
392 |
+
</button>
|
393 |
+
</div>
|
394 |
+
|
395 |
+
<div class = "navbar-box">
|
396 |
+
<button type = "button" class = "navbar-hide-btn">
|
397 |
+
<i class = "fas fa-times"></i>
|
398 |
+
</button>
|
399 |
+
|
400 |
+
<ul class = "navbar-nav d-flex align-items-center">
|
401 |
+
<li class = "nav-item">
|
402 |
+
<a href = "/" class = "nav-link text-white nav-active text-nowrap">Home</a>
|
403 |
+
</li>
|
404 |
+
|
405 |
+
</ul>
|
406 |
+
</div>
|
407 |
+
</div>
|
408 |
+
</div>
|
409 |
+
</nav>
|
410 |
+
</header>
|
411 |
+
|
412 |
+
|
413 |
+
|
414 |
+
|
415 |
+
|
416 |
+
<div class="container-fluid h-100">
|
417 |
+
<div class="row justify-content-center h-100">
|
418 |
+
<div class="card">
|
419 |
+
<div class="card-header msg_head">
|
420 |
+
<div class="d-flex bd-highlight">
|
421 |
+
<div class="img_cont">
|
422 |
+
<img src="https://img.freepik.com/free-vector/doctor-character-background_1270-84.jpg?t=st=1711953478~exp=1711957078~hmac=02ec96e4ef878f0702a696389fada16b95b12e21cbc66b1e1a418f6ad64e9ee3&w=740"
|
423 |
+
class="rounded-circle user_img">
|
424 |
+
</div>
|
425 |
+
<div class="user_info">
|
426 |
+
<span>MediBot</span>
|
427 |
+
<p>Empowering Your Health Journey</p>
|
428 |
+
</div>
|
429 |
+
</div>
|
430 |
+
</div>
|
431 |
+
<div id="messageForm" class="card-body msg_card_body" style="overflow-y: auto; height: 400px;">
|
432 |
+
|
433 |
+
</div>
|
434 |
+
<div class="card-footer">
|
435 |
+
<form id="messageArea" class="input-group">
|
436 |
+
<input type="text" id="text" name="msg" placeholder="Message" autocomplete="off"
|
437 |
+
class="form-control type_msg" required/>
|
438 |
+
<div class="input-group-append">
|
439 |
+
<button type="submit" id="send" class="input-group-text send_btn"><i
|
440 |
+
class="fa-solid fa-arrow-right"></i></button>
|
441 |
+
</div>
|
442 |
+
</form>
|
443 |
+
</div>
|
444 |
+
</div>
|
445 |
+
</div>
|
446 |
+
</div>
|
447 |
+
|
448 |
+
<!-- <script>
|
449 |
+
$(document).ready(function () {
|
450 |
+
// Function to initiate conversation
|
451 |
+
$(window).on('load', function () {
|
452 |
+
scrollToBottom();
|
453 |
+
// Get current time
|
454 |
+
const date = new Date();
|
455 |
+
const hour = date.getHours();
|
456 |
+
const minute = date.getMinutes();
|
457 |
+
const str_time = hour + ":" + minute;
|
458 |
+
// Display bot's initial message
|
459 |
+
var initialMessage = "How may I assist you with your medical inquiries or issues?";
|
460 |
+
var botHtml = '<div class="d-flex justify-content-start mb-4"><div class="img_cont_msg"><img src="https://img.freepik.com/free-vector/doctor-character-background_1270-84.jpg?t=st=1711953478~exp=1711957078~hmac=02ec96e4ef878f0702a696389fada16b95b12e21cbc66b1e1a418f6ad64e9ee3&w=740" class="rounded-circle user_img_msg"></div><div class="msg_cotainer">' + initialMessage + '<span class="msg_time">' + str_time + '</span></div></div>';
|
461 |
+
$("#messageForm").append($.parseHTML(botHtml)); // Append bot's initial message to conversation
|
462 |
+
});
|
463 |
+
|
464 |
+
// Function to send user message and receive response
|
465 |
+
$("#messageArea").on("submit", function (event) {
|
466 |
+
// Prevent form submission
|
467 |
+
event.preventDefault();
|
468 |
+
|
469 |
+
// Get current time
|
470 |
+
const date = new Date();
|
471 |
+
const hour = date.getHours();
|
472 |
+
const minute = date.getMinutes();
|
473 |
+
const str_time = hour + ":" + minute;
|
474 |
+
|
475 |
+
// Get user input
|
476 |
+
var rawText = $("#text").val();
|
477 |
+
|
478 |
+
// Display user message
|
479 |
+
var userHtml = '<div class="d-flex justify-content-end mb-4"><div class="msg_cotainer_send">' + rawText + '<span class="msg_time_send">' + str_time + '</span></div><div class="img_cont_msg"><img src="https://cdn-icons-png.flaticon.com/512/4140/4140038.png" class="rounded-circle user_img_msg"></div></div>';
|
480 |
+
$("#text").val(""); // Clear input field
|
481 |
+
$("#messageForm").append(userHtml);
|
482 |
+
scrollToBottom();// Append user message to conversation
|
483 |
+
|
484 |
+
// Send user message to server and get response
|
485 |
+
$.ajax({
|
486 |
+
data: {msg: rawText},
|
487 |
+
type: "POST",
|
488 |
+
url: "/get",
|
489 |
+
success: function (data) {
|
490 |
+
// Display bot response
|
491 |
+
var botHtml = '<div class="d-flex justify-content-start mb-4"><div class="img_cont_msg"><img src="https://img.freepik.com/free-vector/doctor-character-background_1270-84.jpg?t=st=1711953478~exp=1711957078~hmac=02ec96e4ef878f0702a696389fada16b95b12e21cbc66b1e1a418f6ad64e9ee3&w=740" class="rounded-circle user_img_msg"></div><div class="msg_cotainer">' + data + '<span class="msg_time">' + str_time + '</span></div></div>';
|
492 |
+
$("#messageForm").append($.parseHTML(botHtml)); // Append bot response to conversation
|
493 |
+
scrollToBottom(); // Scroll to bottom after appending bot response
|
494 |
+
}
|
495 |
+
});
|
496 |
+
});
|
497 |
+
|
498 |
+
// Function to scroll to the bottom of the chat window
|
499 |
+
function scrollToBottom() {
|
500 |
+
var chatWindow = document.getElementById("messageForm");
|
501 |
+
chatWindow.scrollTop = chatWindow.scrollHeight;
|
502 |
+
}
|
503 |
+
});
|
504 |
+
|
505 |
+
</script> -->
|
506 |
+
|
507 |
+
<script>
|
508 |
+
$(document).ready(function () {
|
509 |
+
// Function to initiate conversation
|
510 |
+
$(window).on('load', function () {
|
511 |
+
scrollToBottom();
|
512 |
+
// Get current time
|
513 |
+
const date = new Date();
|
514 |
+
const hour = date.getHours();
|
515 |
+
const minute = date.getMinutes();
|
516 |
+
const str_time = hour + ":" + minute;
|
517 |
+
// Display bot's initial message
|
518 |
+
var initialMessage = "How may I assist you with your medical inquiries or issues?";
|
519 |
+
var botHtml = '<div class="d-flex justify-content-start mb-4"><div class="img_cont_msg"><img src="https://img.freepik.com/free-vector/doctor-character-background_1270-84.jpg?t=st=1711953478~exp=1711957078~hmac=02ec96e4ef878f0702a696389fada16b95b12e21cbc66b1e1a418f6ad64e9ee3&w=740" class="rounded-circle user_img_msg"></div><div class="msg_cotainer">' + initialMessage + '<span class="msg_time">' + str_time + '</span></div></div>';
|
520 |
+
$("#messageForm").append($.parseHTML(botHtml)); // Append bot's initial message to conversation
|
521 |
+
});
|
522 |
+
// Function to send user message and receive response
|
523 |
+
$("#messageArea").on("submit", function (event) {
|
524 |
+
// Prevent form submission
|
525 |
+
event.preventDefault();
|
526 |
+
// Get current time
|
527 |
+
const date = new Date();
|
528 |
+
const hour = date.getHours();
|
529 |
+
const minute = date.getMinutes();
|
530 |
+
const str_time = hour + ":" + minute;
|
531 |
+
// Get user input
|
532 |
+
var rawText = $("#text").val();
|
533 |
+
// Display user message
|
534 |
+
var userHtml = '<div class="d-flex justify-content-end mb-4"><div class="msg_cotainer_send">' + rawText + '<span class="msg_time_send">' + str_time + '</span></div><div class="img_cont_msg"><img src="https://cdn-icons-png.flaticon.com/512/4140/4140038.png" class="rounded-circle user_img_msg"></div></div>';
|
535 |
+
$("#text").val(""); // Clear input field
|
536 |
+
$("#messageForm").append(userHtml);
|
537 |
+
scrollToBottom();// Append user message to conversation
|
538 |
+
// Send user message to server and get response
|
539 |
+
$.ajax({
|
540 |
+
data: {msg: rawText},
|
541 |
+
type: "POST",
|
542 |
+
url: "/get",
|
543 |
+
success: function (data) {
|
544 |
+
// Display bot response
|
545 |
+
var botHtml = '<div class="d-flex justify-content-start mb-4"><div class="img_cont_msg"><img src="https://img.freepik.com/free-vector/doctor-character-background_1270-84.jpg?t=st=1711953478~exp=1711957078~hmac=02ec96e4ef878f0702a696389fada16b95b12e21cbc66b1e1a418f6ad64e9ee3&w=740" class="rounded-circle user_img_msg"></div><div class="msg_cotainer">' + data.response + '<span class="msg_time">' + str_time + '</span></div></div>';
|
546 |
+
$("#messageForm").append($.parseHTML(botHtml)); // Append bot response to conversation
|
547 |
+
scrollToBottom(); // Scroll to bottom after appending bot response
|
548 |
+
}
|
549 |
+
});
|
550 |
+
});
|
551 |
+
// Function to scroll to the bottom of the chat window
|
552 |
+
function scrollToBottom() {
|
553 |
+
var chatWindow = document.getElementById("messageForm");
|
554 |
+
chatWindow.scrollTop = chatWindow.scrollHeight;
|
555 |
+
}
|
556 |
+
});
|
557 |
+
</script>
|
558 |
+
|
559 |
+
|
560 |
+
|
561 |
+
</body>
|
562 |
+
</html>
|
templates/skin_disease_identification.html
ADDED
@@ -0,0 +1,39 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<!DOCTYPE html>
|
2 |
+
<html lang="en">
|
3 |
+
<head>
|
4 |
+
<meta charset="UTF-8">
|
5 |
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
6 |
+
<title>Hugging Face Space Embed</title>
|
7 |
+
<!-- Add any additional styles or scripts here -->
|
8 |
+
<style>
|
9 |
+
/* Add custom CSS styles here if needed */
|
10 |
+
body {
|
11 |
+
margin: 0;
|
12 |
+
padding: 0;
|
13 |
+
font-family: Arial, sans-serif;
|
14 |
+
}
|
15 |
+
.container {
|
16 |
+
width: 100%;
|
17 |
+
max-width: 1200px;
|
18 |
+
margin: 0 auto;
|
19 |
+
padding: 20px;
|
20 |
+
}
|
21 |
+
iframe {
|
22 |
+
width: 100%;
|
23 |
+
height: 900px; /* You can adjust the height as needed */
|
24 |
+
border: none;
|
25 |
+
}
|
26 |
+
</style>
|
27 |
+
</head>
|
28 |
+
<body>
|
29 |
+
<!-- Paste your iframe code here -->
|
30 |
+
<iframe
|
31 |
+
src="https://apurv20-skin-disease-identification-v3.hf.space"
|
32 |
+
frameborder="0"
|
33 |
+
width="850"
|
34 |
+
height="450"
|
35 |
+
></iframe>
|
36 |
+
|
37 |
+
|
38 |
+
</body>
|
39 |
+
</html>
|
templates/style.css
ADDED
@@ -0,0 +1,279 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
body, html {
|
2 |
+
height: 100%;
|
3 |
+
margin: 0;
|
4 |
+
background-image: url('https://img.freepik.com/free-psd/interior-luxury-hospital-hall-generative-ai_587448-2177.jpg?w=1380&t=st=1711982777~exp=1711983377~hmac=c51bf6095f681cd783f1ecd5fed9b3b1e9bb5365ac5658c820148020b7007cc2'); /* Your image URL */
|
5 |
+
background-size: cover;
|
6 |
+
background-position: center;
|
7 |
+
}
|
8 |
+
|
9 |
+
.home{
|
10 |
+
height: 100%;
|
11 |
+
margin: 0;
|
12 |
+
background-image: url('https://img.freepik.com/free-photo/view-medicine-bandage-arrangement_23-2149341577.jpg?w=1060&t=st=1712301512~exp=1712302112~hmac=a46f1498db978bec565130bed107dacb0f981979a61dc70f9ce52f62cfe9568d'); /* Your image URL */
|
13 |
+
background-size: cover;
|
14 |
+
background-position: center;
|
15 |
+
}
|
16 |
+
|
17 |
+
|
18 |
+
|
19 |
+
.chat {
|
20 |
+
margin-top: auto;
|
21 |
+
margin-bottom: auto;
|
22 |
+
}
|
23 |
+
|
24 |
+
.card {
|
25 |
+
height: 70vh;
|
26 |
+
width: 75vw;
|
27 |
+
border-radius: 25px !important;
|
28 |
+
background-color: rgba(255,255,255,0.9); /* white */
|
29 |
+
margin: auto; /* centering */
|
30 |
+
}
|
31 |
+
|
32 |
+
.home-card{
|
33 |
+
background: linear-gradient(135deg, rgba(255, 182, 193, 0.8), rgba(255, 105, 180, 0.8), rgba(186, 85, 211, 0.8));
|
34 |
+
display: flex;
|
35 |
+
justify-content: center;
|
36 |
+
align-items: center;
|
37 |
+
}
|
38 |
+
|
39 |
+
.chatbot-container{
|
40 |
+
display: flex;
|
41 |
+
flex-direction: column;
|
42 |
+
align-items: center;
|
43 |
+
gap: 20px;
|
44 |
+
}
|
45 |
+
|
46 |
+
.chatbot-container h2{
|
47 |
+
font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif; /* Adjust font-family as needed */
|
48 |
+
color: #fff; /* White color */
|
49 |
+
}
|
50 |
+
|
51 |
+
.chatbot-container h3 {
|
52 |
+
font-size: 24px;
|
53 |
+
color: #ffffffb1;
|
54 |
+
text-align: center;
|
55 |
+
line-height: 1.5;
|
56 |
+
margin-top: 20px;
|
57 |
+
font-family: 'Roboto', sans-serif; /* Apply special font */
|
58 |
+
}
|
59 |
+
|
60 |
+
.button {
|
61 |
+
display: inline-block;
|
62 |
+
padding: 10px 20px;
|
63 |
+
margin: 10px;
|
64 |
+
border: none;
|
65 |
+
border-radius: 5px;
|
66 |
+
cursor: pointer;
|
67 |
+
font-size: 16px;
|
68 |
+
color: #fff !important;
|
69 |
+
text-align: center;
|
70 |
+
text-decoration: none !important;
|
71 |
+
background: linear-gradient(135deg, #FF1493, #C71585); /* Default background */
|
72 |
+
transition: background 0.5s; /* Transition effect for background change */
|
73 |
+
}
|
74 |
+
|
75 |
+
.button:hover {
|
76 |
+
background: linear-gradient(135deg, #8A2BE2, #4B0082) !important; /* Gradient change on hover */
|
77 |
+
opacity: 0.8;
|
78 |
+
}
|
79 |
+
|
80 |
+
.button:active {
|
81 |
+
transform: translateY(1px) !important;
|
82 |
+
}
|
83 |
+
|
84 |
+
.contacts_body {
|
85 |
+
padding: 0.75rem 0 !important;
|
86 |
+
overflow-y: auto;
|
87 |
+
white-space: nowrap;
|
88 |
+
}
|
89 |
+
|
90 |
+
.msg_card_body {
|
91 |
+
overflow-y: auto;
|
92 |
+
}
|
93 |
+
|
94 |
+
.card-header {
|
95 |
+
border-radius: 15px 15px 0 0 !important;
|
96 |
+
border-bottom: 0 !important;
|
97 |
+
}
|
98 |
+
|
99 |
+
.card-footer {
|
100 |
+
border-radius: 0 0 15px 15px !important;
|
101 |
+
border-top: 0 !important;
|
102 |
+
}
|
103 |
+
|
104 |
+
.container {
|
105 |
+
align-content: center;
|
106 |
+
}
|
107 |
+
|
108 |
+
.search {
|
109 |
+
border-radius: 15px 0 0 15px !important;
|
110 |
+
background-color: rgba(241, 242, 242, 1) !important; /* semi-transparent white */
|
111 |
+
border:0 !important;
|
112 |
+
color: #333 !important; /* dark gray */
|
113 |
+
}
|
114 |
+
|
115 |
+
.search:focus {
|
116 |
+
box-shadow: none !important;
|
117 |
+
outline: 0px !important;
|
118 |
+
}
|
119 |
+
|
120 |
+
.type_msg {
|
121 |
+
background-color: rgba(255,255,255,0) !important; /* semi-transparent white */
|
122 |
+
color: #333 !important; /* dark gray */
|
123 |
+
height: 60px !important;
|
124 |
+
border: 0px;
|
125 |
+
overflow-y: auto;
|
126 |
+
text-transform: capitalize;
|
127 |
+
}
|
128 |
+
|
129 |
+
.type_msg:focus {
|
130 |
+
box-shadow: none !important;
|
131 |
+
outline: 0px !important;
|
132 |
+
}
|
133 |
+
|
134 |
+
.attach_btn,
|
135 |
+
.send_btn,
|
136 |
+
.search_btn {
|
137 |
+
border-radius: 9px 9px 9px 9px !important;
|
138 |
+
height: 60px;
|
139 |
+
background-color: rgba(30, 48, 80, 1) !important; /* semi-transparent white */
|
140 |
+
border: 0 !important;
|
141 |
+
color: #fff !important; /* dark gray */
|
142 |
+
cursor: pointer;
|
143 |
+
}
|
144 |
+
|
145 |
+
.contacts {
|
146 |
+
list-style: none;
|
147 |
+
padding: 0;
|
148 |
+
}
|
149 |
+
|
150 |
+
.contacts li {
|
151 |
+
width: 100% !important;
|
152 |
+
padding: 5px 10px;
|
153 |
+
margin-bottom: 15px !important;
|
154 |
+
}
|
155 |
+
|
156 |
+
.active {
|
157 |
+
background-color: rgba(255,255,255,0.3);
|
158 |
+
}
|
159 |
+
|
160 |
+
.user_img,
|
161 |
+
.user_img_msg {
|
162 |
+
height: 55px;
|
163 |
+
width: 55px;
|
164 |
+
border: 1.5px solid #f5f6fa;
|
165 |
+
}
|
166 |
+
|
167 |
+
.img_cont,
|
168 |
+
.img_cont_msg {
|
169 |
+
position: relative;
|
170 |
+
height: 70px;
|
171 |
+
width: 70px;
|
172 |
+
}
|
173 |
+
|
174 |
+
.user_info {
|
175 |
+
margin-top: auto;
|
176 |
+
margin-bottom: auto;
|
177 |
+
margin-left: 15px;
|
178 |
+
font-weight: bold;
|
179 |
+
letter-spacing: 1px;
|
180 |
+
}
|
181 |
+
|
182 |
+
.user_info span {
|
183 |
+
font-size: 20px;
|
184 |
+
color: #333;
|
185 |
+
}
|
186 |
+
|
187 |
+
.user_info p {
|
188 |
+
font-size: 10px;
|
189 |
+
color: rgba(51,51,51,0.6);
|
190 |
+
}
|
191 |
+
|
192 |
+
.video_cam {
|
193 |
+
margin-left: 50px;
|
194 |
+
margin-top: 5px;
|
195 |
+
}
|
196 |
+
|
197 |
+
.video_cam span {
|
198 |
+
color: #333;
|
199 |
+
font-size: 20px;
|
200 |
+
cursor: pointer;
|
201 |
+
margin-right: 20px;
|
202 |
+
}
|
203 |
+
|
204 |
+
.msg_cotainer,
|
205 |
+
.msg_cotainer_send {
|
206 |
+
margin-top: auto;
|
207 |
+
margin-bottom: auto;
|
208 |
+
margin-left: 10px;
|
209 |
+
border-radius: 25px;
|
210 |
+
background-color: #1e3050; /* light blue */
|
211 |
+
padding: 10px;
|
212 |
+
position: relative;
|
213 |
+
color: #fff; /* white */
|
214 |
+
}
|
215 |
+
|
216 |
+
.msg_cotainer_send {
|
217 |
+
margin-right: 10px;
|
218 |
+
background-color: #0ca678; /* green */
|
219 |
+
}
|
220 |
+
|
221 |
+
.msg_time,
|
222 |
+
.msg_time_send {
|
223 |
+
position: absolute;
|
224 |
+
bottom: -15px;
|
225 |
+
color: rgba(0,0,0,0.5);
|
226 |
+
font-size: 10px;
|
227 |
+
}
|
228 |
+
|
229 |
+
.msg_head {
|
230 |
+
position: relative;
|
231 |
+
}
|
232 |
+
|
233 |
+
#action_menu_btn {
|
234 |
+
position: absolute;
|
235 |
+
right: 10px;
|
236 |
+
top: 10px;
|
237 |
+
color: #333;
|
238 |
+
cursor: pointer;
|
239 |
+
font-size: 20px;
|
240 |
+
}
|
241 |
+
|
242 |
+
.action_menu {
|
243 |
+
z-index: 1;
|
244 |
+
position: absolute;
|
245 |
+
padding: 15px 0;
|
246 |
+
background-color: rgba(255,255,255,0.5);
|
247 |
+
color: #333;
|
248 |
+
border-radius: 15px;
|
249 |
+
top: 30px;
|
250 |
+
right: 15px;
|
251 |
+
display: none;
|
252 |
+
}
|
253 |
+
|
254 |
+
.action_menu ul {
|
255 |
+
list-style: none;
|
256 |
+
padding: 0;
|
257 |
+
margin: 0;
|
258 |
+
}
|
259 |
+
|
260 |
+
.action_menu ul li {
|
261 |
+
width: 100%;
|
262 |
+
padding: 10px 15px;
|
263 |
+
margin-bottom: 5px;
|
264 |
+
}
|
265 |
+
|
266 |
+
.action_menu ul li i {
|
267 |
+
padding-right: 10px;
|
268 |
+
}
|
269 |
+
|
270 |
+
.action_menu ul li:hover {
|
271 |
+
cursor: pointer;
|
272 |
+
background-color: rgba(255,255,255,0.2);
|
273 |
+
}
|
274 |
+
|
275 |
+
@media(max-width: 576px) {
|
276 |
+
.contacts_card {
|
277 |
+
margin-bottom: 15px !important;
|
278 |
+
}
|
279 |
+
}
|