[data-rs-stat] {
display: block;
}
[data-rs-stat-wrapper] {
display: flex;
flex-direction: column;
gap: var(--stat-gap);
}
[data-rs-stat-wrapper][data-rs-align="start"] { align-items: flex-start; }
[data-rs-stat-wrapper][data-rs-align="center"] { align-items: center; }
[data-rs-stat-wrapper][data-rs-align="end"] { align-items: flex-end; }
[data-rs-stat-header] {
display: flex;
align-items: center;
gap: var(--space-xs);
}
[data-rs-stat-body] {
display: flex;
align-items: baseline;
gap: var(--space-sm);
}
[data-rs-stat-label] {
font-size: var(--stat-label-font-size);
font-weight: var(--stat-label-font-weight);
color: var(--stat-label-fg);
}
[data-rs-stat-value] {
font-size: var(--stat-value-font-size);
font-weight: var(--stat-value-font-weight);
color: var(--stat-value-fg);
line-height: var(--line-height-tight);
font-variant-numeric: tabular-nums;
}
[data-rs-stat-wrapper][data-rs-size="sm"] [data-rs-stat-value] { font-size: var(--stat-size-sm-value); }
[data-rs-stat-wrapper][data-rs-size="md"] [data-rs-stat-value] { font-size: var(--stat-size-md-value); }
[data-rs-stat-wrapper][data-rs-size="lg"] [data-rs-stat-value] { font-size: var(--stat-size-lg-value); }
[data-rs-stat-delta] {
font-size: var(--stat-delta-font-size);
font-weight: var(--stat-delta-font-weight);
font-variant-numeric: tabular-nums;
}
[data-rs-stat-wrapper][data-rs-trend="increase"] [data-rs-stat-delta] { color: var(--stat-trend-increase-color); }
[data-rs-stat-wrapper][data-rs-trend="decrease"] [data-rs-stat-delta] { color: var(--stat-trend-decrease-color); }
[data-rs-stat-wrapper][data-rs-trend="neutral"] [data-rs-stat-delta] { color: var(--stat-trend-neutral-color); }
[data-rs-stat-icon] {
display: inline-flex;
align-items: center;
justify-content: center;
width: var(--stat-icon-size);
height: var(--stat-icon-size);
flex-shrink: 0;
}
[data-rs-stat-wrapper][data-rs-state~="loading"] [data-rs-stat-value],
[data-rs-stat-wrapper][data-rs-state~="loading"] [data-rs-stat-label] {
background: var(--stat-skeleton-bg);
color: transparent;
border-radius: var(--radius-sm);
animation: stat-pulse var(--motion-duration-deliberate) var(--motion-ease-standard) infinite;
}
[data-rs-stat-wrapper][data-rs-state~="loading"] [data-rs-stat-delta],
[data-rs-stat-wrapper][data-rs-state~="loading"] [data-rs-stat-icon] {
opacity: var(--opacity-disabled);
}
@keyframes stat-pulse {
0%, 100% { opacity: 1; }
50% { opacity: var(--opacity-disabled); }
}