// Event Log SCSS
#event-log {

  // 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;
  }
}

.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: 4.5em;
      margin-right: 1em;
    }
    word-break: break-all;
  }

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

  .event__timestamp {
    @include fontCourierBold;
    font-size: .9em;
    color: $darkgrey;
    @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;
    }
  }
  .event__icon {
    width: 20px;
    height: 20px;
    font-weight: normal;
    margin-right: .5em;
    margin-top: -3px;
    display: inline-block;
  }
}
//end event-log__events



