/* Common Styles for AI Services Hub */ /* Import fonts */ @import url('https://fonts.googleapis.com/css2?family=Plus+Jakarta+Sans:wght@400;500;600;700&display=swap'); /* Reset and base styles */ * { box-sizing: border-box; } body { font-family: 'Plus Jakarta Sans', sans-serif; background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); min-height: 100vh; margin: 0; padding: 0; } /* Layout utilities */ .container { max-width: 7xl; margin: 0 auto; padding: 0 1rem; } @media (min-width: 640px) { .container { padding: 0 1.5rem; } } @media (min-width: 1024px) { .container { padding: 0 2rem; } } /* Component styles */ .glass-effect { background: rgba(255, 255, 255, 0.1); backdrop-filter: blur(10px); border: 1px solid rgba(255, 255, 255, 0.2); } .card-hover { transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); } .card-hover:hover { transform: translateY(-4px); box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1); } .service-card { background: white; transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); border: 1px solid #e5e7eb; } .service-card:hover { transform: translateY(-8px); box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.15); } /* Custom scrollbar */ .custom-scrollbar::-webkit-scrollbar { width: 4px; } .custom-scrollbar::-webkit-scrollbar-track { background: rgba(255, 255, 255, 0.1); border-radius: 2px; } .custom-scrollbar::-webkit-scrollbar-thumb { background: rgba(255, 255, 255, 0.3); border-radius: 2px; } .custom-scrollbar::-webkit-scrollbar-thumb:hover { background: rgba(255, 255, 255, 0.5); } /* Loading skeleton */ .loading-skeleton { background: linear-gradient(90deg, #f0f0f0 25%, #e0e0e0 50%, #f0f0f0 75%); background-size: 200% 100%; animation: loading 1.5s infinite; } @keyframes loading { 0% { background-position: 200% 0; } 100% { background-position: -200% 0; } } /* Animations */ @keyframes fadeIn { from { opacity: 0; transform: translateY(20px); } to { opacity: 1; transform: translateY(0); } } @keyframes slideUp { from { opacity: 0; transform: translateY(20px); } to { opacity: 1; transform: translateY(0); } } @keyframes fadeLine { from { opacity: 0; } to { opacity: 1; } } @keyframes float { 0%, 100% { transform: translateY(0px); } 50% { transform: translateY(-10px); } } @keyframes pulse-glow { 0%, 100% { box-shadow: 0 0 20px rgba(102, 126, 234, 0.4); } 50% { box-shadow: 0 0 30px rgba(102, 126, 234, 0.8); } } @keyframes pulse { 0% { transform: scale(0.95); box-shadow: 0 0 0 0 rgba(16, 185, 129, 0.7); } 70% { transform: scale(1); box-shadow: 0 0 0 10px rgba(16, 185, 129, 0); } 100% { transform: scale(0.95); box-shadow: 0 0 0 0 rgba(16, 185, 129, 0); } } .animate-pulse-soft { animation: pulse-soft 2s cubic-bezier(0.4, 0, 0.6, 1) infinite; } @keyframes pulse-soft { 0%, 100% { opacity: 1; } 50% { opacity: 0.7; } } .fade-in { animation: fadeIn 0.4s ease-out; } .animate-slide-up { animation: slideUp 0.4s ease-out; } .animate-fade { animation: fadeLine 0.6s ease-in; } .float-animation { animation: float 3s ease-in-out infinite; } .pulse-glow { animation: pulse-glow 2s ease-in-out infinite; } /* Status indicator */ .status-indicator { position: relative; } .status-indicator::before { content: ''; position: absolute; top: -2px; right: -2px; width: 12px; height: 12px; background: #10b981; border-radius: 50%; border: 2px solid white; animation: pulse 2s infinite; } /* CONSOLIDATED MOBILE STYLES - REPLACE ALL EXISTING MOBILE CSS */ /* Mobile responsive utilities */ @media (max-width: 768px) { .mobile-stack { flex-direction: column; } .mobile-full { width: 100%; } .mobile-stats-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 0.5rem; } .service-grid { grid-template-columns: 1fr; gap: 1.5rem; } /* Header Section */ .text-center.mb-8 h1 { font-size: 2rem !important; line-height: 1.2; margin-bottom: 1rem; } /* Enhanced Search Command Center */ .bg-white.rounded-2xl.p-6.mb-8 { padding: 1rem !important; margin-bottom: 1.5rem !important; } /* Trade AI Command Header */ .flex.items-center.gap-3.mb-4 h2 { font-size: 1.125rem !important; } /* Search Input */ #query { font-size: 16px !important; padding: 0.875rem !important; } /* Search Button */ .bg-blue-600.hover\:bg-blue-700 { padding: 0.875rem 1.5rem !important; min-width: auto !important; } /* Search button inline with text input - only lens icon */ .flex.flex-col.sm\:flex-row.gap-3.mb-4 { flex-direction: row !important; gap: 0.75rem !important; align-items: stretch !important; } .flex.flex-col.sm\:flex-row.gap-3.mb-4 .flex-1 { flex: 1 !important; } .flex.flex-col.sm\:flex-row.gap-3.mb-4 button { width: auto !important; min-width: 50px !important; padding: 0.875rem 1rem !important; flex-shrink: 0 !important; } /* Hide search button text on mobile, show only icon */ .flex.flex-col.sm\:flex-row.gap-3.mb-4 button span { display: none !important; } .flex.flex-col.sm\:flex-row.gap-3.mb-4 button i { margin-right: 0 !important; font-size: 1rem !important; } /* Quick searches in single row with horizontal scroll */ .flex.flex-wrap.gap-2 { flex-direction: row !important; flex-wrap: nowrap !important; overflow-x: auto !important; overflow-y: hidden !important; align-items: center !important; padding: 0.5rem 0 !important; margin-bottom: 0.75rem !important; -webkit-overflow-scrolling: touch !important; scrollbar-width: none !important; -ms-overflow-style: none !important; gap: 0.5rem !important; position: relative !important; } /* Hide scrollbar on mobile */ .flex.flex-wrap.gap-2::-webkit-scrollbar { display: none !important; } /* Quick searches label */ .flex.flex-wrap.gap-2 span.text-sm.text-gray-500 { flex-shrink: 0 !important; white-space: nowrap !important; margin-right: 0.5rem !important; font-size: 0.875rem !important; color: #6b7280 !important; align-self: center !important; } /* Quick search buttons mobile */ .flex.flex-wrap.gap-2 button { flex-shrink: 0 !important; white-space: nowrap !important; font-size: 0.75rem !important; padding: 0.5rem 0.75rem !important; min-width: fit-content !important; width: auto !important; } /* Advanced Filters Section */ .border-t.border-gray-200.pt-4 { padding-top: 1rem !important; } /* Advanced Filters Grid */ .grid.grid-cols-1.md\:grid-cols-3.gap-4 { grid-template-columns: 1fr !important; gap: 0.75rem !important; } /* Form Labels */ .block.text-sm.font-medium.text-gray-700.mb-2 { margin-bottom: 0.5rem !important; font-size: 0.875rem !important; } /* Form Inputs and Selects */ .w-full.px-3.py-2 { padding: 0.75rem !important; font-size: 16px !important; } /* Advanced Search Buttons - Mobile Override */ .flex.flex-wrap.gap-3 { display: grid !important; grid-template-columns: 1fr 1fr !important; gap: 0.75rem !important; } /* Hide Reset button on mobile */ .flex.flex-wrap.gap-3 button:nth-child(3) { display: none !important; } /* Style remaining buttons */ .flex.flex-wrap.gap-3 button:nth-child(1), .flex.flex-wrap.gap-3 button:nth-child(2) { width: 100% !important; justify-content: center !important; padding: 0.75rem 0.5rem !important; font-size: 0.875rem !important; } /* Main Content Grid - Stack on mobile */ .grid.grid-cols-1.lg\:grid-cols-3.gap-6 { grid-template-columns: 1fr !important; gap: 1rem !important; } /* Results Section */ .lg\:col-span-2 { grid-column: span 1 !important; } /* Search Results Container */ #resultsSection .bg-white.rounded-2xl { padding: 1rem !important; margin-bottom: 1rem !important; } /* Search Results Header */ #resultsSection .flex.items-center.justify-between { flex-direction: column !important; align-items: flex-start !important; gap: 1rem !important; margin-bottom: 1rem !important; } #resultsSection .flex.items-center.justify-between h3 { font-size: 1.25rem !important; margin-bottom: 0 !important; } /* Results Count and Controls */ #resultsSection .flex.items-center.gap-2 { width: 100% !important; justify-content: space-between !important; flex-wrap: wrap !important; gap: 0.5rem !important; } #resultsCount { font-size: 0.875rem !important; color: #059669 !important; background: #ecfdf5 !important; padding: 0.25rem 0.5rem !important; border-radius: 0.375rem !important; border: 1px solid #a7f3d0 !important; font-weight: 500 !important; order: 1 !important; width: 100% !important; } /* Sort Dropdown */ #sortBy { font-size: 0.875rem !important; padding: 0.5rem !important; order: 2 !important; flex: 1 !important; min-width: 120px !important; background: white !important; border: 1px solid #d1d5db !important; border-radius: 0.5rem !important; font-weight: 500 !important; } #sortBy:focus { border-color: #3b82f6 !important; box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.1) !important; } /* Export Button */ .bg-gray-100.hover\:bg-gray-200 { font-size: 0.875rem !important; padding: 0.5rem 0.75rem !important; order: 3 !important; flex-shrink: 0 !important; background: #f3f4f6 !important; border: 1px solid #d1d5db !important; border-radius: 0.5rem !important; font-weight: 500 !important; transition: all 0.15s ease !important; } /* ===== SEARCH RESULTS MOBILE STYLING ===== */ /* Main search results container */ #results { grid-template-columns: 1fr !important; gap: 1rem !important; } /* Individual result cards - SIMPLE DESKTOP-LIKE LAYOUT */ #results > div { border: 1px solid #e5e7eb !important; border-radius: 0.5rem !important; padding: 1rem !important; margin-bottom: 0.75rem !important; background: #ffffff !important; box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1), 0 1px 2px rgba(0, 0, 0, 0.06) !important; transition: all 0.2s ease !important; } /* Company header with flag and name - KEEP DESKTOP LAYOUT */ #results .flex.items-center.gap-3 { gap: 0.75rem !important; margin-bottom: 0.75rem !important; flex-direction: row !important; align-items: center !important; } /* Flag element */ #results .w-8.h-6 { flex-shrink: 0 !important; width: 2rem !important; height: 1.5rem !important; } /* Company name */ #results .text-base.font-bold, #results .text-lg.font-bold { flex: 1 !important; font-size: 1rem !important; line-height: 1.3 !important; word-break: break-word !important; color: #1f2937 !important; font-weight: 600 !important; } /* Contact information section - KEEP DESKTOP STRUCTURE */ #results .space-y-2 { margin-top: 0.75rem !important; display: flex !important; flex-direction: column !important; gap: 0.5rem !important; } /* Individual contact items - CLEAN ROWS LIKE DESKTOP */ #results .flex.items-center.gap-2, #results .flex.items-start.gap-2 { margin-bottom: 0 !important; align-items: center !important; padding: 0.25rem 0 !important; background: transparent !important; border: none !important; border-radius: 0 !important; box-shadow: none !important; gap: 0.75rem !important; } /* Icons - ensure they display properly */ #results .fas, #results .fa { width: 1rem !important; text-align: center !important; flex-shrink: 0 !important; margin-right: 0.5rem !important; font-size: 0.875rem !important; display: inline-flex !important; align-items: center !important; justify-content: center !important; } /* Icon colors - same as desktop */ #results .fa-phone { color: #059669 !important; } #results .fa-envelope { color: #2563eb !important; } #results .fa-globe { color: #7c3aed !important; } #results .fa-map-marker-alt { color: #dc2626 !important; } /* Contact text */ #results .flex.items-center.gap-2 span, #results .flex.items-center.gap-2 a, #results .flex.items-start.gap-2 span { word-break: break-word !important; line-height: 1.3 !important; font-size: 0.875rem !important; flex: 1 !important; margin: 0 !important; } /* Text colors - same as desktop */ #results .text-green-600 { color: #059669 !important; } #results .text-blue-600 { color: #2563eb !important; } #results .text-purple-600 { color: #7c3aed !important; } #results .text-gray-600 { color: #4b5563 !important; } #results .text-blue-700 { color: #1d4ed8 !important; } /* Product tags - same as desktop structure */ #results .flex.flex-wrap.gap-1 { margin-top: 0.75rem !important; gap: 0.375rem !important; padding-top: 0.75rem !important; border-top: 1px solid #f3f4f6 !important; } /* Product tag styling - same as desktop */ #results .bg-blue-50, #results .bg-blue-100 { font-size: 0.75rem !important; padding: 0.25rem 0.5rem !important; background: linear-gradient(135deg, #dbeafe, #bfdbfe) !important; color: #1e40af !important; border: 1px solid #93c5fd !important; border-radius: 9999px !important; display: inline-block !important; margin: 0.25rem 0.25rem 0.25rem 0 !important; font-weight: 500 !important; } /* Hover effects - same as desktop */ #results > div:hover { transform: translateY(-2px) !important; box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15) !important; } /* Remove hover effects on contact items */ #results .flex.items-center.gap-2:hover, #results .flex.items-start.gap-2:hover { background: transparent !important; border: none !important; transform: none !important; } /* Links - ensure they're touch-friendly */ #results a { min-height: 32px !important; display: inline-flex !important; align-items: center !important; text-decoration: none !important; } #results a:hover { opacity: 0.8 !important; } /* CRUD Wrench Button */ .fixed.bottom-6.right-6 { bottom: 1rem !important; right: 1rem !important; } .w-14.h-14 { width: 3rem !important; height: 3rem !important; } /* CRUD Modal Mobile Adjustments */ .max-w-4xl { max-width: calc(100vw - 2rem) !important; margin: 1rem !important; } .max-h-\[90vh\] { max-height: calc(100vh - 2rem) !important; } /* CRUD Modal Content */ .p-6 { padding: 1rem !important; } /* CRUD Form Grids */ .grid.grid-cols-1.md\:grid-cols-2.gap-4 { grid-template-columns: 1fr !important; gap: 0.75rem !important; } /* Toast Notifications */ .fixed.top-4.right-4 { top: 1rem !important; right: 1rem !important; left: 1rem !important; } .max-w-sm { max-width: none !important; } } /* Very small screens */ @media (max-width: 480px) { #results > div { padding: 0.875rem !important; } #results .text-base.font-bold, #results .text-lg.font-bold { font-size: 0.9375rem !important; } #results .flex.items-center.gap-2 span, #results .flex.items-center.gap-2 a { font-size: 0.8125rem !important; } } /* Tablet and larger screens */ @media (min-width: 769px) and (max-width: 1024px) { .service-grid { grid-template-columns: repeat(2, 1fr); } } @media (min-width: 1025px) { .service-grid { grid-template-columns: repeat(2, 1fr); } } /* IMMEDIATE MOBILE FIXES - Add to end of styles.css */ @media (max-width: 768px) { /* Fix search button staying inline with input */ .flex.flex-col.sm\:flex-row.gap-3.mb-4 { flex-direction: row !important; align-items: stretch !important; gap: 0.5rem !important; } .flex.flex-col.sm\:flex-row.gap-3.mb-4 .flex-1 { flex: 1 !important; } .flex.flex-col.sm\:flex-row.gap-3.mb-4 button { width: auto !important; min-width: 50px !important; flex-shrink: 0 !important; padding: 0.875rem 1rem !important; } /* Hide button text on mobile, show only icon */ .flex.flex-col.sm\:flex-row.gap-3.mb-4 button span { display: none !important; } /* Fix advanced search buttons */ .flex.flex-wrap.gap-3 { display: grid !important; grid-template-columns: 1fr 1fr !important; gap: 0.5rem !important; } /* Hide reset button on mobile for cleaner look */ .flex.flex-wrap.gap-3 button:nth-child(3) { grid-column: span 2 !important; font-size: 0.8rem !important; } /* Fix modal sizing */ .max-w-4xl, .max-w-2xl { max-width: calc(100vw - 1rem) !important; margin: 0.5rem !important; } /* Improve touch targets */ button, .cursor-pointer { min-height: 44px !important; } } /* Very small screens (phones in portrait) */ @media (max-width: 480px) { .px-4 { padding-left: 0.75rem !important; padding-right: 0.75rem !important; } .text-3xl, .text-4xl { font-size: 1.5rem !important; line-height: 1.3 !important; } /* Stack stats in 2x2 grid instead of 4x1 */ .grid.grid-cols-2.lg\:grid-cols-4 { grid-template-columns: repeat(2, 1fr) !important; gap: 0.5rem !important; } } /* Searchable Country Dropdown Styles - Add to end of styles.css */ /* Input with search icon */ .relative input[id$="_input"] { padding-right: 2.5rem !important; } /* Search icon positioning */ .relative .absolute.right-3 { pointer-events: none; z-index: 5; } /* Dropdown menu */ .relative .absolute.z-20 { border: 1px solid #d1d5db; border-radius: 0.5rem; box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05); background: white; max-height: 12rem; overflow-y: auto; margin-top: 0.25rem; } /* Dropdown options */ .relative .absolute.z-20 > div { padding: 0.75rem; cursor: pointer; font-size: 0.875rem; border-bottom: 1px solid #f3f4f6; transition: all 0.15s ease; } .relative .absolute.z-20 > div:last-child { border-bottom: none; } .relative .absolute.z-20 > div:hover { background-color: #eff6ff; color: #1d4ed8; } /* Highlighted option (keyboard navigation) */ .relative .absolute.z-20 > div.bg-blue-100 { background-color: #dbeafe !important; color: #1e40af !important; } /* Custom scrollbar for dropdown */ .relative .absolute.z-20::-webkit-scrollbar { width: 6px; } .relative .absolute.z-20::-webkit-scrollbar-track { background: #f1f5f9; border-radius: 3px; } .relative .absolute.z-20::-webkit-scrollbar-thumb { background: #cbd5e1; border-radius: 3px; } .relative .absolute.z-20::-webkit-scrollbar-thumb:hover { background: #94a3b8; } /* Mobile improvements */ @media (max-width: 768px) { .relative input[id$="_input"] { font-size: 16px !important; /* Prevents zoom on iOS */ padding: 0.875rem 2.5rem 0.875rem 0.75rem !important; } .relative .absolute.z-20 > div { padding: 1rem 0.75rem; min-height: 44px; /* Better touch targets */ display: flex; align-items: center; } .relative .absolute.z-20 { max-height: 10rem; /* Smaller on mobile */ } } /* Focus styles for accessibility */ .relative input[id$="_input"]:focus { outline: none !important; border-color: #3b82f6 !important; box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.1) !important; } /* Animation for icon change */ .relative .absolute.right-3 i { transition: all 0.2s ease; }