.gm-calendar {
  width: 228px;
  overflow: hidden;
  border: 1px solid var(--gm-color-border);
  background: white;
  cursor: pointer;
  user-select: none;
  position: relative;

  .gm-calendar-head {
    height: 30px;

    .gm-calendar-head-icon {
      width: 30px;
      height: 30px;
      line-height: 30px;
      text-align: center;
      display: inline-block;
      color: var(--gm-color-desc);
    }

    .gm-calendar-head-text {
      font-weight: bold;
      line-height: 30px;
      height: 30px;
      text-align: center;

      &:hover {
        color: var(--gm-color-primary);
      }
    }

    .gm-calendar-head-year-icon {
      width: 10px;
      height: 10px;
    }
  }

  .gm-calendar-years-or-months {
    position: absolute;
    color: black;
    top: 37px;
    bottom: 5px;
    background-color: white;
    z-index: 1;
  }

  .gm-calendar-year-or-month {
    display: inline-block;
    width: 60px;
    height: 28px;
    line-height: 28px;
    text-align: center;
    margin: 9px 7px;
    cursor: pointer;
    border: 1px solid white;

    &.active {
      border: 1px solid var(--gm-color-primary);
      background-color: white;
      color: var(--gm-color-primary);
    }

    &:hover {
      background-color: var(--gm-color-primary);
      color: white;
    }
  }

  .gm-calendar-week {
    height: 24px;
    padding: 0 5px;
  }

  .gm-calendar-content {
    padding: 0 4px;
  }

  .gm-calendar-day {
    color: black;
    display: inline-block;
    text-align: center;
    line-height: 25px;
    width: 31px;
    margin: -1px 0;
    border: 3px solid white;

    &:hover:not(.gm-calendar-day-disabled):not(.active):not(.gm-calendar-day-old):not(.gm-calendar-day-new) {
      background-color: var(--gm-color-primary);
      color: white;
    }

    &.gm-calendar-day-old,
    &.gm-calendar-day-new {
      color: var(--gm-color-desc);
    }

    &.gm-calendar-day-now:not(.gm-calendar-day-old):not(.gm-calendar-day-new) {
      color: var(--gm-color-primary);
      outline: 1px solid var(--gm-color-primary);
      outline-offset: -4px;
    }

    &.gm-calendar-day-will:not(.active) {
      outline: 1px solid var(--gm-color-primary);
      outline-offset: -4px;
    }

    &.active:not(.gm-calendar-day-old):not(.gm-calendar-day-new) {
      background-color: #d7e8fc;
      color: black;
      border-left: none;
      border-right: none;
    }

    &.gm-calendar-day-hover:not(.gm-calendar-day-old):not(.gm-calendar-day-new):not(.gm-calendar-day-disabled) {
      background-color: #d7e8fc;
      color: black;
      border-left: none;
      border-right: none;
      transition: background-color 0.2s ease;
    }

    &.gm-calendar-day-begin:not(.gm-calendar-day-old):not(.gm-calendar-day-new),
    &.gm-calendar-day-end:not(.gm-calendar-day-old):not(.gm-calendar-day-new),
    &.gm-calendar-day-hover-end:not(.gm-calendar-day-old):not(.gm-calendar-day-new) {
      background-color: var(--gm-color-primary);
      color: white;
      border: 3px solid white;
    }

    &.disabled {
      .gmDisabled();
    }
  }
}
