@import url(~elements-sk/colors.css);

task-driver-sk {
  a {
    color: var(--blue);
  }

  div.step {
    border-style: solid;
    border-width: 0px 0px 1px 5px;
    border-bottom-color: #EEEEEE;
    font-family: sans-serif;
    margin: 2px;
    padding: 10px;
    padding-left: 20px;
  }

  div.SUCCESS {
    border-left-color: var(--green);
  }

  div.FAILURE {
    border-left-color: var(--red);
  }

  div.EXCEPTION {
    border-left-color: var(--purple);
  }

  div.IN_PROGRESS {
    border-left-color: var(--light-orange);
  }

  div.h2 {
    color: var(--blue);
    font-size: 1.3em;
    font-weight: bold;
    margin: 10px;
  }

  div.h4 {
    font-size: 1.1em;
    font-weight: bold;
    margin: 5px;
  }

  .horiz {
    display: inline-block;
    vertical-align: middle;
  }

  .vert {
    display: block;
  }

  div.duration {
    font-size: 0.9em;
  }

  span.expando {
    color: var(--blue);
    cursor: pointer;
    font-family: monospace;
  }

  div.children_link {
    margin-bottom: 5px;
    margin-top: 5px;
  }

  .properties {
    margin-bottom: 15px;
  }

  pre {
    white-space: pre-wrap;
  }

  /**
   * Styling for tables.
   * TODO(borenet): Move these to a common module.
   */
  table {
    border-collapse: collapse;
    display: table;
  }

  tr {
    border-bottom: 1px solid #EEEEEE;
    display: table-row;
  }

  tr:hover {
    background-color: var(--dark-white);
  }

  tr:hover tr:hover {
    background-color: var(--white);
  }

  tr-container {
    display: table-row-group;
  }

  td,th {
    display: table-cell;
    padding: 10px;
  }

  td {
    font-size: 0.813em;
    vertical-align: middle;
  }

  th {
    color: var(--gray);
    font-size: 0.75em;
  }

  number {
    text-align: right;
  }
}
