@import url('https://fonts.googleapis.com/css?family=Roboto:300,400,500,700,400italic|Roboto+Mono:400,500|Material+Icons');

@import '~elements-sk/themes/themes';
body {
  font-family: Roboto, sans-serif;
  font-size: 12px;
  margin: 0;
  padding: 0;

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

  section {
    margin: 1rem;
  }

  section li {
    line-height: 1.4rem;
    max-width: 30rem;
    overflow-wrap: break-word;
  }

  section p {
    font-style: italic;
  }

  header,
  header a {
    padding: 0.4rem;
    color: var(--on-surface);
    background: var(--surface-1dp);
    font-size: 1.2rem;
  }

  header {
    border-bottom: solid thin var(--on-surface);
    display: flex;
    justify-content: space-between;
  }

  a {
    text-decoration: underline;
    color: var(--primary);
  }

  form.search {
    display: block;
    margin: 1rem;

    label {
      margin: 0.4rem 0;
    }

    .range label {
      display: block;
    }

    .value {
      display: block;
    }

    h3 {
      font-size: 1.2rem;
    }

    .custom {
      margin-left: 2rem;
    }
  }

  main {
    display: flex;
    flex-direction: row;
    flex-wrap: wrap;
  }

  main details {
    position: absolute;
    top: 56px;
    left: 1rem;
    background: var(--surface);
  }

  main summary {
    background: var(--background);
  }

  main details h2 {
    margin-left: 1rem;
  }

  main.search {
    justify-content: center;

    > section {
      margin: 0 4rem;
    }
  }

  li form {
    display: inline-block;
  }

  li.hidden {
    display: none;
  }

  li button {
    font-weight: bold;
    font-size: 110%;
    border-style: ridge;
    margin-bottom: 2px;
  }

  /* Hide the buttons that toggle the hidden state of an Artifact by default. */
  button.hidden,
  button.nothidden {
    display: none;
    min-width: 0;
    text-align: center;
    text-transform: none;
    outline: none;
    padding: 4px;
    height: 26px;
  }

  button.hidden {
    background: var(--error);
    color: var(--on-error);
  }

  button.nothidden {
    background: var(--surface);
    color: var(--primary);
  }

  /* When are in edit mode then display the correct buttons for toggling hidden
   state. */
  main.edit-mode button.nothidden {
    display: inline-block;
  }

  main.edit-mode li.hidden button.hidden {
    display: inline-block;
  }

  main.edit-mode li.hidden button.nothidden {
    display: none;
  }

  main.edit-mode li.hidden {
    display: list-item;
  }

  .edit-toggle {
    position: absolute;
    top: 56px;
    right: 1rem;
    padding: 3px;
  }

  main.edit-mode .edit-toggle {
    border-style: inset;
  }

  .edit-toggle input {
    display: none;
  }
}
