geeks-ui-framework
Version:
A modern, lightweight CSS framework with 15+ components for developers. Build beautiful interfaces with minimal effort.
325 lines (272 loc) • 6.81 kB
CSS
/* ===================================
CARDS COMPONENT
=================================== */
/* Base Card */
.card {
position: relative;
display: flex;
flex-direction: column;
min-width: 0;
word-wrap: break-word;
background-color: var(--white);
background-clip: border-box;
border: 1px solid var(--border-color);
border-radius: 0.5rem;
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
transition: box-shadow 0.15s ease-in-out, transform 0.15s ease-in-out;
}
.card:hover {
box-shadow: 0 4px 8px rgba(0, 0, 0, 0.15);
transform: translateY(-2px);
}
/* Card Body */
.card-body {
flex: 1 1 auto;
padding: 1.5rem;
}
.card-body:first-child {
border-top-left-radius: calc(0.5rem - 1px);
border-top-right-radius: calc(0.5rem - 1px);
}
.card-body:last-child {
border-bottom-right-radius: calc(0.5rem - 1px);
border-bottom-left-radius: calc(0.5rem - 1px);
}
/* Card Title */
.card-title {
margin-bottom: 0.75rem;
font-size: 1.25rem;
font-weight: 600;
color: var(--text-color);
}
/* Card Subtitle */
.card-subtitle {
margin-top: -0.375rem;
margin-bottom: 0.75rem;
font-size: 0.875rem;
color: var(--muted-color);
}
/* Card Text */
.card-text {
margin-bottom: 1rem;
color: var(--text-color);
line-height: 1.6;
}
.card-text:last-child {
margin-bottom: 0;
}
/* Card Header */
.card-header {
padding: 1rem 1.5rem;
margin-bottom: 0;
background-color: var(--light-gray);
border-bottom: 1px solid var(--border-color);
border-top-left-radius: calc(0.5rem - 1px);
border-top-right-radius: calc(0.5rem - 1px);
font-weight: 600;
color: var(--text-color);
}
.card-header:first-child {
border-radius: calc(0.5rem - 1px) calc(0.5rem - 1px) 0 0;
}
/* Card Footer */
.card-footer {
padding: 1rem 1.5rem;
background-color: var(--light-gray);
border-top: 1px solid var(--border-color);
border-bottom-right-radius: calc(0.5rem - 1px);
border-bottom-left-radius: calc(0.5rem - 1px);
}
.card-footer:last-child {
border-radius: 0 0 calc(0.5rem - 1px) calc(0.5rem - 1px);
}
/* Card Images */
.card-img {
width: 100%;
border-radius: calc(0.5rem - 1px);
}
.card-img-top {
width: 100%;
border-top-left-radius: calc(0.5rem - 1px);
border-top-right-radius: calc(0.5rem - 1px);
}
.card-img-bottom {
width: 100%;
border-bottom-right-radius: calc(0.5rem - 1px);
border-bottom-left-radius: calc(0.5rem - 1px);
}
/* Card Overlay */
.card-img-overlay {
position: absolute;
top: 0;
right: 0;
bottom: 0;
left: 0;
padding: 1.5rem;
border-radius: calc(0.5rem - 1px);
background: linear-gradient(180deg, transparent 0%, rgba(0, 0, 0, 0.6) 100%);
color: var(--white);
}
.card-img-overlay .card-title,
.card-img-overlay .card-subtitle,
.card-img-overlay .card-text {
color: var(--white);
}
/* Card Link */
.card-link {
color: var(--primary-color);
text-decoration: none;
transition: color 0.15s ease-in-out;
}
.card-link:hover {
color: var(--primary-hover);
text-decoration: underline;
}
.card-link+.card-link {
margin-left: 1rem;
}
/* Card Groups */
.card-group {
display: flex;
flex-direction: column;
}
.card-group>.card {
margin-bottom: 1rem;
}
/* Card Deck */
.card-deck {
display: flex;
flex-direction: column;
}
.card-deck .card {
margin-bottom: 1rem;
}
/* Card Columns */
.card-columns {
column-count: 1;
column-gap: 1.25rem;
orphans: 1;
widows: 1;
}
.card-columns .card {
display: inline-block;
width: 100%;
margin-bottom: 1rem;
}
/* Card Variants */
.card-primary {
background-color: var(--primary-color);
border-color: var(--primary-color);
color: var(--white);
}
.card-primary .card-title,
.card-primary .card-subtitle,
.card-primary .card-text {
color: var(--white);
}
.card-primary .card-header,
.card-primary .card-footer {
background-color: rgba(255, 255, 255, 0.1);
border-color: rgba(255, 255, 255, 0.2);
}
.card-secondary {
background-color: var(--secondary-color);
border-color: var(--secondary-color);
color: var(--white);
}
.card-success {
background-color: var(--success-color);
border-color: var(--success-color);
color: var(--white);
}
.card-warning {
background-color: var(--warning-color);
border-color: var(--warning-color);
color: var(--text-color);
}
.card-danger {
background-color: var(--danger-color);
border-color: var(--danger-color);
color: var(--white);
}
.card-info {
background-color: var(--info-color);
border-color: var(--info-color);
color: var(--white);
}
.card-light {
background-color: var(--light-gray);
border-color: var(--border-color);
color: var(--text-color);
}
.card-dark {
background-color: var(--dark-color);
border-color: var(--dark-color);
color: var(--white);
}
/* Card Outline Variants */
.card-outline-primary {
background-color: transparent;
border-color: var(--primary-color);
}
.card-outline-secondary {
background-color: transparent;
border-color: var(--secondary-color);
}
.card-outline-success {
background-color: transparent;
border-color: var(--success-color);
}
.card-outline-warning {
background-color: transparent;
border-color: var(--warning-color);
}
.card-outline-danger {
background-color: transparent;
border-color: var(--danger-color);
}
.card-outline-info {
background-color: transparent;
border-color: var(--info-color);
}
/* Responsive Card Layout */
@media (min-width: 576px) {
.card-columns {
column-count: 2;
}
.card-group,
.card-deck {
flex-direction: row;
}
.card-group>.card,
.card-deck .card {
flex: 1 0 0%;
margin-bottom: 0;
}
.card-group>.card+.card,
.card-deck .card+.card {
margin-left: 1rem;
}
.card-group>.card {
border-radius: 0;
}
.card-group>.card:first-child {
border-top-right-radius: 0;
border-bottom-right-radius: 0;
}
.card-group>.card:last-child {
border-top-left-radius: 0;
border-bottom-left-radius: 0;
}
.card-group>.card:only-child {
border-radius: 0.5rem;
}
.card-group>.card:not(:first-child):not(:last-child) {
border-radius: 0;
}
}
@media (min-width: 768px) {
.card-columns {
column-count: 3;
}
}