/* Loading states */ .htmx-request .htmx-indicator { opacity: 1; } .htmx-request.htmx-indicator { opacity: 1; } .htmx-indicator { opacity: 0; transition: opacity 200ms ease-in-out; } /* Results container transitions */ #park-results { transition: opacity 200ms ease-in-out; } .htmx-request #park-results { opacity: 0.7; } .htmx-settling #park-results { opacity: 1; } /* Grid/List transitions */ .park-card { transition: all 200ms cubic-bezier(0.4, 0, 0.2, 1); position: relative; background-color: white; border-radius: 0.5rem; border: 1px solid #e5e7eb; } /* Grid view styles */ .park-card[data-view-mode="grid"] { display: flex; flex-direction: column; } .park-card[data-view-mode="grid"]:hover { transform: translateY(-2px); box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05); } /* List view styles */ .park-card[data-view-mode="list"] { display: flex; gap: 1rem; padding: 1rem; } .park-card[data-view-mode="list"]:hover { background-color: #f9fafb; } /* Image containers */ .park-card .image-container { position: relative; overflow: hidden; } .park-card[data-view-mode="grid"] .image-container { aspect-ratio: 16 / 9; width: 100%; } .park-card[data-view-mode="list"] .image-container { width: 6rem; height: 6rem; flex-shrink: 0; } /* Content */ .park-card .content { display: flex; flex-direction: column; flex: 1; min-width: 0; /* Enables text truncation in flex child */ } /* Status badges */ .park-card .status-badge { transition: all 150ms ease-in-out; } .park-card:hover .status-badge { transform: scale(1.05); } /* Images */ .park-card img { transition: transform 200ms ease-in-out; object-fit: cover; width: 100%; height: 100%; } .park-card:hover img { transform: scale(1.05); } /* Placeholders for missing images */ .park-card .placeholder { background: linear-gradient(110deg, #ececec 8%, #f5f5f5 18%, #ececec 33%); background-size: 200% 100%; animation: shimmer 1.5s linear infinite; } @keyframes shimmer { to { background-position: 200% center; } } /* Dark mode */ @media (prefers-color-scheme: dark) { .park-card { background-color: #1f2937; border-color: #374151; } .park-card[data-view-mode="list"]:hover { background-color: #374151; } .park-card .text-gray-900 { color: #f3f4f6; } .park-card .text-gray-500 { color: #9ca3af; } .park-card .placeholder { background: linear-gradient(110deg, #2d3748 8%, #374151 18%, #2d3748 33%); } .park-card[data-view-mode="list"]:hover { background-color: #374151; } }