diff options
Diffstat (limited to 'assets/css/components/card.css')
| -rw-r--r-- | assets/css/components/card.css | 155 |
1 files changed, 155 insertions, 0 deletions
diff --git a/assets/css/components/card.css b/assets/css/components/card.css new file mode 100644 index 0000000..f86c7bf --- /dev/null +++ b/assets/css/components/card.css @@ -0,0 +1,155 @@ +/* card.css */ +.post-card { + background: var(--surface); + border: 1px solid var(--border); + border-radius: 8px; + overflow: hidden; + transition: var(--transition); + display: flex; + gap: var(--gap-md); +} + +.post-card:hover { + border-color: var(--accent); + box-shadow: 0 0 20px rgba(168, 85, 247, 0.2); +} + +.post-card-image { + width: 120px; + height: 100px; + flex-shrink: 0; + object-fit: cover; + background: linear-gradient(135deg, var(--border), var(--bg2)); + border-right: 1px solid var(--border); +} + +@media (min-width: 768px) { + .post-card-image { + width: 160px; + height: 120px; + } +} + +.post-card-body { + padding: var(--gap-md); + display: flex; + flex-direction: column; + justify-content: center; + flex-grow: 1; +} + +.post-type-badge { + display: inline-block; + font-family: var(--font-mono); + font-size: var(--fs-badge); + font-weight: 600; + text-transform: uppercase; + letter-spacing: 0.1em; + padding: 0.35rem 0.7rem; + border-radius: 20px; + margin-bottom: 0.5rem; + width: fit-content; +} + +/* Type-specific badge colors */ +.post-type-badge.tech { + background: color-mix(in srgb, var(--color-tech) 15%, transparent); + border: 1px solid color-mix(in srgb, var(--color-tech) 30%, transparent); + color: var(--color-tech); +} + +.post-type-badge.life { + background: color-mix(in srgb, var(--color-life) 15%, transparent); + border: 1px solid color-mix(in srgb, var(--color-life) 30%, transparent); + color: var(--color-life); +} + +.post-type-badge.quote { + background: color-mix(in srgb, var(--color-quote) 15%, transparent); + border: 1px solid color-mix(in srgb, var(--color-quote) 30%, transparent); + color: var(--color-quote); +} + +.post-type-badge.link { + background: color-mix(in srgb, var(--color-link) 15%, transparent); + border: 1px solid color-mix(in srgb, var(--color-link) 30%, transparent); + color: var(--color-link); +} + +.post-type-badge.photo { + background: color-mix(in srgb, var(--color-photo) 15%, transparent); + border: 1px solid color-mix(in srgb, var(--color-photo) 30%, transparent); + color: var(--color-photo); +} + +.post-card-title { + font-family: var(--font-head); + font-size: 1.1rem; + font-weight: 700; + line-height: 1.3; + margin-bottom: 0.5rem; + color: var(--text); +} + +.post-card-title a { + color: var(--text); + text-decoration: none; +} + +.post-card-title a:hover { + color: var(--accent); +} + +.post-card-excerpt { + color: var(--text-dim); + font-size: 0.9rem; + line-height: 1.6; + display: -webkit-box; + -webkit-line-clamp: 2; + -webkit-box-orient: vertical; + overflow: hidden; + margin-bottom: 0.5rem; +} + +.post-card-meta { + display: flex; + gap: 1rem; + font-family: var(--font-mono); + font-size: 0.75rem; + color: var(--muted); + text-transform: uppercase; + letter-spacing: 0.08em; +} + +/* Featured card in grid */ +.post-card.featured { + grid-row: span 2; +} + +.post-card.featured .post-card-image { + width: 100%; + height: 180px; + border-right: none; + border-bottom: 1px solid var(--border); +} + +.post-card.featured .post-card-body { + padding: var(--gap-lg); +} + +@media (max-width: 768px) { + .post-card { + flex-direction: column; + } + + .post-card-image { + width: 100%; + height: 150px; + border-right: none; + border-bottom: 1px solid var(--border); + } + + .post-card.featured .post-card-image { + height: 150px; + } +} |
