.dox-ui {
  @import "bootstrap";
  @import "~react-select/dist/react-select.min.css";
  @import "~react-datepicker/dist/react-datepicker.min.css";

  @import "common";
  @import "components";
  @import "modules";
}

/* Out of namespace context for datepicker */
div[data-reactroot].customized-date-picker-calendar {
  @import "common/variables";
  @import "common/typography";
  border-color: $light-gray;
  margin-top: -8px;
	color: $black;
  .react-datepicker__triangle {
      margin-top: 0px;
  }
  .react-datepicker__navigation--previous {
      border: none;
      width: 12px;
      height: 12px;
      margin-top: 2px;
      content: url(../images/angle-left.svg);
  }
  .react-datepicker__navigation--next {
      border: none;
      width: 12px;
      height: 12px;
      margin-top: 2px;
      content: url(../images/angle-right.svg);
  }
  .react-datepicker__month-container {
		.react-datepicker__header {
			background-color: $background-gray;
      border-bottom: none;
      .react-datepicker__current-month {
        @extend .body-1-semibold;
        background-color: $background-gray;
        margin-bottom: 10px;
      }
      .react-datepicker__day-names {
        @extend .body-1;
        background-color: $white;
      }
		}
    .react-datepicker__day--selected, .react-datepicker__day--keyboard-selected {
      @extend .body-1;
      background-color: $blue;
			color: $white;
    }
    .react-datepicker__day {
			border-radius: 0px;
			margin: 0;
			flex: 1;
      @extend .body-1;
    }

		.react-datepicker__day--in-range, .react-datepicker__day--in-selecting-range {
			background-color: $tlv-hover;
			color: $black;
			&.react-datepicker__day--selected, &.react-datepicker__day--keyboard-selected, &.react-datepicker__day--range-start, &.react-datepicker__day--range-end  {
				background-color: $blue;
				color: $white;
			}
			&.react-datepicker__day--selecting-range-start, &.react-datepicker__day--selecting-range-end {
				background-color: lighten($blue, 40%);
				color: $black;
			}
			&.react-datepicker__day--selecting-range-start.react-datepicker__day--range-start,
			&.react-datepicker__day--selecting-range-end.react-datepicker__day--range-end,
			&.react-datepicker__day--selecting-range-start.react-datepicker__day--keyboard-selected {
				background-color: $blue;
				color: $white;
			}
		}

		.react-datepicker__week {
			display: flex;
    }
	}
}

/* Out of namespace context for tooltips */
div[data-reactroot].tooltip {
  @import "common/variables";
  @import "common/typography";

  &.in {
  	opacity: 1;
  }
  &.validation-error-message {
    &.bottom {
      .tooltip-arrow {
      border-bottom-color: $red !important;
      }
    }
    &.left {
      .tooltip-arrow {
        border-left-color: $red !important;
      }
    }
    &.right {
      .tooltip-arrow {
        border-right-color: $red !important;
      }
    }
    &.top {
      .tooltip-arrow {
        border-top-color: $red !important;
      }
    }
  }
  &.bottom {
    .tooltip-arrow {
      border-bottom-color: $dark-gray !important;
    }
  }
  &.top {
    .tooltip-arrow {
      border-top-color: $dark-gray !important;
    }
  }
  .tooltip-inner {
    @extend .body-1;
    max-width: 100%;
    background-color: $dark-gray;
    padding: 6px 9px;
    &:first-letter {
      text-transform: capitalize;
    }
  }

  // activity log tooltip
  &.activity-log-message-tooltip {
	  @include base-font-regular;
    font-size: $body-font-2;
    .message-block {
      text-align: left;
      padding: 3px 12px;
    }
  }
  //dependency table error tooltip
  &.select-action-table-error-tooltip{
    @include base-font-regular;
    margin-right: 5px;
    font-size: $body-font-2;
    .message-block {
      text-align: left;
      padding: 3px 12px;
    }
    .tooltip-arrow {
           border-bottom-color: $red !important;
	  }

    .tooltip-inner {
      background-color: $red;
      padding: 6px 8px;
      font-size: $body-font-2;
    }
  }

  // for read-only mode, vendor description in VLM overview
  &.vendor-description-tooltip {
    .tooltip-inner {
      max-width: 600px;
    }
  }
}
