// Event Log SCSS
#event-log {

  .dropdown__button {
  }
  // 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) {
      max-width: 61%;
      @include fastTransition-all;
    }
  }
}

#event-filter {
  .filter-label {
    color: $darkgrey;
    text-transform: uppercase;
    font-weight: 700;
    font-size: .75em;
    margin-bottom: 3px;
  }
  .event__severity-filter {
    margin-right: 2em;
    margin-bottom: 1em;
    button {
      margin: 3px -3px;
      padding: .6em 2em;
      min-height: 2.1em;
      font-size: .9em;
      font-weight: 700;
      border-radius: 0;
      &.first,
      &.last {
        border-radius: 3px;
      }
      &.last {
        border-left: 0;
      }
    }
    .btn-primary {
      border: 2px solid $primebtn__bg;
    }
  }
  .event__date-filter {
    margin-right: 1.5em;
    color: $darkgrey;
    input {
      width: 170px;
      height: 2.1rem;
    }
    label {
      height: 0;
      text-indent: -9999px;
    }
  }
  .event__status-filter .dropdown__wrapper,
  .event__status-filter .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;
  }
}

// Event Log Events
#event-log__events.row {
  padding-left: 0;
  padding-right: 0;
}

.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: -5px;
      }
    }
  }
  .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 {
    text-transform: capitalize;
    color: black;
    font-size: .9em;
    font-weight: 700;
    position: relative;
    padding: 0 0 1em 2em;
    &:hover {
      text-decoration: underline;
    }
  }
  .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 {
      @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;
  }
  .event__related-item {
    margin-right: 1em;
    padding-top: .3em;
    display: inline-block;
    float: left;
    clear: both;
  }
  .event__actions {
    margin-left: -1em;
    float: right;
  }
  .event__icon {
    width: 20px;
    height: 20px;
    font-weight: normal;
    margin-right: .5em;
    margin-top: -3px;
    display: inline-block;
  }
}
//end event-log__events



