@import '../styles.scss';

* {
  // We use z=1 as our 'base', so that our row highlighting underlay can exist
  // between the background(body) and content.
  z-index: 1;
}

commits-table-sk {
  background-color: var(--surface);
  color: var(--on-surface);

  .commitsTableContainer {
    display: grid;
    // Make the legend and commit columns shrink to content so with few taskspecs the commits don't
    // awkwardly take up a large portion of the screen.
    grid-template-columns: min-content min-content auto;
    gap: 2px 2px;
  }

  .rowUnderlay {
    display: contents;

    div {
      z-index: 0;
    }

    div:nth-child(odd) {
      background-color: #efefef;
    }
  }

  .task-spec {
    background-color: var(--surface-1dp);
    border-radius: 5px;
    border: 1px solid;
    box-shadow: 0 1px 4px 0 rgba(0, 0, 0, 0.37);
    cursor: pointer;
    height: 20px;
    min-width: 20px;
    justify-content: center;
    text-align: center;
  }

  .commit {
    font-family: monospace;
    font-size: 0.75em;
    height: 16px;
    padding: 2px;
    position: relative;
    cursor: pointer;
  }

  .commit.highlight-revert {
    background-color: var(--error);
    color: var(--on-error);
    fill: var(--on-error);
  }
  .commit.highlight-reland {
    background-color: var(--primary);
    color: var(--on-primary);
    fill: var(--on-primary);
  }

  .legend {
    border-right: 1px solid;
    font-size: 10px;
    min-width: 100px;

    * {
      padding: 5px;
    }
  }

  .controls .horizontal {
    display: flex;
    flex-flow: row wrap;
    align-items: center;
  }

  .commitLabelSelector {
    padding-right: 40px;
    padding-left: 10px;
  }

  .specFilter {
    > * {
      display: inline-block;
    }
    radio-sk {
      margin-right: 0;
    }
  }

  .lastLoaded {
    padding-top: 10px;
  }

  .reloadControls {
    #repoLabel {
      position: relative;
      top: 30px;
      left: 3px;
    }

    select {
      padding: 2px 0px;
      margin-left: 0px;
      width: 180px;
      text-align-last: center;
      text-align: center;
      font-size: 16px;
    }

    input-sk {
      input {
        width: 100px;
      }
      .input-container {
        width: 180px;
      }
    }
  }

  .tiny svg {
    width: 12px;
    height: 12px;
  }

  radio-sk.tiny .box {
    width: 8px;
    height: 8px;
  }

  .icon-right {
    float: right;
  }

  // With the exception of revert/reland icons, we don't want icons interferring with our
  // dialog-opening clicks on tasks, commits, and task specs.
  comment-icon-sk,
  texture-icon-sk,
  block-icon-sk {
    pointer-events: none;
  }

  .tasksTable {
    min-height: 780px;
    grid-column: 2 / 3;
    grid-row: 1 / -1;
    border: solid 1px;
    display: contents;
  }

  .category {
    border: solid 1px;
    padding: 3px;
  }

  .task {
    border-radius: 3px;
    border: solid 1px;
    cursor: pointer;
    text-align: center;
  }

  .multicommit-task {
    display: grid;
    // Lock the rows' height so a comment icon, if present, doesn't skew the individual divs.
    grid-auto-rows: 1fr;

    .task {
      border-radius: initial;
      border: initial;
      border-left: solid 1px;
      border-right: solid 1px;
    }

    .task:first-child {
      border-top: solid 1px;
      border-radius: 3px 3px 0px 0px;
    }

    .task:last-child {
      border-bottom: solid 1px;
      border-radius: 0px 0px 3px 3px;
    }

    .task.dashed-top {
      border-top: dashed 1px;
    }

    .task.dashed-bottom {
      border-bottom: dashed 1px;
    }
  }

  .multicommit-task:hover {
    border-color: red;
    border-radius: 3px;
    border: solid 1px;
    cursor: pointer;
  }

  .grow:hover {
    transform: scale(1.1);
    opacity: 1;
    z-index: 2;
  }

  .grow:hover.bg-success,
  .grow:hover .bg-success {
    background-color: var(--success);
  }

  .grow:hover.bg-failure,
  .grow:hover .bg-failure {
    background-color: var(--failure);
  }

  .grow:hover.bg-mishap,
  .grow:hover .bg-mishap {
    background-color: var(--unexpected);
  }

  .fill-green {
    fill: var(--success);
  }

  .fill-red {
    fill: var(--failure);
  }
}

div.hidden.task {
  visibility: hidden;
}

// Darkmode overrides
.darkmode {
  .rowUnderlay {
    div:nth-child(odd) {
      background-color: var(--surface-2dp);
    }
  }
}
