.card { --_bg: var(--card-bg, var(--bg-alt)); --_border: var(--card-border, var(--border)); --_accent: var(--card-accent, var(--accent)); background-color: var(--_bg); border: 1px solid var(--_border); border-radius: var(--radius-lg); padding: var(--space-lg); transition: all 0.2s ease; container-type: inline-size; } .card:hover { transform: translateY(-2px); border-color: var(--_accent); } /* Strukturelle Elemente mit Selektoren */ .card > header { display: flex; align-items: flex-start; justify-content: space-between; gap: var(--space-md); margin-bottom: var(--space-md); } .card > main { flex: 1; margin-bottom: var(--space-md); } .card > footer { display: flex; align-items: center; justify-content: space-between; padding-top: var(--space-sm); border-top: 1px solid var(--_border); } /* Typografie mit Selektoren */ .card h1, .card h2, .card h3 { margin: 0; color: var(--_accent); } .card h3 { font-size: 1.25rem; font-weight: 600; } .card p { margin: 0 0 var(--space-sm) 0; color: var(--text); } .card small { color: oklch(70% 0.01 var(--h-bg)); } /* Button-Gruppen mit Selektoren */ .card footer > div { display: flex; gap: var(--space-sm); } .card button { padding: var(--space-sm) var(--space-md); border-radius: var(--radius-md); border: 1px solid var(--_accent); background: transparent; color: var(--_accent); cursor: pointer; transition: all 0.2s ease; } .card button:first-child { background-color: var(--_accent); color: var(--bg); } .card button:hover { background-color: var(--_accent); color: var(--bg); } /* ====================== VARIANTEN MIT KLASSEN ====================== */ /* Status-Varianten */ .card--success { --card-bg: var(--success-subtle); --card-border: var(--success-border); --card-accent: var(--success); } .card--error { --card-bg: var(--error-subtle); --card-border: var(--error-border); --card-accent: var(--error); } /* Größen-Varianten */ .card--compact { padding: var(--space-md); } .card--compact > * { margin-bottom: var(--space-sm); } .card--spacious { padding: calc(var(--space-lg) * 1.5); } /* Layout-Varianten */ .card--horizontal { display: flex; align-items: center; } .card--horizontal > header, .card--horizontal > main { margin-bottom: 0; margin-right: var(--space-lg); } /* Media-Variante */ .card--media img { width: 100%; height: 200px; object-fit: cover; border-radius: var(--radius-md); margin-bottom: var(--space-md); } /* ====================== RESPONSIVE MIT CONTAINER QUERIES ====================== */ /* Automatische Anpassung basierend auf Card-Größe */ @container (max-width: 300px) { .card > header { flex-direction: column; align-items: flex-start; } .card > footer { flex-direction: column; gap: var(--space-sm); align-items: flex-start; } } /* Demo-Styles */ .demo-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); gap: var(--space-lg); margin-top: var(--space-lg); } .demo-grid--wide { grid-template-columns: repeat(auto-fit, minmax(400px, 1fr)); } h1 { /*text-align: center;*/ background: linear-gradient(45deg, var(--accent), var(--success)); -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text; } .section { margin: 3rem 0; } .section h2 { color: var(--accent); margin-bottom: var(--space-lg); } /* Badge mit semantischem Selector */ .card [role="status"] { padding: 0.25rem 0.5rem; border-radius: var(--radius-md); font-size: 0.75rem; font-weight: 600; text-transform: uppercase; background-color: var(--_accent); color: var(--bg); }