Spaces:
Running
Running
| :root { | |
| /* Theme (dark default) */ | |
| --bg: 11 15 23; /* Deep dark background */ | |
| --fg: 244 244 245; /* text-zinc-100 */ | |
| /* Colors (adjust to your preference) */ | |
| --color-primary-500: 99 102 241; /* indigo-500 */ | |
| --color-secondary-500: 34 197 94; /* emerald-500 */ | |
| --color-tertiary-500: 249 115 22; /* orange-500 */ | |
| /* Aliases for compatibility */ | |
| --primary: var(--color-primary-500); | |
| --secondary: var(--color-secondary-500); | |
| } | |
| /* Light theme overrides */ | |
| html.light { | |
| --bg: 250 250 250; | |
| --fg: 15 23 42; | |
| } | |
| /* Light theme specific adjustments */ | |
| html.light .glass-card { | |
| background: rgba(255, 255, 255, 0.8); | |
| border-color: rgba(15, 23, 42, 0.1); | |
| } | |
| html.light .text-zinc-100 { | |
| color: rgb(15, 23, 42); | |
| } | |
| html.light .text-zinc-200 { | |
| color: rgb(30, 41, 59); | |
| } | |
| html.light .text-zinc-300 { | |
| color: rgb(71, 85, 105); | |
| } | |
| html.light .text-zinc-400 { | |
| color: rgb(100, 116, 139); | |
| } | |
| html.light .border-white\/10 { | |
| border-color: rgba(15, 23, 42, 0.1); | |
| } | |
| html.light .bg-white\/5 { | |
| background: rgba(15, 23, 42, 0.05); | |
| } | |
| html.light .bg-white\/10 { | |
| background: rgba(15, 23, 42, 0.1); | |
| } | |
| html.light .nav-link { | |
| color: rgb(71, 85, 105); | |
| } | |
| html.light .nav-link:hover { | |
| color: rgb(15, 23, 42); | |
| background: rgba(15, 23, 42, 0.05); | |
| } | |
| html.light .mobile-link { | |
| color: rgb(71, 85, 105); | |
| } | |
| html.light .mobile-link:hover { | |
| color: rgb(15, 23, 42); | |
| background: rgba(15, 23, 42, 0.05); | |
| } | |
| html.light input, | |
| html.light textarea { | |
| background: rgba(255, 255, 255, 0.8); | |
| border-color: rgba(15, 23, 42, 0.15); | |
| color: rgb(15, 23, 42); | |
| } | |
| html.light input::placeholder, | |
| html.light textarea::placeholder { | |
| color: rgb(100, 116, 139); | |
| } | |
| html.light input.border-red-400, | |
| html.light textarea.border-red-400 { | |
| border-color: rgb(239, 68, 68); | |
| } | |
| html.light .chip { | |
| background: rgba(15, 23, 42, 0.05); | |
| border-color: rgba(15, 23, 42, 0.1); | |
| color: rgb(71, 85, 105); | |
| } | |
| /* Form labels positioning */ | |
| .label { | |
| @apply block text-sm font-medium text-zinc-300 mb-2; | |
| } | |
| /* Error message styling */ | |
| .error-message { | |
| @apply text-red-400 text-sm mt-1; | |
| } | |
| /* Light theme label colors */ | |
| html.light .label { | |
| color: rgb(71, 85, 105); | |
| } | |
| html.light .error-message { | |
| color: rgb(239, 68, 68); | |
| } | |
| /* Button loading state */ | |
| .btn-primary:disabled { | |
| @apply opacity-75 cursor-not-allowed; | |
| } | |
| .btn-primary:disabled:hover { | |
| @apply scale-100; | |
| } | |
| * { -webkit-tap-highlight-color: transparent; } | |
| html, body { | |
| height: 100%; | |
| background: rgb(var(--bg)); | |
| color: rgb(var(--fg)); | |
| } | |
| /* Smooth fonts */ | |
| body { | |
| font-feature-settings: "liga" 1, "calt" 1; | |
| } | |
| /* Glass effect */ | |
| .glass-card { | |
| backdrop-filter: saturate(180%) blur(10px); | |
| -webkit-backdrop-filter: saturate(180%) blur(10px); | |
| } | |
| /* Links */ | |
| a { text-decoration: none; } | |
| .nav-link { | |
| @apply px-3 py-2 rounded-md text-sm text-zinc-300 hover:text-white hover:bg-white/10 transition; | |
| } | |
| .mobile-link { | |
| @apply px-3 py-2 rounded-md text-zinc-300 hover:text-white hover:bg-white/10 transition; | |
| } | |
| /* Buttons */ | |
| .btn-primary { | |
| @apply inline-flex items-center gap-2 rounded-lg border border-white/10 bg-[color:rgb(var(--color-primary-500)_/_0.2)] text-[color:rgb(var(--color-primary-500))] hover:bg-[color:rgb(var(--color-primary-500)_/_0.3)] px-5 py-3 font-medium transition-all duration-200 shadow-glow hover:shadow-lg hover:scale-[1.02] relative overflow-hidden; | |
| } | |
| .btn-ghost { | |
| @apply inline-flex items-center gap-2 rounded-md border border-white/10 bg-white/5 hover:bg-white/10 text-zinc-200 hover:text-white px-4 py-2 font-medium transition-all duration-200; | |
| } | |
| /* Enhanced form styles */ | |
| .form-field-input { | |
| @apply w-full rounded-lg border border-white/10 bg-white/5 text-zinc-200 placeholder:text-zinc-500 px-4 py-3 outline-none focus:border-[color:rgb(var(--color-primary-500)_/_0.6)] focus:ring-2 focus:ring-[color:rgb(var(--color-primary-500)_/_0.2)] transition-all duration-200; | |
| } | |
| .form-field-input.pl-11 { | |
| padding-left: 2.75rem; | |
| } | |
| /* Form field hover and focus effects */ | |
| .form-field-input:hover { | |
| border-color: rgba(var(--color-primary-500), 0.3); | |
| background: rgba(255, 255, 255, 0.08); | |
| } | |
| .form-field-input:focus { | |
| transform: translateY(-1px); | |
| box-shadow: 0 4px 12px rgba(var(--color-primary-500), 0.15); | |
| } | |
| /* Enhanced error states */ | |
| .form-field-input.error { | |
| border-color: rgb(239, 68, 68); | |
| background: rgba(239, 68, 68, 0.05); | |
| animation: shake 0.3s ease-in-out; | |
| } | |
| @keyframes shake { | |
| 0%, 100% { transform: translateX(0); } | |
| 25% { transform: translateX(-5px); } | |
| 75% { transform: translateX(5px); } | |
| } | |
| /* Status indicator animations */ | |
| #form-status { | |
| @apply transition-all duration-300; | |
| } | |
| #form-status .feather { | |
| @apply transition-all duration-300; | |
| } | |
| /* Success state animation */ | |
| @keyframes success-pulse { | |
| 0% { transform: scale(1); } | |
| 50% { transform: scale(1.1); } | |
| 100% { transform: scale(1); } | |
| } | |
| #form-status.text-emerald-400 .feather { | |
| animation: success-pulse 0.5s ease-in-out; | |
| } | |
| /* Loading state for submit button */ | |
| .btn-primary:disabled { | |
| @apply opacity-75 cursor-not-allowed; | |
| position: relative; | |
| } | |
| .btn-primary:disabled::after { | |
| content: ''; | |
| position: absolute; | |
| top: 50%; | |
| left: 50%; | |
| width: 16px; | |
| height: 16px; | |
| margin: -8px 0 0 -8px; | |
| border: 2px solid transparent; | |
| border-top-color: currentColor; | |
| border-radius: 50%; | |
| animation: spin 0.8s linear infinite; | |
| } | |
| @keyframes spin { | |
| to { transform: rotate(360deg); } | |
| } | |
| /* Light theme form adjustments */ | |
| html.light .form-field-input { | |
| background: rgba(255, 255, 255, 0.9); | |
| border-color: rgba(15, 23, 42, 0.15); | |
| color: rgb(15, 23, 42); | |
| } | |
| html.light .form-field-input:hover { | |
| border-color: rgba(var(--color-primary-500), 0.3); | |
| background: rgba(255, 255, 255, 0.95); | |
| } | |
| html.light .form-field-input::placeholder { | |
| color: rgb(100, 116, 139); | |
| } | |
| html.light .form-field-input.error { | |
| background: rgba(239, 68, 68, 0.05); | |
| border-color: rgb(239, 68, 68); | |
| } | |
| /* Project type and budget radio button styles */ | |
| .project-type-radio input:checked + span, | |
| .budget-radio input:checked + span { | |
| transform: scale(1.02); | |
| box-shadow: 0 4px 12px rgba(var(--color-primary-500), 0.15); | |
| } | |
| .project-type-radio input:focus-visible + span, | |
| .budget-radio input:focus-visible + span { | |
| outline: 2px solid rgba(var(--color-primary-500), 0.5); | |
| outline-offset: 2px; | |
| } | |
| /* Enhanced checkbox styles */ | |
| input[type="checkbox"]:checked { | |
| background-color: rgb(var(--color-primary-500)); | |
| border-color: rgb(var(--color-primary-500)); | |
| } | |
| input[type="checkbox"]:checked::after { | |
| content: '✓'; | |
| display: block; | |
| text-align: center; | |
| color: white; | |
| font-size: 12px; | |
| line-height: 16px; | |
| } | |
| /* Form section spacing */ | |
| .space-y-6 > * + * { | |
| margin-top: 1.5rem; | |
| } | |
| .space-y-4 > * + * { | |
| margin-top: 1rem; | |
| } | |
| .space-y-3 > * + * { | |
| margin-top: 0.75rem; | |
| } | |
| /* Light theme radio button adjustments */ | |
| html.light .project-type-radio input:checked + span, | |
| html.light .budget-radio input:checked + span { | |
| background: rgba(var(--color-primary-500), 0.1); | |
| color: rgb(var(--color-primary-500)); | |
| } | |
| html.light input[type="checkbox"] { | |
| background: rgba(15, 23, 42, 0.05); | |
| border-color: rgba(15, 23, 42, 0.2); | |
| } | |
| html.light input[type="checkbox"]:checked { | |
| background-color: rgb(var(--color-primary-500)); | |
| border-color: rgb(var(--color-primary-500)); | |
| } | |
| /* Hover effects for project type icons */ | |
| .project-type-radio:hover span i, | |
| .budget-radio:hover span { | |
| transform: translateY(-1px); | |
| transition: all 0.2s ease; | |
| } | |
| /* Inputs */ | |
| .label { | |
| @apply block text-sm font-medium text-zinc-300 mb-2; | |
| } | |
| input, textarea { | |
| @apply w-full rounded-lg border border-white/10 bg-white/5 text-zinc-200 placeholder:text-zinc-500 px-4 py-3 outline-none focus:border-[color:rgb(var(--color-primary-500)_/_0.6)] focus:ring-2 focus:ring-[color:rgb(var(--color-primary-500)_/_0.2)] transition-all duration-200; | |
| } | |
| /* Chips */ | |
| .chip { | |
| @apply px-2.5 py-1 rounded-md border border-white/10 bg-white/5 text-xs text-zinc-300; | |
| } | |
| /* Selection */ | |
| ::selection { | |
| background: rgba(var(--color-primary-500), 0.35); | |
| color: white; | |
| } | |
| /* Progress bar for scroll (optional visual candy) */ | |
| #scroll-progress { | |
| position: fixed; | |
| top: 0; | |
| left: 0; | |
| height: 2px; | |
| width: 0%; | |
| background: linear-gradient(90deg, rgb(var(--color-primary-500)), rgb(var(--color-secondary-500))); | |
| z-index: 60; | |
| transition: width 0.1s linear; | |
| } | |
| /* Reduce motion for users who prefer it */ | |
| @media (prefers-reduced-motion: reduce) { | |
| .animate-blob, .animate-float { | |
| animation: none ; | |
| } | |
| } | |
| /* Typing animation styles */ | |
| .typing-cursor { | |
| display: inline-block; | |
| width: 2px; | |
| height: 1.2em; | |
| background: #a78bfa; | |
| margin-left: 2px; | |
| animation: blink 1s infinite; | |
| vertical-align: bottom; | |
| } | |
| .typing-cursor.hide { | |
| opacity: 0; | |
| } | |
| @keyframes blink { | |
| 0%, 50% { opacity: 1; } | |
| 51%, 100% { opacity: 0; } | |
| } | |
| /* Syntax highlighting for typing animation */ | |
| .typing-text { | |
| white-space: pre-wrap; | |
| word-break: break-word; | |
| } | |
| .keyword { | |
| color: #10b981; /* emerald-400 */ | |
| } | |
| .string { | |
| color: #f59e0b; /* amber-500 */ | |
| } | |
| .operator { | |
| color: #ec4899; /* pink-400 */ | |
| } | |
| .function { | |
| color: #38bdf8; /* sky-400 */ | |
| } | |
| .tag { | |
| color: #f87171; /* red-400 */ | |
| } | |
| .attr { | |
| color: #f59e0b; /* amber-500 */ | |
| } | |
| .comment { | |
| color: #6b7280; /* gray-500 */ | |
| } | |
| .punctuation { | |
| color: #9ca3af; /* gray-400 */ | |
| } | |