RajalashmiNagarajan commited on
Commit
e9a0b07
·
1 Parent(s): 1a79c50
src/app/homepage/homepage.component.css CHANGED
@@ -59,7 +59,7 @@ body {
59
  .header-inner {
60
  display: flex;
61
  align-items: center;
62
- justify-content: flex-start;
63
  padding: 18px 32px 0 32px;
64
  position: relative;
65
  }
@@ -207,13 +207,32 @@ body {
207
 
208
  .auth-topright {
209
  position: fixed;
210
- top: 28px;
211
  right: 48px;
212
  z-index: 200;
213
  display: flex;
214
  gap: 18px;
215
  }
216
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
217
  .auth-btn {
218
  font-family: 'Montserrat', 'Poppins', 'Arial Black', Arial, sans-serif;
219
  font-size: 1.1rem;
@@ -594,24 +613,13 @@ label {
594
 
595
  /* Dropdown */
596
  .dropdown { position: relative; display: inline-block; }
597
- .dropbtn { background-color: #222; color: #fff; padding: 10px 16px; border: none; cursor: pointer; border-radius: 4px; }
598
  .dropdown-content { display: none; position: absolute; right: 0; background: #333; min-width: 180px; box-shadow: 0 8px 16px rgba(0,0,0,.3); border-radius: 4px; z-index: 1; }
599
  .dropdown-content a { color: #fff; padding: 12px 16px; text-decoration: none; display: block; }
600
  .dropdown-content a:hover { background: #444; }
601
  .dropdown:hover .dropdown-content { display: block; }
602
 
603
- /* Buttons */
604
- .btn {
605
- background: #c62828;
606
- color: #fff;
607
- border: none;
608
- padding: 10px 16px;
609
- border-radius: 4px;
610
- cursor: pointer;
611
- font-weight: bold;
612
- text-decoration: none;
613
- }
614
- .btn:hover { background: #e53935; }
615
 
616
  /* Hero */
617
  .hero {
@@ -632,6 +640,23 @@ label {
632
  border-radius: 4vw;
633
  }
634
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
635
  .blue-section, .how-to-use, .features {
636
  position: relative;
637
  z-index: 1;
@@ -662,8 +687,13 @@ label {
662
  .feature-image { flex: 1 1 320px; padding: 20px; }
663
  .feature-image img { width: 100%; border-radius: 10px; box-shadow: 0 5px 15px rgba(0,0,0,.2); }
664
 
665
- /* Footer */
666
- footer { background: linear-gradient(to right, #011022, #01030a); color: #fff; text-align: center; padding: 15px 10px; }
 
 
 
 
 
667
  footer a { color: #fff; text-decoration: none; margin: 0 10px; }
668
  footer .social-icons { margin-top:12px; display:flex; justify-content:center; gap:28px; flex-wrap:wrap; }
669
  footer .social-icons .si-wrap { display:flex; align-items:center; gap:10px; font-size:15px; font-weight:600; letter-spacing:.5px; font-family:'Segoe UI', Arial, sans-serif; color:#cfe9f7; }
@@ -843,9 +873,10 @@ footer .social-icons .si.ig:hover { filter:brightness(1.15); color:#fff; box-sha
843
 
844
 
845
  .how-to-use .section-title {
846
- font-size: 28px;
847
- color: #0d9de3; /* blue highlight */
848
- margin-bottom: 10px;
 
849
  }
850
 
851
  .how-to-use .section-subtitle {
@@ -1045,3 +1076,289 @@ footer .social-icons {
1045
  /* Fallback text hidden when svg present */
1046
  .auth-topright .auth-btn:empty::before { content: 'Login'; color: #fff; }
1047
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
59
  .header-inner {
60
  display: flex;
61
  align-items: center;
62
+ justify-content: space-between; /* space logo cluster and nav */
63
  padding: 18px 32px 0 32px;
64
  position: relative;
65
  }
 
207
 
208
  .auth-topright {
209
  position: fixed;
210
+ top: 22px;
211
  right: 48px;
212
  z-index: 200;
213
  display: flex;
214
  gap: 18px;
215
  }
216
 
217
+ .auth-topright { gap:12px; }
218
+ .lang-select {
219
+ height: 32px;
220
+ margin: 0 14px 8px 12px; /* space before auth button */
221
+ background: rgba(13,26,43,0.9);
222
+ color: #e3f6ff;
223
+ border: 1px solid #3aa6d9;
224
+ border-radius: 8px;
225
+ padding: 08px;
226
+ font-size: 0.9rem;
227
+ box-shadow: 0 2px 10px rgba(2,6,23,0.35);
228
+ cursor: pointer;
229
+ margin-top: 18px;
230
+ margin-right: 350px;
231
+ }
232
+
233
+ .lang-select:hover { border-color: #5fc0ee; }
234
+ .lang-select:focus { outline: none; box-shadow:0002px rgba(56,189,248,0.35); }
235
+
236
  .auth-btn {
237
  font-family: 'Montserrat', 'Poppins', 'Arial Black', Arial, sans-serif;
238
  font-size: 1.1rem;
 
613
 
614
  /* Dropdown */
615
  .dropdown { position: relative; display: inline-block; }
616
+ .dropbtn { background-color: #222; color: #fff; padding: 10px 16px; border: none; display: flex; gap: 6px; align-items: center; }
617
  .dropdown-content { display: none; position: absolute; right: 0; background: #333; min-width: 180px; box-shadow: 0 8px 16px rgba(0,0,0,.3); border-radius: 4px; z-index: 1; }
618
  .dropdown-content a { color: #fff; padding: 12px 16px; text-decoration: none; display: block; }
619
  .dropdown-content a:hover { background: #444; }
620
  .dropdown:hover .dropdown-content { display: block; }
621
 
622
+
 
 
 
 
 
 
 
 
 
 
 
623
 
624
  /* Hero */
625
  .hero {
 
640
  border-radius: 4vw;
641
  }
642
 
643
+ /* Subtle gradient overlay behind hero text for readability */
644
+ .hero { position: fixed; /* already set, ensure stacking */ }
645
+ .hero::before {
646
+ content: '';
647
+ position: absolute;
648
+ inset:0;
649
+ margin: auto;
650
+ width:100%;
651
+ height:100%;
652
+ border-radius:4vw;
653
+ pointer-events: none;
654
+ background: linear-gradient(90deg, rgba(0,0,0,0)0%, rgba(1,19,41,0.35)50%, rgba(0,0,0,0)100%);
655
+ }
656
+
657
+ /* Slightly elevate hero content above overlay */
658
+ .hero > * { position: relative; z-index:1; }
659
+
660
  .blue-section, .how-to-use, .features {
661
  position: relative;
662
  z-index: 1;
 
687
  .feature-image { flex: 1 1 320px; padding: 20px; }
688
  .feature-image img { width: 100%; border-radius: 10px; box-shadow: 0 5px 15px rgba(0,0,0,.2); }
689
 
690
+ h2.section-title {
691
+ font-size: 28px;
692
+ color: #0d9de3;
693
+ margin-bottom: 10px;
694
+ }
695
+ /* Footer */
696
+ footer { background: linear-gradient(to right, #011022, #01030a); color: #fff; text-align: center; padding: 15px 10px; }
697
  footer a { color: #fff; text-decoration: none; margin: 0 10px; }
698
  footer .social-icons { margin-top:12px; display:flex; justify-content:center; gap:28px; flex-wrap:wrap; }
699
  footer .social-icons .si-wrap { display:flex; align-items:center; gap:10px; font-size:15px; font-weight:600; letter-spacing:.5px; font-family:'Segoe UI', Arial, sans-serif; color:#cfe9f7; }
 
873
 
874
 
875
  .how-to-use .section-title {
876
+ text-align: center;
877
+ margin-left: auto;
878
+ margin-right: auto;
879
+ display: block;
880
  }
881
 
882
  .how-to-use .section-subtitle {
 
1076
  /* Fallback text hidden when svg present */
1077
  .auth-topright .auth-btn:empty::before { content: 'Login'; color: #fff; }
1078
 
1079
+
1080
+ .header-nav {
1081
+ display: flex;
1082
+ align-items: center;
1083
+ gap:48px;
1084
+ color: #e3f6ff;
1085
+ font-weight:700;
1086
+ margin-right: 100px;
1087
+ }
1088
+ .header-nav .nav-link {
1089
+ color: #e3f6ff;
1090
+ text-decoration: none;
1091
+ font-size:0.95rem;
1092
+ }
1093
+ .header-nav .nav-link:hover {
1094
+ color: #38bdf8;
1095
+ }
1096
+ .header-nav .nav-sep {
1097
+ color: #5fa8d4;
1098
+ opacity:0.9;
1099
+ }
1100
+ .header-nav .nav-icon { font-size:0.95rem; margin-right:6px; vertical-align: -1px; opacity:0.9; }
1101
+ .header-nav .dropdown-item .nav-icon { margin-right:8px; }
1102
+
1103
+ /* Premium soft hover underline and color fade for header nav */
1104
+ .header-nav .nav-link,
1105
+ .header-nav .dropdown-toggle,
1106
+ .header-nav .dropdown-item {
1107
+ position: relative;
1108
+ transition: color .25s ease;
1109
+ }
1110
+ .header-nav .nav-link::after,
1111
+ .header-nav .dropdown-toggle::after,
1112
+ .header-nav .dropdown-item::after {
1113
+ content: '';
1114
+ position: absolute;
1115
+ left:50%;
1116
+ bottom: -6px;
1117
+ height:2px;
1118
+ width:0;
1119
+ border-radius:2px;
1120
+ background: linear-gradient(90deg, rgba(56,189,248,0.0), rgba(56,189,248,0.65), rgba(56,189,248,0.0));
1121
+ transition: width .28s cubic-bezier(.4,0,.2,1), left .28s cubic-bezier(.4,0,.2,1);
1122
+ }
1123
+ .header-nav .nav-link:hover,
1124
+ .header-nav .dropdown-toggle:hover,
1125
+ .header-nav .dropdown-item:hover { color: #5fc0ee; }
1126
+ .header-nav .nav-link:hover::after,
1127
+ .header-nav .dropdown-toggle:hover::after,
1128
+ .header-nav .dropdown-item:hover::after {
1129
+ width:64%;
1130
+ left:18%;
1131
+ }
1132
+
1133
+ @media (max-width:760px) {
1134
+ .header-nav { display: none; }
1135
+ }
1136
+
1137
+ /* Dropdown styles for About in header nav */
1138
+ .header-nav .dropdown { position: relative; display: inline-block; }
1139
+ /* Hover bridge to avoid flicker when moving cursor from toggle to menu */
1140
+ .header-nav .dropdown::after {
1141
+ content: '';
1142
+ position: absolute;
1143
+ left:0;
1144
+ right:0;
1145
+ top:100%;
1146
+ height:10px; /* small buffer */
1147
+ }
1148
+ .header-nav .dropdown-toggle { cursor: pointer; }
1149
+ .header-nav .dropdown-menu {
1150
+ position: absolute;
1151
+ top:120%;
1152
+ left:0;
1153
+ background: #0b1f36;
1154
+ border:1px solid rgba(56,189,248,0.25);
1155
+ border-radius:8px;
1156
+ box-shadow:0 8px 24px rgba(2,6,23,0.45);
1157
+ padding:8px;
1158
+ min-width:220px;
1159
+ z-index:3000;
1160
+ /* transition-based visibility so there's time to hover into menu */
1161
+ opacity:0;
1162
+ visibility: hidden;
1163
+ transform: translateY(6px);
1164
+ pointer-events: none;
1165
+ transition: opacity .22s ease, transform .22s ease, visibility 0s linear .3s; /*300ms hide delay */
1166
+ }
1167
+ /* Show menu on hover/focus and keep it open when hovering the menu itself */
1168
+ .header-nav .dropdown:hover .dropdown-menu,
1169
+ .header-nav .dropdown:focus-within .dropdown-menu,
1170
+ .header-nav .dropdown .dropdown-menu:hover {
1171
+ opacity:1;
1172
+ visibility: visible;
1173
+ transform: translateY(0);
1174
+ pointer-events: auto;
1175
+ transition-delay:0s,0s,0s; /* no delay when showing */
1176
+ }
1177
+ .header-nav .dropdown-item {
1178
+ display: block;
1179
+ color: #e3f6ff;
1180
+ text-decoration: none;
1181
+ padding:8px 12px;
1182
+ border-radius:6px;
1183
+ font-size:0.92rem;
1184
+ white-space: nowrap;
1185
+ }
1186
+ .header-nav .dropdown-item:hover { background: rgba(56,189,248,0.18); color: #bae6fd; }
1187
+ /* Active/selected nav highlight without border */
1188
+ .header-nav .nav-link.active,
1189
+ .header-nav .dropdown-item.active {
1190
+ box-shadow:0006px rgba(56,189,248,0.12), 0 2px 12px rgba(56,189,248,0.35);
1191
+ background: rgba(56,189,248,0.1);
1192
+ border: none;
1193
+ border-radius:8px;
1194
+ }
1195
+
1196
+ /* Remove rounded border appearance only for active Home link */
1197
+ .header-nav .nav-link:first-of-type.active { border-radius:0; background: transparent; }
1198
+
1199
+
1200
+ /* Reduce default outline to subtle glow for accessibility */
1201
+ .header-nav .nav-link:focus-visible,
1202
+ .header-nav .dropdown-item:focus-visible {
1203
+ outline: none;
1204
+ box-shadow:0003px rgba(56,189,248,0.35);
1205
+ border-radius:8px;
1206
+ }
1207
+
1208
+ /* Remove click outline/border when using mouse/touch (but keep keyboard :focus-visible) */
1209
+ .header-nav .nav-link:focus:not(:focus-visible),
1210
+ .header-nav .dropdown-toggle:focus:not(:focus-visible),
1211
+ .header-nav .dropdown-item:focus:not(:focus-visible),
1212
+ .header-nav .nav-link:active,
1213
+ .header-nav .dropdown-toggle:active,
1214
+ .header-nav .dropdown-item:active {
1215
+ outline: none !important;
1216
+ box-shadow: none !important;
1217
+ border: none !important;
1218
+ }
1219
+
1220
+
1221
+ /* Title stack for logo + tagline */
1222
+ .title-stack { display:flex; flex-direction: column; align-items:flex-start; gap:2px; }
1223
+ .logo-tagline {
1224
+ font-size:0.92rem;
1225
+ font-weight:400;
1226
+ color: #b7d6eb;
1227
+ letter-spacing:0.3px;
1228
+ margin-top: -6px; /* tuck closer under title */
1229
+ opacity:0.9;
1230
+ }
1231
+
1232
+ /* Remove separate fixed language selector */
1233
+ .lang-topright { display:none; }
1234
+
1235
+ /* Header inline language selector after nav */
1236
+ .header-lang {
1237
+ height:32px;
1238
+ margin: 0 0px 0px 0px; /* space before auth button */
1239
+ background: rgba(13,26,43,0.9);
1240
+ color: #e3f6ff;
1241
+ border:1px solid #3aa6d9;
1242
+ border-radius:8px;
1243
+ padding:08px;
1244
+ font-size:0.9rem;
1245
+ box-shadow:0 2px 10px rgba(2,6,23,0.35);
1246
+ cursor: pointer;
1247
+ }
1248
+ .header-lang:hover { border-color: #5fc0ee; }
1249
+ .header-lang:focus { outline: none; box-shadow:0002px rgba(56,189,248,0.35); }
1250
+
1251
+ /* Keep auth button at far top-right */
1252
+ .auth-topright { position: fixed; top:22px; right:48px; z-index:200; }
1253
+
1254
+ /* Tooltip for profile icon */
1255
+ .auth-topright .auth-btn[data-tooltip] { position: relative; }
1256
+ .auth-topright .auth-btn[data-tooltip]::after {
1257
+ content: attr(data-tooltip);
1258
+ position: absolute;
1259
+ right:50%;
1260
+ transform: translateX(50%);
1261
+ top: calc(100% +8px);
1262
+ background: rgba(15,23,42,0.96);
1263
+ color: #e3f6ff;
1264
+ border:1px solid rgba(56,189,248,0.35);
1265
+ border-radius:6px;
1266
+ padding:6px 10px;
1267
+ font-size:12px;
1268
+ line-height:1;
1269
+ white-space: nowrap;
1270
+ box-shadow:0 6px 18px rgba(2,6,23,0.45);
1271
+ opacity:0;
1272
+ pointer-events: none;
1273
+ transition: opacity .18s ease, transform .18s ease;
1274
+ z-index:2100;
1275
+ }
1276
+ .auth-topright .auth-btn[data-tooltip]:hover::after,
1277
+ .auth-topright .auth-btn[data-tooltip]:focus-visible::after { opacity:1; transform: translateX(50%) translateY(0); }
1278
+ .hero .hero-cta {
1279
+ margin-top: 12px;
1280
+ background: linear-gradient(90deg, #38bdf80%, #23272b100%);
1281
+ color: #18181b;
1282
+ border: none;
1283
+ border-radius: 999px;
1284
+ padding: 10px 22px;
1285
+ font-size: 0.98rem;
1286
+ font-weight: 700;
1287
+ letter-spacing: 0.6px;
1288
+ cursor: pointer;
1289
+ box-shadow: 0 2px 12px #38bdf888;
1290
+ transition: background 0.2s, color 0.2s, box-shadow 0.2s;
1291
+ }
1292
+ .hero .hero-cta:hover {
1293
+ background: linear-gradient(90deg, #23272b0%, #38bdf8100%);
1294
+ color: #bae6fd;
1295
+ box-shadow:0 2px 24px #bae6fd88;
1296
+ }
1297
+
1298
+ .features .section-title { text-align: center; margin-left: auto; margin-right: auto; display: block; }
1299
+
1300
+
1301
+
1302
+
1303
+
1304
+ /* How It Works section styling */
1305
+ .how-it-works {
1306
+ padding:80px 10%;
1307
+ text-align: center;
1308
+ background: #011329; /* solid dark theme background */
1309
+ color: #e3f6ff;
1310
+ position: relative; /* for pseudo-element if present */
1311
+ }
1312
+ /* If decorative background was present, keep but ensure card sits above */
1313
+ .how-it-works::before {
1314
+ content: '';
1315
+ position: absolute;
1316
+ top:50%;
1317
+ left:50%;
1318
+ transform: translate(-50%, -50%);
1319
+ width: min(1000px,92vw);
1320
+ height:380px;
1321
+ border-radius:24px;
1322
+ background: linear-gradient(180deg, rgba(7,16,28,0.95), rgba(5,12,22,0.95)); /* darker decorative layer */
1323
+ box-shadow:0 20px 60px rgba(2,6,23,0.45), inset 0 0 1px rgba(56,189,248,0.15);
1324
+ z-index:0; /* behind card content */
1325
+ }
1326
+ .how-it-works .section-title,
1327
+ .how-it-works p,
1328
+ .how-it-works h3 { position: relative; z-index:1; }
1329
+
1330
+ /* Scrollable card with solid theme background and light text */
1331
+ .how-card {
1332
+ background: #ffffff; /* solid themed background on top of any card */
1333
+ color: #e3f6ff;
1334
+ border-radius:12px;
1335
+ box-shadow:0 4px 16px rgba(2,6,23,0.55);
1336
+ border:1px solid rgba(56,189,248,0.25);
1337
+ padding:24px;
1338
+ max-width:900px;
1339
+ margin:0 auto;
1340
+ max-height:420px; /* make scrollable if content exceeds */
1341
+ overflow: auto;
1342
+ position: relative;
1343
+ z-index:2; /* above background layers */
1344
+ }
1345
+ .how-card h3 { color: #c92c26; margin-top:12px; }
1346
+ .how-card p { font-size:16px; line-height:1.7; color: #333; }
1347
+
1348
+ /* Ensure section title uses theme accent */
1349
+ .how-it-works .section-title {
1350
+ text-align: center;
1351
+ margin:0 auto 12px auto;
1352
+ display: block;
1353
+ color: #0d9de3;
1354
+ }
1355
+
1356
+ @media (max-width:768px) {
1357
+ .how-it-works::before { height:320px; border-radius:18px; }
1358
+ .how-card { max-height:360px; }
1359
+ }
1360
+
1361
+
1362
+
1363
+
1364
+
src/app/homepage/homepage.component.html CHANGED
@@ -1,275 +1,415 @@
1
  <!-- Modern UI header with logo and PyDetect title -->
2
  <div class="site-header">
3
- <div class="header-inner">
4
- <div class="logo-cluster">
5
- <span (click)="navigateHome()" style="cursor:pointer;display:flex;align-items:center;">
6
- <img src="/assets/pykara-logo.png" alt="PyDetect Logo" class="logo-img-header" />
7
- </span>
8
- <div class="py-detect-title-header">
9
- <span class="py-letter p">P</span>
10
- <span class="py-letter y">Y</span>
11
- <span class="py-shape"></span>
12
- <span class="py-letter d">D</span>
13
- <span class="py-letter e">E</span>
14
- <span class="py-letter t">T</span>
15
- <span class="py-letter e2">E</span>
16
- <span class="py-letter c">C</span>
17
- <span class="py-letter t2">T</span>
18
- </div>
19
- </div>
20
- </div>
21
- </div>
22
-
23
- <!-- Top-right auth buttons (unchanged) -->
24
- <div class="auth-topright">
25
- <!-- Inline SVG-based circular login button -->
26
- <button class="auth-btn" (click)="openSignIn()" aria-label="Open Sign In">
27
- <!-- user-circle icon: outer ring with person silhouette -->
28
- <svg class="auth-btn-svg" viewBox="0 0 64 64" xmlns="http://www.w3.org/2000/svg" role="img" aria-hidden="true">
29
- <circle cx="32" cy="32" r="30" class="auth-ring" fill="none" stroke-width="2" />
30
- <circle cx="32" cy="20" r="8" class="auth-head" />
31
- <path class="auth-body" d="M16 48c0-8.8 7.2-16 16-16s16 7.2 16 16" fill="none" stroke-width="6" stroke-linecap="round" />
32
- </svg>
33
- </button>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
34
  </div>
35
 
36
  <!-- New Landing Hero + Sections -->
37
  <div class="landing">
38
- <!-- Hero Section -->
39
- <div class="hero">
40
- <h2>Real-Time Truth & Deception Detection</h2>
41
- <p>
42
- One intelligent platform for law enforcement, recruiters, and security teams.
43
- Analyse verbal responses and body language in real-time to detect deception, assess risks, and build trust.
44
- </p>
45
- <a href="#" class="btn know-more" (click)="openInfoDialog(); $event.preventDefault()">Know More</a>
46
- </div>
47
  </div>
48
 
49
 
50
  <!-- Blue Background Wrapper -->
51
  <div class="blue-section">
52
- <section class="specialisations">
53
- <!-- Mission Section -->
54
- <section class="mission">
55
- <h2 class="section-title">OUR MISSION IS SIMPLE & IMPACTFUL</h2>
56
- <div class="mission-row">
57
- <div class="mission-left">
58
- <p>
59
- Py-Detect is designed to reduce deception, fraud, and risk by enabling
60
- investigators, recruiters, and security professionals to uncover hidden truths
61
- with precision and speed. Our goal is to create safer communities, fairer
62
- recruitment processes, and stronger organisational security.
63
- </p>
64
- </div>
65
- <div class="mission-right">
66
- <p>
67
- By combining AI-powered verbal analysis, body language<br> detection, and facial
68
- recognition, Py-Detect provides<br> real-time deception scores and behavioural insights.<br>
69
- This empowers law enforcement, HR teams, and security<br> officers to make
70
- confident, evidence-based decisions that<br> enhance safety, trust, and efficiency.
71
- </p>
72
- </div>
73
- </div>
74
- </section>
75
-
76
- <div class="specialisation-cards">
77
- <!-- Card 1 -->
78
- <div class="card">
79
- <i class="fas fa-user-secret icon"></i>
80
- <h3>AI-Powered Investigation</h3>
81
- <p>
82
- Advanced NLP and computer vision analyse verbal and non-verbal cues in real time,
83
- supporting law enforcement with reliable truth detection.
84
- </p>
85
- </div>
86
-
87
- <!-- Card 2 -->
88
- <div class="card">
89
- <i class="fas fa-bullseye icon"></i>
90
- <h3>High Accuracy</h3>
91
- <p>
92
- Trained on diverse behavioural datasets, Py-Detect delivers strong accuracy across
93
- multiple scenarios including crime, recruitment, and security.
94
- </p>
95
- </div>
96
-
97
- <!-- Card 3 -->
98
- <div class="card">
99
- <i class="fas fa-shield-alt icon"></i>
100
- <h3>Secure & Scalable</h3>
101
- <p>
102
- Built with data privacy in mind, Py-Detect ensures secure handling of sensitive inputs
103
- while scaling for enterprise or government use.
104
- </p>
105
- </div>
106
- </div>
107
- </section>
108
  </div>
109
 
110
  <!-- How to Use Section -->
111
- <section class="how-to-use">
112
- <h2 class="section-title">How to Use Py-Detect?</h2>
113
- <p class="section-subtitle">
114
- Py-Detect supports both <strong>Admins</strong> (e.g., Inspectors) and <strong>Users</strong> (e.g., Constables)
115
- to manage cases, conduct investigations, and analyse suspects with AI.
116
- </p>
117
-
118
- <div class="use-cards">
119
- <!-- Step 1 -->
120
- <div class="use-card">
121
- <i class="fas fa-user-tie icon"></i>
122
- <h3>1. Admin Creates Case</h3>
123
- <p>
124
- The Admin (Inspector) logs in, enters case details, and assigns
125
- the investigation to specific users.
126
- </p>
127
- </div>
128
-
129
- <!-- Step 2 -->
130
- <div class="use-card">
131
- <i class="fas fa-user-check icon"></i>
132
- <h3>2. User Views Assignment</h3>
133
- <p>
134
- Assigned Users (Constables) log in to see their cases,
135
- review case details, and prepare for investigation.
136
- </p>
137
- </div>
138
-
139
- <!-- Step 3 -->
140
- <div class="use-card">
141
- <i class="fas fa-video icon"></i>
142
- <h3>3. Investigation Recording</h3>
143
- <p>
144
- During interrogation, the system generates AI-based questions.
145
- Video and audio responses are recorded in real time.
146
- </p>
147
- </div>
148
-
149
- <!-- Step 4 -->
150
- <div class="use-card">
151
- <i class="fas fa-brain icon"></i>
152
- <h3>4. AI Analysis</h3>
153
- <p>
154
- Py-Detect analyses tone, body language, and facial expressions
155
- to produce a deception score and behavioural insights.
156
- </p>
157
- </div>
158
-
159
- <!-- Step 5 -->
160
- <div class="use-card">
161
- <i class="fas fa-file-alt icon"></i>
162
- <h3>5. Report & Decision</h3>
163
- <p>
164
- A final AI-powered prediction report is generated,
165
- helping investigators make evidence-based decisions quickly.
166
- </p>
167
- </div>
168
- </div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
169
  </section>
170
 
171
  <!-- Features Section -->
172
  <section id="features" class="features">
173
- <!-- Crime Investigation -->
174
- <div class="feature-row">
175
- <div class="feature-text">
176
- <h2>Crime Investigation</h2>
177
- <p>
178
- Py-Detect assists law enforcement and police by analysing suspects’ verbal responses
179
- and body language during interrogations. With AI-driven facial recognition, tone analysis,
180
- and micro-expression detection, investigators gain deeper behavioural insights and
181
- a real-time deception score to uncover hidden truths.
182
- </p>
183
- </div>
184
- <div class="feature-image">
185
- <img src="assets/3.JPG" alt="Crime Investigation">
186
- </div>
187
- </div>
188
-
189
- <!-- Recruitment Analysis -->
190
- <div class="feature-row reverse">
191
- <div class="feature-image">
192
- <img src="assets/6.JPG" alt="Recruitment Analysis">
193
- </div>
194
- <div class="feature-text">
195
- <h2>Recruitment Analysis</h2>
196
- <p>
197
- In hiring processes, Py-Detect supports recruiters by evaluating candidates’ speech clarity,
198
- consistency, and emotional cues during interviews. AI-based analysis highlights honesty levels
199
- and potential stress indicators, enabling smarter, bias-free hiring decisions.
200
- </p>
201
- </div>
202
- </div>
203
-
204
- <!-- Court Room -->
205
- <div class="feature-row">
206
- <div class="feature-text">
207
- <h2>Court Room</h2>
208
- <p>
209
- Py-Detect strengthens courtroom proceedings by analysing witnesses’ verbal
210
- responses, tone, and body language in real time. The system highlights potential
211
- stress indicators, inconsistencies, and deception cues, providing judges and
212
- legal professionals with deeper behavioural insights.
213
- This ensures more reliable evaluations, supports fair trials, and reduces the
214
- risks of biased or inaccurate testimony.
215
- </p>
216
- </div>
217
- <div class="feature-image">
218
- <img src="assets/4.JPG" alt="Court Room">
219
- </div>
220
- </div>
221
  </section>
222
 
223
  <!-- Footer from provided design -->
224
  <footer>
225
- <p>© 2025 Pykara Technologies Pvt. Ltd. All rights reserved.</p>
226
- <a href="#">Contact</a> |
227
- <a href="#">Privacy Policy</a> |
228
- <a href="#">Terms & Conditions</a>
229
- <div class="social-icons">
230
- <a href="#" class="social-icon facebook" aria-label="Facebook">
231
- <i class="fab fa-facebook-f"></i>
232
- </a>
233
- <a href="#" class="social-icon youtube" aria-label="YouTube">
234
- <i class="fab fa-youtube"></i>
235
- </a>
236
- <a href="#" class="social-icon linkedin" aria-label="LinkedIn">
237
- <i class="fab fa-linkedin-in"></i>
238
- </a>
239
- <a href="#" class="social-icon instagram" aria-label="Instagram">
240
- <i class="fab fa-instagram"></i>
241
- </a>
242
- </div>
 
 
 
243
  </footer>
244
 
245
  <!-- ===== Auth Modals (unchanged) ===== -->
246
  <div class="modal-backdrop" *ngIf="showSignIn || showSignUp" (click)="closeModal()"></div>
247
  <div class="modal" *ngIf="showSignIn || showSignUp" role="dialog" aria-modal="true">
248
- <ng-container *ngIf="showSignIn">
249
- <app-sign-in (switchToSignUp)="openSignUp()" (close)="closeModal()">
250
- </app-sign-in>
251
- </ng-container>
252
- <ng-container *ngIf="showSignUp">
253
- <app-sign-up (switchToSignIn)="openSignIn()" (close)="closeModal()">
254
- </app-sign-up>
255
- </ng-container>
256
  </div>
257
 
258
  <!-- ===== Info Dialog ===== -->
259
  <div class="modal-backdrop modal-backdrop--fade" *ngIf="showInfoDialog" (click)="closeInfoDialog()"></div>
260
  <div class="modal dialog-modal dialog-modal--zoom" *ngIf="showInfoDialog" role="dialog" aria-modal="true" aria-label="About Py-Detect">
261
- <div class="dialog-content" (click)="$event.stopPropagation()">
262
- <button class="dialog-close" (click)="closeInfoDialog()" aria-label="Close">×</button>
263
 
264
- <h3>How It Works</h3>
265
- <p>Py-Detect asks personalized, context-aware questions and analyzes verbal, facial, and behavioral signals using AI and computer vision. It then produces a concise report with an estimated lie probability.</p>
 
 
 
266
 
267
- <h3>Who Can Use Py-Detect?</h3>
268
- <p>Investigators, law enforcement teams, educators and school administrators, HR professionals, recruiters, and any organization that needs reliable behavioral insights.</p>
269
 
270
- <h3>Why Py-Detect?</h3>
271
- <p>It is fast, non-invasive, configurable for different scenarios, and supports decisions with clear, data-driven evidence.</p>
272
- </div>
273
  </div>
274
 
275
 
 
1
  <!-- Modern UI header with logo and PyDetect title -->
2
  <div class="site-header">
3
+ <div class="header-inner">
4
+ <div class="logo-cluster">
5
+ <span (click)="navigateHome()" style="cursor:pointer;display:flex;align-items:center;">
6
+ <img src="/assets/pykara-logo.png" alt="PyDetect Logo" class="logo-img-header" />
7
+ </span>
8
+ <!-- Title + Tagline stacked -->
9
+ <div class="title-stack">
10
+ <div class="py-detect-title-header">
11
+ <span class="py-letter p">P</span>
12
+ <span class="py-letter y">Y</span>
13
+ <span class="py-shape"></span>
14
+ <span class="py-letter d">D</span>
15
+ <span class="py-letter e">E</span>
16
+ <span class="py-letter t">T</span>
17
+ <span class="py-letter e2">E</span>
18
+ <span class="py-letter c">C</span>
19
+ <span class="py-letter t2">T</span>
20
+ </div>
21
+ <div class="logo-tagline">Real-Time Behavioral Intelligence Platform</div>
22
+ </div>
23
+ </div>
24
+ <!-- Right-side minimal navigation -->
25
+ <nav class="header-nav" aria-label="Primary">
26
+ <a class="nav-link" [class.active]="selectedNav==='home'" href="#" (click)="navigateHome(); $event.preventDefault()">
27
+ <i class="fas fa-home nav-icon" aria-hidden="true"></i> Home
28
+ </a>
29
+ <span class="nav-sep">|</span>
30
+ <!-- About dropdown (second) -->
31
+ <div class="dropdown">
32
+ <a class="nav-link dropdown-toggle" [class.active]="selectedNav==='mission' || selectedNav==='how-to-use' || selectedNav==='about'" href="#" (click)="markSelected('about'); $event.preventDefault()">
33
+ <i class="fas fa-info-circle nav-icon" aria-hidden="true"></i> About ▾
34
+ </a>
35
+ <div class="dropdown-menu">
36
+ <a class="dropdown-item" [class.active]="selectedNav==='mission'" href="#mission" (click)="scrollToMission($event)">
37
+ <i class="fas fa-bullseye nav-icon" aria-hidden="true"></i> Our mission
38
+ </a>
39
+ <a class="dropdown-item" [class.active]="selectedNav==='how-to-use'" href="#how-to-use" (click)="scrollToHowToUse($event)">
40
+ <i class="fas fa-lightbulb nav-icon" aria-hidden="true"></i> How to use Py-Detect
41
+ </a>
42
+ <a class="dropdown-item" [class.active]="selectedNav==='how-it-works'" href="#how-it-works" (click)="scrollToHowItWorks($event)">
43
+ <i class="fas fa-cogs nav-icon" aria-hidden="true"></i> How it works
44
+ </a>
45
+ <a class="dropdown-item" href="#" (click)="openInfoDialog(); markSelected('about'); $event.preventDefault()">
46
+ <i class="fas fa-book-open nav-icon" aria-hidden="true"></i> Know more
47
+ </a>
48
+ </div>
49
+ </div>
50
+ <span class="nav-sep">|</span>
51
+ <!-- Features (third) -->
52
+ <a class="nav-link" [class.active]="selectedNav==='features'" href="#features" (click)="scrollToFeatures($event)">
53
+ <i class="fas fa-star nav-icon" aria-hidden="true"></i> Features
54
+ </a>
55
+ <span class="nav-sep">|</span>
56
+ <!-- Support (fourth) -->
57
+ <a class="nav-link" [class.active]="selectedNav==='support'" href="mailto:info@pykara.ai?subject=Py-Detect%20Support%20Request" (click)="markSelected('support')">
58
+ <i class="fas fa-life-ring nav-icon" aria-hidden="true"></i> Support
59
+ </a>
60
+ <!-- Language selector inline, after Support -->
61
+ <select class="lang-select header-lang" aria-label="Select language" [value]="selectedLanguage" (change)="onLanguageChange($any($event.target).value)">
62
+ <option value="en">EN</option>
63
+ <option value="en-IN">IN</option>
64
+ </select>
65
+ </nav>
66
+ <!-- Top-right auth button -->
67
+ <div class="auth-topright">
68
+ <button class="auth-btn" (click)="openSignIn()" aria-label="Open Sign In" title="Account">
69
+ <!-- user-circle icon: outer ring with person silhouette -->
70
+ <svg class="auth-btn-svg" viewBox="0 0 64 64" xmlns="http://www.w3.org/2000/svg" role="img" aria-hidden="true">
71
+ <circle cx="32" cy="32" r="30" class="auth-ring" fill="none" stroke-width="2" />
72
+ <circle cx="32" cy="20" r="8" class="auth-head" />
73
+ <path class="auth-body" d="M16 48c0-8.8 7.2-16 16-16s16 7.2 16 16" fill="none" stroke-width="6" stroke-linecap="round" />
74
+ </svg>
75
+ </button>
76
+ </div>
77
+ </div>
78
  </div>
79
 
80
  <!-- New Landing Hero + Sections -->
81
  <div class="landing">
82
+ <!-- Hero Section -->
83
+ <div class="hero">
84
+ <h2>Real-Time Truth & Deception Detection</h2>
85
+ <p>
86
+ One intelligent platform for law enforcement, recruiters, and security teams.
87
+ Analyse verbal responses and body language in real-time to detect deception, assess risks, and build trust.
88
+ </p>
89
+ <button class="hero-cta" (click)="scrollToSection($event, 'how-it-works')">How It Works</button>
90
+ </div>
91
  </div>
92
 
93
 
94
  <!-- Blue Background Wrapper -->
95
  <div class="blue-section">
96
+ <section class="specialisations">
97
+ <!-- Mission Section -->
98
+ <section id="mission" class="mission">
99
+ <h2 class="section-title">OUR MISSION IS SIMPLE & IMPACTFUL</h2>
100
+ <div class="mission-row">
101
+ <div class="mission-left">
102
+ <p>
103
+ Our mission is to help investigators, recruiters, and security professionals identify truth more confidently, reduce deception, and improve decision-making. We aim to support safer communities, fairer recruitment practices, and stronger organisational security.
104
+ </p>
105
+ </div>
106
+ <div class="mission-right">
107
+ <p>
108
+ Through advanced behavioural analysis—examining verbal responses, facial cues, and body language—the platform provides clear insight into consistency, credibility, and potential risks. This enables teams to act with accuracy, clarity, and confidence across a wide range of situations.
109
+ </p>
110
+ </div>
111
+ </div>
112
+ </section>
113
+
114
+ <div class="specialisation-cards">
115
+ <!-- Card1 -->
116
+ <div class="card">
117
+ <i class="fas fa-user-secret icon"></i>
118
+ <h3>Behavioural Investigation</h3>
119
+ <p>
120
+ Advanced NLP and computer vision techniques analyse verbal responses, facial cues, and body language in real time, helping professionals detect inconsistencies and understand behavioural patterns more accurately.
121
+ </p>
122
+ </div>
123
+
124
+ <!-- Card2 -->
125
+ <div class="card">
126
+ <i class="fas fa-bullseye icon"></i>
127
+ <h3>High Accuracy</h3>
128
+ <p>
129
+ Trained using diverse behavioural signals and real-world scenarios, the system delivers consistent and reliable results across investigations, recruitment workflows, screening processes, and security evaluations.
130
+ </p>
131
+ </div>
132
+
133
+ <!-- Card3 -->
134
+ <div class="card">
135
+ <i class="fas fa-shield-alt icon"></i>
136
+ <h3>Secure & Scalable</h3>
137
+ <p>
138
+ Designed with strong data protection standards, the system ensures safe handling of sensitive information while offering seamless scalability for enterprise and government environments.
139
+ </p>
140
+ </div>
141
+ </div>
142
+ </section>
 
 
 
 
 
 
 
 
 
143
  </div>
144
 
145
  <!-- How to Use Section -->
146
+ <section id="how-to-use" class="how-to-use">
147
+ <h2 class="section-title">How to Use?</h2>
148
+ <p class="section-subtitle">
149
+ The system enables Admins and authorised Users to manage cases, record investigation sessions, and review behavioural findings efficiently.
150
+ </p>
151
+
152
+ <div class="use-cards">
153
+ <!-- Step1 -->
154
+ <div class="use-card">
155
+ <i class="fas fa-user-tie icon"></i>
156
+ <h3>1. Admin Creates Case</h3>
157
+ <p>
158
+ The Admin logs in, enters case information, uploads available documents, and assigns the case to the appropriate user.
159
+ </p>
160
+ </div>
161
+
162
+ <!-- Step2 -->
163
+ <div class="use-card">
164
+ <i class="fas fa-user-check icon"></i>
165
+ <h3>2. User Views Assignment</h3>
166
+ <p>
167
+ The assigned user logs in, views the case, reviews the details, and prepares for the investigation session.
168
+ </p>
169
+ </div>
170
+
171
+ <!-- Step3 -->
172
+ <div class="use-card">
173
+ <i class="fas fa-video icon"></i>
174
+ <h3>3. Investigation Recording</h3>
175
+ <p>
176
+ During questioning, the system presents structured, context-aware questions.
177
+ Verbal responses, facial cues, and body language are recorded in real time.
178
+ </p>
179
+ </div>
180
+
181
+ <!-- Step4 -->
182
+ <div class="use-card">
183
+ <i class="fas fa-brain icon"></i>
184
+ <h3>4. AI Analysis</h3>
185
+ <p>
186
+ The system examines speech patterns, tone, facial expressions, and body movements to highlight behavioural indicators, consistency levels, and potential concerns.
187
+ </p>
188
+ </div>
189
+
190
+ <!-- Step5 -->
191
+ <div class="use-card">
192
+ <i class="fas fa-file-alt icon"></i>
193
+ <h3>5. Report & Decision</h3>
194
+ <p>
195
+ A clear behavioural report is generated, helping professionals interpret the findings and make confident, evidence-supported decisions.
196
+ </p>
197
+ </div>
198
+ </div>
199
+ </section>
200
+
201
+ <!-- How It Works Section (moved to main page) -->
202
+ <section id="how-it-works" class="how-it-works how-expanded">
203
+ <h2 class="section-title how-title">How It Works</h2>
204
+ <div class="how-grid">
205
+ <!-- Intro card -->
206
+ <article class="how-card how-anim fade-in-up" role="article" aria-label="Intro">
207
+ <h3 class="how-heading">Py-Detect – Intelligent Behaviour Analysis Platform</h3>
208
+ <p class="how-text">
209
+ Py-Detect is an advanced digital platform designed to support investigations through structured questioning and automated behavioural analysis. It studies voice, face, and body-language patterns, and produces a clear summary that helps investigators make informed decisions.
210
+ </p>
211
+ </article>
212
+
213
+ <!-- Context-Aware Questioning -->
214
+ <article class="how-card how-anim fade-in-up" aria-label="Context-Aware Questioning">
215
+ <h3 class="how-heading">1. Context-Aware Questioning</h3>
216
+ <p class="how-text">The system generates questions by reading the case information entered by the admin. It adapts each follow-up question based on the accused person’s previous answers to maintain relevance and continuity.</p>
217
+ </article>
218
+
219
+ <!-- Voice Pattern Analysis -->
220
+ <article class="how-card how-anim fade-in-up" aria-label="Voice Pattern Analysis">
221
+ <h3 class="how-heading">2. Voice Pattern Analysis</h3>
222
+ <ul class="how-list">
223
+ <li>Tone variations</li>
224
+ <li>Stress or pressure points</li>
225
+ <li>Pace and hesitation</li>
226
+ <li>Sudden pitch changes</li>
227
+ </ul>
228
+ <p class="how-text">These cues help identify emotional states and potential inconsistency.</p>
229
+ </article>
230
+
231
+ <!-- Facial and Micro-Expression Tracking -->
232
+ <article class="how-card how-anim fade-in-up" aria-label="Facial and Micro-Expression Tracking">
233
+ <h3 class="how-heading">3. Facial and Micro-Expression Tracking</h3>
234
+ <ul class="how-list">
235
+ <li>Eye shifts</li>
236
+ <li>Lip compression</li>
237
+ <li>Brow tension</li>
238
+ <li>Nervous micro-gestures</li>
239
+ </ul>
240
+ <p class="how-text">These signals contribute to behavioural interpretation.</p>
241
+ </article>
242
+
243
+ <!-- Body-Language Pattern Detection -->
244
+ <article class="how-card how-anim fade-in-up" aria-label="Body-Language Pattern Detection">
245
+ <h3 class="how-heading">4. Body-Language Pattern Detection</h3>
246
+ <p class="how-text">Posture, hand movements, head position, and response timing are evaluated to understand engagement, confidence, and anxiety levels.</p>
247
+ </article>
248
+
249
+ <!-- Combined Insight Summary -->
250
+ <article class="how-card how-anim fade-in-up" aria-label="Combined Insight Summary">
251
+ <h3 class="how-heading">5. Combined Insight Summary</h3>
252
+ <ul class="how-list">
253
+ <li>Structured summary</li>
254
+ <li>Behavioural indicators</li>
255
+ <li>Stress markers</li>
256
+ <li>Consistency score</li>
257
+ <li>Potential risk highlights</li>
258
+ </ul>
259
+ <p class="how-text">It helps investigators review the entire interview at a glance.</p>
260
+ </article>
261
+
262
+ <!-- Who Can Use -->
263
+ <article class="how-card how-anim fade-in-up" aria-label="Who Can Use">
264
+ <h3 class="how-heading">Who Can Use Py-Detect?</h3>
265
+ <ul class="how-list">
266
+ <li>Law Enforcement &amp; Investigation Teams</li>
267
+ <li>Legal Professionals</li>
268
+ <li>HR and Corporate Security</li>
269
+ <li>Private Investigation Agencies</li>
270
+ <li>Educational or Counselling Teams</li>
271
+ </ul>
272
+ </article>
273
+
274
+ <!-- Why Choose -->
275
+ <article class="how-card how-anim fade-in-up" aria-label="Why Choose">
276
+ <h3 class="how-heading">Why Choose Py-Detect?</h3>
277
+ <ul class="how-list">
278
+ <li>Fast and Efficient</li>
279
+ <li>Non-Invasive and Comfortable</li>
280
+ <li>Reliable and Data-Driven</li>
281
+ <li>Configurable for Different Scenarios</li>
282
+ <li>Secure and Organised</li>
283
+ </ul>
284
+ </article>
285
+
286
+ <!-- End-to-End Workflow -->
287
+ <article class="how-card how-anim fade-in-up" aria-label="End-to-End Workflow">
288
+ <h3 class="how-heading">End-to-End Workflow</h3>
289
+ <ol class="how-steps">
290
+ <li>Admin creates a case.</li>
291
+ <li>Investigator receives assigned cases.</li>
292
+ <li>Interview recorded (voice and video).</li>
293
+ <li>AI analyses behaviour and cues.</li>
294
+ <li>Final summary with indicators and scores.</li>
295
+ <li>Dashboards for review.</li>
296
+ </ol>
297
+ </article>
298
+
299
+ <!-- Key Features -->
300
+ <article class="how-card how-anim fade-in-up" aria-label="Key Features">
301
+ <h3 class="how-heading">Key Features</h3>
302
+ <ul class="how-list">
303
+ <li>Case Management</li>
304
+ <li>Automated Question Generation</li>
305
+ <li>Voice, Video, and Behaviour Analysis</li>
306
+ <li>Truth Probability Score</li>
307
+ <li>Investigator Panel</li>
308
+ <li>Admin Panel</li>
309
+ </ul>
310
+ </article>
311
+ </div>
312
  </section>
313
 
314
  <!-- Features Section -->
315
  <section id="features" class="features">
316
+ <h2 class="section-title">Industries we support</h2>
317
+ <!-- Crime Investigation -->
318
+ <div class="feature-row">
319
+ <div class="feature-text">
320
+ <h2>Crime Investigation</h2>
321
+ <p>
322
+ The system supports law enforcement by analysing suspects’ verbal responses, tone, facial cues, and body language during interrogations. By identifying stress patterns, inconsistencies, and subtle behavioural indicators, investigators gain deeper insights that assist in understanding credibility and uncovering hidden details.
323
+ </p>
324
+ </div>
325
+ <div class="feature-image">
326
+ <img src="assets/3.JPG" alt="Crime Investigation">
327
+ </div>
328
+ </div>
329
+
330
+ <!-- Recruitment Analysis -->
331
+ <div class="feature-row reverse">
332
+ <div class="feature-image">
333
+ <img src="assets/6.JPG" alt="Recruitment Analysis">
334
+ </div>
335
+ <div class="feature-text">
336
+ <h2>Recruitment Analysis</h2>
337
+ <p>
338
+ During hiring and screening processes, the system helps recruiters by evaluating candidates’ speech clarity, consistency, and emotional cues. Behavioural patterns and stress indicators are highlighted, enabling more informed, fair, and unbiased hiring decisions.
339
+ </p>
340
+ </div>
341
+ </div>
342
+
343
+ <!-- Court Room -->
344
+ <div class="feature-row">
345
+ <div class="feature-text">
346
+ <h2>Courtroom Evaluation</h2>
347
+ <p>
348
+ The system strengthens courtroom proceedings by examining witnesses’ verbal responses, tone, and body movements in real time. By highlighting stress indicators, behavioural inconsistencies, and credibility cues, it supports judges and legal professionals in making clearer, evidence-based assessments.
349
+ </p>
350
+ </div>
351
+ <div class="feature-image">
352
+ <img src="assets/4.JPG" alt="Court Room">
353
+ </div>
354
+ </div>
 
 
 
 
 
 
 
 
 
355
  </section>
356
 
357
  <!-- Footer from provided design -->
358
  <footer>
359
+ <p>
360
+ ©2025 Pykara Technologies
361
+ </p>
362
+ <a href="#">Terms</a> |
363
+ <a href="#">Privacy</a> |
364
+ <a href="#">Support</a> |
365
+ <a href="#">Version1.0.0</a>
366
+ <div class="social-icons">
367
+ <a href="#" class="social-icon facebook" aria-label="Facebook">
368
+ <i class="fab fa-facebook-f"></i>
369
+ </a>
370
+ <a href="#" class="social-icon youtube" aria-label="YouTube">
371
+ <i class="fab fa-youtube"></i>
372
+ </a>
373
+ <a href="#" class="social-icon linkedin" aria-label="LinkedIn">
374
+ <i class="fab fa-linkedin-in"></i>
375
+ </a>
376
+ <a href="#" class="social-icon instagram" aria-label="Instagram">
377
+ <i class="fab fa-instagram"></i>
378
+ </a>
379
+ </div>
380
  </footer>
381
 
382
  <!-- ===== Auth Modals (unchanged) ===== -->
383
  <div class="modal-backdrop" *ngIf="showSignIn || showSignUp" (click)="closeModal()"></div>
384
  <div class="modal" *ngIf="showSignIn || showSignUp" role="dialog" aria-modal="true">
385
+ <ng-container *ngIf="showSignIn">
386
+ <app-sign-in (switchToSignUp)="openSignUp()" (close)="closeModal()">
387
+ </app-sign-in>
388
+ </ng-container>
389
+ <ng-container *ngIf="showSignUp">
390
+ <app-sign-up (switchToSignIn)="openSignIn()" (close)="closeModal()">
391
+ </app-sign-up>
392
+ </ng-container>
393
  </div>
394
 
395
  <!-- ===== Info Dialog ===== -->
396
  <div class="modal-backdrop modal-backdrop--fade" *ngIf="showInfoDialog" (click)="closeInfoDialog()"></div>
397
  <div class="modal dialog-modal dialog-modal--zoom" *ngIf="showInfoDialog" role="dialog" aria-modal="true" aria-label="About Py-Detect">
398
+ <div class="dialog-content" (click)="$event.stopPropagation()">
399
+ <button class="dialog-close" (click)="closeInfoDialog()" aria-label="Close">×</button>
400
 
401
+ <h3>How It Works</h3>
402
+ <p>
403
+ The platform asks context-aware questions and analyses verbal, facial, and behavioral cues using computer vision.
404
+ It then generates a clear summary with risk indicators and consistency metrics.
405
+ </p>
406
 
407
+ <h3>Who Can Use Py-Detect?</h3>
408
+ <p>Investigators, law enforcement teams, legal professionals, HR and security departments, educators, and any organization that needs accurate behavioral insights.</p>
409
 
410
+ <h3>Why Py-Detect?</h3>
411
+ <p>It is fast, non-invasive, configurable for different scenarios, and supports decision-making with reliable, data-driven analysis.</p>
412
+ </div>
413
  </div>
414
 
415
 
src/app/homepage/homepage.component.ts CHANGED
@@ -18,6 +18,10 @@ export class HomepageComponent implements OnInit, OnDestroy {
18
  showSignUp = false;
19
  showTourOverlay = false;
20
 
 
 
 
 
21
  // (Optional legacy flags kept intact if used elsewhere)
22
  selectedInfo: string | null = null;
23
  showDetails = false;
@@ -33,6 +37,12 @@ export class HomepageComponent implements OnInit, OnDestroy {
33
 
34
  ngOnInit() {
35
  this.renderer.addClass(document.body, 'homepage-bg');
 
 
 
 
 
 
36
  // Listen for global auth-close events emitted by sign-in/sign-up components
37
  window.addEventListener('auth-close', this.authCloseListener as EventListener);
38
  }
@@ -63,7 +73,104 @@ export class HomepageComponent implements OnInit, OnDestroy {
63
  this.selectedInfo = (this.selectedInfo === info) ? null : info;
64
  }
65
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
66
  public navigateHome(): void {
67
- this.router.navigate(['/']);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
68
  }
69
  }
 
18
  showSignUp = false;
19
  showTourOverlay = false;
20
 
21
+ // Track selected nav for persistent highlight
22
+ selectedNav: string = '';
23
+ selectedLanguage = 'en';
24
+
25
  // (Optional legacy flags kept intact if used elsewhere)
26
  selectedInfo: string | null = null;
27
  showDetails = false;
 
37
 
38
  ngOnInit() {
39
  this.renderer.addClass(document.body, 'homepage-bg');
40
+ // Apply saved language (if any)
41
+ const savedLang = localStorage.getItem('pydetect_lang');
42
+ if (savedLang) {
43
+ this.selectedLanguage = savedLang;
44
+ document.documentElement.lang = savedLang;
45
+ }
46
  // Listen for global auth-close events emitted by sign-in/sign-up components
47
  window.addEventListener('auth-close', this.authCloseListener as EventListener);
48
  }
 
73
  this.selectedInfo = (this.selectedInfo === info) ? null : info;
74
  }
75
 
76
+ // Easing function for nicer long scrolls
77
+ private easeInOutCubic(t: number): number {
78
+ return t <0.5 ?4 * t * t * t :1 - Math.pow(-2 * t +2,3) /2;
79
+ }
80
+
81
+ // Core smooth scroller with adjustable duration (very slow by default ~1800ms)
82
+ private smoothScrollTo(targetY: number, duration =1800): void {
83
+ const startY = window.scrollY || window.pageYOffset;
84
+ const distance = targetY - startY;
85
+ const startTime = performance.now();
86
+ const step = (now: number) => {
87
+ const elapsed = now - startTime;
88
+ const progress = Math.min(elapsed / duration,1);
89
+ const eased = this.easeInOutCubic(progress);
90
+ window.scrollTo(0, startY + distance * eased);
91
+ if (progress <1) requestAnimationFrame(step);
92
+ };
93
+ requestAnimationFrame(step);
94
+ }
95
+
96
+ private getYForElement(el: HTMLElement, headerOffset =80): number {
97
+ const rect = el.getBoundingClientRect();
98
+ const scrollTop = window.scrollY || window.pageYOffset;
99
+ return rect.top + scrollTop - headerOffset;
100
+ }
101
+
102
+ // Home: always scroll page to top (slow & smooth); if not on '/', navigate then scroll
103
  public navigateHome(): void {
104
+ this.selectedNav = 'home';
105
+ const performScroll = () => this.smoothScrollTo(0,1800);
106
+ if (this.router.url === '/' || this.router.url === '') {
107
+ performScroll();
108
+ } else {
109
+ this.router.navigate(['/']).then(() => setTimeout(performScroll,0));
110
+ }
111
+ }
112
+
113
+ // Smooth scroll helpers for section links (slow & smooth)
114
+ public scrollToFeatures(event: Event): void {
115
+ event.preventDefault();
116
+ this.selectedNav = 'features';
117
+ const el = document.getElementById('features');
118
+ if (el) {
119
+ const y = this.getYForElement(el,80);
120
+ this.smoothScrollTo(y,1800);
121
+ }
122
+ }
123
+ public scrollToMission(event: Event): void {
124
+ event.preventDefault();
125
+ this.selectedNav = 'mission';
126
+ const el = document.getElementById('mission');
127
+ if (el) {
128
+ const y = this.getYForElement(el,80);
129
+ this.smoothScrollTo(y,1800);
130
+ }
131
+ }
132
+ public scrollToHowToUse(event: Event): void {
133
+ event.preventDefault();
134
+ this.selectedNav = 'how-to-use';
135
+ const el = document.getElementById('how-to-use');
136
+ if (el) {
137
+ const y = this.getYForElement(el,80);
138
+ this.smoothScrollTo(y,1800);
139
+ }
140
+ }
141
+
142
+ // New: dedicated smooth scroll for How It Works from About link
143
+ public scrollToHowItWorks(event: Event): void {
144
+ event.preventDefault();
145
+ this.selectedNav = 'how-it-works';
146
+ const el = document.getElementById('how-it-works');
147
+ if (el) {
148
+ const y = this.getYForElement(el,80); // account for fixed header height
149
+ this.smoothScrollTo(y,1800); // slow smooth scroll
150
+ }
151
+ }
152
+
153
+ // Manual marker for items that don't use dedicated handlers
154
+ public markSelected(key: string): void {
155
+ this.selectedNav = key;
156
+ }
157
+
158
+ // Language change with persistence
159
+ public onLanguageChange(lang: string): void {
160
+ this.selectedLanguage = lang || 'en';
161
+ localStorage.setItem('pydetect_lang', this.selectedLanguage);
162
+ document.documentElement.lang = this.selectedLanguage;
163
+ }
164
+
165
+ // New helper to scroll to an arbitrary section id and mark nav selection
166
+ public scrollToSection(ev: Event, id: string) {
167
+ ev.preventDefault();
168
+ this.markSelected(id);
169
+ const el = document.getElementById(id);
170
+ if (el) {
171
+ // Use offset-aware smooth scroll so header doesn't hide title
172
+ const y = this.getYForElement(el,80);
173
+ this.smoothScrollTo(y,1800);
174
+ }
175
  }
176
  }