abhicodes commited on
Commit
41b4437
1 Parent(s): 5367e62

Upload 69 files

Browse files
This view is limited to 50 files because it contains too many changes.   See raw diff
.gitattributes CHANGED
@@ -33,3 +33,4 @@ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
33
  *.zip filter=lfs diff=lfs merge=lfs -text
34
  *.zst filter=lfs diff=lfs merge=lfs -text
35
  *tfevents* filter=lfs diff=lfs merge=lfs -text
 
 
33
  *.zip filter=lfs diff=lfs merge=lfs -text
34
  *.zst filter=lfs diff=lfs merge=lfs -text
35
  *tfevents* filter=lfs diff=lfs merge=lfs -text
36
+ static/505error.gif filter=lfs diff=lfs merge=lfs -text
app.py ADDED
@@ -0,0 +1,1137 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from flask import Flask, render_template, request, redirect, url_for, session
2
+ from nltk.sentiment.vader import SentimentIntensityAnalyzer
3
+ from flask_mysqldb import MySQL
4
+ import nltk
5
+ import io
6
+ import bcrypt
7
+ import datetime
8
+ import json
9
+ from flask_mail import *
10
+ import random
11
+ import smtplib, ssl
12
+ from email.message import EmailMessage
13
+ import secrets
14
+ import string
15
+ import time
16
+
17
+ nltk.download('vader_lexicon')
18
+
19
+ class SmileCheckApp:
20
+ def __init__(self):
21
+ self.app = Flask(__name__)
22
+ self.app.static_folder = 'static'
23
+ self.app.static_url_path = '/static'
24
+
25
+ self.app.secret_key = "smilecheck-abhi-2023"
26
+
27
+ self.app.config['MYSQL_HOST'] = 'localhost'
28
+ self.app.config['MYSQL_USER'] = 'root'
29
+ self.app.config['MYSQL_PASSWORD'] = ''
30
+ self.app.config['MYSQL_CURSORCLASS'] = 'DictCursor'
31
+ self.app.config['MYSQL_PORT'] = 3306
32
+
33
+ mysql = MySQL(self.app)
34
+
35
+ # @app.before_request
36
+ # def before_request():
37
+ # if request.path != '/logout' and 'email' in session:
38
+ # session.permanent = True
39
+ # app.permanent_session_lifetime = datetime.timedelta(minutes=1)
40
+ #
41
+ # @app.teardown_request
42
+ # def teardown_request(exception=None):
43
+ # if not session.permanent and 'email' in session: return redirect(url_for('logout'))
44
+
45
+ @self.app.route('/')
46
+ def index():
47
+ return render_template("index.html")
48
+
49
+
50
+ @self.app.route('/home', methods=["GET", "POST"])
51
+ def home():
52
+ if request.method == 'GET':
53
+ if 'email' in session:
54
+ self.app.config['MYSQL_DB'] = session['database']
55
+ curh = mysql.connection.cursor()
56
+ if session['usertype'] == 0:
57
+ curh.execute("SELECT `assessid`, `name` FROM assessments")
58
+ typedata = curh.fetchall()
59
+
60
+ curh.execute("SELECT `id`, `type` FROM custom WHERE id=%s", (session['id'],))
61
+ given = curh.fetchall()
62
+ isdone = []
63
+ for give in given:
64
+ isdone.append(give['type'])
65
+
66
+ typesgiven = []
67
+ for type in typedata:
68
+ typesgiven.append(type['assessid'])
69
+
70
+ curh.execute("SELECT `name`, `happy`, `datetime` FROM `custom`, `assessments` WHERE custom.type = assessments.assessId AND id=%s", (session['id'],))
71
+ previous = curh.fetchall()
72
+
73
+ return render_template("home.html", typedata=typedata, given=isdone, previous=previous)
74
+
75
+ elif session['usertype'] == 1:
76
+ return redirect(url_for('admin'))
77
+ mysql.connection.commit()
78
+ curh.close()
79
+ else:
80
+ return redirect(url_for('login'))
81
+
82
+ if request.method == 'POST':
83
+ if 'email' in session:
84
+ self.app.config['MYSQL_DB'] = session['database']
85
+
86
+ curh = mysql.connection.cursor()
87
+
88
+ if 'fname' in request.form:
89
+ fname = request.form['fname']
90
+ femail = request.form['femail']
91
+ feedback = request.form['feedback']
92
+ curh.execute("INSERT INTO `feedbacks`(`name`, `email`, `feedback`) VALUES (%s, %s, %s)", (fname, femail, feedback,))
93
+ mysql.connection.commit()
94
+ curh.close()
95
+ session['feed'] = 1
96
+ return redirect(url_for('home'))
97
+
98
+ curh.execute("SELECT * FROM users WHERE email=%s", (session['email'],))
99
+ user = curh.fetchone()
100
+
101
+ session['type'] = request.form['type']
102
+
103
+ curh.execute("SELECT `id`, `type` FROM custom WHERE id=%s AND type=%s", (session['id'], session['type'],))
104
+ given = curh.fetchone()
105
+ mysql.connection.commit()
106
+ curh.close()
107
+
108
+ if given == None:
109
+ return redirect(url_for('form'))
110
+ else:
111
+ return redirect(url_for('result'))
112
+
113
+ else:
114
+ return redirect(url_for('login'))
115
+
116
+ return render_template("home.html")
117
+
118
+
119
+ @self.app.route('/register', methods=["GET", "POST"])
120
+ def register():
121
+ now = datetime.datetime.now()
122
+ if request.method == 'GET':
123
+ return render_template("register.html", error_code=999, message_code=999)
124
+
125
+ if request.method == 'POST':
126
+ database = request.form['database']
127
+ if database == 'database1':
128
+ self.app.config['MYSQL_DB'] = 'test'
129
+ session['database'] = self.app.config['MYSQL_DB']
130
+ elif database == 'database2':
131
+ self.app.config['MYSQL_DB'] = 'test2'
132
+ session['database'] = self.app.config['MYSQL_DB']
133
+
134
+ name = request.form['name']
135
+ email = request.form['email']
136
+ cur = mysql.connection.cursor()
137
+ cur.execute("SELECT * FROM users WHERE email = %s", (email,))
138
+ user = cur.fetchone()
139
+ mysql.connection.commit()
140
+ cur.close()
141
+
142
+ if user:
143
+ error = 'Email address already in use. Please use a different email address.'
144
+ return render_template('register.html', error=error, error_code=550, message_code=569)
145
+ else:
146
+ session['name'] = name
147
+ session['email'] = email
148
+ usertype = 'student'
149
+ session['pretype'] = usertype
150
+ password = request.form['password'].encode('utf-8')
151
+ hash_password = bcrypt.hashpw(password, bcrypt.gensalt())
152
+ session['hash'] = hash_password
153
+
154
+ msg = EmailMessage()
155
+
156
+ # otp = random.randint(100000, 999999)
157
+ alphabet = string.ascii_letters + string.digits
158
+ otp = 'smilecheck-user-'+''.join(secrets.choice(alphabet) for i in range(30))
159
+ session['otp'] = otp
160
+ # with open('static\email.html?name={name}&otp={otp}', 'rb') as f:
161
+ # html_content = f.read().decode('utf-8')
162
+ # msg.set_content(html_content, subtype='html')
163
+
164
+ # msg.set_content("The body of the email is here")
165
+ msg["Subject"] = "SmileCheck Verification"
166
+ msg["From"] = "smilecheck100@gmail.com"
167
+ msg["To"] = email
168
+ link = f"http://127.0.0.1:5000/verify/{otp}"
169
+
170
+ html_content = render_template('email.html', name=name, link=link)
171
+ msg.set_content(html_content, subtype='html')
172
+
173
+ context = ssl.create_default_context()
174
+
175
+ with smtplib.SMTP_SSL('smtp.gmail.com', 465) as smtp:
176
+ smtp.login('smilecheck23@gmail.com', 'dczcfrdkthwcfoqu')
177
+ smtp.send_message(msg)
178
+
179
+ return render_template('register.html', message='An Verification Email has been sent to your email address.', message_code=560, error_code=568)
180
+
181
+ return redirect(url_for('home'))
182
+
183
+ # def getmail():
184
+ # if request.method=="POST":
185
+ # email = request.form['email']
186
+ # code = hashlib.md5(str(random.randint(0, 1000000)).encode()).hexdigest()
187
+ # session['code'] = code
188
+ # link = f"http://127.0.0.1:5000/verify/{code}"
189
+ # send_email(email, link)
190
+ # return "A verification email has been sent to your email address. Please click the link in the email to verify your email."
191
+
192
+ @self.app.route('/verify/<otp>')
193
+ def verify(otp):
194
+ now = datetime.datetime.now()
195
+ if str(session['otp']) == otp:
196
+ self.app.config['MYSQL_DB'] = session['database']
197
+
198
+ cur = mysql.connection.cursor()
199
+ cur.execute("INSERT INTO users (name, email, password) VALUES (%s,%s,%s)", (session['name'], session['email'], session['hash'],))
200
+
201
+ if session['pretype'] == 'student':
202
+ cur.execute("UPDATE `users` SET `usertype` = %s WHERE `email`=%s", (0, session['email'],))
203
+ session['usertype'] = 0
204
+ elif session['pretype'] == 'admin':
205
+ cur.execute("UPDATE `users` SET `usertype` = %s WHERE `email`=%s", (1, session['email'],))
206
+ session['usertype'] = 1
207
+
208
+ # cur.execute("SELECT `id` FROM users WHERE email = %s", (session['email'],))
209
+ # uid = cur.fetchone()
210
+ # session['id'] = uid['id']
211
+ # cur.execute("INSERT INTO session (id, email, action, actionC, datetime) VALUES (%s, %s, %s, %s, %s)", (session['id'], session['email'], 'Logged In - Session Started', 1, now,))
212
+ mysql.connection.commit()
213
+ cur.close()
214
+
215
+ #destroy session['otp'] and session['hash']
216
+ session.clear()
217
+
218
+ redi = 'login'
219
+ return render_template('verify.html', message=111, redirect_url=redi)
220
+
221
+ else:
222
+ redi = 'register'
223
+ return render_template('verify.html', message=999, redirect_url=redi)
224
+
225
+ # def send_email(email, link):
226
+ # subject = "Verify Your Email"
227
+ # body = f"Please click the following link to verify your email: {link}"
228
+ # message = f"Subject: {subject}\n\n{body}"
229
+ # sender_email = 'legendVI001@gmail.com' # replace with your email
230
+ # sender_password = 'ABC321VI01' # replace with your password
231
+ #
232
+ # with smtplib.SMTP_SSL('smtp.gmail.com', 465) as smtp:
233
+ # smtp.login(sender_email, sender_password)
234
+ # smtp.sendmail(sender_email, email, message)
235
+
236
+ @self.app.route('/login', methods=["GET", "POST"])
237
+ def login():
238
+ if request.method == 'GET':
239
+ return render_template("login.html", error_code=999)
240
+
241
+ if request.method == 'POST':
242
+ now = datetime.datetime.now()
243
+ database = request.form['database']
244
+ if database == 'database1':
245
+ self.app.config['MYSQL_DB'] = 'test'
246
+ elif database == 'database2':
247
+ self.app.config['MYSQL_DB'] = 'test2'
248
+
249
+ email = request.form['email']
250
+ password = request.form['password'].encode('utf-8')
251
+
252
+ curl = mysql.connection.cursor()
253
+ curl.execute("SELECT * FROM users WHERE email=%s", (email,))
254
+ user = curl.fetchone()
255
+
256
+ if user != None:
257
+ if bcrypt.hashpw(password, user["password"].encode('utf-8')) == user["password"].encode('utf-8'):
258
+
259
+ curl.execute("SELECT * FROM session WHERE email=%s ORDER BY `datetime` DESC LIMIT 1", (email,))
260
+ userses = curl.fetchone()
261
+
262
+ if userses == None or userses['actionC']==0:
263
+ session['id'] = user['id']
264
+ session['name'] = user['name']
265
+ session['email'] = user['email']
266
+ session['database'] = self.app.config['MYSQL_DB']
267
+
268
+ curl.execute("INSERT INTO session (id, email, action, actionC, datetime) VALUES (%s, %s, %s, %s, %s)", (session['id'], session['email'], 'Logged In - Session Started', 1, now,))
269
+ mysql.connection.commit()
270
+ curl.close()
271
+
272
+ if user['usertype'] == 0:
273
+ session['usertype'] = 0
274
+ return redirect(url_for('home'))
275
+ elif user['usertype'] == 1:
276
+ session['usertype'] = 1
277
+ return redirect(url_for('admin'))
278
+
279
+ elif userses['actionC'] == 1:
280
+ return render_template("login.html", error="Error: Session already in use.", error_code=450)
281
+
282
+ else:
283
+ return render_template("login.html", error="Error: Password or Email are incorrect.", error_code=451)
284
+
285
+ else:
286
+ return render_template("login.html", error="Error: User not found. Please register.", error_code=452)
287
+
288
+ mysql.connection.commit()
289
+ curl.close()
290
+ else:
291
+ return render_template("login.html")
292
+
293
+
294
+ @self.app.route('/forgot', methods=["GET", "POST"])
295
+ def forgot():
296
+ if request.method == 'GET':
297
+ return render_template("forgot.html")
298
+
299
+ if request.method == 'POST':
300
+ now = datetime.datetime.now()
301
+ self.app.config['MYSQL_DB'] = 'test'
302
+
303
+ email = request.form['email']
304
+ session['email'] = email
305
+
306
+ curl = mysql.connection.cursor()
307
+ curl.execute("SELECT * FROM users WHERE email=%s", (email,))
308
+ user = curl.fetchone()
309
+
310
+ mysql.connection.commit()
311
+ curl.close()
312
+
313
+ if user != None:
314
+ msg = EmailMessage()
315
+
316
+ name= user['name']
317
+
318
+ alphabet = string.ascii_letters + string.digits
319
+ otp = 'smilecheck-pass-' + ''.join(secrets.choice(alphabet) for i in range(30))
320
+ session['otp'] = otp
321
+ msg["Subject"] = "SmileCheck Verification"
322
+ msg["From"] = "smilecheck100@gmail.com"
323
+ msg["To"] = email
324
+ link = f"http://127.0.0.1:5000/password/{otp}"
325
+
326
+ html_content = render_template('pass.html', name=name, link=link)
327
+ msg.set_content(html_content, subtype='html')
328
+
329
+ context = ssl.create_default_context()
330
+
331
+ with smtplib.SMTP_SSL('smtp.gmail.com', 465) as smtp:
332
+ smtp.login('smilecheck23@gmail.com', 'dczcfrdkthwcfoqu')
333
+ smtp.send_message(msg)
334
+
335
+ return render_template('register.html', message='An Verification Email has been sent to your email address.', message_code=560, error_code=568)
336
+
337
+ else:
338
+ return render_template("forgot.html", mess="No such User Found.")
339
+
340
+
341
+ @self.app.route('/password/<otp>', methods=["GET", "POST"])
342
+ def password(otp):
343
+ now = datetime.datetime.now()
344
+ if str(session['otp']) == otp:
345
+ redi = 'change'
346
+ return render_template('password.html', message=111, redirect_url=redi)
347
+ else:
348
+ redi = 'login'
349
+ return render_template('password.html', message=999, redirect_url=redi)
350
+
351
+
352
+ @self.app.route('/change', methods=["GET", "POST"])
353
+ def change():
354
+ if request.method == 'GET':
355
+ return render_template("change.html")
356
+
357
+ if request.method == 'POST':
358
+ self.app.config['MYSQL_DB'] = 'test'
359
+
360
+ password = request.form['password'].encode('utf-8')
361
+ hash_password = bcrypt.hashpw(password, bcrypt.gensalt())
362
+
363
+ curl = mysql.connection.cursor()
364
+ curl.execute("UPDATE `users` SET `password`=%s WHERE email=%s", (hash_password, session['email'],))
365
+ user = curl.fetchone()
366
+
367
+ mysql.connection.commit()
368
+ curl.close()
369
+
370
+ session.clear()
371
+
372
+ return redirect(url_for('login'))
373
+
374
+
375
+ @self.app.route('/admin', methods=["GET", "POST"])
376
+ def admin():
377
+ if 'email' in session:
378
+ if session['usertype'] == 0:
379
+ return redirect(url_for('home'))
380
+ else:
381
+ return redirect(url_for('login'))
382
+
383
+ if request.method == 'GET':
384
+ if 'email' in session:
385
+ self.app.config['MYSQL_DB'] = session['database']
386
+ cura = mysql.connection.cursor()
387
+ cura.execute("SELECT `assessid`, `name` FROM assessments")
388
+ typedata = cura.fetchall()
389
+ cura.execute("SELECT `id`, `type` FROM custom")
390
+ given = cura.fetchall()
391
+
392
+ isdone = []
393
+ for give in given:
394
+ isdone.append(give['type'])
395
+
396
+ cura.execute("SELECT `id`, `name`, `email`, `isdone` FROM `users` WHERE `usertype` = 0")
397
+ res = cura.fetchall()
398
+
399
+ cura.execute("SELECT `assessId`, `name`, `description`, `Questions`, `average` FROM `assessments`")
400
+ que = cura.fetchall()
401
+
402
+ cura.execute("SELECT `id`, `type`, `name` FROM `custom`, `assessments` WHERE custom.type = assessments.assessId")
403
+ abc = cura.fetchall()
404
+
405
+ ahi = 0.0
406
+ for assess in que:
407
+ if assess['assessId'] == 101:
408
+ ahi = assess['average']
409
+
410
+ ts = len(res)
411
+ tas = len(isdone)
412
+
413
+ cura.execute("SELECT `name`, `email`, `feedback` FROM `feedbacks`")
414
+ feeds = cura.fetchall()
415
+
416
+ mysql.connection.commit()
417
+ cura.close()
418
+
419
+ return render_template("admin.html", typedata=typedata, given=given, result=res, assess=que, abc=abc, ts=ts, ahi=ahi, tas=tas, feeds= feeds)
420
+
421
+ if request.method == "POST":
422
+ self.app.config['MYSQL_DB'] = session['database']
423
+
424
+ if 'resid' in request.form:
425
+ resid = request.form.get('resid')
426
+ types = request.form.get('type')
427
+
428
+ session['id'] = resid
429
+ session['type'] = types
430
+
431
+ return redirect(url_for('result'))
432
+
433
+ elif 'delete' in request.form:
434
+ cura = mysql.connection.cursor()
435
+ deleteId = request.form['delete']
436
+ cura.execute("DELETE FROM `assessments` WHERE `assessId`= %s", (deleteId,))
437
+ mysql.connection.commit()
438
+ cura.close()
439
+ return redirect(url_for('admin'))
440
+
441
+ # cura = mysql.connection.cursor()
442
+ # cura.execute("SELECT * FROM `result` WHERE `id` = %s", (resid,))
443
+ # chart = cura.fetchone()
444
+ #
445
+ # cura.execute("SELECT * FROM `assessments` WHERE `assessid` = %s", (type,))
446
+ # chart = cura.fetchone()
447
+ # mysql.connection.commit()
448
+ # cura.close()
449
+ #
450
+ # return render_template('result.html')
451
+
452
+ return render_template('admin.html')
453
+
454
+
455
+ @self.app.route('/form', methods=["GET", "POST"])
456
+ def form():
457
+ if 'email' not in session:
458
+ return redirect(url_for('login'))
459
+
460
+ if request.method == "GET":
461
+ self.app.config['MYSQL_DB'] = session['database']
462
+ typeid = session['type']
463
+ curf = mysql.connection.cursor()
464
+ curf.execute("SELECT `name`, `description`, `Questions`, `types` FROM assessments WHERE assessid = %s", (typeid,))
465
+ questions = curf.fetchone()
466
+ mysql.connection.commit()
467
+ curf.close()
468
+
469
+ return render_template("form.html", questions=questions)
470
+
471
+ if request.method == "POST":
472
+ self.app.config['MYSQL_DB'] = session['database']
473
+
474
+ email = session["email"]
475
+
476
+ '''Sentiment analysis for each response...'''
477
+
478
+ data = request.form.to_dict()
479
+
480
+ length = len(request.form)
481
+ inp = []
482
+ for i in range(0, length):
483
+ inp.append(data['inp' + str(i + 1) + ''])
484
+
485
+ sid_obj = SentimentIntensityAnalyzer()
486
+
487
+ compound = []
488
+ for i in range(0, length):
489
+ # locals()[f"sentiment_dict{i}"] = sid_obj.polarity_scores(data['inp'+ (i+1) +''])
490
+ compound.append(sid_obj.polarity_scores(data['inp' + str(i + 1) + ''])['compound'] * 100)
491
+
492
+ '''SQL Queries for data storing in database...'''
493
+
494
+ now = datetime.datetime.now()
495
+ cur = mysql.connection.cursor()
496
+
497
+ query = "INSERT INTO `custom` (`Id`, `type`, `response`, `result`, `datetime`) VALUES (%s, %s, %s, %s, %s)"
498
+ cur.execute(query, (session['id'], session['type'], json.dumps(inp), json.dumps(compound), now,))
499
+
500
+ query = "UPDATE `users` SET `isdone`=%s WHERE `id`=%s"
501
+ cur.execute(query, (1, session['id'],))
502
+
503
+ cur.execute("SELECT * FROM `custom` WHERE id=%s AND type=%s", (session['id'], session['type'],))
504
+ res = cur.fetchone()
505
+
506
+ cur.execute("SELECT qval FROM `assessments` WHERE assessId=%s", (session['type'],))
507
+ qval = cur.fetchone()
508
+
509
+ happy = []
510
+ multi = []
511
+ multi = eval(qval['qval'])
512
+ happy = eval(res['result'])
513
+ for j in range(len(happy)):
514
+ happy[j] = happy[j] * multi[j]
515
+
516
+ min_value = min(compound)
517
+ max_value = max(compound)
518
+ scaled_values = [(value - min_value) / (max_value - min_value) * 5 for value in compound]
519
+
520
+ happy_index = round(sum(scaled_values) / len(scaled_values), 2)
521
+ # happy_score = round(sum(happy) / len(happy), 4)
522
+
523
+ query = "UPDATE `custom` SET `happy`=%s WHERE `id`=%s AND `type`=%s"
524
+ cur.execute(query, (happy_index, session['id'], session['type'],))
525
+
526
+ cur.execute("SELECT `happy` FROM `custom` WHERE type=%s", (session['type'],))
527
+ avg_dict = cur.fetchall()
528
+
529
+ avg_list = [d['happy'] for d in avg_dict if isinstance(d['happy'], float)] + [item for d in avg_dict if isinstance(d['happy'], (list, tuple)) for item in d['happy']]
530
+
531
+ avg_score = round(sum(avg_list)/len(avg_list), 2)
532
+
533
+ query = "UPDATE `assessments` SET `average`=%s WHERE `assessId`=%s"
534
+ cur.execute(query, (avg_score, session['type'],))
535
+
536
+ mysql.connection.commit()
537
+ cur.close()
538
+
539
+ '''Re-render template...'''
540
+
541
+ return redirect(url_for('result'))
542
+
543
+ #*********************************************** Further optimization....
544
+ # form_data = request.form.to_dict()
545
+ #***********************************************
546
+ #
547
+ # inp1 = request.form.get("inp1")
548
+ # inp2 = request.form.get("inp2")
549
+ # inp3 = request.form.get("inp3")
550
+ # inp4 = request.form.get("inp4")
551
+ # inp5 = request.form.get("inp5")
552
+ # inp6 = request.form.get("inp6")
553
+ # inp7 = request.form.get("inp7")
554
+ # inp8 = request.form.get("inp8")
555
+ # inp9 = request.form.get("inp9")
556
+ # inp10 = request.form.get("inp10")
557
+ #
558
+ # sid_obj = SentimentIntensityAnalyzer()
559
+ #
560
+ # sentiment_dict1 = sid_obj.polarity_scores(inp1)
561
+ # sentiment_dict2 = sid_obj.polarity_scores(inp2)
562
+ # sentiment_dict3 = sid_obj.polarity_scores(inp3)
563
+ # sentiment_dict4 = sid_obj.polarity_scores(inp4)
564
+ # sentiment_dict5 = sid_obj.polarity_scores(inp5)
565
+ # sentiment_dict6 = sid_obj.polarity_scores(inp6)
566
+ # sentiment_dict7 = sid_obj.polarity_scores(inp7)
567
+ # sentiment_dict8 = sid_obj.polarity_scores(inp8)
568
+ # sentiment_dict9 = sid_obj.polarity_scores(inp9)
569
+ # sentiment_dict10 = sid_obj.polarity_scores(inp10)
570
+ # # negative = sentiment_dict['neg']
571
+ # # neutral = sentiment_dict['neu']
572
+ # # positive = sentiment_dict['pos']
573
+ # compound1 = sentiment_dict1['compound'] * 100
574
+ # compound2 = sentiment_dict2['compound'] * 100
575
+ # compound3 = sentiment_dict3['compound'] * 100
576
+ # compound4 = sentiment_dict4['compound'] * 100
577
+ # compound5 = sentiment_dict5['compound'] * 100
578
+ # compound6 = sentiment_dict6['compound'] * 100
579
+ # compound7 = sentiment_dict7['compound'] * 100
580
+ # compound8 = sentiment_dict8['compound'] * 100
581
+ # compound9 = sentiment_dict9['compound'] * 100
582
+ # compound10 = sentiment_dict10['compound'] * 100
583
+ #
584
+ # # _________________________________________________________________________________________________________#
585
+ #
586
+ # '''Matlab Plots...'''
587
+ #
588
+ # x = ["Q1", "Q2", "Q3", "Q4", "Q5", "Q6", "Q7", "Q8", "Q9", "Q10"]
589
+ # y = [compound1, compound2, compound3, compound4, compound5, compound6, compound7, compound8, compound9, compound10]
590
+ # fig, ax = plt.subplots()
591
+ # plt.bar(x, y)
592
+ # fig.set_size_inches(10, 6)
593
+ # img_name = str(session['id'])
594
+ # fig.savefig('' + img_name + '.png', dpi=384, transparent=True)
595
+ # with open('' + img_name + '.png', 'rb') as f:
596
+ # img = f.read()
597
+ #
598
+ # # _________________________________________________________________________________________________________#
599
+ #
600
+ # '''SQL Queries for data storing in database...'''
601
+ #
602
+ # now = datetime.datetime.now()
603
+ # cur = mysql.connection.cursor()
604
+ #
605
+ # query = "INSERT INTO `testy` (`Id`, `Q1`, `Q2`, `Q3`, `Q4`, `Q5`, `Q6`, `Q7`, `Q8`, `Q9`, `Q10`, `datetime`) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)"
606
+ # cur.execute(query, (session['id'], inp1, inp2, inp3, inp4, inp5, inp6, inp7, inp8, inp9, inp10, now))
607
+ #
608
+ # query = "INSERT INTO `result` (`id`, `R1`, `R2`, `R3`, `R4`, `R5`, `R6`, `R7`, `R8`, `R9`, `R10`, `image`, `datetime`) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)"
609
+ # cur.execute(query, (session['id'], compound1, compound2, compound3, compound4, compound5, compound6, compound7, compound8, compound9, compound10, img, now))
610
+ #
611
+ # query = "UPDATE `users` SET `isdone`=%s WHERE `id`=%s"
612
+ # cur.execute(query, (1, session['id'],))
613
+ #
614
+ # mysql.connection.commit()
615
+ # cur.close()
616
+
617
+ # '''Retrival of data...'''
618
+ # query = "SELECT Image FROM testy WHERE Id = %s"
619
+ # cur.execute(query, (103))
620
+ # row = cur.fetchone()
621
+ # img = Image.open(io.BytesIO(row[0]))
622
+ # cur.close()
623
+ #
624
+ # plt.imshow(img)
625
+ # plt.show()
626
+
627
+ # _________________________________________________________________________________________________________#
628
+ return redirect(url_for('result'))
629
+ # def index():
630
+ # if request.method == "POST":
631
+ #
632
+ # '''Matlab Plots...'''
633
+ # x = ["a", "b", "c", "d"]
634
+ # y = [85,90,70,75]
635
+ # fig, ax = plt.subplots()
636
+ # plt.bar(x, y)
637
+ # fig.set_size_inches(10, 6)
638
+ # fig.savefig('foo.png', dpi=384, transparent=True)
639
+ # with open('foo.png', 'rb') as f:
640
+ # img = f.read()
641
+ # # _________________________________________________________________________________________________________#
642
+ #
643
+ # '''SQL Queries for data storing in database...'''
644
+ # cur = mysql.connection.cursor()
645
+ # query = "INSERT INTO `testy` (`Id`, `Q1`, `Q2`, `Q3`, `Image`) VALUES (%s, %s, %s, %s, %s)"
646
+ # cur.execute(query, (103, 2, 3, 1, img))
647
+ # mysql.connection.commit()
648
+ #
649
+ # query = "SELECT Image FROM testy WHERE Id = %s"
650
+ # cur.execute(query, (103,))
651
+ # row = cur.fetchone()
652
+ # img = Image.open(io.BytesIO(row[0]))
653
+ # cur.close()
654
+ #
655
+ # plt.imshow(img)
656
+ # plt.show()
657
+ # # _________________________________________________________________________________________________________#
658
+ #
659
+ #
660
+ # '''Sentiment analysis for each response...'''
661
+ # inp = request.form.get("inp1")
662
+ # name = request.form.get("name")
663
+ # sid_obj = SentimentIntensityAnalyzer()
664
+ # # score = sid.polarity_scores(inp)
665
+ # # if score["neg"] > 0:
666
+ # # return render_template('home.html', message="Negative")
667
+ # # if score["neg"] == 0:
668
+ # # return render_template('home.html', message="Neutral")
669
+ # # else:
670
+ # # return render_template('home.html', message="Positive")
671
+ #
672
+ # sentiment_dict = sid_obj.polarity_scores(inp)
673
+ # negative = sentiment_dict['neg']
674
+ # neutral = sentiment_dict['neu']
675
+ # positive = sentiment_dict['pos']
676
+ # compound = sentiment_dict['compound']
677
+ #
678
+ # return render_template('home.html', message=sentiment_dict['compound'], names=name)
679
+ #
680
+ # # if sentiment_dict['compound'] >= 0.05:
681
+ # # return render_template('home.html', message="Positive")
682
+ # #
683
+ # # elif sentiment_dict['compound'] <= - 0.05:
684
+ # # return render_template('home.html', message="Negative")
685
+ # #
686
+ # # else:
687
+ # # return render_template('home.html', message="Neutral")
688
+ #
689
+ # # _________________________________________________________________________________________________________#
690
+ #
691
+ # return render_template('home.html')
692
+
693
+
694
+ @self.app.route('/custom', methods=["GET", "POST"])
695
+ def custom():
696
+ if 'email' not in session:
697
+ return redirect(url_for('login'))
698
+
699
+ if request.method == "GET":
700
+ if session['usertype'] == 0:
701
+ return redirect(url_for('home'))
702
+
703
+ return render_template('custom.html')
704
+
705
+ if request.method == "POST":
706
+ self.app.config['MYSQL_DB'] = session['database']
707
+ email = session["email"]
708
+
709
+ '''Sentiment analysis for each response...'''
710
+
711
+ data = request.form.to_dict()
712
+
713
+ length = len(request.form)
714
+ inp = []
715
+ for i in range(0, int((length - 3)/2)):
716
+ inp.append(data['inpt' + str(i + 1) + ''])
717
+
718
+ sid_obj = SentimentIntensityAnalyzer()
719
+
720
+ compound = []
721
+ for i in range(0, int((length - 3)/2)):
722
+ compound.append(sid_obj.polarity_scores(data['inpt' + str(i + 1) + ''])['compound'] * 100)
723
+
724
+ types = []
725
+ for i in range(0, int((length - 3) / 2)):
726
+ types.append(int(data['select' + str(i + 1) + '']))
727
+
728
+ for i in range(len(compound)):
729
+ if compound[i] < 0:
730
+ compound[i] = -1
731
+ elif compound[i] >= 0:
732
+ compound[i] = 1
733
+
734
+ name = request.form['name']
735
+ describ = request.form['describ']
736
+
737
+ '''SQL Queries for data storing in database...'''
738
+
739
+ now = datetime.datetime.now()
740
+ cur = mysql.connection.cursor()
741
+
742
+ query = "INSERT INTO `assessments` (`name`, `description`, `Questions`, `types`, `qval`) VALUES (%s, %s, %s, %s, %s)"
743
+ cur.execute(query, (name, describ, json.dumps(inp), json.dumps(types), json.dumps(compound),))
744
+
745
+ mysql.connection.commit()
746
+ cur.close()
747
+
748
+ return redirect(url_for('admin'))
749
+
750
+ return render_template("custom.html")
751
+
752
+
753
+ @self.app.route('/result')
754
+ def result():
755
+ if 'email' not in session:
756
+ return redirect(url_for('home'))
757
+
758
+ self.app.config['MYSQL_DB'] = session['database']
759
+ curr = mysql.connection.cursor()
760
+
761
+ curr.execute("SELECT * FROM `custom` WHERE id=%s AND type=%s", (session['id'], session['type'],))
762
+ res = curr.fetchone()
763
+
764
+ curr.execute("SELECT result FROM `custom` WHERE type=%s", (session['type'],))
765
+ avg = curr.fetchall()
766
+
767
+ # curr.execute("SELECT qval FROM `assessments` WHERE assessId=%s", (session['type'],))
768
+ # qval = curr.fetchone()
769
+
770
+ dynamic = [list(eval(d['result'])) for d in avg]
771
+
772
+ # Personal Average per questions will be compared....
773
+ # average = []
774
+ # multi = []
775
+ # multi = eval(qval['qval'])
776
+ # for i in range(len(avg)):
777
+ # temp = eval(avg[i]['result'])
778
+ # for j in range(len(temp)):
779
+ # temp[j] = temp[j] * multi[j]
780
+ # average.append(sum(temp) / len(temp))
781
+
782
+ #Compute Happiness Index
783
+ # happy = []
784
+ # multi = []
785
+ # multi = eval(qval['qval'])
786
+ # happy = eval(res['result'])
787
+ # for j in range(len(happy)):
788
+ # happy[j] = happy[j] * multi[j]
789
+ # happy_score = round(sum(happy) / len(happy), 4)
790
+
791
+ dyna = []
792
+ i = 0
793
+ for i in range(len(dynamic[i])):
794
+ temp2 = 0
795
+ for j in range(len(dynamic)):
796
+ temp2 = temp2 + dynamic[j][i]
797
+ dyna.append(temp2 / len(dynamic))
798
+
799
+
800
+ ques = []
801
+ for i in range(1, len(dyna)+1):
802
+ ques.append("Question " + str(i) + "")
803
+
804
+ curr.execute("SELECT * FROM assessments WHERE assessid = %s", (session['type'],))
805
+ questions = curr.fetchone()
806
+
807
+ curr.execute("SELECT * FROM suggestions")
808
+ suggests = curr.fetchall()
809
+ response = []
810
+ mapper = eval(questions['types'])
811
+ score = eval(res['result'])
812
+
813
+ score_dict = {}
814
+ for i in range(len(mapper)):
815
+ if mapper[i] not in score_dict:
816
+ score_dict[mapper[i]] = []
817
+ score_dict[mapper[i]].append(score[i])
818
+
819
+ result_dict = {}
820
+
821
+ for key, value in score_dict.items():
822
+ temp_score = sum(value) / len(value)
823
+ avg_score = round(((temp_score + 100) / 200) * (90 - 10) + 10, 2)
824
+ if key == 1101:
825
+ if avg_score >= 66:
826
+ result_dict[key] = {"average_score": avg_score, "name": "Psychological well being", "description": "Refers to an individual`s mental state and overall happiness, including feelings of fulfillment, purpose, and contentment.", "suggestions_text": [list(eval(d['good'])) for d in suggests if d['idtype'] == 1101]}
827
+ elif avg_score >= 30:
828
+ result_dict[key] = {"average_score": avg_score, "name": "Psychological well being", "description": "Refers to an individual`s mental state and overall happiness, including feelings of fulfillment, purpose, and contentment.", "suggestions_text": [list(eval(d['average'])) for d in suggests if d['idtype'] == 1101]}
829
+ elif avg_score < 30:
830
+ result_dict[key] = {"average_score": avg_score, "name": "Psychological well being", "description": "Refers to an individual`s mental state and overall happiness, including feelings of fulfillment, purpose, and contentment.", "suggestions_text": [list(eval(d['bad'])) for d in suggests if d['idtype'] == 1101]}
831
+
832
+ elif key == 1102:
833
+ if avg_score >= 66:
834
+ result_dict[key] = {"average_score": avg_score, "name": "Health aspects", "description": "Refers to an individual`s physical health, including factors such as nutrition, exercise, and access to medical care.", "suggestions_text": [list(eval(d['good'])) for d in suggests if d['idtype'] == 1102]}
835
+ elif avg_score >= 30:
836
+ result_dict[key] = {"average_score": avg_score, "name": "Health aspects", "description": "Refers to an individual`s physical health, including factors such as nutrition, exercise, and access to medical care.", "suggestions_text": [list(eval(d['average'])) for d in suggests if d['idtype'] == 1102]}
837
+ elif avg_score < 30:
838
+ result_dict[key] = {"average_score": avg_score, "name": "Health aspects", "description": "Refers to an individual`s physical health, including factors such as nutrition, exercise, and access to medical care.", "suggestions_text": [list(eval(d['bad'])) for d in suggests if d['idtype'] == 1102]}
839
+
840
+ elif key == 1103:
841
+ if avg_score >= 66:
842
+ result_dict[key] = {"average_score": avg_score, "name": "Time management", "description": "Refers to an individual`s ability to effectively manage their time and prioritize tasks to maximize productivity and reduce stress.", "suggestions_text": [list(eval(d['good'])) for d in suggests if d['idtype'] == 1103]}
843
+ elif avg_score >= 30:
844
+ result_dict[key] = {"average_score": avg_score, "name": "Time management", "description": "Refers to an individual`s ability to effectively manage their time and prioritize tasks to maximize productivity and reduce stress.", "suggestions_text": [list(eval(d['average'])) for d in suggests if d['idtype'] == 1103]}
845
+ elif avg_score < 30:
846
+ result_dict[key] = {"average_score": avg_score, "name": "Time management", "description": "Refers to an individual`s ability to effectively manage their time and prioritize tasks to maximize productivity and reduce stress.", "suggestions_text": [list(eval(d['bad'])) for d in suggests if d['idtype'] == 1103]}
847
+
848
+ elif key == 1104:
849
+ if avg_score >= 66:
850
+ result_dict[key] = {"average_score": avg_score, "name": "Educational standards", "description": "Refers to the quality of education provided in a given community, including factors such as curriculum, teaching quality, and access to resources.", "suggestions_text": [list(eval(d['good'])) for d in suggests if d['idtype'] == 1104]}
851
+ elif avg_score >= 30:
852
+ result_dict[key] = {"average_score": avg_score, "name": "Educational standards", "description": "Refers to the quality of education provided in a given community, including factors such as curriculum, teaching quality, and access to resources.", "suggestions_text": [list(eval(d['average'])) for d in suggests if d['idtype'] == 1104]}
853
+ elif avg_score < 30:
854
+ result_dict[key] = {"average_score": avg_score, "name": "Educational standards", "description": "Refers to the quality of education provided in a given community, including factors such as curriculum, teaching quality, and access to resources.", "suggestions_text": [list(eval(d['bad'])) for d in suggests if d['idtype'] == 1104]}
855
+
856
+ elif key == 1105:
857
+ if avg_score >= 66:
858
+ result_dict[key] = {"average_score": avg_score, "name": "Cultural diversity", "description": "Refers to the range of cultures, beliefs, and practices within a given community, and the level of acceptance and celebration of diversity.", "suggestions_text": [list(eval(d['good'])) for d in suggests if d['idtype'] == 1105]}
859
+ elif avg_score >= 30:
860
+ result_dict[key] = {"average_score": avg_score, "name": "Cultural diversity", "description": "Refers to the range of cultures, beliefs, and practices within a given community, and the level of acceptance and celebration of diversity.", "suggestions_text": [list(eval(d['average'])) for d in suggests if d['idtype'] == 1105]}
861
+ elif avg_score < 30:
862
+ result_dict[key] = {"average_score": avg_score, "name": "Cultural diversity", "description": "Refers to the range of cultures, beliefs, and practices within a given community, and the level of acceptance and celebration of diversity.", "suggestions_text": [list(eval(d['bad'])) for d in suggests if d['idtype'] == 1105]}
863
+
864
+ elif key == 1106:
865
+ if avg_score >= 66:
866
+ result_dict[key] = {"average_score": avg_score, "name": "Social well-being", "description": "Social well-being refers to the quality of an individual`s social interactions, relationships, and sense of community belonging.", "suggestions_text": [list(eval(d['good'])) for d in suggests if d['idtype'] == 1106]}
867
+ elif avg_score >= 30:
868
+ result_dict[key] = {"average_score": avg_score, "name": "Social well-being", "description": "Social well-being refers to the quality of an individual`s social interactions, relationships, and sense of community belonging.", "suggestions_text": [list(eval(d['average'])) for d in suggests if d['idtype'] == 1106]}
869
+ elif avg_score < 30:
870
+ result_dict[key] = {"average_score": avg_score, "name": "Social well-being", "description": "Social well-being refers to the quality of an individual`s social interactions, relationships, and sense of community belonging.", "suggestions_text": [list(eval(d['bad'])) for d in suggests if d['idtype'] == 1106]}
871
+
872
+ elif key == 1107:
873
+ if avg_score >= 66:
874
+ result_dict[key] = {"average_score": avg_score, "name": "Good governance", "description": "Refers to the effectiveness and transparency of governing systems and institutions in promoting the well-being of all members of a community.", "suggestions_text": [list(eval(d['good'])) for d in suggests if d['idtype'] == 1107]}
875
+ elif avg_score >= 30:
876
+ result_dict[key] = {"average_score": avg_score, "name": "Good governance", "description": "Refers to the effectiveness and transparency of governing systems and institutions in promoting the well-being of all members of a community.", "suggestions_text": [list(eval(d['average'])) for d in suggests if d['idtype'] == 1107]}
877
+ elif avg_score < 30:
878
+ result_dict[key] = {"average_score": avg_score, "name": "Good governance", "description": "Refers to the effectiveness and transparency of governing systems and institutions in promoting the well-being of all members of a community.", "suggestions_text": [list(eval(d['bad'])) for d in suggests if d['idtype'] == 1107]}
879
+
880
+ elif key == 1108:
881
+ if avg_score >= 66:
882
+ result_dict[key] = {"average_score": avg_score, "name": "Community vitality", "description": "Refers to the health and vibrancy of a community, including factors such as social cohesion, civic engagement, and access to resources.", "suggestions_text": [list(eval(d['good'])) for d in suggests if d['idtype'] == 1108]}
883
+ elif avg_score >= 30:
884
+ result_dict[key] = {"average_score": avg_score, "name": "Community vitality", "description": "Refers to the health and vibrancy of a community, including factors such as social cohesion, civic engagement, and access to resources.", "suggestions_text": [list(eval(d['average'])) for d in suggests if d['idtype'] == 1108]}
885
+ elif avg_score < 30:
886
+ result_dict[key] = {"average_score": avg_score, "name": "Community vitality", "description": "Refers to the health and vibrancy of a community, including factors such as social cohesion, civic engagement, and access to resources.", "suggestions_text": [list(eval(d['bad'])) for d in suggests if d['idtype'] == 1108]}
887
+
888
+ suggest_dict = dict(sorted(result_dict.items()))
889
+
890
+ # for i in range(len(score)):
891
+ # if score[i] == 999:
892
+ # response.append({'none'})
893
+ #
894
+ # elif score[i] >= 66:
895
+ # if mapper[i] == 1101:
896
+ # new_dict = {
897
+ # 'domain': 'Psychological well being',
898
+ # 'describ': 'Refers to an individual`s mental state and overall happiness, including feelings of fulfillment, purpose, and contentment.',
899
+ # 'suggest': [list(eval(d['good'])) for d in suggests if d['idtype'] == 1101]
900
+ # }
901
+ # elif mapper[i] == 1102:
902
+ # new_dict = {
903
+ # 'domain': 'Health aspects',
904
+ # 'describ': 'Refers to an individual`s physical health, including factors such as nutrition, exercise, and access to medical care.',
905
+ # 'suggest': [list(eval(d['good'])) for d in suggests if d['idtype'] == 1102]
906
+ # }
907
+ # elif mapper[i] == 1103:
908
+ # new_dict = {
909
+ # 'domain': 'Time management',
910
+ # 'describ': 'Refers to an individual`s ability to effectively manage their time and prioritize tasks to maximize productivity and reduce stress.',
911
+ # 'suggest': [list(eval(d['good'])) for d in suggests if d['idtype'] == 1103]
912
+ # }
913
+ # elif mapper[i] == 1104:
914
+ # new_dict = {
915
+ # 'domain': 'Educational standards',
916
+ # 'describ': 'Refers to the quality of education provided in a given community, including factors such as curriculum, teaching quality, and access to resources.',
917
+ # 'suggest': [list(eval(d['good'])) for d in suggests if d['idtype'] == 1104]
918
+ # }
919
+ # elif mapper[i] == 1105:
920
+ # new_dict = {
921
+ # 'domain': 'Cultural diversity',
922
+ # 'describ': 'Refers to the range of cultures, beliefs, and practices within a given community, and the level of acceptance and celebration of diversity.',
923
+ # 'suggest': [list(eval(d['good'])) for d in suggests if d['idtype'] == 1105]
924
+ # }
925
+ # elif mapper[i] == 1106:
926
+ # new_dict = {
927
+ # 'domain': 'Social well-being',
928
+ # 'describ': 'Social well-being refers to the quality of an individual`s social interactions, relationships, and sense of community belonging.',
929
+ # 'suggest': [list(eval(d['good'])) for d in suggests if d['idtype'] == 1106]
930
+ # }
931
+ # elif mapper[i] == 1107:
932
+ # new_dict = {
933
+ # 'domain': 'Good governance',
934
+ # 'describ': 'Refers to the effectiveness and transparency of governing systems and institutions in promoting the well-being of all members of a community.',
935
+ # 'suggest': [list(eval(d['good'])) for d in suggests if d['idtype'] == 1107]
936
+ # }
937
+ # elif mapper[i] == 1108:
938
+ # new_dict = {
939
+ # 'domain': 'Community vitality',
940
+ # 'describ': 'Refers to the health and vibrancy of a community, including factors such as social cohesion, civic engagement, and access to resources.',
941
+ # 'suggest': [list(eval(d['good'])) for d in suggests if d['idtype'] == 1108]
942
+ # }
943
+ # response.append(new_dict)
944
+ #
945
+ # elif score[i] >= 40:
946
+ # if mapper[i] == 1101:
947
+ # new_dict = {
948
+ # 'domain': 'Psychological well being',
949
+ # 'describ': 'Refers to an individual`s mental state and overall happiness, including feelings of fulfillment, purpose, and contentment.',
950
+ # 'suggest': [list(eval(d['average'])) for d in suggests if d['idtype'] == 1101]
951
+ # }
952
+ # elif mapper[i] == 1102:
953
+ # new_dict = {
954
+ # 'domain': 'Health aspects',
955
+ # 'describ': 'Refers to an individual`s physical health, including factors such as nutrition, exercise, and access to medical care.',
956
+ # 'suggest': [list(eval(d['average'])) for d in suggests if d['idtype'] == 1102]
957
+ # }
958
+ # elif mapper[i] == 1103:
959
+ # new_dict = {
960
+ # 'domain': 'Time management',
961
+ # 'describ': 'Refers to an individual`s ability to effectively manage their time and prioritize tasks to maximize productivity and reduce stress.',
962
+ # 'suggest': [list(eval(d['average'])) for d in suggests if d['idtype'] == 1103]
963
+ # }
964
+ # elif mapper[i] == 1104:
965
+ # new_dict = {
966
+ # 'domain': 'Educational standards',
967
+ # 'describ': 'Refers to the quality of education provided in a given community, including factors such as curriculum, teaching quality, and access to resources.',
968
+ # 'suggest': [list(eval(d['average'])) for d in suggests if d['idtype'] == 1104]
969
+ # }
970
+ # elif mapper[i] == 1105:
971
+ # new_dict = {
972
+ # 'domain': 'Cultural diversity',
973
+ # 'describ': 'Refers to the range of cultures, beliefs, and practices within a given community, and the level of acceptance and celebration of diversity.',
974
+ # 'suggest': [list(eval(d['average'])) for d in suggests if d['idtype'] == 1105]
975
+ # }
976
+ # elif mapper[i] == 1106:
977
+ # new_dict = {
978
+ # 'domain': 'Social well-being',
979
+ # 'describ': 'Social well-being refers to the quality of an individual`s social interactions, relationships, and sense of community belonging.',
980
+ # 'suggest': [list(eval(d['average'])) for d in suggests if d['idtype'] == 1106]
981
+ # }
982
+ # elif mapper[i] == 1107:
983
+ # new_dict = {
984
+ # 'domain': 'Good governance',
985
+ # 'describ': 'Refers to the effectiveness and transparency of governing systems and institutions in promoting the well-being of all members of a community.',
986
+ # 'suggest': [list(eval(d['average'])) for d in suggests if d['idtype'] == 1107]
987
+ # }
988
+ # elif mapper[i] == 1108:
989
+ # new_dict = {
990
+ # 'domain': 'Community vitality',
991
+ # 'describ': 'Refers to the health and vibrancy of a community, including factors such as social cohesion, civic engagement, and access to resources.',
992
+ # 'suggest': [list(eval(d['average'])) for d in suggests if d['idtype'] == 1108]
993
+ # }
994
+ # response.append(new_dict)
995
+ #
996
+ # elif score[i] < 40:
997
+ # if mapper[i] == 1101:
998
+ # new_dict = {
999
+ # 'domain': 'Psychological well being',
1000
+ # 'describ': 'Refers to an individual`s mental state and overall happiness, including feelings of fulfillment, purpose, and contentment.',
1001
+ # 'suggest': [list(eval(d['bad'])) for d in suggests if d['idtype'] == 1101]
1002
+ # }
1003
+ # elif mapper[i] == 1102:
1004
+ # new_dict = {
1005
+ # 'domain': 'Health aspects',
1006
+ # 'describ': 'Refers to an individual`s physical health, including factors such as nutrition, exercise, and access to medical care.',
1007
+ # 'suggest': [list(eval(d['bad'])) for d in suggests if d['idtype'] == 1102]
1008
+ # }
1009
+ # elif mapper[i] == 1103:
1010
+ # new_dict = {
1011
+ # 'domain': 'Time management',
1012
+ # 'describ': 'Refers to an individual`s ability to effectively manage their time and prioritize tasks to maximize productivity and reduce stress.',
1013
+ # 'suggest': [list(eval(d['bad'])) for d in suggests if d['idtype'] == 1103]
1014
+ # }
1015
+ # elif mapper[i] == 1104:
1016
+ # new_dict = {
1017
+ # 'domain': 'Educational standards',
1018
+ # 'describ': 'Refers to the quality of education provided in a given community, including factors such as curriculum, teaching quality, and access to resources.',
1019
+ # 'suggest': [list(eval(d['bad'])) for d in suggests if d['idtype'] == 1104]
1020
+ # }
1021
+ # elif mapper[i] == 1105:
1022
+ # new_dict = {
1023
+ # 'domain': 'Cultural diversity',
1024
+ # 'describ': 'Refers to the range of cultures, beliefs, and practices within a given community, and the level of acceptance and celebration of diversity.',
1025
+ # 'suggest': [list(eval(d['bad'])) for d in suggests if d['idtype'] == 1105]
1026
+ # }
1027
+ # elif mapper[i] == 1106:
1028
+ # new_dict = {
1029
+ # 'domain': 'Social well-being',
1030
+ # 'describ': 'Social well-being refers to the quality of an individual`s social interactions, relationships, and sense of community belonging.',
1031
+ # 'suggest': [list(eval(d['bad'])) for d in suggests if d['idtype'] == 1106]
1032
+ # }
1033
+ # elif mapper[i] == 1107:
1034
+ # new_dict = {
1035
+ # 'domain': 'Good governance',
1036
+ # 'describ': 'Refers to the effectiveness and transparency of governing systems and institutions in promoting the well-being of all members of a community.',
1037
+ # 'suggest': [list(eval(d['bad'])) for d in suggests if d['idtype'] == 1107]
1038
+ # }
1039
+ # elif mapper[i] == 1108:
1040
+ # new_dict = {
1041
+ # 'domain': 'Community vitality',
1042
+ # 'describ': 'Refers to the health and vibrancy of a community, including factors such as social cohesion, civic engagement, and access to resources.',
1043
+ # 'suggest': [list(eval(d['bad'])) for d in suggests if d['idtype'] == 1108]
1044
+ # }
1045
+ # response.append(new_dict)
1046
+
1047
+ curr.execute("SELECT `Questions`,`response`, `result`, `datetime` FROM `custom`, `assessments` WHERE `id`=%s AND `type`=%s AND custom.type = assessments.assessId", (session['id'], session['type'],))
1048
+ details = curr.fetchone()
1049
+
1050
+ mysql.connection.commit()
1051
+ curr.close()
1052
+
1053
+ return render_template("result.html", ques=ques, res1=res['response'], res2=res['result'], res3=res['datetime'], res4=res['happy'], res5=dyna, res6=response, res7=suggest_dict, res8=questions, res9=details)
1054
+
1055
+ # @app.route('/customresult')
1056
+ # def customresult():
1057
+ # app.config['MYSQL_DB'] = session['database']
1058
+ # curr = mysql.connection.cursor()
1059
+ # curr.execute("SELECT * FROM `custom` WHERE id=%s", (session['id'],))
1060
+ # res = curr.fetchone()
1061
+ # mysql.connection.commit()
1062
+ # curr.close()
1063
+ #
1064
+ # ques = []
1065
+ # for i in range(1, len(res)):
1066
+ # ques.append("Q"+ str(i) +"")
1067
+ #
1068
+ # return render_template("customresult.html", ques=ques, res1=res['response'], res2=res['result'], res3=res['datetime'])
1069
+
1070
+ @self.app.route('/logout')
1071
+ def logout():
1072
+ self.app.config['MYSQL_DB'] = session['database']
1073
+ now = datetime.datetime.now()
1074
+ curo = mysql.connection.cursor()
1075
+ if 'id' in session:
1076
+ curo.execute("INSERT INTO session (id, email, action, actionC, datetime) VALUES (%s, %s, %s, %s, %s)", (session['id'], session['email'], 'Logged Out - Session Terminated', 0, now,))
1077
+ else:
1078
+ curo.execute("INSERT INTO session (email, action, actionC, datetime) VALUES (%s, %s, %s, %s)", (session['email'], 'Logged Out - Session Terminated', 0, now,))
1079
+
1080
+ mysql.connection.commit()
1081
+ curo.close()
1082
+ session.clear()
1083
+ return redirect(url_for("home"))
1084
+
1085
+
1086
+ @self.app.errorhandler(Exception)
1087
+ def handle_error(error):
1088
+ self.app.logger.error(error)
1089
+ error_name = error.__class__.__name__
1090
+ message = f"{error_name}: {str(error)}"
1091
+ return render_template('error.html', message=message), 500
1092
+
1093
+
1094
+ if __name__=='__main__':
1095
+ my_app = SmileCheckApp()
1096
+ my_app.app.run(debug=True)
1097
+ # app.run(debug=True)
1098
+
1099
+
1100
+ """
1101
+ python -m flask run
1102
+
1103
+ Vader
1104
+ VADER (Valence Aware Dictionary and Sentiment Reasoner) is a lexicon and rule-based sentiment analysis tool that is specifically designed to detect sentiments expressed in social media.
1105
+
1106
+ It's disheartening to see so much suffering and injustice in the world. From poverty and inequality to violence and discrimination, there are so many deep-rooted problems that seem almost insurmountable. It can be hard to maintain hope and optimism when faced with so much negativity, and it's all too easy to feel powerless in the face of such overwhelming challenges. The daily news cycle can be overwhelming, with constant reports of tragedy and heartbreak, and it's easy to feel as though the world is an increasingly dangerous and hopeless place. Despite all this, however, we must continue to work towards a better future and hold onto the belief that change is possible.
1107
+
1108
+ @app.route('/submit', methods=['POST'])
1109
+ def handle_submit():
1110
+ if 'form1' in request.form:
1111
+ # Handle form1 submission code here
1112
+ return 'Form 1 submitted successfully'
1113
+ elif 'form2' in request.form:
1114
+ # Handle form2 submission code here
1115
+ return 'Form 2 submitted successfully'
1116
+ else:
1117
+ # Handle case where neither form1 nor form2 were submitted
1118
+ return 'Invalid form submission'
1119
+
1120
+
1121
+ <form method="post" action="/submit">
1122
+ <!-- Form 1 fields here -->
1123
+ <button type="submit" name="form1">Submit Form 1</button>
1124
+ </form>
1125
+
1126
+ <form method="post" action="/submit">
1127
+ <!-- Form 2 fields here -->
1128
+ <button type="submit" name="form2">Submit Form 2</button>
1129
+ </form>
1130
+
1131
+
1132
+ if there are two forms in my html template i want run two different flask codes with post request from each form
1133
+
1134
+ no within a single app route but with two different forms
1135
+
1136
+
1137
+ """
static/505error.gif ADDED

Git LFS Details

  • SHA256: 974aade8c7afe61ff53afabaf425a8618244b80b4ca6e1405e5d2d3ddfb15388
  • Pointer size: 132 Bytes
  • Size of remote file: 4.06 MB
static/back-index.svg ADDED
static/background.svg ADDED
static/bin.png ADDED
static/chat.png ADDED
static/check-mark.png ADDED
static/css/style.css ADDED
@@ -0,0 +1,2827 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /*============ Google fonts ============*/
2
+ @import url('https://fonts.googleapis.com/css2?family=Poppins:ital,wght@0,100;0,200;0,300;0,400;0,500;0,600;0,700;0,800;0,900;1,100;1,200;1,300;1,400;1,500;1,600;1,700;1,800;1,900&display=swap');
3
+
4
+ /*======= CSS variables =======*/
5
+ :root {
6
+ --white-color: #000;
7
+ --dark-color: #fff;
8
+ --body-bg-color: #fff;
9
+ --section-bg-color: #fff;
10
+ --navigation-item-hover-color: #ff9900;
11
+
12
+ --text-shadow: 0 5px 25px rgba(0, 0, 0, 0.1);
13
+ --box-shadow: 0 5px 25px rgb(0 0 0 / 20%);
14
+
15
+ --scroll-bar-color: #fff;
16
+ --scroll-thumb-color: #ff9100;
17
+ --scroll-thumb-hover-color: #ff6800;
18
+ }
19
+
20
+ /*======= Scroll bar =======*/
21
+ ::-webkit-scrollbar{
22
+ width: 11px;
23
+ background: var(--scroll-bar-color);
24
+ }
25
+
26
+ ::-webkit-scrollbar-thumb{
27
+ width: 100%;
28
+ background: var(--scroll-thumb-color);
29
+ border-radius: 2em;
30
+ }
31
+
32
+ ::-webkit-scrollbar-thumb:hover{
33
+ background: var(--scroll-thumb-hover-color);
34
+ }
35
+
36
+ /*======= Main CSS =======*/
37
+ *{
38
+ margin: 0;
39
+ padding: 0;
40
+ box-sizing: border-box;
41
+ font-family: 'Poppins', sans-serif;
42
+ }
43
+
44
+ body{
45
+ background: var(--body-bg-color);
46
+ }
47
+ html {
48
+ scroll-behavior: smooth;
49
+ }
50
+ section{
51
+ position: relative;
52
+ }
53
+
54
+ .section{
55
+ color: var(--white-color);
56
+ background: var(--section-bg-color);
57
+ padding: 35px 200px;
58
+ transition: 0.3s ease;
59
+ }
60
+
61
+ /*======= Header =======*/
62
+ header{
63
+ z-index: 999;
64
+ position: fixed;
65
+ width: 100%;
66
+ height: calc(5rem + 1rem);
67
+ top: 0;
68
+ left: 0;
69
+ display: flex;
70
+ justify-content: center;
71
+ transition: 0.5s ease;
72
+ transition-property: height, background;
73
+ }
74
+
75
+ header.sticky{
76
+ height: calc(2.5rem + 1rem);
77
+ background: rgba(255, 255, 255, 0.1);
78
+ backdrop-filter: blur(20px);
79
+ border-bottom: 1px solid rgba(255, 255, 255, 0.1);
80
+ }
81
+
82
+ header .nav-bar{
83
+ position: relative;
84
+ width: 100%;
85
+ display: flex;
86
+ align-items: center;
87
+ justify-content: space-between;
88
+ padding: 0 200px;
89
+ transition: 0.3s ease;
90
+ }
91
+
92
+ .nav-close-btn, .nav-menu-btn{
93
+ display: none;
94
+ }
95
+
96
+ .nav-bar .logo{
97
+ color: var(--white-color);
98
+ font-size: 1.8em;
99
+ font-weight: 600;
100
+ letter-spacing: 2px;
101
+ text-transform: uppercase;
102
+ text-decoration: none;
103
+ text-shadow: var(--text-shadow);
104
+ }
105
+
106
+ .navigation .nav-items a{
107
+ color: var(--white-color);
108
+ font-size: 1em;
109
+ text-decoration: none;
110
+ text-shadow: var(--text-shadow);
111
+ position: relative;
112
+ }
113
+
114
+ .navigation .nav-items a i{
115
+ display: none;
116
+ }
117
+
118
+ .navigation .nav-items a:not(:last-child){
119
+ margin-right: 45px;
120
+ }
121
+
122
+ .navigation .nav-items a .svgContainer {
123
+ position: absolute;
124
+ top : -50%;
125
+ left: 100%;
126
+ width: 50px;
127
+ height: 50px;
128
+ margin: 0 auto 1em;
129
+ border-radius: 50%;
130
+ background: none;
131
+ border: solid 2.5px #3A5E77;
132
+ overflow: hidden;
133
+ }
134
+
135
+ .navigation .nav-items a .svgContainer div {
136
+ position: relative;
137
+ width: 100%;
138
+ height: 0;
139
+ overflow: hidden;
140
+ padding-bottom: 100%;
141
+ }
142
+
143
+ .navigation .nav-items a .svgContainer .mySVG {
144
+ position: absolute;
145
+ width: 100%;
146
+ height: 100%;
147
+ pointer-events: none;
148
+ }
149
+
150
+ .profile {
151
+ position: relative;
152
+ }
153
+
154
+ .floating-div {
155
+ position: absolute;
156
+ display: none;
157
+ top: 80px;
158
+ right: 10%;
159
+ padding: 10px;
160
+ background-color: #fff;
161
+ border-radius: 10px;
162
+ border: 1px solid #333;
163
+ }
164
+
165
+ .floating-div .svgContainer {
166
+ position: relative;
167
+ width: 100px;
168
+ height: 100px;
169
+ margin: 0 auto 1em;
170
+ border-radius: 50%;
171
+ background: none;
172
+ border: solid 2.5px #3A5E77;
173
+ overflow: hidden;
174
+ }
175
+
176
+ .floating-div .svgContainer div {
177
+ position: relative;
178
+ width: 100%;
179
+ height: 0;
180
+ overflow: hidden;
181
+ padding-bottom: 100%;
182
+ }
183
+
184
+ .floating-div .svgContainer .mySVG {
185
+ position: absolute;
186
+ width: 100%;
187
+ height: 100%;
188
+ pointer-events: none;
189
+ }
190
+
191
+ .flex-div {
192
+ padding: 10px;
193
+ margin:10px auto;
194
+ }
195
+
196
+ .flex-div a{
197
+ color:black;
198
+ line-height:400%;
199
+ }
200
+
201
+ .flex-div .svgContainer {
202
+ position: relative;
203
+ width: 100px;
204
+ height: 100px;
205
+ margin: 0 auto 1em;
206
+ border-radius: 50%;
207
+ background: none;
208
+ border: solid 2.5px #3A5E77;
209
+ overflow: hidden;
210
+ }
211
+
212
+ .flex-div .svgContainer div {
213
+ position: relative;
214
+ width: 100%;
215
+ height: 0;
216
+ overflow: hidden;
217
+ padding-bottom: 100%;
218
+ }
219
+
220
+ .flex-div .svgContainer .mySVG {
221
+ position: absolute;
222
+ width: 100%;
223
+ height: 100%;
224
+ pointer-events: none;
225
+ }
226
+
227
+ /*======= Home =======*/
228
+ .home{
229
+ min-height: 100vh;
230
+ }
231
+
232
+ .home:before{
233
+ z-index: 888;
234
+ content: '';
235
+ position: absolute;
236
+ width: 100%;
237
+ height: 50px;
238
+ bottom: 0;
239
+ left: 0;
240
+ background: linear-gradient(transparent, var(--section-bg-color));
241
+ }
242
+
243
+ /*======= Background slider =======*/
244
+ .bg-slider{
245
+ z-index: 777;
246
+ position: relative;
247
+ width: 100%;
248
+ min-height: 100vh;
249
+ }
250
+
251
+ .bg-slider .swiper-slide{
252
+ background-image: url('/static/index-backed.svg');
253
+ background-size: cover;
254
+ background-repeat: no-repeat;
255
+ background-position: center center;
256
+ position: relative;
257
+ width: 100%;
258
+ height: 100vh;
259
+ }
260
+
261
+ .bg-slider .swiper-slide img{
262
+ width: 100%;
263
+ height: 100vh;
264
+ object-fit: cover;
265
+ background-position: center;
266
+ background-size: cover;
267
+ pointer-events: none;
268
+ }
269
+
270
+ @media screen and (max-width: 700px){
271
+ .bg-slider .swiper-slide img {
272
+ width: 100%;
273
+ height: 50vh;
274
+ }
275
+
276
+ }
277
+
278
+ .swiper-slide .text-content{
279
+ position: absolute;
280
+ top: 25%;
281
+ color: var(--white-color);
282
+ margin: 0 200px;
283
+ transition: 0.3s ease;
284
+ }
285
+
286
+ .swiper-slide .text-content .title{
287
+ font-size: 4em;
288
+ font-weight: 700;
289
+ text-shadow: var(--text-shadow);
290
+ margin-bottom: 20px;
291
+ transform: translateY(-50px);
292
+ opacity: 0;
293
+ }
294
+
295
+ .swiper-slide-active .text-content .title{
296
+ transform: translateY(0);
297
+ opacity: 1;
298
+ transition: 1s ease;
299
+ transition-delay: 0.3s;
300
+ transition-property: transform, opacity;
301
+ }
302
+
303
+ .swiper-slide .text-content .title span{
304
+ font-size: 0.3em;
305
+ font-weight: 300;
306
+ }
307
+
308
+ .swiper-slide .text-content p{
309
+ max-width: 700px;
310
+ background: rgba(255, 255, 255, 0.1);
311
+ backdrop-filter: blur(10px);
312
+ text-shadow: var(--text-shadow);
313
+ padding: 20px;
314
+ border-radius: 10px;
315
+ border-bottom: 1px solid rgba(255, 255, 255, 0.1);
316
+ border-right: 1px solid rgba(255, 255, 255, 0.1);
317
+ box-shadow: var(--box-shadow);
318
+ transform: translateX(-80px);
319
+ opacity: 0;
320
+ }
321
+
322
+ .swiper-slide-active .text-content p{
323
+ transform: translateX(0);
324
+ opacity: 1;
325
+ transition: 1s ease;
326
+ transition-delay: 0.3s;
327
+ transition-property: transform, opacity;
328
+ }
329
+
330
+ .swiper-slide .text-content .read-btn{
331
+ border: none;
332
+ outline: none;
333
+ background: var(--white-color);
334
+ color: var(--dark-color);
335
+ font-size: 1em;
336
+ font-weight: 500;
337
+ padding: 8px 25px;
338
+ display: flex;
339
+ align-items: center;
340
+ margin-top: 40px;
341
+ border-radius: 10px;
342
+ cursor: pointer;
343
+ transform: translateX(50px);
344
+ opacity: 0;
345
+ }
346
+
347
+ .swiper-slide-active .text-content .read-btn{
348
+ transform: translateX(0);
349
+ opacity: 1;
350
+ transition: 1s ease;
351
+ transition-delay: 0.3s;
352
+ transition-property: transform, opacity;
353
+ }
354
+
355
+ .swiper-slide .text-content .read-btn i{
356
+ font-size: 1.6em;
357
+ transition: 0.3s ease;
358
+ }
359
+
360
+ .swiper-slide .text-content .read-btn:hover i{
361
+ transform: translateX(5px);
362
+ }
363
+
364
+ .dark-layer:before{
365
+ content: '';
366
+ position: absolute;
367
+ width: 100%;
368
+ height: 100vh;
369
+ top: 0;
370
+ left: 0;
371
+ background: rgba(0, 0, 0, 0.1);
372
+ }
373
+
374
+ .bg-slider-thumbs{
375
+ z-index: 777;
376
+ position: absolute;
377
+ bottom: 7em;
378
+ left: 50%;
379
+ transform: translateX(-50%);
380
+ transition: 0.3s ease;
381
+ }
382
+
383
+ .thumbs-container{
384
+ background: rgba(255, 255, 255, 0.1);
385
+ backdrop-filter: blur(10px);
386
+ padding: 10px 3px;
387
+ border-radius: 10px;
388
+ border-bottom: 1px solid rgba(255, 255, 255, 0.1);
389
+ border-right: 1px solid rgba(255, 255, 255, 0.1);
390
+ box-shadow: var(--box-shadow);
391
+ }
392
+
393
+ .thumbs-container img{
394
+ width: 50px;
395
+ height: 35px;
396
+ margin: 0 5px;
397
+ border-radius: 5px;
398
+ cursor: pointer;
399
+ }
400
+
401
+ .swiper-slide-thumb-active{
402
+ border: 1px solid var(--white-color);
403
+ }
404
+
405
+ #visual {
406
+ width:100%;
407
+ height:100%;
408
+ animation: spin 30s linear infinite;
409
+ }
410
+
411
+ @keyframes spin {
412
+ 100% {
413
+ transform: rotate(360deg);
414
+ }
415
+ }
416
+
417
+ #visual2 {
418
+ width:100%;
419
+ height:100%;
420
+ animation: spin2 30s linear infinite;
421
+ }
422
+
423
+ @keyframes spin2 {
424
+ 100% {
425
+ transform: rotate(-360deg);
426
+ }
427
+ }
428
+
429
+ /*======= Media icons =======*/
430
+ .media-icons{
431
+ z-index: 999;
432
+ position: absolute;
433
+ display: flex;
434
+ flex-direction: column;
435
+ top: 50%;
436
+ transform: translateY(-50%);
437
+ margin-left: 90px;
438
+ }
439
+
440
+ .media-icons a{
441
+ color: var(--white-color);
442
+ font-size: 1.7em;
443
+ margin: 10px 0;
444
+ }
445
+
446
+ /*======= About section =======*/
447
+ .about h2{
448
+ font-size: 3em;
449
+ font-weight: 600;
450
+ }
451
+
452
+ .about p{
453
+ margin: 25px 0;
454
+ }
455
+
456
+ /*======= Media queries (max-width: 1100px) =======*/
457
+ @media screen and (max-width: 1100px){
458
+ header .nav-bar{
459
+ padding: 0 50px;
460
+ }
461
+
462
+ .section{
463
+ padding: 25px 50px;
464
+ }
465
+
466
+ .media-icons{
467
+ right: 0;
468
+ margin-right: 50px;
469
+ }
470
+
471
+ .swiper-slide .text-content{
472
+ margin: 0 120px 0 50px;
473
+ }
474
+
475
+ .bg-slider-thumbs{
476
+ bottom: 3em;
477
+ }
478
+ }
479
+
480
+ /*======= Media queries (max-width: 900px) =======*/
481
+ @media screen and (max-width: 900px){
482
+ header .nav-bar{
483
+ padding: 25px 20px;
484
+ }
485
+
486
+ .section{
487
+ padding: 25px 20px;
488
+ }
489
+
490
+ .media-icons{
491
+ margin-right: 20px;
492
+ }
493
+
494
+ .media-icons a{
495
+ font-size: 1.5em;
496
+ }
497
+
498
+ .swiper-slide .text-content{
499
+ margin: 0 70px 0 20px;
500
+ }
501
+
502
+ .swiper-slide .text-content .title{
503
+ font-size: 2em;
504
+ }
505
+
506
+ .swiper-slide .text-content .title span{
507
+ font-size: 0.35em;
508
+ }
509
+
510
+ .swiper-slide .text-content p{
511
+ font-size: 0.7em;
512
+ }
513
+
514
+ /*======= Navigation menu =======*/
515
+ .nav-menu-btn{
516
+ display: block;
517
+ color: var(--white-color);
518
+ font-size: 1.5em;
519
+ cursor: pointer;
520
+ }
521
+
522
+ .nav-close-btn{
523
+ display: block;
524
+ color: var(--white-color);
525
+ position: absolute;
526
+ top: 0;
527
+ right: 0;
528
+ font-size: 1.3em;
529
+ margin: 10px;
530
+ cursor: pointer;
531
+ transition: 0.3s ease;
532
+ }
533
+
534
+ .navigation{
535
+ z-index: 99999;
536
+ position: fixed;
537
+ width: 100%;
538
+ height: 100vh;
539
+ top: 0;
540
+ left: 0;
541
+ background: rgba(0, 0, 0, 0.25);
542
+ display: flex;
543
+ justify-content: center;
544
+ align-items: center;
545
+ visibility: hidden;
546
+ opacity: 0;
547
+ transition: 0.3s ease;
548
+ }
549
+
550
+ .navigation.active{
551
+ visibility: visible;
552
+ opacity: 1;
553
+ }
554
+
555
+ .navigation .nav-items{
556
+ position: relative;
557
+ background: var(--dark-color);
558
+ width: 400px;
559
+ max-width: 400px;
560
+ display: grid;
561
+ place-content: center;
562
+ margin: 20px;
563
+ padding: 40px;
564
+ border-radius: 20px;
565
+ box-shadow: var(--box-shadow);
566
+ transform: translateY(-200px);
567
+ transition: 0.3s ease;
568
+ }
569
+
570
+ .navigation.active .nav-items{
571
+ transform: translateY(0);
572
+ }
573
+
574
+ .navigation .nav-items a{
575
+ color: var(--white-color);
576
+ font-size: 1em;
577
+ margin: 15px 50px;
578
+ transition: 0.3s ease;
579
+ }
580
+
581
+ .navigation .nav-items a:hover{
582
+ color: var(--navigation-item-hover-color);
583
+ }
584
+
585
+ .navigation .nav-items > a > i{
586
+ display: inline-block;
587
+ font-size: 1.3em;
588
+ margin-right: 5px;
589
+ }
590
+
591
+ .swiper-slide .text-content .read-btn{
592
+ font-size: 0.9em;
593
+ padding: 5px 15px;
594
+ }
595
+
596
+ /*======= About section =======*/
597
+ .about h2{
598
+ font-size: 2.5em;
599
+ }
600
+
601
+ .about p{
602
+ font-size: 0.9em;
603
+ }
604
+ }
605
+
606
+ /*======= Features section =======*/
607
+ #features {
608
+ background-image: url('/static/feature-back.svg');
609
+ background-size: cover;
610
+ background-repeat: no-repeat;
611
+ background-position: center center;
612
+ width:100%;
613
+ }
614
+
615
+ .flex-container {
616
+ display: flex;
617
+ justify-content: space-around;
618
+ align-items: center;
619
+ }
620
+
621
+ .flex-item1,
622
+ .flex-item4,
623
+ .flex-item5,
624
+ .flex-item8 {
625
+ border: 2px;
626
+ border-radius: 15px;
627
+ margin:20px;
628
+ padding: 20px;
629
+ text-align: justify;
630
+ background: rgba(255, 255, 255, 0.1);
631
+ backdrop-filter: blur(10px);
632
+ text-shadow: var(--text-shadow);
633
+ border-bottom: 1px solid rgba(255, 255, 255, 0.1);
634
+ border-right: 1px solid rgba(255, 255, 255, 0.1);
635
+ box-shadow: var(--box-shadow);
636
+ }
637
+
638
+ .flex-item2,
639
+ .flex-item3,
640
+ .flex-item6,
641
+ .flex-item7 {
642
+ margin:20px;
643
+ width:40%;
644
+ flex-basis: 50%;
645
+ padding: 10px;
646
+ text-align: center;
647
+ }
648
+ /*
649
+ .flex-item-line{
650
+ width: 25%;
651
+ height: 50px;
652
+ position: absolute;
653
+ border-bottom: 3px solid grey
654
+ }*/
655
+
656
+ .numbers {
657
+ margin:10px auto;
658
+ border-radius:50%;
659
+ height:150px;
660
+ width:150px;
661
+ text-align:center;
662
+ justify-content:center;
663
+ padding:30px;
664
+ font-size:40px;
665
+ background: rgb(255,153,0);
666
+ background: linear-gradient(45deg, rgba(255,153,0,1) 0%, rgba(255,235,0,1) 100%, rgba(0,212,255,1) 100%);
667
+ box-shadow: var(--box-shadow);
668
+ }
669
+
670
+ .marker {
671
+ display:none;
672
+ }
673
+
674
+ @media screen and (max-width: 900px) {
675
+ .marker {
676
+ display: block;
677
+ }
678
+ .flex-item2,
679
+ .flex-item3,
680
+ .flex-item6,
681
+ .flex-item7 {
682
+ display: none;
683
+ }
684
+ .flex-item1,
685
+ .flex-item4,
686
+ .flex-item5,
687
+ .flex-item8 {
688
+ flex-basis: 75%;
689
+ font-size:0.8em;
690
+ width:100%;
691
+ }
692
+ }
693
+
694
+
695
+ /* ============== Footer ================ */
696
+ .footer-flex {
697
+ display: flex;
698
+ flex-direction:row;
699
+ justify-content: space-around;
700
+ align-items: flex-end;
701
+ padding:20px;
702
+ font-weight:bold;
703
+ }
704
+ .logo-foot {
705
+ padding:20px;
706
+ margin:10px auto;
707
+ }
708
+ .copyright {
709
+ padding:20px;
710
+ margin:10px auto;
711
+ }
712
+ .follow {
713
+ padding:20px;
714
+ margin:10px auto;
715
+ }
716
+
717
+ .flex { /*Flexbox for containers*/
718
+ display: flex;
719
+ justify-content: center;
720
+ align-items: center;
721
+ text-align: center;
722
+ }
723
+
724
+ .waves {
725
+ position:relative;
726
+ width: 100%;
727
+ height:auto;
728
+ margin-bottom:-7px; /*Fix for safari gap*/
729
+ min-height:100px;
730
+ max-height:150px;
731
+ }
732
+
733
+ .content {
734
+ position:relative;
735
+ height:20vh;
736
+ text-align:center;
737
+ background-color: rgba(255, 157, 0, 1);
738
+ }
739
+
740
+ /* Animation */
741
+
742
+ .parallax > use {
743
+ animation: move-forever 25s cubic-bezier(.55,.5,.45,.5) infinite;
744
+ }
745
+ .parallax > use:nth-child(1) {
746
+ animation-delay: -2s;
747
+ animation-duration: 7s;
748
+ }
749
+ .parallax > use:nth-child(2) {
750
+ animation-delay: -3s;
751
+ animation-duration: 10s;
752
+ }
753
+ .parallax > use:nth-child(3) {
754
+ animation-delay: -4s;
755
+ animation-duration: 13s;
756
+ }
757
+ .parallax > use:nth-child(4) {
758
+ animation-delay: -5s;
759
+ animation-duration: 20s;
760
+ }
761
+ @keyframes move-forever {
762
+ 0% {
763
+ transform: translate3d(-90px,0,0);
764
+ }
765
+ 100% {
766
+ transform: translate3d(85px,0,0);
767
+ }
768
+ }
769
+ /*Shrinking for mobile*/
770
+ @media (max-width: 768px) {
771
+ .waves {
772
+ height:40px;
773
+ min-height:40px;
774
+ }
775
+ .content {
776
+ height:30vh;
777
+ }
778
+ h1 {
779
+ font-size:24px;
780
+ }
781
+ .footer-flex {
782
+ flex-direction:column;
783
+ }
784
+ .logo-foot {
785
+ padding:10px;
786
+ margin:5px auto;
787
+ }
788
+ .copyright {
789
+ padding:10px;
790
+ margin:5px auto;
791
+ }
792
+ .follow {
793
+ padding:10px;
794
+ margin:5px auto;
795
+ }
796
+ .content {
797
+ height:45vh;
798
+ }
799
+ }
800
+
801
+ .contact-items a{
802
+ color: var(--white-color);
803
+ font-size: 1em;
804
+ text-decoration:none;
805
+ text-shadow: var(--text-shadow);
806
+ }
807
+
808
+ .loader {
809
+ position: fixed;
810
+ top: 0;
811
+ left: 0;
812
+ width: 100%;
813
+ height: 100%;
814
+ background: #fff;
815
+ margin:auto;
816
+ justify-content: center;
817
+ align-items: center;
818
+ transition: opacity 0.5s ease-in-out;
819
+ opacity: 1;
820
+ }
821
+
822
+ .loader.hide {
823
+ opacity: 0.15;
824
+ }
825
+
826
+ .loader3{
827
+ position: relative;
828
+ width: 150px;
829
+ height: 20px;
830
+ top: 45%;
831
+ top: -webkit-calc(50% - 10px);
832
+ top: calc(50% - 10px);
833
+ left: 25%;
834
+ left: -webkit-calc(50% - 75px);
835
+ left: calc(50% - 75px);
836
+ }
837
+
838
+ .loader3:after{
839
+ content: "LOADING ...";
840
+ color: #000;
841
+ font-weight: 200;
842
+ font-size: 16px;
843
+ position: absolute;
844
+ width: 100%;
845
+ height: 20px;
846
+ line-height: 20px;
847
+ left: 0;
848
+ top: 0;
849
+ background-color: #fff;
850
+ z-index: 1;
851
+ }
852
+
853
+ .loader3:before{
854
+ content: "";
855
+ position: absolute;
856
+ background: linear-gradient(to right, #FF416C, #FFA63E);
857
+ top: -5px;
858
+ left: 0px;
859
+ height: 30px;
860
+ width: 0px;
861
+ z-index: 0;
862
+ opacity: 1;
863
+ -webkit-transform-origin: 100% 0%;
864
+ transform-origin: 100% 0% ;
865
+ -webkit-animation: loader3 3s ease-in-out infinite;
866
+ animation: loader3 3s ease-in-out infinite;
867
+ }
868
+
869
+ @-webkit-keyframes loader3{
870
+ 0%{width: 0px;}
871
+ 70%{width: 100%; opacity: 1;}
872
+ 90%{opacity: 0; width: 100%;}
873
+ 100%{opacity: 0;width: 0px;}
874
+ }
875
+
876
+ @keyframes loader3{
877
+ 0%{width: 0px;}
878
+ 70%{width: 100%; opacity: 1;}
879
+ 90%{opacity: 0; width: 100%;}
880
+ 100%{opacity: 0;width: 0px;}
881
+ }
882
+
883
+ /*===== Admin Table ====*/
884
+ .accordion {
885
+ background-color: #eee;
886
+ color: #444;
887
+ cursor: pointer;
888
+ padding: 10px;
889
+ margin:10px;
890
+ margin-left:30px;
891
+ width: 95%;
892
+ border: none;
893
+ text-align: left;
894
+ outline: none;
895
+ font-size: 20px;
896
+ transition: 0.4s;
897
+ }
898
+
899
+ .active, .accordion:hover {
900
+ background-color: #ccc;
901
+ }
902
+
903
+ .accordion:after {
904
+ content: '\002B';
905
+ color: #777;
906
+ font-weight: bold;
907
+ float: right;
908
+ margin-left: 5px;
909
+ }
910
+
911
+ .active:after {
912
+ content: "\2212";
913
+ }
914
+
915
+ .panel {
916
+ padding: 0 18px;
917
+ background-color: white;
918
+ max-height: 0;
919
+ font-size:14px;
920
+ overflow: hidden;
921
+ transition: max-height 0.2s ease-out;
922
+ }
923
+
924
+ .my-div {
925
+ padding: 20px;
926
+ margin: 0 auto;
927
+ max-width: 100%;
928
+ text-align: center;
929
+ font-size: 14px;
930
+ color: #333;
931
+ }
932
+
933
+ .flexbox {
934
+ display:flex;
935
+ flex-direction:row;
936
+ align-items:stretch;
937
+ }
938
+
939
+ .flexbox1 {
940
+ width:25%;
941
+ margin:20px auto;
942
+ }
943
+
944
+ .flexbox1 button {
945
+ background:white;
946
+ padding:5px;
947
+ width:100%;
948
+ align-items:left;
949
+ text-align:left;
950
+ font-weight:bold;
951
+ border-radius:10px;
952
+ border:none;
953
+ margin:10px;
954
+ cursor: pointer;
955
+ box-shadow: 0 5px 25px rgb(0 0 0 / 20%);
956
+ }
957
+
958
+ .flexbox2 {
959
+ width:80%;
960
+ margin:20px auto;
961
+ }
962
+
963
+ .feed {
964
+ text-align: center;
965
+ padding:5px;
966
+ width:80%;
967
+ margin:10px auto;
968
+ line-height:300%;
969
+ border-radius: 30px;
970
+ border:solid green;
971
+ background: rgba(0, 255, 21, 0.3);
972
+ box-shadow: 0 5px 25px rgb(0 0 0 / 20%);
973
+ }
974
+
975
+ .forminfo-admin {
976
+ display: flex;
977
+ flex-direction: column;
978
+ justify-content: start;
979
+ align-items: stretch;
980
+ align-content: stretch;
981
+ text-align: justify;
982
+ padding: 10px;
983
+ margin: 10px auto;
984
+ width:80%;
985
+ height: 85vh;
986
+ font-size: 15px;
987
+ border-radius: 20px;
988
+ background: #ffeab0;
989
+ box-shadow: 0 5px 25px rgb(0 0 0 / 20%);
990
+ position: -webkit-sticky;
991
+ position: sticky;
992
+ top: 80px;
993
+ }
994
+
995
+ .flex-container {
996
+ display: flex;
997
+ flex-direction: row;
998
+ flex-wrap: nowrap;
999
+ justify-content: space-around;
1000
+ align-items: center;
1001
+ align-content: center;
1002
+ font-size:1em;
1003
+ padding:30px;
1004
+ }
1005
+
1006
+ .flex-items:nth-child(1) {
1007
+ display: block;
1008
+ flex-grow: 0;
1009
+ flex-shrink: 1;
1010
+ flex-basis: auto;
1011
+ align-self: auto;
1012
+ order: 0;
1013
+ border: 2px;
1014
+ border-radius: 10px;
1015
+ background: linear-gradient(45deg, rgba(255,153,0,1) 0%, rgba(255,235,0,1) 100%, rgba(0,212,255,1) 100%);
1016
+ color:black;
1017
+ width:20%;
1018
+ padding: 5px;
1019
+ text-align: center;
1020
+ box-shadow: 0 5px 25px rgb(0 0 0 / 50%);
1021
+ }
1022
+
1023
+ .flex-items:nth-child(2) {
1024
+ display: block;
1025
+ flex-grow: 0;
1026
+ flex-shrink: 1;
1027
+ flex-basis: auto;
1028
+ align-self: auto;
1029
+ order: 0;
1030
+ border: 2px;
1031
+ border-radius: 10px;
1032
+ background: linear-gradient(45deg, rgba(255,153,0,1) 0%, rgba(255,235,0,1) 100%, rgba(0,212,255,1) 100%);
1033
+ color:black;
1034
+ width:20%;
1035
+ padding: 5px;
1036
+ text-align: center;
1037
+ box-shadow: 0 5px 25px rgb(0 0 0 / 50%);
1038
+ }
1039
+
1040
+ .flex-items:nth-child(3) {
1041
+ display: block;
1042
+ flex-grow: 0;
1043
+ flex-shrink: 1;
1044
+ flex-basis: auto;
1045
+ align-self: auto;
1046
+ order: 0;
1047
+ border: 2px;
1048
+ border-radius: 10px;
1049
+ background: linear-gradient(45deg, rgba(255,153,0,1) 0%, rgba(255,235,0,1) 100%, rgba(0,212,255,1) 100%);
1050
+ color:black;
1051
+ width:25%;
1052
+ padding: 5px;
1053
+ text-align: center;
1054
+ box-shadow: 0 5px 25px rgb(0 0 0 / 50%);
1055
+ }
1056
+
1057
+ .create {
1058
+ border: none;
1059
+ outline: none;
1060
+ background: var(--white-color);
1061
+ color: var(--dark-color);
1062
+ font-size: 1.1em;
1063
+ font-weight: 500;
1064
+ display: flex;
1065
+ align-items: center;
1066
+ align-content: center;
1067
+ margin: 10px auto;
1068
+ padding: 10px;
1069
+ border-radius: 10px;
1070
+ cursor: pointer;
1071
+ transform: scale(1);
1072
+ transition: transform 0.3s ease-in-out;
1073
+ text-shadow: 0 5px 25px rgba(0, 0, 0, 0.4);
1074
+ box-shadow: 0 5px 25px rgb(0 0 0 / 50%);
1075
+ }
1076
+
1077
+ .but1,
1078
+ .but2,
1079
+ .but3 {
1080
+ margin:20px;
1081
+ padding:10px;
1082
+ width:100%;
1083
+ text-decoration: none;
1084
+ }
1085
+
1086
+ .but1:hover {
1087
+ transform: scale(1.1);
1088
+ }
1089
+ .but2:hover {
1090
+ transform: scale(1.1);
1091
+ }
1092
+ .but3:hover {
1093
+ transform: scale(1.1);
1094
+ }
1095
+ .but4:hover {
1096
+ transform: scale(1.1);
1097
+ }
1098
+
1099
+ .create:hover {
1100
+ transform: scale(1.1);
1101
+ opacity: 1;
1102
+ }
1103
+
1104
+ .arrow {
1105
+ transform: scale(1.5);
1106
+ transition: transform 0.3s ease-out;
1107
+ }
1108
+
1109
+ .arrow:hover {
1110
+ transform: scale(2);
1111
+ }
1112
+
1113
+ .flexsub {
1114
+ display:flex;
1115
+ flex-direction:row;
1116
+ justify-content:space-between;
1117
+ align-items: space-between;
1118
+ font-size:0.8em;
1119
+ padding-left:70px;
1120
+ padding-right:100px;
1121
+ }
1122
+
1123
+ .navsub1 p {
1124
+ margin:20px;
1125
+ margin-bottom:5px;
1126
+ top:500;
1127
+ padding:5px;
1128
+ text-align:center;
1129
+ width:100%;
1130
+ border-radius:20px;
1131
+ border:solid;
1132
+ border-color:#ffbb00;
1133
+ font-weight:bold;
1134
+ text-decoration: none;
1135
+ opacity:0.7;
1136
+ }
1137
+
1138
+ .sub1 {
1139
+ margin:20px;
1140
+ margin-bottom:5px;
1141
+ padding:10px;
1142
+ width:100%;
1143
+ border-radius:20px;
1144
+ border:none;
1145
+ font-weight:bold;
1146
+ text-decoration: none;
1147
+ background:#fff9cc;
1148
+ transform: scale(1);
1149
+ transition: transform 0.3s ease-in-out;
1150
+ }
1151
+
1152
+ .sub1:hover {
1153
+ transform: scale(1.1);
1154
+ }
1155
+
1156
+ .qres {
1157
+ display:flex;
1158
+ flex-direction:row;
1159
+ padding:20px;
1160
+ margin:10px;
1161
+ border:solid;
1162
+ border-color:#ffbb00;
1163
+ border-radius: 6px;
1164
+ }
1165
+ .qflex1 {
1166
+ flex-basis:15%;
1167
+ }
1168
+ .qflex2 {
1169
+ flex-basis:85%;
1170
+ }
1171
+
1172
+ .response {
1173
+ padding:10px;
1174
+ margin:5px;
1175
+ border-radius:5px;
1176
+ background:#fff9cc;
1177
+ }
1178
+
1179
+ .progressdiv {
1180
+ width: 20%;
1181
+ height: 100px;
1182
+ border: 1px solid black;
1183
+ border-radius: 5px;
1184
+ background: linear-gradient(to top,#ffbb00 75%,white 50%,white 100%);
1185
+ }
1186
+
1187
+
1188
+ .flex-container-result {
1189
+ display: flex;
1190
+ flex-direction: row;
1191
+ justify-content: space-around;
1192
+ align-items: center;
1193
+ font-size:0.9em;
1194
+ }
1195
+
1196
+ .flex-item1-result {
1197
+ border: 2px;
1198
+ border-radius: 10px;
1199
+ background-color: #ff9900;
1200
+ color:black;
1201
+ margin:10px;
1202
+ width:30%;
1203
+ padding: 5px;
1204
+ text-align: justify;
1205
+ box-shadow: 0 5px 25px rgb(0 0 0 / 50%);
1206
+ }
1207
+
1208
+ .flex-item1-result a {
1209
+ color:black;
1210
+ text-decoration: none;
1211
+ }
1212
+
1213
+ .flex-item2-result {
1214
+ border: 2px;
1215
+ border-radius: 15px;
1216
+ background-color: #00db21;
1217
+ margin: 20px;
1218
+ padding: 20px;
1219
+ width: 30%;
1220
+ text-align: justify;
1221
+ box-shadow: 0 5px 25px rgb(0 0 0 / 50%);
1222
+ }
1223
+
1224
+ .flex-item2-result a {
1225
+ color:black;
1226
+ text-decoration: none;
1227
+ }
1228
+
1229
+ @media screen and (max-width: 768px) {
1230
+ .flex-container-result {
1231
+ flex-direction:column;
1232
+ }
1233
+ .flex-item1-result,
1234
+ .flex-item2-result {
1235
+ width:90%;
1236
+ }
1237
+ .flex-container {
1238
+ flex-direction: column;
1239
+ }
1240
+ .flex-items:nth-child(1),
1241
+ .flex-items:nth-child(2),
1242
+ .flex-items:nth-child(3) {
1243
+ width:80%;
1244
+ }
1245
+
1246
+ .flexbox {
1247
+ flex-direction: column;
1248
+ }
1249
+
1250
+ .flexbox1 {
1251
+ width:90%;
1252
+ margin:10px auto;
1253
+ }
1254
+
1255
+ .flexbox2 {
1256
+ width:100%;
1257
+ margin:10px auto;
1258
+ }
1259
+
1260
+ .forminfo-admin {
1261
+ padding: 10px;
1262
+ margin: 10px auto;
1263
+ margin-bottom:100px;
1264
+ width:100%;
1265
+ height: 100%;
1266
+ font-size: 13px;
1267
+ border-radius: 10px;
1268
+ position:relative;
1269
+ top: 80px;
1270
+ }
1271
+ }
1272
+
1273
+ .flex-container-previous {
1274
+ display: flex;
1275
+ flex-wrap: wrap;
1276
+ justify-content: center;
1277
+ align-items: center;
1278
+ background: #ffeab0;
1279
+ box-shadow: 0 5px 25px rgb(0 0 0 / 20%);
1280
+ margin:30px;
1281
+ border-radius:30px;
1282
+ }
1283
+
1284
+ .flex-item1-previous {
1285
+ border: 2px;
1286
+ border-radius: 15px;
1287
+ background-color: light-gray;
1288
+ color:black;
1289
+ margin:10px;
1290
+ padding: 20px;
1291
+ text-align: center;
1292
+ }
1293
+
1294
+ .flex-item2-previous {
1295
+ border: 2px;
1296
+ border-radius: 15px;
1297
+ background-color: light-gray;
1298
+ color:black;
1299
+ margin: 0px 30px;
1300
+ padding:30px;
1301
+ text-align: center;
1302
+ }
1303
+
1304
+ .flex-item1-previous a,
1305
+ .flex-item2-previous a {
1306
+ color:black;
1307
+ text-decoration: none;
1308
+ }
1309
+
1310
+ @media screen and (max-width: 768px) {
1311
+ .flex-item1-previous .flex-item2-previous {
1312
+ flex-basis: 75%;
1313
+ }
1314
+ }
1315
+
1316
+ /* Media query to adjust the div for smaller screens */
1317
+ @media screen and (max-width: 600px) {
1318
+ .my-div {
1319
+ max-width: 100%;
1320
+ padding: 10px;
1321
+ font-size: 14px;
1322
+ }
1323
+ }
1324
+
1325
+ /* ================== Custom Assessment Form ======================== */
1326
+ /*.form-group {
1327
+ display: flex;
1328
+ flex-direction: column;
1329
+ justify-content: space-around;
1330
+ align-items: stretch;
1331
+ align-content: stretch;
1332
+ margin: 20px;
1333
+ }
1334
+
1335
+ .form-group label {
1336
+ padding:20px;
1337
+ width: auto;
1338
+ }
1339
+
1340
+ .form-group textarea {
1341
+ padding:20px;
1342
+ width: 70%;
1343
+ margin:30px auto;
1344
+ }*/
1345
+ .add-btn {
1346
+ margin:20px;
1347
+ width:50px;
1348
+ height:50px;
1349
+ border-radius:50%;
1350
+ background:linear-gradient(45deg, rgba(255,153,0,1) 0%, rgba(255,235,0,1) 100%, rgba(0,212,255,1) 100%);
1351
+ font-size:24px;
1352
+ font-weight:bold;
1353
+ border:none;
1354
+ transform: scale(1);
1355
+ }
1356
+ .add-btn:hover {
1357
+ transform: scale(1.1);
1358
+ }
1359
+
1360
+ .sub-btn {
1361
+ margin:20px;
1362
+ padding:10px;
1363
+ background:rgba(0, 255, 0, 0.6);
1364
+ font-size:20px;
1365
+ font-weight:bold;
1366
+ border:none;
1367
+ border-radius: 10px;
1368
+ transform: scale(1);
1369
+ }
1370
+ .sub-btn:hover {
1371
+ transform: scale(1.1);
1372
+ }
1373
+
1374
+ .rst-btn {
1375
+ margin:20px;
1376
+ padding:10px;
1377
+ border-radius:10px;
1378
+ background:yellow;
1379
+ font-size:20px;
1380
+ font-weight:bold;
1381
+ border:none;
1382
+ transform: scale(1);
1383
+ }
1384
+ .rst-btn:hover {
1385
+ transform: scale(1.1);
1386
+ }
1387
+
1388
+ .rel-btn {
1389
+ margin:20px;
1390
+ padding:10px;
1391
+ border-radius:10px;
1392
+ background: #ffa200;
1393
+ font-size:20px;
1394
+ font-weight:bold;
1395
+ border:none;
1396
+ transform: scale(1);
1397
+ }
1398
+ .rel-btn:hover {
1399
+ transform: scale(1.1);
1400
+ }
1401
+
1402
+ .remove-button {
1403
+ padding:10px;
1404
+ background:rgba(255, 0, 0, 0.6);
1405
+ border:solid red;
1406
+ font-weight:bold;
1407
+ border-radius:10px;
1408
+ transform: scale(0.9);
1409
+ box-shadow: 0 0 5px rgba(0, 0, 0, 0.3);
1410
+ }
1411
+
1412
+ .remove-button:hover {
1413
+ transform: scale(1);
1414
+ }
1415
+
1416
+ #inputContainer select {
1417
+ padding:5px;
1418
+ margin:20px auto;
1419
+ font-size:0.8em;
1420
+ font-weight: 700;
1421
+ text-indent: 5px;
1422
+ max-width:250px;
1423
+ background-color: #ffebb5;
1424
+ border: solid 2px #217093;
1425
+ border-radius: 4px;
1426
+ width: 90%;
1427
+ color: #353538;
1428
+ transition: box-shadow 0.2s linear, border-color 0.25s ease-out;
1429
+ }
1430
+
1431
+ #inputContainer option {
1432
+ background: white;
1433
+ text-indent: 5px;
1434
+ spacing:20px;
1435
+ font-size:1em;
1436
+ font-weight: 700;
1437
+ }
1438
+
1439
+ .form-group {
1440
+ display: flex;
1441
+ flex-direction: column;
1442
+ justify-content: space-around;
1443
+ align-items: stretch;
1444
+ align-content: stretch;
1445
+ text-align: justify;
1446
+ margin: 20px auto;
1447
+ border-radius: 30px;
1448
+ padding:20px;
1449
+ }
1450
+
1451
+ .form-group label {
1452
+ padding:30px;
1453
+ width: auto; /* adjust as needed */
1454
+ }
1455
+
1456
+ .form-group textarea {
1457
+ padding:10px;
1458
+ width: 80%;
1459
+ margin:10px auto;
1460
+ border-radius:10px;
1461
+ }
1462
+
1463
+ @media (max-width: 785px) {
1464
+ .form-group {
1465
+ margin:5px;
1466
+ flex-wrap: wrap;
1467
+ }
1468
+
1469
+ label {
1470
+ width: 100%;
1471
+ margin-bottom: 5px;
1472
+ }
1473
+
1474
+ textarea {
1475
+ width: 100%;
1476
+ }
1477
+ }
1478
+
1479
+
1480
+ .formdiv {
1481
+ padding: 20px;
1482
+ margin: 10px auto;
1483
+ max-width: 100%;
1484
+ font-size: 18px;
1485
+ color: #333;
1486
+ }
1487
+
1488
+ @media (max-width: 785px) {
1489
+ .formdiv {
1490
+ padding: 20px;
1491
+ margin: 0 auto;
1492
+ font-size: 14px;
1493
+ }
1494
+ }
1495
+ .forminfo {
1496
+ display: flex;
1497
+ flex-direction: column;
1498
+ justify-content: start;
1499
+ align-items: stretch;
1500
+ align-content: stretch;
1501
+ text-align: justify;
1502
+ padding: 20px;
1503
+ margin:20px;
1504
+ width:30%;
1505
+ height: 80vh;
1506
+ font-size: 14px;
1507
+ border-radius: 20px;
1508
+ background: #ffeab0;
1509
+ position: -webkit-sticky;
1510
+ position: sticky;
1511
+ top: 80px;
1512
+ box-shadow: 0 5px 25px rgb(0 0 0 / 20%);
1513
+ }
1514
+
1515
+ .forminfo input {
1516
+ margin:20px auto;
1517
+ }
1518
+ .forminfo label {
1519
+ padding:10px;
1520
+ margin:10px;
1521
+ width: auto;
1522
+ }
1523
+ .forminfo textarea {
1524
+ padding:10px;
1525
+ width: 70%;
1526
+ margin:10px auto;
1527
+ margin-top:30px;
1528
+ }
1529
+
1530
+ .form-ques {
1531
+ width:80%;
1532
+ }
1533
+ .form-ques label {
1534
+ padding:10px;
1535
+ margin:10px auto;
1536
+ width: auto; /* adjust as needed */
1537
+ }
1538
+
1539
+ .form-ques textarea {
1540
+ padding:10px;
1541
+ width: 50%;
1542
+ margin:20px auto;
1543
+ padding:10px;
1544
+ border-radius:10px;
1545
+ background: #ffebb5;
1546
+ }
1547
+
1548
+ .container {
1549
+ display: flex;
1550
+ justify-content: space-around;
1551
+ flex-direction: row;
1552
+ padding:20px;
1553
+ margin:20px;
1554
+ }
1555
+
1556
+ .namearea {
1557
+ display: flex;
1558
+ flex-direction: row;
1559
+ flex-wrap: wrap;
1560
+ justify-content: normal;
1561
+ align-items: center;
1562
+ align-content: stretch;
1563
+ }
1564
+
1565
+ .labelarea {
1566
+ display: flex;
1567
+ flex-direction: row;
1568
+ flex-wrap: wrap;
1569
+ justify-content: normal;
1570
+ align-items: center;
1571
+ align-content: stretch;
1572
+ }
1573
+
1574
+
1575
+ @media (max-width: 785px) {
1576
+ .forminfo {
1577
+ padding: 10px;
1578
+ margin: 0 auto;
1579
+ font-size: 12px;
1580
+ }
1581
+ .forminfo input {
1582
+ margin:5px auto;
1583
+ }
1584
+ .forminfo label {
1585
+ padding:5px;
1586
+ margin:5px;
1587
+ width: auto;
1588
+ }
1589
+ .forminfo textarea {
1590
+ padding:5px;
1591
+ width: 70%;
1592
+ margin:0px auto;
1593
+ margin-top:15px;
1594
+ }
1595
+ .form-ques {
1596
+ width:90%;
1597
+ margin:5px auto;
1598
+ }
1599
+
1600
+ .forminfo {
1601
+ padding: 10px;
1602
+ margin: 10px auto;
1603
+ margin-bottom:100px;
1604
+ width:100%;
1605
+ height: 100%;
1606
+ font-size: 13px;
1607
+ border-radius: 10px;
1608
+ position:relative;
1609
+ top: 80px;
1610
+ }
1611
+ }
1612
+
1613
+ .drag {
1614
+ display: flex;
1615
+ flex-direction: row;
1616
+ justify-content: space-between;
1617
+ align-items: center;
1618
+ border-radius: 10px;
1619
+ border:solid;
1620
+ border-color:#ffbb00;
1621
+ cursor: move;
1622
+ transition: transform 0.2s ease-in-out;
1623
+ background-size: 50% auto;
1624
+ margin:15px auto;
1625
+ padding:5px;
1626
+ position: relative;
1627
+ width:100%;
1628
+ box-shadow: 0 5px 25px rgb(0 0 0 / 10%);
1629
+ }
1630
+ .drag::before {
1631
+ content: "";
1632
+ display: block;
1633
+ position: absolute;
1634
+ top: 0;
1635
+ left: 0;
1636
+ width: 30%;
1637
+ height: 100%;
1638
+ background-color: transparent; /* set the color of the transparent portion */
1639
+ }
1640
+
1641
+ .drag-enter {
1642
+ opacity: 0;
1643
+ transform: translateY(-100%);
1644
+ transition: opacity 0.3s ease-in-out, transform 0.3s ease-in-out;
1645
+ }
1646
+
1647
+ .drag-leave {
1648
+ opacity: 1;
1649
+ transform: scale(1) translateY(0);
1650
+ transition: opacity 0.3s ease-in-out, transform 0.3s ease-in-out;
1651
+ }
1652
+
1653
+ .drag-leave.zoom-out {
1654
+ opacity: 0;
1655
+ transform: scale(0.8) translateY(-20px);
1656
+ }
1657
+
1658
+ .drag:hover {
1659
+ box-shadow: 0 0 5px rgba(0, 0, 0, 0.3);
1660
+ }
1661
+
1662
+ .dragging {
1663
+ opacity: 0.5;
1664
+ transform: scale(1.05);
1665
+ }
1666
+ @media (max-width: 785px) {
1667
+ .drag {
1668
+ flex-direction: column;
1669
+ }
1670
+ }
1671
+
1672
+
1673
+ /* ============ Verify Homepage link ======================= */
1674
+
1675
+ .homelink {
1676
+ border: none;
1677
+ outline: none;
1678
+ background: var(--white-color);
1679
+ color: var(--dark-color);
1680
+ font-size: 1.1em;
1681
+ font-weight: 500;
1682
+ padding: 8px 25px;
1683
+ display: flex;
1684
+ align-items: center;
1685
+ margin-top: 40px;
1686
+ border-radius: 10px;
1687
+ cursor: pointer;
1688
+ transform: scale(0.8);
1689
+ transition: transform 0.3s ease-in-out;
1690
+ }
1691
+
1692
+ .homelink:hover {
1693
+ transform: scale(1);
1694
+ opacity: 1;
1695
+ }
1696
+
1697
+ #success {
1698
+ display:none;
1699
+ text-align: center;
1700
+ }
1701
+
1702
+ #failure {
1703
+ display:none;
1704
+ text-align: center;
1705
+ }
1706
+
1707
+ #success-svg{
1708
+ width: 500px;
1709
+ height: 400px;
1710
+ margin: 0 auto;
1711
+ transform: scale(0.8);
1712
+ transition: transform 0.3s ease-in-out;
1713
+ }
1714
+
1715
+ #success-svg:hover {
1716
+ transform: scale(1);
1717
+ opacity: 1;
1718
+ }
1719
+
1720
+ svg {
1721
+ width: 100%;
1722
+ height: 100%;
1723
+ }
1724
+
1725
+ #failure-svg{
1726
+ width: 400px;
1727
+ height: 400px;
1728
+ margin: 0 auto;
1729
+ transform: scale(0.8);
1730
+ transition: transform 0.3s ease-in-out;
1731
+ }
1732
+
1733
+ #failure-svg:hover {
1734
+ transform: scale(1);
1735
+ opacity: 1;
1736
+ }
1737
+
1738
+ @media (max-width: 785px) {
1739
+ .homelink {
1740
+ font-size: 1em;
1741
+ }
1742
+ }
1743
+
1744
+
1745
+
1746
+ /* ================= Error Page ======================= */
1747
+ #notfound {
1748
+ display:none;
1749
+ text-align: center;
1750
+ background-color: rgba(255, 0, 0, 0.7);
1751
+ display:flex-center;
1752
+ width:100%;
1753
+ height:auto;
1754
+ margin:auto;
1755
+ max-height:500px;
1756
+ max-width:500px;
1757
+ margin:10px auto;
1758
+ border-radius:50%;
1759
+ text-align:center;
1760
+ }
1761
+
1762
+ #server {
1763
+ display:none;
1764
+ margin: 10px auto;
1765
+ padding:20px;
1766
+ max-height:400px;
1767
+ max-width:700px;
1768
+ text-align:center;
1769
+ }
1770
+
1771
+ #server p {
1772
+ font-size: 45px;
1773
+ text-align:center;
1774
+ }
1775
+
1776
+ @media (max-width: 785px) {
1777
+ #server p {
1778
+ font-size: 24px;
1779
+ text-align:center;
1780
+ }
1781
+ }
1782
+
1783
+ .checkdetail {
1784
+ border: none;
1785
+ outline: none;
1786
+ background: var(--white-color);
1787
+ color: var(--dark-color);
1788
+ font-size: 1.1em;
1789
+ font-weight: 500;
1790
+ padding: 8px 25px;
1791
+ display: flex;
1792
+ align-items: center;
1793
+ margin-top: 40px;
1794
+ border-radius: 10px;
1795
+ cursor: pointer;
1796
+ transform: scale(0.8);
1797
+ transition: transform 0.3s ease-in-out;
1798
+ }
1799
+
1800
+ .checkdetail:hover {
1801
+ transform: scale(1);
1802
+ opacity: 1;
1803
+ }
1804
+
1805
+
1806
+ /* ================ Home Page ====================== */
1807
+ .body {
1808
+ width:100%;
1809
+ height:90vh;
1810
+ background-image: url('/static/back-index.svg');
1811
+ background-size: cover;
1812
+ background-repeat: no-repeat;
1813
+ background-position: center center;
1814
+ }
1815
+
1816
+ .radio-container {
1817
+ display: flex;
1818
+ flex-direction: column;
1819
+ align-items: left;
1820
+ justify-content: left;
1821
+ padding-left:30%;
1822
+ padding-right:30%;
1823
+ gap: 10px;
1824
+ }
1825
+
1826
+ .radio-label {
1827
+ border:solid;
1828
+ border-color:#ff9900;
1829
+ padding:10px;
1830
+ display: flex;
1831
+ align-items: center;
1832
+ gap: 5px;
1833
+ border-radius:10px;
1834
+ cursor: pointer;
1835
+ box-shadow: 0 5px 25px rgb(0 0 0 / 20%);
1836
+ }
1837
+
1838
+ .radio-input {
1839
+ appearance: none;
1840
+ -webkit-appearance: none;
1841
+ -moz-appearance: none;
1842
+ height: 20px;
1843
+ width: 20px;
1844
+ border-radius: 50%;
1845
+ border: 2px solid #f1c40f;
1846
+ outline: none;
1847
+ cursor: pointer;
1848
+ }
1849
+
1850
+ @media (max-width: 785px) {
1851
+ .radio-container {
1852
+ padding-left:5%;
1853
+ padding-right:5%;
1854
+ }
1855
+ }
1856
+
1857
+ .radio-input:checked {
1858
+ background-color: #f1c40f;
1859
+ }
1860
+
1861
+ .radio-input:focus {
1862
+ box-shadow: 0 0 0 2px #f1c40f;
1863
+ }
1864
+
1865
+ .radio-label:hover .radio-input {
1866
+ border-color: #f39c12;
1867
+ }
1868
+
1869
+ .radio-label:hover .radio-input:checked {
1870
+ background-color: #f39c12;
1871
+ }
1872
+
1873
+ .radio-label:hover .radio-input:focus {
1874
+ box-shadow: 0 0 0 2px #f39c12;
1875
+ }
1876
+
1877
+ .radio-label:hover .radio-text {
1878
+ color: #f39c12;
1879
+ }
1880
+
1881
+ .radio-text {
1882
+ font-size: 16px;
1883
+ font-weight: bold;
1884
+ color: #f1c40f;
1885
+ }
1886
+
1887
+
1888
+ #select-wrapper select {
1889
+ padding:15px;
1890
+ margin:20px auto;
1891
+ font-size:1em;
1892
+ font-weight: 700;
1893
+ text-indent: 5px;
1894
+ width:90%;
1895
+ max-width:450px;
1896
+ background-color: #ffebb5;
1897
+ border: solid 2px #217093;
1898
+ border-radius: 4px;
1899
+ width: 90%;
1900
+ color: #353538;
1901
+ transition: box-shadow 0.2s linear, border-color 0.25s ease-out;
1902
+ }
1903
+
1904
+ #select-wrapper option {
1905
+ background: white;
1906
+ text-indent: 5px;
1907
+ spacing:20px;
1908
+ font-size:1em;
1909
+ font-weight: 700;
1910
+ }
1911
+
1912
+ .takecheck {
1913
+ border: none;
1914
+ outline: none;
1915
+ background: var(--white-color);
1916
+ color: var(--dark-color);
1917
+ font-size: 1.1em;
1918
+ font-weight: 500;
1919
+ display: flex;
1920
+ justify-content:center;
1921
+ align-items: center;
1922
+ margin: 10px auto;
1923
+ padding: 20px;
1924
+ border-radius: 10px;
1925
+ cursor: pointer;
1926
+ transform: scale(1);
1927
+ transition: transform 0.3s ease-in-out;
1928
+ }
1929
+
1930
+ .takecheck:hover {
1931
+ transform: scale(1.1);
1932
+ opacity: 1;
1933
+ }
1934
+
1935
+ .arrow {
1936
+ display: inline-block;
1937
+ transform: scale(1.5);
1938
+ transition: transform 0.3s ease-out;
1939
+ }
1940
+
1941
+ .arrow:hover {
1942
+ transform: scale(2);
1943
+ }
1944
+
1945
+ .check-mark {
1946
+ color: green;
1947
+ }
1948
+
1949
+ #selector {
1950
+ padding:30px;
1951
+ margin:20px auto;
1952
+ }
1953
+
1954
+ #startContent {
1955
+ padding:30px;
1956
+ margin:20px auto;
1957
+ font-size:1em;
1958
+ }
1959
+
1960
+ #startContent p {
1961
+ padding:30px;
1962
+ text-align:justify;
1963
+ text-indent:10%;
1964
+ }
1965
+
1966
+ #select-wrapper {
1967
+ display: flex;
1968
+ flex-direction: row;
1969
+ justify-content: center;
1970
+ align-items: center;
1971
+ align-content: center;
1972
+ margin: 20px;
1973
+ }
1974
+
1975
+ @media (max-width: 800px) {
1976
+ #select-wrapper {
1977
+ flex-direction: column;
1978
+ justify-content: space-between;
1979
+ }
1980
+ #startContent {
1981
+ padding:20px;
1982
+ margin:20px auto;
1983
+ font-size:0.8em;
1984
+ }
1985
+ #startContent p {
1986
+ padding:20px;
1987
+ }
1988
+ }
1989
+ /* =====================Feedback Form ================*/
1990
+ .feedback {
1991
+ border: 2px;
1992
+ border-radius: 15px;
1993
+ margin:20px;
1994
+ padding: 20px;
1995
+ text-align: justify;
1996
+ background: rgba(255, 255, 255, 0.1);
1997
+ backdrop-filter: blur(10px);
1998
+ text-shadow: var(--text-shadow);
1999
+ border-bottom: 1px solid rgba(255, 255, 255, 0.1);
2000
+ border-right: 1px solid rgba(255, 255, 255, 0.1);
2001
+ box-shadow: var(--box-shadow);
2002
+ }
2003
+ .feedback h2 {
2004
+ font-size: 36px;
2005
+ color: #222;
2006
+ text-align: center;
2007
+ margin: 50px 0;
2008
+ }
2009
+ .feedback form {
2010
+ max-width: 600px;
2011
+ margin: 0 auto;
2012
+ padding: 20px;
2013
+ background-color: #fff;
2014
+ border-radius: 10px;
2015
+ box-shadow: 0px 2px 10px rgba(0,0,0,0.1);
2016
+ }
2017
+ .feedback input[type=text], input[type=email], textarea {
2018
+ width: 100%;
2019
+ padding: 12px;
2020
+ border: 1px solid #ccc;
2021
+ border-radius: 4px;
2022
+ resize: vertical;
2023
+ }
2024
+ .feedback label {
2025
+ display: block;
2026
+ margin-bottom: 10px;
2027
+ font-size: 18px;
2028
+ color: #555;
2029
+ }
2030
+ .feedback button[type=submit] {
2031
+ background-color: #ffcc00;
2032
+ color: #fff;
2033
+ border: none;
2034
+ margin:10px auto;
2035
+ border-radius: 4px;
2036
+ padding: 12px 20px;
2037
+ cursor: pointer;
2038
+ font-size: 18px;
2039
+ margin-top: 20px;
2040
+ transition: background-color 0.2s;
2041
+ }
2042
+ .feedback button[type=submit]:hover {
2043
+ background-color: #f5b800;
2044
+ }
2045
+
2046
+ /* ====================== Form Page ==================== */
2047
+ .container {
2048
+ display: flex;
2049
+ justify-content: space-around;
2050
+ flex-direction: row;
2051
+ padding:20px;
2052
+ margin:20px;
2053
+ }
2054
+
2055
+ .forminfo-form {
2056
+ text-align: justify;
2057
+ padding: 10px;
2058
+ margin: 10px auto;
2059
+ width:40%;
2060
+ height: 85vh;
2061
+ font-size: 14px;
2062
+ border-radius: 10px;
2063
+ background: #ffeab0;
2064
+ position: -webkit-sticky;
2065
+ position: sticky;
2066
+ top: 80px;
2067
+ box-shadow: 0 5px 25px rgb(0 0 0 / 20%);
2068
+ }
2069
+
2070
+ .forminfo-form input {
2071
+ margin:20px auto;
2072
+ }
2073
+ .forminfo-form label {
2074
+ padding:10px;
2075
+ margin:10px;
2076
+ width: auto;
2077
+ }
2078
+ .forminfo-form textarea {
2079
+ padding:10px;
2080
+ width: 70%;
2081
+ margin:0px auto;
2082
+ margin-top:30px;
2083
+ }
2084
+
2085
+ .formquestions {
2086
+ width:100%;
2087
+ }
2088
+
2089
+ .assess-group {
2090
+ text-align: justify;
2091
+ margin: 10px;
2092
+ border-radius: 30px;
2093
+ padding:10px;
2094
+ width:100%;
2095
+ }
2096
+
2097
+ .assess-group label {
2098
+ font-size:0.9rem;
2099
+ padding:20px;
2100
+ width: auto; /* adjust as needed */
2101
+ }
2102
+
2103
+ .assess-group textarea {
2104
+ background: #fff2cf;
2105
+ padding:5px;
2106
+ width: 80%;
2107
+ height:70px;
2108
+ margin:5px auto;
2109
+ border-radius:6px;
2110
+ }
2111
+
2112
+ .seperate {
2113
+ margin:20px auto;
2114
+ border-radius: 10px;
2115
+ border:solid;
2116
+ border-color:#ffbb00;
2117
+ padding:10px;
2118
+ display:flex;
2119
+ flex-direction:column;
2120
+ align-items: stretch;
2121
+ text-indent:20px;
2122
+ position: relative;
2123
+ width:90%;
2124
+ box-shadow: 0 5px 25px rgb(0 0 0 / 20%);
2125
+ }
2126
+
2127
+ .ribbon {
2128
+ width: 150px;
2129
+ height: 150px;
2130
+ position: absolute;
2131
+ top: 0px;
2132
+ left: 10px;
2133
+ overflow: hidden;
2134
+ font-weight:800;
2135
+ }
2136
+
2137
+ .ribbon span {
2138
+ position: absolute;
2139
+ width: 50px;
2140
+ height: 50px;
2141
+ background: rgb(255,153,0);
2142
+ background: linear-gradient(90deg, rgba(255,153,0,1) 0%, rgba(255,235,0,1) 100%, rgba(0,212,255,1) 100%);
2143
+ top: 10px;
2144
+ left: 0px;
2145
+ text-align: center;
2146
+ line-height: 50px; /* should be same as heigh */
2147
+ text-indent:-5%;
2148
+ color: #000;
2149
+ border-radius:50%;
2150
+ }
2151
+
2152
+
2153
+ .submitassess {
2154
+ border: none;
2155
+ outline: none;
2156
+ background: green;
2157
+ color: var(--dark-color);
2158
+ font-size: 1.1em;
2159
+ font-weight: 500;
2160
+ display: flex;
2161
+ align-items: center;
2162
+ margin: 20px auto;
2163
+ padding: 20px;
2164
+ border-radius: 10px;
2165
+ cursor: pointer;
2166
+ transform: scale(0.9);
2167
+ transition: transform 0.3s ease-in-out;
2168
+ }
2169
+
2170
+ .submitassess:hover {
2171
+ transform: scale(1);
2172
+ opacity: 0.8;
2173
+ }
2174
+
2175
+ @media (max-width: 785px) {
2176
+ .container {
2177
+ flex-direction:column;
2178
+ padding:5px;
2179
+ margin:5px;
2180
+ }
2181
+
2182
+ .assess-group {
2183
+ margin:5px;
2184
+ padding:5px;
2185
+ flex-wrap: wrap;
2186
+ }
2187
+
2188
+ .seperate {
2189
+ margin:15px auto;
2190
+ border-radius: 10px;
2191
+ padding:10px;
2192
+ text-indent:10px;
2193
+ width:100%;
2194
+ }
2195
+
2196
+ .seperate label {
2197
+ width: 100%;
2198
+ margin-bottom: 5px;
2199
+ font-size:0.9em;
2200
+ }
2201
+
2202
+ .seperate textarea {
2203
+ width: 100%;
2204
+ }
2205
+
2206
+ .forminfo-form {
2207
+ padding: 10px;
2208
+ margin: 10px auto;
2209
+ margin-bottom:100px;
2210
+ width:100%;
2211
+ height: 100%;
2212
+ font-size: 13px;
2213
+ border-radius: 10px;
2214
+ position:relative;
2215
+ top: 80px;
2216
+ }
2217
+ }
2218
+
2219
+
2220
+ /* ================== Login ================ */
2221
+ .log-container {
2222
+ background-image: url('/static/login-back.svg');
2223
+ background-size: cover;
2224
+ background-repeat: no-repeat;
2225
+ background-position: center center;
2226
+ width:100%;
2227
+ }
2228
+ /*
2229
+ .log-container::before {
2230
+ content: "";
2231
+ position: absolute;
2232
+ top: 0;
2233
+ left: 0;
2234
+ right: 0;
2235
+ bottom: 0;
2236
+ background: inherit;
2237
+ filter: blur(5px);
2238
+ z-index: -1;
2239
+ }*/
2240
+
2241
+ .log-form {
2242
+ position: relative;
2243
+ z-index: 1;
2244
+ backdrop-filter: blur(40px);
2245
+ width: 100%;
2246
+ max-width: 500px;
2247
+ margin: 0;
2248
+ padding: 5px;
2249
+ margin:10px auto;
2250
+ box-sizing: border-box;
2251
+ border: solid 1px #DDD;
2252
+ border-radius: 0.5em;
2253
+ font-family: "Source Sans Pro", sans-serif;
2254
+ text-shadow: var(--text-shadow);
2255
+ box-shadow: var(--box-shadow);
2256
+ }
2257
+
2258
+ @media (max-width: 785px) {
2259
+ .log-form {
2260
+ max-width:350px;
2261
+ }
2262
+ .log-container {
2263
+ background-size: contain;
2264
+ }
2265
+ }
2266
+
2267
+ .log-form .svgContainer {
2268
+ position: relative;
2269
+ width: 150px;
2270
+ height: 150px;
2271
+ margin: 0 auto 1em;
2272
+ border-radius: 50%;
2273
+ background: none;
2274
+ border: solid 2.5px #3A5E77;
2275
+ overflow: hidden;
2276
+ pointer-events: none;
2277
+ }
2278
+
2279
+ .log-form .svgContainer div {
2280
+ position: relative;
2281
+ width: 100%;
2282
+ height: 0;
2283
+ overflow: hidden;
2284
+ padding-bottom: 100%;
2285
+ }
2286
+
2287
+ .log-form .svgContainer .mySVG {
2288
+ position: absolute;
2289
+ left: 0;
2290
+ top: 0;
2291
+ width: 100%;
2292
+ height: 100%;
2293
+ pointer-events: none;
2294
+ }
2295
+
2296
+ .log-form .svgContainer-pass {
2297
+ position: relative;
2298
+ width: 150px;
2299
+ height: 150px;
2300
+ margin: 0 auto 1em;
2301
+ border-radius: 50%;
2302
+ background: none;
2303
+ border: solid 2.5px #3A5E77;
2304
+ overflow: hidden;
2305
+ pointer-events: none;
2306
+ }
2307
+
2308
+ .log-form .svgContainer-pass div {
2309
+ position: relative;
2310
+ width: 100%;
2311
+ height: 0;
2312
+ overflow: hidden;
2313
+ padding-bottom: 100%;
2314
+ }
2315
+
2316
+ .log-form .svgContainer-pass .mySVG {
2317
+ position: absolute;
2318
+ left: 0;
2319
+ top: 0;
2320
+ width: 100%;
2321
+ height: 100%;
2322
+ pointer-events: none;
2323
+ }
2324
+
2325
+ .log-form .inputGroup {
2326
+ margin: 0 auto;
2327
+ padding: 0;
2328
+ position: relative;
2329
+ }
2330
+
2331
+ .log-form .inputGroup:last-of-type {
2332
+ margin-bottom: 0;
2333
+ }
2334
+
2335
+ .log-form label {
2336
+ margin: 0 0 0px;
2337
+ font-size: 1em;
2338
+ color: black;
2339
+ font-weight: 500;
2340
+ font-family: inherit;
2341
+ }
2342
+
2343
+ .log-form input[type=email], form input[type=text], form input[type=password] {
2344
+ display: block;
2345
+ margin: 0 auto;
2346
+ padding: 5px;
2347
+ background-color: #ffebb5;
2348
+ border: solid 2px #217093;
2349
+ border-radius: 4px;
2350
+ -webkit-appearance: none;
2351
+ box-sizing: border-box;
2352
+ width: 90%;
2353
+ height: 30px;
2354
+ font-size: 0.8em;
2355
+ color: #353538;
2356
+ font-weight: 500;
2357
+ font-family: inherit;
2358
+ transition: box-shadow 0.2s linear, border-color 0.25s ease-out;
2359
+ }
2360
+
2361
+ .log-form input[type=email]:focus, form input[type=text]:focus, form input[type=password]:focus {
2362
+ outline: none;
2363
+ box-shadow: 0px 2px 10px rgba(0, 0, 0, 0.1);
2364
+ border: solid 2px #4eb8dd;
2365
+ }
2366
+
2367
+ .log-form button {
2368
+ cursor:pointer;
2369
+ margin: 20px auto;
2370
+ background-color: #ffc629;
2371
+ border: none;
2372
+ border-radius: 4px;
2373
+ width: 50%;
2374
+ height: 40px;
2375
+ font-size: 1.55em;
2376
+ color: #FFF;
2377
+ font-weight: 600;
2378
+ font-family: inherit;
2379
+ transition: background-color 0.2s ease-out;
2380
+ transform: scale(1);
2381
+ transition: transform 0.3s ease-in-out;
2382
+ }
2383
+
2384
+ .log-form button:hover {
2385
+ transform: scale(1.1);
2386
+ opacity:0.9;
2387
+ }
2388
+
2389
+ .log-form select {
2390
+ margin: 0 auto;
2391
+ padding: 10px;
2392
+ background-color: #ffebb5;
2393
+ border: solid 2px #217093;
2394
+ border-radius: 4px;
2395
+ box-sizing: border-box;
2396
+ width: 90%;
2397
+ height: 40px;
2398
+ font-size: 0.9em;
2399
+ color: #353538;
2400
+ font-weight: 500;
2401
+ font-family: inherit;
2402
+ transition: box-shadow 0.2s linear, border-color 0.25s ease-out;
2403
+ }
2404
+
2405
+
2406
+
2407
+ /* ================== Register ================ */
2408
+ .reg-container {
2409
+ background-image: url('/static/login-back.svg');
2410
+ background-size: cover;
2411
+ background-repeat: no-repeat;
2412
+ background-position: center center;
2413
+ width:100%;
2414
+ }
2415
+ /*
2416
+ .log-container::before {
2417
+ content: "";
2418
+ position: absolute;
2419
+ top: 0;
2420
+ left: 0;
2421
+ right: 0;
2422
+ bottom: 0;
2423
+ background: inherit;
2424
+ filter: blur(5px);
2425
+ z-index: -1;
2426
+ }*/
2427
+
2428
+ .reg-form {
2429
+ position: relative;
2430
+ z-index: 1;
2431
+ backdrop-filter: blur(40px);
2432
+ width: 100%;
2433
+ max-width: 500px;
2434
+ margin: 0;
2435
+ padding: 2.25em;
2436
+ margin:20px auto;
2437
+ box-sizing: border-box;
2438
+ border: solid 1px #DDD;
2439
+ border-radius: 0.5em;
2440
+ font-family: "Source Sans Pro", sans-serif;
2441
+ }
2442
+
2443
+ @media (max-width: 785px) {
2444
+ .reg-form {
2445
+ max-width:350px;
2446
+ }
2447
+ .reg-container {
2448
+ background-size: contain;
2449
+ }
2450
+ }
2451
+
2452
+ .reg-form .svgContainer {
2453
+ position: relative;
2454
+ width: 150px;
2455
+ height: 150px;
2456
+ margin: 0 auto 1em;
2457
+ border-radius: 50%;
2458
+ background: none;
2459
+ border: solid 2.5px #3A5E77;
2460
+ overflow: hidden;
2461
+ pointer-events: none;
2462
+ }
2463
+
2464
+ .reg-form .svgContainer div {
2465
+ position: relative;
2466
+ width: 100%;
2467
+ height: 0;
2468
+ overflow: hidden;
2469
+ padding-bottom: 100%;
2470
+ }
2471
+
2472
+ .reg-form .svgContainer .mySVG {
2473
+ position: absolute;
2474
+ left: 0;
2475
+ top: 0;
2476
+ width: 100%;
2477
+ height: 100%;
2478
+ pointer-events: none;
2479
+ }
2480
+
2481
+ .reg-form .inputGroup {
2482
+ margin: 0 0 2em;
2483
+ padding: 0;
2484
+ position: relative;
2485
+ }
2486
+
2487
+ .reg-form .inputGroup:last-of-type {
2488
+ margin-bottom: 0;
2489
+ }
2490
+
2491
+ .reg-form label {
2492
+ margin: 0 0 0px;
2493
+ font-size: 1em;
2494
+ color: black;
2495
+ font-weight: 500;
2496
+ font-family: inherit;
2497
+ }
2498
+
2499
+ .reg-form input[type=email], form input[type=text], form input[type=password] {
2500
+ display: block;
2501
+ margin: 0 auto;
2502
+ padding: 5px;
2503
+ background-color: #ffebb5;
2504
+ border: solid 2px #217093;
2505
+ border-radius: 4px;
2506
+ -webkit-appearance: none;
2507
+ box-sizing: border-box;
2508
+ width: 90%;
2509
+ height: 30px;
2510
+ font-size: 1.1em;
2511
+ color: #353538;
2512
+ font-weight: 500;
2513
+ font-family: inherit;
2514
+ transition: box-shadow 0.2s linear, border-color 0.25s ease-out;
2515
+ }
2516
+
2517
+ .reg-form input[type=email]:focus, form input[type=text]:focus, form input[type=password]:focus {
2518
+ outline: none;
2519
+ box-shadow: 0px 2px 10px rgba(0, 0, 0, 0.1);
2520
+ border: solid 2px #4eb8dd;
2521
+ }
2522
+
2523
+ .reg-form input[type=email], form input[type=text] {
2524
+ /* padding: 14px 1em 0px;*/
2525
+ }
2526
+
2527
+ .reg-form button {
2528
+ cursor:pointer;
2529
+ margin: 0 auto;
2530
+ padding: px;
2531
+ background-color: #ffc629;
2532
+ border: none;
2533
+ border-radius: 4px;
2534
+ width: 50%;
2535
+ height: 40px;
2536
+ font-size: 1.55em;
2537
+ color: #FFF;
2538
+ font-weight: 600;
2539
+ font-family: inherit;
2540
+ transition: background-color 0.2s ease-out;
2541
+ transform: scale(1);
2542
+ transition: transform 0.3s ease-in-out;
2543
+ }
2544
+
2545
+ .reg-form button:hover {
2546
+ transform: scale(1.1);
2547
+ opacity:0.9;
2548
+ }
2549
+
2550
+ .reg-form select {
2551
+ margin: 0 auto;
2552
+ padding: 10px;
2553
+ background-color: #ffebb5;
2554
+ border: solid 2px #217093;
2555
+ border-radius: 4px;
2556
+ box-sizing: border-box;
2557
+ width: 90%;
2558
+ height: 40px;
2559
+ font-size: 0.9em;
2560
+ color: #353538;
2561
+ font-weight: 500;
2562
+ font-family: inherit;
2563
+ transition: box-shadow 0.2s linear, border-color 0.25s ease-out;
2564
+ }
2565
+
2566
+ /* ================== Result Page =================== */
2567
+ .domains {
2568
+ padding:20px;
2569
+ margin:10px;
2570
+ display:flex;
2571
+ flex-direction: row;
2572
+ flex-wrap: wrap;
2573
+ }
2574
+
2575
+ .each-domain {
2576
+ width:45%;
2577
+ padding:20px;
2578
+ margin:20px auto;
2579
+ background: #FFA733;
2580
+ background: linear-gradient(to top right, #FFA733 0%, #ffc370 100%);
2581
+ border:none;
2582
+ border-radius:15px;
2583
+ box-shadow: 0 5px 25px rgb(0 0 0 / 20%);
2584
+ }
2585
+
2586
+ .each-domain .name{
2587
+ font-size:1.5em;
2588
+ font-weight:bold;
2589
+ text-align:center;
2590
+ margin:10px;
2591
+ }
2592
+
2593
+ .each-domain .description{
2594
+ text-align:justify;
2595
+ font-size:1em;
2596
+ }
2597
+
2598
+ .each-domain .average-score{
2599
+ background: white;
2600
+ margin:10px auto;
2601
+ width:90%;
2602
+ border-radius: 15px;x
2603
+ line-height:200%;
2604
+ font-size:2em;
2605
+ font-weight:900;
2606
+ text-shadow: 0 5px 25px rgba(0, 0, 0, 0.4);
2607
+ }
2608
+
2609
+ .each-domain .suggestions-text{
2610
+ font-size:1em;
2611
+ line-height: 200%;
2612
+ }
2613
+
2614
+ @media (max-width: 785px) {
2615
+ .domains {
2616
+ font-size:1em;
2617
+ padding:10px;
2618
+ margin:5px;
2619
+ flex-direction: column;
2620
+ flex-wrap: wrap;
2621
+ }
2622
+ .each-domain {
2623
+ width:90%;
2624
+ padding:10px;
2625
+ margin:10px auto;
2626
+ }
2627
+ .each-domain .name{
2628
+ font-size:0.9em;
2629
+ }
2630
+ .each-domain .average-score{
2631
+ font-size:1.5em;
2632
+ }
2633
+ .each-domain .description{
2634
+ font-size:0.8em;
2635
+ }
2636
+ .each-domain .suggestions-text{
2637
+ font-size: 0.8em;
2638
+ }
2639
+ }
2640
+
2641
+ .flexContainer {
2642
+ display:flex;
2643
+ flex-direction:row;
2644
+ align-items:stretch;
2645
+ }
2646
+
2647
+ .flex1 {
2648
+ width:30%;
2649
+ margin:20px auto;
2650
+ }
2651
+
2652
+ .flex2 {
2653
+ width:70%;
2654
+ margin:20px auto;
2655
+ }
2656
+
2657
+ .forminfo-result {
2658
+ display: flex;
2659
+ flex-direction: column;
2660
+ justify-content: start;
2661
+ align-items: stretch;
2662
+ align-content: stretch;
2663
+ text-align: justify;
2664
+ padding: 10px;
2665
+ margin: 10px auto;
2666
+ width:80%;
2667
+ height: 85vh;
2668
+ font-size: 0.9em;;
2669
+ border-radius: 20px;
2670
+ background: #ffeab0;
2671
+ box-shadow: 0 5px 25px rgb(0 0 0 / 20%);
2672
+ position: -webkit-sticky;
2673
+ position: sticky;
2674
+ top: 80px;
2675
+ }
2676
+
2677
+ .chart {
2678
+ padding:10px;
2679
+ margin:20px auto;
2680
+ width:95%;
2681
+ border-radius:20px;
2682
+ box-shadow: 0 5px 25px rgb(0 0 0 / 20%);
2683
+ }
2684
+
2685
+ .text-content1 {
2686
+ padding:20px;
2687
+ margin:20px auto;
2688
+ text-indent:10%;
2689
+ }
2690
+
2691
+ .text-content-congo {
2692
+ text-align: center;
2693
+ padding:5px;
2694
+ width:80%;
2695
+ margin:10px auto;
2696
+ line-height:300%;
2697
+ border-radius: 30px;
2698
+ border:solid green;
2699
+ background: rgba(0, 255, 21, 0.3);
2700
+ box-shadow: 0 5px 25px rgb(0 0 0 / 20%);
2701
+ }
2702
+
2703
+ .text-content-end {
2704
+ border: 2px;
2705
+ border-radius: 15px;
2706
+ margin:20px;
2707
+ padding: 20px;
2708
+ text-align: center;
2709
+ background: rgba(255, 255, 255, 0.1);
2710
+ backdrop-filter: blur(10px);
2711
+ text-shadow: var(--text-shadow);
2712
+ border-bottom: 1px solid rgba(255, 255, 255, 0.1);
2713
+ border-right: 1px solid rgba(255, 255, 255, 0.1);
2714
+ box-shadow: var(--box-shadow);
2715
+ }
2716
+
2717
+ .happy-score{
2718
+ border:solid green;
2719
+ background: rgba(0, 255, 21, 0.3);
2720
+ margin:10px auto;
2721
+ width:60%;
2722
+ line-height:200%;
2723
+ border-radius: 15px;
2724
+ text-align:center;
2725
+ font-size:2.5em;
2726
+ font-weight:900;
2727
+ text-shadow: 0 5px 25px rgba(0, 0, 0, 0.4);
2728
+ }
2729
+
2730
+ .caption {
2731
+ position: relative;
2732
+ width: 100%;
2733
+ text-align: center;
2734
+ padding: 10px;
2735
+ margin: 0;
2736
+ }
2737
+
2738
+ @media (max-width: 785px) {
2739
+ .flexContainer {
2740
+ flex-direction: column;
2741
+ }
2742
+
2743
+ .flex1 {
2744
+ width:90%;
2745
+ margin:10px auto;
2746
+ }
2747
+
2748
+ .flex2 {
2749
+ width:100%;
2750
+ margin:10px auto;
2751
+ }
2752
+
2753
+ .forminfo-result {
2754
+ padding: 10px;
2755
+ margin: 10px auto;
2756
+ margin-bottom:100px;
2757
+ width:100%;
2758
+ height: 100%;
2759
+ font-size: 13px;
2760
+ border-radius: 10px;
2761
+ position:relative;
2762
+ top: 80px;
2763
+ }
2764
+ }
2765
+
2766
+ /* =============== Forgot Password ==============*/
2767
+ .forgot1 {
2768
+ width:50%;
2769
+ margin:20px auto;
2770
+ padding:20px;
2771
+ align-content:center;
2772
+ border:solid;
2773
+ border-color:#ffbb00;
2774
+ }
2775
+
2776
+ .verify {
2777
+ padding:10px;
2778
+ margin:10px auto;
2779
+ align-content:center;
2780
+ text-align:center;
2781
+ font-weight:bold;
2782
+ background:lightblue;
2783
+ border:none;
2784
+ border-radius:10px;
2785
+ transform: scale(1);
2786
+ transition: transform 0.3s ease-in-out;
2787
+ }
2788
+
2789
+ .verify:hover {
2790
+ transform: scale(1.1);
2791
+ }
2792
+
2793
+
2794
+ #success-svg-pass{
2795
+ width: 500px;
2796
+ height: 400px;
2797
+ margin: 0 auto;
2798
+ transform: scale(0.8);
2799
+ transition: transform 0.3s ease-in-out;
2800
+ }
2801
+
2802
+ #success-svg-pass:hover {
2803
+ transform: scale(1);
2804
+ opacity: 1;
2805
+ }
2806
+
2807
+ #failure-svg-pass{
2808
+ width: 400px;
2809
+ height: 400px;
2810
+ margin: 0 auto;
2811
+ transform: scale(0.8);
2812
+ transition: transform 0.3s ease-in-out;
2813
+ }
2814
+
2815
+ #failure-svg-pass:hover {
2816
+ transform: scale(1);
2817
+ opacity: 1;
2818
+ }
2819
+
2820
+ .verify-pass {
2821
+ width:40%;
2822
+ padding:20px;
2823
+ margin:20px auto;
2824
+ align-content:center;
2825
+ border:solid;
2826
+ border-color:#ffbb00;
2827
+ }
static/css/swiper-bundle.min.css ADDED
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * Swiper 7.4.1
3
+ * Most modern mobile touch slider and framework with hardware accelerated transitions
4
+ * https://swiperjs.com
5
+ *
6
+ * Copyright 2014-2021 Vladimir Kharlampidi
7
+ *
8
+ * Released under the MIT License
9
+ *
10
+ * Released on: December 24, 2021
11
+ */
12
+
13
+ @font-face{font-family:swiper-icons;src:url('data:application/font-woff;charset=utf-8;base64, d09GRgABAAAAAAZgABAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABGRlRNAAAGRAAAABoAAAAci6qHkUdERUYAAAWgAAAAIwAAACQAYABXR1BPUwAABhQAAAAuAAAANuAY7+xHU1VCAAAFxAAAAFAAAABm2fPczU9TLzIAAAHcAAAASgAAAGBP9V5RY21hcAAAAkQAAACIAAABYt6F0cBjdnQgAAACzAAAAAQAAAAEABEBRGdhc3AAAAWYAAAACAAAAAj//wADZ2x5ZgAAAywAAADMAAAD2MHtryVoZWFkAAABbAAAADAAAAA2E2+eoWhoZWEAAAGcAAAAHwAAACQC9gDzaG10eAAAAigAAAAZAAAArgJkABFsb2NhAAAC0AAAAFoAAABaFQAUGG1heHAAAAG8AAAAHwAAACAAcABAbmFtZQAAA/gAAAE5AAACXvFdBwlwb3N0AAAFNAAAAGIAAACE5s74hXjaY2BkYGAAYpf5Hu/j+W2+MnAzMYDAzaX6QjD6/4//Bxj5GA8AuRwMYGkAPywL13jaY2BkYGA88P8Agx4j+/8fQDYfA1AEBWgDAIB2BOoAeNpjYGRgYNBh4GdgYgABEMnIABJzYNADCQAACWgAsQB42mNgYfzCOIGBlYGB0YcxjYGBwR1Kf2WQZGhhYGBiYGVmgAFGBiQQkOaawtDAoMBQxXjg/wEGPcYDDA4wNUA2CCgwsAAAO4EL6gAAeNpj2M0gyAACqxgGNWBkZ2D4/wMA+xkDdgAAAHjaY2BgYGaAYBkGRgYQiAHyGMF8FgYHIM3DwMHABGQrMOgyWDLEM1T9/w8UBfEMgLzE////P/5//f/V/xv+r4eaAAeMbAxwIUYmIMHEgKYAYjUcsDAwsLKxc3BycfPw8jEQA/gZBASFhEVExcQlJKWkZWTl5BUUlZRVVNXUNTQZBgMAAMR+E+gAEQFEAAAAKgAqACoANAA+AEgAUgBcAGYAcAB6AIQAjgCYAKIArAC2AMAAygDUAN4A6ADyAPwBBgEQARoBJAEuATgBQgFMAVYBYAFqAXQBfgGIAZIBnAGmAbIBzgHsAAB42u2NMQ6CUAyGW568x9AneYYgm4MJbhKFaExIOAVX8ApewSt4Bic4AfeAid3VOBixDxfPYEza5O+Xfi04YADggiUIULCuEJK8VhO4bSvpdnktHI5QCYtdi2sl8ZnXaHlqUrNKzdKcT8cjlq+rwZSvIVczNiezsfnP/uznmfPFBNODM2K7MTQ45YEAZqGP81AmGGcF3iPqOop0r1SPTaTbVkfUe4HXj97wYE+yNwWYxwWu4v1ugWHgo3S1XdZEVqWM7ET0cfnLGxWfkgR42o2PvWrDMBSFj/IHLaF0zKjRgdiVMwScNRAoWUoH78Y2icB/yIY09An6AH2Bdu/UB+yxopYshQiEvnvu0dURgDt8QeC8PDw7Fpji3fEA4z/PEJ6YOB5hKh4dj3EvXhxPqH/SKUY3rJ7srZ4FZnh1PMAtPhwP6fl2PMJMPDgeQ4rY8YT6Gzao0eAEA409DuggmTnFnOcSCiEiLMgxCiTI6Cq5DZUd3Qmp10vO0LaLTd2cjN4fOumlc7lUYbSQcZFkutRG7g6JKZKy0RmdLY680CDnEJ+UMkpFFe1RN7nxdVpXrC4aTtnaurOnYercZg2YVmLN/d/gczfEimrE/fs/bOuq29Zmn8tloORaXgZgGa78yO9/cnXm2BpaGvq25Dv9S4E9+5SIc9PqupJKhYFSSl47+Qcr1mYNAAAAeNptw0cKwkAAAMDZJA8Q7OUJvkLsPfZ6zFVERPy8qHh2YER+3i/BP83vIBLLySsoKimrqKqpa2hp6+jq6RsYGhmbmJqZSy0sraxtbO3sHRydnEMU4uR6yx7JJXveP7WrDycAAAAAAAH//wACeNpjYGRgYOABYhkgZgJCZgZNBkYGLQZtIJsFLMYAAAw3ALgAeNolizEKgDAQBCchRbC2sFER0YD6qVQiBCv/H9ezGI6Z5XBAw8CBK/m5iQQVauVbXLnOrMZv2oLdKFa8Pjuru2hJzGabmOSLzNMzvutpB3N42mNgZGBg4GKQYzBhYMxJLMlj4GBgAYow/P/PAJJhLM6sSoWKfWCAAwDAjgbRAAB42mNgYGBkAIIbCZo5IPrmUn0hGA0AO8EFTQAA');font-weight:400;font-style:normal}:root{--swiper-theme-color:#007aff}.swiper{margin-left:auto;margin-right:auto;position:relative;overflow:hidden;list-style:none;padding:0;z-index:1}.swiper-vertical>.swiper-wrapper{flex-direction:column}.swiper-wrapper{position:relative;width:100%;height:100%;z-index:1;display:flex;transition-property:transform;box-sizing:content-box}.swiper-android .swiper-slide,.swiper-wrapper{transform:translate3d(0px,0,0)}.swiper-pointer-events{touch-action:pan-y}.swiper-pointer-events.swiper-vertical{touch-action:pan-x}.swiper-slide{flex-shrink:0;width:100%;height:100%;position:relative;transition-property:transform}.swiper-slide-invisible-blank{visibility:hidden}.swiper-autoheight,.swiper-autoheight .swiper-slide{height:auto}.swiper-autoheight .swiper-wrapper{align-items:flex-start;transition-property:transform,height}.swiper-3d,.swiper-3d.swiper-css-mode .swiper-wrapper{perspective:1200px}.swiper-3d .swiper-cube-shadow,.swiper-3d .swiper-slide,.swiper-3d .swiper-slide-shadow,.swiper-3d .swiper-slide-shadow-bottom,.swiper-3d .swiper-slide-shadow-left,.swiper-3d .swiper-slide-shadow-right,.swiper-3d .swiper-slide-shadow-top,.swiper-3d .swiper-wrapper{transform-style:preserve-3d}.swiper-3d .swiper-slide-shadow,.swiper-3d .swiper-slide-shadow-bottom,.swiper-3d .swiper-slide-shadow-left,.swiper-3d .swiper-slide-shadow-right,.swiper-3d .swiper-slide-shadow-top{position:absolute;left:0;top:0;width:100%;height:100%;pointer-events:none;z-index:10}.swiper-3d .swiper-slide-shadow{background:rgba(0,0,0,.15)}.swiper-3d .swiper-slide-shadow-left{background-image:linear-gradient(to left,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-3d .swiper-slide-shadow-right{background-image:linear-gradient(to right,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-3d .swiper-slide-shadow-top{background-image:linear-gradient(to top,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-3d .swiper-slide-shadow-bottom{background-image:linear-gradient(to bottom,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-css-mode>.swiper-wrapper{overflow:auto;scrollbar-width:none;-ms-overflow-style:none}.swiper-css-mode>.swiper-wrapper::-webkit-scrollbar{display:none}.swiper-css-mode>.swiper-wrapper>.swiper-slide{scroll-snap-align:start start}.swiper-horizontal.swiper-css-mode>.swiper-wrapper{scroll-snap-type:x mandatory}.swiper-vertical.swiper-css-mode>.swiper-wrapper{scroll-snap-type:y mandatory}.swiper-centered>.swiper-wrapper::before{content:'';flex-shrink:0;order:9999}.swiper-centered.swiper-horizontal>.swiper-wrapper>.swiper-slide:first-child{margin-inline-start:var(--swiper-centered-offset-before)}.swiper-centered.swiper-horizontal>.swiper-wrapper::before{height:100%;min-height:1px;width:var(--swiper-centered-offset-after)}.swiper-centered.swiper-vertical>.swiper-wrapper>.swiper-slide:first-child{margin-block-start:var(--swiper-centered-offset-before)}.swiper-centered.swiper-vertical>.swiper-wrapper::before{width:100%;min-width:1px;height:var(--swiper-centered-offset-after)}.swiper-centered>.swiper-wrapper>.swiper-slide{scroll-snap-align:center center}.swiper-virtual.swiper-css-mode .swiper-wrapper::after{content:'';position:absolute;left:0;top:0;pointer-events:none}.swiper-virtual.swiper-css-mode.swiper-horizontal .swiper-wrapper::after{height:1px;width:var(--swiper-virtual-size)}.swiper-virtual.swiper-css-mode.swiper-vertical .swiper-wrapper::after{width:1px;height:var(--swiper-virtual-size)}:root{--swiper-navigation-size:44px}.swiper-button-next,.swiper-button-prev{position:absolute;top:50%;width:calc(var(--swiper-navigation-size)/ 44 * 27);height:var(--swiper-navigation-size);margin-top:calc(0px - (var(--swiper-navigation-size)/ 2));z-index:10;cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--swiper-navigation-color,var(--swiper-theme-color))}.swiper-button-next.swiper-button-disabled,.swiper-button-prev.swiper-button-disabled{opacity:.35;cursor:auto;pointer-events:none}.swiper-button-next:after,.swiper-button-prev:after{font-family:swiper-icons;font-size:var(--swiper-navigation-size);text-transform:none!important;letter-spacing:0;text-transform:none;font-variant:initial;line-height:1}.swiper-button-prev,.swiper-rtl .swiper-button-next{left:10px;right:auto}.swiper-button-prev:after,.swiper-rtl .swiper-button-next:after{content:'prev'}.swiper-button-next,.swiper-rtl .swiper-button-prev{right:10px;left:auto}.swiper-button-next:after,.swiper-rtl .swiper-button-prev:after{content:'next'}.swiper-button-lock{display:none}.swiper-pagination{position:absolute;text-align:center;transition:.3s opacity;transform:translate3d(0,0,0);z-index:10}.swiper-pagination.swiper-pagination-hidden{opacity:0}.swiper-horizontal>.swiper-pagination-bullets,.swiper-pagination-bullets.swiper-pagination-horizontal,.swiper-pagination-custom,.swiper-pagination-fraction{bottom:10px;left:0;width:100%}.swiper-pagination-bullets-dynamic{overflow:hidden;font-size:0}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transform:scale(.33);position:relative}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active{transform:scale(1)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-main{transform:scale(1)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev{transform:scale(.66)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev-prev{transform:scale(.33)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next{transform:scale(.66)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next-next{transform:scale(.33)}.swiper-pagination-bullet{width:var(--swiper-pagination-bullet-width,var(--swiper-pagination-bullet-size,8px));height:var(--swiper-pagination-bullet-height,var(--swiper-pagination-bullet-size,8px));display:inline-block;border-radius:50%;background:var(--swiper-pagination-bullet-inactive-color,#000);opacity:var(--swiper-pagination-bullet-inactive-opacity, .2)}button.swiper-pagination-bullet{border:none;margin:0;padding:0;box-shadow:none;-webkit-appearance:none;appearance:none}.swiper-pagination-clickable .swiper-pagination-bullet{cursor:pointer}.swiper-pagination-bullet:only-child{display:none!important}.swiper-pagination-bullet-active{opacity:var(--swiper-pagination-bullet-opacity, 1);background:var(--swiper-pagination-color,var(--swiper-theme-color))}.swiper-pagination-vertical.swiper-pagination-bullets,.swiper-vertical>.swiper-pagination-bullets{right:10px;top:50%;transform:translate3d(0px,-50%,0)}.swiper-pagination-vertical.swiper-pagination-bullets .swiper-pagination-bullet,.swiper-vertical>.swiper-pagination-bullets .swiper-pagination-bullet{margin:var(--swiper-pagination-bullet-vertical-gap,6px) 0;display:block}.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic,.swiper-vertical>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic{top:50%;transform:translateY(-50%);width:8px}.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet,.swiper-vertical>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{display:inline-block;transition:.2s transform,.2s top}.swiper-horizontal>.swiper-pagination-bullets .swiper-pagination-bullet,.swiper-pagination-horizontal.swiper-pagination-bullets .swiper-pagination-bullet{margin:0 var(--swiper-pagination-bullet-horizontal-gap,4px)}.swiper-horizontal>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic,.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic{left:50%;transform:translateX(-50%);white-space:nowrap}.swiper-horizontal>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet,.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transition:.2s transform,.2s left}.swiper-horizontal.swiper-rtl>.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transition:.2s transform,.2s right}.swiper-pagination-progressbar{background:rgba(0,0,0,.25);position:absolute}.swiper-pagination-progressbar .swiper-pagination-progressbar-fill{background:var(--swiper-pagination-color,var(--swiper-theme-color));position:absolute;left:0;top:0;width:100%;height:100%;transform:scale(0);transform-origin:left top}.swiper-rtl .swiper-pagination-progressbar .swiper-pagination-progressbar-fill{transform-origin:right top}.swiper-horizontal>.swiper-pagination-progressbar,.swiper-pagination-progressbar.swiper-pagination-horizontal,.swiper-pagination-progressbar.swiper-pagination-vertical.swiper-pagination-progressbar-opposite,.swiper-vertical>.swiper-pagination-progressbar.swiper-pagination-progressbar-opposite{width:100%;height:4px;left:0;top:0}.swiper-horizontal>.swiper-pagination-progressbar.swiper-pagination-progressbar-opposite,.swiper-pagination-progressbar.swiper-pagination-horizontal.swiper-pagination-progressbar-opposite,.swiper-pagination-progressbar.swiper-pagination-vertical,.swiper-vertical>.swiper-pagination-progressbar{width:4px;height:100%;left:0;top:0}.swiper-pagination-lock{display:none}.swiper-scrollbar{border-radius:10px;position:relative;-ms-touch-action:none;background:rgba(0,0,0,.1)}.swiper-horizontal>.swiper-scrollbar{position:absolute;left:1%;bottom:3px;z-index:50;height:5px;width:98%}.swiper-vertical>.swiper-scrollbar{position:absolute;right:3px;top:1%;z-index:50;width:5px;height:98%}.swiper-scrollbar-drag{height:100%;width:100%;position:relative;background:rgba(0,0,0,.5);border-radius:10px;left:0;top:0}.swiper-scrollbar-cursor-drag{cursor:move}.swiper-scrollbar-lock{display:none}.swiper-zoom-container{width:100%;height:100%;display:flex;justify-content:center;align-items:center;text-align:center}.swiper-zoom-container>canvas,.swiper-zoom-container>img,.swiper-zoom-container>svg{max-width:100%;max-height:100%;object-fit:contain}.swiper-slide-zoomed{cursor:move}.swiper-lazy-preloader{width:42px;height:42px;position:absolute;left:50%;top:50%;margin-left:-21px;margin-top:-21px;z-index:10;transform-origin:50%;animation:swiper-preloader-spin 1s infinite linear;box-sizing:border-box;border:4px solid var(--swiper-preloader-color,var(--swiper-theme-color));border-radius:50%;border-top-color:transparent}.swiper-lazy-preloader-white{--swiper-preloader-color:#fff}.swiper-lazy-preloader-black{--swiper-preloader-color:#000}@keyframes swiper-preloader-spin{100%{transform:rotate(360deg)}}.swiper .swiper-notification{position:absolute;left:0;top:0;pointer-events:none;opacity:0;z-index:-1000}.swiper-free-mode>.swiper-wrapper{transition-timing-function:ease-out;margin:0 auto}.swiper-grid>.swiper-wrapper{flex-wrap:wrap}.swiper-grid-column>.swiper-wrapper{flex-wrap:wrap;flex-direction:column}.swiper-fade.swiper-free-mode .swiper-slide{transition-timing-function:ease-out}.swiper-fade .swiper-slide{pointer-events:none;transition-property:opacity}.swiper-fade .swiper-slide .swiper-slide{pointer-events:none}.swiper-fade .swiper-slide-active,.swiper-fade .swiper-slide-active .swiper-slide-active{pointer-events:auto}.swiper-cube{overflow:visible}.swiper-cube .swiper-slide{pointer-events:none;-webkit-backface-visibility:hidden;backface-visibility:hidden;z-index:1;visibility:hidden;transform-origin:0 0;width:100%;height:100%}.swiper-cube .swiper-slide .swiper-slide{pointer-events:none}.swiper-cube.swiper-rtl .swiper-slide{transform-origin:100% 0}.swiper-cube .swiper-slide-active,.swiper-cube .swiper-slide-active .swiper-slide-active{pointer-events:auto}.swiper-cube .swiper-slide-active,.swiper-cube .swiper-slide-next,.swiper-cube .swiper-slide-next+.swiper-slide,.swiper-cube .swiper-slide-prev{pointer-events:auto;visibility:visible}.swiper-cube .swiper-slide-shadow-bottom,.swiper-cube .swiper-slide-shadow-left,.swiper-cube .swiper-slide-shadow-right,.swiper-cube .swiper-slide-shadow-top{z-index:0;-webkit-backface-visibility:hidden;backface-visibility:hidden}.swiper-cube .swiper-cube-shadow{position:absolute;left:0;bottom:0px;width:100%;height:100%;opacity:.6;z-index:0}.swiper-cube .swiper-cube-shadow:before{content:'';background:#000;position:absolute;left:0;top:0;bottom:0;right:0;filter:blur(50px)}.swiper-flip{overflow:visible}.swiper-flip .swiper-slide{pointer-events:none;-webkit-backface-visibility:hidden;backface-visibility:hidden;z-index:1}.swiper-flip .swiper-slide .swiper-slide{pointer-events:none}.swiper-flip .swiper-slide-active,.swiper-flip .swiper-slide-active .swiper-slide-active{pointer-events:auto}.swiper-flip .swiper-slide-shadow-bottom,.swiper-flip .swiper-slide-shadow-left,.swiper-flip .swiper-slide-shadow-right,.swiper-flip .swiper-slide-shadow-top{z-index:0;-webkit-backface-visibility:hidden;backface-visibility:hidden}.swiper-creative .swiper-slide{-webkit-backface-visibility:hidden;backface-visibility:hidden;overflow:hidden;transition-property:transform,opacity,height}.swiper-cards{overflow:visible}.swiper-cards .swiper-slide{transform-origin:center bottom;-webkit-backface-visibility:hidden;backface-visibility:hidden;overflow:hidden}
static/email.html ADDED
@@ -0,0 +1,443 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <html xmlns="http:www.w3.org/1999/xhtml" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office">
2
+
3
+ <head>
4
+ <meta charset="utf8">
5
+ <meta http-equiv="x-ua-compatible" content="ie=edge">
6
+ <meta name="viewport" content="width=device-width, initial-scale=1">
7
+ <meta name="x-apple-disable-message-reformatting">
8
+ <!--[if gte mso 9]>
9
+ <xml>
10
+ <o:OfficeDocumentSettings>
11
+ <o:AllowPNG/>
12
+ <o:PixelsPerInch>96</o:PixelsPerInch>
13
+ </o:OfficeDocumentSettings>
14
+ </xml>
15
+ <![endif]-->
16
+
17
+ <!--[if mso]>
18
+ <style type="text/css">
19
+ body,table tr,table td,a, span,table.MsoNormalTable{font-family:Helvetica,Arial,sans-serif !important;}
20
+ </style>
21
+ <![endif]-->
22
+ <style type="text/css">
23
+ .bg-linkedin {
24
+ background-color: #0077b5 !important;
25
+ }
26
+
27
+ .hover-bg-gray-200:hover {
28
+ background-color: #edf2f7 !important;
29
+ }
30
+
31
+ .hover-bg-gray-900:hover {
32
+ background-color: #1a202c !important;
33
+ }
34
+
35
+ .hover-bg-red-700:hover {
36
+ background-color: #c53030 !important;
37
+ }
38
+
39
+ .hover-bg-blue-700:hover {
40
+ background-color: #2b6cb0 !important;
41
+ }
42
+
43
+ .hover-bg-blue-800:hover {
44
+ background-color: #2c5282 !important;
45
+ }
46
+
47
+ .hover-bg-indigo-700:hover {
48
+ background-color: #4c51bf !important;
49
+ }
50
+
51
+ .hover-opacity-100:hover {
52
+ opacity: 1 !important;
53
+ }
54
+
55
+ .hover-text-white:hover {
56
+ color: #ffffff !important;
57
+ }
58
+
59
+ .hover-text-blue-400:hover {
60
+ color: #63b3ed !important;
61
+ }
62
+
63
+ .hover-no-underline:hover {
64
+ text-decoration: none !important;
65
+ }
66
+
67
+ @media screen {
68
+ img {
69
+ max-width: 100%;
70
+ }
71
+
72
+ td,
73
+ th {
74
+ box-sizing: border-box;
75
+ }
76
+
77
+ a[x-apple-data-detectors] {
78
+ color: inherit;
79
+ text-decoration: none;
80
+ }
81
+
82
+ .all-font-montserrat {
83
+ font-family: Montserrat, -apple-system, "Segoe UI", Helvetica, sans-serif !important;
84
+ }
85
+
86
+ .all-font-sans {
87
+ font-family: -apple-system, "Segoe UI", sans-serif !important;
88
+ }
89
+ }
90
+
91
+ @media (max-width: 600px) {
92
+ u~div .wrapper {
93
+ min-width: 100vw;
94
+ }
95
+
96
+ img {
97
+ height: auto !important;
98
+ }
99
+
100
+ .sm-rounded-none {
101
+ border-radius: 0 !important;
102
+ }
103
+
104
+ .sm-block {
105
+ display: block !important;
106
+ }
107
+
108
+ .sm-inline-block {
109
+ display: inline-block !important;
110
+ }
111
+
112
+ .sm-hidden {
113
+ display: none !important;
114
+ }
115
+
116
+ .sm-h-20 {
117
+ height: 20px !important;
118
+ }
119
+
120
+ .sm-h-24 {
121
+ height: 24px !important;
122
+ }
123
+
124
+ .sm-h-32 {
125
+ height: 32px !important;
126
+ }
127
+
128
+ .sm-mb-0 {
129
+ margin-bottom: 0 !important;
130
+ }
131
+
132
+ .sm-mb-16 {
133
+ margin-bottom: 16px !important;
134
+ }
135
+
136
+ .sm-opacity-100 {
137
+ opacity: 1 !important;
138
+ }
139
+
140
+ .sm-px-0 {
141
+ padding-left: 0 !important;
142
+ padding-right: 0 !important;
143
+ }
144
+
145
+ .sm-py-10 {
146
+ padding-top: 10px !important;
147
+ padding-bottom: 10px !important;
148
+ }
149
+
150
+ .sm-px-14 {
151
+ padding-left: 14px !important;
152
+ padding-right: 14px !important;
153
+ }
154
+
155
+ .sm-py-24 {
156
+ padding-top: 24px !important;
157
+ padding-bottom: 24px !important;
158
+ }
159
+
160
+ .sm-px-24 {
161
+ padding-left: 24px !important;
162
+ padding-right: 24px !important;
163
+ }
164
+
165
+ .sm-px-10 {
166
+ padding-left: 10px !important;
167
+ padding-right: 10px !important;
168
+ }
169
+
170
+ .sm-px-30 {
171
+ padding-left: 30px !important;
172
+ padding-right: 30px !important;
173
+ }
174
+
175
+ .sm-pt-0 {
176
+ padding-top: 0 !important;
177
+ }
178
+
179
+ .sm-pr-0 {
180
+ padding-right: 0 !important;
181
+ }
182
+
183
+ .sm-pb-0 {
184
+ padding-bottom: 0 !important;
185
+ }
186
+
187
+ .sm-pl-0 {
188
+ padding-left: 0 !important;
189
+ }
190
+
191
+ .sm-pt-4 {
192
+ padding-top: 4px !important;
193
+ }
194
+
195
+ .sm-pt-8 {
196
+ padding-top: 8px !important;
197
+ }
198
+
199
+ .sm-pb-8 {
200
+ padding-bottom: 8px !important;
201
+ }
202
+
203
+ .sm-pt-10 {
204
+ padding-top: 10px !important;
205
+ }
206
+
207
+ .sm-pb-10 {
208
+ padding-bottom: 10px !important;
209
+ }
210
+
211
+ .sm-pb-16 {
212
+ padding-bottom: 16px !important;
213
+ }
214
+
215
+ .sm-pl-10 {
216
+ padding-left: 10px !important;
217
+ }
218
+
219
+ .sm-pr-10 {
220
+ padding-left: 10px !important;
221
+ }
222
+
223
+ .sm-pl-16 {
224
+ padding-left: 16px !important;
225
+ }
226
+
227
+ .sm-pr-16 {
228
+ padding-left: 16px !important;
229
+ }
230
+
231
+ .sm-pt-20 {
232
+ padding-top: 20px !important;
233
+ }
234
+
235
+ .sm-pb-20 {
236
+ padding-bottom: 20px !important;
237
+ }
238
+
239
+ .sm-pl-20 {
240
+ padding-left: 20px !important;
241
+ }
242
+
243
+ .sm-pr-20 {
244
+ padding-left: 20px !important;
245
+ }
246
+
247
+ .sm-pt-24 {
248
+ padding-top: 24px !important;
249
+ }
250
+
251
+ .sm-pb-24 {
252
+ padding-bottom: 24px !important;
253
+ }
254
+
255
+ .sm-pb-32 {
256
+ padding-bottom: 32px !important;
257
+ }
258
+
259
+ .sm-pl-34 {
260
+ padding-left: 34px !important;
261
+ }
262
+
263
+ .sm-pl-40 {
264
+ padding-left: 40px !important;
265
+ }
266
+
267
+ .sm-pr-40 {
268
+ padding-right: 40px !important;
269
+ }
270
+
271
+ .sm-pb-40 {
272
+ padding-bottom: 40px !important;
273
+ }
274
+
275
+ .sm-text-left {
276
+ text-align: left !important;
277
+ }
278
+
279
+ .sm-text-center {
280
+ text-align: center !important;
281
+ }
282
+
283
+ .sm-w-1-2 {
284
+ width: 50% !important;
285
+ }
286
+
287
+ .sm-w-1-3 {
288
+ width: 33.33333% !important;
289
+ }
290
+
291
+ .sm-w-2-3 {
292
+ width: 66.66667% !important;
293
+ }
294
+
295
+ .sm-w-3-5 {
296
+ width: 60% !important;
297
+ }
298
+
299
+ .sm-w-full {
300
+ width: 100% !important;
301
+ max-width: 100% !important;
302
+ }
303
+ }
304
+ </style>
305
+ <title>Smile</title>
306
+ <style>
307
+ @media (max-width: 600px) {
308
+ img {
309
+ height: auto !important;
310
+ max-width: 100% !important;
311
+ }
312
+
313
+ body {
314
+ padding: 0;
315
+ }
316
+ }
317
+ </style>
318
+ </head>
319
+
320
+ <body style="box-sizing: border-box; margin: 0; padding: 0; width: 100%; word-break: break-word; -webkit-font-smoothing: antialiased;padding-bottom:20px; background-color: #f7f7f7" class="sm-px-10">
321
+
322
+ <table style="overflow: hidden;">
323
+ <tbody>
324
+ <tr>
325
+ <td style="display:none !important;visibility:hidden;mso-hide:all;font-size:1px;color:#ffffff;line-height:1px;max-height:0px;max-width:0px;opacity:0;overflow:hidden;">SmileCheck 😄</td>
326
+ </tr>
327
+ </tbody>
328
+ </table>
329
+
330
+ <table class="wrapper all-font-sans" width="100%" cellpadding="0" cellspacing="0" role="presentation" style="overflow: hidden;">
331
+ <tbody>
332
+ <tr>
333
+ <td align="center" width="100%">
334
+ <table class="sm-w-full" width="600" cellpadding="0" cellspacing="0" role="presentation" style="overflow: hidden;">
335
+ </table>
336
+ <table class="all-font-sans sm-w-full" cellspacing="0" cellpadding="0" style="overflow: hidden; margin-left: auto; margin-right: auto; width: 600px; background: rgb(255, 255, 255);" width="600" bgcolor="#ffffff">
337
+ <tbody>
338
+ <tr>
339
+ <td align="center" style="padding-top: 40px; padding-bottom: 40px; padding-left: 48px; padding-right: 48px; width: 100%; border-radius: 0px" class="sm-px-24" width="100%">
340
+ <table class="sm-w-full" cellspacing="0" cellpadding="0" style="overflow: hidden; width: 100%;" width="100%">
341
+ <tbody>
342
+ <tr>
343
+ <td align="center" style="text-align: center; padding-bottom: 18px; border-radius: 0px" class="sm-px-0"><a href="#" target="_blank" rel="noopener noreferrer nofollow" style="color: -webkit-link;"><img src="https://i.postimg.cc/vTSj1jQz/smilecheck-logo.png" data-avatar="false" alt="Logo" style="width: 180px; vertical-align: middle; line-height: 100%; max-width: 100%; border: 0; outline: none;" width="180" height="46"></a></td>
344
+ </tr>
345
+ <tr>
346
+ <td align="center" class="sm-px-0" style="border-radius: 0px"><a href target="_blank" rel="noopener noreferrer nofollow" style="color: -webkit-link;"><img src="https://letter-so.s3.us-west-1.amazonaws.com/uploads/exports/6410e03bdbcbc3164be07d14/32023/1678828931375twitter%2B%281%29%2B1.png" data-avatar="false" style="width: 16px; vertical-align: middle; line-height: 100%; max-width: 100%; border: 0; outline: none;" width="16" height="16"></a><span style="display: inline">&nbsp;&nbsp;</span><a href target="_blank" rel="noopener noreferrer nofollow" style="color: -webkit-link;"><img src="https://letter-so.s3.us-west-1.amazonaws.com/uploads/exports/6410e03bdbcbc3164be07d14/32023/1678828931375instagram%2B1.png" data-avatar="false" style="width: 16px; vertical-align: middle; line-height: 100%; max-width: 100%; border: 0; outline: none;" width="16" height="16"></a><span style="display: inline">&nbsp;&nbsp;</span><a href target="_blank" rel="noopener noreferrer nofollow" style="color: -webkit-link;"><img src="https://letter-so.s3.us-west-1.amazonaws.com/uploads/exports/6410e03bdbcbc3164be07d14/32023/1678828931375facebook%2B%281%29%2B1.png" data-avatar="false" style="width: 16px; vertical-align: middle; line-height: 100%; max-width: 100%; border: 0; outline: none;" width="16" height="16"></a></td>
347
+ </tr>
348
+ </tbody>
349
+ </table>
350
+ </td>
351
+ </tr>
352
+ </tbody>
353
+ </table>
354
+ <table class="sm-w-full all-font-sans" cellspacing="0" cellpadding="0" style="overflow: hidden; margin-left: auto; margin-right: auto; width: 600px; background: rgb(255, 255, 255);" width="600" bgcolor="#ffffff">
355
+ <tbody>
356
+ <tr>
357
+ <td style="border-radius: 0px">
358
+ <table cellspacing="0" cellpadding="0" style="overflow: hidden;">
359
+ <tbody>
360
+ <tr>
361
+ <td style="padding-top: 40px; padding-bottom: 40px; padding-left: 48px; padding-right: 48px; width: 100%; border-radius: 0px" class="sm-px-24" width="100%">
362
+ <table cellspacing="0" cellpadding="0" style="overflow: hidden; width: 100%;" width="100%">
363
+ <tbody>
364
+ <tr>
365
+ <td style="padding-bottom: 24px; border-radius: 0px" class="sm-px-0">
366
+ <h1 style="margin: 0 0 12px 0; line-height: 1.24; font-weight: bold; font-family: -apple-system, 'Segoe UI', sans-serif; font-size: 36px; color: #222;">What's new this week?</h1>
367
+ </td>
368
+ </tr>
369
+ <tr>
370
+ <td style="padding-bottom: 24px; border-radius: 0px" class="sm-px-0"><a href target="_blank" rel="noopener noreferrer nofollow" style="color: -webkit-link;"><img src="https://letter-so.s3.us-west-1.amazonaws.com/uploads/exports/6410e03bdbcbc3164be07d14/32023/1678828931375%252Fprototypr%252Ftemp%252F1580579385905-1580579385905.png" data-avatar="false" alt="Photo frame" style="width: 504px; max-width: 100%; vertical-align: middle; line-height: 100%; border: 0; outline: none;" width="504" height="340"></a></td>
371
+ </tr>
372
+ <tr>
373
+ <td style="padding-bottom: 24px; border-radius: 0px" class="sm-px-0">
374
+ <div>
375
+ <script>
376
+ const urlParams = new URLSearchParams(window.location.search);
377
+ const name = urlParams.get('name');
378
+ const otp = urlParams.get('otp');
379
+ const userGreeting = document.getElementById('user-greeting');
380
+ userGreeting.textContent = `Hey ${name} ${otp},`;
381
+ </script>
382
+ <p id="user-greeting" style="margin: 0 0 12px 0; line-height: 1.6; margin-bottom: 24px; font-family: -apple-system, 'Segoe UI', sans-serif; font-size: 18px; color: #222;">Hey ,</p>
383
+ <p style="margin: 0 0 12px 0; line-height: 1.6; font-family: -apple-system, 'Segoe UI', sans-serif; font-size: 18px; color: #222;">This is Email Verification by SmileCheck. We are so excited that you are joining us in this journey. Please go to the below link to verify:</p>
384
+ </div>
385
+ </td>
386
+ </tr>
387
+ <tr>
388
+ <td align="center" class="sm-px-0" style="border-radius: 0px">
389
+ <table align="center" cellspacing="0" cellpadding="0" style="overflow: hidden; margin-left: auto; margin-right: auto;">
390
+ <tbody>
391
+ <tr>
392
+ <th colspan="1" rowspan="1" style="padding-left: 20px; padding-right: 20px; border-radius: 4px; background-color:#ffa200; mso-padding-alt: 12px 48px" bgcolor="#ffa200"><a style="display: inline-block; padding-top: 16px; padding-bottom: 16px; text-decoration: none; color: #333333; font-size: 16px;" href="#button" target="_blank">Check it out</a></th>
393
+ </tr>
394
+ </tbody>
395
+ </table>
396
+ </td>
397
+ </tr>
398
+ </tbody>
399
+ </table>
400
+ </td>
401
+ </tr>
402
+ </tbody>
403
+ </table>
404
+ </td>
405
+ </tr>
406
+ </tbody>
407
+ </table>
408
+ <table class="all-font-sans sm-w-full" cellspacing="0" cellpadding="0" style="overflow: hidden; margin-left: auto; margin-right: auto; width: 600px; background: rgb(255, 255, 255);" width="600" bgcolor="#ffffff">
409
+ <tbody>
410
+ <tr>
411
+ <td style="padding-top: 40px; padding-bottom: 40px; padding-left: 48px; padding-right: 48px; width: 100%; border-radius: 0px" class="sm-px-24" width="100%">
412
+ <table cellspacing="0" cellpadding="0" style="overflow: hidden; width: 100%;" width="100%">
413
+ <tbody>
414
+ <tr>
415
+ <td align="center" style="text-align: center; padding-bottom: 8px; border-radius: 0px" class="sm-px-0"><a href="#" target="_blank" rel="noopener noreferrer nofollow" style="color: -webkit-link;"><img src="https://i.postimg.cc/vTSj1jQz/smilecheck-logo.png" data-avatar="false" alt="Letter" style="width: 180px; max-width: 100%; border: 0; outline: none;" width="180" height="46"></a></td>
416
+ </tr>
417
+ <tr>
418
+ <td align="center" style="text-align: center; border-radius: 0px" class="sm-px-0">
419
+ <p style="margin: 0 0 12px 0; line-height: 1.6; font-size: 12px; color: #1a1c25;"><em>49 Manish Nagar • Nagpur, India</em></p>
420
+ </td>
421
+ </tr>
422
+ <tr>
423
+ <td height="64" style="line-height: 64px; border-radius: 0px" class="sm-px-0">
424
+ <p style="font-size: 16px; margin: 0 0 12px 0; line-height: 1.6; font-family: -apple-system, 'Segoe UI', sans-serif; color: #222;"></p>
425
+ </td>
426
+ </tr>
427
+ <tr>
428
+ <td align="center" style="text-align: center; border-radius: 0px" class="sm-px-0">
429
+ <p style="font-size: 16px; margin: 0 0 12px 0; line-height: 1.6; font-family: -apple-system, 'Segoe UI', sans-serif; color: #222;"><a target="_blank" rel="noopener noreferrer nofollow" href="http://127.0.0.1:5000" style="font-size: 12px; text-decoration: none; color: #2d3042;"><span style="color: #787474">Unsubscribe from this list.</span></a></p>
430
+ </td>
431
+ </tr>
432
+ </tbody>
433
+ </table>
434
+ </td>
435
+ </tr>
436
+ </tbody>
437
+ </table>
438
+ </td>
439
+ </tr>
440
+ </tbody>
441
+ </table>
442
+ </body>
443
+ </html>
static/error2.png ADDED
static/error2.svg ADDED
static/eye.png ADDED
static/favicon.png ADDED
static/feature-back.svg ADDED
static/footer.png ADDED
static/footer.svg ADDED
static/index-back.svg ADDED
static/index-backed.svg ADDED
static/js/main.js ADDED
@@ -0,0 +1,84 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ //Swiper slider
2
+ var swiper = new Swiper(".bg-slider-thumbs", {
3
+ loop: true,
4
+ spaceBetween: 0,
5
+ slidesPerView: 0,
6
+ });
7
+ var swiper2 = new Swiper(".bg-slider", {
8
+ loop: true,
9
+ spaceBetween: 0,
10
+ thumbs: {
11
+ swiper: swiper,
12
+ },
13
+ });
14
+
15
+ //Navigation bar effects on scroll
16
+ window.addEventListener("scroll", function(){
17
+ const header = document.querySelector("header");
18
+ header.classList.toggle("sticky", window.scrollY > 0);
19
+ });
20
+
21
+ //Responsive navigation menu toggle
22
+ const menuBtn = document.querySelector(".nav-menu-btn");
23
+ const closeBtn = document.querySelector(".nav-close-btn");
24
+ const navigation = document.querySelector(".navigation");
25
+
26
+ menuBtn.addEventListener("click", () => {
27
+ navigation.classList.add("active");
28
+ });
29
+
30
+ closeBtn.addEventListener("click", () => {
31
+ navigation.classList.remove("active");
32
+ });
33
+
34
+ //Transition Jump anchor links
35
+ var jumpLink1 = document.getElementById("jump-link1");
36
+
37
+ jumpLink1.addEventListener("click", function(e) {
38
+ e.preventDefault();
39
+ var target = document.querySelector(this.getAttribute("href"));
40
+ var targetOffset = target.offsetTop;
41
+ window.scrollTo({top: targetOffset, behavior: "smooth"});
42
+ });
43
+
44
+ var jumpLink2 = document.getElementById("jump-link2");
45
+
46
+ jumpLink2.addEventListener("click", function(e) {
47
+ e.preventDefault();
48
+ var target = document.querySelector(this.getAttribute("href"));
49
+ var targetOffset = target.offsetTop;
50
+ window.scrollTo({top: targetOffset, behavior: "smooth"});
51
+ });
52
+
53
+ var jumpLink3 = document.getElementById("jump-link3");
54
+
55
+ jumpLink3.addEventListener("click", function(e) {
56
+ e.preventDefault();
57
+ var target = document.querySelector(this.getAttribute("href"));
58
+ var targetOffset = target.offsetTop;
59
+ window.scrollTo({top: targetOffset, behavior: "smooth"});
60
+ });
61
+
62
+ var jumpLink4 = document.getElementById("jump-link4");
63
+
64
+ jumpLink4.addEventListener("click", function(e) {
65
+ e.preventDefault();
66
+ var target = document.querySelector(this.getAttribute("href"));
67
+ var targetOffset = target.offsetTop;
68
+ window.scrollTo({top: targetOffset, behavior: "smooth"});
69
+ });
70
+
71
+ var inpt = document.getElementById("email-inpt");
72
+
73
+ inpt.addEventListener("focus", function() {
74
+ document.getElementById("contain-pass").style.display = "none";
75
+ document.getElementById("contain-mail").style.display = "block";
76
+ });
77
+
78
+ var pass = document.getElementById("pass-inpt");
79
+
80
+ pass.addEventListener("focus", function() {
81
+ document.getElementById("contain-pass").style.display = "block";
82
+ document.getElementById("contain-mail").style.display = "none";
83
+ });
84
+
static/js/swiper-bundle.min.js ADDED
The diff for this file is too large to render. See raw diff
 
static/layered-waves-haikei-cropped.svg ADDED
static/layered-waves-haikei.png ADDED
static/layered-waves-haikei.svg ADDED
static/loaderanimation_old.mp4 ADDED
Binary file (137 kB). View file
 
static/log-back.png ADDED
static/log-bak.png ADDED
static/login-back.png ADDED
static/login-back.svg ADDED
static/parameters/1101.png ADDED
static/parameters/1102.png ADDED
static/parameters/1103.png ADDED
static/parameters/1104.png ADDED
static/parameters/1105.png ADDED
static/parameters/1106.png ADDED
static/parameters/1107.png ADDED
static/parameters/1108.png ADDED
static/party-popper.png ADDED
static/rejected.png ADDED
static/smilecheck_logo.png ADDED
static/smilecheckloader.mp4 ADDED
Binary file (166 kB). View file
 
static/smilelogo-transperent.png ADDED
static/smilelogo.png ADDED
static/user-home.png ADDED
static/user-home.svg ADDED
static/user.gif ADDED
static/wellbeing.png ADDED
templates/admin.html ADDED
@@ -0,0 +1,951 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <!DOCTYPE html>
2
+ <html lang="en" >
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <title>Admin Page</title>
6
+ <meta name="viewport" content="width=device-width, initial-scale=1">
7
+ <link rel="icon" type="image/x-icon" href="/static/favicon.png">
8
+ <link rel="stylesheet" href="{{ url_for('static', filename='css/swiper-bundle.min.css') }}">
9
+ <link rel="stylesheet" href="{{ url_for('static', filename='css/style.css') }}">
10
+ <link rel="stylesheet" href="https://unicons.iconscout.com/release/v4.0.0/css/line.css">
11
+ <link rel='stylesheet' href='https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.0.0/css/bootstrap.css'>
12
+ <link rel='stylesheet' href='https://cdnjs.cloudflare.com/ajax/libs/datatables/1.10.16/css/dataTables.bootstrap4.css'>
13
+ <style>
14
+ /* The Modal (background) */
15
+ .modal {
16
+ display: none; /* Hidden by default */
17
+ position: fixed; /* Stay in place */
18
+ z-index: 999; /* Sit on top */
19
+ left: 0;
20
+ top: 0;
21
+ width: 100%; /* Full width */
22
+ height: 100%; /* Full height */
23
+ overflow: auto; /* Enable scroll if needed */
24
+ background-color: rgb(0,0,0); /* Fallback color */
25
+ background-color: rgba(0,0,0,0.4); /* Black w/ opacity */
26
+ -webkit-animation-name: fadeIn; /* Fade in the background */
27
+ -webkit-animation-duration: 0.4s;
28
+ animation-name: fadeIn;
29
+ animation-duration: 0.4s
30
+ }
31
+
32
+ /* Modal Content */
33
+ .modal-content {
34
+ position: fixed;
35
+ bottom: 0;
36
+ background-color: #fefefe;
37
+ width: 100%;
38
+ -webkit-animation-name: slideIn;
39
+ -webkit-animation-duration: 0.4s;
40
+ animation-name: slideIn;
41
+ animation-duration: 0.4s
42
+ }
43
+
44
+ /* The Close Button */
45
+ .close {
46
+ color: white;
47
+ float: right;
48
+ font-size: 28px;
49
+ font-weight: bold;
50
+ }
51
+
52
+ .close:hover,
53
+ .close:focus {
54
+ color: #000;
55
+ text-decoration: none;
56
+ cursor: pointer;
57
+ }
58
+
59
+ .modal-header {
60
+ padding: 2px 16px;
61
+ background-color: red;
62
+ color: white;
63
+ }
64
+
65
+ .modal-body {padding: 2px 16px;}
66
+
67
+ .modal-footer {
68
+ padding: 2px 16px;
69
+ background-color: #5cb85c;
70
+ color: white;
71
+ }
72
+
73
+ /* Add Animation */
74
+ @-webkit-keyframes slideIn {
75
+ from {bottom: -300px; opacity: 0}
76
+ to {bottom: 0; opacity: 1}
77
+ }
78
+
79
+ @keyframes slideIn {
80
+ from {bottom: -300px; opacity: 0}
81
+ to {bottom: 0; opacity: 1}
82
+ }
83
+
84
+ @-webkit-keyframes fadeIn {
85
+ from {opacity: 0}
86
+ to {opacity: 1}
87
+ }
88
+
89
+ @keyframes fadeIn {
90
+ from {opacity: 0}
91
+ to {opacity: 1}
92
+ }
93
+ </style>
94
+ </head>
95
+ <body>
96
+ <div class="loader" style="z-index:999">
97
+ <br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
98
+ <div class="box">
99
+ <div class="loader3" style="text-align: center;"></div>
100
+ </div>
101
+ <br>
102
+ <div style="text-align: center;">
103
+ <span id="variableValue">0%</span>
104
+ </div>
105
+ </div>
106
+ <script>
107
+ var variable = 0;
108
+ var intervalId = setInterval(function() {
109
+ if (variable < 100) {
110
+ variable++;
111
+ document.getElementById("variableValue").innerHTML = "" + variable + "%";
112
+ } else {
113
+ clearInterval(intervalId);
114
+ }
115
+ }, 5);
116
+
117
+ const loader = document.querySelector(".loader");
118
+ setTimeout(() => {
119
+ loader.classList.add("hide");
120
+ setTimeout(() => {
121
+ document.body.removeChild(loader);
122
+ }, 500);
123
+ }, 500);
124
+ </script>
125
+
126
+ <header style="display:flex">
127
+ <div class="nav-bar">
128
+ <a href="" class="logo"><img src="/static/smilelogo-transperent.png" width="260" height="85" style="padding-top: 15px;"></a>
129
+ <div class="navigation">
130
+ <div class="nav-items">
131
+ <i class="uil uil-times nav-close-btn"></i>
132
+ <a href="/home"><i class="uil uil-home"></i> <b>Home</b></a>
133
+ {% if session['name'] %}
134
+ <a href="/logout"><i class="uil uil-compass"></i> <b>Logout</b></a>
135
+ {% else %}
136
+ <a href="/login"><i class="uil uil-compass"></i> <b>Login</b></a>
137
+ <a href="/register"><i class="uil uil-envelope"></i> <b>Register</b></a>
138
+ {% endif %}
139
+ <a href="#" class="profile"><div class="svgContainer">
140
+ <div>
141
+ <svg class="mySVG" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 200 200">
142
+ <defs>
143
+ <circle id="armMaskPath" cx="100" cy="100" r="100"></circle>
144
+ </defs>
145
+
146
+ <clipPath id="armMask">
147
+ <use xlink:href="#armMaskPath" overflow="visible"></use>
148
+ </clipPath>
149
+
150
+ <circle cx="100" cy="100" r="100" fill="#ffce47"></circle>
151
+
152
+ <g class="body">
153
+ <path fill="#FFFFFF" d="M193.3,135.9c-5.8-8.4-15.5-13.9-26.5-13.9H151V72c0-27.6-22.4-50-50-50S51,44.4,51,72v50H32.1 c-10.6,0-20,5.1-25.8,13l0,78h187L193.3,135.9z"></path>
154
+ <path fill="none" stroke="#3A5E77" stroke-width="2.5" stroke-linecap="round" stroke-linejoinn="round" d="M193.3,135.9 c-5.8-8.4-15.5-13.9-26.5-13.9H151V72c0-27.6-22.4-50-50-50S51,44.4,51,72v50H32.1c-10.6,0-20,5.1-25.8,13"></path>
155
+ <path fill="#DDF1FA" d="M100,156.4c-22.9,0-43,11.1-54.1,27.7c15.6,10,34.2,15.9,54.1,15.9s38.5-5.8,54.1-15.9 C143,167.5,122.9,156.4,100,156.4z"></path>
156
+ </g>
157
+
158
+ <g class="earL">
159
+ <g class="outerEar" fill="#ddf1fa" stroke="#3a5e77" stroke-width="2.5" data-svg-origin="35.5 71.5" transform="matrix(1,0,0,1,0,0)">
160
+ <circle cx="47" cy="83" r="11.5"></circle>
161
+ <path d="M46.3 78.9c-2.3 0-4.1 1.9-4.1 4.1 0 2.3 1.9 4.1 4.1 4.1" stroke-linecap="round" stroke-linejoin="round"></path>
162
+ </g>
163
+
164
+ <g class="earHair" data-svg-origin="42.79999923706055 62.79999923706055" transform="matrix(1,0,0,1,0,0)">
165
+ <rect x="51" y="64" fill="#FFFFFF" width="15" height="35"></rect>
166
+ <path d="M53.4 62.8C48.5 67.4 45 72.2 42.8 77c3.4-.1 6.8-.1 10.1.1-4 3.7-6.8 7.6-8.2 11.6 2.1 0 4.2 0 6.3.2-2.6 4.1-3.8 8.3-3.7 12.5 1.2-.7 3.4-1.4 5.2-1.9" fill="#fff" stroke="#3a5e77" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"></path>
167
+ </g>
168
+ </g>
169
+
170
+ <g class="earR">
171
+ <g class="outerEar" fill="#ddf1fa" stroke="#3a5e77" stroke-width="2.5" data-svg-origin="143.5 71.5" transform="matrix(1,0,0,1,0,0)">
172
+ <circle cx="155" cy="83" r="11.5"></circle>
173
+ <path d="M155.7 78.9c2.3 0 4.1 1.9 4.1 4.1 0 2.3-1.9 4.1-4.1 4.1" stroke-linecap="round" stroke-linejoin="round"></path>
174
+ </g>
175
+ <g class="earHair" data-svg-origin="131 62.79999923706055" transform="matrix(1,0,0,1,0,0)">
176
+ <rect x="131" y="64" fill="#FFFFFF" width="20" height="35"></rect>
177
+ <path d="M148.6 62.8c4.9 4.6 8.4 9.4 10.6 14.2-3.4-.1-6.8-.1-10.1.1 4 3.7 6.8 7.6 8.2 11.6-2.1 0-4.2 0-6.3.2 2.6 4.1 3.8 8.3 3.7 12.5-1.2-.7-3.4-1.4-5.2-1.9" fill="#fff" stroke="#3a5e77" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"></path>
178
+ </g>
179
+ </g>
180
+ <path class="chin" d="M84.1 121.6c2.7 2.9 6.1 5.4 9.8 7.5l.9-4.5c2.9 2.5 6.3 4.8 10.2 6.5 0-1.9-.1-3.9-.2-5.8 3 1.2 6.2 2 9.7 2.5-.3-2.1-.7-4.1-1.2-6.1" fill="none" stroke="#3a5e77" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" data-svg-origin="84.0999984741211 121.5999984741211" transform="matrix(1,0,0,1,0,0)"></path>
181
+ <path class="face" fill="#DDF1FA" d="M134.5,46v35.5c0,21.815-15.446,39.5-34.5,39.5s-34.5-17.685-34.5-39.5V46" data-svg-origin="100 46" transform="matrix(1,0,0,1,0,0)" style="transform-origin: 0px 0px 0px;"></path>
182
+ <path class="hair" fill="#FFFFFF" stroke="#3A5E77" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" d="M81.457,27.929 c1.755-4.084,5.51-8.262,11.253-11.77c0.979,2.565,1.883,5.14,2.712,7.723c3.162-4.265,8.626-8.27,16.272-11.235 c-0.737,3.293-1.588,6.573-2.554,9.837c4.857-2.116,11.049-3.64,18.428-4.156c-2.403,3.23-5.021,6.391-7.852,9.474" data-svg-origin="104.51250076293945 27.929000854492188" transform="matrix(1,0,0,1,0,0)" style="transform-origin: 0px 0px 0px;"></path>
183
+
184
+ <g class="eyebrow" data-svg-origin="100.85150527954102 43.33300018310547" transform="matrix(1,0,0,1,0,0)" style="transform-origin: 0px 0px 0px;">
185
+ <path fill="#FFFFFF" d="M138.142,55.064c-4.93,1.259-9.874,2.118-14.787,2.599c-0.336,3.341-0.776,6.689-1.322,10.037 c-4.569-1.465-8.909-3.222-12.996-5.226c-0.98,3.075-2.07,6.137-3.267,9.179c-5.514-3.067-10.559-6.545-15.097-10.329 c-1.806,2.889-3.745,5.73-5.816,8.515c-7.916-4.124-15.053-9.114-21.296-14.738l1.107-11.768h73.475V55.064z"></path>
186
+ <path fill="#FFFFFF" stroke="#3A5E77" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" d="M63.56,55.102 c6.243,5.624,13.38,10.614,21.296,14.738c2.071-2.785,4.01-5.626,5.816-8.515c4.537,3.785,9.583,7.263,15.097,10.329 c1.197-3.043,2.287-6.104,3.267-9.179c4.087,2.004,8.427,3.761,12.996,5.226c0.545-3.348,0.986-6.696,1.322-10.037 c4.913-0.481,9.857-1.34,14.787-2.599"></path>
187
+ </g>
188
+
189
+ <g class="eyeL" data-svg-origin="82 75" transform="matrix(1,0,0,1,0,0)">
190
+ <circle cx="85.5" cy="78.5" r="3.5" fill="#3a5e77"></circle>
191
+ <circle cx="84" cy="76" r="1" fill="#fff"></circle>
192
+ </g>
193
+
194
+ <g class="eyeR" data-svg-origin="111 75" transform="matrix(1,0,0,1,0,0)">
195
+ <circle cx="114.5" cy="78.5" r="3.5" fill="#3a5e77"></circle>
196
+ <circle cx="113" cy="76" r="1" fill="#fff"></circle>
197
+ </g>
198
+
199
+ <g class="mouth" data-svg-origin="100.2220687866211 104" transform="matrix(1,0,0,1,0,0)" style="transform-origin: 0px 0px 0px;">
200
+ <path class="mouthBG" fill="#617E92" d="M100.2,101c-0.4,0-1.4,0-1.8,0c-2.7-0.3-5.3-1.1-8-2.5c-0.7-0.3-0.9-1.2-0.6-1.8 c0.2-0.5,0.7-0.7,1.2-0.7c0.2,0,0.5,0.1,0.6,0.2c3,1.5,5.8,2.3,8.6,2.3s5.7-0.7,8.6-2.3c0.2-0.1,0.4-0.2,0.6-0.2 c0.5,0,1,0.3,1.2,0.7c0.4,0.7,0.1,1.5-0.6,1.9c-2.6,1.4-5.3,2.2-7.9,2.5C101.7,101,100.5,101,100.2,101z"></path>
201
+ <path style="display: none;" class="mouthSmallBG" fill="#617E92" d="M100.2,101c-0.4,0-1.4,0-1.8,0c-2.7-0.3-5.3-1.1-8-2.5c-0.7-0.3-0.9-1.2-0.6-1.8 c0.2-0.5,0.7-0.7,1.2-0.7c0.2,0,0.5,0.1,0.6,0.2c3,1.5,5.8,2.3,8.6,2.3s5.7-0.7,8.6-2.3c0.2-0.1,0.4-0.2,0.6-0.2 c0.5,0,1,0.3,1.2,0.7c0.4,0.7,0.1,1.5-0.6,1.9c-2.6,1.4-5.3,2.2-7.9,2.5C101.7,101,100.5,101,100.2,101z"></path>
202
+ <path style="display: none;" class="mouthMediumBG" d="M95,104.2c-4.5,0-8.2-3.7-8.2-8.2v-2c0-1.2,1-2.2,2.2-2.2h22c1.2,0,2.2,1,2.2,2.2v2 c0,4.5-3.7,8.2-8.2,8.2H95z"></path>
203
+ <path style="display: none;" class="mouthLargeBG" d="M100 110.2c-9 0-16.2-7.3-16.2-16.2 0-2.3 1.9-4.2 4.2-4.2h24c2.3 0 4.2 1.9 4.2 4.2 0 9-7.2 16.2-16.2 16.2z" fill="#617e92" stroke="#3a5e77" stroke-linejoin="round" stroke-width="2.5"></path>
204
+
205
+ <defs>
206
+ <path id="mouthMaskPath" d="M100.2,101c-0.4,0-1.4,0-1.8,0c-2.7-0.3-5.3-1.1-8-2.5c-0.7-0.3-0.9-1.2-0.6-1.8 c0.2-0.5,0.7-0.7,1.2-0.7c0.2,0,0.5,0.1,0.6,0.2c3,1.5,5.8,2.3,8.6,2.3s5.7-0.7,8.6-2.3c0.2-0.1,0.4-0.2,0.6-0.2 c0.5,0,1,0.3,1.2,0.7c0.4,0.7,0.1,1.5-0.6,1.9c-2.6,1.4-5.3,2.2-7.9,2.5C101.7,101,100.5,101,100.2,101z"></path>
207
+ </defs>
208
+
209
+ <clipPath id="mouthMask">
210
+ <use xlink:href="#mouthMaskPath" overflow="visible"></use>
211
+ </clipPath>
212
+
213
+ <g clip-path="url(#mouthMask)">
214
+ <g class="tongue">
215
+ <circle cx="100" cy="107" r="8" fill="#cc4a6c"></circle>
216
+ <ellipse class="tongueHighlight" cx="100" cy="100.5" rx="3" ry="1.5" opacity=".1" fill="#fff"></ellipse>
217
+ </g>
218
+ </g>
219
+
220
+ <path clip-path="url(#mouthMask)" class="tooth" style="fill:#FFFFFF;" d="M106,97h-4c-1.1,0-2-0.9-2-2v-2h8v2C108,96.1,107.1,97,106,97z"></path>
221
+ <path class="mouthOutline" fill="none" stroke="#3A5E77" stroke-width="2.5" stroke-linejoin="round" d="M100.2,101c-0.4,0-1.4,0-1.8,0c-2.7-0.3-5.3-1.1-8-2.5c-0.7-0.3-0.9-1.2-0.6-1.8 c0.2-0.5,0.7-0.7,1.2-0.7c0.2,0,0.5,0.1,0.6,0.2c3,1.5,5.8,2.3,8.6,2.3s5.7-0.7,8.6-2.3c0.2-0.1,0.4-0.2,0.6-0.2 c0.5,0,1,0.3,1.2,0.7c0.4,0.7,0.1,1.5-0.6,1.9c-2.6,1.4-5.3,2.2-7.9,2.5C101.7,101,100.5,101,100.2,101z"></path>
222
+ </g>
223
+
224
+ <path class="nose" d="M97.7 79.9h4.7c1.9 0 3 2.2 1.9 3.7l-2.3 3.3c-.9 1.3-2.9 1.3-3.8 0l-2.3-3.3c-1.3-1.6-.2-3.7 1.8-3.7z" fill="#3a5e77" data-svg-origin="100.0374870300293 83.88750076293945" transform="matrix(0.99801,0.06294,-0.06294,0.99801,5.478269809651323,-6.130086597558147)" style="transform-origin: 0px 0px 0px;"></path>
225
+
226
+ <g class="arms" clip-path="url(#armMask)">
227
+ <g class="armL" data-svg-origin="1.2000000476837158 46.20000076293945" transform="matrix(-0.25881,0.96592,-0.96592,-0.25881,-46.863643174353925,276.9983298065334)" style="transform-origin: 0px 0px 0px;">
228
+ <path fill="#ddf1fa" stroke="#3a5e77" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="2.5" d="M121.3 97.4L111 58.7l38.8-10.4 20 36.1z"></path>
229
+ <path fill="#ddf1fa" stroke="#3a5e77" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="2.5" d="M134.4 52.5l19.3-5.2c2.7-.7 5.4.9 6.1 3.5.7 2.7-.9 5.4-3.5 6.1L146 59.7M160.8 76.5l19.4-5.2c2.7-.7 5.4.9 6.1 3.5.7 2.7-.9 5.4-3.5 6.1l-18.3 4.9M158.3 66.8l23.1-6.2c2.7-.7 5.4.9 6.1 3.5.7 2.7-.9 5.4-3.5 6.1l-23.1 6.2M150.9 58.4l26-7c2.7-.7 5.4.9 6.1 3.5.7 2.7-.9 5.4-3.5 6.1l-21.3 5.7"></path>
230
+ <path fill="#a9ddf3" d="M178.8 74.7l2.2-.6c1.1-.3 2.2.3 2.4 1.4.3 1.1-.3 2.2-1.4 2.4l-2.2.6-1-3.8zM180.1 64l2.2-.6c1.1-.3 2.2.3 2.4 1.4.3 1.1-.3 2.2-1.4 2.4l-2.2.6-1-3.8zM175.5 54.9l2.2-.6c1.1-.3 2.2.3 2.4 1.4.3 1.1-.3 2.2-1.4 2.4l-2.2.6-1-3.8zM152.1 49.4l2.2-.6c1.1-.3 2.2.3 2.4 1.4.3 1.1-.3 2.2-1.4 2.4l-2.2.6-1-3.8z"></path>
231
+ <path fill="#fff" stroke="#3a5e77" stroke-linecap="round" stroke-linejoin="round" stroke-width="2.5" d="M123.5 96.8c-41.4 14.9-84.1 30.7-108.2 35.5L1.2 80c33.5-9.9 71.9-16.5 111.9-21.8"></path>
232
+ <path fill="#fff" stroke="#3a5e77" stroke-linecap="round" stroke-linejoin="round" stroke-width="2.5" d="M108.5 59.4c7.7-5.3 14.3-8.4 22.8-13.2-2.4 5.3-4.7 10.3-6.7 15.1 4.3.3 8.4.7 12.3 1.3-4.2 5-8.1 9.6-11.5 13.9 3.1 1.1 6 2.4 8.7 3.8-1.4 2.9-2.7 5.8-3.9 8.5 2.5 3.5 4.6 7.2 6.3 11-4.9-.8-9-.7-16.2-2.7M94.5 102.8c-.6 4-3.8 8.9-9.4 14.7-2.6-1.8-5-3.7-7.2-5.7-2.5 4.1-6.6 8.8-12.2 14-1.9-2.2-3.4-4.5-4.5-6.9-4.4 3.3-9.5 6.9-15.4 10.8-.2-3.4.1-7.1 1.1-10.9M97.5 62.9c-1.7-2.4-5.9-4.1-12.4-5.2-.9 2.2-1.8 4.3-2.5 6.5-3.8-1.8-9.4-3.1-17-3.8.5 2.3 1.2 4.5 1.9 6.8-5-.6-11.2-.9-18.4-1 2 2.9.9 3.5 3.9 6.2"></path>
233
+ </g>
234
+
235
+ <g class="armR" data-svg-origin="385.5 47.03531265258789" transform="matrix(-0.25881,-0.96592,0.96592,-0.25881,346.84211864830615,651.5733533938651)" style="transform-origin: 0px 0px 0px;">
236
+ <path fill="#ddf1fa" stroke="#3a5e77" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="2.5" d="M265.4 97.3l10.4-38.6-38.9-10.5-20 36.1z"></path>
237
+ <path fill="#ddf1fa" stroke="#3a5e77" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="2.5" d="M252.4 52.4L233 47.2c-2.7-.7-5.4.9-6.1 3.5-.7 2.7.9 5.4 3.5 6.1l10.3 2.8M226 76.4l-19.4-5.2c-2.7-.7-5.4.9-6.1 3.5-.7 2.7.9 5.4 3.5 6.1l18.3 4.9M228.4 66.7l-23.1-6.2c-2.7-.7-5.4.9-6.1 3.5-.7 2.7.9 5.4 3.5 6.1l23.1 6.2M235.8 58.3l-26-7c-2.7-.7-5.4.9-6.1 3.5-.7 2.7.9 5.4 3.5 6.1l21.3 5.7"></path>
238
+ <path fill="#a9ddf3" d="M207.9 74.7l-2.2-.6c-1.1-.3-2.2.3-2.4 1.4-.3 1.1.3 2.2 1.4 2.4l2.2.6 1-3.8zM206.7 64l-2.2-.6c-1.1-.3-2.2.3-2.4 1.4-.3 1.1.3 2.2 1.4 2.4l2.2.6 1-3.8zM211.2 54.8l-2.2-.6c-1.1-.3-2.2.3-2.4 1.4-.3 1.1.3 2.2 1.4 2.4l2.2.6 1-3.8zM234.6 49.4l-2.2-.6c-1.1-.3-2.2.3-2.4 1.4-.3 1.1.3 2.2 1.4 2.4l2.2.6 1-3.8z"></path>
239
+ <path fill="#fff" stroke="#3a5e77" stroke-linecap="round" stroke-linejoin="round" stroke-width="2.5" d="M263.3 96.7c41.4 14.9 84.1 30.7 108.2 35.5l14-52.3C352 70 313.6 63.5 273.6 58.1"></path>
240
+ <path fill="#fff" stroke="#3a5e77" stroke-linecap="round" stroke-linejoin="round" stroke-width="2.5" d="M278.2 59.3l-18.6-10 2.5 11.9-10.7 6.5 9.9 8.7-13.9 6.4 9.1 5.9-13.2 9.2 23.1-.9M284.5 100.1c-.4 4 1.8 8.9 6.7 14.8 3.5-1.8 6.7-3.6 9.7-5.5 1.8 4.2 5.1 8.9 10.1 14.1 2.7-2.1 5.1-4.4 7.1-6.8 4.1 3.4 9 7 14.7 11 1.2-3.4 1.8-7 1.7-10.9M314 66.7s5.4-5.7 12.6-7.4c1.7 2.9 3.3 5.7 4.9 8.6 3.8-2.5 9.8-4.4 18.2-5.7.1 3.1.1 6.1 0 9.2 5.5-1 12.5-1.6 20.8-1.9-1.4 3.9-2.5 8.4-2.5 8.4"></path>
241
+ </g>
242
+ </g>
243
+ </svg>
244
+ </div>
245
+ </div></a>
246
+ <div class="floating-div" style="display:none;">
247
+ <div class="svgContainer">
248
+ <div>
249
+ <svg class="mySVG" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 200 200">
250
+ <defs>
251
+ <circle id="armMaskPath" cx="100" cy="100" r="100"></circle>
252
+ </defs>
253
+
254
+ <clipPath id="armMask">
255
+ <use xlink:href="#armMaskPath" overflow="visible"></use>
256
+ </clipPath>
257
+
258
+ <circle cx="100" cy="100" r="100" fill="#ffce47"></circle>
259
+
260
+ <g class="body">
261
+ <path fill="#FFFFFF" d="M193.3,135.9c-5.8-8.4-15.5-13.9-26.5-13.9H151V72c0-27.6-22.4-50-50-50S51,44.4,51,72v50H32.1 c-10.6,0-20,5.1-25.8,13l0,78h187L193.3,135.9z"></path>
262
+ <path fill="none" stroke="#3A5E77" stroke-width="2.5" stroke-linecap="round" stroke-linejoinn="round" d="M193.3,135.9 c-5.8-8.4-15.5-13.9-26.5-13.9H151V72c0-27.6-22.4-50-50-50S51,44.4,51,72v50H32.1c-10.6,0-20,5.1-25.8,13"></path>
263
+ <path fill="#DDF1FA" d="M100,156.4c-22.9,0-43,11.1-54.1,27.7c15.6,10,34.2,15.9,54.1,15.9s38.5-5.8,54.1-15.9 C143,167.5,122.9,156.4,100,156.4z"></path>
264
+ </g>
265
+
266
+ <g class="earL">
267
+ <g class="outerEar" fill="#ddf1fa" stroke="#3a5e77" stroke-width="2.5" data-svg-origin="35.5 71.5" transform="matrix(1,0,0,1,0,0)">
268
+ <circle cx="47" cy="83" r="11.5"></circle>
269
+ <path d="M46.3 78.9c-2.3 0-4.1 1.9-4.1 4.1 0 2.3 1.9 4.1 4.1 4.1" stroke-linecap="round" stroke-linejoin="round"></path>
270
+ </g>
271
+
272
+ <g class="earHair" data-svg-origin="42.79999923706055 62.79999923706055" transform="matrix(1,0,0,1,0,0)">
273
+ <rect x="51" y="64" fill="#FFFFFF" width="15" height="35"></rect>
274
+ <path d="M53.4 62.8C48.5 67.4 45 72.2 42.8 77c3.4-.1 6.8-.1 10.1.1-4 3.7-6.8 7.6-8.2 11.6 2.1 0 4.2 0 6.3.2-2.6 4.1-3.8 8.3-3.7 12.5 1.2-.7 3.4-1.4 5.2-1.9" fill="#fff" stroke="#3a5e77" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"></path>
275
+ </g>
276
+ </g>
277
+
278
+ <g class="earR">
279
+ <g class="outerEar" fill="#ddf1fa" stroke="#3a5e77" stroke-width="2.5" data-svg-origin="143.5 71.5" transform="matrix(1,0,0,1,0,0)">
280
+ <circle cx="155" cy="83" r="11.5"></circle>
281
+ <path d="M155.7 78.9c2.3 0 4.1 1.9 4.1 4.1 0 2.3-1.9 4.1-4.1 4.1" stroke-linecap="round" stroke-linejoin="round"></path>
282
+ </g>
283
+ <g class="earHair" data-svg-origin="131 62.79999923706055" transform="matrix(1,0,0,1,0,0)">
284
+ <rect x="131" y="64" fill="#FFFFFF" width="20" height="35"></rect>
285
+ <path d="M148.6 62.8c4.9 4.6 8.4 9.4 10.6 14.2-3.4-.1-6.8-.1-10.1.1 4 3.7 6.8 7.6 8.2 11.6-2.1 0-4.2 0-6.3.2 2.6 4.1 3.8 8.3 3.7 12.5-1.2-.7-3.4-1.4-5.2-1.9" fill="#fff" stroke="#3a5e77" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"></path>
286
+ </g>
287
+ </g>
288
+ <path class="chin" d="M84.1 121.6c2.7 2.9 6.1 5.4 9.8 7.5l.9-4.5c2.9 2.5 6.3 4.8 10.2 6.5 0-1.9-.1-3.9-.2-5.8 3 1.2 6.2 2 9.7 2.5-.3-2.1-.7-4.1-1.2-6.1" fill="none" stroke="#3a5e77" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" data-svg-origin="84.0999984741211 121.5999984741211" transform="matrix(1,0,0,1,0,0)"></path>
289
+ <path class="face" fill="#DDF1FA" d="M134.5,46v35.5c0,21.815-15.446,39.5-34.5,39.5s-34.5-17.685-34.5-39.5V46" data-svg-origin="100 46" transform="matrix(1,0,0,1,0,0)" style="transform-origin: 0px 0px 0px;"></path>
290
+ <path class="hair" fill="#FFFFFF" stroke="#3A5E77" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" d="M81.457,27.929 c1.755-4.084,5.51-8.262,11.253-11.77c0.979,2.565,1.883,5.14,2.712,7.723c3.162-4.265,8.626-8.27,16.272-11.235 c-0.737,3.293-1.588,6.573-2.554,9.837c4.857-2.116,11.049-3.64,18.428-4.156c-2.403,3.23-5.021,6.391-7.852,9.474" data-svg-origin="104.51250076293945 27.929000854492188" transform="matrix(1,0,0,1,0,0)" style="transform-origin: 0px 0px 0px;"></path>
291
+
292
+ <g class="eyebrow" data-svg-origin="100.85150527954102 43.33300018310547" transform="matrix(1,0,0,1,0,0)" style="transform-origin: 0px 0px 0px;">
293
+ <path fill="#FFFFFF" d="M138.142,55.064c-4.93,1.259-9.874,2.118-14.787,2.599c-0.336,3.341-0.776,6.689-1.322,10.037 c-4.569-1.465-8.909-3.222-12.996-5.226c-0.98,3.075-2.07,6.137-3.267,9.179c-5.514-3.067-10.559-6.545-15.097-10.329 c-1.806,2.889-3.745,5.73-5.816,8.515c-7.916-4.124-15.053-9.114-21.296-14.738l1.107-11.768h73.475V55.064z"></path>
294
+ <path fill="#FFFFFF" stroke="#3A5E77" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" d="M63.56,55.102 c6.243,5.624,13.38,10.614,21.296,14.738c2.071-2.785,4.01-5.626,5.816-8.515c4.537,3.785,9.583,7.263,15.097,10.329 c1.197-3.043,2.287-6.104,3.267-9.179c4.087,2.004,8.427,3.761,12.996,5.226c0.545-3.348,0.986-6.696,1.322-10.037 c4.913-0.481,9.857-1.34,14.787-2.599"></path>
295
+ </g>
296
+
297
+ <g class="eyeL" data-svg-origin="82 75" transform="matrix(1,0,0,1,0,0)">
298
+ <circle cx="85.5" cy="78.5" r="3.5" fill="#3a5e77"></circle>
299
+ <circle cx="84" cy="76" r="1" fill="#fff"></circle>
300
+ </g>
301
+
302
+ <g class="eyeR" data-svg-origin="111 75" transform="matrix(1,0,0,1,0,0)">
303
+ <circle cx="114.5" cy="78.5" r="3.5" fill="#3a5e77"></circle>
304
+ <circle cx="113" cy="76" r="1" fill="#fff"></circle>
305
+ </g>
306
+
307
+ <g class="mouth" data-svg-origin="100.2220687866211 104" transform="matrix(1,0,0,1,0,0)" style="transform-origin: 0px 0px 0px;">
308
+ <path class="mouthBG" fill="#617E92" d="M100.2,101c-0.4,0-1.4,0-1.8,0c-2.7-0.3-5.3-1.1-8-2.5c-0.7-0.3-0.9-1.2-0.6-1.8 c0.2-0.5,0.7-0.7,1.2-0.7c0.2,0,0.5,0.1,0.6,0.2c3,1.5,5.8,2.3,8.6,2.3s5.7-0.7,8.6-2.3c0.2-0.1,0.4-0.2,0.6-0.2 c0.5,0,1,0.3,1.2,0.7c0.4,0.7,0.1,1.5-0.6,1.9c-2.6,1.4-5.3,2.2-7.9,2.5C101.7,101,100.5,101,100.2,101z"></path>
309
+ <path style="display: none;" class="mouthSmallBG" fill="#617E92" d="M100.2,101c-0.4,0-1.4,0-1.8,0c-2.7-0.3-5.3-1.1-8-2.5c-0.7-0.3-0.9-1.2-0.6-1.8 c0.2-0.5,0.7-0.7,1.2-0.7c0.2,0,0.5,0.1,0.6,0.2c3,1.5,5.8,2.3,8.6,2.3s5.7-0.7,8.6-2.3c0.2-0.1,0.4-0.2,0.6-0.2 c0.5,0,1,0.3,1.2,0.7c0.4,0.7,0.1,1.5-0.6,1.9c-2.6,1.4-5.3,2.2-7.9,2.5C101.7,101,100.5,101,100.2,101z"></path>
310
+ <path style="display: none;" class="mouthMediumBG" d="M95,104.2c-4.5,0-8.2-3.7-8.2-8.2v-2c0-1.2,1-2.2,2.2-2.2h22c1.2,0,2.2,1,2.2,2.2v2 c0,4.5-3.7,8.2-8.2,8.2H95z"></path>
311
+ <path style="display: none;" class="mouthLargeBG" d="M100 110.2c-9 0-16.2-7.3-16.2-16.2 0-2.3 1.9-4.2 4.2-4.2h24c2.3 0 4.2 1.9 4.2 4.2 0 9-7.2 16.2-16.2 16.2z" fill="#617e92" stroke="#3a5e77" stroke-linejoin="round" stroke-width="2.5"></path>
312
+
313
+ <defs>
314
+ <path id="mouthMaskPath" d="M100.2,101c-0.4,0-1.4,0-1.8,0c-2.7-0.3-5.3-1.1-8-2.5c-0.7-0.3-0.9-1.2-0.6-1.8 c0.2-0.5,0.7-0.7,1.2-0.7c0.2,0,0.5,0.1,0.6,0.2c3,1.5,5.8,2.3,8.6,2.3s5.7-0.7,8.6-2.3c0.2-0.1,0.4-0.2,0.6-0.2 c0.5,0,1,0.3,1.2,0.7c0.4,0.7,0.1,1.5-0.6,1.9c-2.6,1.4-5.3,2.2-7.9,2.5C101.7,101,100.5,101,100.2,101z"></path>
315
+ </defs>
316
+
317
+ <clipPath id="mouthMask">
318
+ <use xlink:href="#mouthMaskPath" overflow="visible"></use>
319
+ </clipPath>
320
+
321
+ <g clip-path="url(#mouthMask)">
322
+ <g class="tongue">
323
+ <circle cx="100" cy="107" r="8" fill="#cc4a6c"></circle>
324
+ <ellipse class="tongueHighlight" cx="100" cy="100.5" rx="3" ry="1.5" opacity=".1" fill="#fff"></ellipse>
325
+ </g>
326
+ </g>
327
+
328
+ <path clip-path="url(#mouthMask)" class="tooth" style="fill:#FFFFFF;" d="M106,97h-4c-1.1,0-2-0.9-2-2v-2h8v2C108,96.1,107.1,97,106,97z"></path>
329
+ <path class="mouthOutline" fill="none" stroke="#3A5E77" stroke-width="2.5" stroke-linejoin="round" d="M100.2,101c-0.4,0-1.4,0-1.8,0c-2.7-0.3-5.3-1.1-8-2.5c-0.7-0.3-0.9-1.2-0.6-1.8 c0.2-0.5,0.7-0.7,1.2-0.7c0.2,0,0.5,0.1,0.6,0.2c3,1.5,5.8,2.3,8.6,2.3s5.7-0.7,8.6-2.3c0.2-0.1,0.4-0.2,0.6-0.2 c0.5,0,1,0.3,1.2,0.7c0.4,0.7,0.1,1.5-0.6,1.9c-2.6,1.4-5.3,2.2-7.9,2.5C101.7,101,100.5,101,100.2,101z"></path>
330
+ </g>
331
+
332
+ <path class="nose" d="M97.7 79.9h4.7c1.9 0 3 2.2 1.9 3.7l-2.3 3.3c-.9 1.3-2.9 1.3-3.8 0l-2.3-3.3c-1.3-1.6-.2-3.7 1.8-3.7z" fill="#3a5e77" data-svg-origin="100.0374870300293 83.88750076293945" transform="matrix(0.99801,0.06294,-0.06294,0.99801,5.478269809651323,-6.130086597558147)" style="transform-origin: 0px 0px 0px;"></path>
333
+
334
+ <g class="arms" clip-path="url(#armMask)">
335
+ <g class="armL" data-svg-origin="1.2000000476837158 46.20000076293945" transform="matrix(-0.25881,0.96592,-0.96592,-0.25881,-46.863643174353925,276.9983298065334)" style="transform-origin: 0px 0px 0px;">
336
+ <path fill="#ddf1fa" stroke="#3a5e77" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="2.5" d="M121.3 97.4L111 58.7l38.8-10.4 20 36.1z"></path>
337
+ <path fill="#ddf1fa" stroke="#3a5e77" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="2.5" d="M134.4 52.5l19.3-5.2c2.7-.7 5.4.9 6.1 3.5.7 2.7-.9 5.4-3.5 6.1L146 59.7M160.8 76.5l19.4-5.2c2.7-.7 5.4.9 6.1 3.5.7 2.7-.9 5.4-3.5 6.1l-18.3 4.9M158.3 66.8l23.1-6.2c2.7-.7 5.4.9 6.1 3.5.7 2.7-.9 5.4-3.5 6.1l-23.1 6.2M150.9 58.4l26-7c2.7-.7 5.4.9 6.1 3.5.7 2.7-.9 5.4-3.5 6.1l-21.3 5.7"></path>
338
+ <path fill="#a9ddf3" d="M178.8 74.7l2.2-.6c1.1-.3 2.2.3 2.4 1.4.3 1.1-.3 2.2-1.4 2.4l-2.2.6-1-3.8zM180.1 64l2.2-.6c1.1-.3 2.2.3 2.4 1.4.3 1.1-.3 2.2-1.4 2.4l-2.2.6-1-3.8zM175.5 54.9l2.2-.6c1.1-.3 2.2.3 2.4 1.4.3 1.1-.3 2.2-1.4 2.4l-2.2.6-1-3.8zM152.1 49.4l2.2-.6c1.1-.3 2.2.3 2.4 1.4.3 1.1-.3 2.2-1.4 2.4l-2.2.6-1-3.8z"></path>
339
+ <path fill="#fff" stroke="#3a5e77" stroke-linecap="round" stroke-linejoin="round" stroke-width="2.5" d="M123.5 96.8c-41.4 14.9-84.1 30.7-108.2 35.5L1.2 80c33.5-9.9 71.9-16.5 111.9-21.8"></path>
340
+ <path fill="#fff" stroke="#3a5e77" stroke-linecap="round" stroke-linejoin="round" stroke-width="2.5" d="M108.5 59.4c7.7-5.3 14.3-8.4 22.8-13.2-2.4 5.3-4.7 10.3-6.7 15.1 4.3.3 8.4.7 12.3 1.3-4.2 5-8.1 9.6-11.5 13.9 3.1 1.1 6 2.4 8.7 3.8-1.4 2.9-2.7 5.8-3.9 8.5 2.5 3.5 4.6 7.2 6.3 11-4.9-.8-9-.7-16.2-2.7M94.5 102.8c-.6 4-3.8 8.9-9.4 14.7-2.6-1.8-5-3.7-7.2-5.7-2.5 4.1-6.6 8.8-12.2 14-1.9-2.2-3.4-4.5-4.5-6.9-4.4 3.3-9.5 6.9-15.4 10.8-.2-3.4.1-7.1 1.1-10.9M97.5 62.9c-1.7-2.4-5.9-4.1-12.4-5.2-.9 2.2-1.8 4.3-2.5 6.5-3.8-1.8-9.4-3.1-17-3.8.5 2.3 1.2 4.5 1.9 6.8-5-.6-11.2-.9-18.4-1 2 2.9.9 3.5 3.9 6.2"></path>
341
+ </g>
342
+
343
+ <g class="armR" data-svg-origin="385.5 47.03531265258789" transform="matrix(-0.25881,-0.96592,0.96592,-0.25881,346.84211864830615,651.5733533938651)" style="transform-origin: 0px 0px 0px;">
344
+ <path fill="#ddf1fa" stroke="#3a5e77" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="2.5" d="M265.4 97.3l10.4-38.6-38.9-10.5-20 36.1z"></path>
345
+ <path fill="#ddf1fa" stroke="#3a5e77" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="2.5" d="M252.4 52.4L233 47.2c-2.7-.7-5.4.9-6.1 3.5-.7 2.7.9 5.4 3.5 6.1l10.3 2.8M226 76.4l-19.4-5.2c-2.7-.7-5.4.9-6.1 3.5-.7 2.7.9 5.4 3.5 6.1l18.3 4.9M228.4 66.7l-23.1-6.2c-2.7-.7-5.4.9-6.1 3.5-.7 2.7.9 5.4 3.5 6.1l23.1 6.2M235.8 58.3l-26-7c-2.7-.7-5.4.9-6.1 3.5-.7 2.7.9 5.4 3.5 6.1l21.3 5.7"></path>
346
+ <path fill="#a9ddf3" d="M207.9 74.7l-2.2-.6c-1.1-.3-2.2.3-2.4 1.4-.3 1.1.3 2.2 1.4 2.4l2.2.6 1-3.8zM206.7 64l-2.2-.6c-1.1-.3-2.2.3-2.4 1.4-.3 1.1.3 2.2 1.4 2.4l2.2.6 1-3.8zM211.2 54.8l-2.2-.6c-1.1-.3-2.2.3-2.4 1.4-.3 1.1.3 2.2 1.4 2.4l2.2.6 1-3.8zM234.6 49.4l-2.2-.6c-1.1-.3-2.2.3-2.4 1.4-.3 1.1.3 2.2 1.4 2.4l2.2.6 1-3.8z"></path>
347
+ <path fill="#fff" stroke="#3a5e77" stroke-linecap="round" stroke-linejoin="round" stroke-width="2.5" d="M263.3 96.7c41.4 14.9 84.1 30.7 108.2 35.5l14-52.3C352 70 313.6 63.5 273.6 58.1"></path>
348
+ <path fill="#fff" stroke="#3a5e77" stroke-linecap="round" stroke-linejoin="round" stroke-width="2.5" d="M278.2 59.3l-18.6-10 2.5 11.9-10.7 6.5 9.9 8.7-13.9 6.4 9.1 5.9-13.2 9.2 23.1-.9M284.5 100.1c-.4 4 1.8 8.9 6.7 14.8 3.5-1.8 6.7-3.6 9.7-5.5 1.8 4.2 5.1 8.9 10.1 14.1 2.7-2.1 5.1-4.4 7.1-6.8 4.1 3.4 9 7 14.7 11 1.2-3.4 1.8-7 1.7-10.9M314 66.7s5.4-5.7 12.6-7.4c1.7 2.9 3.3 5.7 4.9 8.6 3.8-2.5 9.8-4.4 18.2-5.7.1 3.1.1 6.1 0 9.2 5.5-1 12.5-1.6 20.8-1.9-1.4 3.9-2.5 8.4-2.5 8.4"></path>
349
+ </g>
350
+ </g>
351
+ </svg>
352
+ </div>
353
+ </div>
354
+ <h3 style="text-align:center;">{% if session['id'] %} <b>{{ session['name'] }}</b> {% else %} <a href="/login"><i class="uil uil-compass"></i> <b>Login</b></a> {% endif %} </h3>
355
+ </div>
356
+ <script>
357
+ const profile = document.querySelector('.profile');
358
+ const floatingDiv = document.querySelector('.floating-div');
359
+
360
+ profile.addEventListener('click', function() {
361
+ floatingDiv.style.display = 'block';
362
+ });
363
+
364
+ floatingDiv.addEventListener('mouseover', function() {
365
+ floatingDiv.style.display = 'block';
366
+ });
367
+
368
+ floatingDiv.addEventListener('mouseout', function() {
369
+ floatingDiv.style.display = 'none';
370
+ });
371
+ </script>
372
+ </div>
373
+ </div>
374
+ <i class="uil uil-apps nav-menu-btn"></i>
375
+ </div>
376
+ </header>
377
+
378
+ <br><br><br><br>
379
+ <div class="flexbox">
380
+
381
+ <div class="flexbox1">
382
+ <div class="forminfo-admin">
383
+ <div class="flex-div">
384
+ <div class="svgContainer">
385
+ <div>
386
+ <svg class="mySVG" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 200 200">
387
+ <defs>
388
+ <circle id="armMaskPath" cx="100" cy="100" r="100"></circle>
389
+ </defs>
390
+
391
+ <clipPath id="armMask">
392
+ <use xlink:href="#armMaskPath" overflow="visible"></use>
393
+ </clipPath>
394
+
395
+ <circle cx="100" cy="100" r="100" fill="#ffce47"></circle>
396
+
397
+ <g class="body">
398
+ <path fill="#FFFFFF" d="M193.3,135.9c-5.8-8.4-15.5-13.9-26.5-13.9H151V72c0-27.6-22.4-50-50-50S51,44.4,51,72v50H32.1 c-10.6,0-20,5.1-25.8,13l0,78h187L193.3,135.9z"></path>
399
+ <path fill="none" stroke="#3A5E77" stroke-width="2.5" stroke-linecap="round" stroke-linejoinn="round" d="M193.3,135.9 c-5.8-8.4-15.5-13.9-26.5-13.9H151V72c0-27.6-22.4-50-50-50S51,44.4,51,72v50H32.1c-10.6,0-20,5.1-25.8,13"></path>
400
+ <path fill="#DDF1FA" d="M100,156.4c-22.9,0-43,11.1-54.1,27.7c15.6,10,34.2,15.9,54.1,15.9s38.5-5.8,54.1-15.9 C143,167.5,122.9,156.4,100,156.4z"></path>
401
+ </g>
402
+
403
+ <g class="earL">
404
+ <g class="outerEar" fill="#ddf1fa" stroke="#3a5e77" stroke-width="2.5" data-svg-origin="35.5 71.5" transform="matrix(1,0,0,1,0,0)">
405
+ <circle cx="47" cy="83" r="11.5"></circle>
406
+ <path d="M46.3 78.9c-2.3 0-4.1 1.9-4.1 4.1 0 2.3 1.9 4.1 4.1 4.1" stroke-linecap="round" stroke-linejoin="round"></path>
407
+ </g>
408
+
409
+ <g class="earHair" data-svg-origin="42.79999923706055 62.79999923706055" transform="matrix(1,0,0,1,0,0)">
410
+ <rect x="51" y="64" fill="#FFFFFF" width="15" height="35"></rect>
411
+ <path d="M53.4 62.8C48.5 67.4 45 72.2 42.8 77c3.4-.1 6.8-.1 10.1.1-4 3.7-6.8 7.6-8.2 11.6 2.1 0 4.2 0 6.3.2-2.6 4.1-3.8 8.3-3.7 12.5 1.2-.7 3.4-1.4 5.2-1.9" fill="#fff" stroke="#3a5e77" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"></path>
412
+ </g>
413
+ </g>
414
+
415
+ <g class="earR">
416
+ <g class="outerEar" fill="#ddf1fa" stroke="#3a5e77" stroke-width="2.5" data-svg-origin="143.5 71.5" transform="matrix(1,0,0,1,0,0)">
417
+ <circle cx="155" cy="83" r="11.5"></circle>
418
+ <path d="M155.7 78.9c2.3 0 4.1 1.9 4.1 4.1 0 2.3-1.9 4.1-4.1 4.1" stroke-linecap="round" stroke-linejoin="round"></path>
419
+ </g>
420
+ <g class="earHair" data-svg-origin="131 62.79999923706055" transform="matrix(1,0,0,1,0,0)">
421
+ <rect x="131" y="64" fill="#FFFFFF" width="20" height="35"></rect>
422
+ <path d="M148.6 62.8c4.9 4.6 8.4 9.4 10.6 14.2-3.4-.1-6.8-.1-10.1.1 4 3.7 6.8 7.6 8.2 11.6-2.1 0-4.2 0-6.3.2 2.6 4.1 3.8 8.3 3.7 12.5-1.2-.7-3.4-1.4-5.2-1.9" fill="#fff" stroke="#3a5e77" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"></path>
423
+ </g>
424
+ </g>
425
+ <path class="chin" d="M84.1 121.6c2.7 2.9 6.1 5.4 9.8 7.5l.9-4.5c2.9 2.5 6.3 4.8 10.2 6.5 0-1.9-.1-3.9-.2-5.8 3 1.2 6.2 2 9.7 2.5-.3-2.1-.7-4.1-1.2-6.1" fill="none" stroke="#3a5e77" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" data-svg-origin="84.0999984741211 121.5999984741211" transform="matrix(1,0,0,1,0,0)"></path>
426
+ <path class="face" fill="#DDF1FA" d="M134.5,46v35.5c0,21.815-15.446,39.5-34.5,39.5s-34.5-17.685-34.5-39.5V46" data-svg-origin="100 46" transform="matrix(1,0,0,1,0,0)" style="transform-origin: 0px 0px 0px;"></path>
427
+ <path class="hair" fill="#FFFFFF" stroke="#3A5E77" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" d="M81.457,27.929 c1.755-4.084,5.51-8.262,11.253-11.77c0.979,2.565,1.883,5.14,2.712,7.723c3.162-4.265,8.626-8.27,16.272-11.235 c-0.737,3.293-1.588,6.573-2.554,9.837c4.857-2.116,11.049-3.64,18.428-4.156c-2.403,3.23-5.021,6.391-7.852,9.474" data-svg-origin="104.51250076293945 27.929000854492188" transform="matrix(1,0,0,1,0,0)" style="transform-origin: 0px 0px 0px;"></path>
428
+
429
+ <g class="eyebrow" data-svg-origin="100.85150527954102 43.33300018310547" transform="matrix(1,0,0,1,0,0)" style="transform-origin: 0px 0px 0px;">
430
+ <path fill="#FFFFFF" d="M138.142,55.064c-4.93,1.259-9.874,2.118-14.787,2.599c-0.336,3.341-0.776,6.689-1.322,10.037 c-4.569-1.465-8.909-3.222-12.996-5.226c-0.98,3.075-2.07,6.137-3.267,9.179c-5.514-3.067-10.559-6.545-15.097-10.329 c-1.806,2.889-3.745,5.73-5.816,8.515c-7.916-4.124-15.053-9.114-21.296-14.738l1.107-11.768h73.475V55.064z"></path>
431
+ <path fill="#FFFFFF" stroke="#3A5E77" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" d="M63.56,55.102 c6.243,5.624,13.38,10.614,21.296,14.738c2.071-2.785,4.01-5.626,5.816-8.515c4.537,3.785,9.583,7.263,15.097,10.329 c1.197-3.043,2.287-6.104,3.267-9.179c4.087,2.004,8.427,3.761,12.996,5.226c0.545-3.348,0.986-6.696,1.322-10.037 c4.913-0.481,9.857-1.34,14.787-2.599"></path>
432
+ </g>
433
+
434
+ <g class="eyeL" data-svg-origin="82 75" transform="matrix(1,0,0,1,0,0)">
435
+ <circle cx="85.5" cy="78.5" r="3.5" fill="#3a5e77"></circle>
436
+ <circle cx="84" cy="76" r="1" fill="#fff"></circle>
437
+ </g>
438
+
439
+ <g class="eyeR" data-svg-origin="111 75" transform="matrix(1,0,0,1,0,0)">
440
+ <circle cx="114.5" cy="78.5" r="3.5" fill="#3a5e77"></circle>
441
+ <circle cx="113" cy="76" r="1" fill="#fff"></circle>
442
+ </g>
443
+
444
+ <g class="mouth" data-svg-origin="100.2220687866211 104" transform="matrix(1,0,0,1,0,0)" style="transform-origin: 0px 0px 0px;">
445
+ <path class="mouthBG" fill="#617E92" d="M100.2,101c-0.4,0-1.4,0-1.8,0c-2.7-0.3-5.3-1.1-8-2.5c-0.7-0.3-0.9-1.2-0.6-1.8 c0.2-0.5,0.7-0.7,1.2-0.7c0.2,0,0.5,0.1,0.6,0.2c3,1.5,5.8,2.3,8.6,2.3s5.7-0.7,8.6-2.3c0.2-0.1,0.4-0.2,0.6-0.2 c0.5,0,1,0.3,1.2,0.7c0.4,0.7,0.1,1.5-0.6,1.9c-2.6,1.4-5.3,2.2-7.9,2.5C101.7,101,100.5,101,100.2,101z"></path>
446
+ <path style="display: none;" class="mouthSmallBG" fill="#617E92" d="M100.2,101c-0.4,0-1.4,0-1.8,0c-2.7-0.3-5.3-1.1-8-2.5c-0.7-0.3-0.9-1.2-0.6-1.8 c0.2-0.5,0.7-0.7,1.2-0.7c0.2,0,0.5,0.1,0.6,0.2c3,1.5,5.8,2.3,8.6,2.3s5.7-0.7,8.6-2.3c0.2-0.1,0.4-0.2,0.6-0.2 c0.5,0,1,0.3,1.2,0.7c0.4,0.7,0.1,1.5-0.6,1.9c-2.6,1.4-5.3,2.2-7.9,2.5C101.7,101,100.5,101,100.2,101z"></path>
447
+ <path style="display: none;" class="mouthMediumBG" d="M95,104.2c-4.5,0-8.2-3.7-8.2-8.2v-2c0-1.2,1-2.2,2.2-2.2h22c1.2,0,2.2,1,2.2,2.2v2 c0,4.5-3.7,8.2-8.2,8.2H95z"></path>
448
+ <path style="display: none;" class="mouthLargeBG" d="M100 110.2c-9 0-16.2-7.3-16.2-16.2 0-2.3 1.9-4.2 4.2-4.2h24c2.3 0 4.2 1.9 4.2 4.2 0 9-7.2 16.2-16.2 16.2z" fill="#617e92" stroke="#3a5e77" stroke-linejoin="round" stroke-width="2.5"></path>
449
+
450
+ <defs>
451
+ <path id="mouthMaskPath" d="M100.2,101c-0.4,0-1.4,0-1.8,0c-2.7-0.3-5.3-1.1-8-2.5c-0.7-0.3-0.9-1.2-0.6-1.8 c0.2-0.5,0.7-0.7,1.2-0.7c0.2,0,0.5,0.1,0.6,0.2c3,1.5,5.8,2.3,8.6,2.3s5.7-0.7,8.6-2.3c0.2-0.1,0.4-0.2,0.6-0.2 c0.5,0,1,0.3,1.2,0.7c0.4,0.7,0.1,1.5-0.6,1.9c-2.6,1.4-5.3,2.2-7.9,2.5C101.7,101,100.5,101,100.2,101z"></path>
452
+ </defs>
453
+
454
+ <clipPath id="mouthMask">
455
+ <use xlink:href="#mouthMaskPath" overflow="visible"></use>
456
+ </clipPath>
457
+
458
+ <g clip-path="url(#mouthMask)">
459
+ <g class="tongue">
460
+ <circle cx="100" cy="107" r="8" fill="#cc4a6c"></circle>
461
+ <ellipse class="tongueHighlight" cx="100" cy="100.5" rx="3" ry="1.5" opacity=".1" fill="#fff"></ellipse>
462
+ </g>
463
+ </g>
464
+
465
+ <path clip-path="url(#mouthMask)" class="tooth" style="fill:#FFFFFF;" d="M106,97h-4c-1.1,0-2-0.9-2-2v-2h8v2C108,96.1,107.1,97,106,97z"></path>
466
+ <path class="mouthOutline" fill="none" stroke="#3A5E77" stroke-width="2.5" stroke-linejoin="round" d="M100.2,101c-0.4,0-1.4,0-1.8,0c-2.7-0.3-5.3-1.1-8-2.5c-0.7-0.3-0.9-1.2-0.6-1.8 c0.2-0.5,0.7-0.7,1.2-0.7c0.2,0,0.5,0.1,0.6,0.2c3,1.5,5.8,2.3,8.6,2.3s5.7-0.7,8.6-2.3c0.2-0.1,0.4-0.2,0.6-0.2 c0.5,0,1,0.3,1.2,0.7c0.4,0.7,0.1,1.5-0.6,1.9c-2.6,1.4-5.3,2.2-7.9,2.5C101.7,101,100.5,101,100.2,101z"></path>
467
+ </g>
468
+
469
+ <path class="nose" d="M97.7 79.9h4.7c1.9 0 3 2.2 1.9 3.7l-2.3 3.3c-.9 1.3-2.9 1.3-3.8 0l-2.3-3.3c-1.3-1.6-.2-3.7 1.8-3.7z" fill="#3a5e77" data-svg-origin="100.0374870300293 83.88750076293945" transform="matrix(0.99801,0.06294,-0.06294,0.99801,5.478269809651323,-6.130086597558147)" style="transform-origin: 0px 0px 0px;"></path>
470
+
471
+ <g class="arms" clip-path="url(#armMask)">
472
+ <g class="armL" data-svg-origin="1.2000000476837158 46.20000076293945" transform="matrix(-0.25881,0.96592,-0.96592,-0.25881,-46.863643174353925,276.9983298065334)" style="transform-origin: 0px 0px 0px;">
473
+ <path fill="#ddf1fa" stroke="#3a5e77" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="2.5" d="M121.3 97.4L111 58.7l38.8-10.4 20 36.1z"></path>
474
+ <path fill="#ddf1fa" stroke="#3a5e77" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="2.5" d="M134.4 52.5l19.3-5.2c2.7-.7 5.4.9 6.1 3.5.7 2.7-.9 5.4-3.5 6.1L146 59.7M160.8 76.5l19.4-5.2c2.7-.7 5.4.9 6.1 3.5.7 2.7-.9 5.4-3.5 6.1l-18.3 4.9M158.3 66.8l23.1-6.2c2.7-.7 5.4.9 6.1 3.5.7 2.7-.9 5.4-3.5 6.1l-23.1 6.2M150.9 58.4l26-7c2.7-.7 5.4.9 6.1 3.5.7 2.7-.9 5.4-3.5 6.1l-21.3 5.7"></path>
475
+ <path fill="#a9ddf3" d="M178.8 74.7l2.2-.6c1.1-.3 2.2.3 2.4 1.4.3 1.1-.3 2.2-1.4 2.4l-2.2.6-1-3.8zM180.1 64l2.2-.6c1.1-.3 2.2.3 2.4 1.4.3 1.1-.3 2.2-1.4 2.4l-2.2.6-1-3.8zM175.5 54.9l2.2-.6c1.1-.3 2.2.3 2.4 1.4.3 1.1-.3 2.2-1.4 2.4l-2.2.6-1-3.8zM152.1 49.4l2.2-.6c1.1-.3 2.2.3 2.4 1.4.3 1.1-.3 2.2-1.4 2.4l-2.2.6-1-3.8z"></path>
476
+ <path fill="#fff" stroke="#3a5e77" stroke-linecap="round" stroke-linejoin="round" stroke-width="2.5" d="M123.5 96.8c-41.4 14.9-84.1 30.7-108.2 35.5L1.2 80c33.5-9.9 71.9-16.5 111.9-21.8"></path>
477
+ <path fill="#fff" stroke="#3a5e77" stroke-linecap="round" stroke-linejoin="round" stroke-width="2.5" d="M108.5 59.4c7.7-5.3 14.3-8.4 22.8-13.2-2.4 5.3-4.7 10.3-6.7 15.1 4.3.3 8.4.7 12.3 1.3-4.2 5-8.1 9.6-11.5 13.9 3.1 1.1 6 2.4 8.7 3.8-1.4 2.9-2.7 5.8-3.9 8.5 2.5 3.5 4.6 7.2 6.3 11-4.9-.8-9-.7-16.2-2.7M94.5 102.8c-.6 4-3.8 8.9-9.4 14.7-2.6-1.8-5-3.7-7.2-5.7-2.5 4.1-6.6 8.8-12.2 14-1.9-2.2-3.4-4.5-4.5-6.9-4.4 3.3-9.5 6.9-15.4 10.8-.2-3.4.1-7.1 1.1-10.9M97.5 62.9c-1.7-2.4-5.9-4.1-12.4-5.2-.9 2.2-1.8 4.3-2.5 6.5-3.8-1.8-9.4-3.1-17-3.8.5 2.3 1.2 4.5 1.9 6.8-5-.6-11.2-.9-18.4-1 2 2.9.9 3.5 3.9 6.2"></path>
478
+ </g>
479
+
480
+ <g class="armR" data-svg-origin="385.5 47.03531265258789" transform="matrix(-0.25881,-0.96592,0.96592,-0.25881,346.84211864830615,651.5733533938651)" style="transform-origin: 0px 0px 0px;">
481
+ <path fill="#ddf1fa" stroke="#3a5e77" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="2.5" d="M265.4 97.3l10.4-38.6-38.9-10.5-20 36.1z"></path>
482
+ <path fill="#ddf1fa" stroke="#3a5e77" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="2.5" d="M252.4 52.4L233 47.2c-2.7-.7-5.4.9-6.1 3.5-.7 2.7.9 5.4 3.5 6.1l10.3 2.8M226 76.4l-19.4-5.2c-2.7-.7-5.4.9-6.1 3.5-.7 2.7.9 5.4 3.5 6.1l18.3 4.9M228.4 66.7l-23.1-6.2c-2.7-.7-5.4.9-6.1 3.5-.7 2.7.9 5.4 3.5 6.1l23.1 6.2M235.8 58.3l-26-7c-2.7-.7-5.4.9-6.1 3.5-.7 2.7.9 5.4 3.5 6.1l21.3 5.7"></path>
483
+ <path fill="#a9ddf3" d="M207.9 74.7l-2.2-.6c-1.1-.3-2.2.3-2.4 1.4-.3 1.1.3 2.2 1.4 2.4l2.2.6 1-3.8zM206.7 64l-2.2-.6c-1.1-.3-2.2.3-2.4 1.4-.3 1.1.3 2.2 1.4 2.4l2.2.6 1-3.8zM211.2 54.8l-2.2-.6c-1.1-.3-2.2.3-2.4 1.4-.3 1.1.3 2.2 1.4 2.4l2.2.6 1-3.8zM234.6 49.4l-2.2-.6c-1.1-.3-2.2.3-2.4 1.4-.3 1.1.3 2.2 1.4 2.4l2.2.6 1-3.8z"></path>
484
+ <path fill="#fff" stroke="#3a5e77" stroke-linecap="round" stroke-linejoin="round" stroke-width="2.5" d="M263.3 96.7c41.4 14.9 84.1 30.7 108.2 35.5l14-52.3C352 70 313.6 63.5 273.6 58.1"></path>
485
+ <path fill="#fff" stroke="#3a5e77" stroke-linecap="round" stroke-linejoin="round" stroke-width="2.5" d="M278.2 59.3l-18.6-10 2.5 11.9-10.7 6.5 9.9 8.7-13.9 6.4 9.1 5.9-13.2 9.2 23.1-.9M284.5 100.1c-.4 4 1.8 8.9 6.7 14.8 3.5-1.8 6.7-3.6 9.7-5.5 1.8 4.2 5.1 8.9 10.1 14.1 2.7-2.1 5.1-4.4 7.1-6.8 4.1 3.4 9 7 14.7 11 1.2-3.4 1.8-7 1.7-10.9M314 66.7s5.4-5.7 12.6-7.4c1.7 2.9 3.3 5.7 4.9 8.6 3.8-2.5 9.8-4.4 18.2-5.7.1 3.1.1 6.1 0 9.2 5.5-1 12.5-1.6 20.8-1.9-1.4 3.9-2.5 8.4-2.5 8.4"></path>
486
+ </g>
487
+ </g>
488
+ </svg>
489
+ </div>
490
+ </div>
491
+ <h3 style="text-align:center;">{% if session['id'] %} <b>{{ session['name'] }}</b> {% else %} <a href="/login"><i class="uil uil-compass"></i> <b>Login</b></a> {% endif %} </h3>
492
+ <br>
493
+ <hr style="height:2px;border-width:0;color:gray;background-color:black;width:100%;">
494
+ <button class="but1" id="myButton"><img src="/static/check-mark.png" alt="check" width="25px;">Overview</button><br>
495
+ <button class="but2" id="myButton1"><img src="/static/check-mark.png" alt="check" width="25px;">Manage Assessments</button><br>
496
+ <button class="but3" id="myButton2"><img src="/static/check-mark.png" alt="check" width="25px;">Result Analysis</button><br>
497
+ <button class="but4" id="myButton3"><img src="/static/check-mark.png" alt="check" width="25px;">Feedback</button><br>
498
+ <a href="/custom"><button class="but4" onclick="" style="background-color: #ff9900;"> <center>Create Assessment &nbsp;<span class="arrow"><i class="uil uil-arrow-right"></i></span></center></button></a><br>
499
+ <!-- <button class="accordion"><a href="#previous-data" id="jump-link5" style="text-decoration: none !important;"><img src="/static/check-mark.png" alt="check" width="25px;">Previous Assessments</a></button>-->
500
+ <!-- <div class="panel">-->
501
+ <!-- <p>The assessments section allows you to manage assessments for your students.</p>-->
502
+ <!-- </div>-->
503
+
504
+ <!-- <button class="accordion"><a href="#operations" id="jump-link6" style="text-decoration: none !important;"><img src="/static/check-mark.png" alt="check" width="25px;"> Create survey!</a></button>-->
505
+ <!-- <div class="panel">-->
506
+ <!-- <p>The assessments section allows you to create and edit assessments for your students. You can create custom assessments, add or remove questions, and adjust the sentiment analysis parameters.</p>-->
507
+ <!-- </div>-->
508
+
509
+ <!-- <button class="accordion"><a href="#operations" id="jump-link7" style="text-decoration: none !important;"><img src="/static/check-mark.png" alt="check" width="25px;"> Check Results!</a></button>-->
510
+ <!-- <div class="panel">-->
511
+ <!-- <p>This section provides an overview of all the assessments that have been completed by your students. You can view the average happiness index score, identify trends, and track progress over time.</p>-->
512
+ <!-- </div>-->
513
+
514
+ </div>
515
+ </div>
516
+ </div>
517
+
518
+
519
+ <div id="overview" class="flexbox2" style="display:block;">
520
+ <hr style="height:2px;border-width:0;color:gray;background-color:lightgray;width:99%;">
521
+ <div>
522
+ <p style="font-size:2em; font-weight:700;">{% if session['name'] %} Welcome {{ session['name'] }}, {% endif %}</p>
523
+ <span>As an administrator, you have access to a range of features that will help you manage and support your students.</span>
524
+ </div>
525
+
526
+ <div class="flex-container">
527
+ <div class="flex-items">
528
+ <p><b>Total Students</b></p>
529
+ <span style="font-size:3em; font-weight: 700;">{{ ts }}</span>
530
+ </div>
531
+ <div class="flex-items">
532
+ <p><b>Happiness Index</b></p>
533
+ <span style="font-size:3em; font-weight: 700;">{{ ahi }}</span>
534
+ </div>
535
+ <div class="flex-items">
536
+ <p><b>Total Assessments Submitted</b></p>
537
+ <span style="font-size:2.5em; font-weight: 700;">{{ tas }} <span style="font-size:14px;"></span></span>
538
+ </div>
539
+ </div>
540
+ <br>
541
+ <button class="accordion"><a href="#previous-data" id="jump-link5" style="text-decoration: none !important;"><b>Other Assessments</b></a></button>
542
+ <div class="panel">
543
+ <div class="flex-item1-previous">
544
+ <div id="assessment-table" style="padding:30px;">
545
+ <div class="card mb-3 my-div">
546
+ <div class="card-header">
547
+ <i class="fa fa-table"></i>Assessments
548
+ </div>
549
+ <div class="card-body">
550
+ <div class="table-responsive">
551
+ <table class="table table-bordered" id="dataTablePre" width="100%" cellspacing="0">
552
+ <thead>
553
+ <tr>
554
+ <th>ID</th>
555
+ <th>Name</th>
556
+ <th>Description</th>
557
+ <th>Overall Score</th>
558
+ </tr>
559
+ </thead>
560
+ <tfoot>
561
+ <tr>
562
+ <th>ID</th>
563
+ <th>Name</th>
564
+ <th>Description</th>
565
+ <th>Overall Score</th>
566
+ </tr>
567
+ </tfoot>
568
+ <tbody> {% for row in assess %}
569
+ <tr>
570
+ <td>{{ row.assessId }}</td>
571
+ <td>{{ row.name }}</td>
572
+ <td>{{ row.description[0:71] }}...</td>
573
+ <td><b>{{ row.average }}</b></td>
574
+ </tr> {% endfor %}
575
+ </tbody>
576
+ </table>
577
+ </div>
578
+ </div>
579
+ <div class="card-footer small text-muted">Updated yesterday at 11:59 PM</div>
580
+ </div>
581
+ </div>
582
+ <a href="/custom"><button class="create" style="background-color:#ff9900">New Assessment &nbsp; &nbsp; <span class="arrow"><i class="uil uil-arrow-right"></i></span></button></a>
583
+ </div>
584
+ </div>
585
+ <hr style="height:2px;border-width:0;color:gray;background-color:lightgray;width:99%;">
586
+ </div>
587
+
588
+ <!-- <div id="operations">-->
589
+ <!-- <div class="flex-container-result">-->
590
+ <!-- <div class="flex-item1-result">-->
591
+ <!-- <h1><b>Create Survey!</b></h1><br>-->
592
+ <!--&lt;!&ndash; <span>The assessments section allows you to create, edit, and manage assessments for your students. You can create custom assessments, add or remove questions, and adjust the sentiment analysis parameters.</span><br><br>&ndash;&gt;-->
593
+ <!-- <a href="/custom"><button class="create">Create &nbsp; &nbsp; <span class="arrow"><i class="uil uil-arrow-right"></i></span></button></a>-->
594
+ <!-- </div>-->
595
+ <!-- <div class="flex-item2-result">-->
596
+ <!-- <h1><b>Check Results!</b></h1><br>-->
597
+ <!--&lt;!&ndash; <span>This section provides an overview of all the assessments that have been completed by your students. You can view the average happiness index score, identify trends, and track progress over time.</span><br><br>&ndash;&gt;-->
598
+ <!-- <a href="#response-table" id="response" onclick="getdata()"><button class="create">Check &nbsp; &nbsp; <span class="arrow"><i class="uil uil-arrow-right"></i></span></button></a>-->
599
+ <!-- </div>-->
600
+ <!-- </div>-->
601
+ <!-- &lt;!&ndash;<input type="button" value="Check Results!" onclick="getdata()"></input>&ndash;&gt;-->
602
+ <!-- </div>-->
603
+
604
+ <div id="prev-assess" class="flexbox2" style="display:none;">
605
+ <hr style="height:2px;border-width:0;color:gray;background-color:lightgray;width:99%;">
606
+ <div style="display:flex; flex-direction:row; justify-content:space-between;">
607
+ <div>
608
+ <h3><b>Manage Assessments</b></h3>
609
+ <p>The assessments section allows you to manage assessments for your students.</p>
610
+ </div>
611
+ <div style="text-align:left;">
612
+ <div id="add" style="display:block; text-align: center;">
613
+ <a href="/custom"><button class="add-btn"> + </button></a>
614
+ </div>
615
+ </div>
616
+ </div>
617
+ <div id="previous-data">
618
+ <div class="flex-item1-previous">
619
+ <div id="assessment-table">
620
+ <div class="card mb-3 my-div">
621
+ <div class="card-header">
622
+ <i class="fa fa-table"></i>Assessments
623
+ </div>
624
+ <div class="card-body">
625
+ <div class="table-responsive">
626
+ <table class="table table-bordered" id="dataTablePre1" width="100%" cellspacing="0">
627
+ <thead>
628
+ <tr>
629
+ <th>ID</th>
630
+ <th>Name</th>
631
+ <th>Description</th>
632
+ <th>Questions</th>
633
+ <th>Actions</th>
634
+ </tr>
635
+ </thead>
636
+ <tfoot>
637
+ <tr>
638
+ <th>ID</th>
639
+ <th>Name</th>
640
+ <th>Description</th>
641
+ <th>Questions</th>
642
+ <th>Actions</th>
643
+ </tr>
644
+ </tfoot>
645
+ <tbody> {% for row in assess %}
646
+ <tr>
647
+ <td>{{ row.assessId }}</td>
648
+ <td>{{ row.name }}</td>
649
+ <td>{{ row.description[0:71] }}...</td>
650
+ <td><a href="#questions-table" id="question"><button class="btn btn-primary" onclick="showQuestions{{ row.assessId }}()"><img src="/static/eye.png" alt="delete" width="20px;"> See Questions </button></a>
651
+ <script>
652
+ function showQuestions{{ row.assessId }}() {
653
+ {% set questions_list = row.Questions[2:-2].split('", "') %}
654
+ document.getElementById('questions').innerHTML = "<div id='assessment-table' style='padding:30px;'><div class='card mb-3 my-div'><div class='card-header'><i class='fa fa-table'></i>Questions</div><div class='card-body'><div class='table-responsive'><table class='table table-bordered' id='dataTablePre2' width='100%' cellspacing='1'>{% for i in range(1, questions_list|count+1) %}<tr><td><b>Question {{ i }}:</b></td><td>{{ questions_list[i-1] }}</td></tr>{% endfor %}</table></div></div><div class='card-footer small text-muted'>Updated yesterday at 11:59 PM</div></div></div>";
655
+ }
656
+ </script>
657
+ </td>
658
+ <td>
659
+ <button id="myBtn{{row.assessId}}" class="btn btn-primary" style="background-color:red; border:none;">
660
+ <img src="/static/bin.png" alt="delete" width="20px;"> Delete </button>
661
+ <div id="myModal{{row.assessId}}" class="modal">
662
+ <div class="modal-content">
663
+ <div class="modal-header">
664
+ <span class="close">&times;</span>
665
+ <h2>Warning!</h2>
666
+ </div>
667
+ <div class="modal-body">
668
+ <p>{{ row.name }} will be permanently deleted.</p>
669
+ <p>There is no way to recover the assessment and the corresponding progress.</p>
670
+ <form method="POST">
671
+ <input name="delete" id="delete" value="{{row.assessId}}" type="hidden">
672
+ <button class="btn btn-primary" style="background-color:red; border:none;">
673
+ <img src="/static/bin.png" alt="delete" width="20px;"> Okay! </button>
674
+ </form>
675
+ <script>
676
+ // Get the modal
677
+ var modal = document.getElementById("myModal{{row.assessId}}");
678
+
679
+ // Get the button that opens the modal
680
+ var btn = document.getElementById("myBtn{{row.assessId}}");
681
+
682
+ // Get the <span> element that closes the modal
683
+ var span = document.getElementsByClassName("close")[0];
684
+
685
+ // When the user clicks the button, open the modal
686
+ btn.onclick = function() {
687
+ modal.style.display = "block";
688
+ }
689
+
690
+ // When the user clicks on <span> (x), close the modal
691
+ span.onclick = function() {
692
+ modal.style.display = "none";
693
+ }
694
+
695
+ // When the user clicks anywhere outside of the modal, close it
696
+ window.onclick = function(event) {
697
+ if (event.target == modal) {
698
+ modal.style.display = "none";
699
+ }
700
+ }
701
+ </script>
702
+ </div>
703
+ </div>
704
+ </div>
705
+
706
+ </td>
707
+ </tr> {% endfor %}
708
+ </tbody>
709
+ </table>
710
+ </div>
711
+ </div>
712
+ <div class="card-footer small text-muted">Updated yesterday at 11:59 PM</div>
713
+ </div>
714
+ </div>
715
+ </div>
716
+
717
+ <div class="flex-item2-previous" style="font-size:14px; text-align:center;">
718
+ <div style="width:100%; background-color:#f0f0f0; padding:6px;"><h4><b>Questions</b></h4></div>
719
+ <div id="questions-table" style="padding:10px; background-color: white; border-radius:15px;">
720
+ <div id="questions">Select a Assessment</div>
721
+ </div>
722
+ </div>
723
+
724
+ <hr style="height:2px;border-width:0;color:gray;background-color:lightgray;width:99%;">
725
+ </div>
726
+ </div>
727
+
728
+ <div id="results" class="flexbox2" style="display:none;">
729
+ <hr style="height:2px;border-width:0;color:gray;background-color:lightgray;width:99%;">
730
+ <div>
731
+ <h3><b>Result Analysis</b></h3>
732
+ <p>The Result section allows you to monitor students performance.</p>
733
+ </div>
734
+ <div id="response-table" style="padding:30px;">
735
+ <div class="card mb-3 my-div">
736
+ <div class="card-header">
737
+ <i class="fa fa-table"></i>Students Responses
738
+ </div>
739
+ <div class="card-body">
740
+ <div class="table-responsive">
741
+ <table class="table table-bordered" id="dataTable" width="100%" cellspacing="0">
742
+ <thead>
743
+ <tr>
744
+ <th>Id</th>
745
+ <th>Name</th>
746
+ <th>Email</th>
747
+ <th>Responses</th>
748
+ </tr>
749
+ </thead>
750
+ <tfoot>
751
+ <tr>
752
+ <th>Id</th>
753
+ <th>Name</th>
754
+ <th>Email</th>
755
+ <th>Responses</th>
756
+ </tr>
757
+ </tfoot>
758
+ <tbody> {% for row in result %}
759
+ <tr>
760
+ <td>{{ row.id }}</td>
761
+ <td>{{ row.name }}</td>
762
+ <td>{{ row.email }}</td>
763
+ <td>{% if row.isdone==1 %} <form method="POST">
764
+ <input name="resid" id="resid" value="{{row.id}}" type="hidden">
765
+ <select name="type" id="type"> {% if session['name'] %} {% for types in abc %} {% if types.id == row.id %} <option value="{{types.type}}"> {{types.name}} {% endif %} </option> {% endfor %} {% endif %} </select>
766
+ <button class="btn btn-primary" style="display:block; margin:0 auto; background-color:#00db21;">Check results</button>
767
+ </form> {% else %} <p>Pending...</p> {% endif %} </td>
768
+ </tr> {% endfor %}
769
+ </tbody>
770
+ </table>
771
+ </div>
772
+ </div>
773
+ <div class="card-footer small text-muted">Updated yesterday at 11:59 PM</div>
774
+ </div>
775
+ </div>
776
+ <hr style="height:2px;border-width:0;color:gray;background-color:lightgray;width:99%;">
777
+ </div>
778
+
779
+ <div id="feedback" class="flexbox2" style="display:none;">
780
+ <hr style="height:2px;border-width:0;color:gray;background-color:lightgray;width:99%;">
781
+ <div>
782
+ <h3><b>Students Feedbacks</b></h3>
783
+ <p>The Feedback section allows you to access students feedbacks on the assessments.</p>
784
+ </div>
785
+ <div id="response-table" style="padding:30px;">
786
+ <div class="card mb-3 my-div">
787
+ <div class="card-header">
788
+ <i class="fa fa-table"></i>Students Feedbacks
789
+ </div>
790
+ <div class="card-body">
791
+ <div class="table-responsive">
792
+ <table class="table table-bordered" id="dataTablePre3" width="100%" cellspacing="0">
793
+ <thead>
794
+ <tr>
795
+ <th>Sr. No.</th>
796
+ <th>Name</th>
797
+ <th>Email</th>
798
+ <th>Feedbacks</th>
799
+ </tr>
800
+ </thead>
801
+ <tfoot>
802
+ <tr>
803
+ <th>Sr. No.</th>
804
+ <th>Name</th>
805
+ <th>Email</th>
806
+ <th>Feedbacks</th>
807
+ </tr>
808
+ </tfoot>
809
+ <tbody> {% for row in feeds %}
810
+ <tr>
811
+ <td>{{ loop.index }}</td>
812
+ <td>{{ row.name }}</td>
813
+ <td>{{ row.email }}</td>
814
+ <td>{{ row.feedback }}</td>
815
+ </tr> {% endfor %}
816
+ </tbody>
817
+ </table>
818
+ </div>
819
+ </div>
820
+ <div class="card-footer small text-muted">Updated yesterday at 11:59 PM</div>
821
+ </div>
822
+ </div>
823
+ <hr style="height:2px;border-width:0;color:gray;background-color:lightgray;width:99%;">
824
+ </div>
825
+ </div>
826
+
827
+ <script>
828
+ var acc = document.getElementsByClassName("accordion");
829
+ var i;
830
+
831
+ for (i = 0; i < acc.length; i++) {
832
+ acc[i].addEventListener("click", function() {
833
+ this.classList.toggle("active");
834
+ var panel = this.nextElementSibling;
835
+ if (panel.style.maxHeight) {
836
+ panel.style.maxHeight = null;
837
+ } else {
838
+ panel.style.maxHeight = panel.scrollHeight + "px";
839
+ }
840
+ });
841
+ }
842
+
843
+ var jumpLink5 = document.getElementById("jump-link5");
844
+ jumpLink5.addEventListener("click", function(e) {
845
+ e.preventDefault();
846
+ var target = document.querySelector(this.getAttribute("href"));
847
+ var targetOffset = target.offsetTop;
848
+ window.scrollTo({top: targetOffset, behavior: "smooth"});
849
+ });
850
+ var jumpLink6 = document.getElementById("jump-link6");
851
+ jumpLink6.addEventListener("click", function(e) {
852
+ e.preventDefault();
853
+ var target = document.querySelector(this.getAttribute("href"));
854
+ var targetOffset = target.offsetTop;
855
+ window.scrollTo({top: targetOffset, behavior: "smooth"});
856
+ });
857
+ var jumpLink7 = document.getElementById("jump-link7");
858
+ jumpLink7.addEventListener("click", function(e) {
859
+ e.preventDefault();
860
+ var target = document.querySelector(this.getAttribute("href"));
861
+ var targetOffset = target.offsetTop;
862
+ window.scrollTo({top: targetOffset, behavior: "smooth"});
863
+ });
864
+ </script>
865
+ <script src='https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.js'></script>
866
+ <script src='https://cdn.datatables.net/1.10.16/js/jquery.dataTables.js'></script>
867
+ <script src='https://cdnjs.cloudflare.com/ajax/libs/datatables/1.10.16/js/dataTables.bootstrap4.js'></script>
868
+ <script>
869
+ var jumpLink11 = document.getElementById("response");
870
+ jumpLink11.addEventListener("click", function(e) {
871
+ e.preventDefault();
872
+ var target = document.querySelector(this.getAttribute("href"));
873
+ var targetOffset = target.offsetTop;
874
+ window.scrollTo({top: targetOffset, behavior: "smooth"});
875
+ });
876
+
877
+ var jumpLink12 = document.getElementById("question");
878
+ jumpLink12.addEventListener("click", function(e) {
879
+ e.preventDefault();
880
+ var target = document.querySelector(this.getAttribute("href"));
881
+ var targetOffset = target.offsetTop;
882
+ window.scrollTo({top: targetOffset, behavior: "smooth"});
883
+ });
884
+
885
+ function getdata() {
886
+ document.getElementById("response-table").style.display = "block";
887
+ }
888
+ </script>
889
+ <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
890
+ <script src="{{ url_for('static', filename='js/swiper-bundle.min.js') }}"></script>
891
+ <script src="{{ url_for('static', filename='js/main.js') }}"></script>
892
+ <script>
893
+ const myButton = document.getElementById("myButton");
894
+ const overviewDiv = document.getElementById("overview");
895
+ const displayPrevDiv = document.getElementById("prev-assess");
896
+ const resultsDiv = document.getElementById("results");
897
+ const feedbackDiv = document.getElementById("feedback");
898
+
899
+ myButton.addEventListener("click", () => {
900
+ feedbackDiv.style.display= "none";
901
+ resultsDiv.style.display= "none";
902
+ displayPrevDiv.style.display = "none";
903
+ overviewDiv.style.display = "block";
904
+ });
905
+
906
+ const myButton1 = document.getElementById("myButton1");
907
+ myButton1.addEventListener("click", () => {
908
+ overviewDiv.style.display = "none";
909
+ resultsDiv.style.display= "none";
910
+ feedbackDiv.style.display= "none";
911
+ displayPrevDiv.style.display = "block";
912
+ });
913
+
914
+ const myButton2 = document.getElementById("myButton2");
915
+ myButton2.addEventListener("click", () => {
916
+ overviewDiv.style.display = "none";
917
+ displayPrevDiv.style.display = "none";
918
+ feedbackDiv.style.display= "none";
919
+ resultsDiv.style.display= "block";
920
+ });
921
+
922
+ const myButton3 = document.getElementById("myButton3");
923
+ myButton3.addEventListener("click", () => {
924
+ overviewDiv.style.display = "none";
925
+ displayPrevDiv.style.display = "none";
926
+ resultsDiv.style.display= "none";
927
+ feedbackDiv.style.display= "block";
928
+ });
929
+
930
+ $(document).ready(function() {
931
+ $('#dataTablePre').DataTable();
932
+ });
933
+
934
+ $(document).ready(function() {
935
+ $('#dataTablePre1').DataTable();
936
+ });
937
+
938
+ $(document).ready(function() {
939
+ $('#dataTablePre2').DataTable();
940
+ });
941
+
942
+ $(document).ready(function() {
943
+ $('#dataTablePre3').DataTable();
944
+ });
945
+
946
+ $(document).ready(function() {
947
+ $('#dataTable').DataTable();
948
+ });
949
+ </script>
950
+ </body>
951
+ </html>
templates/change.html ADDED
@@ -0,0 +1,41 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {% extends 'layout.html' %}
2
+ {% block title %} Change Password {% endblock %}
3
+ {% block content %}
4
+ <br><br><br>
5
+ <div class="verify-pass">
6
+ <form action="/change" method="POST" id="pass-form">
7
+ <label for="password">New Password:</label>
8
+ <input type="password" class="form-control" id="password" name="password" required><br><br>
9
+
10
+ <label for="repeat-password">Repeat New Password:</label>
11
+ <input type="password" class="form-control" id="repeat-password" required><br><br>
12
+
13
+ <div id="pass-error-group" class="form-group" style="display:none; text-align:center; text-weight:bold;">
14
+ <b><span id="pass-error" style="color:red;"></span></b>
15
+ </div>
16
+
17
+ <center><button type="submit" class="btn btn-primary verify">Change Password!</button></center>
18
+ </form>
19
+ </div>
20
+
21
+ <script>
22
+ function myFunction() {
23
+ var pass = document.getElementById("password").value;
24
+ var rep_pass = document.getElementById("repeat-password").value;
25
+ let value = pass.localeCompare(rep_pass);
26
+ if (value != 0) {
27
+ document.getElementById("pass-error-group").style.display = "block";
28
+ document.getElementById("pass-error").innerHTML = "&#x0021; &nbsp; &nbsp; Password does not Match.";
29
+ return false;
30
+ }
31
+ return true;
32
+ }
33
+
34
+ document.getElementById("pass-form").addEventListener("submit", function(event) {
35
+ if (!myFunction()) {
36
+ event.preventDefault(); // prevent the form from submitting
37
+ }
38
+ });
39
+ </script>
40
+
41
+ {% endblock %}