@import "tailwindcss"; @custom-variant dark (&:where(.dark, .dark *)); :root { --background: #fafafa; --foreground: #111827; --font-geist-sans: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", sans-serif; --font-geist-mono: ui-monospace, "Cascadia Code", "Source Code Pro", Menlo, Monaco, "Courier New", "PingFang SC", monospace; } .dark { --background: #111827; --foreground: #f9fafb; } @theme inline { --color-background: var(--background); --color-foreground: var(--foreground); --font-sans: var(--font-geist-sans); --font-mono: var(--font-geist-mono); } body { background: var(--background); color: var(--foreground); font-family: var(--font-geist-sans, system-ui), "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", sans-serif; } html { scroll-behavior: smooth; } ::-webkit-scrollbar { width: 6px; height: 6px; } ::-webkit-scrollbar-track { background: transparent; } ::-webkit-scrollbar-thumb { background: #d1d5db; border-radius: 3px; } .dark ::-webkit-scrollbar-thumb { background: #4b5563; } .dark ::-webkit-scrollbar-thumb:hover { background: #6b7280; } ::-webkit-scrollbar-thumb:hover { background: #9ca3af; } /* ==================== Container (responsive) ==================== */ .container-nomad { width: 100%; max-width: 1600px; margin-left: auto; margin-right: auto; padding-left: 1rem; padding-right: 1rem; } @media (min-width: 640px) { .container-nomad { padding-left: 1.5rem; padding-right: 1.5rem; } } @media (min-width: 1024px) { .container-nomad { padding-left: 2.5rem; padding-right: 2.5rem; } } /* ==================== Items Grid (mobile-first) ==================== */ .items-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); grid-auto-rows: 180px; gap: 8px; padding: 8px; } @media (min-width: 640px) { .items-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); grid-auto-rows: 260px; gap: 20px; padding: 16px 20px; } } @media (min-width: 1024px) { .items-grid { grid-template-columns: repeat(4, minmax(0, 1fr)); grid-auto-rows: 280px; gap: 30px; padding: 20px 40px; } } @media (min-width: 1440px) { .items-grid { grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 35px; } } /* Pin right-items to the LAST explicit column */ .items-grid .right-item:nth-child(1) { grid-column: -2 / -1; grid-row: 1; } .items-grid .right-item:nth-child(2) { grid-column: -2 / -1; grid-row: 2; } .items-grid .right-item:nth-child(3) { grid-column: -2 / -1; grid-row: 3; } /* ==================== City Card ==================== */ .city-card { height: 100%; border-radius: 15px; position: relative; overflow: hidden; cursor: pointer; color: white; box-sizing: border-box; min-width: 0; } .city-card:hover { animation: pulse 0.6s ease; } /* ==================== Right Item ==================== */ .right-item { height: 100%; border-radius: 15px; position: relative; overflow: hidden; width: 100%; min-width: 0; box-sizing: border-box; background: white; box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08), 0 0 0 1px rgba(0, 0, 0, 0.04); } .dark .right-item { background: #1f2937; box-shadow: 0 2px 8px rgba(0, 0, 0, 0.2), 0 0 0 1px rgba(255, 255, 255, 0.05); } .right-item:hover { animation: pulse 0.6s ease; } .right-item-header { width: 100%; height: 38px; font-size: 14px; font-weight: 600; letter-spacing: 0.5px; display: flex; align-items: center; justify-content: center; background: linear-gradient(90deg, #ff4d4f, #ff7a45); color: #fff; } @media (min-width: 640px) { .right-item-header { height: 42px; font-size: 15px; } } /* ==================== Hover / Pulse Animation ==================== */ @keyframes pulse { 0% { transform: scale(1); } 50% { transform: scale(1.03); } 100% { transform: scale(1); } } /* ==================== Hero Gradient Text ==================== */ @keyframes gradient-shift { 0%, 100% { background-position: 0% 50%; } 50% { background-position: 100% 50%; } } .hero-gradient-text { background: linear-gradient( 135deg, #f97316, #ec4899, #8b5cf6, #3b82f6, #f97316 ); background-size: 300% 300%; animation: gradient-shift 6s ease infinite; -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text; } /* ==================== Filter Buttons ==================== */ .filter-btn { transition: all 0.15s ease; } .filter-btn:hover { background: #f3f4f6; } .filter-btn.active { background: #111827; color: white; } .filter-btn.active:hover { background: #1f2937; } .dark .filter-btn.active { background: #374151; } .dark .filter-btn.active:hover { background: #4b5563; } /* ==================== Community Cards ==================== */ .community-card { background: white; border-radius: 16px; overflow: hidden; box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06), 0 0 0 1px rgba(0, 0, 0, 0.03); transition: transform 0.2s ease, box-shadow 0.2s ease; } .community-card:hover { transform: translateY(-2px); box-shadow: 0 8px 24px rgba(0, 0, 0, 0.1), 0 0 0 1px rgba(0, 0, 0, 0.04); } .dark .community-card { background: #1f2937; box-shadow: 0 2px 8px rgba(0, 0, 0, 0.2), 0 0 0 1px rgba(255, 255, 255, 0.05); } .dark .community-card:hover { box-shadow: 0 8px 24px rgba(0, 0, 0, 0.3), 0 0 0 1px rgba(255, 255, 255, 0.08); } /* ==================== Utilities ==================== */ .hide-scrollbar::-webkit-scrollbar { display: none; } .hide-scrollbar { -ms-overflow-style: none; scrollbar-width: none; } .line-clamp-1 { display: -webkit-box; -webkit-line-clamp: 1; -webkit-box-orient: vertical; overflow: hidden; } .line-clamp-2 { display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; } /* ==================== Form Inputs (join page) ==================== */ .form-input { width: 100%; border: 0; background: transparent; font-size: 15px; line-height: 1.5; color: #1e293b; outline: none; padding: 0; } .form-input::placeholder { color: #b2b2b2; } @media (min-width: 640px) { .form-input { border: 1px solid #e2e8f0; border-radius: 0.75rem; padding: 0.65rem 0.875rem; font-size: 15px; background: #f8fafc; transition: border-color 0.2s, box-shadow 0.2s; } .form-input:focus { border-color: #0ea5e9; box-shadow: 0 0 0 3px rgba(14, 165, 233, 0.1); background: #fff; } textarea.form-input { padding: 0.75rem 0.875rem; } select.form-input { padding-right: 2.25rem; cursor: pointer; } } .dark .form-input { color: #f1f5f9; } .dark .form-input::placeholder { color: #94a3b8; } @media (min-width: 640px) { .dark .form-input { border-color: #475569; background: #1e293b; } .dark .form-input:focus { border-color: #0ea5e9; background: #334155; } } /* ==================== Animations ==================== */ @keyframes fadeIn { from { opacity: 0; transform: translateY(20px); } to { opacity: 1; transform: translateY(0); } } .animate-fade-in { animation: fadeIn 0.6s ease-out; }