.ical-carousel {
position: relative;
width: 100%;
overflow: hidden;
--card-gap: 1.5rem;
--card-min: 220px;
}
.ical-carousel__track {
display: flex;
gap: var(--card-gap);
transition: transform 0.4s ease;
will-change: transform;
} .ical-carousel__card {
flex: 0 0 calc(25% - var(--card-gap) * 3/4);
min-width: var(--card-min);
background: #fff;
border: 1px solid #e2e8f0;
border-radius: 10px;
overflow: hidden;
display: flex;
flex-direction: column;
box-shadow: 0 2px 8px rgba(0,0,0,.06);
transition: box-shadow 0.2s;
}
.ical-carousel__card:hover {
box-shadow: 0 6px 20px rgba(0,0,0,.12);
}
.ical-carousel__card-image {
width: 100%;
aspect-ratio: 16/9;
overflow: hidden;
background: #f0f4f8;
}
.ical-carousel__card-image img {
width: 100%;
height: 100%;
object-fit: cover;
display: block;
}
.ical-carousel__card-body {
padding: 1rem 1.25rem 1.25rem;
display: flex;
flex-direction: column;
flex: 1;
}
.ical-carousel__date {
font-size: .75rem;
font-weight: 600;
text-transform: uppercase;
letter-spacing: .05em;
color: #64748b;
margin-bottom: .35rem;
}
.ical-carousel__time {
margin-left: .4rem;
font-weight: 400;
text-transform: none;
letter-spacing: 0;
}
.ical-carousel__title {
font-size: 1.05rem;
font-weight: 700;
margin: 0 0 .5rem;
line-height: 1.3;
color: #1e293b;
}
.ical-carousel__desc {
font-size: .875rem;
color: #475569;
margin: 0 0 1rem;
line-height: 1.5;
flex: 1;
}
.ical-carousel__actions {
margin-top: auto;
}
.ical-carousel__btn-link {
display: inline-block;
padding: .45rem 1rem;
border-radius: 6px;
font-size: .8rem;
font-weight: 600;
text-decoration: none;
transition: background 0.2s, color 0.2s;
}
.ical-carousel__btn-link--primary {
background: #3b82f6;
color: #fff;
}
.ical-carousel__btn-link--primary:hover {
background: #2563eb;
color: #fff;
} .ical-carousel__controls {
display: flex;
align-items: center;
justify-content: center;
gap: .75rem;
margin-top: 1.25rem;
}
.ical-carousel__btn {
background: none;
border: 2px solid #cbd5e1;
border-radius: 50%;
width: 36px;
height: 36px;
font-size: 1.2rem;
line-height: 1;
cursor: pointer;
color: #475569;
display: flex;
align-items: center;
justify-content: center;
transition: border-color 0.2s, color 0.2s;
}
.ical-carousel__btn:hover {
border-color: #3b82f6;
color: #3b82f6;
}
.ical-carousel__dots {
display: flex;
gap: .4rem;
}
.ical-carousel__dot {
width: 10px;
height: 10px;
border-radius: 50%;
border: none;
background: #cbd5e1;
cursor: pointer;
padding: 0;
transition: background 0.2s;
}
.ical-carousel__dot.is-active {
background: #3b82f6;
} .ical-carousel-notice {
color: #64748b;
font-style: italic;
} @media (max-width: 900px) {
.ical-carousel__card {
flex: 0 0 calc(50% - var(--card-gap) / 2);
}
}
@media (max-width: 540px) {
.ical-carousel__card {
flex: 0 0 100%;
}
}