diff --git a/chat.css b/chat.css index 4a469ac5..4549e24a 100644 --- a/chat.css +++ b/chat.css @@ -1,53 +1,73 @@ /* Import theme system */ @import url("theme.css"); -* { - margin: 0; - padding: 0; - box-sizing: border-box; - font-family: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, - sans-serif; - transition: background-color 0.3s ease, color 0.3s ease, - border-color 0.3s ease; +/* ========================================= + Glassmorphism & Advanced UI Variables + ========================================= */ +:root { + /* Core Chat Colors */ + --chat-bg-light: rgba(255, 255, 255, 0.85); + --chat-bg-dark: rgba(15, 23, 42, 0.85); + + --glass-border-light: rgba(255, 255, 255, 0.5); + --glass-border-dark: rgba(255, 255, 255, 0.1); + + --user-msg-bg: linear-gradient(135deg, #22c55e, #16a34a); + --user-msg-text: #ffffff; + + --bot-msg-bg-light: #ffffff; + --bot-msg-bg-dark: #1e293b; + + --bot-msg-text-light: #334155; + --bot-msg-text-dark: #e2e8f0; + + --accent-glow: 0 0 20px rgba(34, 197, 94, 0.3); } -:root { - --primary-green: #2e7d32; - --light-green: #4caf50; - --dark-green: #2e7d32; - --accent-green: #4caf50; - --bg-primary: #f0f4f7; - --bg-secondary: #ffffff; - --text-primary: #333; - --text-secondary: #616161; - --border-light: #e0e0e0; - --shadow-sm: 0 1px 3px 0 rgb(0 0 0 / 0.1); - --shadow-md: 0 4px 6px -1px rgb(0 0 0 / 0.1); - --shadow-lg: 0 10px 15px -3px rgb(0 0 0 / 0.1); - --shadow-xl: 0 20px 25px -5px rgb(0 0 0 / 0.1); +/* ========================================= + Base Layout & resets + ========================================= */ +* { + box-sizing: border-box; } body { - background-color: var(--bg-secondary, #f0f4f7); - color: var(--text-primary, #333); + margin: 0; + padding: 0; + font-family: var(--font-primary, 'Open Sans', sans-serif); + background-color: var(--bg-primary); + color: var(--text-primary); + min-height: 100vh; display: flex; flex-direction: column; - min-height: 100vh; - line-height: 1.6; + background-image: + radial-gradient(circle at 10% 20%, rgba(34, 197, 94, 0.05) 0%, transparent 40%), + radial-gradient(circle at 90% 80%, rgba(22, 163, 74, 0.05) 0%, transparent 40%); + background-attachment: fixed; } +/* ========================================= + Header Styling + ========================================= */ header { - background: linear-gradient(to right, #2e7d32, #4caf50); - color: white; - padding: 1.5rem 0; - box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1); - position: relative; + background: rgba(255, 255, 255, 0.8); + backdrop-filter: blur(12px); + -webkit-backdrop-filter: blur(12px); + border-bottom: 1px solid var(--border-color); + position: sticky; + top: 0; + z-index: 100; + transition: all 0.3s ease; +} + +[data-theme="dark"] header { + background: rgba(15, 23, 42, 0.8); } .header-content { max-width: 1200px; margin: 0 auto; - padding: 0 1.5rem; + padding: 1rem 1.5rem; display: flex; justify-content: space-between; align-items: center; @@ -56,130 +76,184 @@ header { .logo { display: flex; align-items: center; - gap: 12px; + gap: 0.75rem; + text-decoration: none; } .logo i { - font-size: 2rem; - color: white; - animation: gentle-bounce 3s ease-in-out infinite; + font-size: 1.8rem; + color: var(--primary-green); + filter: drop-shadow(0 2px 4px rgba(22, 197, 94, 0.2)); + transition: transform 0.3s cubic-bezier(0.34, 1.56, 0.64, 1); } -@keyframes gentle-bounce { - 0%, - 100% { - transform: translateY(0); - } - 50% { - transform: translateY(-3px); - } +.logo:hover i { + transform: rotate(20deg) scale(1.1); } .logo h1 { - font-size: 1.8rem; - font-weight: 600; - color: white; + font-size: 1.5rem; + font-weight: 700; + color: var(--text-primary); + font-family: var(--font-serif); + margin: 0; +} + +.header-actions { + display: flex; + gap: 1rem; + align-items: center; } .nav-back { - color: white; - background-color: rgba(255, 255, 255, 0.2); - padding: 10px 20px; - border-radius: 50px; - font-size: 1rem; - cursor: pointer; - text-decoration: none; - transition: all 0.3s ease; - border: none; display: flex; align-items: center; - gap: 8px; + gap: 0.5rem; + padding: 0.5rem 1rem; + border-radius: 50px; + text-decoration: none; + font-weight: 500; + font-size: 0.9rem; + color: var(--text-primary); + background: var(--bg-tertiary); + transition: all 0.2s ease; + border: 1px solid var(--border-color); } .nav-back:hover { - background-color: rgba(255, 255, 255, 0.3); - transform: translateY(-2px); + background: var(--primary-green); + color: white; + border-color: var(--primary-green); + transform: translateX(-3px); + box-shadow: 0 4px 12px rgba(22, 163, 74, 0.2); } +/* ========================================= + Main Chat Container + ========================================= */ main { flex: 1; display: flex; - flex-direction: column; - padding: 2rem 1.5rem; - max-width: 1000px; - margin: 0 auto; - width: 100%; + justify-content: center; + padding: 2rem 1rem; + position: relative; } #chat-container { - background-color: var(--bg-primary, #fff); - border-radius: 16px; - box-shadow: 0 10px 30px rgba(0, 0, 0, 0.08); + width: 100%; + max-width: 900px; + height: calc(100vh - 140px); + min-height: 600px; + background: var(--chat-bg-light); + border-radius: 24px; display: flex; flex-direction: column; - height: calc(100vh - 200px); - overflow: hidden; position: relative; + overflow: hidden; + box-shadow: + 0 20px 50px -12px rgba(0, 0, 0, 0.1), + 0 0 0 1px rgba(0, 0, 0, 0.05); + backdrop-filter: blur(20px); + -webkit-backdrop-filter: blur(20px); + transition: all 0.3s ease; +} + +[data-theme="dark"] #chat-container { + background: var(--chat-bg-dark); + box-shadow: + 0 20px 50px -12px rgba(0, 0, 0, 0.5), + 0 0 0 1px var(--glass-border-dark); } +/* ========================================= + Chat Header + ========================================= */ .chat-header { - padding: 1.2rem; - background-color: var(--bg-secondary, #e8f5e9); - border-bottom: 1px solid #c8e6c9; + padding: 1.25rem 1.5rem; + border-bottom: 1px solid rgba(0, 0, 0, 0.05); display: flex; + justify-content: space-between; align-items: center; - gap: 12px; - position: relative; + background: rgba(255, 255, 255, 0.6); + z-index: 10; } -.chat-header::before { - content: ""; - position: absolute; - top: 0; - left: 0; - right: 0; - height: 2px; - background: linear-gradient( - 90deg, - var(--primary-green), - var(--light-green), - var(--primary-green) - ); +[data-theme="dark"] .chat-header { + background: rgba(30, 41, 59, 0.6); + border-bottom-color: rgba(255, 255, 255, 0.05); } -.chat-header i { - color: #4caf50; - font-size: 1.4rem; - animation: pulse 2s ease-in-out infinite; +.chat-header-info { + display: flex; + align-items: center; + gap: 1rem; } -@keyframes pulse { - 0%, - 100% { - opacity: 1; - } - 50% { - opacity: 0.7; - } +.chat-header-info i { + font-size: 1.5rem; + color: var(--primary-green); + background: rgba(34, 197, 94, 0.1); + padding: 10px; + border-radius: 12px; } -.chat-header h2 { - font-size: 1.3rem; - color: #2ecc71; +.chat-header-info h2 { + font-size: 1.1rem; + margin: 0; font-weight: 600; + color: var(--text-primary); +} + +.chat-header-info small { + color: var(--text-secondary); + font-size: 0.85rem; +} + +.status-dot { + display: inline-block; + width: 8px; + height: 8px; + background-color: #22c55e; + border-radius: 50%; + margin-right: 4px; + box-shadow: 0 0 8px #22c55e; + animation: pulse-dot 2s infinite; +} + +@keyframes pulse-dot { + 0% { + box-shadow: 0 0 0 0 rgba(34, 197, 94, 0.7); + } + + 70% { + box-shadow: 0 0 0 6px rgba(34, 197, 94, 0); + } + + 100% { + box-shadow: 0 0 0 0 rgba(34, 197, 94, 0); + } } +/* ========================================= + Chat Window (Messages Area) + ========================================= */ #chat-window { flex: 1; - padding: 1.5rem; + padding: 2rem; overflow-y: auto; + overflow-x: hidden; display: flex; flex-direction: column; - gap: 1.2rem; - background-color: var(--bg-secondary, #fafafa); - position: relative; + gap: 1.5rem; + scroll-behavior: smooth; + /* Pattern background overlay */ + background-image: radial-gradient(var(--border-color) 1px, transparent 1px); + background-size: 20px 20px; + background-position: 0 0; + opacity: 1; } +/* Scrollbar Styling */ #chat-window::-webkit-scrollbar { width: 6px; } @@ -189,641 +263,447 @@ main { } #chat-window::-webkit-scrollbar-thumb { - background: var(--border-light); - border-radius: 3px; + background: rgba(148, 163, 184, 0.3); + border-radius: 10px; } #chat-window::-webkit-scrollbar-thumb:hover { - background: var(--text-secondary); + background: rgba(148, 163, 184, 0.5); +} + +/* ========================================= + Welcome Message & Suggestions + ========================================= */ +.welcome-message { + text-align: center; + margin: auto; + max-width: 600px; + animation: fadeInUp 0.8s cubic-bezier(0.16, 1, 0.3, 1); +} + +.welcome-icon-wrapper { + width: 80px; + height: 80px; + background: linear-gradient(135deg, rgba(34, 197, 94, 0.1), rgba(34, 197, 94, 0.05)); + border-radius: 50%; + display: flex; + align-items: center; + justify-content: center; + margin: 0 auto 1.5rem; + border: 1px solid rgba(34, 197, 94, 0.2); +} + +.welcome-icon-wrapper i { + font-size: 2.5rem; + color: var(--primary-green); + animation: float 6s ease-in-out infinite; +} + +.welcome-message h3 { + font-size: 1.75rem; + margin-bottom: 0.75rem; + color: var(--text-primary); +} + +.welcome-message p { + font-size: 1.1rem; + color: var(--text-secondary); + line-height: 1.6; + margin-bottom: 2.5rem; } +.suggestions { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); + gap: 1rem; + width: 100%; +} + +.suggestion { + background: var(--bg-primary); + border: 1px solid var(--border-color); + padding: 1rem; + border-radius: 16px; + font-size: 0.95rem; + color: var(--text-primary); + cursor: pointer; + transition: all 0.3s cubic-bezier(0.25, 0.8, 0.25, 1); + text-align: center; + box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.05); +} + +.suggestion:hover { + border-color: var(--primary-green); + transform: translateY(-4px); + box-shadow: 0 10px 15px -3px rgba(34, 197, 94, 0.15); + color: var(--primary-green); +} + +/* ========================================= + Messages (User & Bot) + ========================================= */ .message { max-width: 80%; - padding: 1rem 1.2rem; - border-radius: 18px; - line-height: 1.5; + padding: 1rem 1.25rem; position: relative; - animation: slideInMessage 0.4s cubic-bezier(0.4, 0, 0.2, 1); - transform-origin: bottom; - opacity: 0; - animation-fill-mode: forwards; + font-size: 1rem; + line-height: 1.6; + animation: messageSlideIn 0.4s cubic-bezier(0.16, 1, 0.3, 1); + word-wrap: break-word; } -@keyframes slideInMessage { - 0% { +@keyframes messageSlideIn { + from { opacity: 0; transform: translateY(20px) scale(0.95); } - 60% { - opacity: 0.8; - transform: translateY(-2px) scale(1.02); - } - 100% { - opacity: 1; - transform: translateY(0) scale(1); - } -} -@keyframes fadeIn { - from { - opacity: 0; - transform: translateY(10px); - } to { opacity: 1; - transform: translateY(0); + transform: translateY(0) scale(1); } } -.user { - background: linear-gradient(135deg, #4caf50, #2e7d32); - color: white; +/* User Message */ +.message.user { align-self: flex-end; - border-bottom-right-radius: 4px; - box-shadow: 0 4px 12px rgba(76, 175, 80, 0.3); - animation-delay: 0.1s; - position: relative; + background: var(--user-msg-bg); + color: var(--user-msg-text); + border-radius: 20px 20px 4px 20px; + box-shadow: 0 8px 16px -4px rgba(34, 197, 94, 0.3); } -.user::after { - content: ""; - position: absolute; - right: -8px; - bottom: 8px; - width: 0; - height: 0; - border-top: 8px solid transparent; - border-bottom: 8px solid transparent; - border-left: 8px solid #2e7d32; -} - -.bot { - background-color: var(--bg-primary, white); - border: 1px solid var(--border-light, #e0e0e0); +.message.user .message-header { + justify-content: flex-end; + color: rgba(255, 255, 255, 0.9); + border-bottom-color: rgba(255, 255, 255, 0.2); +} + +/* Bot Message */ +.message.bot { align-self: flex-start; - border-bottom-left-radius: 4px; - box-shadow: 0 4px 12px rgba(0, 0, 0, 0.08); - color: var(--text-primary, #333); - animation-delay: 0.3s; - position: relative; - backdrop-filter: blur(10px); + background: var(--bot-msg-bg-light); + color: var(--bot-msg-text-light); + border-radius: 20px 20px 20px 4px; + border: 1px solid var(--border-color); + box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.05); } -.bot::before { - content: ""; - position: absolute; - left: -8px; - top: 12px; - width: 0; - height: 0; - border-top: 8px solid transparent; - border-bottom: 8px solid transparent; - border-right: 8px solid var(--bg-primary, white); +[data-theme="dark"] .message.bot { + background: var(--bot-msg-bg-dark); + color: var(--bot-msg-text-dark); } .message-header { display: flex; align-items: center; - margin-bottom: 10px; + gap: 0.5rem; + font-size: 0.75rem; font-weight: 600; - font-size: 0.9rem; + margin-bottom: 0.5rem; + padding-bottom: 0.25rem; + border-bottom: 1px solid rgba(0, 0, 0, 0.05); + letter-spacing: 0.5px; + text-transform: uppercase; } -.user .message-header { - color: rgba(255, 255, 255, 0.9); +[data-theme="dark"] .message-header { + border-bottom-color: rgba(255, 255, 255, 0.05); } -.bot .message-header { - color: #4caf50; +/* Markdown Content Styling within Bot Messages */ +.message.bot p { + margin-bottom: 0.75em; } -.message-header i { - margin-right: 10px; - font-size: 1.1rem; +.message.bot p:last-child { + margin-bottom: 0; } -.timestamp { - font-size: 0.75rem; - opacity: 0.7; - margin-top: 6px; - text-align: right; +.message.bot ul { + padding-left: 1.5rem; + margin-bottom: 0.75em; } -#chat-form { - display: flex; - padding: 1.2rem; - background-color: var(--bg-primary, white); - border-top: 1px solid #eeeeee; - gap: 5px; +.message.bot strong { + color: var(--primary-green); + font-weight: 700; } -.input-container { - display: flex; - flex: 1; - background: var(--bg-secondary, #f5f5f5); - border-radius: 30px; - padding: 0 15px; +/* ========================================= + Image Preview Area + ========================================= */ +#image-preview-container { + padding: 1rem 1.5rem; + background: rgba(34, 197, 94, 0.05); + border-top: 1px dashed rgba(34, 197, 94, 0.3); + display: none; + /* Toggled by JS class 'active' */ align-items: center; - transition: all 0.3s ease; - border: 2px solid transparent; + gap: 1rem; + animation: slideUpFade 0.3s ease; } -.input-container:focus-within { - box-shadow: 0 0 0 3px rgba(76, 175, 80, 0.1); - transform: translateY(-1px); -} - -#chat-input { - flex: 1; - padding: 0.9rem 0.5rem; - font-size: 1rem; - border: none; - background: transparent; - outline: none; - color: var(--text-primary); - transition: all 0.3s ease; +#image-preview-container.active { + display: flex; } -#chat-input::placeholder { - color: var(--text-secondary); - transition: all 0.3s ease; +.preview-wrapper { + position: relative; + display: inline-block; + border-radius: 12px; + overflow: hidden; + box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1); } -#chat-input:focus::placeholder { - opacity: 0.7; - transform: translateX(4px); +.preview-wrapper img { + height: 80px; + width: auto; + display: block; } -#send-button { - background: linear-gradient(135deg, #4caf50, #2e7d32); +.remove-img { + position: absolute; + top: 4px; + right: 4px; + background: rgba(0, 0, 0, 0.6); color: white; border: none; - border-radius: 30px; - padding: 0.9rem 1.8rem; - font-size: 1rem; - font-weight: 600; + border-radius: 50%; + width: 24px; + height: 24px; cursor: pointer; - transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); display: flex; align-items: center; - gap: 8px; - position: relative; - overflow: hidden; -} - -#send-button::before { - content: ""; - position: absolute; - top: 0; - left: -100%; - width: 100%; - height: 100%; - background: linear-gradient( - 90deg, - transparent, - rgba(255, 255, 255, 0.2), - transparent - ); - transition: left 0.6s; -} - -#send-button:hover:not(:disabled) { - transform: translateY(-2px) scale(1.02); - box-shadow: 0 8px 25px rgba(76, 175, 80, 0.4); + justify-content: center; + font-size: 14px; + transition: all 0.2s; + backdrop-filter: blur(4px); } -#send-button:hover:not(:disabled)::before { - left: 100%; +.remove-img:hover { + background: #ef4444; + transform: scale(1.1); } -#send-button:active:not(:disabled) { - transform: translateY(0) scale(0.98); +.preview-text { + font-size: 0.9rem; + color: var(--primary-green); + font-weight: 500; } -#send-button:disabled { - background: var(--text-muted, #bdbdbd); - cursor: not-allowed; - transform: none; - box-shadow: none; +/* ========================================= + Input Area + ========================================= */ +#chat-form { + padding: 1.25rem 1.5rem; + background: rgba(255, 255, 255, 0.6); + border-top: 1px solid rgba(0, 0, 0, 0.05); + backdrop-filter: blur(12px); } -#send-button:disabled::before { - display: none; +[data-theme="dark"] #chat-form { + background: rgba(30, 41, 59, 0.6); + border-top-color: rgba(255, 255, 255, 0.05); } -.typing-indicator { +.input-wrapper { display: flex; align-items: center; - padding: 12px 16px; - background-color: var(--bg-primary, white); - border-radius: 18px; - align-self: flex-start; - border: 1px solid var(--border-light, #e0e0e0); - margin-top: 8px; - gap: 6px; - animation: slideInMessage 0.3s ease; - box-shadow: 0 2px 8px rgba(0, 0, 0, 0.05); -} - -.typing-indicator div { - color: var(--primary-green, #4caf50); - font-weight: 500; - font-size: 0.9rem; -} - -.typing-indicator span { - height: 8px; - width: 8px; - background-color: var(--primary-green, #9e9e9e); - border-radius: 50%; - display: inline-block; - animation: typingPulse 1.4s infinite ease-in-out; - opacity: 0.6; + gap: 0.75rem; + background: var(--bg-primary); + border-radius: 50px; + /* Pill shape */ + padding: 0.5rem 0.75rem; + /* Adjusted padding */ + border: 1px solid var(--border-color); + box-shadow: 0 2px 5px rgba(0, 0, 0, 0.03); + transition: all 0.3s ease; } -.typing-indicator span:nth-child(2) { - animation-delay: 0.2s; -} -.typing-indicator span:nth-child(3) { - animation-delay: 0.4s; +[data-theme="dark"] .input-wrapper { + background: rgba(15, 23, 42, 0.6); } -.typing-indicator span:nth-child(4) { - animation-delay: 0.6s; +.input-wrapper:focus-within { + border-color: var(--primary-green); + box-shadow: 0 4px 12px rgba(34, 197, 94, 0.15); + transform: translateY(-1px); } -@keyframes typingPulse { - 0%, - 60%, - 100% { - transform: translateY(0) scale(1); - opacity: 0.6; - } - 30% { - transform: translateY(-8px) scale(1.2); - opacity: 1; - } +#chat-input { + flex: 1; + border: none; + background: transparent; + padding: 0.75rem 0.5rem; + font-size: 1rem; + color: var(--text-primary); + outline: none; } -.welcome-message { - text-align: center; - padding: 2rem; - color: #616161; +#chat-input::placeholder { + color: var(--text-muted); } -.welcome-message h3 { - color: #4caf50; - margin-bottom: 1rem; - font-size: 1.5rem; - font-weight: 700; +.action-btn { + background: none; + border: none; + color: var(--text-secondary); + cursor: pointer; + padding: 0.5rem; + border-radius: 50%; + transition: all 0.2s ease; display: flex; align-items: center; justify-content: center; - gap: 12px; } -.welcome-message h3 i { - animation: gentle-bounce 3s ease-in-out infinite; +.action-btn:hover { + background: var(--bg-secondary); + color: var(--primary-green); } -.welcome-message p { - font-size: 1.1rem; - margin-bottom: 2rem; - color: var(--text-primary); - opacity: 0.8; - color: var(--primary-green); - margin-bottom: 1rem; - font-size: 1.5rem; - font-weight: 700; +.camera-btn i { + font-size: 1.25rem; +} + +#send-button { + background: var(--primary-green); + color: white; + border: none; + width: 45px; + height: 45px; + border-radius: 50%; + cursor: pointer; display: flex; align-items: center; justify-content: center; - gap: 12px; + transition: all 0.3s cubic-bezier(0.34, 1.56, 0.64, 1); + box-shadow: 0 4px 10px rgba(34, 197, 94, 0.3); } -.welcome-message h3 i { - color: var(--accent-green); - animation: gentle-bounce 3s ease-in-out infinite; +#send-button:hover { + background: var(--green-hover); + transform: scale(1.1) rotate(-10deg); + box-shadow: 0 6px 15px rgba(34, 197, 94, 0.4); } -.welcome-message p { +#send-button i { font-size: 1.1rem; - margin-bottom: 2rem; - color: var(--text-primary); - opacity: 0.8; + margin-left: -2px; + /* Visual correction */ } -.suggestions { - display: flex; - flex-wrap: wrap; - gap: 10px; - justify-content: center; - margin-top: 1.5rem; +/* ========================================= + Typing Indicator + ========================================= */ +.typing-indicator { + padding: 0.75rem 1rem; + background: var(--bg-secondary); + border-radius: 16px; + display: inline-flex; + gap: 4px; + align-items: center; + border: 1px solid var(--border-color); + align-self: flex-start; + margin-bottom: 1rem; + animation: fadeIn 0.3s ease; } -.suggestion { - background-color: #e8f5e9; - color: #2e7d32; - padding: 0.6rem 1.2rem; - border-radius: 20px; - font-size: 0.9rem; - cursor: pointer; - transition: all 0.2s ease; - border: 1px solid #c8e6c9; +.typing-dot { + width: 6px; + height: 6px; + background: var(--text-secondary); + border-radius: 50%; + animation: typingBounce 1.4s infinite ease-in-out both; } -.suggestion:hover { - background-color: #c8e6c9; - transform: translateY(-2px); +.typing-dot:nth-child(1) { + animation-delay: -0.32s; } -/* Enhanced Mobile Responsiveness */ -@media (max-width: 768px) { - .header-content { - flex-direction: column; - gap: 15px; - padding: 0 1rem; - } - - .logo h1 { - font-size: 1.6rem; - } - - main { - padding: 0.5rem; - } - - #chat-container { - height: calc(100vh - 140px); - border-radius: 12px; - margin: 0; - } - - .chat-header { - padding: 1rem; - border-radius: 12px 12px 0 0; - } - - .chat-header h2 { - font-size: 1rem; - line-height: 1.4; - } - - #chat-window { - padding: 0.75rem; - } - - .message { - max-width: 85%; - padding: 0.8rem 1rem; - font-size: 0.95rem; - } - - .message-header { - font-size: 0.85rem; - margin-bottom: 0.5rem; - } - - #chat-form { - padding: 0.75rem; - gap: 8px; - } - - .input-container { - padding: 0 12px; - min-height: 44px; /* Touch-friendly minimum */ - } - - #chat-input { - padding: 0.7rem 0.4rem; - font-size: 16px; /* Prevent zoom on iOS */ - } - - #send-button { - padding: 0.7rem 1.2rem; - min-width: 44px; /* Touch-friendly minimum */ - min-height: 44px; - } - - .suggestions { - grid-template-columns: 1fr; - gap: 8px; - padding: 0 0.5rem; - } - - .suggestion { - padding: 0.8rem 1rem; - font-size: 0.9rem; - min-height: 44px; /* Touch-friendly */ - display: flex; - align-items: center; - justify-content: center; - text-align: center; - } - - .welcome-message { - padding: 1.5rem 1rem; - } - - .welcome-message h3 { - font-size: 1.3rem; - } - - .welcome-message p { - font-size: 1rem; - } +.typing-dot:nth-child(2) { + animation-delay: -0.16s; } -@media (max-width: 480px) { - body { - font-size: 14px; - } - - .logo i { - font-size: 1.6rem; - } - - .logo h1 { - font-size: 1.3rem; - } - - .nav-back { - padding: 8px 12px; - font-size: 0.8rem; - } - - #chat-container { - height: calc(100vh - 120px); - border-radius: 8px; - } - - .chat-header { - padding: 0.8rem; - } - - .chat-header h2 { - font-size: 0.9rem; - } - - #chat-window { - padding: 0.5rem; - } +@keyframes typingBounce { - .message { - max-width: 90%; - padding: 0.7rem 0.9rem; - font-size: 0.9rem; - } - - #chat-form { - padding: 0.5rem; - gap: 6px; - flex-direction: row; - } - - .input-container { - padding: 0 10px; + 0%, + 80%, + 100% { + transform: scale(0); + opacity: 0.5; } - #chat-input { - padding: 0.6rem 0.3rem; - font-size: 16px; + 40% { + transform: scale(1); + opacity: 1; } +} - #send-button { - padding: 0.6rem 1rem; - font-size: 0.9rem; - align-self: flex-end; - width: auto; - min-width: 60px; - } +/* ========================================= + Animations + ========================================= */ +@keyframes float { - .typing-indicator { - padding: 10px 12px; - margin-top: 6px; - } - - .typing-indicator div { - font-size: 0.8rem; + 0%, + 100% { + transform: translateY(0); } - .welcome-message h3 { - font-size: 1.2rem; + 50% { + transform: translateY(-10px); } +} - .welcome-message p { - font-size: 0.95rem; +@keyframes fadeInUp { + from { + opacity: 0; + transform: translateY(20px); } - .suggestion { - padding: 0.7rem 0.8rem; - font-size: 0.85rem; + to { + opacity: 1; + transform: translateY(0); } } -/* Additional Smooth Animations */ -.message-text { - animation: fadeInText 0.6s ease 0.2s both; -} - -@keyframes fadeInText { +@keyframes slideUpFade { from { opacity: 0; - transform: translateY(4px); + transform: translateY(10px); } + to { opacity: 1; transform: translateY(0); } } -/* Enhanced suggestion hover effects */ -.suggestion { - background-color: var(--light-green, #e8f5e9); - color: var(--primary-green, #2e7d32); - padding: 0.6rem 1.2rem; - border-radius: 20px; - font-size: 0.9rem; - cursor: pointer; - transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); - border: 1px solid var(--border-light, #c8e6c9); - position: relative; - overflow: hidden; -} - -.suggestion::before { - content: ""; - position: absolute; - top: 0; - left: -100%; - width: 100%; - height: 100%; - background: linear-gradient( - 90deg, - transparent, - rgba(76, 175, 80, 0.1), - transparent - ); - transition: left 0.5s; -} - -.suggestion:hover { - background-color: var(--primary-green, #c8e6c9); - color: white; - transform: translateY(-3px) scale(1.02); - box-shadow: 0 8px 20px rgba(76, 175, 80, 0.2); -} - -.suggestion:hover::before { - left: 100%; -} - -.suggestion:active { - transform: translateY(-1px) scale(0.98); -} - -/* Scroll improvements */ -#chat-window { - scroll-behavior: smooth; -} - -#chat-window::-webkit-scrollbar { - width: 4px; -} +/* ========================================= + Responsive Adjustments + ========================================= */ +@media (max-width: 768px) { + main { + padding: 0; + height: calc(100vh - 70px); + /* Adjust based on header height around 70px */ + } -#chat-window::-webkit-scrollbar-track { - background: transparent; -} + #chat-container { + height: 100%; + max-width: 100%; + border-radius: 0; + box-shadow: none; + } -#chat-window::-webkit-scrollbar-thumb { - background: var(--border-light, #e0e0e0); - border-radius: 2px; - transition: background 0.3s ease; -} + .message { + max-width: 90%; + } -#chat-window::-webkit-scrollbar-thumb:hover { - background: var(--text-secondary, #9e9e9e); -} - -/* Focus improvements for accessibility */ -.suggestion:focus, -#chat-input:focus, -#send-button:focus, -.nav-back:focus { - outline: 2px solid var(--primary-green, #4caf50); - outline-offset: 2px; - border-radius: 30px; -} - -/* Performance optimizations */ -@media (prefers-reduced-motion: reduce) { - *, - *::before, - *::after { - animation-duration: 0.01ms !important; - animation-iteration-count: 1 !important; - transition-duration: 0.01ms !important; - scroll-behavior: auto !important; + .suggestions { + grid-template-columns: 1fr; + padding: 0 1rem; } -} +} \ No newline at end of file diff --git a/chat.html b/chat.html index a59d5913..e3cbe9d9 100644 --- a/chat.html +++ b/chat.html @@ -20,47 +20,8 @@ href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css" /> - - +
@@ -69,7 +30,7 @@

AgriBot

-
+
- Image attached for AI analysis + Image attached for analysis
-
-
+ +
- + +
-
@@ -147,7 +118,7 @@

Welcome to AgriTech Assistant!

const reader = new FileReader(); reader.onload = function(e) { document.getElementById('image-preview').src = e.target.result; - document.getElementById('image-preview-container').style.display = 'flex'; + document.getElementById('image-preview-container').classList.add('active'); // Store base64 data for Python backend window.selectedImageBase64 = e.target.result.split(',')[1]; }; @@ -158,10 +129,9 @@

Welcome to AgriTech Assistant!

function clearImage() { selectedImageBase64 = null; document.getElementById('image-input').value = ''; - document.getElementById('image-preview-container').style.display = 'none'; + document.getElementById('image-preview-container').classList.remove('active'); } - diff --git a/images/buyer_card_bg.png b/images/buyer_card_bg.png new file mode 100644 index 00000000..54227b4b Binary files /dev/null and b/images/buyer_card_bg.png differ diff --git a/images/equipment_card_bg.png b/images/equipment_card_bg.png new file mode 100644 index 00000000..1644aa6e Binary files /dev/null and b/images/equipment_card_bg.png differ diff --git a/images/farmer_card_bg.png b/images/farmer_card_bg.png new file mode 100644 index 00000000..cd8600f0 Binary files /dev/null and b/images/farmer_card_bg.png differ diff --git a/images/grocery_card_bg.png b/images/grocery_card_bg.png new file mode 100644 index 00000000..955a5a06 Binary files /dev/null and b/images/grocery_card_bg.png differ diff --git a/index.html b/index.html index 9ae7bcbd..a0b97678 100644 --- a/index.html +++ b/index.html @@ -389,37 +389,82 @@ } .feature-card { - background: var(--surface-color); - padding: 2rem; - border-radius: 12px; - border: 1px solid var(--border-color); - transition: all 0.3s ease; - text-align: center; + position: relative; + border-radius: 20px; + overflow: hidden; + min-height: 340px; + display: flex; + align-items: flex-end; + text-align: left; + transition: all 0.4s cubic-bezier(0.175, 0.885, 0.32, 1.275); + background-size: cover; + background-position: center; + box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05); + border: none; + padding: 0; } + /* Cinematic Dark Gradient Overlay */ + .feature-card::before { + content: ''; + position: absolute; + inset: 0; + background: linear-gradient(to top, + rgba(0,0,0,0.9) 0%, + rgba(0,0,0,0.6) 60%, + rgba(0,0,0,0.1) 100%); + transition: background 0.3s ease; + z-index: 1; + } + + /* Hover Effects */ .feature-card:hover { - transform: translateY(-5px); - border-color: var(--accent-color); - box-shadow: 0 8px 24px rgba(34, 197, 94, 0.2); + transform: translateY(-8px) scale(1.02); + box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.4); } - .feature-icon { - font-size: 3rem; - margin-bottom: 1rem; - color: var(--text-color); + .feature-card:hover::before { + background: linear-gradient(to top, + rgba(0,0,0,0.95) 0%, + rgba(0,0,0,0.7) 60%, + rgba(0,0,0,0.2) 100%); + } + + /* Content Styling */ + .feature-content { + position: relative; + z-index: 2; + padding: 2rem; + width: 100%; + transform: translateY(0); + transition: transform 0.3s ease; } .feature-title { - font-size: 1.5rem; - margin-bottom: 1rem; - color: var(--accent-color); + font-family: 'Libertinus Serif', serif; + font-size: 1.85rem; + font-weight: 700; + color: #ffffff; + margin-bottom: 0.75rem; + text-shadow: 0 2px 4px rgba(0,0,0,0.5); + letter-spacing: 0.5px; } .feature-description { - color: var(--text-muted); + color: #f1f5f9; + font-size: 1.05rem; line-height: 1.6; + font-weight: 500; + text-shadow: 0 1px 2px rgba(0,0,0,0.8); + max-width: 95%; } + /* Feature-Specific Backgrounds */ + .feature-card.farmer { background-image: url('images/farmer_card_bg.png'); } + .feature-card.buyer { background-image: url('images/buyer_card_bg.png'); } + .feature-card.equipment { background-image: url('images/equipment_card_bg.png'); } + .feature-card.grocery { background-image: url('images/grocery_card_bg.png'); } + /* FOOTER */ .site-footer { background: var(--surface-color); @@ -1156,25 +1201,29 @@

Empowering Agriculture Through Technology

Our Platform Benefits

-
-
🌱
-

For Farmers

-

Direct access to buyers, fair pricing, and equipment rental services to maximize harvest potential.

+
+
+

For Farmers

+

Direct access to buyers, fair pricing, and equipment rental services to maximize harvest potential.

+
-
-
🏪
-

For Buyers

-

Source fresh produce directly from verified farmers with transparent pricing and quality assurance.

+
+
+

For Buyers

+

Source fresh produce directly from verified farmers with transparent pricing and quality assurance.

+
-
-
🚜
-

Equipment Suppliers

-

Expand your reach and connect with farmers needing modern agricultural equipment.

+
+
+

Equipment Suppliers

+

Expand your reach and connect with farmers needing modern agricultural equipment.

+
-
-
🛒
-

Grocery Sellers

-

Access fresh produce with reliable supply chain and competitive costs.

+
+
+

Grocery Sellers

+

Access fresh produce with reliable supply chain and competitive costs.

+
@@ -1498,7 +1547,7 @@

Contact

const walker = document.createTreeWalker(document.body, NodeFilter.SHOW_TEXT); const nodes = []; - + while (walker.nextNode()) nodes.push(walker.currentNode); nodes.forEach(node => { diff --git a/style.css b/style.css index 1cbcdf29..6bf23154 100644 --- a/style.css +++ b/style.css @@ -1,4 +1,5 @@ -@import url('footer.css'); /* MOVED TO THE TOP */ +@import url('footer.css'); +/* MOVED TO THE TOP */ /* Live Google-style Suggestions Dropdown */ .live-suggest-list { @@ -18,6 +19,7 @@ max-height: 220px; overflow-y: auto; } + .live-suggest-item { display: flex; align-items: center; @@ -30,14 +32,18 @@ transition: background 0.18s; font-weight: 500; } -.live-suggest-item:hover, .live-suggest-item:focus { + +.live-suggest-item:hover, +.live-suggest-item:focus { background: #e8f5e9; outline: none; } + .live-suggest-item i { color: #4caf50; font-size: 1.1em; } + /* Google-style Related Searches (No Results) */ .related-searches-row { display: flex; @@ -46,6 +52,7 @@ margin-top: 18px; justify-content: center; } + .related-searches-label { width: 100%; text-align: center; @@ -54,6 +61,7 @@ margin-bottom: 2px; font-size: 1.05rem; } + .related-search-item { background: #e8f5e9; color: #15803d; @@ -68,14 +76,18 @@ align-items: center; gap: 0.4em; } -.related-search-item:hover, .related-search-item:focus { + +.related-search-item:hover, +.related-search-item:focus { background: #4caf50; color: #fff; } + .related-search-item i { color: #4caf50; font-size: 1.1em; } + /* Suggestive Keyword Row for Search */ .search-suggest-row { display: flex; @@ -86,11 +98,13 @@ flex-wrap: wrap; padding-left: 8px; } + .suggest-label { color: #388e3c; font-weight: 600; margin-right: 0.5rem; } + .suggest-keyword { background: #e8f5e9; color: #15803d; @@ -103,10 +117,12 @@ margin-right: 2px; margin-bottom: 2px; } + .suggest-keyword:hover { background: #4caf50; color: #fff; } + /* Animated No Results Overlay */ .search-no-results-overlay { position: absolute; @@ -123,17 +139,20 @@ align-items: center; justify-content: center; z-index: 200; - animation: fadeInUp 0.7s cubic-bezier(.23,1.01,.32,1) both; + animation: fadeInUp 0.7s cubic-bezier(.23, 1.01, .32, 1) both; margin-top: 8px; padding: 32px 16px 24px 16px; } + .search-no-results-overlay.show { display: flex; } + .no-results-anim svg { margin-bottom: 12px; animation: pulse 1.2s infinite alternate; } + .no-results-title { font-size: 1.5rem; font-weight: 700; @@ -141,19 +160,34 @@ margin-bottom: 6px; letter-spacing: 0.5px; } + .no-results-desc { color: #388e3c; font-size: 1.05rem; text-align: center; opacity: 0.85; } + @keyframes fadeInUp { - from { opacity: 0; transform: translateY(30px); } - to { opacity: 1; transform: translateY(0); } + from { + opacity: 0; + transform: translateY(30px); + } + + to { + opacity: 1; + transform: translateY(0); + } } + @keyframes pulse { - 0% { opacity: 0.7; } - 100% { opacity: 1; } + 0% { + opacity: 0.7; + } + + 100% { + opacity: 1; + } } /* Live Search Suggestions Dropdown */ @@ -174,6 +208,7 @@ max-height: 220px; overflow-y: auto; } + .search-suggestion-item { display: flex; align-items: center; @@ -186,16 +221,21 @@ transition: background 0.18s; font-weight: 500; } -.search-suggestion-item:hover, .search-suggestion-item:focus { + +.search-suggestion-item:hover, +.search-suggestion-item:focus { background: #e8f5e9; outline: none; } + .search-suggestion-item i { color: #4caf50; font-size: 1.1em; } + /* Search Suggestions, Loading, No Results, and Highlight */ -.search-suggestions { /* NOTE: Duplicate selector, styles might merge/override */ +.search-suggestions { + /* NOTE: Duplicate selector, styles might merge/override */ position: absolute; top: 110%; left: 0; @@ -210,6 +250,7 @@ font-size: 1rem; margin-top: 2px; } + .search-suggestion-link { display: block; color: #15803d; @@ -218,10 +259,13 @@ border-radius: 4px; transition: background 0.2s; } -.search-suggestion-link:hover, .search-suggestion-link:focus { + +.search-suggestion-link:hover, +.search-suggestion-link:focus { background: #e8f5e9; outline: none; } + .search-loading { position: absolute; top: 110%; @@ -236,6 +280,7 @@ z-index: 101; margin-top: 2px; } + .search-no-results { position: absolute; top: 110%; @@ -250,2143 +295,2270 @@ z-index: 101; margin-top: 2px; } + .search-highlight { background: #d1fae5; color: #065f46; border-radius: 3px; padding: 0 2px; } + /* Theme System - Dark/Light Mode */ /* @import url('footer.css'); -- This was moved to the top */ - :root { - /* Light mode colors */ - --bg-primary: #ffffff; - --bg-secondary: #f8fafc; - --bg-tertiary: #f1f5f9; - --text-primary: #1e293b; - --text-secondary: #64748b; - --text-muted: #94a3b8; - --border-color: #e2e8f0; - --shadow-light: rgba(0, 0, 0, 0.05); - --shadow-medium: rgba(0, 0, 0, 0.1); - --shadow-heavy: rgba(0, 0, 0, 0.15); - - /* Agricultural green palette */ - --primary-green: #16a34a; - --secondary-green: #22c55e; - --accent-green: #4ade80; - --light-green: #f0fdf4; - --dark-green: #15803d; - --green-hover: #15803d; - } - - [data-theme="dark"] { - /* Dark mode colors */ - --bg-primary: #0f172a; - --bg-secondary: #1e293b; - --bg-tertiary: #334155; - --text-primary: #f8fafc; - --text-secondary: #cbd5e1; - --text-muted: #94a3b8; - --border-color: #334155; - --shadow-light: rgba(0, 0, 0, 0.3); - --shadow-medium: rgba(0, 0, 0, 0.4); - --shadow-heavy: rgba(0, 0, 0, 0.6); - - /* Adjusted green colors for dark mode */ - --light-green: #1a2e1a; - --green-hover: #22c55e; - } - - /* Base Styles */ - * { - margin: 0; - padding: 0; - box-sizing: border-box; - } - - body { - font-family: 'Open Sans', -apple-system, BlinkMacSystemFont, sans-serif; - background-color: var(--bg-primary); - color: var(--text-primary); - line-height: 1.6; - transition: all 0.3s ease; - } - html { - /* No problematic styles */ - } - - .serif { - font-family: 'Libertinus Serif', Georgia, serif; - } - - /* Navigation */ - .navbar { - background: var(--bg-primary); - /* backdrop-filter: blur(20px); -- REMOVED */ - border-bottom: 1px solid var(--border-color); - position: sticky; - top: 0; - z-index: 100; - padding: 1rem 2rem; - transition: all 0.3s ease; - animation: slideDown 0.5s ease-out forwards; - } - - .navbar-content { - max-width: 1200px; - margin: 0 auto; - display: flex; - justify-content: space-between; - align-items: center; - opacity: 0; /* Start hidden */ - animation: fadeIn 0.5s ease-out 0.3s forwards; - } - - .brand .logo { - font-family: 'Libertinus Serif', serif; - font-size: 1.75rem; - font-weight: 600; - color: var(--primary-green); - text-decoration: none; - transition: transform 0.3s ease, color 0.3s ease; - } - .brand .logo:hover { - transform: scale(1.03); - color: var(--green-hover); - } - - .nav-buttons { - display: flex; - gap: 1rem; - align-items: center; - } - - .btn { - padding: 0.5rem 1rem; - border-radius: 8px; - text-decoration: none; - font-weight: 500; - font-size: 0.875rem; - transition: all 0.2s ease; - border: none; - cursor: pointer; - } - .btn:active { - transition: all 0.1s ease; - transform: translateY(0) scale(0.97); - box-shadow: 0 1px 5px rgba(0, 0, 0, 0.1); - } - .btn-primary { - background: var(--primary-green); - color: white; - box-shadow: 0 2px 8px rgba(56, 142, 60, 0); - animation: pulseGlow 2.5s infinite ease-in-out; - } - - .btn-primary:hover { - background: var(--green-hover); - transform: translateY(-2px); - box-shadow: 0 4px 15px rgba(56, 142, 60, 0.3); - animation: none; - } - .btn-secondary { - background: transparent; - color: var(--text-primary); - border: 1px solid var(--border-color); - transition: all 0.2s ease; - } - - .btn-secondary:hover { - background: var(--bg-secondary); - transform: translateY(-2px); - border-color: var(--primary-green); - color: var(--primary-green); - } - /* Responsive Search bar */ - .search-container { - display: flex; - align-items: center; - background: linear-gradient(135deg, #f8fdfc 0%, #f3f8f6 100%); - border: 2px solid transparent; - border-radius: 30px; - padding: 8px 15px; - width: 100%; - max-width: 320px; - margin-left: auto; - margin-right: 20px; - box-shadow: 0 4px 15px rgba(56, 142, 60, 0.1); - transition: all 0.3s ease; - position: relative; - overflow: hidden; /* OK */ - } - - - .search-container::before { - content: ""; - position: absolute; - top: 0; - left: 0; - right: 0; - bottom: 0; - background: linear-gradient(135deg, #4caf50, #388e3c); - border-radius: 30px; - padding: 2px; - z-index: -1; - opacity: 0; - transition: opacity 0.3s ease; - } - - .search-container:focus-within::before { - opacity: 1; - } - - .search-container:focus-within { - transform: translateY(-2px); - box-shadow: 0 8px 25px rgba(56, 142, 60, 0.2); - } - - .search-input { - border: none; - outline: none; - padding: 10px 12px; - font-size: 15px; - flex: 1; - color: #2e7d32; - background: #f8fdfc; - font-family: "Poppins", sans-serif; - font-weight: 500; - } - - .search-input::placeholder { - color: #81c784; - font-weight: 400; - } - - .search-button { - background: linear-gradient(135deg, #4caf50 0%, #388e3c 100%); - border: none; - border-radius: 50%; - cursor: pointer; - color: white; - font-size: 16px; - width: 35px; - height: 35px; - display: flex; - align-items: center; - justify-content: center; - transition: all 0.3s ease; - box-shadow: 0 2px 8px rgba(56, 142, 60, 0.2); - } - - .search-button:hover { - transform: scale(1.1); - box-shadow: 0 4px 15px rgba(56, 142, 60, 0.4); - } - - /* Mobile responsive improvements */ - @media screen and (max-width: 991.98px) { - .navbar { - padding: 0.75rem 0; - } - - .search-container { - max-width: 100%; - margin: 1rem 0 0 0; - order: 3; - } - } - - @media screen and (max-width: 600px) { - .search-container { - max-width: 100%; - } - - .search-input { - font-size: 14px; - } - } - - - /* Theme Toggle */ - .theme-toggle { - position: relative; - background: var(--bg-secondary); - border: 1px solid var(--border-color); - border-radius: 20px; - padding: 0.5rem 0.75rem; - cursor: pointer; - transition: all 0.3s ease; - display: flex; - align-items: center; - gap: 0.5rem; - color: var(--text-primary); - font-size: 0.875rem; - font-weight: 500; - min-width: 80px; - justify-content: center; - } - - .theme-toggle:hover { - background: var(--bg-tertiary); - color: var(--primary-green); - } - - .theme-toggle i { - font-size: 0.875rem; - transition: all 0.3s ease; - } - - .theme-toggle .sun-icon { - opacity: 0; - transform: rotate(180deg); - position: absolute; - left: 12px; - } - - .theme-toggle .moon-icon { - opacity: 1; - transform: rotate(0deg); - - } - - [data-theme="dark"] .theme-toggle .sun-icon { - opacity: 1; - transform: rotate(0deg); - } - - [data-theme="dark"] .theme-toggle .moon-icon { - opacity: 0; - transform: rotate(180deg); - - } - - /* Hero Section */ - .hero { - background: linear-gradient(135deg, var(--light-green) 0%, var(--bg-secondary) 100%); - padding: 4rem 2rem; - text-align: center; - } - - [data-theme="dark"] .hero { - background: linear-gradient(135deg, var(--light-green) 0%, var(--bg-secondary) 100%); - } - - .hero-content { - max-width: 800px; - margin: 0 auto; - } - - .hero h2 { - font-family: 'Libertinus Serif', serif; - font-size: clamp(2rem, 5vw, 3.5rem); - font-weight: 600; - color: var(--text-primary); - margin-bottom: 1.5rem; - line-height: 1.2; - } - - .hero p { - font-size: 1.125rem; - color: var(--text-secondary); - margin-bottom: 2rem; - line-height: 1.7; - } - - .hero strong { - color: var(--primary-green); - font-weight: 600; - } - - /* Features Section */ - .features { - padding: 4rem 2rem; - background: var(--bg-primary); - } - - .features-container { - max-width: 1200px; - margin: 0 auto; - } - - .features-title { - font-family: 'Libertinus Serif', serif; - text-align: center; - font-size: 2.5rem; - font-weight: 600; - color: var(--text-primary); - margin-bottom: 3rem; - } - - .features-grid { - display: grid; - grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); - gap: 2rem; - } - - .feature-card { - background: var(--bg-secondary); - border: 1px solid var(--border-color); - border-radius: 16px; - padding: 2rem; - text-align: center; - transition: all 0.3s ease; - position: relative; - overflow: hidden; /* OK */ - } - - .feature-card::before { - content: ''; - position: absolute; - top: 0; - left: 0; - right: 0; - height: 4px; - background: var(--primary-green); - transform: scaleX(0); - transition: transform 0.3s ease; - } - - .feature-card:hover { - transform: translateY(-4px); - box-shadow: 0 10px 25px var(--shadow-medium); - border-color: var(--primary-green); - } - - .feature-card:hover::before { - transform: scaleX(1); - } - - .feature-icon { - font-size: 3rem; - margin-bottom: 1rem; - display: block; - } - - .feature-title { - font-family: 'Libertinus Serif', serif; - font-size: 1.5rem; - font-weight: 600; - color: var(--text-primary); - margin-bottom: 1rem; - } - - .feature-description { - color: var(--text-secondary); - line-height: 1.6; - } - - /* Carousel Section */ - .carousel { - padding: 4rem 0rem; - background: var(--bg-secondary); - overflow: hidden; /* OK */ - display: flex; - flex-direction: column; - justify-content: center; - align-items: center; - } - - .carousel-title { - font-family: 'Libertinus Serif', serif; - text-align: center; - font-size: 2.5rem; - font-weight: 600; - color: var(--text-primary); - margin-bottom: 3rem; - } - - .slider { - width: 100%; - max-width: 1530px; - padding: 1rem 0rem; - overflow: hidden; /* OK */ - position: relative; - mask-image:linear-gradient(to right,transparent,black 10%,black 90%,transparent); - } - - .slide-track { - display: flex; - animation: scroll 20s linear infinite; - width: calc(300px * 12); /* 12 images total */ - overflow: visible; - } - - .slide-track img { - width: 300px; - height: 200px; - object-fit: cover; - border-radius: 12px; - margin-right: 1rem; - box-shadow: 0 4px 15px var(--shadow-light); - transition: transform 0.3s ease; - } - - .slide-track img:hover { - transform: scale(1.05); - } - - @keyframes scroll { - 0% { transform: translateX(0); } - 100% { transform: translateX(calc(-300px * 6 - 6rem)); } /* Move by 6 images */ - } - - /* CTA Section */ - .cta { - background: linear-gradient(135deg, var(--primary-green), var(--secondary-green)); - color: white; - padding: 4rem 2rem; - text-align: center; - } - - .cta-content { - max-width: 600px; - margin: 0 auto; - } - - .cta h3 { - font-family: 'Libertinus Serif', serif; - font-size: 2.5rem; - font-weight: 600; - margin-bottom: 1rem; - } - - .cta p { - font-size: 1.125rem; - margin-bottom: 2rem; - opacity: 0.9; - } - - .cta-button { - display: inline-block; - background: white; - color: var(--primary-green); - padding: 1rem 2rem; - border-radius: 12px; - text-decoration: none; - font-weight: 600; - font-size: 1.125rem; - transition: all 0.3s ease; - box-shadow: 0 4px 15px rgba(0, 0, 0, 0.1); - } - - /* CTA Button hover effect */ - .cta-button:hover { - transform: translateY(-2px); - box-shadow: 0 8px 25px rgba(0, 0, 0, 0.2); - } - - /* Footer styles (assuming footer.css is imported correctly now) */ - /* ... styles specific to footer might be in footer.css ... */ - - /* Generic Footer Styles (included here for completeness, might duplicate footer.css) */ - .site-footer { - background: linear-gradient(135deg, #2e7d32, #4caf50); - color: white; - margin-top: auto; - padding: 4rem 2rem 2.5rem; - position: relative; - overflow: hidden; /* OK */ - - box-shadow: - 0 -4px 16px rgba(46, 125, 50, 0.1), - 0 -2px 8px rgba(46, 125, 50, 0.05), - inset 0 1px 0 rgba(255, 255, 255, 0.05); - } - - .site-footer::after { - content: ''; - position: absolute; - top: 0; - left: 0; - right: 0; - height: 2px; - background: linear-gradient(90deg, - transparent 0%, - rgba(255, 255, 255, 0.3) 20%, - rgba(255, 255, 255, 0.6) 50%, - rgba(255, 255, 255, 0.3) 80%, - transparent 100%); - animation: shimmerTop 3s ease-in-out infinite; - } - - @keyframes shimmerTop { - 0%, 100% { opacity: 0.5; } - 50% { opacity: 1; } - } - - .site-footer::before { - content: ''; - position: absolute; - top: 0; - left: 0; - right: 0; - bottom: 0; - background: - radial-gradient(circle at 20% 50%, rgba(255,255,255,0.12) 0%, transparent 50%), - radial-gradient(circle at 80% 20%, rgba(255,255,255,0.10) 0%, transparent 50%), - radial-gradient(circle at 40% 80%, rgba(255,255,255,0.08) 0%, transparent 50%), - linear-gradient(45deg, transparent 30%, rgba(255,255,255,0.02) 50%, transparent 70%); - pointer-events: none; - animation: footerShimmer 20s ease-in-out infinite, floatingParticles 25s linear infinite; /* Combined animations */ - } - - @keyframes footerShimmer { - 0%, 100% { opacity: 1; } - 50% { opacity: 0.8; } - } - - @keyframes floatingParticles { - 0% { - background-position: 0% 0%, 100% 0%, 50% 100%; - } - 33% { - background-position: 100% 50%, 0% 100%, 0% 0%; - } - 66% { - background-position: 50% 100%, 50% 0%, 100% 50%; - } - 100% { - background-position: 0% 0%, 100% 0%, 50% 100%; - } - } - - - .footer-inner { - max-width: 1200px; - margin: 0 auto; - display: grid; - grid-template-columns: 2fr 1fr 1fr; - gap: 3.5rem; - align-items: flex-start; - position: relative; - z-index: 1; - } - - .footer-inner::before { - content: ''; - position: absolute; - top: -20px; - left: 50%; - transform: translateX(-50%); - width: 60px; - height: 4px; - background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.4), transparent); - border-radius: 2px; - } - - .footer-brand { - display: flex; - flex-direction: column; - gap: 1.5rem; - padding-right: 2rem; - position: relative; - } - - .footer-brand::before { - content: ''; - position: absolute; - top: 0; - right: 0; - width: 1px; - height: 100%; - background: linear-gradient(180deg, - transparent 0%, - rgba(255, 255, 255, 0.2) 30%, - rgba(255, 255, 255, 0.3) 50%, - rgba(255, 255, 255, 0.2) 70%, - transparent 100%); - } - - .footer-logo { - width: 60px; - height: 60px; - border-radius: 12px; - object-fit: cover; - background: white; - padding: 8px; - box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1); - } - - .site-footer h3, - .site-footer h4 { - font-family: 'Libertinus Serif', serif; - margin: 0 0 1.5rem 0; - font-weight: 600; - } - - .site-footer h3 { - font-size: 2rem; - margin-bottom: 1rem; - background: linear-gradient(135deg, #ffffff, #e8f5e8); - -webkit-background-clip: text; - -webkit-text-fill-color: transparent; - background-clip: text; - font-weight: 700; - text-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); - letter-spacing: -0.02em; - } - - .site-footer h4 { - font-size: 1.25rem; - position: relative; - padding-bottom: 0.5rem; - margin-bottom: 1.5rem; - color: #ffffff; - text-transform: uppercase; - letter-spacing: 1px; - font-weight: 700; - } - - .site-footer h4::before { - content: ''; - position: absolute; - top: -5px; - left: -10px; - width: 4px; - height: calc(100% + 10px); - background: linear-gradient(180deg, rgba(255, 255, 255, 0.8), rgba(255, 255, 255, 0.3)); - border-radius: 2px; - } - - .site-footer h4::after { - content: ''; - position: absolute; - bottom: 0; - left: 0; - width: 50px; - height: 3px; - background: linear-gradient(90deg, rgba(255, 255, 255, 0.9), rgba(255, 255, 255, 0.4)); - border-radius: 3px; - box-shadow: 0 1px 3px rgba(0, 0, 0, 0.2); - } - - .site-footer p { - margin: 0; - opacity: 0.95; - line-height: 1.7; - text-align: justify; - text-justify: inter-word; - hyphens: auto; - font-size: 1rem; - } - - /* Brand Header Section */ - .brand-header { - display: flex; - align-items: center; - gap: 1rem; - margin-bottom: 1.5rem; - } - - .footer-logo { - width: 56px; - height: 56px; - border-radius: 16px; - object-fit: cover; - background: linear-gradient(135deg, #ffffff, #f8f9fa); - padding: 10px; - box-shadow: - 0 8px 25px rgba(0, 0, 0, 0.15), - 0 4px 12px rgba(46, 125, 50, 0.2), - inset 0 1px 0 rgba(255, 255, 255, 0.3); - transition: all 0.3s ease; - border: 2px solid rgba(255, 255, 255, 0.1); - } - - .footer-logo:hover { - transform: translateY(-2px) scale(1.05); - box-shadow: - 0 12px 35px rgba(0, 0, 0, 0.2), - 0 6px 18px rgba(46, 125, 50, 0.3); - } - - /* Mission Statement Enhancement */ - .mission-statement { - margin-bottom: 1.5rem; - position: relative; - padding: 1.5rem; - background: rgba(255, 255, 255, 0.05); - border-radius: 16px; - border: 1px solid rgba(255, 255, 255, 0.1); - backdrop-filter: blur(10px); - } - - .mission-statement::before { - content: '"'; - position: absolute; - top: -10px; - left: 20px; - font-size: 3rem; - color: rgba(255, 255, 255, 0.3); - font-family: 'Libertinus Serif', serif; - } - - .mission-statement::after { - content: '"'; - position: absolute; - bottom: -20px; - right: 20px; - font-size: 3rem; - color: rgba(255, 255, 255, 0.3); - font-family: 'Libertinus Serif', serif; - } - - .mission-statement p { - font-size: 1.1rem; - line-height: 1.8; - font-weight: 400; - letter-spacing: 0.3px; - text-align: justify; - text-justify: inter-character; - hyphens: auto; - margin: 0; - padding: 0; - color: rgba(255, 255, 255, 0.95); - word-spacing: -0.1em; - text-align-last: left; - font-style: italic; - position: relative; - z-index: 1; - } - - .no-break { - white-space: nowrap; - hyphens: none; - word-break: keep-all; - } - - - /* Footer Links Section */ - .footer-links { - display: flex; - flex-direction: column; - position: relative; - padding: 1.5rem; - background: rgba(255, 255, 255, 0.03); - border-radius: 16px; - border: 1px solid rgba(255, 255, 255, 0.1); - transition: all 0.3s ease; - } - - .footer-links:hover { - background: rgba(255, 255, 255, 0.08); - transform: translateY(-2px); - box-shadow: 0 4px 20px rgba(0, 0, 0, 0.1); - } - - .site-footer ul { - list-style: none; - padding: 0; - margin: 0; - display: flex; - flex-direction: column; - gap: 0.5rem; - } - - .site-footer ul li { - position: relative; - } - - .site-footer a { - color: white; - text-decoration: none; - opacity: 0.95; - transition: all 0.3s ease; - display: inline-block; /* Changed back from block */ - font-size: 0.95rem; - position: relative; - } - - .site-footer a i { - margin-right: 8px; - width: 16px; - color: rgba(255, 255, 255, 0.8); - transition: all 0.3s ease; - } - - .site-footer a:hover i { - color: #ffffff; - transform: scale(1.1); - } - - .site-footer .footer-links a:hover { - opacity: 1; - /* transform: translateX(8px); -- Handled by combined rule */ - color: rgba(255, 255, 255, 1); - background: linear-gradient(135deg, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0.05)); - border-radius: 8px; - padding: 8px 16px; - box-shadow: - 0 4px 12px rgba(0, 0, 0, 0.1), - inset 0 1px 0 rgba(255, 255, 255, 0.2); - border: 1px solid rgba(255, 255, 255, 0.2); - } - - .site-footer .footer-links a::before { - content: ''; - position: absolute; - left: -4px; - top: 50%; - transform: translateY(-50%); - width: 0; - height: 2px; - background: linear-gradient(90deg, rgba(255, 255, 255, 0.8), transparent); - transition: width 0.3s ease; - } - - .site-footer .footer-links a:hover::before { - width: 100%; - } - - .footer-bottom { - max-width: 1200px; - margin: 3rem auto 0; - padding: 2.5rem 1rem 0; - border-top: 1px solid rgba(255, 255, 255, 0.25); - text-align: center; - position: relative; - } - - .footer-bottom::before { - content: ''; - position: absolute; - top: 0; - left: 50%; - transform: translateX(-50%); - width: 100px; - height: 1px; - background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.6), transparent); - } - - .footer-bottom-content { - display: flex; - flex-direction: column; - align-items: center; - gap: 1.5rem; - } - - .copyright { - font-size: 1.1rem; - font-weight: 600; - color: rgba(255, 255, 255, 0.95); - margin: 0; - letter-spacing: 0.5px; - text-shadow: 0 2px 4px rgba(0, 0, 0, 0.2); - position: relative; - padding: 1rem 0; - } - - .copyright::after { - content: ''; - position: absolute; - bottom: -8px; - left: 50%; - transform: translateX(-50%); - width: 60px; - height: 2px; - background: linear-gradient(90deg, transparent, rgba(255,255,255,0.6), transparent); - border-radius: 2px; - } - - .footer-bottom-links { - display: flex; - align-items: center; - gap: 0.75rem; - flex-wrap: wrap; - justify-content: center; - } - - .footer-bottom-links a { - color: rgba(255, 255, 255, 0.85); - text-decoration: none; - font-size: 0.875rem; - padding: 0.5rem 1rem; - border-radius: 6px; - transition: all 0.3s ease; - background: rgba(255, 255, 255, 0.05); - border: 1px solid rgba(255, 255, 255, 0.1); - } - - .footer-bottom-links a:hover { - color: white; - background: rgba(255, 255, 255, 0.15); - border-color: rgba(255, 255, 255, 0.3); - transform: translateY(-2px); - } - - .separator { - color: rgba(255, 255, 255, 0.4); - font-weight: bold; - font-size: 0.75rem; - } - - .footer-bottom a { - color: rgba(255, 255, 255, 0.9); - transition: all 0.3s ease; - } - - .footer-bottom a:hover { - color: white; - text-decoration: underline; - } -/* Enhanced Footer Links Hover Effects */ -.footer-links ul li a { - position: relative; - /* color: rgba(255, 255, 255, 0.95); -- Defined earlier */ - text-decoration: none; - font-weight: 500; - padding: 4px 12px; - border-radius: 8px; - transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); - display: block; /* Changed back to block for full-width hover */ +:root { + /* Light mode colors */ + --bg-primary: #ffffff; + --bg-secondary: #f8fafc; + --bg-tertiary: #f1f5f9; + --text-primary: #1e293b; + --text-secondary: #64748b; + --text-muted: #94a3b8; + --border-color: #e2e8f0; + --shadow-light: rgba(0, 0, 0, 0.05); + --shadow-medium: rgba(0, 0, 0, 0.1); + --shadow-heavy: rgba(0, 0, 0, 0.15); + + /* Agricultural green palette */ + --primary-green: #16a34a; + --secondary-green: #22c55e; + --accent-green: #4ade80; + --light-green: #f0fdf4; + --dark-green: #15803d; + --green-hover: #15803d; +} + +[data-theme="dark"] { + /* Dark mode colors */ + --bg-primary: #0f172a; + --bg-secondary: #1e293b; + --bg-tertiary: #334155; + --text-primary: #f8fafc; + --text-secondary: #cbd5e1; + --text-muted: #94a3b8; + --border-color: #334155; + --shadow-light: rgba(0, 0, 0, 0.3); + --shadow-medium: rgba(0, 0, 0, 0.4); + --shadow-heavy: rgba(0, 0, 0, 0.6); + + /* Adjusted green colors for dark mode */ + --light-green: #1a2e1a; + --green-hover: #22c55e; +} + +/* Base Styles */ +* { + margin: 0; + padding: 0; + box-sizing: border-box; +} + +body { + font-family: 'Open Sans', -apple-system, BlinkMacSystemFont, sans-serif; + background-color: var(--bg-primary); + color: var(--text-primary); + line-height: 1.6; + transition: all 0.3s ease; } -/* Enhanced hover effect with improved visual feedback */ -.footer-links ul li a:hover { - background: rgba(255, 255, 255, 0.12); - transform: translateX(8px) translateY(-2px); /* Kept specific hover transform */ - box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15); - color: white; - text-shadow: 0 1px 3px rgba(0, 0, 0, 0.2); +html { + /* No problematic styles */ } -/* Improved underline animation */ -.footer-links ul li a::after { - content: ''; - position: absolute; - width: 0; - height: 2px; - left: 12px; - bottom: 6px; - background: linear-gradient(90deg, rgba(255,255,255,0.8), rgba(255,255,255,0.4)); - border-radius: 2px; - transition: width 0.4s cubic-bezier(0.4, 0, 0.2, 1); +.serif { + font-family: 'Libertinus Serif', Georgia, serif; } -.footer-links ul li a:hover::after { - width: calc(100% - 24px); +/* Navigation */ +.navbar { + background: var(--bg-primary); + /* backdrop-filter: blur(20px); -- REMOVED */ + border-bottom: 1px solid var(--border-color); + position: sticky; + top: 0; + z-index: 100; + padding: 1rem 2rem; + transition: all 0.3s ease; + animation: slideDown 0.5s ease-out forwards; } - /* Focus states for accessibility */ - .footer-links ul li a:focus { - outline: 2px solid rgba(255, 255, 255, 0.6); - outline-offset: 2px; - } - -/* Mission Stats Section Styling */ -.mission-stats { - display: grid; - grid-template-columns: repeat(auto-fit, minmax(120px, 1fr)); - gap: 2rem; - margin: 2rem 0; - padding: 2rem; - background: rgba(255, 255, 255, 0.08); - backdrop-filter: blur(15px); - border: 1px solid rgba(255, 255, 255, 0.1); - border-radius: 20px; - position: relative; - overflow: hidden; /* OK */ +.navbar-content { + max-width: 1200px; + margin: 0 auto; + display: flex; + justify-content: space-between; + align-items: center; + opacity: 0; + /* Start hidden */ + animation: fadeIn 0.5s ease-out 0.3s forwards; } -.mission-stats::before { - content: ''; - position: absolute; - top: 0; - left: -100%; - width: 100%; - height: 100%; - background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.1), transparent); - animation: statsShine 3s ease-in-out infinite; +.brand .logo { + font-family: 'Libertinus Serif', serif; + font-size: 1.75rem; + font-weight: 600; + color: var(--primary-green); + text-decoration: none; + transition: transform 0.3s ease, color 0.3s ease; } -.stat-item { - text-align: center; - padding: 1.5rem; - border-radius: 16px; - background: rgba(255, 255, 255, 0.05); - backdrop-filter: blur(10px); - border: 1px solid rgba(255, 255, 255, 0.08); - transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1); - position: relative; - overflow: hidden; /* OK */ +.brand .logo:hover { + transform: scale(1.03); + color: var(--green-hover); } -.stat-item::before { - content: ''; - position: absolute; - top: 50%; - left: 50%; - width: 0; - height: 0; - background: radial-gradient(circle, rgba(255, 255, 255, 0.1), transparent 70%); - border-radius: 50%; - transform: translate(-50%, -50%); - transition: all 0.6s cubic-bezier(0.4, 0, 0.2, 1); - z-index: 0; +.nav-buttons { + display: flex; + gap: 1rem; + align-items: center; } -.stat-item:hover { - transform: translateY(-8px) scale(1.05); - background: rgba(255, 255, 255, 0.12); - border-color: rgba(255, 255, 255, 0.2); - box-shadow: 0 20px 40px rgba(46, 125, 50, 0.3), - 0 0 60px rgba(255, 255, 255, 0.1); +.btn { + padding: 0.5rem 1rem; + border-radius: 8px; + text-decoration: none; + font-weight: 500; + font-size: 0.875rem; + transition: all 0.2s ease; + border: none; + cursor: pointer; } -.stat-item:hover::before { - width: 200px; - height: 200px; +.btn:active { + transition: all 0.1s ease; + transform: translateY(0) scale(0.97); + box-shadow: 0 1px 5px rgba(0, 0, 0, 0.1); } -.stat-number { - display: block; - font-size: 2.5rem; - font-weight: 800; - color: #ffffff; - margin-bottom: 0.5rem; - background: linear-gradient(135deg, #ffffff, #e8f5e8); - -webkit-background-clip: text; - -webkit-text-fill-color: transparent; - background-clip: text; - position: relative; - z-index: 1; - text-shadow: 0 2px 10px rgba(255, 255, 255, 0.2); +.btn-primary { + background: var(--primary-green); + color: white; + box-shadow: 0 2px 8px rgba(56, 142, 60, 0); + animation: pulseGlow 2.5s infinite ease-in-out; } -.stat-label { - display: block; - font-size: 1rem; - font-weight: 500; - color: rgba(255, 255, 255, 0.9); - text-transform: uppercase; - letter-spacing: 1px; - position: relative; - z-index: 1; +.btn-primary:hover { + background: var(--green-hover); + transform: translateY(-2px); + box-shadow: 0 4px 15px rgba(56, 142, 60, 0.3); + animation: none; } -/* Enhanced Social Media Section */ -.social-media { - display: flex; - justify-content: flex-start; - align-items: center; - gap: 1rem; - margin-top: 2rem; - padding: 1.5rem; - background: rgba(255, 255, 255, 0.05); - border-radius: 16px; - border: 1px solid rgba(255, 255, 255, 0.1); - backdrop-filter: blur(10px); +.btn-secondary { + background: transparent; + color: var(--text-primary); + border: 1px solid var(--border-color); + transition: all 0.2s ease; } -.social-media a { - display: flex; - align-items: center; - justify-content: center; - width: 48px; - height: 48px; - border-radius: 12px; - background: rgba(255, 255, 255, 0.1); - border: 1px solid rgba(255, 255, 255, 0.2); - transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1); - position: relative; - overflow: hidden; /* OK */ +.btn-secondary:hover { + background: var(--bg-secondary); + transform: translateY(-2px); + border-color: var(--primary-green); + color: var(--primary-green); } -.social-media a::before { - content: ''; - position: absolute; - top: 0; - left: -100%; - width: 100%; - height: 100%; - background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.2), transparent); - transition: all 0.6s ease; +/* Responsive Search bar */ +.search-container { + display: flex; + align-items: center; + background: linear-gradient(135deg, #f8fdfc 0%, #f3f8f6 100%); + border: 2px solid transparent; + border-radius: 30px; + padding: 8px 15px; + width: 100%; + max-width: 320px; + margin-left: auto; + margin-right: 20px; + box-shadow: 0 4px 15px rgba(56, 142, 60, 0.1); + transition: all 0.3s ease; + position: relative; + overflow: hidden; + /* OK */ } -.social-media a:hover { - transform: translateY(-4px) scale(1.1) rotate(5deg); - background: rgba(255, 255, 255, 0.2); - border-color: rgba(255, 255, 255, 0.4); - box-shadow: 0 12px 25px rgba(0, 0, 0, 0.2), - 0 0 30px rgba(255, 255, 255, 0.15); + +.search-container::before { + content: ""; + position: absolute; + top: 0; + left: 0; + right: 0; + bottom: 0; + background: linear-gradient(135deg, #4caf50, #388e3c); + border-radius: 30px; + padding: 2px; + z-index: -1; + opacity: 0; + transition: opacity 0.3s ease; } -.social-media a:hover::before { - left: 100%; +.search-container:focus-within::before { + opacity: 1; } -.social-media a i { - font-size: 1.4rem; - color: rgba(255, 255, 255, 0.9); - transition: all 0.3s ease; - z-index: 1; - position: relative; +.search-container:focus-within { + transform: translateY(-2px); + box-shadow: 0 8px 25px rgba(56, 142, 60, 0.2); } -.social-media a:hover i { - color: #ffffff; - transform: scale(1.2); - filter: drop-shadow(0 0 8px rgba(255, 255, 255, 0.5)); +.search-input { + border: none; + outline: none; + padding: 10px 12px; + font-size: 15px; + flex: 1; + color: #2e7d32; + background: #f8fdfc; + font-family: "Poppins", sans-serif; + font-weight: 500; } -/* Enhanced Footer Links with Better Icons */ -.footer-links a { /* Duplicate selector, merging properties */ - /* color: rgba(255, 255, 255, 0.9); -- Defined earlier */ - text-decoration: none; - font-weight: 500; - transition: all 0.3s ease; - position: relative; - padding: 0.5rem 0; - display: flex; /* Kept from previous rule */ - align-items: center; /* Kept from previous rule */ - gap: 0.5rem; /* Kept from previous rule */ +.search-input::placeholder { + color: #81c784; + font-weight: 400; } -.footer-links a:hover { - /* color: #ffffff; -- Defined earlier */ - transform: translateX(8px); /* Keep this specific hover transform */ - text-shadow: 0 2px 10px rgba(255, 255, 255, 0.3); +.search-button { + background: linear-gradient(135deg, #4caf50 0%, #388e3c 100%); + border: none; + border-radius: 50%; + cursor: pointer; + color: white; + font-size: 16px; + width: 35px; + height: 35px; + display: flex; + align-items: center; + justify-content: center; + transition: all 0.3s ease; + box-shadow: 0 2px 8px rgba(56, 142, 60, 0.2); } -.footer-links a i { - font-size: 1.1rem; - transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); - background: linear-gradient(135deg, #ffffff, #e8f5e8); - -webkit-background-clip: text; - -webkit-text-fill-color: transparent; - background-clip: text; +.search-button:hover { + transform: scale(1.1); + box-shadow: 0 4px 15px rgba(56, 142, 60, 0.4); } -.footer-links a:hover i { - transform: rotate(360deg) scale(1.2); - filter: drop-shadow(0 0 8px rgba(255, 255, 255, 0.5)); +/* Mobile responsive improvements */ +@media screen and (max-width: 991.98px) { + .navbar { + padding: 0.75rem 0; + } + + .search-container { + max-width: 100%; + margin: 1rem 0 0 0; + order: 3; + } } -/* Advanced Keyframe Animations */ -@keyframes statsShine { - 0% { - left: -100%; - } - 50% { - left: 100%; - } - 100% { - left: 100%; - } +@media screen and (max-width: 600px) { + .search-container { + max-width: 100%; + } + + .search-input { + font-size: 14px; + } } -/* Number Counting Animation */ -@keyframes countUp { - 0% { - transform: translateY(20px); - opacity: 0; - } - 100% { - transform: translateY(0); - opacity: 1; - } + +/* Theme Toggle */ +.theme-toggle { + position: relative; + background: var(--bg-secondary); + border: 1px solid var(--border-color); + border-radius: 20px; + padding: 0.5rem 0.75rem; + cursor: pointer; + transition: all 0.3s ease; + display: flex; + align-items: center; + gap: 0.5rem; + color: var(--text-primary); + font-size: 0.875rem; + font-weight: 500; + min-width: 80px; + justify-content: center; } -.stat-number { - animation: countUp 0.8s ease-out forwards; - animation-delay: var(--delay, 0s); +.theme-toggle:hover { + background: var(--bg-tertiary); + color: var(--primary-green); } -.stat-item:nth-child(1) .stat-number { - --delay: 0.2s; +.theme-toggle i { + font-size: 0.875rem; + transition: all 0.3s ease; } -.stat-item:nth-child(2) .stat-number { - --delay: 0.4s; +.theme-toggle .sun-icon { + opacity: 0; + transform: rotate(180deg); + position: absolute; + left: 12px; } -.stat-item:nth-child(3) .stat-number { - --delay: 0.6s; +.theme-toggle .moon-icon { + opacity: 1; + transform: rotate(0deg); + } -/* Pulsing Effect for Stats */ -.stat-item:hover .stat-number { - animation: pulse 1s ease-in-out infinite; +[data-theme="dark"] .theme-toggle .sun-icon { + opacity: 1; + transform: rotate(0deg); } -/* Removed duplicate @keyframes pulse definition */ +[data-theme="dark"] .theme-toggle .moon-icon { + opacity: 0; + transform: rotate(180deg); -/* Floating Orb Animation */ -/* .site-footer::after { This selector was used earlier for top shimmer } */ -/* Renaming animation to avoid conflict if needed, or remove if duplicate functionality */ -@keyframes floatingOrb { - 0%, 100% { - transform: translate(0, 0) scale(1); - opacity: 0.6; - } - 25% { - transform: translate(-30px, -20px) scale(1.1); - opacity: 0.8; - } - 50% { - transform: translate(-60px, 10px) scale(0.9); - opacity: 0.4; - } - 75% { - transform: translate(-20px, -30px) scale(1.05); - opacity: 0.7; - } } -/* Applying floating orb to a new pseudo-element or adjust selector */ -.site-footer::before { /* Reusing ::before for floating orb along with shimmer/particles */ - /* ... existing background styles ... */ - /* Add orb styles here if appropriate or use a separate element/pseudo */ - /* Example adding orb animation to ::before */ - animation: footerShimmer 20s ease-in-out infinite, floatingParticles 25s linear infinite, floatingOrb 15s ease-in-out infinite; + +/* Hero Section */ +.hero { + background: linear-gradient(135deg, var(--light-green) 0%, var(--bg-secondary) 100%); + padding: 4rem 2rem; + text-align: center; } +[data-theme="dark"] .hero { + background: linear-gradient(135deg, var(--light-green) 0%, var(--bg-secondary) 100%); +} -/* Sparkle Animation for Mission Stats */ -.mission-stats::after { - content: ''; - position: absolute; - top: 20px; - right: 20px; - width: 6px; - height: 6px; - background: rgba(255, 255, 255, 0.8); - border-radius: 50%; - animation: sparkle 2s ease-in-out infinite; +.hero-content { + max-width: 800px; + margin: 0 auto; } -@keyframes sparkle { - 0%, 100% { - opacity: 0; - transform: scale(0); - } - 50% { - opacity: 1; - transform: scale(1); - } +.hero h2 { + font-family: 'Libertinus Serif', serif; + font-size: clamp(2rem, 5vw, 3.5rem); + font-weight: 600; + color: var(--text-primary); + margin-bottom: 1.5rem; + line-height: 1.2; } -/* Enhanced Hover Effect for Footer Links */ -.footer-links { - transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1); +.hero p { + font-size: 1.125rem; + color: var(--text-secondary); + margin-bottom: 2rem; + line-height: 1.7; } -.footer-links::before { /* Reusing ::before might conflict, ensure intended effect */ - content: ''; - position: absolute; - top: 0; - left: 0; - right: 0; - bottom: 0; - background: linear-gradient(135deg, rgba(255, 255, 255, 0.1), transparent); - opacity: 0; - transition: opacity 0.3s ease; - border-radius: 16px; +.hero strong { + color: var(--primary-green); + font-weight: 600; } -.footer-links:hover::before { - opacity: 1; +/* Features Section */ +.features { + padding: 4rem 2rem; + background: var(--bg-primary); } -/* Footer Brand Glow Effect */ -.footer-brand:hover .footer-logo { - box-shadow: - 0 12px 35px rgba(0, 0, 0, 0.2), - 0 6px 18px rgba(46, 125, 50, 0.3), - 0 0 30px rgba(255, 255, 255, 0.3); +.features-container { + max-width: 1200px; + margin: 0 auto; } -/* Typography Enhancement */ -.site-footer h3 { - position: relative; +.features-title { + font-family: 'Libertinus Serif', serif; + text-align: center; + font-size: 2.5rem; + font-weight: 600; + color: var(--text-primary); + margin-bottom: 3rem; } -.site-footer h3::after { - content: ''; - position: absolute; - bottom: -5px; - left: 0; - width: 0; - height: 2px; - background: linear-gradient(90deg, rgba(255, 255, 255, 0.8), transparent); - transition: width 0.6s ease; +.features-grid { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); + gap: 2rem; } -.footer-brand:hover .site-footer h3::after { - width: 100%; +.feature-card { + position: relative; + border-radius: 20px; + overflow: hidden; + min-height: 340px; + display: flex; + align-items: flex-end; + text-align: left; + transition: all 0.4s cubic-bezier(0.175, 0.885, 0.32, 1.275); + background-size: cover; + background-position: center; + box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05); + border: none; + padding: 0; } - /* Footer Animation on Scroll */ - .site-footer { - opacity: 0; - transform: translateY(30px); - animation: footerFadeIn 1s ease-out forwards; - animation-delay: 0.2s; - } +/* Cinematic Dark Gradient Overlay */ +.feature-card::before { + content: ''; + position: absolute; + inset: 0; + background: linear-gradient(to top, + rgba(0, 0, 0, 0.9) 0%, + rgba(0, 0, 0, 0.6) 60%, + rgba(0, 0, 0, 0.1) 100%); + transition: background 0.3s ease; + z-index: 1; +} - @keyframes footerFadeIn { - to { - opacity: 1; - transform: translateY(0); - } - } +/* Hover Effects */ +.feature-card:hover { + transform: translateY(-8px) scale(1.02); + box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.4); +} - .footer-brand, - .footer-links { - opacity: 0; - transform: translateY(20px); - animation: fadeInUp 0.8s ease-out forwards; /* Removed duplicate definition */ - } +.feature-card:hover::before { + background: linear-gradient(to top, + rgba(0, 0, 0, 0.95) 0%, + rgba(0, 0, 0, 0.7) 60%, + rgba(0, 0, 0, 0.2) 100%); +} - .footer-brand { - animation-delay: 0.3s; - } +/* Content Styling */ +.feature-content { + position: relative; + z-index: 2; + padding: 2rem; + width: 100%; + transform: translateY(0); + transition: transform 0.3s ease; +} - .footer-links:nth-child(2) { - animation-delay: 0.4s; - } +.feature-title { + font-family: 'Libertinus Serif', serif; + font-size: 1.85rem; + font-weight: 700; + color: #ffffff; + margin-bottom: 0.75rem; + text-shadow: 0 2px 4px rgba(0, 0, 0, 0.5); + letter-spacing: 0.5px; +} - .footer-links:nth-child(3) { - animation-delay: 0.5s; - } +.feature-description { + color: #f1f5f9; + font-size: 1.05rem; + line-height: 1.6; + font-weight: 500; + text-shadow: 0 1px 2px rgba(0, 0, 0, 0.8); + max-width: 95%; +} - /* Removed duplicate @keyframes fadeInUp definition */ +.feature-card { + background-size: cover; + background-position: center; + /* Optional: ensures text is readable over the image */ + color: #000; +} -/* Ripple Animation */ -@keyframes ripple { - to { - transform: scale(2); - opacity: 0; - } +/* Add the 0.5 (50%) transparency overlay to each */ +.feature-card.farmer { + background-image: linear-gradient(rgba(255, 255, 255, 0.685), rgba(255, 255, 255, 0.5)), url('images/farmer_card_bg.png'); } - .social-media { - display: flex; - gap: 1.2rem; - margin-top: 1.5rem; - justify-content: flex-start; - flex-wrap: wrap; - } - - .social-media a { - display: flex; - align-items: center; - justify-content: center; - width: 52px; - height: 52px; - background: linear-gradient(135deg, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0.05)); - border: 2px solid rgba(255, 255, 255, 0.2); - border-radius: 18px; - transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1); - font-size: 1.4rem; - color: rgba(255, 255, 255, 0.9); - backdrop-filter: blur(10px); - position: relative; - overflow: hidden; /* OK */ - box-shadow: - 0 4px 15px rgba(0, 0, 0, 0.1), - inset 0 1px 0 rgba(255, 255, 255, 0.2); - } - - .social-media a::before { - content: ''; - position: absolute; - top: 0; - left: -100%; - width: 100%; - height: 100%; - background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.3), transparent); - transition: left 0.6s ease; - } - - .social-media a::after { - content: ''; - position: absolute; - inset: 2px; - background: linear-gradient(135deg, rgba(255, 255, 255, 0.1), transparent); - border-radius: 14px; - opacity: 0; - transition: opacity 0.3s ease; - } - - .social-media a:hover::before { - left: 100%; - } - - .social-media a:hover::after { - opacity: 1; - } - - .social-media a:hover { - background: linear-gradient(135deg, rgba(255, 255, 255, 0.25), rgba(255, 255, 255, 0.1)); - border-color: rgba(255, 255, 255, 0.5); - transform: translateY(-4px) scale(1.08) rotate(5deg); - box-shadow: - 0 12px 30px rgba(0, 0, 0, 0.2), - 0 6px 18px rgba(255, 255, 255, 0.1), - inset 0 1px 0 rgba(255, 255, 255, 0.3); - color: #ffffff; - } - - .social-media a:nth-child(1):hover { transform: translateY(-4px) scale(1.08) rotate(-5deg); } - .social-media a:nth-child(2):hover { transform: translateY(-4px) scale(1.08) rotate(0deg); } - .social-media a:nth-child(3):hover { transform: translateY(-4px) scale(1.08) rotate(5deg); } - - /* Scroll to Top Button */ - /* Commenting out duplicate .scroll-to-top rule, keeping .scroll-btn */ - /* .scroll-to-top { ... } */ - /* .scroll-to-top.visible { ... } */ - /* .scroll-to-top:hover { ... } */ - - /* Tablet Design */ - @media (max-width: 1024px) and (min-width: 769px) { - .footer-inner { - grid-template-columns: 1.5fr 1fr 1fr; - gap: 2.5rem; - } - - .footer-brand { - padding-right: 1rem; - } - - .brand-header { - margin-bottom: 1.25rem; - } - - .mission-statement p { - font-size: 1.05rem; - padding: 1.5rem; - } - } - /* Enhanced Responsive Design for All Devices */ - - /* Extra Small Devices (Phones, 320px and up) */ - @media (max-width: 320px) { - .navbar { - padding: 0.75rem 1rem; - } - - .navbar-content { - flex-direction: column; - gap: 0.75rem; - } - - .nav-buttons { - flex-wrap: wrap; - gap: 0.5rem; - justify-content: center; - } - - .btn { - padding: 0.4rem 0.8rem; - font-size: 0.8rem; - } - - .search-container { - max-width: 100%; - margin: 0.5rem 0; - } - - .hero { - padding: 2rem 1rem; - } - - .hero h2 { - font-size: 1.5rem; - } - - .hero p { - font-size: 1rem; - } - - .carousel { - padding: 2rem 0rem; - } - - .features, - .cta { - padding: 2rem 1rem; - } - - .features-title, - .carousel-title { - font-size: 1.75rem; - } - - .feature-card { - padding: 1.5rem; - } - - .site-footer { - padding: 2rem 1rem; - } - - .footer-inner { - gap: 2rem; - } - } - - /* Small Devices (Phones, 480px and up) */ - @media (max-width: 480px) { - .navbar { - padding: 1rem; - } - - .hero { - padding: 2.5rem 1rem; - } - - .hero h2 { - font-size: 1.75rem; - } - - .features-grid { - grid-template-columns: 1fr; - gap: 1.5rem; - } - - .slide-track { - animation-duration: 15s; - } - - .slide-track img { - width: 250px; - height: 170px; - } - - .cta h3 { - font-size: 2rem; - } - - .cta p { - font-size: 1rem; - } - - .cta-button { - padding: 0.875rem 1.5rem; - font-size: 1rem; - } - - .footer-bottom-links { - flex-direction: column; - gap: 0.5rem; - } - } - - /* Enhanced Mobile Footer Responsiveness */ - @media (max-width: 480px) { - .site-footer { - padding: 2rem 1rem 1.5rem !important; - } - - .footer-inner { - grid-template-columns: 1fr !important; - gap: 2rem !important; - text-align: center; - } - - .footer-brand { - align-items: center; - text-align: center; - padding-right: 0 !important; - order: 1; - } - - .brand-header { - justify-content: center; - flex-direction: column; - gap: 0.75rem; - margin-bottom: 1rem; - } - - .footer-logo { - width: 48px !important; - height: 48px !important; - margin: 0 auto; - } - - .site-footer h3 { - font-size: 1.5rem !important; - text-align: center; - } - - .mission-statement { - padding: 1rem !important; - margin-bottom: 1rem; - } - - .mission-statement p { - text-align: center !important; - font-size: 0.95rem !important; - line-height: 1.6; - padding: 0 !important; - font-style: normal; - } - - .mission-statement::before, - .mission-statement::after { - display: none !important; - } - - .footer-links { - padding: 1rem !important; - margin-bottom: 1rem; - background: linear-gradient(135deg, #2e7d32, #4caf50) !important; - border: none !important; - } - - .footer-links h4 { - text-align: center; - margin-bottom: 1rem !important; - font-size: 1.1rem !important; - } - - .footer-links h4::before { - display: none; - } - - .footer-links h4::after { - left: 50% !important; - transform: translateX(-50%) !important; - width: 40px; - } - - .site-footer ul { - align-items: center; - gap: 0.25rem; - } - - .footer-links ul li a { - text-align: center; - justify-content: center; - padding: 8px 12px !important; - font-size: 0.9rem; - border-radius: 6px; - margin: 2px 0; - } - - .footer-links ul li a i { - margin-right: 6px; - width: 14px; - } - - .social-media { - justify-content: center; - align-items: center; - gap: 1rem; - margin-top: 1rem; - } - - .social-media a { - width: 44px !important; - height: 44px !important; - font-size: 1.2rem !important; - } - - .footer-bottom { - margin: 2rem auto 0 !important; - padding: 1.5rem 0.5rem 0 !important; - } - - .footer-bottom-content { - flex-direction: column; - gap: 1rem; - } - - .copyright { - font-size: 0.9rem !important; - padding: 0.5rem 0; - } - - .copyright::after { - /* font-size: 1rem; -- Was conflicting with other ::after rules */ - } - - .footer-bottom-links { - flex-direction: column; - gap: 0.5rem; - } - - .footer-bottom-links a { - padding: 0.6rem 1rem !important; - font-size: 0.85rem !important; - min-width: 120px; - } - - .separator { - display: none !important; - } - } - - /* Medium Devices (Tablets, 768px and up) */ - @media (max-width: 768px) { - .navbar { - padding: 1rem; - } - - .navbar-content { - flex-direction: column; - gap: 1rem; - } - - .nav-buttons { - flex-wrap: wrap; - justify-content: center; - gap: 0.75rem; - } - - .search-container { - order: -1; - width: 100%; - max-width: 100%; - margin: 0 0 1rem 0; - } - - .hero { - padding: 3rem 1rem; - } - - .hero h2 { - font-size: 2rem; - } - - .carousel { - padding: 3rem 0rem; - } - - .features, - .cta { - padding: 3rem 1rem; - } - - .features-grid { - grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); - gap: 2rem; - } - - .features-title, - .carousel-title { - font-size: 2rem; - } - - .slide-track { - animation-duration: 18s; - } - - .slide-track img { - width: 280px; - height: 190px; - } - - .site-footer { - padding: 3rem 1rem; - } - - .footer-inner { - grid-template-columns: 1fr; - gap: 2.5rem; - text-align: center; - } - - .footer-brand { - align-items: center; - text-align: center; - padding-right: 0; - order: 1; - } - - .brand-header { - justify-content: center; - flex-direction: column; - gap: 0.75rem; - } - - .mission-statement p { - text-align: center; - padding: 1.5rem; - font-size: 1rem; - } - - .mission-statement::before, - .mission-statement::after { - display: none; - } - - .footer-links:nth-child(2) { - order: 2; - } - - .footer-links:nth-child(3) { - order: 3; - } - - .footer-links h4 { - text-align: center; - margin-bottom: 1.25rem; - } - - .footer-links h4::after { - left: 50%; - transform: translateX(-50%); - } - - .site-footer ul { - align-items: center; - } - - .footer-links ul li a { - text-align: center; - padding: 10px 16px; - justify-content: center; - } - - .social-media { - justify-content: center; - align-items: center; - gap: 1.5rem; - } - - .footer-bottom-content { - flex-direction: column; - gap: 1.25rem; - } - - .footer-bottom-links { - flex-direction: column; - gap: 0.75rem; - } - - .footer-bottom-links a { - padding: 0.75rem 1.25rem; - font-size: 0.9rem; - } - - .separator { - display: none; - } - } - - /* Large Tablets and Small Desktops (1024px and up) */ - @media (max-width: 1024px) and (min-width: 769px) { - .navbar { - padding: 1rem 2rem; - } - - .search-container { - max-width: 280px; - } - - .hero { - padding: 3.5rem 2rem; - } - - .carousel { - padding: 3.5rem 0rem; - } - - .features, - .cta { - padding: 3.5rem 2rem; - } - - .features-grid { - grid-template-columns: repeat(2, 1fr); - gap: 2rem; - } - - .footer-inner { - grid-template-columns: 1.5fr 1fr 1fr; - gap: 2.5rem; - } - - .footer-brand { - padding-right: 1rem; - } - - .brand-header { - margin-bottom: 1.25rem; - } - - .mission-statement p { - font-size: 1.05rem; - padding: 1.5rem; - } - } - - /* Extra Large Devices (Large Desktops, 1200px and up) */ - @media (min-width: 1500px) { - .navbar-content, - .hero-content, - .cta-content { - max-width: 1400px; - } - - .hero h2 { - font-size: 4rem; - } - - .hero p { - font-size: 1.25rem; - } - - .features-title, - .carousel-title { - font-size: 3rem; - } - - .feature-card { - padding: 2.5rem; - } - - .cta h3 { - font-size: 3rem; - } - } - - /* Ultra-wide screens (1600px and up) */ - @media (min-width: 1600px) { - .navbar-content, - .hero-content, - .features-container, - .cta-content, - .footer-inner { - max-width: 1600px; - } - - .features-grid { - grid-template-columns: repeat(4, 1fr); - gap: 3rem; - } - } - - /* Touch-Friendly Enhancements */ - @media (hover: none) and (pointer: coarse) { - .btn { - min-height: 44px; - padding: 0.75rem 1rem; - } - - .theme-toggle { - min-height: 44px; - padding: 0.75rem 1rem; - } - - .search-button { - width: 44px; - height: 44px; - } - - .feature-card { - padding: 2rem 1.5rem; - } - - .cta-button { - min-height: 48px; - padding: 1rem 2rem; - } - - .footer-links a { - min-height: 44px; - padding: 0.75rem 1rem; - display: flex; - align-items: center; - } - - .scroll-btn, - .scroll-to-top { - width: 56px; - height: 56px; - } - - #chatbotBtn { - width: 64px; - height: 64px; - font-size: 24px; - } - } - - /* High DPI/Retina Display Support */ - @media (-webkit-min-device-pixel-ratio: 2), (min-resolution: 192dpi) { - .footer-logo { - image-rendering: -webkit-optimize-contrast; - image-rendering: crisp-edges; - } - } - - /* Reduced Motion Support */ - @media (prefers-reduced-motion: reduce) { - * { - animation-duration: 0.01ms !important; - animation-iteration-count: 1 !important; - transition-duration: 0.01ms !important; - } - - .slide-track { - animation: none; - } - - .site-footer::before, - .site-footer::after { - animation: none; - } - } - - /* Dark Mode Media Query Support */ - @media (prefers-color-scheme: dark) { - :root:not([data-theme="light"]) { - --bg-primary: #0f172a; - --bg-secondary: #1e293b; - --bg-tertiary: #334155; - --text-primary: #f8fafc; - --text-secondary: #cbd5e1; - --text-muted: #94a3b8; - --border-color: #334155; - --shadow-light: rgba(0, 0, 0, 0.3); - --shadow-medium: rgba(0, 0, 0, 0.4); - --shadow-heavy: rgba(0, 0, 0, 0.6); - --light-green: #1a2e1a; - --green-hover: #22c55e; - } - } - - - /* Floating Chatbot Button */ -#chatbotBtn { - position: fixed; - bottom: 100px; /* 20px above scroll-to-top button */ - right: 30px; - width: 60px; - height: 60px; - background-color: #4caf50; /* greenish theme */ - color: #fff; - font-size: 28px; - text-align: center; - line-height: 60px; - border-radius: 50%; - box-shadow: 0 6px 18px rgba(0,0,0,0.3); - cursor: pointer; - transition: transform 0.2s ease, box-shadow 0.2s ease, background 0.2s ease; - z-index: 1100; /* above scroll-to-top button */ + +.feature-card.buyer { + background-image: linear-gradient(rgba(255, 255, 255, 0.5), rgba(255, 255, 255, 0.5)), url('images/buyer_card_bg.png'); } -#chatbotBtn:hover { - transform: translateY(-4px) scale(1.1); - box-shadow: 0 8px 22px rgba(0,0,0,0.35); - background-color: #43a047; /* slightly darker green on hover */ +.feature-card.equipment { + background-image: linear-gradient(rgba(255, 255, 255, 0.5), rgba(255, 255, 255, 0.5)), url('images/equipment_card_bg.png'); } -/* Mobile responsiveness: hide on very small screens */ -@media (max-width: 400px) { - #chatbotBtn { - display: none; - } +.feature-card.grocery { + background-image: linear-gradient(rgba(255, 255, 255, 0.5), rgba(255, 255, 255, 0.5)), url('images/grocery_card_bg.png'); } - /* Scroll Button */ -.scroll-btn { - position: fixed; - bottom: 2rem; - right: 2rem; +/* Carousel Section */ +.carousel { + padding: 4rem 0rem; + background: var(--bg-secondary); + overflow: hidden; + /* OK */ + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; +} + +.carousel-title { + font-family: 'Libertinus Serif', serif; + text-align: center; + font-size: 2.5rem; + font-weight: 600; + color: var(--text-primary); + margin-bottom: 3rem; +} + +.slider { + width: 100%; + max-width: 1530px; + padding: 1rem 0rem; + overflow: hidden; + /* OK */ + position: relative; + mask-image: linear-gradient(to right, transparent, black 10%, black 90%, transparent); +} + +.slide-track { + display: flex; + animation: scroll 20s linear infinite; + width: calc(300px * 12); + /* 12 images total */ + overflow: visible; +} + +.slide-track img { + width: 300px; + height: 200px; + object-fit: cover; + border-radius: 12px; + margin-right: 1rem; + box-shadow: 0 4px 15px var(--shadow-light); + transition: transform 0.3s ease; +} + +.slide-track img:hover { + transform: scale(1.05); +} + +@keyframes scroll { + 0% { + transform: translateX(0); + } + + 100% { + transform: translateX(calc(-300px * 6 - 6rem)); + } + + /* Move by 6 images */ +} + +/* CTA Section */ +.cta { + background: linear-gradient(135deg, var(--primary-green), var(--secondary-green)); + color: white; + padding: 4rem 2rem; + text-align: center; +} + +.cta-content { + max-width: 600px; + margin: 0 auto; +} + +.cta h3 { + font-family: 'Libertinus Serif', serif; + font-size: 2.5rem; + font-weight: 600; + margin-bottom: 1rem; +} + +.cta p { + font-size: 1.125rem; + margin-bottom: 2rem; + opacity: 0.9; +} + +.cta-button { + display: inline-block; + background: white; + color: var(--primary-green); + padding: 1rem 2rem; + border-radius: 12px; + text-decoration: none; + font-weight: 600; + font-size: 1.125rem; + transition: all 0.3s ease; + box-shadow: 0 4px 15px rgba(0, 0, 0, 0.1); +} + +/* CTA Button hover effect */ +.cta-button:hover { + transform: translateY(-2px); + box-shadow: 0 8px 25px rgba(0, 0, 0, 0.2); +} + +/* Footer styles (assuming footer.css is imported correctly now) */ +/* ... styles specific to footer might be in footer.css ... */ + +/* Generic Footer Styles (included here for completeness, might duplicate footer.css) */ +.site-footer { + background: linear-gradient(135deg, #2e7d32, #4caf50); + color: white; + margin-top: auto; + padding: 4rem 2rem 2.5rem; + position: relative; + overflow: hidden; + /* OK */ + + box-shadow: + 0 -4px 16px rgba(46, 125, 50, 0.1), + 0 -2px 8px rgba(46, 125, 50, 0.05), + inset 0 1px 0 rgba(255, 255, 255, 0.05); +} + +.site-footer::after { + content: ''; + position: absolute; + top: 0; + left: 0; + right: 0; + height: 2px; + background: linear-gradient(90deg, + transparent 0%, + rgba(255, 255, 255, 0.3) 20%, + rgba(255, 255, 255, 0.6) 50%, + rgba(255, 255, 255, 0.3) 80%, + transparent 100%); + animation: shimmerTop 3s ease-in-out infinite; +} + +@keyframes shimmerTop { + + 0%, + 100% { + opacity: 0.5; + } + + 50% { + opacity: 1; + } +} + +.site-footer::before { + content: ''; + position: absolute; + top: 0; + left: 0; + right: 0; + bottom: 0; + background: + radial-gradient(circle at 20% 50%, rgba(255, 255, 255, 0.12) 0%, transparent 50%), + radial-gradient(circle at 80% 20%, rgba(255, 255, 255, 0.10) 0%, transparent 50%), + radial-gradient(circle at 40% 80%, rgba(255, 255, 255, 0.08) 0%, transparent 50%), + linear-gradient(45deg, transparent 30%, rgba(255, 255, 255, 0.02) 50%, transparent 70%); + pointer-events: none; + animation: footerShimmer 20s ease-in-out infinite, floatingParticles 25s linear infinite; + /* Combined animations */ +} + +@keyframes footerShimmer { + + 0%, + 100% { + opacity: 1; + } + + 50% { + opacity: 0.8; + } +} + +@keyframes floatingParticles { + 0% { + background-position: 0% 0%, 100% 0%, 50% 100%; + } + + 33% { + background-position: 100% 50%, 0% 100%, 0% 0%; + } + + 66% { + background-position: 50% 100%, 50% 0%, 100% 50%; + } + + 100% { + background-position: 0% 0%, 100% 0%, 50% 100%; + } +} + + +.footer-inner { + max-width: 1200px; + margin: 0 auto; + display: grid; + grid-template-columns: 2fr 1fr 1fr; + gap: 3.5rem; + align-items: flex-start; + position: relative; + z-index: 1; +} + +.footer-inner::before { + content: ''; + position: absolute; + top: -20px; + left: 50%; + transform: translateX(-50%); + width: 60px; + height: 4px; + background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.4), transparent); + border-radius: 2px; +} + +.footer-brand { + display: flex; + flex-direction: column; + gap: 1.5rem; + padding-right: 2rem; + position: relative; +} + +.footer-brand::before { + content: ''; + position: absolute; + top: 0; + right: 0; + width: 1px; + height: 100%; + background: linear-gradient(180deg, + transparent 0%, + rgba(255, 255, 255, 0.2) 30%, + rgba(255, 255, 255, 0.3) 50%, + rgba(255, 255, 255, 0.2) 70%, + transparent 100%); +} + +.footer-logo { + width: 60px; + height: 60px; + border-radius: 12px; + object-fit: cover; + background: white; + padding: 8px; + box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1); +} + +.site-footer h3, +.site-footer h4 { + font-family: 'Libertinus Serif', serif; + margin: 0 0 1.5rem 0; + font-weight: 600; +} + +.site-footer h3 { + font-size: 2rem; + margin-bottom: 1rem; + background: linear-gradient(135deg, #ffffff, #e8f5e8); + -webkit-background-clip: text; + -webkit-text-fill-color: transparent; + background-clip: text; + font-weight: 700; + text-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); + letter-spacing: -0.02em; +} + +.site-footer h4 { + font-size: 1.25rem; + position: relative; + padding-bottom: 0.5rem; + margin-bottom: 1.5rem; + color: #ffffff; + text-transform: uppercase; + letter-spacing: 1px; + font-weight: 700; +} + +.site-footer h4::before { + content: ''; + position: absolute; + top: -5px; + left: -10px; + width: 4px; + height: calc(100% + 10px); + background: linear-gradient(180deg, rgba(255, 255, 255, 0.8), rgba(255, 255, 255, 0.3)); + border-radius: 2px; +} + +.site-footer h4::after { + content: ''; + position: absolute; + bottom: 0; + left: 0; + width: 50px; + height: 3px; + background: linear-gradient(90deg, rgba(255, 255, 255, 0.9), rgba(255, 255, 255, 0.4)); + border-radius: 3px; + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.2); +} + +.site-footer p { + margin: 0; + opacity: 0.95; + line-height: 1.7; + text-align: justify; + text-justify: inter-word; + hyphens: auto; + font-size: 1rem; +} + +/* Brand Header Section */ +.brand-header { + display: flex; + align-items: center; + gap: 1rem; + margin-bottom: 1.5rem; +} + +.footer-logo { + width: 56px; + height: 56px; + border-radius: 16px; + object-fit: cover; + background: linear-gradient(135deg, #ffffff, #f8f9fa); + padding: 10px; + box-shadow: + 0 8px 25px rgba(0, 0, 0, 0.15), + 0 4px 12px rgba(46, 125, 50, 0.2), + inset 0 1px 0 rgba(255, 255, 255, 0.3); + transition: all 0.3s ease; + border: 2px solid rgba(255, 255, 255, 0.1); +} + +.footer-logo:hover { + transform: translateY(-2px) scale(1.05); + box-shadow: + 0 12px 35px rgba(0, 0, 0, 0.2), + 0 6px 18px rgba(46, 125, 50, 0.3); +} + +/* Mission Statement Enhancement */ +.mission-statement { + margin-bottom: 1.5rem; + position: relative; + padding: 1.5rem; + background: rgba(255, 255, 255, 0.05); + border-radius: 16px; + border: 1px solid rgba(255, 255, 255, 0.1); + backdrop-filter: blur(10px); +} + +.mission-statement::before { + content: '"'; + position: absolute; + top: -10px; + left: 20px; + font-size: 3rem; + color: rgba(255, 255, 255, 0.3); + font-family: 'Libertinus Serif', serif; +} + +.mission-statement::after { + content: '"'; + position: absolute; + bottom: -20px; + right: 20px; + font-size: 3rem; + color: rgba(255, 255, 255, 0.3); + font-family: 'Libertinus Serif', serif; +} + +.mission-statement p { + font-size: 1.1rem; + line-height: 1.8; + font-weight: 400; + letter-spacing: 0.3px; + text-align: justify; + text-justify: inter-character; + hyphens: auto; + margin: 0; + padding: 0; + color: rgba(255, 255, 255, 0.95); + word-spacing: -0.1em; + text-align-last: left; + font-style: italic; + position: relative; + z-index: 1; +} + +.no-break { + white-space: nowrap; + hyphens: none; + word-break: keep-all; +} + + +/* Footer Links Section */ +.footer-links { + display: flex; + flex-direction: column; + position: relative; + padding: 1.5rem; + background: rgba(255, 255, 255, 0.03); + border-radius: 16px; + border: 1px solid rgba(255, 255, 255, 0.1); + transition: all 0.3s ease; +} + +.footer-links:hover { + background: rgba(255, 255, 255, 0.08); + transform: translateY(-2px); + box-shadow: 0 4px 20px rgba(0, 0, 0, 0.1); +} + +.site-footer ul { + list-style: none; + padding: 0; + margin: 0; + display: flex; + flex-direction: column; + gap: 0.5rem; +} + +.site-footer ul li { + position: relative; +} + +.site-footer a { + color: white; + text-decoration: none; + opacity: 0.95; + transition: all 0.3s ease; + display: inline-block; + /* Changed back from block */ + font-size: 0.95rem; + position: relative; +} + +.site-footer a i { + margin-right: 8px; + width: 16px; + color: rgba(255, 255, 255, 0.8); + transition: all 0.3s ease; +} + +.site-footer a:hover i { + color: #ffffff; + transform: scale(1.1); +} + +.site-footer .footer-links a:hover { + opacity: 1; + /* transform: translateX(8px); -- Handled by combined rule */ + color: rgba(255, 255, 255, 1); + background: linear-gradient(135deg, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0.05)); + border-radius: 8px; + padding: 8px 16px; + box-shadow: + 0 4px 12px rgba(0, 0, 0, 0.1), + inset 0 1px 0 rgba(255, 255, 255, 0.2); + border: 1px solid rgba(255, 255, 255, 0.2); +} + +.site-footer .footer-links a::before { + content: ''; + position: absolute; + left: -4px; + top: 50%; + transform: translateY(-50%); + width: 0; + height: 2px; + background: linear-gradient(90deg, rgba(255, 255, 255, 0.8), transparent); + transition: width 0.3s ease; +} + +.site-footer .footer-links a:hover::before { + width: 100%; +} + +.footer-bottom { + max-width: 1200px; + margin: 3rem auto 0; + padding: 2.5rem 1rem 0; + border-top: 1px solid rgba(255, 255, 255, 0.25); + text-align: center; + position: relative; +} + +.footer-bottom::before { + content: ''; + position: absolute; + top: 0; + left: 50%; + transform: translateX(-50%); + width: 100px; + height: 1px; + background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.6), transparent); +} + +.footer-bottom-content { + display: flex; + flex-direction: column; + align-items: center; + gap: 1.5rem; +} + +.copyright { + font-size: 1.1rem; + font-weight: 600; + color: rgba(255, 255, 255, 0.95); + margin: 0; + letter-spacing: 0.5px; + text-shadow: 0 2px 4px rgba(0, 0, 0, 0.2); + position: relative; + padding: 1rem 0; +} + +.copyright::after { + content: ''; + position: absolute; + bottom: -8px; + left: 50%; + transform: translateX(-50%); + width: 60px; + height: 2px; + background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.6), transparent); + border-radius: 2px; +} + +.footer-bottom-links { + display: flex; + align-items: center; + gap: 0.75rem; + flex-wrap: wrap; + justify-content: center; +} + +.footer-bottom-links a { + color: rgba(255, 255, 255, 0.85); + text-decoration: none; + font-size: 0.875rem; + padding: 0.5rem 1rem; + border-radius: 6px; + transition: all 0.3s ease; + background: rgba(255, 255, 255, 0.05); + border: 1px solid rgba(255, 255, 255, 0.1); +} + +.footer-bottom-links a:hover { + color: white; + background: rgba(255, 255, 255, 0.15); + border-color: rgba(255, 255, 255, 0.3); + transform: translateY(-2px); +} + +.separator { + color: rgba(255, 255, 255, 0.4); + font-weight: bold; + font-size: 0.75rem; +} + +.footer-bottom a { + color: rgba(255, 255, 255, 0.9); + transition: all 0.3s ease; +} + +.footer-bottom a:hover { + color: white; + text-decoration: underline; +} + +/* Enhanced Footer Links Hover Effects */ +.footer-links ul li a { + position: relative; + /* color: rgba(255, 255, 255, 0.95); -- Defined earlier */ + text-decoration: none; + font-weight: 500; + padding: 4px 12px; + border-radius: 8px; + transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); + display: block; + /* Changed back to block for full-width hover */ +} + +/* Enhanced hover effect with improved visual feedback */ +.footer-links ul li a:hover { + background: rgba(255, 255, 255, 0.12); + transform: translateX(8px) translateY(-2px); + /* Kept specific hover transform */ + box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15); + color: white; + text-shadow: 0 1px 3px rgba(0, 0, 0, 0.2); +} + +/* Improved underline animation */ +.footer-links ul li a::after { + content: ''; + position: absolute; + width: 0; + height: 2px; + left: 12px; + bottom: 6px; + background: linear-gradient(90deg, rgba(255, 255, 255, 0.8), rgba(255, 255, 255, 0.4)); + border-radius: 2px; + transition: width 0.4s cubic-bezier(0.4, 0, 0.2, 1); +} + +.footer-links ul li a:hover::after { + width: calc(100% - 24px); +} + +/* Focus states for accessibility */ +.footer-links ul li a:focus { + outline: 2px solid rgba(255, 255, 255, 0.6); + outline-offset: 2px; +} + +/* Mission Stats Section Styling */ +.mission-stats { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(120px, 1fr)); + gap: 2rem; + margin: 2rem 0; + padding: 2rem; + background: rgba(255, 255, 255, 0.08); + backdrop-filter: blur(15px); + border: 1px solid rgba(255, 255, 255, 0.1); + border-radius: 20px; + position: relative; + overflow: hidden; + /* OK */ +} + +.mission-stats::before { + content: ''; + position: absolute; + top: 0; + left: -100%; + width: 100%; + height: 100%; + background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.1), transparent); + animation: statsShine 3s ease-in-out infinite; +} + +.stat-item { + text-align: center; + padding: 1.5rem; + border-radius: 16px; + background: rgba(255, 255, 255, 0.05); + backdrop-filter: blur(10px); + border: 1px solid rgba(255, 255, 255, 0.08); + transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1); + position: relative; + overflow: hidden; + /* OK */ +} + +.stat-item::before { + content: ''; + position: absolute; + top: 50%; + left: 50%; + width: 0; + height: 0; + background: radial-gradient(circle, rgba(255, 255, 255, 0.1), transparent 70%); + border-radius: 50%; + transform: translate(-50%, -50%); + transition: all 0.6s cubic-bezier(0.4, 0, 0.2, 1); + z-index: 0; +} + +.stat-item:hover { + transform: translateY(-8px) scale(1.05); + background: rgba(255, 255, 255, 0.12); + border-color: rgba(255, 255, 255, 0.2); + box-shadow: 0 20px 40px rgba(46, 125, 50, 0.3), + 0 0 60px rgba(255, 255, 255, 0.1); +} + +.stat-item:hover::before { + width: 200px; + height: 200px; +} + +.stat-number { + display: block; + font-size: 2.5rem; + font-weight: 800; + color: #ffffff; + margin-bottom: 0.5rem; + background: linear-gradient(135deg, #ffffff, #e8f5e8); + -webkit-background-clip: text; + -webkit-text-fill-color: transparent; + background-clip: text; + position: relative; + z-index: 1; + text-shadow: 0 2px 10px rgba(255, 255, 255, 0.2); +} + +.stat-label { + display: block; + font-size: 1rem; + font-weight: 500; + color: rgba(255, 255, 255, 0.9); + text-transform: uppercase; + letter-spacing: 1px; + position: relative; + z-index: 1; +} + +/* Enhanced Social Media Section */ +.social-media { + display: flex; + justify-content: flex-start; + align-items: center; + gap: 1rem; + margin-top: 2rem; + padding: 1.5rem; + background: rgba(255, 255, 255, 0.05); + border-radius: 16px; + border: 1px solid rgba(255, 255, 255, 0.1); + backdrop-filter: blur(10px); +} + +.social-media a { + display: flex; + align-items: center; + justify-content: center; + width: 48px; + height: 48px; + border-radius: 12px; + background: rgba(255, 255, 255, 0.1); + border: 1px solid rgba(255, 255, 255, 0.2); + transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1); + position: relative; + overflow: hidden; + /* OK */ +} + +.social-media a::before { + content: ''; + position: absolute; + top: 0; + left: -100%; + width: 100%; + height: 100%; + background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.2), transparent); + transition: all 0.6s ease; +} + +.social-media a:hover { + transform: translateY(-4px) scale(1.1) rotate(5deg); + background: rgba(255, 255, 255, 0.2); + border-color: rgba(255, 255, 255, 0.4); + box-shadow: 0 12px 25px rgba(0, 0, 0, 0.2), + 0 0 30px rgba(255, 255, 255, 0.15); +} + +.social-media a:hover::before { + left: 100%; +} + +.social-media a i { + font-size: 1.4rem; + color: rgba(255, 255, 255, 0.9); + transition: all 0.3s ease; + z-index: 1; + position: relative; +} + +.social-media a:hover i { + color: #ffffff; + transform: scale(1.2); + filter: drop-shadow(0 0 8px rgba(255, 255, 255, 0.5)); +} + +/* Enhanced Footer Links with Better Icons */ +.footer-links a { + /* Duplicate selector, merging properties */ + /* color: rgba(255, 255, 255, 0.9); -- Defined earlier */ + text-decoration: none; + font-weight: 500; + transition: all 0.3s ease; + position: relative; + padding: 0.5rem 0; + display: flex; + /* Kept from previous rule */ + align-items: center; + /* Kept from previous rule */ + gap: 0.5rem; + /* Kept from previous rule */ +} + +.footer-links a:hover { + /* color: #ffffff; -- Defined earlier */ + transform: translateX(8px); + /* Keep this specific hover transform */ + text-shadow: 0 2px 10px rgba(255, 255, 255, 0.3); +} + +.footer-links a i { + font-size: 1.1rem; + transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); + background: linear-gradient(135deg, #ffffff, #e8f5e8); + -webkit-background-clip: text; + -webkit-text-fill-color: transparent; + background-clip: text; +} + +.footer-links a:hover i { + transform: rotate(360deg) scale(1.2); + filter: drop-shadow(0 0 8px rgba(255, 255, 255, 0.5)); +} + +/* Advanced Keyframe Animations */ +@keyframes statsShine { + 0% { + left: -100%; + } + + 50% { + left: 100%; + } + + 100% { + left: 100%; + } +} + +/* Number Counting Animation */ +@keyframes countUp { + 0% { + transform: translateY(20px); + opacity: 0; + } + + 100% { + transform: translateY(0); + opacity: 1; + } +} + +.stat-number { + animation: countUp 0.8s ease-out forwards; + animation-delay: var(--delay, 0s); +} + +.stat-item:nth-child(1) .stat-number { + --delay: 0.2s; +} + +.stat-item:nth-child(2) .stat-number { + --delay: 0.4s; +} + +.stat-item:nth-child(3) .stat-number { + --delay: 0.6s; +} + +/* Pulsing Effect for Stats */ +.stat-item:hover .stat-number { + animation: pulse 1s ease-in-out infinite; +} + +/* Removed duplicate @keyframes pulse definition */ + +/* Floating Orb Animation */ +/* .site-footer::after { This selector was used earlier for top shimmer } */ +/* Renaming animation to avoid conflict if needed, or remove if duplicate functionality */ +@keyframes floatingOrb { + + 0%, + 100% { + transform: translate(0, 0) scale(1); + opacity: 0.6; + } + + 25% { + transform: translate(-30px, -20px) scale(1.1); + opacity: 0.8; + } + + 50% { + transform: translate(-60px, 10px) scale(0.9); + opacity: 0.4; + } + + 75% { + transform: translate(-20px, -30px) scale(1.05); + opacity: 0.7; + } +} + +/* Applying floating orb to a new pseudo-element or adjust selector */ +.site-footer::before { + /* Reusing ::before for floating orb along with shimmer/particles */ + /* ... existing background styles ... */ + /* Add orb styles here if appropriate or use a separate element/pseudo */ + /* Example adding orb animation to ::before */ + animation: footerShimmer 20s ease-in-out infinite, floatingParticles 25s linear infinite, floatingOrb 15s ease-in-out infinite; +} + + +/* Sparkle Animation for Mission Stats */ +.mission-stats::after { + content: ''; + position: absolute; + top: 20px; + right: 20px; + width: 6px; + height: 6px; + background: rgba(255, 255, 255, 0.8); + border-radius: 50%; + animation: sparkle 2s ease-in-out infinite; +} + +@keyframes sparkle { + + 0%, + 100% { + opacity: 0; + transform: scale(0); + } + + 50% { + opacity: 1; + transform: scale(1); + } +} + +/* Enhanced Hover Effect for Footer Links */ +.footer-links { + transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1); +} + +.footer-links::before { + /* Reusing ::before might conflict, ensure intended effect */ + content: ''; + position: absolute; + top: 0; + left: 0; + right: 0; + bottom: 0; + background: linear-gradient(135deg, rgba(255, 255, 255, 0.1), transparent); + opacity: 0; + transition: opacity 0.3s ease; + border-radius: 16px; +} + +.footer-links:hover::before { + opacity: 1; +} + +/* Footer Brand Glow Effect */ +.footer-brand:hover .footer-logo { + box-shadow: + 0 12px 35px rgba(0, 0, 0, 0.2), + 0 6px 18px rgba(46, 125, 50, 0.3), + 0 0 30px rgba(255, 255, 255, 0.3); +} + +/* Typography Enhancement */ +.site-footer h3 { + position: relative; +} + +.site-footer h3::after { + content: ''; + position: absolute; + bottom: -5px; + left: 0; + width: 0; + height: 2px; + background: linear-gradient(90deg, rgba(255, 255, 255, 0.8), transparent); + transition: width 0.6s ease; +} + +.footer-brand:hover .site-footer h3::after { + width: 100%; +} + +/* Footer Animation on Scroll */ +.site-footer { + opacity: 0; + transform: translateY(30px); + animation: footerFadeIn 1s ease-out forwards; + animation-delay: 0.2s; +} + +@keyframes footerFadeIn { + to { + opacity: 1; + transform: translateY(0); + } +} + +.footer-brand, +.footer-links { + opacity: 0; + transform: translateY(20px); + animation: fadeInUp 0.8s ease-out forwards; + /* Removed duplicate definition */ +} + +.footer-brand { + animation-delay: 0.3s; +} + +.footer-links:nth-child(2) { + animation-delay: 0.4s; +} + +.footer-links:nth-child(3) { + animation-delay: 0.5s; +} + +/* Removed duplicate @keyframes fadeInUp definition */ + +/* Ripple Animation */ +@keyframes ripple { + to { + transform: scale(2); + opacity: 0; + } +} + +.social-media { + display: flex; + gap: 1.2rem; + margin-top: 1.5rem; + justify-content: flex-start; + flex-wrap: wrap; +} + +.social-media a { + display: flex; + align-items: center; + justify-content: center; + width: 52px; + height: 52px; + background: linear-gradient(135deg, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0.05)); + border: 2px solid rgba(255, 255, 255, 0.2); + border-radius: 18px; + transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1); + font-size: 1.4rem; + color: rgba(255, 255, 255, 0.9); + backdrop-filter: blur(10px); + position: relative; + overflow: hidden; + /* OK */ + box-shadow: + 0 4px 15px rgba(0, 0, 0, 0.1), + inset 0 1px 0 rgba(255, 255, 255, 0.2); +} + +.social-media a::before { + content: ''; + position: absolute; + top: 0; + left: -100%; + width: 100%; + height: 100%; + background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.3), transparent); + transition: left 0.6s ease; +} + +.social-media a::after { + content: ''; + position: absolute; + inset: 2px; + background: linear-gradient(135deg, rgba(255, 255, 255, 0.1), transparent); + border-radius: 14px; + opacity: 0; + transition: opacity 0.3s ease; +} + +.social-media a:hover::before { + left: 100%; +} + +.social-media a:hover::after { + opacity: 1; +} + +.social-media a:hover { + background: linear-gradient(135deg, rgba(255, 255, 255, 0.25), rgba(255, 255, 255, 0.1)); + border-color: rgba(255, 255, 255, 0.5); + transform: translateY(-4px) scale(1.08) rotate(5deg); + box-shadow: + 0 12px 30px rgba(0, 0, 0, 0.2), + 0 6px 18px rgba(255, 255, 255, 0.1), + inset 0 1px 0 rgba(255, 255, 255, 0.3); + color: #ffffff; +} + +.social-media a:nth-child(1):hover { + transform: translateY(-4px) scale(1.08) rotate(-5deg); +} + +.social-media a:nth-child(2):hover { + transform: translateY(-4px) scale(1.08) rotate(0deg); +} + +.social-media a:nth-child(3):hover { + transform: translateY(-4px) scale(1.08) rotate(5deg); +} + +/* Scroll to Top Button */ +/* Commenting out duplicate .scroll-to-top rule, keeping .scroll-btn */ +/* .scroll-to-top { ... } */ +/* .scroll-to-top.visible { ... } */ +/* .scroll-to-top:hover { ... } */ + +/* Tablet Design */ +@media (max-width: 1024px) and (min-width: 769px) { + .footer-inner { + grid-template-columns: 1.5fr 1fr 1fr; + gap: 2.5rem; + } + + .footer-brand { + padding-right: 1rem; + } + + .brand-header { + margin-bottom: 1.25rem; + } + + .mission-statement p { + font-size: 1.05rem; + padding: 1.5rem; + } +} + +/* Enhanced Responsive Design for All Devices */ + +/* Extra Small Devices (Phones, 320px and up) */ +@media (max-width: 320px) { + .navbar { + padding: 0.75rem 1rem; + } + + .navbar-content { + flex-direction: column; + gap: 0.75rem; + } + + .nav-buttons { + flex-wrap: wrap; + gap: 0.5rem; + justify-content: center; + } + + .btn { + padding: 0.4rem 0.8rem; + font-size: 0.8rem; + } + + .search-container { + max-width: 100%; + margin: 0.5rem 0; + } + + .hero { + padding: 2rem 1rem; + } + + .hero h2 { + font-size: 1.5rem; + } + + .hero p { + font-size: 1rem; + } + + .carousel { + padding: 2rem 0rem; + } + + .features, + .cta { + padding: 2rem 1rem; + } + + .features-title, + .carousel-title { + font-size: 1.75rem; + } + + .feature-card { + padding: 1.5rem; + } + + .site-footer { + padding: 2rem 1rem; + } + + .footer-inner { + gap: 2rem; + } +} + +/* Small Devices (Phones, 480px and up) */ +@media (max-width: 480px) { + .navbar { + padding: 1rem; + } + + .hero { + padding: 2.5rem 1rem; + } + + .hero h2 { + font-size: 1.75rem; + } + + .features-grid { + grid-template-columns: 1fr; + gap: 1.5rem; + } + + .slide-track { + animation-duration: 15s; + } + + .slide-track img { + width: 250px; + height: 170px; + } + + .cta h3 { + font-size: 2rem; + } + + .cta p { + font-size: 1rem; + } + + .cta-button { + padding: 0.875rem 1.5rem; + font-size: 1rem; + } + + .footer-bottom-links { + flex-direction: column; + gap: 0.5rem; + } +} + +/* Enhanced Mobile Footer Responsiveness */ +@media (max-width: 480px) { + .site-footer { + padding: 2rem 1rem 1.5rem !important; + } + + .footer-inner { + grid-template-columns: 1fr !important; + gap: 2rem !important; + text-align: center; + } + + .footer-brand { + align-items: center; + text-align: center; + padding-right: 0 !important; + order: 1; + } + + .brand-header { + justify-content: center; + flex-direction: column; + gap: 0.75rem; + margin-bottom: 1rem; + } + + .footer-logo { + width: 48px !important; + height: 48px !important; + margin: 0 auto; + } + + .site-footer h3 { + font-size: 1.5rem !important; + text-align: center; + } + + .mission-statement { + padding: 1rem !important; + margin-bottom: 1rem; + } + + .mission-statement p { + text-align: center !important; + font-size: 0.95rem !important; + line-height: 1.6; + padding: 0 !important; + font-style: normal; + } + + .mission-statement::before, + .mission-statement::after { + display: none !important; + } + + .footer-links { + padding: 1rem !important; + margin-bottom: 1rem; + background: linear-gradient(135deg, #2e7d32, #4caf50) !important; + border: none !important; + } + + .footer-links h4 { + text-align: center; + margin-bottom: 1rem !important; + font-size: 1.1rem !important; + } + + .footer-links h4::before { + display: none; + } + + .footer-links h4::after { + left: 50% !important; + transform: translateX(-50%) !important; + width: 40px; + } + + .site-footer ul { + align-items: center; + gap: 0.25rem; + } + + .footer-links ul li a { + text-align: center; + justify-content: center; + padding: 8px 12px !important; + font-size: 0.9rem; + border-radius: 6px; + margin: 2px 0; + } + + .footer-links ul li a i { + margin-right: 6px; + width: 14px; + } + + .social-media { + justify-content: center; + align-items: center; + gap: 1rem; + margin-top: 1rem; + } + + .social-media a { + width: 44px !important; + height: 44px !important; + font-size: 1.2rem !important; + } + + .footer-bottom { + margin: 2rem auto 0 !important; + padding: 1.5rem 0.5rem 0 !important; + } + + .footer-bottom-content { + flex-direction: column; + gap: 1rem; + } + + .copyright { + font-size: 0.9rem !important; + padding: 0.5rem 0; + } + + .copyright::after { + /* font-size: 1rem; -- Was conflicting with other ::after rules */ + } + + .footer-bottom-links { + flex-direction: column; + gap: 0.5rem; + } + + .footer-bottom-links a { + padding: 0.6rem 1rem !important; + font-size: 0.85rem !important; + min-width: 120px; + } + + .separator { + display: none !important; + } +} + +/* Medium Devices (Tablets, 768px and up) */ +@media (max-width: 768px) { + .navbar { + padding: 1rem; + } + + .navbar-content { + flex-direction: column; + gap: 1rem; + } + + .nav-buttons { + flex-wrap: wrap; + justify-content: center; + gap: 0.75rem; + } + + .search-container { + order: -1; + width: 100%; + max-width: 100%; + margin: 0 0 1rem 0; + } + + .hero { + padding: 3rem 1rem; + } + + .hero h2 { + font-size: 2rem; + } + + .carousel { + padding: 3rem 0rem; + } + + .features, + .cta { + padding: 3rem 1rem; + } + + .features-grid { + grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); + gap: 2rem; + } + + .features-title, + .carousel-title { + font-size: 2rem; + } + + .slide-track { + animation-duration: 18s; + } + + .slide-track img { + width: 280px; + height: 190px; + } + + .site-footer { + padding: 3rem 1rem; + } + + .footer-inner { + grid-template-columns: 1fr; + gap: 2.5rem; + text-align: center; + } + + .footer-brand { + align-items: center; + text-align: center; + padding-right: 0; + order: 1; + } + + .brand-header { + justify-content: center; + flex-direction: column; + gap: 0.75rem; + } + + .mission-statement p { + text-align: center; + padding: 1.5rem; + font-size: 1rem; + } + + .mission-statement::before, + .mission-statement::after { + display: none; + } + + .footer-links:nth-child(2) { + order: 2; + } + + .footer-links:nth-child(3) { + order: 3; + } + + .footer-links h4 { + text-align: center; + margin-bottom: 1.25rem; + } + + .footer-links h4::after { + left: 50%; + transform: translateX(-50%); + } + + .site-footer ul { + align-items: center; + } + + .footer-links ul li a { + text-align: center; + padding: 10px 16px; + justify-content: center; + } + + .social-media { + justify-content: center; + align-items: center; + gap: 1.5rem; + } + + .footer-bottom-content { + flex-direction: column; + gap: 1.25rem; + } + + .footer-bottom-links { + flex-direction: column; + gap: 0.75rem; + } + + .footer-bottom-links a { + padding: 0.75rem 1.25rem; + font-size: 0.9rem; + } + + .separator { + display: none; + } +} + +/* Large Tablets and Small Desktops (1024px and up) */ +@media (max-width: 1024px) and (min-width: 769px) { + .navbar { + padding: 1rem 2rem; + } + + .search-container { + max-width: 280px; + } + + .hero { + padding: 3.5rem 2rem; + } + + .carousel { + padding: 3.5rem 0rem; + } + + .features, + .cta { + padding: 3.5rem 2rem; + } + + .features-grid { + grid-template-columns: repeat(2, 1fr); + gap: 2rem; + } + + .footer-inner { + grid-template-columns: 1.5fr 1fr 1fr; + gap: 2.5rem; + } + + .footer-brand { + padding-right: 1rem; + } + + .brand-header { + margin-bottom: 1.25rem; + } + + .mission-statement p { + font-size: 1.05rem; + padding: 1.5rem; + } +} + +/* Extra Large Devices (Large Desktops, 1200px and up) */ +@media (min-width: 1500px) { + + .navbar-content, + .hero-content, + .cta-content { + max-width: 1400px; + } + + .hero h2 { + font-size: 4rem; + } + + .hero p { + font-size: 1.25rem; + } + + .features-title, + .carousel-title { + font-size: 3rem; + } + + .feature-card { + padding: 2.5rem; + } + + .cta h3 { + font-size: 3rem; + } +} + +/* Ultra-wide screens (1600px and up) */ +@media (min-width: 1600px) { + + .navbar-content, + .hero-content, + .features-container, + .cta-content, + .footer-inner { + max-width: 1600px; + } + + .features-grid { + grid-template-columns: repeat(4, 1fr); + gap: 3rem; + } +} + +/* Touch-Friendly Enhancements */ +@media (hover: none) and (pointer: coarse) { + .btn { + min-height: 44px; + padding: 0.75rem 1rem; + } + + .theme-toggle { + min-height: 44px; + padding: 0.75rem 1rem; + } + + .search-button { + width: 44px; + height: 44px; + } + + .feature-card { + padding: 2rem 1.5rem; + } + + .cta-button { + min-height: 48px; + padding: 1rem 2rem; + } + + .footer-links a { + min-height: 44px; + padding: 0.75rem 1rem; + display: flex; + align-items: center; + } + + .scroll-btn, + .scroll-to-top { + width: 56px; + height: 56px; + } + + #chatbotBtn { + width: 64px; + height: 64px; + font-size: 24px; + } +} + +/* High DPI/Retina Display Support */ +@media (-webkit-min-device-pixel-ratio: 2), +(min-resolution: 192dpi) { + .footer-logo { + image-rendering: -webkit-optimize-contrast; + image-rendering: crisp-edges; + } +} + +/* Reduced Motion Support */ +@media (prefers-reduced-motion: reduce) { + * { + animation-duration: 0.01ms !important; + animation-iteration-count: 1 !important; + transition-duration: 0.01ms !important; + } + + .slide-track { + animation: none; + } + + .site-footer::before, + .site-footer::after { + animation: none; + } +} + +/* Dark Mode Media Query Support */ +@media (prefers-color-scheme: dark) { + :root:not([data-theme="light"]) { + --bg-primary: #0f172a; + --bg-secondary: #1e293b; + --bg-tertiary: #334155; + --text-primary: #f8fafc; + --text-secondary: #cbd5e1; + --text-muted: #94a3b8; + --border-color: #334155; + --shadow-light: rgba(0, 0, 0, 0.3); + --shadow-medium: rgba(0, 0, 0, 0.4); + --shadow-heavy: rgba(0, 0, 0, 0.6); + --light-green: #1a2e1a; + --green-hover: #22c55e; + } +} + + +/* Floating Chatbot Button */ +#chatbotBtn { + position: fixed; + bottom: 100px; + /* 20px above scroll-to-top button */ + right: 30px; + width: 60px; + height: 60px; + background-color: #4caf50; + /* greenish theme */ + color: #fff; + font-size: 28px; + text-align: center; + line-height: 60px; + border-radius: 50%; + box-shadow: 0 6px 18px rgba(0, 0, 0, 0.3); + cursor: pointer; + transition: transform 0.2s ease, box-shadow 0.2s ease, background 0.2s ease; + z-index: 1100; + /* above scroll-to-top button */ +} + +#chatbotBtn:hover { + transform: translateY(-4px) scale(1.1); + box-shadow: 0 8px 22px rgba(0, 0, 0, 0.35); + background-color: #43a047; + /* slightly darker green on hover */ +} + +/* Mobile responsiveness: hide on very small screens */ +@media (max-width: 400px) { + #chatbotBtn { + display: none; + } +} + +/* Scroll Button */ +.scroll-btn { + position: fixed; + bottom: 2rem; + right: 2rem; width: 50px; height: 50px; background: var(--primary-green); @@ -2413,11 +2585,13 @@ transform: translateY(-3px); box-shadow: 0 6px 20px var(--shadow-heavy); } + /* --- New: Animation Definitions --- */ @keyframes slideDown { from { transform: translateY(-100%); } + to { transform: translateY(0); } @@ -2428,17 +2602,23 @@ opacity: 0; transform: translateY(10px); } + to { opacity: 1; transform: translateY(0); } } + @keyframes pulseGlow { - 0%, 100% { + + 0%, + 100% { box-shadow: 0 4px 15px rgba(56, 142, 60, 0.3); } + 50% { box-shadow: 0 6px 25px rgba(56, 142, 60, 0.4); } } + /* Fixed missing brace */ \ No newline at end of file