@import "tailwindcss"; :root { --background: #fafafa; --foreground: #111827; } @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; } ::-webkit-scrollbar-track { background: transparent; } ::-webkit-scrollbar-thumb { background: #d1d5db; border-radius: 3px; } /* ==================== 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); } .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; } /* ==================== 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); } /* ==================== 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; }