// Event Log SCSS
#event-log {

  .row {
    width: 100%;
  }
  // Dropwdowns filter
  .dropdown__date.row {
    padding: .5em;
  }

  //Timezone select
  .event-log__timezone,
  .event-log__timezone button {
    position: relative;
    text-transform: uppercase;
    color: $lightbg__primary;
    font-size: .9em;
    font-weight: 700;
    border: 0;
  }
  .content__search {
    float: none;
    @include mediaQuery(x-large) {
      @include fastTransition-all;
    }
  }
}

#event-filter {
  .filter-label {
    color: $darkgrey;
    text-transform: uppercase;
    font-weight: 700;
    font-size: .75em;
    margin-bottom: 3px;
  }
  .event__severity-filter {
    float:left;
    margin-right: 2em;
    margin-bottom: 1em;
    button {
      margin: 0px -3px;
      padding: .6em 2em;
      min-height: 2.1em;
      font-size: .9em;
      font-weight: 700;
      border-radius: 0;
      &.first,
      &.last {
        border-radius: 3px;
      }
      @media (min-width: 583px) {
        &.last {
          border-left: 0;
        }
      }
    }
    .btn-primary {
      border: 2px solid $primebtn__bg;
    }
  }
  .event__date-filter {
    margin-right: 1.5em;
    color: $darkgrey;
    float:left;
    input {
      width: 170px;
      height: 2.1rem;
    }
    label {
      height: 0;
      text-indent: -9999px;
    }
  }
  .event__status-filter {
    float:left;
    @include mediaQuery(medium) {
      width: 25%;
    }
    .dropdown__wrapper,
    .dropdown__button {
      width: 100%;
      text-align: left;
    }
  }
}

.event-log__filters {
  position: relative;
  padding-bottom: .5em;
  padding-top: .5em;

  @media (min-width: 1333px) {
    float: right;
    display: inline-block;
  }
}
.empty__logs {
  border: 1px solid $lightbg__grey;
  margin-top: .5em;
  text-align: center;
  padding: 2em;
}

.accord-trigger {
  position: absolute;
  right: 1em;
  top: .3em;
}

#event-log__events,
.event-log__events {
  display: block;
  margin-top: 1.6em;
  position: relative;
  overflow: hidden;
  .header__actions-bar {
    .btn-export,
    .btn-delete,
    .btn-resolve {
      color: $white;
    }
    .event-log__col-check {
      text-align: left;
      max-width: 30px;
      .control-check {
        margin-left: -6px;
      }
    }
  }
  .inline__confirm {
    height: auto;
    margin-left: 0;
    left: 0;
    padding: 1em 2em 1em 2em
  }
  .inline__confirm-message {
    margin-top: 5px;
    margin-bottom: -10px;
  }
  .inline__confirm-buttons .btn-primary {
    padding: .5em 2em;
    min-height: 25px;
    margin-top: .5em;
    @include mediaQuery(medium) {
      margin-top: 0;
    }
  }
  .event-log__col-check {
    max-width: 60px;
    text-align: center;
  }
  .col-logged-events {
    span {
      display: inline-block;
      font-weight: 700;
      margin-right: .3em;
    }
  }

  //Export log
  .btn-export, .btn-meta-copy,
  .btn-delete,
  .btn-resolve {
    color: black;
    font-size: .9em;
    font-weight: 700;
    position: relative;
    padding: 0 0 1em 2em;
    &:hover {
      text-decoration: underline;
    }
  }
  .btn-resolve.disabled:hover,
  .btn-delete.disabled:hover{
    cursor: default;
    text-decoration: none;
  }
  .btn-export {
    margin-top: 7px;
    padding-bottom: 0;
  }
  .btn-export:before {
    content: '\21E5';
    position: absolute;
    font-size: 1.7em;
    vertical-align: middle;
    transform: rotate(90deg);
    display: inline-block;
    left: 2px;
    top: -5px;
  }
  .btn-meta-copy,
  .btn-delete,
  .btn-resolve {
    margin-left: 5px;
    padding: .5em .5em;
  }

  // Single event log card
  .event-log__single-event {
    border: 1px solid $medgrey;
    padding: 1em 1em 1em .7em;
    margin: .5em 0 .5em 0;
    position: relative;
    overflow: hidden;
    @include fastTransition-all;
    &.active {
      background-color: $lightgrey;
      @include slowTransition-all;
    }
  }
  .event-log__event-info {
    &:hover {
      cursor: pointer;
    }
  }

  //Event priorities
  .event__priority {
    color: $white;
    font-size: .8em;
    text-transform: uppercase;
    padding: 2px 2em;
    font-weight: 700;
    line-height: inherit;
    min-width: 103px;
    text-align: center;
    &.high-priority {
      background: $highPriority-bg;
      border: 2px solid $highPriorityColor;
      color: darken($highPriorityColor, 5%);
    }
    &.med-priority {
      background: $medPriorty-bg;
      border: 2px solid $medPriorityColor;
      color: darken($medPriorityColor, 15%);
    }
    &.low-priority {
      background: $lowPriorty-bg;
      border: 2px solid $lowPriorityColor;
      color: darken($lowPriorityColor, 5%);
    }
    &.event-resolved {
      background: $resolved-bg;
      border: 2px solid $resolvedColor;
      color: $resolvedColor;
    }
  }

  //Event Severity
  .event__severity {
    font-size: .7em;
    text-transform: uppercase;
    font-weight: 700;
    min-width: 103px;
    @include mediaQuery(medium) {
      margin: 0 1em 0 1.5em;
    }
    &.high-priority {
      color: darken($highPriorityColor, 5%);
    }
    &.med-priority {
      color: darken($medPriorityColor, 15%);
    }
    &.low-priority {
      color: darken($lowPriorityColor, 5%);
    }
    &.event-resolved {
      color: $resolvedColor;
    }
  }

  //Event description
  .event__description {
    font-weight: 400;
    margin-left: 1em;
    @include mediaQuery(small) {
      margin-left: 1.5em;
      margin-right: 1em;
    }
    word-break: break-all;
  }

  //Event ID
  .event__id {
    @include fontCourierBold;
    font-size: .9em;
    color: $darkgrey;
    margin-right: 1em;
  }

  .event__timestamp {
    text-align: right;
    @include fontCourierBold;
    font-size: .9em;
    color: $darkgrey;
    max-width: 18em;
    @media (min-width: 1105px) {
      float: right;
    }
  }

  // Event metadata row
  .event__metadata-row {
    max-height: 0;
    overflow: hidden;
    -webkit-transition: 0.5s linear max-height;
    transition: 0.5s linear max-height;
    &.active {
      max-height: 1000px;
      @include mediaQuery(small) {
        max-height: 1000px;
      }
      @include mediaQuery(medium) {
        max-height: 1000px;
      }
    }
  }

  //Event metadata
  .event__metadata {
    height: 200px;
    overflow-y: scroll;
    border: 1px solid $medgrey;
    padding: .5em .5em 0;
    background: $white;
    display: block;
    margin-bottom: 1.5em;
    &::-webkit-scrollbar {
      -webkit-appearance: none;
      width: 7px;
    }
    &::-webkit-scrollbar-thumb {
      border-radius: 4px;
      background-color: rgba(0, 0, 0, .5);
      -webkit-box-shadow: 0 0 1px rgba(255, 255, 255, .5);
    }
  }

  //Event Related Items
  .event__related {
    width: 100%;
  }
  .event__related-label {
    font-weight: 700;
    margin-right: 1.2em;
    padding-top: .3em;
    float: left;
  }
  .event__related-item {
    margin-right: 1em;
    padding-top: .3em;
    display: inline-block;
    float: left;
    clear: both;
  }
  .event__actions {
    margin-left: -1em;
    margin-top: .5em;
    @include mediaQuery(medium) {
      float: right;
      margin-top: -5px;
    }
    .disabled {
      opacity: 0.2;
      pointer-events: none;
      cursor: default;
      text-decoration: none;
    }
    .disabled:hover {
      text-decoration: none;
    }
  }
  .event__icon {
    width: 20px;
    height: 20px;
    font-weight: normal;
    margin-right: .5em;
    margin-top: -3px;
    display: inline-block;
  }
}
//end event-log__events



