mirror of
https://github.com/pacnpal/thrillwiki_django_no_react.git
synced 2025-12-21 13:11:08 -05:00
134 lines
2.7 KiB
CSS
134 lines
2.7 KiB
CSS
/* 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;
|
|
}
|
|
} |