Spaces:
Sleeping
Sleeping
husseinelsaadi
Polish homepage feature cards: per-card accent color, gradient top bar, richer icon tiles
a99ecf6 | /* ===================================================================== | |
| Codingo — Premium design system (theme.css) | |
| Single source of truth for the product's visual layer. Linked AFTER the | |
| legacy inline <style> in base.html so these rules win and cascade across | |
| every page. | |
| Direction: premium, light & bright SaaS surface (Linear / Stripe / Vercel | |
| energy) — layered color-mesh backgrounds, hairline borders, soft depth, | |
| one confident brand gradient used as an accent. LUNA is the hero. | |
| ===================================================================== */ | |
| :root { | |
| /* Brand */ | |
| --brand-1: #6366f1; /* indigo */ | |
| --brand-2: #8b5cf6; /* violet */ | |
| --brand-3: #a855f7; /* magenta-violet (deep gradient stop) */ | |
| --spark: #22d3ee; /* cyan accent — used sparingly */ | |
| --grad: linear-gradient(135deg, #6366f1 0%, #8b5cf6 55%, #a855f7 100%); | |
| --grad-bright: linear-gradient(135deg, #6366f1 0%, #818cf8 50%, #22d3ee 100%); | |
| --grad-soft: linear-gradient(135deg, rgba(99,102,241,.12), rgba(139,92,246,.12)); | |
| /* Neutrals — cool light product surface */ | |
| --bg: #f4f5fb; | |
| --bg-2: #eef0fb; | |
| --surface: #ffffff; | |
| --surface-2: #fbfbfe; | |
| --ink: #0c1124; | |
| --ink-soft: #2a3052; | |
| --muted: #5e6781; | |
| --muted-2: #8b92ab; | |
| --line: #e7e9f4; | |
| --line-2: #eef0f8; | |
| /* Radius scale */ | |
| --r-xs: 10px; | |
| --r-sm: 14px; | |
| --r: 18px; | |
| --r-lg: 24px; | |
| --r-xl: 30px; | |
| --r-pill: 999px; | |
| /* Shadow scale — soft, layered, low-contrast */ | |
| --shadow-xs: 0 1px 2px rgba(12,17,36,.05); | |
| --shadow-sm: 0 2px 10px rgba(12,17,36,.06); | |
| --shadow: 0 14px 34px rgba(12,17,36,.09); | |
| --shadow-lg: 0 28px 64px rgba(12,17,36,.14); | |
| --shadow-brand: 0 14px 30px rgba(99,102,241,.30); | |
| --ring: 0 0 0 4px rgba(99,102,241,.18); | |
| /* Status */ | |
| --success: #16a34a; | |
| --warning: #d97706; | |
| --danger: #dc2626; | |
| /* Legacy variable names remapped so existing inline rules adopt the new palette */ | |
| --primary: #6366f1; | |
| --secondary: #8b5cf6; | |
| --accent: #6366f1; | |
| --light: #f4f5fb; | |
| --dark: #0c1124; | |
| } | |
| @media (prefers-reduced-motion: reduce) { | |
| * { animation-duration: .001ms ; animation-iteration-count: 1 ; transition-duration: .01ms ; } | |
| } | |
| /* ---- Typography ---------------------------------------------------- */ | |
| * { font-family: 'Inter', 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif; } | |
| h1, h2, h3, h4, .logo, .section-title h2, .hero h1, .hero h2, .cta h2, | |
| .card-header h2, .pipe-step h4 { | |
| font-family: 'Space Grotesk', 'Inter', sans-serif; | |
| letter-spacing: -0.025em; | |
| line-height: 1.12; | |
| } | |
| body { | |
| background: | |
| radial-gradient(900px 520px at 88% -8%, rgba(99,102,241,.06), transparent 60%), | |
| radial-gradient(820px 520px at 4% 8%, rgba(34,211,238,.045), transparent 55%), | |
| var(--bg); | |
| color: var(--ink); | |
| -webkit-font-smoothing: antialiased; | |
| text-rendering: optimizeLegibility; | |
| } | |
| a { color: var(--brand-1); } | |
| ::selection { background: rgba(99,102,241,.18); } | |
| /* Scroll-reveal utility (progressive enhancement, see base.html observer) */ | |
| [data-reveal] { opacity: 0; transform: translateY(22px); transition: opacity .7s cubic-bezier(.16,.84,.44,1), transform .7s cubic-bezier(.16,.84,.44,1); will-change: opacity, transform; } | |
| [data-reveal].is-in { opacity: 1; transform: none; } | |
| /* ===================================================================== | |
| Navbar — distinct deep-indigo branded bar | |
| ===================================================================== */ | |
| header { | |
| background: linear-gradient(100deg, #1e1b4b 0%, #312e81 48%, #4338ca 100%) ; | |
| -webkit-backdrop-filter: none; backdrop-filter: none; | |
| border-bottom: 1px solid rgba(255,255,255,.06) ; | |
| box-shadow: 0 10px 30px rgba(30,27,75,.28) ; | |
| padding: .85rem 1rem ; | |
| color: #fff ; | |
| position: sticky; top: 0; z-index: 100; | |
| } | |
| .nav-container { gap: 1rem; align-items: center; } | |
| .logo { font-size: 1.6rem ; font-weight: 700; color: #fff ; gap: 0 ; align-items: center; letter-spacing: -.01em; } | |
| .logo::before { | |
| content: ""; width: 28px; height: 28px; border-radius: 8px; margin-right: .6rem; | |
| background: linear-gradient(135deg, #818cf8, #22d3ee); | |
| box-shadow: 0 6px 16px rgba(34,211,238,.45); flex: 0 0 auto; display: inline-block; | |
| position: relative; | |
| } | |
| .logo .logo-part1 { color: #ffffff ; } | |
| .logo-part2 { color: #67e8f9 ; font-style: normal; animation: none; text-shadow: none; } | |
| .logo-part3 { color: #c4b5fd ; } | |
| .welcome-message { | |
| background: rgba(255,255,255,.12) ; color: #ffffff ; | |
| border-radius: var(--r-pill); border: 1px solid rgba(255,255,255,.2); | |
| font-weight: 600; font-size: .92rem; | |
| } | |
| .welcome-message:before { content: ''; margin-right: .15rem; } | |
| /* Nav buttons sit on the dark bar — light treatment */ | |
| header .btn-outline { | |
| background: rgba(255,255,255,.08) ; | |
| border: 1.5px solid rgba(255,255,255,.28) ; | |
| color: #fff ; -webkit-backdrop-filter: none; backdrop-filter: none; | |
| } | |
| header .btn-outline:hover { background: #fff ; border-color: #fff ; color: var(--brand-1) ; transform: translateY(-2px) ; } | |
| header .btn-logout { border: 1.5px solid rgba(255,255,255,.35) ; color: #fff ; } | |
| header .btn-logout:hover { background: #fff ; color: var(--brand-1) ; border-color: #fff ; } | |
| header .btn-primary { box-shadow: 0 8px 20px rgba(34,211,238,.35) ; } | |
| /* ===================================================================== | |
| Buttons | |
| ===================================================================== */ | |
| .btn { | |
| border-radius: var(--r-pill) ; | |
| font-weight: 600 ; | |
| letter-spacing: .005em; | |
| padding: .62rem 1.45rem ; | |
| font-size: .96rem; | |
| transition: transform .25s cubic-bezier(.16,.84,.44,1), box-shadow .25s, background-color .25s, border-color .25s, color .25s ; | |
| border: 1.5px solid transparent; | |
| display: inline-flex; align-items: center; justify-content: center; gap: .5rem; | |
| line-height: 1.1; | |
| } | |
| .btn::before { display: none ; } | |
| .btn-primary { | |
| background: var(--grad) ; | |
| color: #fff ; | |
| box-shadow: var(--shadow-brand) ; | |
| border-color: transparent ; | |
| } | |
| .btn-primary:hover { transform: translateY(-2px) ; box-shadow: 0 18px 38px rgba(99,102,241,.42) ; } | |
| .btn-primary:active { transform: translateY(0) ; } | |
| .btn-outline { | |
| background: rgba(255,255,255,.7) ; | |
| border: 1.5px solid var(--line) ; | |
| color: var(--ink) ; | |
| -webkit-backdrop-filter: blur(6px); backdrop-filter: blur(6px); | |
| } | |
| .btn-outline:hover { background: #fff ; border-color: rgba(99,102,241,.45) ; color: var(--brand-1) ; transform: translateY(-2px) ; box-shadow: var(--shadow-sm) ; } | |
| .btn-logout { | |
| background: transparent ; | |
| border: 1.5px solid rgba(99,102,241,.4) ; | |
| color: var(--brand-1) ; | |
| border-radius: var(--r-pill) ; | |
| padding: .55rem 1.3rem ; font-weight: 600 ; | |
| } | |
| .btn-logout:hover { background: var(--grad) ; color: #fff ; border-color: transparent ; transform: translateY(-2px) ; box-shadow: var(--shadow-brand) ; } | |
| .btn:focus-visible { outline: none; box-shadow: var(--ring) ; } | |
| /* ===================================================================== | |
| Hero — light color-mesh stage with LUNA as centerpiece | |
| ===================================================================== */ | |
| .hero { | |
| position: relative; | |
| background: | |
| radial-gradient(560px 320px at 14% 6%, rgba(99,102,241,.22), transparent 60%), | |
| radial-gradient(520px 300px at 86% 0%, rgba(34,211,238,.18), transparent 60%), | |
| radial-gradient(680px 420px at 50% 116%, rgba(168,85,247,.22), transparent 60%), | |
| radial-gradient(900px 500px at 50% 50%, rgba(255,255,255,.5), transparent 70%), | |
| linear-gradient(180deg, #fbfbff 0%, #eef1fe 55%, #e7ebfd 100%) ; | |
| color: var(--ink) ; | |
| padding: 2.4rem 1rem 3rem ; | |
| border-bottom: 1px solid var(--line); | |
| overflow: hidden; | |
| } | |
| /* faint dot grid texture, masked so it fades out toward the edges */ | |
| .hero::before { | |
| display: block ; content: '' ; | |
| position: absolute ; inset: 0 ; | |
| width: 100% ; height: 100% ; | |
| background: radial-gradient(rgba(99,102,241,.16) 1px, transparent 1.6px) ; | |
| background-size: 26px 26px ; | |
| -webkit-mask-image: radial-gradient(ellipse 78% 70% at 50% 4%, #000 30%, transparent 78%); | |
| mask-image: radial-gradient(ellipse 78% 70% at 50% 4%, #000 30%, transparent 78%); | |
| animation: none ; z-index: 0 ; pointer-events: none ; opacity: .9; | |
| } | |
| .hero .container { position: relative; z-index: 2; } | |
| .hero-content { position: relative; z-index: 2; gap: 0; } | |
| /* Two-column hero — copy left, portrait right (professional SaaS layout) */ | |
| .hero-split { | |
| display: grid ; | |
| grid-template-columns: 1.05fr .95fr; | |
| align-items: center; gap: clamp(1.5rem, 4vw, 3.5rem); | |
| text-align: left ; max-width: 1120px; margin: 0 auto; width: 100%; | |
| } | |
| .hero-copy { display: flex; flex-direction: column; align-items: flex-start; } | |
| .hero-split .hero-stage { justify-self: center; } | |
| @media (max-width: 880px) { | |
| .hero-split { grid-template-columns: 1fr; text-align: center ; justify-items: center; } | |
| .hero-copy { align-items: center; } | |
| .hero-split .hero-stage { order: -1; } | |
| } | |
| .hero h1 { | |
| font-size: clamp(2.1rem, 4.4vw, 3.2rem) ; | |
| font-weight: 700; color: var(--ink) ; | |
| margin: 0 0 1rem ; max-width: 15ch; text-wrap: balance; | |
| text-shadow: none ; transform: none ; | |
| } | |
| .hero h1 .grad-text { | |
| background: var(--grad); -webkit-background-clip: text; background-clip: text; | |
| -webkit-text-fill-color: transparent; color: transparent; | |
| } | |
| .hero p { | |
| color: var(--muted) ; font-size: clamp(1rem, 1.4vw, 1.15rem) ; | |
| max-width: 48ch; margin: 0 0 1.8rem ; line-height: 1.6; transform: none ; | |
| } | |
| .hero-split .hero-copy p { margin-left: 0 ; margin-right: 0 ; } | |
| @media (max-width: 880px) { .hero p { margin-left: auto ; margin-right: auto ; } } | |
| .hero-buttons { gap: 1rem ; transform: none ; } | |
| /* Eyebrow chip */ | |
| .eyebrow { | |
| display: inline-flex; align-items: center; gap: .5rem; | |
| padding: .35rem .95rem .35rem .65rem; margin-bottom: 1.1rem; | |
| border-radius: var(--r-pill); font-size: .8rem; font-weight: 600; letter-spacing: .01em; | |
| color: var(--brand-1); background: rgba(255,255,255,.75); | |
| border: 1px solid rgba(99,102,241,.22); | |
| box-shadow: var(--shadow-xs); -webkit-backdrop-filter: blur(8px); backdrop-filter: blur(8px); | |
| } | |
| .eyebrow .dot { width: 8px; height: 8px; border-radius: 50%; background: var(--grad); box-shadow: 0 0 0 4px rgba(99,102,241,.16); animation: blink 2.2s ease-in-out infinite; } | |
| @keyframes blink { 0%,100% { opacity: 1; } 50% { opacity: .35; } } | |
| /* ---- LUNA portrait stage — bigger, crisper, refined halo --------- */ | |
| .luna-avatar-container { | |
| position: relative; | |
| width: clamp(220px, 26vw, 300px) ; | |
| height: clamp(220px, 26vw, 300px) ; | |
| margin: 0 auto ; | |
| perspective: 1000px; | |
| } | |
| /* rotating conic gradient ring behind the portrait */ | |
| .luna-avatar-container::before { | |
| content: ""; position: absolute; inset: -16px; border-radius: 50%; | |
| background: conic-gradient(from 0deg, #6366f1, #22d3ee, #a855f7, #8b5cf6, #6366f1); | |
| filter: blur(2px); opacity: .9; z-index: 0; | |
| -webkit-mask: radial-gradient(circle, transparent 60%, #000 61%); | |
| mask: radial-gradient(circle, transparent 60%, #000 61%); | |
| animation: spin 14s linear infinite; | |
| } | |
| .luna-avatar-container::after { | |
| content: ""; position: absolute; inset: 8px; border-radius: 50%; | |
| box-shadow: inset 0 0 0 8px rgba(255,255,255,.9); z-index: 1; pointer-events: none; | |
| } | |
| @keyframes spin { to { transform: rotate(360deg); } } | |
| .luna-glow { | |
| position: absolute; inset: -6%; border-radius: 50%; z-index: 0 ; | |
| background: radial-gradient(circle, rgba(139,92,246,.45) 0%, rgba(34,211,238,.20) 45%, transparent 72%) ; | |
| opacity: .9 ; filter: blur(26px) ; | |
| animation: pulse 4.5s ease-in-out infinite alternate; | |
| } | |
| @keyframes pulse { 0% { transform: scale(.92); opacity: .55; } 100% { transform: scale(1.08); opacity: .9; } } | |
| .luna-avatar { | |
| width: 100% ; height: 100% ; border-radius: 50% ; | |
| border: 5px solid #ffffff ; | |
| box-shadow: 0 26px 60px rgba(12,17,36,.22), 0 0 0 1px rgba(99,102,241,.10) ; | |
| overflow: hidden; position: relative; z-index: 2 ; | |
| background: #eef1fe ; animation: float 6s ease-in-out infinite; | |
| } | |
| @keyframes float { 0%,100% { transform: translateY(0); } 50% { transform: translateY(-12px); } } | |
| .luna-avatar img { width: 100%; height: 100%; object-fit: cover; object-position: center top; } | |
| /* Floating accent chips around the portrait (added in index.html hero) */ | |
| .hero-stage { position: relative; display: inline-block; } | |
| .float-chip { | |
| position: absolute; z-index: 5; display: inline-flex; align-items: center; gap: .5rem; | |
| padding: .55rem .9rem; border-radius: var(--r-pill); | |
| background: rgba(255,255,255,.92); border: 1px solid var(--line); | |
| box-shadow: var(--shadow); font-size: .85rem; font-weight: 600; color: var(--ink-soft); | |
| -webkit-backdrop-filter: blur(8px); backdrop-filter: blur(8px); | |
| animation: floatChip 5s ease-in-out infinite; | |
| white-space: nowrap; | |
| } | |
| .float-chip .ico { | |
| width: 26px; height: 26px; border-radius: 8px; display: grid; place-items: center; | |
| background: var(--grad-soft); font-size: .95rem; | |
| } | |
| .float-chip.tl { top: -7%; left: -11%; animation-delay: .4s; } | |
| .float-chip.br { bottom: 6%; right: -12%; animation-delay: 1.4s; } | |
| @keyframes floatChip { 0%,100% { transform: translateY(0); } 50% { transform: translateY(-9px); } } | |
| /* ===================================================================== | |
| Landing page — full-viewport scroll-snap sections | |
| (each section fills one screen: Hero → Features → How it works) | |
| Scoped to body.landing so other pages scroll normally. | |
| ===================================================================== */ | |
| html:has(body.landing) { scroll-behavior: smooth; } | |
| body.landing { | |
| scroll-snap-type: y proximity; | |
| scroll-padding-top: 66px; | |
| scroll-behavior: smooth; | |
| } | |
| body.landing .hero, | |
| body.landing #features, | |
| body.landing #how { | |
| min-height: calc(100svh - 66px); | |
| scroll-snap-align: start; | |
| display: flex; | |
| flex-direction: column; | |
| justify-content: center; | |
| } | |
| body.landing .hero { min-height: calc(100svh - 66px); padding-top: 1.5rem ; padding-bottom: 1.5rem ; } | |
| body.landing #features, | |
| body.landing #how { padding-top: 2rem ; padding-bottom: 2rem ; } | |
| body.landing #features .section-title, | |
| body.landing #how .section-title { margin-bottom: 2rem ; } | |
| /* Disable snapping where a screen can't comfortably hold a full section */ | |
| @media (max-height: 620px), (max-width: 600px) { | |
| body.landing { scroll-snap-type: none; } | |
| body.landing .hero, | |
| body.landing #features, | |
| body.landing #how { min-height: 0; } | |
| } | |
| @media (prefers-reduced-motion: reduce) { | |
| body.landing { scroll-snap-type: none; } | |
| html:has(body.landing) { scroll-behavior: auto; } | |
| } | |
| /* ===================================================================== | |
| Sections / titles | |
| ===================================================================== */ | |
| .content-section, .features { | |
| background: | |
| radial-gradient(760px 340px at 90% 0%, rgba(99,102,241,.06), transparent 60%), | |
| radial-gradient(680px 320px at 4% 100%, rgba(34,211,238,.05), transparent 60%), | |
| transparent ; | |
| padding: 4.5rem 1rem ; | |
| } | |
| .section-title { margin-bottom: 3rem ; } | |
| .section-title h2 { color: var(--ink) ; font-size: clamp(1.85rem, 3.2vw, 2.55rem) ; } | |
| .section-title h2::after { background: var(--grad) ; height: 4px ; width: 64px ; border-radius: 4px; bottom: -14px ; } | |
| .section-title p { color: var(--muted) ; font-size: 1.08rem ; margin-top: 1.5rem; line-height: 1.6; } | |
| /* ===================================================================== | |
| Cards — premium light | |
| ===================================================================== */ | |
| .feature-card, .card, .job-card { | |
| background: var(--surface) ; | |
| border: 1px solid var(--line) ; | |
| border-radius: var(--r-lg) ; | |
| box-shadow: var(--shadow-sm) ; | |
| overflow: hidden; | |
| transition: transform .4s cubic-bezier(.16,.84,.44,1), box-shadow .4s, border-color .4s ; | |
| } | |
| .feature-card:hover, .job-card:hover { | |
| transform: translateY(-8px) ; | |
| box-shadow: var(--shadow-lg) ; | |
| border-color: rgba(99,102,241,.30) ; | |
| } | |
| .card:hover { transform: translateY(-4px) ; box-shadow: var(--shadow) ; border-color: rgba(99,102,241,.22) ; } | |
| /* Feature card */ | |
| .feature-card { display: flex; flex-direction: column; } | |
| .feature-icon { | |
| background: var(--grad-soft) ; | |
| font-size: 1.6rem ; color: var(--brand-1) ; | |
| padding: 1.6rem ; justify-content: flex-start ; | |
| } | |
| .feature-icon span { | |
| width: 60px; height: 60px; border-radius: 16px; display: grid; place-items: center; | |
| background: #fff; box-shadow: var(--shadow-sm); border: 1px solid var(--line); | |
| } | |
| .feature-card:hover .feature-icon { color: var(--brand-1) ; transform: none ; } | |
| .feature-content { padding: 0 1.6rem 1.7rem ; } | |
| .feature-content h3 { color: var(--ink) ; font-family: 'Space Grotesk', sans-serif; font-size: 1.25rem ; } | |
| .feature-content h3::after { background: var(--grad) ; height: 3px ; } | |
| .feature-content p { color: var(--muted) ; line-height: 1.6; } | |
| /* Generic card + headers */ | |
| .card { box-shadow: var(--shadow-sm) ; } | |
| .card-header { background: var(--grad) ; color: #fff; padding: 1.6rem 1.8rem ; position: relative; } | |
| .card-header h2, .card-header h3 { color: #fff ; } | |
| .card-header p { color: rgba(255,255,255,.88) ; margin-top: .35rem; } | |
| .card-body { padding: 1.8rem ; } | |
| /* Job cards */ | |
| .job-card { display: flex; flex-direction: column; } | |
| .job-header { background: var(--grad) ; color: #fff; padding: 1.35rem 1.5rem ; } | |
| .job-header h3 { font-family: 'Space Grotesk', sans-serif; font-size: 1.3rem ; color: #fff; } | |
| .job-info { color: rgba(255,255,255,.9); margin-top: .6rem ; gap: .5rem; } | |
| .job-info span { | |
| background: rgba(255,255,255,.18); border: 1px solid rgba(255,255,255,.22); | |
| padding: .22rem .7rem; border-radius: var(--r-pill); font-size: .8rem; font-weight: 600; | |
| } | |
| .job-body { padding: 1.4rem 1.5rem ; } | |
| .job-body .job-description p { color: var(--muted) ; line-height: 1.55; } | |
| .job-body > div:last-child { color: var(--muted-2); font-size: .85rem; font-weight: 500; } | |
| .job-footer { padding: 0 1.5rem 1.4rem ; } | |
| /* ===================================================================== | |
| Forms — unified, premium (applies across login/signup/apply/post_job) | |
| ===================================================================== */ | |
| .form-group { margin-bottom: 1.25rem; } | |
| label, .form-label, .form-group label { | |
| display: block ; margin-bottom: .5rem ; | |
| font-weight: 600 ; font-size: .9rem ; color: var(--ink-soft) ; | |
| letter-spacing: .005em; | |
| } | |
| .form-control, | |
| input[type="text"], input[type="email"], input[type="password"], | |
| input[type="number"], input[type="file"], textarea, select { | |
| width: 100% ; box-sizing: border-box; | |
| padding: .8rem 1rem ; font-size: 1rem ; | |
| color: var(--ink) ; | |
| background: var(--surface-2) ; | |
| border: 1.5px solid var(--line) ; | |
| border-radius: var(--r-sm) ; | |
| transition: border-color .25s, box-shadow .25s, background-color .25s ; | |
| font-family: 'Inter', sans-serif ; | |
| } | |
| textarea.form-control, textarea { resize: vertical; min-height: 96px; line-height: 1.55; } | |
| .form-control::placeholder, input::placeholder, textarea::placeholder { color: var(--muted-2) ; } | |
| .form-control:focus, | |
| input:focus, textarea:focus, select:focus { | |
| outline: none ; | |
| border-color: var(--brand-1) ; | |
| background: #fff ; | |
| box-shadow: var(--ring) ; | |
| } | |
| /* File input — custom button look */ | |
| input[type="file"] { padding: .55rem 1rem ; cursor: pointer; } | |
| input[type="file"]::file-selector-button { | |
| margin-right: 1rem; padding: .5rem 1rem; border: none; cursor: pointer; | |
| border-radius: var(--r-pill); font-weight: 600; font-size: .88rem; | |
| background: var(--grad-soft); color: var(--brand-1); | |
| transition: background-color .2s; | |
| } | |
| input[type="file"]::file-selector-button:hover { background: rgba(99,102,241,.18); } | |
| select { -webkit-appearance: none; appearance: none; | |
| background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24' fill='none' stroke='%235e6781' stroke-width='2.5'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E"); | |
| background-repeat: no-repeat; background-position: right 1rem center; padding-right: 2.6rem ; } | |
| /* Password strength bar */ | |
| .password-strength { height: 6px ; background: var(--line) ; border-radius: var(--r-pill) ; margin-top: .6rem ; overflow: hidden; } | |
| .password-strength-bar { border-radius: var(--r-pill) ; } | |
| /* Auth pages: card sits on a quiet mesh, override legacy radii from inline <style> */ | |
| .auth-form .form-control { border-radius: var(--r-sm) ; padding: .8rem 1rem ; border: 1.5px solid var(--line) ; } | |
| .auth-form .form-control:focus { border-color: var(--brand-1) ; box-shadow: var(--ring) ; } | |
| .auth-form .btn-primary, .application-actions .btn-primary, form .btn-primary { | |
| background: var(--grad) ; border-radius: var(--r-pill) ; | |
| box-shadow: var(--shadow-brand) ; padding: .8rem 1.6rem ; | |
| } | |
| .auth-form .btn-primary:hover { transform: translateY(-2px) ; box-shadow: 0 18px 38px rgba(99,102,241,.42) ; } | |
| .btn-secondary { | |
| background: rgba(99,102,241,.08) ; color: var(--brand-1) ; | |
| border: 1.5px solid rgba(99,102,241,.22) ; border-radius: var(--r-pill) ; | |
| padding: .8rem 1.4rem ; font-weight: 600; | |
| } | |
| .btn-secondary:hover { background: rgba(99,102,241,.14) ; transform: translateY(-2px); } | |
| /* ===================================================================== | |
| Dashboard table | |
| ===================================================================== */ | |
| .dashboard-table { border-collapse: separate ; border-spacing: 0; width: 100%; } | |
| .dashboard-table thead tr { background: transparent ; } | |
| .dashboard-table th { | |
| background: var(--bg-2) ; color: var(--ink-soft) ; | |
| font-weight: 700 ; font-size: .78rem ; text-transform: uppercase; letter-spacing: .06em; | |
| padding: .95rem 1rem ; border-bottom: 1px solid var(--line) ; text-align: left; | |
| } | |
| .dashboard-table th:first-child { border-top-left-radius: var(--r-sm); } | |
| .dashboard-table th:last-child { border-top-right-radius: var(--r-sm); } | |
| .dashboard-table td { padding: .95rem 1rem ; border-bottom: 1px solid var(--line-2) ; color: var(--ink-soft); font-size: .95rem; } | |
| .dashboard-table tbody tr { background: #fff ; transition: background-color .2s; } | |
| .dashboard-table tbody tr:nth-child(even) { background: var(--surface-2) ; } | |
| .dashboard-table tbody tr:hover { background: rgba(99,102,241,.05) ; } | |
| .dashboard-table td:nth-child(4) { font-weight: 700 ; color: var(--brand-2) ; } | |
| .download-report-btn { | |
| display: inline-flex ; align-items: center; gap: .4rem; | |
| padding: .5rem 1rem ; border-radius: var(--r-pill) ; | |
| border: 1.5px solid rgba(99,102,241,.3) ; color: var(--brand-1) ; | |
| background: rgba(99,102,241,.06) ; text-decoration: none; font-size: .85rem; font-weight: 600; | |
| transition: all .2s ease; | |
| } | |
| .download-report-btn:hover { background: var(--grad) ; color: #fff ; border-color: transparent ; box-shadow: var(--shadow-brand); transform: translateY(-1px); } | |
| /* ===================================================================== | |
| My Applications — cards + tips | |
| ===================================================================== */ | |
| .application-card { | |
| background: var(--surface) ; border: 1px solid var(--line) ; | |
| border-radius: var(--r-lg) ; box-shadow: var(--shadow-sm) ; | |
| padding: 0 ; overflow: hidden; | |
| transition: transform .4s cubic-bezier(.16,.84,.44,1), box-shadow .4s, border-color .4s; | |
| } | |
| .application-card:hover { transform: translateY(-6px); box-shadow: var(--shadow-lg) ; border-color: rgba(99,102,241,.3) ; } | |
| .application-header { background: var(--grad) ; padding: 1.25rem 1.4rem ; } | |
| .application-header h3 { color: #fff ; font-family: 'Space Grotesk', sans-serif; margin-bottom: .5rem ; } | |
| .application-info span { color: rgba(255,255,255,.92) ; font-size: .85rem; } | |
| .application-body { padding: 1.3rem 1.4rem ; color: var(--muted); } | |
| .application-body p { color: var(--muted) ; line-height: 1.55; margin-bottom: .5rem; } | |
| .application-footer { padding: 0 1.4rem 1.3rem ; } | |
| .application-footer .btn-outline { border: 1.5px solid rgba(99,102,241,.4) ; color: var(--brand-1) ; background: #fff ; } | |
| .application-footer .btn-outline:hover { background: var(--grad) ; color: #fff ; border-color: transparent ; } | |
| .tips-section { | |
| background: linear-gradient(135deg, rgba(99,102,241,.07), rgba(34,211,238,.05)) ; | |
| border: 1px solid rgba(99,102,241,.18) ; border-left: 4px solid var(--brand-1) ; | |
| border-radius: var(--r-lg) ; padding: 1.8rem 2rem ; box-shadow: var(--shadow-xs); | |
| } | |
| .tips-section h3 { color: var(--ink) ; font-family: 'Space Grotesk', sans-serif; } | |
| .tips-section li { color: var(--ink-soft); margin-bottom: .35rem; } | |
| .tips-section li::marker { color: var(--brand-1); } | |
| /* ===================================================================== | |
| CTA band — the single, confident gradient moment | |
| ===================================================================== */ | |
| .cta { | |
| background: var(--grad) ; position: relative; overflow: hidden; | |
| padding: 4.5rem 1rem ; | |
| } | |
| .cta::before { | |
| content: ''; position: absolute; inset: 0; | |
| background: radial-gradient(600px 300px at 15% 10%, rgba(255,255,255,.18), transparent 60%), | |
| radial-gradient(500px 280px at 90% 100%, rgba(34,211,238,.25), transparent 60%) ; | |
| animation: none ; top: 0; left: 0; width: 100%; height: 100%; transform: none; | |
| } | |
| .cta h2, .cta p { color: #fff ; text-shadow: none ; } | |
| .cta h2 { font-size: clamp(1.9rem, 3.2vw, 2.6rem) ; } | |
| .cta p { color: rgba(255,255,255,.9) ; } | |
| .cta .btn-primary { background: #fff ; color: var(--brand-1) ; box-shadow: 0 14px 30px rgba(12,17,36,.22) ; } | |
| .cta .btn-primary:hover { transform: translateY(-2px) ; box-shadow: 0 20px 40px rgba(12,17,36,.28) ; } | |
| /* ===================================================================== | |
| Footer — tidy, light, branded | |
| ===================================================================== */ | |
| footer { background: var(--surface) ; color: var(--muted) ; border-top: 1px solid var(--line); padding: 3.5rem 1rem 2.5rem ; } | |
| .footer-col p { color: var(--muted) ; line-height: 1.6; } | |
| .footer-col h3 { color: var(--ink) ; font-family: 'Space Grotesk', sans-serif; } | |
| .footer-col h3::after { background: var(--grad) ; } | |
| .footer-col a { color: var(--muted) ; text-decoration: none; transition: color .2s; } | |
| .footer-col a:hover { color: var(--brand-1) ; } | |
| .social-links a { background: var(--bg) ; color: var(--ink-soft) ; border: 1px solid var(--line); font-weight: 600; transition: all .25s; } | |
| .social-links a:hover { background: var(--grad) ; color: #fff ; border-color: transparent; transform: translateY(-3px); box-shadow: var(--shadow-brand); } | |
| .copyright { color: var(--muted-2) ; border-top: 1px solid var(--line) ; } | |
| /* ===================================================================== | |
| Flash alerts | |
| ===================================================================== */ | |
| .flash-messages .alert { border-radius: var(--r-sm) ; box-shadow: var(--shadow-xs) ; border-left-width: 4px ; font-weight: 500; } | |
| .alert-success { background: rgba(22,163,74,.10) ; color: #15803d ; border-left-color: var(--success) ; } | |
| .alert-warning { background: rgba(217,119,6,.10) ; color: #b45309 ; border-left-color: var(--warning) ; } | |
| .alert-danger { background: rgba(220,38,38,.10) ; color: #b91c1c ; border-left-color: var(--danger) ; } | |
| .alert-info { background: rgba(99,102,241,.10) ; color: var(--brand-1) ; border-left-color: var(--brand-1) ; } | |
| /* ===================================================================== | |
| Floating chatbot button + window | |
| ===================================================================== */ | |
| #chatbot-nav { background: var(--grad) ; box-shadow: 0 12px 30px rgba(99,102,241,.5) ; } | |
| #chatbot-nav:hover { transform: scale(1.08) translateY(-2px) ; } | |
| #chatbot-box { border-radius: var(--r-lg) ; border: 1px solid var(--line); box-shadow: var(--shadow-lg) ; overflow: hidden; } | |
| #chatbot-box #chat-input { border-top: 1px solid var(--line) ; } | |
| #chat-messages .user-bubble { background: var(--grad) ; color: #fff ; } | |
| /* ===================================================================== | |
| "How it works" animated pipeline | |
| ===================================================================== */ | |
| .pipeline { | |
| background: | |
| radial-gradient(700px 340px at 50% -10%, rgba(99,102,241,.07), transparent 60%), | |
| linear-gradient(180deg, var(--surface), var(--bg)) ; | |
| padding: 4.5rem 1rem ; | |
| border-top: 1px solid var(--line); border-bottom: 1px solid var(--line); | |
| } | |
| .pipe-track { display: grid; grid-template-columns: repeat(5, 1fr); gap: 1rem; max-width: 1120px; margin: 0 auto; position: relative; } | |
| .pipe-track::before { | |
| content: ''; position: absolute; top: 50px; left: 9%; right: 9%; height: 3px; | |
| background: linear-gradient(90deg, rgba(99,102,241,.18), rgba(139,92,246,.6), rgba(34,211,238,.18)); | |
| border-radius: 3px; z-index: 0; | |
| } | |
| .pipe-step { position: relative; z-index: 1; text-align: center; padding: 0 .5rem; opacity: 0; transform: translateY(18px); animation: pipeReveal .7s ease forwards; } | |
| .pipe-step:nth-child(1) { animation-delay: .15s; } | |
| .pipe-step:nth-child(2) { animation-delay: .40s; } | |
| .pipe-step:nth-child(3) { animation-delay: .65s; } | |
| .pipe-step:nth-child(4) { animation-delay: .90s; } | |
| .pipe-step:nth-child(5) { animation-delay: 1.15s; } | |
| .pipe-node { | |
| width: 100px; height: 100px; margin: 0 auto 1.2rem; border-radius: 26px; | |
| display: grid; place-items: center; font-size: 2.2rem; color: #fff; background: var(--grad); | |
| box-shadow: 0 16px 32px rgba(99,102,241,.35); position: relative; | |
| border: 4px solid #fff; | |
| } | |
| .pipe-node::after { content: ''; position: absolute; inset: -8px; border-radius: 30px; border: 2px solid rgba(139,92,246,.45); animation: pipeHalo 2.6s ease-in-out infinite; } | |
| .pipe-step:nth-child(even) .pipe-node::after { animation-delay: 1.3s; } | |
| .pipe-step h4 { color: var(--ink); margin-bottom: .45rem; font-size: 1.08rem; } | |
| .pipe-step p { color: var(--muted); font-size: .92rem; line-height: 1.5; } | |
| .pipe-num { display: inline-block; font-size: .72rem; font-weight: 700; color: var(--brand-1); background: var(--grad-soft); border: 1px solid rgba(99,102,241,.18); border-radius: var(--r-pill); padding: .18rem .75rem; margin-bottom: .8rem; } | |
| @keyframes pipeReveal { to { opacity: 1; transform: translateY(0); } } | |
| @keyframes pipeHalo { 0%,100% { transform: scale(1); opacity: .5; } 50% { transform: scale(1.08); opacity: 0; } } | |
| /* ===================================================================== | |
| Responsive | |
| ===================================================================== */ | |
| @media (max-width: 900px) { | |
| .float-chip { display: none; } | |
| } | |
| @media (max-width: 860px) { | |
| .pipe-track { grid-template-columns: 1fr 1fr; gap: 2rem 1rem; } | |
| .pipe-track::before { display: none; } | |
| } | |
| @media (max-width: 768px) { | |
| .hero { padding: 3rem 1rem 3.4rem ; } | |
| .section-title { margin-bottom: 2rem ; } | |
| .content-section, .features, .pipeline, .cta { padding: 3rem 1rem ; } | |
| .nav-container { flex-wrap: wrap; } | |
| } | |
| @media (max-width: 480px) { | |
| .pipe-track { grid-template-columns: 1fr; } | |
| .logo { font-size: 1.45rem ; } | |
| } | |
| /* ===================================================================== | |
| Feature cards — refined per-card accent treatment | |
| Each of the three cards gets its own color (indigo / cyan / violet): | |
| a gradient top bar, a richer icon tile, and a matching hover + underline. | |
| Content/markup unchanged — purely visual polish. | |
| ===================================================================== */ | |
| .features-grid { gap: 1.9rem; } | |
| .features-grid .feature-card { | |
| position: relative; | |
| background: var(--surface) ; | |
| } | |
| /* gradient accent bar along the top edge (clipped by the card radius) */ | |
| .features-grid .feature-card::before { | |
| content: ""; position: absolute; top: 0; left: 0; right: 0; height: 4px; z-index: 3; | |
| background: var(--grad); | |
| } | |
| .features-grid .feature-card:nth-child(1)::before { background: linear-gradient(90deg, #6366f1, #818cf8); } | |
| .features-grid .feature-card:nth-child(2)::before { background: linear-gradient(90deg, #06b6d4, #22d3ee); } | |
| .features-grid .feature-card:nth-child(3)::before { background: linear-gradient(90deg, #a855f7, #c084fc); } | |
| /* icon area: drop the flat band, let the tile carry the color */ | |
| .features-grid .feature-icon { background: transparent ; padding: 1.85rem 1.6rem .5rem ; } | |
| .features-grid .feature-icon span { | |
| width: 66px; height: 66px; border-radius: 18px; font-size: 2rem; | |
| display: grid; place-items: center; line-height: 1; | |
| border: 1px solid var(--line); | |
| transition: transform .35s cubic-bezier(.16,.84,.44,1), box-shadow .35s, border-color .35s; | |
| } | |
| .features-grid .feature-card:nth-child(1) .feature-icon span { | |
| background: linear-gradient(135deg, rgba(99,102,241,.18), rgba(129,140,248,.06)); | |
| border-color: rgba(99,102,241,.32); box-shadow: 0 8px 18px rgba(99,102,241,.20); | |
| } | |
| .features-grid .feature-card:nth-child(2) .feature-icon span { | |
| background: linear-gradient(135deg, rgba(34,211,238,.22), rgba(6,182,212,.07)); | |
| border-color: rgba(34,211,238,.38); box-shadow: 0 8px 18px rgba(34,211,238,.20); | |
| } | |
| .features-grid .feature-card:nth-child(3) .feature-icon span { | |
| background: linear-gradient(135deg, rgba(168,85,247,.18), rgba(192,132,252,.06)); | |
| border-color: rgba(168,85,247,.32); box-shadow: 0 8px 18px rgba(168,85,247,.20); | |
| } | |
| .features-grid .feature-card:hover .feature-icon span { transform: translateY(-3px) scale(1.05); } | |
| /* heading underline + hover border pick up each card's accent */ | |
| .features-grid .feature-card:nth-child(1) .feature-content h3::after { background: linear-gradient(90deg, #6366f1, #818cf8) ; } | |
| .features-grid .feature-card:nth-child(2) .feature-content h3::after { background: linear-gradient(90deg, #06b6d4, #22d3ee) ; } | |
| .features-grid .feature-card:nth-child(3) .feature-content h3::after { background: linear-gradient(90deg, #a855f7, #c084fc) ; } | |
| .features-grid .feature-card:nth-child(1):hover { border-color: rgba(99,102,241,.45) ; } | |
| .features-grid .feature-card:nth-child(2):hover { border-color: rgba(34,211,238,.50) ; } | |
| .features-grid .feature-card:nth-child(3):hover { border-color: rgba(168,85,247,.45) ; } | |