Spaces:
Sleeping
Sleeping
| @import "tailwindcss"; | |
| /* | |
| * FarmHelp - Custom Tailwind CSS Theme | |
| * Agricultural green palette with warm earth tones. | |
| */ | |
| @theme { | |
| /* Primary - Green (Agriculture) */ | |
| --color-primary-50: #f0fdf4; | |
| --color-primary-100: #dcfce7; | |
| --color-primary-200: #bbf7d0; | |
| --color-primary-300: #86efac; | |
| --color-primary-400: #4ade80; | |
| --color-primary-500: #22c55e; | |
| --color-primary-600: #16a34a; | |
| --color-primary-700: #15803d; | |
| --color-primary-800: #166534; | |
| --color-primary-900: #14532d; | |
| --color-primary-950: #052e16; | |
| /* Secondary - Earth/Amber */ | |
| --color-secondary-50: #fffbeb; | |
| --color-secondary-100: #fef3c7; | |
| --color-secondary-200: #fde68a; | |
| --color-secondary-300: #fcd34d; | |
| --color-secondary-400: #fbbf24; | |
| --color-secondary-500: #f59e0b; | |
| --color-secondary-600: #d97706; | |
| --color-secondary-700: #b45309; | |
| --color-secondary-800: #92400e; | |
| --color-secondary-900: #78350f; | |
| --color-secondary-950: #451a03; | |
| /* Accent - Sky Blue (Weather) */ | |
| --color-accent-50: #f0f9ff; | |
| --color-accent-100: #e0f2fe; | |
| --color-accent-200: #bae6fd; | |
| --color-accent-300: #7dd3fc; | |
| --color-accent-400: #38bdf8; | |
| --color-accent-500: #0ea5e9; | |
| --color-accent-600: #0284c7; | |
| --color-accent-700: #0369a1; | |
| --color-accent-800: #075985; | |
| --color-accent-900: #0c4a6e; | |
| --color-accent-950: #082f49; | |
| /* Danger - Red (Alerts/Disease) */ | |
| --color-danger-50: #fef2f2; | |
| --color-danger-100: #fee2e2; | |
| --color-danger-200: #fecaca; | |
| --color-danger-300: #fca5a5; | |
| --color-danger-400: #f87171; | |
| --color-danger-500: #ef4444; | |
| --color-danger-600: #dc2626; | |
| --color-danger-700: #b91c1c; | |
| --color-danger-800: #991b1b; | |
| --color-danger-900: #7f1d1d; | |
| --color-danger-950: #450a0a; | |
| /* Neutral - Slate */ | |
| --color-neutral-50: #f8fafc; | |
| --color-neutral-100: #f1f5f9; | |
| --color-neutral-200: #e2e8f0; | |
| --color-neutral-300: #cbd5e1; | |
| --color-neutral-400: #94a3b8; | |
| --color-neutral-500: #64748b; | |
| --color-neutral-600: #475569; | |
| --color-neutral-700: #334155; | |
| --color-neutral-800: #1e293b; | |
| --color-neutral-900: #0f172a; | |
| --color-neutral-950: #020617; | |
| /* Font families */ | |
| --font-sans: "Inter", ui-sans-serif, system-ui, sans-serif, | |
| "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", | |
| "Noto Color Emoji"; | |
| --font-display: "Poppins", ui-sans-serif, system-ui, sans-serif; | |
| --font-mono: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, | |
| "Liberation Mono", monospace; | |
| /* Custom breakpoints */ | |
| --breakpoint-xs: 475px; | |
| /* Custom animations */ | |
| --animate-fade-in: fade-in 0.3s ease-out; | |
| --animate-slide-up: slide-up 0.4s ease-out; | |
| --animate-slide-down: slide-down 0.3s ease-out; | |
| --animate-pulse-slow: pulse 3s cubic-bezier(0.4, 0, 0.6, 1) infinite; | |
| --animate-bounce-gentle: bounce-gentle 1s infinite; | |
| --animate-shimmer: shimmer 1.8s ease-in-out infinite; | |
| /* Shadows */ | |
| --shadow-card: 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1); | |
| --shadow-card-hover: 0 10px 15px -3px rgb(0 0 0 / 0.1), | |
| 0 4px 6px -4px rgb(0 0 0 / 0.1); | |
| --shadow-float: 0 20px 25px -5px rgb(0 0 0 / 0.1), | |
| 0 8px 10px -6px rgb(0 0 0 / 0.1); | |
| } | |
| /* ----------------------------------------------------------------------- | |
| * Keyframes | |
| * ----------------------------------------------------------------------- */ | |
| @keyframes fade-in { | |
| from { | |
| opacity: 0; | |
| } | |
| to { | |
| opacity: 1; | |
| } | |
| } | |
| @keyframes slide-up { | |
| from { | |
| opacity: 0; | |
| transform: translateY(10px); | |
| } | |
| to { | |
| opacity: 1; | |
| transform: translateY(0); | |
| } | |
| } | |
| @keyframes slide-down { | |
| from { | |
| opacity: 0; | |
| transform: translateY(-10px); | |
| } | |
| to { | |
| opacity: 1; | |
| transform: translateY(0); | |
| } | |
| } | |
| @keyframes bounce-gentle { | |
| 0%, | |
| 100% { | |
| transform: translateY(-5%); | |
| animation-timing-function: cubic-bezier(0.8, 0, 1, 1); | |
| } | |
| 50% { | |
| transform: translateY(0); | |
| animation-timing-function: cubic-bezier(0, 0, 0.2, 1); | |
| } | |
| } | |
| @keyframes shimmer { | |
| 0% { | |
| background-position: -200% 0; | |
| } | |
| 100% { | |
| background-position: 200% 0; | |
| } | |
| } | |
| /* ----------------------------------------------------------------------- | |
| * Base Layer | |
| * ----------------------------------------------------------------------- */ | |
| @layer base { | |
| html { | |
| scroll-behavior: smooth; | |
| -webkit-font-smoothing: antialiased; | |
| -moz-osx-font-smoothing: grayscale; | |
| } | |
| body { | |
| @apply bg-neutral-50 text-neutral-800 font-sans; | |
| min-height: 100vh; | |
| line-height: 1.6; | |
| transition: background-color 0.3s ease, color 0.3s ease; | |
| } | |
| h1, | |
| h2, | |
| h3, | |
| h4, | |
| h5, | |
| h6 { | |
| @apply font-display font-semibold text-neutral-900; | |
| line-height: 1.3; | |
| } | |
| h1 { | |
| letter-spacing: -0.025em; | |
| } | |
| h2 { | |
| letter-spacing: -0.02em; | |
| } | |
| p { | |
| line-height: 1.7; | |
| } | |
| /* Improved focus-visible indicators for accessibility */ | |
| :focus-visible { | |
| outline: 2px solid var(--color-primary-500); | |
| outline-offset: 2px; | |
| border-radius: 4px; | |
| } | |
| /* Remove default focus ring, rely on focus-visible */ | |
| :focus:not(:focus-visible) { | |
| outline: none; | |
| } | |
| /* Skip-to-content link (screen reader accessible) */ | |
| .sr-skip-link { | |
| position: absolute; | |
| top: -9999px; | |
| left: -9999px; | |
| z-index: 9999; | |
| } | |
| .sr-skip-link:focus { | |
| position: fixed; | |
| top: 1rem; | |
| left: 1rem; | |
| padding: 0.75rem 1.5rem; | |
| background: var(--color-primary-600); | |
| color: white; | |
| border-radius: 0.5rem; | |
| font-weight: 600; | |
| font-size: 0.875rem; | |
| box-shadow: 0 4px 6px -1px rgb(0 0 0 / 0.1); | |
| } | |
| } | |
| /* ----------------------------------------------------------------------- | |
| * Utility Classes | |
| * ----------------------------------------------------------------------- */ | |
| @layer utilities { | |
| /* Gradient background for headers */ | |
| .bg-gradient-header { | |
| background: linear-gradient( | |
| 135deg, | |
| var(--color-primary-600) 0%, | |
| var(--color-primary-700) 50%, | |
| var(--color-primary-800) 100% | |
| ); | |
| } | |
| /* Shimmer effect for skeleton loaders */ | |
| .shimmer { | |
| background: linear-gradient( | |
| 90deg, | |
| transparent 0%, | |
| rgba(255, 255, 255, 0.4) 50%, | |
| transparent 100% | |
| ); | |
| background-size: 200% 100%; | |
| animation: shimmer 1.8s ease-in-out infinite; | |
| } | |
| /* Card hover lift */ | |
| .hover-lift { | |
| transition: transform 0.2s ease, box-shadow 0.2s ease; | |
| } | |
| .hover-lift:hover { | |
| transform: translateY(-2px); | |
| box-shadow: var(--shadow-card-hover); | |
| } | |
| /* Feature tour spotlight */ | |
| .tour-spotlight { | |
| box-shadow: 0 0 0 9999px rgba(0, 0, 0, 0.6); | |
| border-radius: 8px; | |
| position: fixed; | |
| z-index: 9998; | |
| pointer-events: none; | |
| transition: all 0.3s ease; | |
| } | |
| } | |