Files
sendou.ink/app/features/mmr/components/SeasonActivityCalendar.module.css
2026-09-28 20:03:09 +03:00

129 lines
2.5 KiB
CSS

.container {
/* categorical palette, all-pairs CVD separation validated against the dark surface */
--activity-none: color-mix(in oklch, var(--color-text) 8%, transparent);
--activity-sq: oklch(70% 0.11 253);
--activity-tournament: oklch(75% 0.12 85);
--activity-both: oklch(94% 0.02 253);
display: flex;
flex-direction: column;
gap: var(--s-3);
}
:global(:where(html.light)) .container,
:global(:where([data-theme="light"])) .container {
--activity-sq: oklch(56% 0.13 253);
--activity-tournament: oklch(66% 0.13 85);
--activity-both: oklch(30% 0.04 253);
}
:global(:where([data-theme="dark"])) .container {
--activity-sq: oklch(70% 0.11 253);
--activity-tournament: oklch(75% 0.12 85);
--activity-both: oklch(94% 0.02 253);
}
.label {
font-size: var(--font-2xs);
font-weight: var(--weight-semi);
text-transform: uppercase;
letter-spacing: 0.5px;
color: var(--color-text-high);
}
.calendar {
display: grid;
grid-template-columns: 1fr auto 1fr;
align-items: end;
}
.calendarWeekdays {
display: flex;
flex-direction: column;
justify-self: end;
gap: var(--calendar-gap, 4px);
margin-inline-end: var(--s-1-5);
}
.calendarMonths {
display: flex;
gap: var(--calendar-gap, 4px);
}
.calendarWeekday {
display: flex;
align-items: center;
justify-content: flex-end;
height: var(--calendar-cell-size, 18px);
}
.calendarMonth {
display: flex;
flex-direction: column;
gap: var(--calendar-gap, 4px);
}
.calendarMonthName {
text-align: center;
white-space: nowrap;
}
.calendarWeeks {
display: flex;
gap: var(--calendar-gap, 4px);
}
.calendarWeek {
display: flex;
flex-direction: column;
gap: var(--calendar-gap, 4px);
}
.calendarCell {
width: var(--calendar-cell-size, 18px);
height: var(--calendar-cell-size, 18px);
border-radius: 3px;
background-color: var(--activity-none);
&.calendarCellHidden {
visibility: hidden;
}
&.calendarSq {
background-color: var(--activity-sq);
}
&.calendarTournament {
background-color: var(--activity-tournament);
}
&.calendarBoth {
background-color: var(--activity-both);
}
&.calendarUpcoming {
background-color: transparent;
outline: 1px dashed color-mix(in oklch, var(--color-text) 30%, transparent);
outline-offset: -1px;
}
}
.calendarLegend {
display: flex;
flex-wrap: wrap;
align-items: center;
justify-content: center;
gap: var(--s-1-5) var(--s-2-5);
}
.calendarLegendItem {
display: flex;
align-items: center;
gap: var(--s-1-5);
& .calendarCell {
width: 10px;
height: 10px;
}
}