Spaces:
Sleeping
Sleeping
| /* ===================================================================== | |
| Codingo — Premium design system (theme.css) | |
| Single source of truth for the new look. Linked AFTER the legacy inline | |
| <style> in base.html so these rules win and cascade across every page. | |
| Direction: premium light product + cinematic dark hero/navbar/footer. | |
| ===================================================================== */ | |
| :root { | |
| /* Brand */ | |
| --brand-1: #6366f1; /* indigo */ | |
| --brand-2: #8b5cf6; /* violet */ | |
| --spark: #22d3ee; /* cyan accent */ | |
| --grad: linear-gradient(135deg, var(--brand-1), var(--brand-2)); | |
| --grad-soft: linear-gradient(135deg, rgba(99,102,241,.12), rgba(139,92,246,.12)); | |
| /* Neutrals (light product surface) */ | |
| --bg: #f5f6fb; | |
| --surface: #ffffff; | |
| --ink: #0b1020; | |
| --muted: #5b6478; | |
| --line: #e7e9f2; | |
| /* Night (hero / navbar / footer) */ | |
| --night: #0b1020; | |
| --night-2: #141a2e; | |
| /* Radius + shadow + spacing scale */ | |
| --r-sm: 12px; | |
| --r: 18px; | |
| --r-lg: 26px; | |
| --shadow-sm: 0 2px 8px rgba(13, 20, 40, .06); | |
| --shadow: 0 12px 30px rgba(13, 20, 40, .08); | |
| --shadow-lg: 0 24px 60px rgba(13, 20, 40, .14); | |
| /* Legacy variable names remapped so existing rules adopt the new palette */ | |
| --primary: #6366f1; | |
| --secondary: #8b5cf6; | |
| --accent: #22d3ee; | |
| --light: #f5f6fb; | |
| --dark: #0b1020; | |
| } | |
| /* ---- Typography ---------------------------------------------------- */ | |
| * { font-family: 'Inter', 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif; } | |
| h1, h2, h3, .logo, .section-title h2, .hero h1, .cta h2 { | |
| font-family: 'Space Grotesk', 'Inter', sans-serif; | |
| letter-spacing: -0.02em; | |
| } | |
| body { | |
| background: var(--bg); | |
| color: var(--ink); | |
| -webkit-font-smoothing: antialiased; | |
| text-rendering: optimizeLegibility; | |
| } | |
| /* ---- Glass navbar (dark, keeps white nav buttons working) --------- */ | |
| header { | |
| background: rgba(255, 255, 255, .8) ; | |
| -webkit-backdrop-filter: saturate(180%) blur(14px); | |
| backdrop-filter: saturate(180%) blur(14px); | |
| border-bottom: 1px solid var(--line) ; | |
| box-shadow: 0 1px 0 rgba(13, 20, 40, .04), 0 8px 24px rgba(13, 20, 40, .04) ; | |
| padding: .85rem 1rem ; | |
| color: var(--ink) ; | |
| } | |
| .logo, .logo-part1 { font-weight: 700; color: var(--ink) ; } | |
| .logo-part2 { color: var(--brand-1) ; font-style: normal; animation: none; text-shadow: none; } | |
| .logo-part3 { color: var(--brand-2) ; } | |
| .welcome-message { background: rgba(99, 102, 241, .08) ; color: var(--ink) ; border-radius: 999px; } | |
| /* ---- Buttons ------------------------------------------------------- */ | |
| .btn { | |
| border-radius: 999px ; | |
| font-weight: 600; | |
| letter-spacing: .01em; | |
| padding: .6rem 1.4rem ; | |
| } | |
| .btn-primary { | |
| background: var(--grad) ; | |
| color: #fff ; | |
| box-shadow: 0 10px 24px rgba(99, 102, 241, .35) ; | |
| } | |
| .btn-primary:hover { box-shadow: 0 14px 30px rgba(99, 102, 241, .45) ; } | |
| .btn-outline { | |
| background: var(--surface) ; | |
| border: 1.5px solid var(--line) ; | |
| color: var(--ink) ; | |
| } | |
| .btn-outline:hover { background: #f0f1fb ; border-color: rgba(99, 102, 241, .4) ; } | |
| .btn-logout { | |
| background: transparent ; | |
| border: 1.5px solid rgba(99, 102, 241, .45) ; | |
| color: var(--brand-1) ; | |
| border-radius: 999px ; | |
| } | |
| .btn-logout:hover { background: var(--grad) ; color: #fff ; border-color: transparent ; } | |
| /* ---- Clean, professional light hero ------------------------------- */ | |
| .hero { | |
| background: | |
| radial-gradient(900px 420px at 50% -10%, rgba(99, 102, 241, .10), transparent 70%), | |
| linear-gradient(180deg, #ffffff 0%, #f5f6ff 60%, var(--bg) 100%) ; | |
| color: var(--ink) ; | |
| padding: 5rem 1rem 5.5rem ; | |
| border-bottom: 1px solid var(--line); | |
| } | |
| .hero::before { display: none ; } | |
| .hero h1 { font-size: clamp(2.1rem, 5vw, 3.4rem) ; font-weight: 700; color: var(--ink) ; } | |
| .hero p { color: var(--muted) ; font-size: 1.15rem ; } | |
| /* LUNA avatar — soft, restrained ring (no light show) */ | |
| .luna-avatar { border: 4px solid #ffffff ; | |
| box-shadow: 0 18px 45px rgba(13, 20, 40, .14), 0 0 0 1px var(--line) ; } | |
| .luna-glow { background: radial-gradient(circle, rgba(99, 102, 241, .28) 0%, rgba(99, 102, 241, 0) 70%) ; | |
| opacity: .5 ; } | |
| /* Eyebrow chip — tasteful brand accent on light */ | |
| .eyebrow { | |
| display: inline-flex; align-items: center; gap: .5rem; | |
| padding: .4rem 1rem; margin-bottom: 1.25rem; | |
| border-radius: 999px; font-size: .85rem; font-weight: 600; | |
| color: var(--brand-1); background: var(--grad-soft); | |
| border: 1px solid rgba(99, 102, 241, .2); | |
| } | |
| .eyebrow .dot { width: 8px; height: 8px; border-radius: 50%; background: var(--brand-1); | |
| animation: pulse 2s ease-in-out infinite alternate; } | |
| /* ---- Sections / titles -------------------------------------------- */ | |
| .content-section, .features { background: var(--bg) ; } | |
| .section-title h2 { color: var(--ink) ; font-size: 2.3rem ; } | |
| .section-title h2::after { background: var(--grad) ; height: 4px ; border-radius: 4px; } | |
| .section-title p { color: var(--muted) ; font-size: 1.05rem; } | |
| /* ---- Cards (premium light) ---------------------------------------- */ | |
| .feature-card, .card, .job-card { | |
| background: var(--surface) ; | |
| border: 1px solid var(--line) ; | |
| border-radius: var(--r) ; | |
| box-shadow: var(--shadow-sm) ; | |
| transition: transform .35s ease, box-shadow .35s ease, border-color .35s ease ; | |
| } | |
| .feature-card:hover, .card:hover, .job-card:hover { | |
| transform: translateY(-8px) ; | |
| box-shadow: var(--shadow-lg) ; | |
| border-color: rgba(99, 102, 241, .35) ; | |
| } | |
| .feature-icon { | |
| background: var(--grad-soft) ; | |
| font-size: 2.2rem ; | |
| color: var(--brand-1) ; | |
| } | |
| .feature-content h3 { color: var(--ink) ; } | |
| .feature-content h3::after { background: var(--grad) ; } | |
| /* Job card headers adopt the brand gradient */ | |
| .job-header, .card-header { background: var(--grad) ; } | |
| /* ---- CTA band — the single, tasteful gradient moment -------------- */ | |
| .cta { | |
| background: linear-gradient(135deg, var(--brand-1), var(--brand-2)) ; | |
| } | |
| .cta h2, .cta p { color: #fff ; } | |
| /* ---- Footer (light) ----------------------------------------------- */ | |
| footer { background: var(--surface) ; color: var(--muted) ; border-top: 1px solid var(--line); } | |
| .footer-col p { color: var(--muted) ; } | |
| .footer-col h3 { color: var(--ink) ; } | |
| .footer-col h3::after { background: var(--grad) ; } | |
| .footer-col a { color: var(--muted) ; } | |
| .footer-col a:hover { color: var(--brand-1) ; } | |
| .social-links a { background: var(--bg) ; color: var(--ink) ; border: 1px solid var(--line); } | |
| .social-links a:hover { background: var(--grad) ; color: #fff ; border-color: transparent; } | |
| .copyright { color: var(--muted) ; border-top: 1px solid var(--line) ; } | |
| /* ---- Floating chatbot button -------------------------------------- */ | |
| #chatbot-nav { background: var(--grad) ; box-shadow: 0 10px 26px rgba(99, 102, 241, .5) ; } | |
| #chatbot-nav:hover { transform: scale(1.08) ; } | |
| #chat-messages .user-bubble { background: var(--grad) ; } | |
| /* ===================================================================== | |
| "How it works" animated pipeline (used on the landing page) | |
| Pure CSS reveal — auto-plays on load, films beautifully. | |
| ===================================================================== */ | |
| .pipeline { background: linear-gradient(180deg, #fff, var(--bg)); padding: 5rem 1rem; } | |
| .pipe-track { | |
| display: grid; | |
| grid-template-columns: repeat(5, 1fr); | |
| gap: 1rem; | |
| max-width: 1100px; | |
| margin: 0 auto; | |
| position: relative; | |
| } | |
| .pipe-track::before { | |
| content: ''; position: absolute; top: 46px; left: 8%; right: 8%; height: 3px; | |
| background: linear-gradient(90deg, rgba(99,102,241,.15), rgba(139,92,246,.5), rgba(34,211,238,.15)); | |
| 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: 92px; height: 92px; margin: 0 auto 1.1rem; border-radius: 24px; | |
| display: grid; place-items: center; font-size: 2.1rem; | |
| color: #fff; background: var(--grad); | |
| box-shadow: 0 14px 30px rgba(99, 102, 241, .35); | |
| position: relative; | |
| } | |
| .pipe-node::after { | |
| content: ''; position: absolute; inset: -6px; border-radius: 28px; | |
| border: 2px solid rgba(139, 92, 246, .4); | |
| animation: pipeHalo 2.4s ease-in-out infinite; | |
| } | |
| .pipe-step:nth-child(even) .pipe-node::after { animation-delay: 1.2s; } | |
| .pipe-step h4 { font-family: 'Space Grotesk', sans-serif; color: var(--ink); margin-bottom: .4rem; font-size: 1.05rem; } | |
| .pipe-step p { color: var(--muted); font-size: .92rem; line-height: 1.45; } | |
| .pipe-num { | |
| display: inline-block; font-size: .75rem; font-weight: 700; color: var(--brand-1); | |
| background: var(--grad-soft); border-radius: 999px; padding: .15rem .7rem; 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; } | |
| } | |
| @media (max-width: 860px) { | |
| .pipe-track { grid-template-columns: 1fr 1fr; } | |
| .pipe-track::before { display: none; } | |
| } | |
| @media (max-width: 480px) { | |
| .pipe-track { grid-template-columns: 1fr; } | |
| } | |