Swetha
commited on
Commit
·
7279a7b
1
Parent(s):
0018e97
upadted
Browse files
src/app/intro-page/intro-page.component.css
CHANGED
|
@@ -42,33 +42,52 @@
|
|
| 42 |
height: 100vh;
|
| 43 |
display: flex;
|
| 44 |
flex-direction: column;
|
| 45 |
-
background: url(/assets/
|
| 46 |
background-size: cover;
|
| 47 |
color: #e5e7eb;
|
| 48 |
-
justify-content: space-
|
| 49 |
-
gap:
|
| 50 |
}
|
| 51 |
|
| 52 |
-
/* Topbar */
|
| 53 |
.topbar {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 54 |
display: flex;
|
| 55 |
-
align-items: center;
|
| 56 |
-
justify-content: space-around;
|
| 57 |
-
gap: 54vw;
|
| 58 |
width: 100%;
|
|
|
|
| 59 |
}
|
| 60 |
|
| 61 |
.brand {
|
| 62 |
-
display: flex;
|
| 63 |
align-items: center;
|
| 64 |
-
gap:
|
|
|
|
|
|
|
|
|
|
| 65 |
}
|
| 66 |
|
| 67 |
-
|
| 68 |
-
|
| 69 |
-
|
| 70 |
-
|
| 71 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 72 |
}
|
| 73 |
|
| 74 |
.brand__name {
|
|
@@ -78,6 +97,18 @@
|
|
| 78 |
font-weight: lighter;
|
| 79 |
}
|
| 80 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 81 |
.actions {
|
| 82 |
display: flex;
|
| 83 |
align-items: center;
|
|
@@ -123,19 +154,16 @@
|
|
| 123 |
background: #0b0f1a;
|
| 124 |
}
|
| 125 |
|
| 126 |
-
|
| 127 |
-
|
| 128 |
-
|
| 129 |
-
pointer-events: none;
|
| 130 |
-
}*/
|
| 131 |
-
|
| 132 |
-
.btn-disabled:hover {
|
| 133 |
-
border-color: #f3a54c !important;
|
| 134 |
-
}
|
| 135 |
|
| 136 |
-
/* Hero */
|
| 137 |
.hero {
|
| 138 |
margin-left: 5vw;
|
|
|
|
|
|
|
|
|
|
|
|
|
| 139 |
}
|
| 140 |
|
| 141 |
.hero__content {
|
|
@@ -143,22 +171,25 @@
|
|
| 143 |
}
|
| 144 |
|
| 145 |
.hero__title {
|
| 146 |
-
margin: 0 0
|
| 147 |
-
font-size:
|
| 148 |
-
line-height: 1.
|
| 149 |
-
font-weight:
|
| 150 |
}
|
| 151 |
|
| 152 |
.hero__text {
|
| 153 |
color: #b9c2d0;
|
| 154 |
-
margin: 0 0
|
| 155 |
-
font-size:
|
|
|
|
|
|
|
| 156 |
}
|
| 157 |
|
| 158 |
.cta {
|
| 159 |
display: flex;
|
| 160 |
gap: 10px;
|
| 161 |
-
flex-
|
|
|
|
| 162 |
}
|
| 163 |
|
| 164 |
/* Footer */
|
|
@@ -170,27 +201,11 @@
|
|
| 170 |
font-size: 0.7vw;
|
| 171 |
}
|
| 172 |
|
|
|
|
| 173 |
.footer a {
|
| 174 |
-
|
| 175 |
-
align-items: center;
|
| 176 |
-
border: 2px solid #f3a54c;
|
| 177 |
-
color: white;
|
| 178 |
-
border-radius: 2vw;
|
| 179 |
-
display: inline-flex;
|
| 180 |
-
align-items: center;
|
| 181 |
-
border-radius: 8px;
|
| 182 |
-
border: 1px solid rgba(255, 255, 255, .25);
|
| 183 |
-
background: rgba(11, 15, 26, 0.6);
|
| 184 |
-
color: #cfe8ff;
|
| 185 |
-
cursor: pointer;
|
| 186 |
-
padding: 0 4px;
|
| 187 |
}
|
| 188 |
|
| 189 |
-
.footer a i {
|
| 190 |
-
margin-right: 2px;
|
| 191 |
-
line-height: 1;
|
| 192 |
-
}
|
| 193 |
-
|
| 194 |
.about-btn {
|
| 195 |
display: inline-flex;
|
| 196 |
align-items: center;
|
|
@@ -227,19 +242,6 @@
|
|
| 227 |
border-color: #fff !important;
|
| 228 |
}
|
| 229 |
|
| 230 |
-
.brand__logo-img {
|
| 231 |
-
background: white;
|
| 232 |
-
max-width: 5vw;
|
| 233 |
-
height: auto;
|
| 234 |
-
border-radius: 1vw;
|
| 235 |
-
margin: 0.5vw;
|
| 236 |
-
}
|
| 237 |
-
|
| 238 |
-
.brand__link {
|
| 239 |
-
display: inline-flex;
|
| 240 |
-
align-items: center;
|
| 241 |
-
}
|
| 242 |
-
|
| 243 |
/* AUTH Modal overlay */
|
| 244 |
.modal-backdrop {
|
| 245 |
position: fixed;
|
|
@@ -248,38 +250,95 @@
|
|
| 248 |
display: grid;
|
| 249 |
place-items: center;
|
| 250 |
z-index: 1000;
|
|
|
|
|
|
|
| 251 |
}
|
| 252 |
|
| 253 |
-
|
| 254 |
-
|
| 255 |
-
background: transparent;
|
| 256 |
-
color: white;
|
| 257 |
-
position: relative;
|
| 258 |
-
left: 47vw;
|
| 259 |
-
top: 1.8vw;
|
| 260 |
-
z-index: 11;
|
| 261 |
-
border-radius: 10px;
|
| 262 |
-
cursor: pointer;
|
| 263 |
}
|
| 264 |
|
|
|
|
|
|
|
|
|
|
|
|
|
| 265 |
|
|
|
|
|
|
|
|
|
|
|
|
|
| 266 |
|
| 267 |
-
|
| 268 |
-
|
| 269 |
-
|
| 270 |
-
|
| 271 |
-
width: 100%;
|
| 272 |
}
|
| 273 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 274 |
|
| 275 |
-
/*
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 276 |
.about-backdrop {
|
| 277 |
position: fixed;
|
| 278 |
inset: 0;
|
| 279 |
-
background:
|
|
|
|
|
|
|
| 280 |
z-index: 1100; /* above auth backdrop */
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 281 |
}
|
| 282 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 283 |
.about-modal {
|
| 284 |
position: fixed;
|
| 285 |
z-index: 1101; /* above auth modal */
|
|
@@ -288,93 +347,559 @@ button.modal-close {
|
|
| 288 |
width: min(720px, 92vw);
|
| 289 |
max-height: 80vh;
|
| 290 |
overflow: auto;
|
| 291 |
-
background: #ffffff;
|
| 292 |
color: #111;
|
| 293 |
-
border-radius:
|
| 294 |
-
box-shadow: 0
|
| 295 |
outline: none;
|
|
|
|
| 296 |
}
|
| 297 |
|
| 298 |
-
|
| 299 |
-
|
| 300 |
-
|
| 301 |
-
|
| 302 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 303 |
}
|
| 304 |
|
| 305 |
-
.about-
|
| 306 |
-
|
| 307 |
-
border-bottom:
|
| 308 |
display: flex;
|
| 309 |
-
|
| 310 |
-
|
|
|
|
|
|
|
| 311 |
}
|
| 312 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 313 |
.about-modal__body {
|
| 314 |
-
padding:
|
| 315 |
line-height: 1.6;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 316 |
}
|
| 317 |
|
|
|
|
| 318 |
.about-close {
|
| 319 |
margin-left: auto;
|
| 320 |
border: none;
|
| 321 |
-
|
| 322 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
| 323 |
cursor: pointer;
|
| 324 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 325 |
}
|
| 326 |
|
| 327 |
-
|
| 328 |
-
|
| 329 |
-
:
|
| 330 |
-
|
| 331 |
-
padding: 0 !important;
|
| 332 |
-
background: transparent !important;
|
| 333 |
-
}*/
|
| 334 |
|
| 335 |
-
|
| 336 |
-
:
|
| 337 |
-
|
| 338 |
-
|
| 339 |
-
}*/
|
| 340 |
|
| 341 |
-
/*
|
| 342 |
-
|
| 343 |
-
|
| 344 |
}
|
| 345 |
-
|
| 346 |
-
.
|
| 347 |
-
|
| 348 |
-
|
| 349 |
-
|
| 350 |
-
|
| 351 |
-
|
| 352 |
-
|
| 353 |
-
|
| 354 |
}
|
| 355 |
|
| 356 |
-
.
|
| 357 |
-
|
|
|
|
| 358 |
}
|
| 359 |
|
| 360 |
-
|
| 361 |
-
|
| 362 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 363 |
}
|
| 364 |
|
| 365 |
-
|
| 366 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
| 367 |
}
|
| 368 |
}
|
| 369 |
|
| 370 |
-
|
| 371 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 372 |
opacity: 0;
|
| 373 |
-
transform: translateY(-
|
| 374 |
}
|
| 375 |
|
| 376 |
-
|
| 377 |
opacity: 1;
|
| 378 |
-
transform: translateY(
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 379 |
}
|
| 380 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 42 |
height: 100vh;
|
| 43 |
display: flex;
|
| 44 |
flex-direction: column;
|
| 45 |
+
background: url(/assets/11.png) no-repeat center center fixed;
|
| 46 |
background-size: cover;
|
| 47 |
color: #e5e7eb;
|
| 48 |
+
justify-content: space-evenly;
|
| 49 |
+
gap: 12vw;
|
| 50 |
}
|
| 51 |
|
| 52 |
+
/* Topbar aligned like QA */
|
| 53 |
.topbar {
|
| 54 |
+
position: fixed;
|
| 55 |
+
top: 0;
|
| 56 |
+
left: 0;
|
| 57 |
+
z-index: 100;
|
| 58 |
+
background: #000000d4;
|
| 59 |
+
-webkit-backdrop-filter: blur(8px);
|
| 60 |
+
backdrop-filter: blur(8px);
|
| 61 |
+
padding: 17px 97px;
|
| 62 |
+
justify-content: space-between;
|
| 63 |
display: flex;
|
|
|
|
|
|
|
|
|
|
| 64 |
width: 100%;
|
| 65 |
+
align-items: center;
|
| 66 |
}
|
| 67 |
|
| 68 |
.brand {
|
| 69 |
+
display: inline-flex;
|
| 70 |
align-items: center;
|
| 71 |
+
gap: 1.5vw;
|
| 72 |
+
text-decoration: none;
|
| 73 |
+
cursor: pointer;
|
| 74 |
+
user-select: none;
|
| 75 |
}
|
| 76 |
|
| 77 |
+
/* Match QA brand logo sizing/behavior */
|
| 78 |
+
.brand__logo-img {
|
| 79 |
+
background: #ffffff;
|
| 80 |
+
max-width: 4.2vw;
|
| 81 |
+
min-width: 56px;
|
| 82 |
+
height: auto;
|
| 83 |
+
border-radius: 50%;
|
| 84 |
+
padding: 4px;
|
| 85 |
+
box-shadow: 0 4px 10px rgba(0,0,0,0.25);
|
| 86 |
+
transition: transform .25s ease;
|
| 87 |
+
}
|
| 88 |
+
|
| 89 |
+
.brand:hover .brand__logo-img {
|
| 90 |
+
transform: scale(1.05);
|
| 91 |
}
|
| 92 |
|
| 93 |
.brand__name {
|
|
|
|
| 97 |
font-weight: lighter;
|
| 98 |
}
|
| 99 |
|
| 100 |
+
/* Color the "Py" like QA */
|
| 101 |
+
.brand__name strong {
|
| 102 |
+
font-weight: unset;
|
| 103 |
+
color: #f3a54c;
|
| 104 |
+
}
|
| 105 |
+
|
| 106 |
+
.brand__link {
|
| 107 |
+
display: inline-flex;
|
| 108 |
+
align-items: center;
|
| 109 |
+
color: white;
|
| 110 |
+
}
|
| 111 |
+
|
| 112 |
.actions {
|
| 113 |
display: flex;
|
| 114 |
align-items: center;
|
|
|
|
| 154 |
background: #0b0f1a;
|
| 155 |
}
|
| 156 |
|
| 157 |
+
.btn-disabled:hover {
|
| 158 |
+
border-color: #f3a54c !important;
|
| 159 |
+
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 160 |
|
|
|
|
| 161 |
.hero {
|
| 162 |
margin-left: 5vw;
|
| 163 |
+
position: absolute;
|
| 164 |
+
top: 50%;
|
| 165 |
+
left: 16.3%;
|
| 166 |
+
transform: translate(-50%, -16.3%);
|
| 167 |
}
|
| 168 |
|
| 169 |
.hero__content {
|
|
|
|
| 171 |
}
|
| 172 |
|
| 173 |
.hero__title {
|
| 174 |
+
margin: 0 0 25px;
|
| 175 |
+
font-size: 2.3vw;
|
| 176 |
+
line-height: 1.2;
|
| 177 |
+
font-weight: bold;
|
| 178 |
}
|
| 179 |
|
| 180 |
.hero__text {
|
| 181 |
color: #b9c2d0;
|
| 182 |
+
margin: 0 0 34px;
|
| 183 |
+
font-size: 0.9vw;
|
| 184 |
+
font-weight: 500;
|
| 185 |
+
line-height: 1.5vw;
|
| 186 |
}
|
| 187 |
|
| 188 |
.cta {
|
| 189 |
display: flex;
|
| 190 |
gap: 10px;
|
| 191 |
+
flex-direction: row-reverse;
|
| 192 |
+
justify-content: flex-end;
|
| 193 |
}
|
| 194 |
|
| 195 |
/* Footer */
|
|
|
|
| 201 |
font-size: 0.7vw;
|
| 202 |
}
|
| 203 |
|
| 204 |
+
/* remove styles targeting removed footer link */
|
| 205 |
.footer a {
|
| 206 |
+
all: unset;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 207 |
}
|
| 208 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 209 |
.about-btn {
|
| 210 |
display: inline-flex;
|
| 211 |
align-items: center;
|
|
|
|
| 242 |
border-color: #fff !important;
|
| 243 |
}
|
| 244 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 245 |
/* AUTH Modal overlay */
|
| 246 |
.modal-backdrop {
|
| 247 |
position: fixed;
|
|
|
|
| 250 |
display: grid;
|
| 251 |
place-items: center;
|
| 252 |
z-index: 1000;
|
| 253 |
+
animation: fadeIn 0.2s ease-out;
|
| 254 |
+
backdrop-filter: blur(8px);
|
| 255 |
}
|
| 256 |
|
| 257 |
+
.modal-panel {
|
| 258 |
+
animation: slideIn 0.3s ease-out;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 259 |
}
|
| 260 |
|
| 261 |
+
@keyframes fadeIn {
|
| 262 |
+
from {
|
| 263 |
+
opacity: 0;
|
| 264 |
+
}
|
| 265 |
|
| 266 |
+
to {
|
| 267 |
+
opacity: 1;
|
| 268 |
+
}
|
| 269 |
+
}
|
| 270 |
|
| 271 |
+
@keyframes slideIn {
|
| 272 |
+
from {
|
| 273 |
+
opacity: 0;
|
| 274 |
+
transform: translateY(-20px);
|
|
|
|
| 275 |
}
|
| 276 |
|
| 277 |
+
to {
|
| 278 |
+
opacity: 1;
|
| 279 |
+
transform: translateY(0);
|
| 280 |
+
}
|
| 281 |
+
}
|
| 282 |
+
|
| 283 |
+
button.modal-close {
|
| 284 |
+
background: white;
|
| 285 |
+
color: black;
|
| 286 |
+
position: relative;
|
| 287 |
+
left: 48.2vw;
|
| 288 |
+
top: 0.7vw;
|
| 289 |
+
z-index: 11;
|
| 290 |
+
border-radius: 50%;
|
| 291 |
+
cursor: pointer;
|
| 292 |
+
font-size: 1vw;
|
| 293 |
+
font-weight: bold;
|
| 294 |
+
}
|
| 295 |
|
| 296 |
+
/* Ensure the auth components fit properly in the modal */
|
| 297 |
+
.modal-panel app-sign-in,
|
| 298 |
+
.modal-panel app-sign-up {
|
| 299 |
+
display: block;
|
| 300 |
+
width: 100%;
|
| 301 |
+
}
|
| 302 |
+
|
| 303 |
+
/* Enhanced ABOUT Modal backdrop */
|
| 304 |
.about-backdrop {
|
| 305 |
position: fixed;
|
| 306 |
inset: 0;
|
| 307 |
+
background: linear-gradient(135deg, rgba(255, 255, 255, 0.4) 0%, rgba(255, 255, 255, 0.2) 100%);
|
| 308 |
+
backdrop-filter: blur(8px);
|
| 309 |
+
-webkit-backdrop-filter: blur(8px);
|
| 310 |
z-index: 1100; /* above auth backdrop */
|
| 311 |
+
animation: fadeIn 0.3s ease-out;
|
| 312 |
+
display: flex;
|
| 313 |
+
align-items: center;
|
| 314 |
+
justify-content: center;
|
| 315 |
+
}
|
| 316 |
+
|
| 317 |
+
/* Add a subtle pattern/texture to the backdrop */
|
| 318 |
+
.about-backdrop::before {
|
| 319 |
+
content: "";
|
| 320 |
+
position: absolute;
|
| 321 |
+
inset: 0;
|
| 322 |
+
background-image: radial-gradient(circle at 25% 25%, rgba(243, 165, 76, 0.1) 0%, transparent 50%), radial-gradient(circle at 75% 75%, rgba(0, 255, 136, 0.1) 0%, transparent 50%);
|
| 323 |
+
pointer-events: none;
|
| 324 |
+
}
|
| 325 |
+
|
| 326 |
+
/* Add a subtle animation to the backdrop pattern */
|
| 327 |
+
@keyframes subtleShift {
|
| 328 |
+
0%, 100% {
|
| 329 |
+
transform: translate(0, 0);
|
| 330 |
+
}
|
| 331 |
+
|
| 332 |
+
50% {
|
| 333 |
+
transform: translate(3px, 3px);
|
| 334 |
+
}
|
| 335 |
}
|
| 336 |
|
| 337 |
+
.about-backdrop::before {
|
| 338 |
+
animation: subtleShift 15s ease-in-out infinite;
|
| 339 |
+
}
|
| 340 |
+
|
| 341 |
+
/* Enhanced about modal */
|
| 342 |
.about-modal {
|
| 343 |
position: fixed;
|
| 344 |
z-index: 1101; /* above auth modal */
|
|
|
|
| 347 |
width: min(720px, 92vw);
|
| 348 |
max-height: 80vh;
|
| 349 |
overflow: auto;
|
| 350 |
+
background: linear-gradient(135deg, #ffffff 0%, #f8f9fa 100%);
|
| 351 |
color: #111;
|
| 352 |
+
border-radius: 16px;
|
| 353 |
+
box-shadow: 0 25px 50px rgba(0, 0, 0, 0.25), 0 0 0 1px rgba(255, 255, 255, 0.1) inset;
|
| 354 |
outline: none;
|
| 355 |
+
animation: modalSlideIn 0.3s cubic-bezier(0.16, 1, 0.3, 1);
|
| 356 |
}
|
| 357 |
|
| 358 |
+
@keyframes modalSlideIn {
|
| 359 |
+
from {
|
| 360 |
+
opacity: 0;
|
| 361 |
+
transform: translate(-50%, -48%);
|
| 362 |
+
}
|
| 363 |
+
|
| 364 |
+
to {
|
| 365 |
+
opacity: 1;
|
| 366 |
+
transform: translate(-50%, -50%);
|
| 367 |
+
}
|
| 368 |
}
|
| 369 |
|
| 370 |
+
.about-modal__header {
|
| 371 |
+
padding: 20px 24px;
|
| 372 |
+
border-bottom: 1px solid rgba(0, 0, 0, 0.08);
|
| 373 |
display: flex;
|
| 374 |
+
align-items: center;
|
| 375 |
+
background: #dedee7;
|
| 376 |
+
color: #0b0f1a;
|
| 377 |
+
border-radius: 16px 16px 0 0;
|
| 378 |
}
|
| 379 |
|
| 380 |
+
.about-modal__header h2 {
|
| 381 |
+
margin: 0;
|
| 382 |
+
font-size: 1.5rem;
|
| 383 |
+
font-weight: 700;
|
| 384 |
+
}
|
| 385 |
+
|
| 386 |
.about-modal__body {
|
| 387 |
+
padding: 24px;
|
| 388 |
line-height: 1.6;
|
| 389 |
+
background: #ffffff;
|
| 390 |
+
text-align: justify;
|
| 391 |
+
}
|
| 392 |
+
|
| 393 |
+
.about-modal__body p {
|
| 394 |
+
margin-bottom: 16px;
|
| 395 |
+
}
|
| 396 |
+
|
| 397 |
+
.about-modal__footer {
|
| 398 |
+
padding: 16px 24px;
|
| 399 |
+
border-top: 1px solid rgba(0, 0, 0, 0.08);
|
| 400 |
+
display: flex;
|
| 401 |
+
justify-content: flex-end;
|
| 402 |
+
gap: 12px;
|
| 403 |
+
background: #f8f9fa;
|
| 404 |
+
border-radius: 0 0 16px 16px;
|
| 405 |
}
|
| 406 |
|
| 407 |
+
/* Enhanced close button for the about modal */
|
| 408 |
.about-close {
|
| 409 |
margin-left: auto;
|
| 410 |
border: none;
|
| 411 |
+
color: #000000;
|
| 412 |
+
border: 2px solid #f3a54c;
|
| 413 |
+
width: 28px;
|
| 414 |
+
height: 28px;
|
| 415 |
+
border-radius: 50%;
|
| 416 |
+
font-size: 22px;
|
| 417 |
cursor: pointer;
|
| 418 |
+
display: flex;
|
| 419 |
+
align-items: center;
|
| 420 |
+
justify-content: center;
|
| 421 |
+
transition: all 0.2s ease;
|
| 422 |
+
font-weight: bold;
|
| 423 |
+
background: transparent;
|
| 424 |
}
|
| 425 |
|
| 426 |
+
.about-close:hover {
|
| 427 |
+
border: 2px solid #00ff88;
|
| 428 |
+
/*transform: scale(0.8);*/
|
| 429 |
+
}
|
|
|
|
|
|
|
|
|
|
| 430 |
|
| 431 |
+
.about-close:focus {
|
| 432 |
+
outline: 2px solid #00ff88;
|
| 433 |
+
outline-offset: 2px;
|
| 434 |
+
}
|
|
|
|
| 435 |
|
| 436 |
+
/* High contrast mode adjustments */
|
| 437 |
+
.page.high-contrast .about-backdrop {
|
| 438 |
+
background: rgba(0, 0, 0, 0.8);
|
| 439 |
}
|
| 440 |
+
|
| 441 |
+
.page.high-contrast .about-backdrop::before {
|
| 442 |
+
display: none;
|
| 443 |
+
}
|
| 444 |
+
|
| 445 |
+
.page.high-contrast .about-modal {
|
| 446 |
+
border: 2px solid #fff;
|
| 447 |
+
background: #000;
|
| 448 |
+
color: #fff;
|
| 449 |
}
|
| 450 |
|
| 451 |
+
.page.high-contrast .about-modal__header {
|
| 452 |
+
border-bottom: 2px solid #fff;
|
| 453 |
+
background: #000;
|
| 454 |
}
|
| 455 |
|
| 456 |
+
.page.high-contrast .about-modal__footer {
|
| 457 |
+
border-top: 2px solid #fff;
|
| 458 |
+
background: #000;
|
| 459 |
+
}
|
| 460 |
+
|
| 461 |
+
/* Reduced motion support */
|
| 462 |
+
@media (prefers-reduced-motion: reduce) {
|
| 463 |
+
.about-backdrop,
|
| 464 |
+
.about-modal {
|
| 465 |
+
animation: none;
|
| 466 |
}
|
| 467 |
|
| 468 |
+
.about-backdrop::before {
|
| 469 |
+
animation: none;
|
| 470 |
+
}
|
| 471 |
+
|
| 472 |
+
.about-close:hover {
|
| 473 |
+
transform: none;
|
| 474 |
}
|
| 475 |
}
|
| 476 |
|
| 477 |
+
/* Enhanced tooltip for Get Started when not signed in */
|
| 478 |
+
.tooltip {
|
| 479 |
+
position: relative;
|
| 480 |
+
display: inline-block;
|
| 481 |
+
/* theme tokens */
|
| 482 |
+
--t-bg: #cfe8ff; /* requested background */
|
| 483 |
+
--t-border: #2b3246;
|
| 484 |
+
--t-text: #0b0f1a; /* dark text for contrast */
|
| 485 |
+
--t-shadow: rgba(0,0,0,.25);
|
| 486 |
+
--t-glow: rgba(0,255,136,.18); /* brand neon */
|
| 487 |
+
}
|
| 488 |
+
|
| 489 |
+
/* Bubble positioned to the right of trigger */
|
| 490 |
+
.tooltip__bubble {
|
| 491 |
+
transform: translateY(-50%) translateX(-6px) scale(0.98);
|
| 492 |
+
padding: 10px 14px;
|
| 493 |
+
opacity: 0;
|
| 494 |
+
pointer-events: none;
|
| 495 |
+
transition: opacity .18s ease, transform .18s ease;
|
| 496 |
+
transition-delay: .06s;
|
| 497 |
+
z-index: 20;
|
| 498 |
+
backdrop-filter: blur(6px);
|
| 499 |
+
-webkit-backdrop-filter: blur(6px);
|
| 500 |
+
position: absolute;
|
| 501 |
+
top: 50%;
|
| 502 |
+
left: calc(100% + 12px);
|
| 503 |
+
background: #cfe8ffb5;
|
| 504 |
+
color: var(--t-text);
|
| 505 |
+
padding: 10px 14px;
|
| 506 |
+
border-radius: 12px;
|
| 507 |
+
font-size: 10px;
|
| 508 |
+
transition: opacity .18s ease, transform .18s ease;
|
| 509 |
+
width: max-content;
|
| 510 |
+
}
|
| 511 |
+
|
| 512 |
+
/* subtle top highlight */
|
| 513 |
+
.tooltip__bubble::before {
|
| 514 |
+
content: "";
|
| 515 |
+
position: absolute;
|
| 516 |
+
inset: 0;
|
| 517 |
+
border-radius: inherit;
|
| 518 |
+
pointer-events: none;
|
| 519 |
+
background: radial-gradient(120px 40px at 50% -20px, rgba(255,255,255,.35), transparent 70%);
|
| 520 |
+
}
|
| 521 |
+
|
| 522 |
+
/* Arrow on the left side pointing to trigger */
|
| 523 |
+
.tooltip__bubble::after {
|
| 524 |
+
content: "";
|
| 525 |
+
position: absolute;
|
| 526 |
+
top: 50%;
|
| 527 |
+
left: -16px;
|
| 528 |
+
transform: translateY(-50%);
|
| 529 |
+
border: 8px solid transparent;
|
| 530 |
+
border-right-color: var(--t-bg);
|
| 531 |
+
filter: drop-shadow(0 2px 0 rgba(0,0,0,.12));
|
| 532 |
+
}
|
| 533 |
+
|
| 534 |
+
.tooltip.tooltip--active:hover .tooltip__bubble,
|
| 535 |
+
.tooltip.tooltip--active:focus-within .tooltip__bubble,
|
| 536 |
+
.tooltip.tooltip--active .tooltip__bubble:hover,
|
| 537 |
+
.tooltip.tooltip--active .tooltip__bubble:focus {
|
| 538 |
+
opacity: 1;
|
| 539 |
+
transform: translateY(-50%) translateX(0) scale(1);
|
| 540 |
+
pointer-events: auto;
|
| 541 |
+
animation: tooltip-pop-right .22s cubic-bezier(.2,.8,.25,1);
|
| 542 |
+
}
|
| 543 |
+
|
| 544 |
+
@keyframes tooltip-pop-right {
|
| 545 |
+
0% {
|
| 546 |
opacity: 0;
|
| 547 |
+
transform: translateY(-50%) translateX(-10px) scale(.96);
|
| 548 |
}
|
| 549 |
|
| 550 |
+
60% {
|
| 551 |
opacity: 1;
|
| 552 |
+
transform: translateY(-50%) translateX(2px) scale(1.02);
|
| 553 |
+
}
|
| 554 |
+
|
| 555 |
+
100% {
|
| 556 |
+
opacity: 1;
|
| 557 |
+
transform: translateY(-50%) translateX(0) scale(1);
|
| 558 |
}
|
| 559 |
}
|
| 560 |
+
|
| 561 |
+
/* High contrast friendly tooltip */
|
| 562 |
+
.page.high-contrast .tooltip__bubble {
|
| 563 |
+
background: #000;
|
| 564 |
+
color: #fff;
|
| 565 |
+
border-color: #fff;
|
| 566 |
+
box-shadow: 0 0 0 2px #fff;
|
| 567 |
+
}
|
| 568 |
+
|
| 569 |
+
.page.high-contrast .tooltip__bubble::after {
|
| 570 |
+
border-right-color: #000;
|
| 571 |
+
}
|
| 572 |
+
|
| 573 |
+
/* Keep right-side placement on small screens as requested */
|
| 574 |
+
@media (prefers-reduced-motion: reduce) {
|
| 575 |
+
.tooltip__bubble {
|
| 576 |
+
transition: none;
|
| 577 |
+
}
|
| 578 |
+
|
| 579 |
+
.tooltip.tooltip--active:hover .tooltip__bubble,
|
| 580 |
+
.tooltip.tooltip--active:focus-within .tooltip__bubble {
|
| 581 |
+
animation: none;
|
| 582 |
+
}
|
| 583 |
+
}
|
| 584 |
+
|
| 585 |
+
/* Cards Section */
|
| 586 |
+
.cards {
|
| 587 |
+
display: flex;
|
| 588 |
+
justify-content: space-around;
|
| 589 |
+
padding: 60px 10%;
|
| 590 |
+
background: #f9f9f9;
|
| 591 |
+
flex-wrap: wrap;
|
| 592 |
+
}
|
| 593 |
+
|
| 594 |
+
.card {
|
| 595 |
+
width: 30%;
|
| 596 |
+
background: #fff;
|
| 597 |
+
box-shadow: 0 4px 8px rgba(0,0,0,0.1);
|
| 598 |
+
margin-bottom: 20px;
|
| 599 |
+
border-radius: 12px;
|
| 600 |
+
overflow: hidden;
|
| 601 |
+
text-align: left;
|
| 602 |
+
}
|
| 603 |
+
|
| 604 |
+
.card img {
|
| 605 |
+
width: 100%;
|
| 606 |
+
height: 200px;
|
| 607 |
+
object-fit: cover;
|
| 608 |
+
}
|
| 609 |
+
|
| 610 |
+
.card h3 {
|
| 611 |
+
margin: 15px;
|
| 612 |
+
font-size: 20px;
|
| 613 |
+
color: #444;
|
| 614 |
+
}
|
| 615 |
+
|
| 616 |
+
.card p {
|
| 617 |
+
margin: 0 15px 20px 15px;
|
| 618 |
+
font-size: 0.89vw;
|
| 619 |
+
line-height: 1.5;
|
| 620 |
+
text-align: justify;
|
| 621 |
+
color: black;
|
| 622 |
+
}
|
| 623 |
+
|
| 624 |
+
/* Scrolling Images */
|
| 625 |
+
.scroll-container {
|
| 626 |
+
overflow: hidden;
|
| 627 |
+
white-space: nowrap;
|
| 628 |
+
padding: 20px 0;
|
| 629 |
+
position: relative;
|
| 630 |
+
}
|
| 631 |
+
|
| 632 |
+
/* Use flex track with two identical sequences for seamless loop */
|
| 633 |
+
.scroll-images {
|
| 634 |
+
display: flex;
|
| 635 |
+
align-items: center;
|
| 636 |
+
animation: scroll-left 40s linear infinite;
|
| 637 |
+
width: max-content;
|
| 638 |
+
}
|
| 639 |
+
|
| 640 |
+
.scroll-images img {
|
| 641 |
+
width: 10vw;
|
| 642 |
+
height: 10vw;
|
| 643 |
+
margin: 0 10px;
|
| 644 |
+
border-radius: 8px;
|
| 645 |
+
object-fit: cover;
|
| 646 |
+
flex: 0 0 auto;
|
| 647 |
+
}
|
| 648 |
+
|
| 649 |
+
/* Pause on hover (optional UX improvement) */
|
| 650 |
+
.scroll-container:hover .scroll-images {
|
| 651 |
+
animation-play-state: paused;
|
| 652 |
+
}
|
| 653 |
+
|
| 654 |
+
@keyframes scroll-left {
|
| 655 |
+
0% {
|
| 656 |
+
transform: translateX(0);
|
| 657 |
+
}
|
| 658 |
+
|
| 659 |
+
100% {
|
| 660 |
+
transform: translateX(-50%);
|
| 661 |
+
}
|
| 662 |
+
/* shift exactly one set width (because duplicated) */
|
| 663 |
+
}
|
| 664 |
+
|
| 665 |
+
/* Special Content */
|
| 666 |
+
.special-content {
|
| 667 |
+
background: #dedee7;
|
| 668 |
+
padding: 50px 15%;
|
| 669 |
+
text-align: center;
|
| 670 |
+
}
|
| 671 |
+
|
| 672 |
+
.special-content h2 {
|
| 673 |
+
font-size: 28px;
|
| 674 |
+
margin-bottom: 20px;
|
| 675 |
+
}
|
| 676 |
+
|
| 677 |
+
.special-content p {
|
| 678 |
+
font-size: 18px;
|
| 679 |
+
line-height: 1.6;
|
| 680 |
+
}
|
| 681 |
+
|
| 682 |
+
/* Footer */
|
| 683 |
+
footer {
|
| 684 |
+
background: black;
|
| 685 |
+
color: #fff;
|
| 686 |
+
text-align: center;
|
| 687 |
+
padding: 15px 10px;
|
| 688 |
+
}
|
| 689 |
+
|
| 690 |
+
footer a {
|
| 691 |
+
color: #fff;
|
| 692 |
+
text-decoration: none;
|
| 693 |
+
margin: 0 10px;
|
| 694 |
+
}
|
| 695 |
+
|
| 696 |
+
footer .social-icons {
|
| 697 |
+
margin-top: 10px;
|
| 698 |
+
}
|
| 699 |
+
|
| 700 |
+
footer .social-icons img {
|
| 701 |
+
width: 25px;
|
| 702 |
+
margin: 0 8px;
|
| 703 |
+
vertical-align: middle;
|
| 704 |
+
}
|
| 705 |
+
|
| 706 |
+
/* Responsive adjustments */
|
| 707 |
+
@media (max-width: 768px) {
|
| 708 |
+
.card {
|
| 709 |
+
width: 100%;
|
| 710 |
+
}
|
| 711 |
+
|
| 712 |
+
.brand__name {
|
| 713 |
+
font-size: 1.5rem;
|
| 714 |
+
}
|
| 715 |
+
|
| 716 |
+
.topbar {
|
| 717 |
+
gap: 20px;
|
| 718 |
+
justify-content: space-between;
|
| 719 |
+
}
|
| 720 |
+
|
| 721 |
+
.cards {
|
| 722 |
+
padding: 30px 5%;
|
| 723 |
+
}
|
| 724 |
+
|
| 725 |
+
.special-content {
|
| 726 |
+
padding: 30px 5%;
|
| 727 |
+
}
|
| 728 |
+
}
|
| 729 |
+
|
| 730 |
+
/* Adjust page padding to account for fixed header/footer */
|
| 731 |
+
.page {
|
| 732 |
+
padding-top: 70px; /* Space for fixed header */
|
| 733 |
+
padding-bottom: 80px; /* Space for fixed footer */
|
| 734 |
+
height: auto;
|
| 735 |
+
min-height: 100vh;
|
| 736 |
+
}
|
| 737 |
+
|
| 738 |
+
/* Adjust cards section to account for fixed elements */
|
| 739 |
+
.cards {
|
| 740 |
+
padding: 80px 51px;
|
| 741 |
+
}
|
| 742 |
+
|
| 743 |
+
/* Adjust scrolling images section */
|
| 744 |
+
.scroll-container {
|
| 745 |
+
margin: 20px 0;
|
| 746 |
+
}
|
| 747 |
+
|
| 748 |
+
/* Adjust special content section */
|
| 749 |
+
.special-content {
|
| 750 |
+
padding: 60px 15% 80px;
|
| 751 |
+
}
|
| 752 |
+
|
| 753 |
+
/* Responsive adjustments for fixed elements */
|
| 754 |
+
@media (max-width: 768px) {
|
| 755 |
+
.topbar {
|
| 756 |
+
gap: 20px;
|
| 757 |
+
padding: 8px 12px;
|
| 758 |
+
}
|
| 759 |
+
|
| 760 |
+
.page {
|
| 761 |
+
padding-top: 60px;
|
| 762 |
+
padding-bottom: 70px;
|
| 763 |
+
}
|
| 764 |
+
|
| 765 |
+
.cards {
|
| 766 |
+
padding: 70px 5% 30px;
|
| 767 |
+
}
|
| 768 |
+
|
| 769 |
+
.special-content {
|
| 770 |
+
padding: 40px 5% 60px;
|
| 771 |
+
}
|
| 772 |
+
|
| 773 |
+
footer .social-icons img {
|
| 774 |
+
width: 20px;
|
| 775 |
+
margin: 0 5px;
|
| 776 |
+
}
|
| 777 |
+
}
|
| 778 |
+
|
| 779 |
+
/* Social Media Icons */
|
| 780 |
+
.social-icons {
|
| 781 |
+
display: flex;
|
| 782 |
+
justify-content: center;
|
| 783 |
+
gap: 15px;
|
| 784 |
+
margin-top: 10px;
|
| 785 |
+
}
|
| 786 |
+
|
| 787 |
+
.social-icon {
|
| 788 |
+
display: inline-flex;
|
| 789 |
+
align-items: center;
|
| 790 |
+
justify-content: center;
|
| 791 |
+
width: 36px;
|
| 792 |
+
height: 36px;
|
| 793 |
+
border-radius: 50%;
|
| 794 |
+
background: rgba(255, 255, 255, 0.1);
|
| 795 |
+
color: white;
|
| 796 |
+
text-decoration: none;
|
| 797 |
+
font-size: 18px;
|
| 798 |
+
transition: all 0.3s ease;
|
| 799 |
+
border: 1px solid rgba(255, 255, 255, 0.2);
|
| 800 |
+
}
|
| 801 |
+
|
| 802 |
+
.social-icon:hover {
|
| 803 |
+
transform: translateY(-3px);
|
| 804 |
+
background: rgba(255, 255, 255, 0.2);
|
| 805 |
+
}
|
| 806 |
+
|
| 807 |
+
/* Specific colors for each platform */
|
| 808 |
+
.social-icon.facebook:hover {
|
| 809 |
+
background: #3b5998;
|
| 810 |
+
box-shadow: 0 4px 8px rgba(59, 89, 152, 0.3);
|
| 811 |
+
}
|
| 812 |
+
|
| 813 |
+
.social-icon.youtube:hover {
|
| 814 |
+
background: #ff0000;
|
| 815 |
+
box-shadow: 0 4px 8px rgba(255, 0, 0, 0.3);
|
| 816 |
+
}
|
| 817 |
+
|
| 818 |
+
.social-icon.linkedin:hover {
|
| 819 |
+
background: #0077b5;
|
| 820 |
+
box-shadow: 0 4px 8px rgba(0, 119, 181, 0.3);
|
| 821 |
+
}
|
| 822 |
+
|
| 823 |
+
.social-icon.instagram:hover {
|
| 824 |
+
background: linear-gradient(45deg, #f09433, #e6683c, #dc2743, #cc2366, #bc1888);
|
| 825 |
+
box-shadow: 0 4px 8px rgba(188, 24, 136, 0.3);
|
| 826 |
+
}
|
| 827 |
+
|
| 828 |
+
/* Responsive adjustments for social icons */
|
| 829 |
+
@media (max-width: 768px) {
|
| 830 |
+
.social-icons {
|
| 831 |
+
gap: 10px;
|
| 832 |
+
}
|
| 833 |
+
|
| 834 |
+
.social-icon {
|
| 835 |
+
width: 32px;
|
| 836 |
+
height: 32px;
|
| 837 |
+
font-size: 16px;
|
| 838 |
+
}
|
| 839 |
+
}
|
| 840 |
+
|
| 841 |
+
/* New special-card styles */
|
| 842 |
+
.special-card {
|
| 843 |
+
width: min(840px, 90%);
|
| 844 |
+
margin: 0 auto;
|
| 845 |
+
background: #fff;
|
| 846 |
+
padding: 28px 32px 34px;
|
| 847 |
+
box-shadow: 0 12px 32px -8px rgba(0,0,0,0.15);
|
| 848 |
+
border: 1px solid rgba(0,0,0,0.06);
|
| 849 |
+
border-radius: 20px;
|
| 850 |
+
text-align: left;
|
| 851 |
+
}
|
| 852 |
+
|
| 853 |
+
.special-card h3 {
|
| 854 |
+
margin: 0 0 16px;
|
| 855 |
+
font-size: 28px;
|
| 856 |
+
background: linear-gradient(90deg, #f3a54c, #ffcb7a);
|
| 857 |
+
-webkit-background-clip: text;
|
| 858 |
+
color: transparent;
|
| 859 |
+
letter-spacing: .5px;
|
| 860 |
+
color: black;
|
| 861 |
+
text-align: center;
|
| 862 |
+
}
|
| 863 |
+
|
| 864 |
+
.special-card p {
|
| 865 |
+
margin: 0;
|
| 866 |
+
line-height: 1.6;
|
| 867 |
+
color: #000000;
|
| 868 |
+
}
|
| 869 |
+
|
| 870 |
+
.primary-nav {
|
| 871 |
+
display: flex;
|
| 872 |
+
gap: 1.8rem;
|
| 873 |
+
}
|
| 874 |
+
|
| 875 |
+
.nav-link {
|
| 876 |
+
position: relative;
|
| 877 |
+
font-size: 0.9rem;
|
| 878 |
+
letter-spacing: 1.5px;
|
| 879 |
+
text-transform: uppercase;
|
| 880 |
+
font-weight: 600;
|
| 881 |
+
color: #e5e7eb;
|
| 882 |
+
text-decoration: none;
|
| 883 |
+
padding: 6px 4px;
|
| 884 |
+
transition: color .25s ease;
|
| 885 |
+
}
|
| 886 |
+
|
| 887 |
+
.nav-link::after {
|
| 888 |
+
content: "";
|
| 889 |
+
position: absolute;
|
| 890 |
+
left: 0;
|
| 891 |
+
bottom: 0;
|
| 892 |
+
width: 0;
|
| 893 |
+
height: 2px;
|
| 894 |
+
background: linear-gradient(90deg,#f3a54c,#ffcb7a);
|
| 895 |
+
transition: width .3s ease;
|
| 896 |
+
border-radius: 2px;
|
| 897 |
+
}
|
| 898 |
+
|
| 899 |
+
.nav-link:hover {
|
| 900 |
+
color: #f3a54c;
|
| 901 |
+
}
|
| 902 |
+
|
| 903 |
+
.nav-link:hover::after {
|
| 904 |
+
width: 100%;
|
| 905 |
+
}
|
src/app/intro-page/intro-page.component.html
CHANGED
|
@@ -1,18 +1,44 @@
|
|
| 1 |
<a class="skip-link" href="#main">Skip to content</a>
|
| 2 |
|
| 3 |
<section class="page">
|
| 4 |
-
|
| 5 |
-
<!-- Top bar -->
|
| 6 |
<header class="topbar" role="banner" aria-label="Top navigation">
|
| 7 |
-
<
|
|
|
|
|
|
|
|
|
|
|
|
|
| 8 |
<img src="assets/pykara-logo.png" alt="Pykara Technologies logo" class="brand__logo-img" />
|
| 9 |
-
<span class="brand__name">
|
| 10 |
-
</
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 11 |
|
| 12 |
<nav class="actions" aria-label="Actions">
|
| 13 |
-
|
| 14 |
-
|
| 15 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 16 |
</nav>
|
| 17 |
</header>
|
| 18 |
|
|
@@ -22,42 +48,18 @@
|
|
| 22 |
<h1 class="hero__title">{{ tr('tagline') }}</h1>
|
| 23 |
<p class="hero__text">{{ tr('subtext') }}</p>
|
| 24 |
<div class="cta">
|
| 25 |
-
|
| 26 |
-
|
| 27 |
-
|
| 28 |
-
|
| 29 |
-
|
| 30 |
-
|
| 31 |
-
|
| 32 |
-
</
|
| 33 |
-
<small *ngIf="!isSignedIn" style="display: block; margin-top: 8px; color: #ffa500;">
|
| 34 |
-
Please sign in to get started
|
| 35 |
-
</small>
|
| 36 |
</div>
|
| 37 |
</div>
|
| 38 |
</main>
|
| 39 |
|
| 40 |
-
<!-- Footer (updated) -->
|
| 41 |
-
<footer class="footer" aria-label="Footer">
|
| 42 |
-
<a href="https://pykara.net/"
|
| 43 |
-
target="_blank"
|
| 44 |
-
rel="noopener noreferrer"
|
| 45 |
-
aria-label="Visit Pykara website">
|
| 46 |
-
<i class="fa-solid fa-globe" aria-hidden="true"></i>
|
| 47 |
-
<span style="font-family: sans-serif">Visit Pykara</span>
|
| 48 |
-
</a>
|
| 49 |
-
|
| 50 |
-
<!-- About us button -->
|
| 51 |
-
<button type="button"
|
| 52 |
-
class="about-btn"
|
| 53 |
-
(click)="openAbout()"
|
| 54 |
-
aria-haspopup="dialog"
|
| 55 |
-
aria-controls="aboutDialog"
|
| 56 |
-
[attr.aria-expanded]="isAboutOpen ? 'true' : 'false'">
|
| 57 |
-
<i class="fa-solid fa-circle-info" aria-hidden="true"></i>
|
| 58 |
-
<span>About us</span>
|
| 59 |
-
</button>
|
| 60 |
-
</footer>
|
| 61 |
|
| 62 |
<!-- AUTH MODAL OVERLAY (unchanged) -->
|
| 63 |
<div class="modal-backdrop" *ngIf="modal" (click)="backdropClick($event)">
|
|
@@ -92,9 +94,142 @@
|
|
| 92 |
</div>
|
| 93 |
|
| 94 |
<div class="about-modal__body">
|
| 95 |
-
<
|
| 96 |
-
<p>
|
|
|
|
|
|
|
| 97 |
</div>
|
| 98 |
</div>
|
| 99 |
|
| 100 |
</section>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
<a class="skip-link" href="#main">Skip to content</a>
|
| 2 |
|
| 3 |
<section class="page">
|
| 4 |
+
<!-- Top bar (now fixed) -->
|
|
|
|
| 5 |
<header class="topbar" role="banner" aria-label="Top navigation">
|
| 6 |
+
<a class="brand brand__link"
|
| 7 |
+
href="https://pykara.net/"
|
| 8 |
+
target="_blank"
|
| 9 |
+
rel="noopener noreferrer"
|
| 10 |
+
aria-label="Visit Pykara website">
|
| 11 |
<img src="assets/pykara-logo.png" alt="Pykara Technologies logo" class="brand__logo-img" />
|
| 12 |
+
<span class="brand__name"><strong>Py</strong>-Match</span>
|
| 13 |
+
</a>
|
| 14 |
+
|
| 15 |
+
<!-- Primary navigation for assessment types -->
|
| 16 |
+
<nav class="primary-nav" aria-label="Assessment navigation">
|
| 17 |
+
<a routerLink="/question-answer" [queryParams]="{ role: 'marriage' }" class="nav-link">
|
| 18 |
+
<i class="fa-solid fa-ring nav-link__icon" aria-hidden="true"></i>
|
| 19 |
+
<span>Marriage</span>
|
| 20 |
+
</a>
|
| 21 |
+
<a routerLink="/question-answer" [queryParams]="{ role: 'interview' }" class="nav-link">
|
| 22 |
+
<i class="fa-solid fa-user-tie nav-link__icon" aria-hidden="true"></i>
|
| 23 |
+
<span>Interview</span>
|
| 24 |
+
</a>
|
| 25 |
+
<a routerLink="/question-answer" [queryParams]="{ role: 'partnership' }" class="nav-link">
|
| 26 |
+
<i class="fa-solid fa-handshake nav-link__icon" aria-hidden="true"></i>
|
| 27 |
+
<span>Partnership</span>
|
| 28 |
+
</a>
|
| 29 |
+
</nav>
|
| 30 |
|
| 31 |
<nav class="actions" aria-label="Actions">
|
| 32 |
+
<ng-container *ngIf="!isSignedIn; else signedInBlock">
|
| 33 |
+
<button type="button" class="btn btn-primary" (click)="openSignUp()">{{ tr('signup') }}</button>
|
| 34 |
+
<button type="button" class="btn btn-ghost" (click)="openSignIn()">{{ tr('signin') }}</button>
|
| 35 |
+
</ng-container>
|
| 36 |
+
<ng-template #signedInBlock>
|
| 37 |
+
<button type="button" class="profile-btn" aria-label="Profile">
|
| 38 |
+
<i class="fa-solid fa-user" aria-hidden="true"></i>
|
| 39 |
+
</button>
|
| 40 |
+
<button type="button" class="btn btn-ghost" (click)="signOut()">Sign out</button>
|
| 41 |
+
</ng-template>
|
| 42 |
</nav>
|
| 43 |
</header>
|
| 44 |
|
|
|
|
| 48 |
<h1 class="hero__title">{{ tr('tagline') }}</h1>
|
| 49 |
<p class="hero__text">{{ tr('subtext') }}</p>
|
| 50 |
<div class="cta">
|
| 51 |
+
<button type="button"
|
| 52 |
+
class="btn btn-ghost"
|
| 53 |
+
(click)="openAbout()"
|
| 54 |
+
aria-haspopup="dialog"
|
| 55 |
+
aria-controls="aboutDialog"
|
| 56 |
+
[attr.aria-expanded]="isAboutOpen ? 'true' : 'false'">
|
| 57 |
+
Know more
|
| 58 |
+
</button>
|
|
|
|
|
|
|
|
|
|
| 59 |
</div>
|
| 60 |
</div>
|
| 61 |
</main>
|
| 62 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 63 |
|
| 64 |
<!-- AUTH MODAL OVERLAY (unchanged) -->
|
| 65 |
<div class="modal-backdrop" *ngIf="modal" (click)="backdropClick($event)">
|
|
|
|
| 94 |
</div>
|
| 95 |
|
| 96 |
<div class="about-modal__body">
|
| 97 |
+
<h1>Your Ideal Match Awaits</h1>
|
| 98 |
+
<p><strong>Py-Match</strong> is an advanced personality assessment tool designed to help individuals find the ideal match based on their core personality traits. The system uses a series of adaptive questions that are tailored to each user's profile. Each response is mapped to one of four core personality profiles, which represent different dominant behavioral tendencies. As users progress through the assessment, the platform continuously adapts, ensuring that the questions remain relevant and engaging, ultimately providing a more accurate personality profile.</p>
|
| 99 |
+
|
| 100 |
+
<p>The primary goal of <strong>Py-Match</strong> is to offer data-driven, personalized matches for various scenarios such as marriage compatibility, business partnerships, and leadership fit. By comparing the individual's personality profile to role-specific templates, the platform ensures that the match is based on both complementary and compatible traits. This sophisticated matching engine provides an in-depth, personalized experience while maintaining strict privacy standards. With a focus on both accuracy and user confidentiality, <strong>Py-Match</strong> guarantees that sensitive information is securely stored, offering users peace of mind while they explore the platform's potential.</p>
|
| 101 |
</div>
|
| 102 |
</div>
|
| 103 |
|
| 104 |
</section>
|
| 105 |
+
|
| 106 |
+
<!-- Cards Section -->
|
| 107 |
+
<section class="cards">
|
| 108 |
+
<div class="card">
|
| 109 |
+
<img src="assets/ring.png" alt="Marriage Match">
|
| 110 |
+
<h3><b>Marriage Match</b></h3>
|
| 111 |
+
<p>
|
| 112 |
+
Find the right life partner, beyond surface-level details.<br>
|
| 113 |
+
This analyzes values, habits, and personality traits such as analytical, organized, decisive, and creative.<br>
|
| 114 |
+
Understand true compatibility.<br>
|
| 115 |
+
See strengths and differences clearly.<br>
|
| 116 |
+
Make informed decisions for a lasting relationship.
|
| 117 |
+
</p>
|
| 118 |
+
</div>
|
| 119 |
+
<div class="card">
|
| 120 |
+
<img src="assets/Hiring.png" alt="Interview & Hiring Match">
|
| 121 |
+
<h3><b>Interview & Hiring Match</b></h3>
|
| 122 |
+
<p>
|
| 123 |
+
Recruit with confidence, powered by science.<br>
|
| 124 |
+
Spot hidden strengths and leadership potential.<br>
|
| 125 |
+
Match candidates to roles where they'll thrive.<br>
|
| 126 |
+
Build balanced, high-performing teams.
|
| 127 |
+
</p>
|
| 128 |
+
</div>
|
| 129 |
+
<div class="card">
|
| 130 |
+
<img src="assets/business.png" alt="Business Partner Match">
|
| 131 |
+
<h3><b>Business Partner Match</b></h3>
|
| 132 |
+
<p>
|
| 133 |
+
Choose partners who complement your strengths.<br>
|
| 134 |
+
Identify complementary skills and leadership styles.<br>
|
| 135 |
+
Reduce risks of conflict in decision-making.<br>
|
| 136 |
+
Build stronger, trust-based collaborations.
|
| 137 |
+
</p>
|
| 138 |
+
</div>
|
| 139 |
+
</section>
|
| 140 |
+
|
| 141 |
+
<!-- Scrolling Images -->
|
| 142 |
+
<div class="scroll-container">
|
| 143 |
+
<div class="scroll-images">
|
| 144 |
+
<!-- Sequence A -->
|
| 145 |
+
<img src="assets/small-img/1.png" alt="smallImage">
|
| 146 |
+
<img src="assets/small-img/2.png" alt="smallImage">
|
| 147 |
+
<img src="assets/small-img/3.png" alt="smallImage">
|
| 148 |
+
<img src="assets/small-img/4.png" alt="smallImage">
|
| 149 |
+
<img src="assets/small-img/5.png" alt="smallImage">
|
| 150 |
+
<img src="assets/small-img/6.png" alt="smallImage">
|
| 151 |
+
<img src="assets/small-img/7.png" alt="smallImage">
|
| 152 |
+
<img src="assets/small-img/8.png" alt="smallImage">
|
| 153 |
+
<img src="assets/small-img/9.png" alt="smallImage">
|
| 154 |
+
<img src="assets/small-img/10.png" alt="smallImage">
|
| 155 |
+
<img src="assets/small-img/11.png" alt="smallImage">
|
| 156 |
+
<img src="assets/small-img/12.png" alt="smallImage">
|
| 157 |
+
<img src="assets/small-img/13.png" alt="smallImage">
|
| 158 |
+
<img src="assets/small-img/14.png" alt="smallImage">
|
| 159 |
+
<img src="assets/small-img/15.png" alt="smallImage">
|
| 160 |
+
<img src="assets/small-img/16.png" alt="smallImage">
|
| 161 |
+
<img src="assets/small-img/17.png" alt="smallImage">
|
| 162 |
+
<img src="assets/small-img/18.png" alt="smallImage">
|
| 163 |
+
<img src="assets/small-img/19.png" alt="smallImage">
|
| 164 |
+
<img src="assets/small-img/20.png" alt="smallImage">
|
| 165 |
+
<img src="assets/small-img/21.png" alt="smallImage">
|
| 166 |
+
<img src="assets/small-img/22.png" alt="smallImage">
|
| 167 |
+
<img src="assets/small-img/24.png" alt="smallImage">
|
| 168 |
+
<img src="assets/small-img/26.png" alt="smallImage">
|
| 169 |
+
<img src="assets/small-img/28.png" alt="smallImage">
|
| 170 |
+
<!-- Sequence B (duplicate for seamless loop) -->
|
| 171 |
+
<img src="assets/small-img/1.png" alt="smallImage">
|
| 172 |
+
<img src="assets/small-img/2.png" alt="smallImage">
|
| 173 |
+
<img src="assets/small-img/3.png" alt="smallImage">
|
| 174 |
+
<img src="assets/small-img/4.png" alt="smallImage">
|
| 175 |
+
<img src="assets/small-img/5.png" alt="smallImage">
|
| 176 |
+
<img src="assets/small-img/6.png" alt="smallImage">
|
| 177 |
+
<img src="assets/small-img/7.png" alt="smallImage">
|
| 178 |
+
<img src="assets/small-img/8.png" alt="smallImage">
|
| 179 |
+
<img src="assets/small-img/9.png" alt="smallImage">
|
| 180 |
+
<img src="assets/small-img/10.png" alt="smallImage">
|
| 181 |
+
<img src="assets/small-img/11.png" alt="smallImage">
|
| 182 |
+
<img src="assets/small-img/12.png" alt="smallImage">
|
| 183 |
+
<img src="assets/small-img/13.png" alt="smallImage">
|
| 184 |
+
<img src="assets/small-img/14.png" alt="smallImage">
|
| 185 |
+
<img src="assets/small-img/15.png" alt="smallImage">
|
| 186 |
+
<img src="assets/small-img/16.png" alt="smallImage">
|
| 187 |
+
<img src="assets/small-img/17.png" alt="smallImage">
|
| 188 |
+
<img src="assets/small-img/18.png" alt="smallImage">
|
| 189 |
+
<img src="assets/small-img/19.png" alt="smallImage">
|
| 190 |
+
<img src="assets/small-img/20.png" alt="smallImage">
|
| 191 |
+
<img src="assets/small-img/21.png" alt="smallImage">
|
| 192 |
+
<img src="assets/small-img/22.png" alt="smallImage">
|
| 193 |
+
<img src="assets/small-img/24.png" alt="smallImage">
|
| 194 |
+
<img src="assets/small-img/26.png" alt="smallImage">
|
| 195 |
+
<img src="assets/small-img/28.png" alt="smallImage">
|
| 196 |
+
</div>
|
| 197 |
+
</div>
|
| 198 |
+
|
| 199 |
+
<!-- Special Content as Card -->
|
| 200 |
+
<section class="special-content">
|
| 201 |
+
<div class="card special-card">
|
| 202 |
+
<h3><b>Why Py-Match is Special?</b></h3>
|
| 203 |
+
<p>
|
| 204 |
+
<strong>Py-Match</strong> isn't just about data — it's about people.<br>
|
| 205 |
+
Using cutting-edge technology and psychology-based personality models, <strong>Py-Match</strong> decodes human compatibility.<br>
|
| 206 |
+
Whether in love, business, or recruitment, <strong>Py-Match</strong> gives you clarity and confidence.<br>
|
| 207 |
+
It's science made simple, to help you make life's most important decisions wisely.
|
| 208 |
+
</p>
|
| 209 |
+
</div>
|
| 210 |
+
</section>
|
| 211 |
+
|
| 212 |
+
<!-- Footer (now fixed) -->
|
| 213 |
+
<footer>
|
| 214 |
+
<p>© 2025 Pykara Technologies Pvt. Ltd. All rights reserved.</p>
|
| 215 |
+
<div class="footer-links">
|
| 216 |
+
<a href="#">About Us</a> |
|
| 217 |
+
<a href="#">Contact</a> |
|
| 218 |
+
<a href="#">Privacy Policy</a> |
|
| 219 |
+
<a href="#">Terms & Conditions</a>
|
| 220 |
+
</div>
|
| 221 |
+
<div class="social-icons">
|
| 222 |
+
<a href="#" class="social-icon facebook" aria-label="Facebook">
|
| 223 |
+
<i class="fab fa-facebook-f"></i>
|
| 224 |
+
</a>
|
| 225 |
+
<a href="#" class="social-icon youtube" aria-label="YouTube">
|
| 226 |
+
<i class="fab fa-youtube"></i>
|
| 227 |
+
</a>
|
| 228 |
+
<a href="#" class="social-icon linkedin" aria-label="LinkedIn">
|
| 229 |
+
<i class="fab fa-linkedin-in"></i>
|
| 230 |
+
</a>
|
| 231 |
+
<a href="#" class="social-icon instagram" aria-label="Instagram">
|
| 232 |
+
<i class="fab fa-instagram"></i>
|
| 233 |
+
</a>
|
| 234 |
+
</div>
|
| 235 |
+
</footer>
|
src/app/intro-page/intro-page.component.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
| 1 |
-
import { Component, ChangeDetectionStrategy, HostListener } from '@angular/core';
|
| 2 |
import { CommonModule } from '@angular/common';
|
| 3 |
import { RouterLink } from '@angular/router';
|
| 4 |
import { SignInComponent } from '../auth/sign-in/sign-in.component';
|
|
@@ -19,6 +19,7 @@ export class IntroPageComponent {
|
|
| 19 |
isSignedIn = false;
|
| 20 |
isAboutOpen = false;
|
| 21 |
|
|
|
|
| 22 |
// --- Auth modal handlers ---
|
| 23 |
openSignIn(): void {
|
| 24 |
this.modal = 'signin';
|
|
@@ -33,6 +34,7 @@ export class IntroPageComponent {
|
|
| 33 |
closeModal(): void {
|
| 34 |
this.modal = null;
|
| 35 |
if (!this.isAboutOpen) document.body.style.overflow = '';
|
|
|
|
| 36 |
}
|
| 37 |
|
| 38 |
|
|
@@ -48,6 +50,14 @@ export class IntroPageComponent {
|
|
| 48 |
this.modal = 'signin';
|
| 49 |
// You can optionally show a success message here
|
| 50 |
alert('Sign up successful! Please sign in to continue.');
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 51 |
}
|
| 52 |
|
| 53 |
backdropClick(e: MouseEvent): void {
|
|
@@ -62,12 +72,14 @@ export class IntroPageComponent {
|
|
| 62 |
document.body.style.overflow = 'hidden';
|
| 63 |
// Move focus into the dialog for accessibility
|
| 64 |
setTimeout(() => document.getElementById('aboutDialog')?.focus(), 0);
|
|
|
|
| 65 |
}
|
| 66 |
|
| 67 |
closeAbout(): void {
|
| 68 |
this.isAboutOpen = false;
|
| 69 |
// If Auth is also open, keep scroll locked. Otherwise restore.
|
| 70 |
if (!this.modal) document.body.style.overflow = '';
|
|
|
|
| 71 |
}
|
| 72 |
|
| 73 |
// --- Global ESC handler closes whichever is open ---
|
|
@@ -76,16 +88,22 @@ export class IntroPageComponent {
|
|
| 76 |
if (this.modal) this.closeModal();
|
| 77 |
else if (this.isAboutOpen) this.closeAbout();
|
| 78 |
}
|
| 79 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 80 |
// Your existing i18n helper, keep as-is if already present:
|
| 81 |
tr(key: string): string {
|
| 82 |
const dict = {
|
| 83 |
brand: 'Py-Match',
|
| 84 |
signup: 'Sign up',
|
| 85 |
signin: 'Sign in',
|
| 86 |
-
tagline: '
|
| 87 |
-
subtext: '
|
| 88 |
-
getStarted: 'Get started'
|
|
|
|
| 89 |
};
|
| 90 |
return dict[key as keyof typeof dict] ?? key;
|
| 91 |
}
|
|
|
|
| 1 |
+
import { Component, ChangeDetectionStrategy, HostListener, ChangeDetectorRef } from '@angular/core';
|
| 2 |
import { CommonModule } from '@angular/common';
|
| 3 |
import { RouterLink } from '@angular/router';
|
| 4 |
import { SignInComponent } from '../auth/sign-in/sign-in.component';
|
|
|
|
| 19 |
isSignedIn = false;
|
| 20 |
isAboutOpen = false;
|
| 21 |
|
| 22 |
+
constructor(private cdr: ChangeDetectorRef) { }
|
| 23 |
// --- Auth modal handlers ---
|
| 24 |
openSignIn(): void {
|
| 25 |
this.modal = 'signin';
|
|
|
|
| 34 |
closeModal(): void {
|
| 35 |
this.modal = null;
|
| 36 |
if (!this.isAboutOpen) document.body.style.overflow = '';
|
| 37 |
+
this.cdr.markForCheck();
|
| 38 |
}
|
| 39 |
|
| 40 |
|
|
|
|
| 50 |
this.modal = 'signin';
|
| 51 |
// You can optionally show a success message here
|
| 52 |
alert('Sign up successful! Please sign in to continue.');
|
| 53 |
+
this.cdr.markForCheck();
|
| 54 |
+
}
|
| 55 |
+
|
| 56 |
+
signOut(): void {
|
| 57 |
+
this.isSignedIn = false;
|
| 58 |
+
// Clear any persisted auth if used later
|
| 59 |
+
localStorage.removeItem('auth_token');
|
| 60 |
+
this.cdr.markForCheck();
|
| 61 |
}
|
| 62 |
|
| 63 |
backdropClick(e: MouseEvent): void {
|
|
|
|
| 72 |
document.body.style.overflow = 'hidden';
|
| 73 |
// Move focus into the dialog for accessibility
|
| 74 |
setTimeout(() => document.getElementById('aboutDialog')?.focus(), 0);
|
| 75 |
+
this.cdr.markForCheck();
|
| 76 |
}
|
| 77 |
|
| 78 |
closeAbout(): void {
|
| 79 |
this.isAboutOpen = false;
|
| 80 |
// If Auth is also open, keep scroll locked. Otherwise restore.
|
| 81 |
if (!this.modal) document.body.style.overflow = '';
|
| 82 |
+
this.cdr.markForCheck();
|
| 83 |
}
|
| 84 |
|
| 85 |
// --- Global ESC handler closes whichever is open ---
|
|
|
|
| 88 |
if (this.modal) this.closeModal();
|
| 89 |
else if (this.isAboutOpen) this.closeAbout();
|
| 90 |
}
|
| 91 |
+
scrollToContent() {
|
| 92 |
+
const element = document.getElementById('content-sections');
|
| 93 |
+
if (element) {
|
| 94 |
+
element.scrollIntoView({ behavior: 'smooth' });
|
| 95 |
+
}
|
| 96 |
+
}
|
| 97 |
// Your existing i18n helper, keep as-is if already present:
|
| 98 |
tr(key: string): string {
|
| 99 |
const dict = {
|
| 100 |
brand: 'Py-Match',
|
| 101 |
signup: 'Sign up',
|
| 102 |
signin: 'Sign in',
|
| 103 |
+
tagline: 'Smarter matches, powered by personality science.',
|
| 104 |
+
subtext: 'Discover compatibility in love, business, and careers with AI-driven personality insights.',
|
| 105 |
+
/* getStarted: 'Get started',*/
|
| 106 |
+
exploreFeatures: 'Explore our features below'
|
| 107 |
};
|
| 108 |
return dict[key as keyof typeof dict] ?? key;
|
| 109 |
}
|