.cdsb-banner { --cdsb-bg: #fdfbf8;
--cdsb-bg-tint: #fff9f3;
--cdsb-surface: #ffffff;
--cdsb-border: #ebe4dc;
--cdsb-border-soft: #f3ede6;
--cdsb-text: #2c2825;
--cdsb-muted: #6b6560;
--cdsb-accent: #3d6fd4;
--cdsb-icon: #8a837c;
--cdsb-shadow: 0 1px 2px rgba(44, 40, 37, 0.04), 0 4px 14px rgba(44, 40, 37, 0.05);
--cdsb-shadow-hover: 0 2px 6px rgba(44, 40, 37, 0.05), 0 10px 24px rgba(44, 40, 37, 0.07);
--cdsb-radius-banner: 14px;
--cdsb-radius-tile: 12px;
--cdsb-tile-min: 9.75rem;
--cdsb-tile-gap: 0.65rem;
--cdsb-tile-pad-y: 0.58rem;
--cdsb-tile-pad-x: 0.78rem;
--cdsb-tile-min-h: 3.55rem;
--cdsb-ease: cubic-bezier(0.25, 0.46, 0.45, 0.94); --cdsb-accent-events: #4a7fd4;
--cdsb-accent-events-bg: rgba(74, 127, 212, 0.1);
--cdsb-accent-music: #8b6bb8;
--cdsb-accent-music-bg: rgba(139, 107, 184, 0.11);
--cdsb-accent-culture: #b07a52;
--cdsb-accent-culture-bg: rgba(176, 122, 82, 0.11);
--cdsb-accent-figures: #d4846a;
--cdsb-accent-figures-bg: rgba(212, 132, 106, 0.11);
--cdsb-accent-locations: #6b8fa8;
--cdsb-accent-locations-bg: rgba(107, 143, 168, 0.1);
--cdsb-accent-community: #7a7570;
--cdsb-accent-community-bg: rgba(122, 117, 112, 0.09);
--cdsb-accent-organizers: #5c7cad;
--cdsb-accent-organizers-bg: rgba(92, 124, 173, 0.1);
--cdsb-accent-quiz: #a68b5c;
--cdsb-accent-quiz-bg: rgba(166, 139, 92, 0.1);
box-sizing: border-box;
margin: 1.15rem 0 1.55rem;
padding: 1.1rem 1.15rem 1.2rem;
background: var(--cdsb-bg);
border: 1px solid var(--cdsb-border-soft);
border-radius: var(--cdsb-radius-banner);
color: var(--cdsb-text);
}
.cdsb-banner--style-default {
background: linear-gradient(
168deg,
#fffefb 0%,
var(--cdsb-bg-tint) 42%,
#faf6f1 78%,
#f5f0ea 100%
);
box-shadow: var(--cdsb-shadow);
}
.cdsb-banner *,
.cdsb-banner *::before,
.cdsb-banner *::after {
box-sizing: border-box;
}
.cdsb-banner__header {
margin: 0 0 1.1rem;
padding: 0 0.05rem;
}
.cdsb-banner__title {
margin: 0 0 0.4rem;
font-size: 1.125rem;
line-height: 1.35;
font-weight: 600;
letter-spacing: -0.015em;
color: var(--cdsb-text);
}
.cdsb-banner__subtitle {
margin: 0;
font-size: 0.875rem;
line-height: 1.5;
color: var(--cdsb-muted);
} .cdsb-banner__grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(min(100%, var(--cdsb-tile-min)), 1fr));
gap: var(--cdsb-tile-gap);
margin: 0;
padding: 0;
list-style: none;
width: 100%;
}
.cdsb-banner--tiles-8 .cdsb-banner__grid,
.cdsb-banner--tiles-7 .cdsb-banner__grid,
.cdsb-banner--tiles-6 .cdsb-banner__grid {
grid-template-columns: repeat(auto-fit, minmax(min(100%, var(--cdsb-tile-min)), 1fr));
}
@media (min-width: 1024px) {
.cdsb-banner--tiles-8 .cdsb-banner__grid {
grid-template-columns: repeat(4, minmax(0, 1fr));
}
.cdsb-banner--tiles-7 .cdsb-banner__grid,
.cdsb-banner--tiles-6 .cdsb-banner__grid {
grid-template-columns: repeat(3, minmax(0, 1fr));
}
}
@media (min-width: 768px) and (max-width: 1023px) {
.cdsb-banner--tiles-8 .cdsb-banner__grid,
.cdsb-banner--tiles-7 .cdsb-banner__grid,
.cdsb-banner--tiles-6 .cdsb-banner__grid {
grid-template-columns: repeat(3, minmax(0, 1fr));
}
} .cdsb-banner__item {
--cdsb-item-accent: var(--cdsb-accent);
--cdsb-item-accent-bg: rgba(61, 111, 212, 0.09);
position: relative;
display: flex;
flex-direction: row;
align-items: flex-start;
justify-content: flex-start;
gap: 0.55rem;
min-width: 0;
min-height: var(--cdsb-tile-min-h);
padding: var(--cdsb-tile-pad-y) var(--cdsb-tile-pad-x);
background: var(--cdsb-surface);
border: 1px solid var(--cdsb-border-soft);
border-radius: var(--cdsb-radius-tile);
box-shadow: var(--cdsb-shadow);
overflow: hidden;
}
.cdsb-banner--style-default .cdsb-banner__item::before {
content: "";
position: absolute;
inset: 0 auto auto 0;
width: 100%;
height: 2px;
background: linear-gradient(
90deg,
var(--cdsb-item-accent) 0%,
transparent 72%
);
opacity: 0.55;
pointer-events: none;
}
.cdsb-banner__value {
display: block;
max-width: 100%;
font-size: clamp(1.18rem, 2.1vw + 0.48rem, 1.45rem);
font-weight: 600;
line-height: 1.05;
letter-spacing: -0.025em;
color: var(--cdsb-item-accent);
font-variant-numeric: tabular-nums lining-nums;
white-space: nowrap;
}
.cdsb-banner__value--wide {
font-size: clamp(1.08rem, 2vw + 0.45rem, 1.38rem);
letter-spacing: -0.03em;
}
.cdsb-banner__value--thousands {
letter-spacing: -0.012em;
}
.cdsb-banner__label {
display: block;
max-width: 100%;
margin: 0;
font-size: 0.74rem;
line-height: 1.2;
font-weight: 450;
color: var(--cdsb-muted);
letter-spacing: 0.008em;
text-transform: none;
overflow-wrap: anywhere;
hyphens: auto;
}
.cdsb-banner__body {
display: flex;
flex-direction: column;
align-items: flex-start;
justify-content: center;
gap: 0.2rem;
min-width: 0;
flex: 1 1 auto;
}
.cdsb-banner__primary {
display: flex;
flex-direction: column;
align-items: flex-start;
justify-content: center;
gap: 0.02rem;
min-width: 0;
width: 100%;
}
.cdsb-banner__meta {
display: flex;
flex-direction: row;
flex-wrap: wrap;
align-items: center;
gap: 0.28rem;
max-width: 100%;
line-height: 1;
}
.cdsb-banner__badge {
display: inline-flex;
align-items: center;
gap: 0.18rem;
max-width: 100%;
padding: 0.12rem 0.42rem;
border-radius: 999px;
font-size: 0.62rem;
font-weight: 500;
line-height: 1.15;
letter-spacing: 0.02em;
white-space: nowrap;
border: 1px solid transparent;
}
.cdsb-banner__badge--hint {
color: color-mix(in srgb, var(--cdsb-muted) 92%, var(--cdsb-item-accent, var(--cdsb-muted)));
background: color-mix(in srgb, var(--cdsb-item-accent-bg, rgba(138, 131, 124, 0.08)) 55%, var(--cdsb-surface));
border-color: color-mix(in srgb, var(--cdsb-border-soft) 88%, var(--cdsb-item-accent, transparent));
}
.cdsb-banner__badge--trend {
color: var(--cdsb-trend-muted, #8a837c);
background: color-mix(in srgb, var(--cdsb-surface) 88%, var(--cdsb-bg-tint));
border-color: color-mix(in srgb, var(--cdsb-border-soft) 90%, transparent);
}
.cdsb-banner__badge--rise {
color: var(--cdsb-trend-rise-copper, #9a6b4a);
background: color-mix(in srgb, var(--cdsb-trend-rise-copper, #a67c52) 9%, var(--cdsb-surface));
border-color: color-mix(in srgb, var(--cdsb-trend-rise-copper, #a67c52) 18%, var(--cdsb-border-soft));
}
.cdsb-banner__item--culture_entries .cdsb-banner__badge--rise,
.cdsb-banner__item--movements .cdsb-banner__badge--rise {
color: var(--cdsb-trend-rise-sage, #6f8578);
background: color-mix(in srgb, var(--cdsb-trend-rise-sage, #6f8578) 10%, var(--cdsb-surface));
border-color: color-mix(in srgb, var(--cdsb-trend-rise-sage, #6f8578) 20%, var(--cdsb-border-soft));
}
.cdsb-banner__badge--stable {
color: var(--cdsb-trend-stable, #9a948c);
font-weight: 450;
background: color-mix(in srgb, var(--cdsb-muted) 6%, var(--cdsb-surface));
border-color: color-mix(in srgb, var(--cdsb-border-soft) 95%, transparent);
}
.cdsb-banner__badge-icon {
font-size: 0.68em;
line-height: 1;
opacity: 0.92;
}
.cdsb-banner__badge-text {
font-variant-numeric: tabular-nums lining-nums;
} .cdsb-banner__item--total_events,
.cdsb-banner__item--upcoming_events,
.cdsb-banner__item--events_this_month {
--cdsb-item-accent: var(--cdsb-accent-events);
--cdsb-item-accent-bg: var(--cdsb-accent-events-bg);
}
.cdsb-banner__item--used_locations {
--cdsb-item-accent: var(--cdsb-accent-locations);
--cdsb-item-accent-bg: var(--cdsb-accent-locations-bg);
}
.cdsb-banner__item--active_organizers {
--cdsb-item-accent: var(--cdsb-accent-organizers);
--cdsb-item-accent-bg: var(--cdsb-accent-organizers-bg);
}
.cdsb-banner__item--music_playlists,
.cdsb-banner__item--music_playlists_added {
--cdsb-item-accent: var(--cdsb-accent-music);
--cdsb-item-accent-bg: var(--cdsb-accent-music-bg);
}
.cdsb-banner__item--culture_entries,
.cdsb-banner__item--posts_total,
.cdsb-banner__item--posts_manual,
.cdsb-banner__item--posts_ai {
--cdsb-item-accent: var(--cdsb-accent-culture);
--cdsb-item-accent-bg: var(--cdsb-accent-culture-bg);
}
.cdsb-banner__item--movements {
--cdsb-item-accent: var(--cdsb-accent-figures);
--cdsb-item-accent-bg: var(--cdsb-accent-figures-bg);
}
.cdsb-banner__item--quiz_questions,
.cdsb-banner__item--quiz_questions_added,
.cdsb-banner__item--rhythm_exercises {
--cdsb-item-accent: var(--cdsb-accent-quiz);
--cdsb-item-accent-bg: var(--cdsb-accent-quiz-bg);
}
.cdsb-banner__item--forum_topics,
.cdsb-banner__item--forum_posts,
.cdsb-banner__item--users_total,
.cdsb-banner__item--premium_members,
.cdsb-banner__item--sweet_words {
--cdsb-item-accent: var(--cdsb-accent-community);
--cdsb-item-accent-bg: var(--cdsb-accent-community-bg);
} .cdsb-banner--icons .cdsb-banner__item {
flex-direction: row;
align-items: flex-start;
gap: 0.55rem;
}
.cdsb-banner__icon {
display: flex;
flex-shrink: 0;
align-items: center;
justify-content: center;
width: 2.05rem;
height: 2.05rem;
margin-top: 0.06rem;
border-radius: 10px;
color: var(--cdsb-item-accent, var(--cdsb-icon));
background: var(--cdsb-item-accent-bg, rgba(138, 131, 124, 0.08));
opacity: 1;
}
.cdsb-banner__icon--events {
color: var(--cdsb-accent-events);
background: var(--cdsb-accent-events-bg);
}
.cdsb-banner__icon--locations {
color: var(--cdsb-accent-locations);
background: var(--cdsb-accent-locations-bg);
}
.cdsb-banner__icon--organizers {
color: var(--cdsb-accent-organizers);
background: var(--cdsb-accent-organizers-bg);
}
.cdsb-banner__icon--playlists {
color: var(--cdsb-accent-music);
background: var(--cdsb-accent-music-bg);
}
.cdsb-banner__icon--quiz {
color: var(--cdsb-accent-quiz);
background: var(--cdsb-accent-quiz-bg);
}
.cdsb-banner__icon--culture {
color: var(--cdsb-accent-culture);
background: var(--cdsb-accent-culture-bg);
}
.cdsb-banner__icon--figures {
color: var(--cdsb-accent-figures);
background: var(--cdsb-accent-figures-bg);
}
.cdsb-banner__icon--community {
color: var(--cdsb-accent-community);
background: var(--cdsb-accent-community-bg);
}
.cdsb-banner__icon-svg {
display: block;
width: 1.3rem;
height: 1.3rem;
} .cdsb-banner--style-default .cdsb-banner__item--music_playlists,
.cdsb-banner--style-default .cdsb-banner__item--culture_entries,
.cdsb-banner--style-default .cdsb-banner__item--movements {
min-height: calc(var(--cdsb-tile-min-h) + 0.15rem);
border-color: color-mix(in srgb, var(--cdsb-item-accent) 18%, var(--cdsb-border-soft));
box-shadow: 0 2px 4px rgba(44, 40, 37, 0.04), 0 6px 16px rgba(44, 40, 37, 0.05);
}
.cdsb-banner--style-default .cdsb-banner__item--music_playlists .cdsb-banner__value,
.cdsb-banner--style-default .cdsb-banner__item--culture_entries .cdsb-banner__value,
.cdsb-banner--style-default .cdsb-banner__item--movements .cdsb-banner__value {
font-size: clamp(1.22rem, 2.2vw + 0.5rem, 1.5rem);
}
.cdsb-banner--style-default .cdsb-banner__item--music_playlists::before,
.cdsb-banner--style-default .cdsb-banner__item--culture_entries::before,
.cdsb-banner--style-default .cdsb-banner__item--movements::before {
height: 3px;
opacity: 0.72;
} @media (prefers-reduced-motion: no-preference) {
.cdsb-banner--style-default .cdsb-banner__item {
transition:
border-color 0.22s var(--cdsb-ease),
box-shadow 0.22s var(--cdsb-ease),
transform 0.22s var(--cdsb-ease);
}
@media (hover: hover) {
.cdsb-banner--style-default .cdsb-banner__item:hover {
border-color: color-mix(in srgb, var(--cdsb-item-accent) 22%, var(--cdsb-border));
box-shadow: var(--cdsb-shadow-hover);
transform: translateY(-2px);
}
}
} @media (prefers-reduced-motion: no-preference) {
.cdsb-banner--animate {
animation: cdsb-fade-in 0.45s ease-out both;
}
.cdsb-banner--animate .cdsb-banner__item {
animation: cdsb-fade-in 0.5s ease-out both;
}
.cdsb-banner--animate .cdsb-banner__item:nth-child(1) { animation-delay: 0.02s; }
.cdsb-banner--animate .cdsb-banner__item:nth-child(2) { animation-delay: 0.05s; }
.cdsb-banner--animate .cdsb-banner__item:nth-child(3) { animation-delay: 0.08s; }
.cdsb-banner--animate .cdsb-banner__item:nth-child(4) { animation-delay: 0.11s; }
.cdsb-banner--animate .cdsb-banner__item:nth-child(5) { animation-delay: 0.14s; }
.cdsb-banner--animate .cdsb-banner__item:nth-child(6) { animation-delay: 0.17s; }
.cdsb-banner--animate .cdsb-banner__item:nth-child(7) { animation-delay: 0.2s; }
.cdsb-banner--animate .cdsb-banner__item:nth-child(8) { animation-delay: 0.23s; }
.cdsb-banner--animate .cdsb-banner__item:nth-child(n+9) { animation-delay: 0.26s; }
}
@keyframes cdsb-fade-in {
from {
opacity: 0;
transform: translateY(5px);
}
to {
opacity: 1;
transform: translateY(0);
}
}
@media (prefers-reduced-motion: reduce) {
.cdsb-banner--animate,
.cdsb-banner--animate .cdsb-banner__item {
animation: none !important;
}
.cdsb-banner--style-default .cdsb-banner__item:hover {
transform: none;
}
} .cdsb-banner--style-compact {
padding: 0.95rem 1.05rem;
margin: 0.95rem 0 1.2rem;
--cdsb-tile-min: 9.5rem;
--cdsb-tile-gap: 0.6rem;
box-shadow: 0 1px 3px rgba(44, 40, 37, 0.04);
}
.cdsb-banner--style-compact {
--cdsb-tile-min-h: 3.15rem;
--cdsb-tile-pad-y: 0.48rem;
--cdsb-tile-pad-x: 0.62rem;
}
.cdsb-banner--style-compact .cdsb-banner__item {
padding: var(--cdsb-tile-pad-y) var(--cdsb-tile-pad-x);
min-height: var(--cdsb-tile-min-h);
box-shadow: 0 1px 2px rgba(44, 40, 37, 0.04);
}
.cdsb-banner--style-compact .cdsb-banner__item::before {
height: 2px;
opacity: 0.45;
}
.cdsb-banner--style-compact .cdsb-banner__value {
font-size: clamp(1.08rem, 2vw + 0.4rem, 1.28rem);
}
.cdsb-banner--style-compact .cdsb-banner__value--wide {
font-size: clamp(0.98rem, 1.8vw + 0.35rem, 1.18rem);
}
.cdsb-banner--style-compact .cdsb-banner__label {
font-size: 0.73rem;
}
.cdsb-banner--style-compact.cdsb-banner--icons .cdsb-banner__icon {
width: 2rem;
height: 2rem;
}
.cdsb-banner--style-compact .cdsb-banner__icon-svg {
width: 1.15rem;
height: 1.15rem;
} .cdsb-banner--style-minimal {
background: transparent;
border: none;
border-radius: 0;
border-bottom: 1px solid var(--cdsb-border);
padding: 0.85rem 0 1.1rem;
margin: 0 0 1.35rem;
box-shadow: none;
}
.cdsb-banner--style-minimal .cdsb-banner__item {
background: transparent;
border: none;
padding: 0.4rem 0.55rem 0.4rem 0;
min-height: auto;
box-shadow: none;
}
.cdsb-banner--style-minimal .cdsb-banner__item::before {
display: none;
}
.cdsb-banner--style-minimal .cdsb-banner__value {
font-size: clamp(1.12rem, 2.2vw + 0.45rem, 1.38rem);
}
.cdsb-banner--style-minimal.cdsb-banner--icons .cdsb-banner__icon {
width: 1.85rem;
height: 1.85rem;
opacity: 1;
}
.cdsb-banner--style-minimal .cdsb-banner__icon-svg {
width: 1.05rem;
height: 1.05rem;
} @media (max-width: 599px) {
.cdsb-banner {
padding: 0.95rem 0.85rem 1.05rem;
margin: 1rem 0 1.35rem;
--cdsb-tile-min: 8.5rem;
--cdsb-tile-gap: 0.55rem;
--cdsb-tile-min-h: 3.35rem;
--cdsb-tile-pad-y: 0.52rem;
--cdsb-tile-pad-x: 0.62rem;
}
.cdsb-banner__grid {
grid-template-columns: repeat(2, minmax(0, 1fr));
gap: var(--cdsb-tile-gap);
}
.cdsb-banner--icons .cdsb-banner__item {
gap: 0.48rem;
}
.cdsb-banner__icon {
width: 1.9rem;
height: 1.9rem;
}
.cdsb-banner__icon-svg {
width: 1.2rem;
height: 1.2rem;
}
.cdsb-banner__value {
font-size: clamp(1.18rem, 4.5vw + 0.35rem, 1.42rem);
}
.cdsb-banner__label {
font-size: 0.71rem;
}
.cdsb-banner__badge {
font-size: 0.58rem;
padding: 0.1rem 0.36rem;
}
.cdsb-banner--style-default .cdsb-banner__item--music_playlists .cdsb-banner__value,
.cdsb-banner--style-default .cdsb-banner__item--culture_entries .cdsb-banner__value,
.cdsb-banner--style-default .cdsb-banner__item--movements .cdsb-banner__value {
font-size: clamp(1.16rem, 4.5vw + 0.34rem, 1.38rem);
}
}
@media (max-width: 360px) {
.cdsb-banner__grid {
grid-template-columns: 1fr;
}
} .cdsb-banner--microtexts .cdsb-banner__primary,
.cdsb-banner--micro-trends .cdsb-banner__primary {
gap: 0;
}
.cdsb-banner__link {
display: flex;
flex-direction: inherit;
align-items: inherit;
justify-content: inherit;
gap: inherit;
width: 100%;
min-width: 0;
min-height: inherit;
padding: 0;
margin: 0;
text-decoration: none;
color: inherit;
border-radius: inherit;
outline: none;
-webkit-tap-highlight-color: transparent;
}
.cdsb-banner--icons .cdsb-banner__link {
flex-direction: row;
align-items: flex-start;
gap: 0.55rem;
}
.cdsb-banner__item--linked {
padding: 0;
}
.cdsb-banner__item--linked .cdsb-banner__link {
padding: var(--cdsb-tile-pad-y) var(--cdsb-tile-pad-x);
min-height: var(--cdsb-tile-min-h);
}
.cdsb-banner--style-compact .cdsb-banner__item--linked .cdsb-banner__link {
padding: var(--cdsb-tile-pad-y) var(--cdsb-tile-pad-x);
min-height: var(--cdsb-tile-min-h);
}
.cdsb-banner--style-minimal .cdsb-banner__item--linked .cdsb-banner__link {
padding: 0.4rem 0.55rem 0.4rem 0;
min-height: auto;
}
.cdsb-banner--clickable .cdsb-banner__item--linked .cdsb-banner__link:focus-visible {
outline: 2px solid var(--cdsb-item-accent, var(--cdsb-accent));
outline-offset: 2px;
box-shadow: 0 0 0 3px color-mix(in srgb, var(--cdsb-item-accent, var(--cdsb-accent)) 22%, transparent);
}
@media (prefers-reduced-motion: no-preference) {
.cdsb-banner--clickable .cdsb-banner__item--linked .cdsb-banner__link {
transition:
box-shadow 0.22s var(--cdsb-ease),
transform 0.22s var(--cdsb-ease);
}
@media (hover: hover) {
.cdsb-banner--clickable.cdsb-banner--style-default .cdsb-banner__item--linked:hover {
transform: none;
box-shadow: none;
}
.cdsb-banner--clickable.cdsb-banner--style-default .cdsb-banner__item--linked .cdsb-banner__link:hover {
box-shadow: var(--cdsb-shadow-hover);
transform: translateY(-2px);
}
}
}
@media (max-width: 599px) {
.cdsb-banner__item--linked .cdsb-banner__link {
padding: var(--cdsb-tile-pad-y) var(--cdsb-tile-pad-x);
min-height: var(--cdsb-tile-min-h);
}
} .cdsb-banner__micro,
.cdsb-banner__trend {
display: inline-flex;
align-items: center;
max-width: 100%;
margin: 0;
font-size: 0.62rem;
line-height: 1.15;
}