@import '../../../elements-sk/modules/styles/buttons';
@import '../themes/themes.scss';

cluster-summary2-sk {
  #status button {
    margin-right: 8px;
  }

  .actions button {
    min-width: 0;
    text-transform: none;
    padding: 8px;
    border: solid var(--on-surface) 1px;
    margin: 0 0 8px 8px;
  }

  input {
    color: var(--on-surface);
    background: var(--surface);
    border: solid 1px var(--on-surface);
  }

  #status.disabled {
    opacity: 0.5;
  }

  .regression {
    padding: 3px 6px;
    margin-bottom: 0.5em;
    font-size: 110%;
  }

  .high {
    background: var(--failure);
    color: var(--on-failure);
  }

  .low {
    background: var(--success);
    color: var(--on-success);
  }

  @media (max-width: 600px) {
    plot-simple-sk {
      display: none;
    }
  }

  .wordCloudCollapse[closed] {
    display: none;
  }

  .wordCloudCollapse {
    display: block;
  }

  .disabledMessage {
    display: none;
  }

  #status {
    border: solid var(--light-gray) 1px;
    display: flex;
    flex-flow: wrap column;

    triage2-sk {
      margin: 8px;
    }
  }

  #status > button {
    margin: 8px;
  }

  #status.disabled .disabledMessage {
    display: block;
  }

  #status.hidden,
  #permalink.hidden {
    display: none;
  }

  #rangelink,
  #permalink {
    color: var(--primary);
    margin: 1em;
  }

  input {
    padding: 0.6em;
    margin: 0.6em;
  }

  .labelled {
    margin-right: 2em;
  }

  commit-detail-panel-sk {
    margin: 0.6em;
  }

  .regression {
    grid-area: regression;
  }

  .stats {
    display: flex;
    flex-flow: wrap row;
    grid-area: stats;
    margin-left: 8px;
  }

  .plot {
    grid-area: plot;
    margin: 1em;
    display: block;
    width: 800px;
    height: 250px;
  }

  #status {
    grid-area: status;
    width: 20em;
  }

  #commits {
    grid-area: commits;
  }

  .actions {
    grid-area: actions;
  }

  .wordCloudCollapse {
    grid-area: cloud;
  }

  collapse-sk {
    margin: 8px;
  }

  display: grid;
  grid-template-columns: 1fr auto;
  grid-template-areas:
    'regression regression'
    'stats      stats'
    'plot       status'
    'commits    commits'
    'actions    actions'
    'cloud      cloud';
}
