/* ==========================================================================
   Calendar
   ========================================================================== */

.calendar {
  display: flex;
  flex-direction: column;
  gap: var(--space-3);
}

.calendar-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
}

.calendar-label {
  font-size: var(--font-size-body);
  font-weight: var(--font-weight-semibold);
  color: var(--color-text-primary);
}

.calendar-nav {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 28px;
  height: 28px;
  border-radius: var(--radius-sm);
  color: var(--color-text-secondary);
  transition: background-color var(--transition-fast);
}

.calendar-nav:hover {
  background-color: var(--color-surface-secondary);
}

.calendar-weekdays {
  display: grid;
  grid-template-columns: repeat(7, 1fr);
  text-align: center;
  font-size: var(--font-size-caption);
  font-weight: var(--font-weight-semibold);
  color: var(--color-text-secondary);
}

.calendar-grid {
  display: grid;
  grid-template-columns: repeat(7, 1fr);
  gap: 4px;
}

.calendar-day {
  aspect-ratio: 1;
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: 50%;
  font-size: var(--font-size-small);
  color: var(--color-text-primary);
  transition: background-color var(--transition-fast), color var(--transition-fast);
}

.calendar-day:hover:not(:disabled) {
  background-color: var(--color-surface-secondary);
}

.calendar-day--empty {
  visibility: hidden;
}

.calendar-day--today {
  font-weight: var(--font-weight-bold);
  color: var(--color-primary);
}

.calendar-day--selected {
  background-color: var(--color-primary);
  color: #ffffff;
}
