Harshit Ghosh
feat: implement robust security middleware, authentication system, and frontend UI components
e4fd6e0 | /* βββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| ICH Screening β Home / Dashboard Page Styles | |
| βββββββββββββββββββββββββββββββββββββββββββββββββββ */ | |
| /* ββ Landing hero βββββββββββββββββββββββββββββββββββ */ | |
| .landing-hero { | |
| text-align: center; | |
| padding: 72px 0 48px; | |
| position: relative; | |
| } | |
| .landing-badge { | |
| display: inline-flex; | |
| align-items: center; | |
| gap: 6px; | |
| padding: 5px 14px; | |
| border-radius: 999px; | |
| font-size: .75rem; | |
| font-weight: 700; | |
| letter-spacing: .06em; | |
| text-transform: uppercase; | |
| background: rgba(110,168,254,.1); | |
| border: 1px solid rgba(110,168,254,.25); | |
| color: #6ea8fe; | |
| margin-bottom: 20px; | |
| animation: badge-pop .5s cubic-bezier(.16,1,.3,1) both; | |
| } | |
| @keyframes badge-pop { | |
| from { opacity: 0; transform: scale(.85); } | |
| to { opacity: 1; transform: scale(1); } | |
| } | |
| .badge-dot { | |
| width: 6px; | |
| height: 6px; | |
| border-radius: 50%; | |
| background: #6ea8fe; | |
| animation: blink 1.8s ease-in-out infinite; | |
| } | |
| @keyframes blink { | |
| 0%, 100% { opacity: 1; } | |
| 50% { opacity: .3; } | |
| } | |
| .landing-hero h1 { | |
| font-size: clamp(2.2rem, 5vw, 3.4rem); | |
| font-weight: 900; | |
| line-height: 1.12; | |
| letter-spacing: -.04em; | |
| margin-bottom: 18px; | |
| animation: hero-in .6s cubic-bezier(.16,1,.3,1) .1s both; | |
| } | |
| @keyframes hero-in { | |
| from { opacity: 0; transform: translateY(22px); } | |
| to { opacity: 1; transform: translateY(0); } | |
| } | |
| .hero-grad { | |
| background: linear-gradient(135deg, #6ea8fe 0%, #a78bfa 55%, #6366f1 100%); | |
| -webkit-background-clip: text; | |
| -webkit-text-fill-color: transparent; | |
| background-clip: text; | |
| } | |
| .landing-hero p { | |
| font-size: 1.1rem; | |
| color: #8ba0c4; | |
| max-width: 580px; | |
| margin: 0 auto 36px; | |
| line-height: 1.7; | |
| animation: hero-in .6s cubic-bezier(.16,1,.3,1) .2s both; | |
| } | |
| .hero-cta-row { | |
| display: flex; | |
| gap: 12px; | |
| justify-content: center; | |
| flex-wrap: wrap; | |
| animation: hero-in .6s cubic-bezier(.16,1,.3,1) .3s both; | |
| } | |
| .btn-hero-primary { | |
| display: inline-flex; | |
| align-items: center; | |
| gap: 8px; | |
| padding: 13px 30px; | |
| background: linear-gradient(135deg, #6ea8fe, #6366f1); | |
| color: #fff; | |
| text-decoration: none; | |
| border-radius: 14px; | |
| font-weight: 700; | |
| font-size: .96rem; | |
| border: none; | |
| box-shadow: 0 4px 22px rgba(110,168,254,.35); | |
| transition: opacity .2s, transform .15s, box-shadow .2s; | |
| cursor: pointer; | |
| } | |
| .btn-hero-primary:hover { | |
| opacity: .9; | |
| transform: translateY(-2px); | |
| box-shadow: 0 8px 28px rgba(110,168,254,.45); | |
| color: #fff; | |
| } | |
| .btn-hero-secondary { | |
| display: inline-flex; | |
| align-items: center; | |
| gap: 8px; | |
| padding: 13px 28px; | |
| background: transparent; | |
| border: 1px solid #243356; | |
| color: #8ba0c4; | |
| text-decoration: none; | |
| border-radius: 14px; | |
| font-weight: 600; | |
| font-size: .94rem; | |
| cursor: pointer; | |
| transition: all .2s; | |
| } | |
| .btn-hero-secondary:hover { | |
| border-color: #6ea8fe; | |
| color: #6ea8fe; | |
| background: rgba(110,168,254,.06); | |
| } | |
| /* ββ Stats grid βββββββββββββββββββββββββββββββββββββ */ | |
| .stats-section { | |
| display: grid; | |
| grid-template-columns: repeat(6, 1fr); | |
| gap: 12px; | |
| margin: 48px 0 0; | |
| } | |
| .stat-card { | |
| background: linear-gradient(180deg, #162244, #111c33); | |
| border: 1px solid #243356; | |
| border-radius: 14px; | |
| padding: 18px 16px; | |
| animation: card-in .5s cubic-bezier(.16,1,.3,1) both; | |
| transition: transform .2s, box-shadow .2s; | |
| } | |
| .stat-card:hover { | |
| transform: translateY(-3px); | |
| box-shadow: 0 8px 24px rgba(0,0,0,.3); | |
| } | |
| @keyframes card-in { | |
| from { opacity: 0; transform: translateY(14px); } | |
| to { opacity: 1; transform: translateY(0); } | |
| } | |
| .stat-label { | |
| font-size: .78rem; | |
| color: #8ba0c4; | |
| font-weight: 700; | |
| text-transform: uppercase; | |
| letter-spacing: .05em; | |
| } | |
| .stat-value { | |
| font-size: 1.7rem; | |
| font-weight: 900; | |
| margin-top: 6px; | |
| } | |
| .stat-card.accent-red .stat-value { color: #fb7185; } | |
| .stat-card.accent-green .stat-value { color: #34d399; } | |
| .stat-card.accent-orange .stat-value { color: #fbbf24; } | |
| .stat-card.accent-blue .stat-value { color: #6ea8fe; } | |
| /* ββ Section heading ββββββββββββββββββββββββββββββββ */ | |
| .section-heading { | |
| margin: 52px 0 20px; | |
| display: flex; | |
| align-items: center; | |
| gap: 14px; | |
| } | |
| .section-heading h2 { | |
| font-size: 1.15rem; | |
| font-weight: 800; | |
| color: #e8ecf6; | |
| letter-spacing: -.02em; | |
| } | |
| .section-line { | |
| flex: 1; | |
| height: 1px; | |
| background: #243356; | |
| } | |
| /* ββ Main action cards ββββββββββββββββββββββββββββββ */ | |
| .action-cards { | |
| display: grid; | |
| grid-template-columns: 1fr 1fr; | |
| gap: 18px; | |
| } | |
| .action-card { | |
| display: block; | |
| text-decoration: none; | |
| background: linear-gradient(135deg, #162244 0%, #111c33 100%); | |
| border: 1px solid #243356; | |
| border-radius: 18px; | |
| padding: 28px; | |
| transition: transform .2s, box-shadow .2s, border-color .2s; | |
| position: relative; | |
| overflow: hidden; | |
| animation: card-in .5s cubic-bezier(.16,1,.3,1) .1s both; | |
| } | |
| .action-card::before { | |
| content: ''; | |
| position: absolute; | |
| inset: 0; | |
| background: radial-gradient(ellipse 300px 200px at 0% 0%, rgba(110,168,254,.07), transparent); | |
| opacity: 0; | |
| transition: opacity .3s; | |
| } | |
| .action-card:hover { | |
| transform: translateY(-4px); | |
| border-color: rgba(110,168,254,.4); | |
| box-shadow: 0 12px 36px rgba(0,0,0,.35); | |
| } | |
| .action-card:hover::before { opacity: 1; } | |
| .action-card-icon { | |
| width: 52px; | |
| height: 52px; | |
| border-radius: 14px; | |
| background: rgba(110,168,254,.1); | |
| border: 1px solid rgba(110,168,254,.18); | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| color: #6ea8fe; | |
| margin-bottom: 18px; | |
| transition: background .2s, box-shadow .2s; | |
| } | |
| .action-card:hover .action-card-icon { | |
| background: rgba(110,168,254,.16); | |
| box-shadow: 0 0 18px rgba(110,168,254,.2); | |
| } | |
| .action-card h2 { | |
| font-size: 1.1rem; | |
| font-weight: 800; | |
| color: #e8ecf6; | |
| margin-bottom: 8px; | |
| letter-spacing: -.02em; | |
| } | |
| .action-card p { | |
| font-size: .88rem; | |
| color: #8ba0c4; | |
| line-height: 1.65; | |
| margin-bottom: 16px; | |
| } | |
| .action-card-cta { | |
| display: inline-flex; | |
| align-items: center; | |
| gap: 5px; | |
| font-size: .84rem; | |
| font-weight: 700; | |
| color: #6ea8fe; | |
| transition: gap .2s; | |
| } | |
| .action-card:hover .action-card-cta { gap: 9px; } | |
| /* ββ Mini cards βββββββββββββββββββββββββββββββββββββ */ | |
| .mini-cards { | |
| display: grid; | |
| grid-template-columns: repeat(3, 1fr); | |
| gap: 14px; | |
| margin-top: 18px; | |
| } | |
| .mini-card { | |
| display: block; | |
| text-decoration: none; | |
| background: #111c33; | |
| border: 1px solid #243356; | |
| border-radius: 14px; | |
| padding: 20px; | |
| transition: transform .2s, border-color .2s, box-shadow .2s; | |
| animation: card-in .5s cubic-bezier(.16,1,.3,1) .2s both; | |
| } | |
| .mini-card:hover { | |
| transform: translateY(-3px); | |
| border-color: rgba(110,168,254,.3); | |
| box-shadow: 0 8px 24px rgba(0,0,0,.25); | |
| } | |
| .mini-card-icon { | |
| color: #6ea8fe; | |
| margin-bottom: 12px; | |
| } | |
| .mini-card h3 { | |
| font-size: .95rem; | |
| font-weight: 700; | |
| color: #e8ecf6; | |
| margin-bottom: 4px; | |
| } | |
| .mini-card p { | |
| font-size: .82rem; | |
| color: #8ba0c4; | |
| line-height: 1.5; | |
| } | |
| /* ββ How it works βββββββββββββββββββββββββββββββββββ */ | |
| .how-section { margin: 52px 0 0; } | |
| .how-steps { | |
| display: grid; | |
| grid-template-columns: repeat(4, 1fr); | |
| gap: 14px; | |
| margin-top: 18px; | |
| } | |
| .how-step { | |
| background: #111c33; | |
| border: 1px solid #243356; | |
| border-radius: 14px; | |
| padding: 22px; | |
| animation: card-in .5s cubic-bezier(.16,1,.3,1) both; | |
| } | |
| .how-step:nth-child(1) { animation-delay: .05s; } | |
| .how-step:nth-child(2) { animation-delay: .12s; } | |
| .how-step:nth-child(3) { animation-delay: .19s; } | |
| .how-step:nth-child(4) { animation-delay: .26s; } | |
| .how-num { | |
| width: 30px; | |
| height: 30px; | |
| border-radius: 50%; | |
| background: linear-gradient(135deg, #6ea8fe, #6366f1); | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| font-size: .78rem; | |
| font-weight: 900; | |
| color: #fff; | |
| margin-bottom: 14px; | |
| box-shadow: 0 0 12px rgba(110,168,254,.35); | |
| } | |
| .how-step h4 { | |
| font-size: .9rem; | |
| font-weight: 700; | |
| color: #e8ecf6; | |
| margin-bottom: 6px; | |
| } | |
| .how-step p { | |
| font-size: .8rem; | |
| color: #8ba0c4; | |
| line-height: 1.6; | |
| } | |
| /* ββ Disclaimer βββββββββββββββββββββββββββββββββββββ */ | |
| .disclaimer-box { | |
| margin-top: 40px; | |
| padding: 16px 22px; | |
| border-radius: 14px; | |
| background: rgba(251,191,36,.05); | |
| border: 1px solid rgba(251,191,36,.18); | |
| font-size: .88rem; | |
| line-height: 1.65; | |
| color: #8ba0c4; | |
| display: flex; | |
| align-items: flex-start; | |
| gap: 12px; | |
| } | |
| .disclaimer-icon { | |
| color: #fbbf24; | |
| flex-shrink: 0; | |
| margin-top: 1px; | |
| } | |
| .disclaimer-box strong { color: #fbbf24; } | |
| /* ββ Responsive βββββββββββββββββββββββββββββββββββββ */ | |
| @media (max-width: 900px) { | |
| .stats-section { grid-template-columns: repeat(3, 1fr); } | |
| .how-steps { grid-template-columns: repeat(2, 1fr); } | |
| } | |
| @media (max-width: 640px) { | |
| .action-cards { grid-template-columns: 1fr; } | |
| .mini-cards { grid-template-columns: 1fr 1fr; } | |
| .stats-section { grid-template-columns: repeat(2, 1fr); } | |
| .how-steps { grid-template-columns: 1fr; } | |
| } | |