@use '../../theme/styles' as theme;

.wr-calendar-heatmap {
  display: inline-block;
  font-family: var(--wr-font-family-base);
  color: var(--wr-color-medium);

  &__grid {
    display: grid;
    grid-template-areas:
      '. months'
      'weekdays cells';
    grid-template-columns: auto 1fr;
    gap: 0.375rem;
  }

  &__weekdays {
    grid-area: weekdays;
    display: grid;
    grid-template-rows: repeat(7, var(--wr-heatmap-cell-size));
    gap: var(--wr-heatmap-cell-gap);
    font-size: var(--wr-text-xs);
    color: var(--wr-color-medium);
    align-items: center;
  }

  &__weekday {
    line-height: 1;
    height: var(--wr-heatmap-cell-size);
    display: flex;
    align-items: center;
  }

  // The two grid cells that hold week columns get their own N-column
  // sub-grids — `--wr-heatmap-columns` is set by the component.
  &__months,
  &__cells {
    display: grid;
    grid-template-columns: repeat(var(--wr-heatmap-columns, 53), var(--wr-heatmap-cell-size));
    gap: var(--wr-heatmap-cell-gap);
  }

  &__months {
    grid-area: months;
    font-size: var(--wr-text-xs);
    color: var(--wr-color-medium);
  }

  &__month {
    grid-row: 1;
    white-space: nowrap;
  }

  &__cells {
    grid-area: cells;
    grid-template-rows: repeat(7, var(--wr-heatmap-cell-size));
  }

  &__cell {
    width: var(--wr-heatmap-cell-size);
    height: var(--wr-heatmap-cell-size);
    // 2px — intentional micro-radius for the tiny (~11px) cells; the control /
    // border-radius tokens (5px+) would read as near-circles at this size.
    border-radius: 2px;
    transition: transform var(--wr-transition-base);

    &:hover {
      transform: scale(1.4);
    }
  }
}
