:host {
  display: block;
}

.calendar {
  width: 95%;
  margin: 0 auto;

  .header {
    display: grid;
    align-items: center;
    grid-template-columns: 2.5fr 14fr;

    .navigation {
      display: flex;
      justify-content: space-between;
      align-items: center;
      margin-bottom: 1.25rem;

      .button {
        appearance: none;
        border: none;
        background: none;

        &:focus {
          outline: none;
        }
      }
    }

    .title {
      font-size: 18px;
      font-weight: bold;
    }
  }

  .body {
    width: 100%;

    > *:not(:empty) {
      cursor: pointer;
    }

    .row {
      display: grid;
      grid-template-columns: 2fr repeat(7, 2fr);
      grid-template-rows: 5rem;

      &:only-child {
        grid-template-rows: 6rem;
      }

      .kw-cell {
        color: rgba(89, 100, 112, 1);
        font-weight: bold;
      }

      th {
        color: rgba(89, 100, 112, 1);
        border-top: 1px solid #555;
        display: flex;
        justify-content: center;
        align-items: center;
      }

      th:first-child {
        border-top: none;
      }

      th:first-child,
      td:first-child {
        border-right: 1px solid #555;
      }

      th,
      td {
        text-align: center;
        padding: 0.5rem;

        &:first-child {
          text-align: left;
        }
      }

      .day-cell.out-of-month {
        .day,
        .items,
        .indicator {
          display: none;
        }
      }

      .day-cell {
        .day {
          color: rgba(0, 0, 0, 1);
          font-size: 18px;

          &.is-sunday {
            color: rgba(137, 148, 158, 1);
          }
        }

        .items {
          display: flex;
          justify-content: center;

          .indicator {
            height: 0.7rem;
            width: 0.7rem;
            border-radius: 50%;
            display: block;
            margin: 0.25rem;
            color: white;

            &.info {
              display: flex;
              align-items: center;
              justify-content: center;
              font-size: 0.6rem;
            }
          }
        }
      }
    }
  }
}
