@import '~elements-sk/themes/themes';
/*
  Only define deltas from the original theme and global changes from elemets-sk
  elements.
*/

.body-sk.darkmode {
  --primary: var(--light-blue-500);
  --primary-variant: var(--light-blue-200);
  --on-primary-variant: var(--black);
}

.body-sk {
  --secondary: var(--green-500);
  --primary-variant: var(--light-blue-600);

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

  button {
    min-width: auto;
    text-align: center;
    text-transform: none;
    outline: none;
    padding: 4px;
    height: fit-content;
    margin: 8px 0;
  }

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

  multi-select-sk > * {
    background-color: var(--surface);
    border: solid 1px var(--surface);
  }

  multi-select-sk > [selected] {
    background: var(--surface-1dp);
  }

  multi-select-sk > :hover {
    border: var(--surface-1dp) solid 1px;
  }

  select-sk,
  select-sk > * {
    background-color: var(--surface);
    color: var(--on-surface);
  }

  select-sk > [selected] {
    background: var(--surface-1dp);
  }

  select-sk > * {
    border: var(--surface) solid 1px;
  }

  select-sk > :hover {
    border: var(--surface-1dp) solid 1px;
  }

  select-sk > :focus {
    background-color: var(--surface-1dp);
    transition: background-color 0.1s cubic-bezier(0.4, 0, 0.2, 1);
  }

  select-sk > [selected] {
    background-color: var(--surface-1dp);
  }
}

details {
  summary {
    display: inline-block;
    outline: none;
    padding: 4px;
    background: var(--surface);
    color: var(--on-surface);
    border: solid 1px var(--surface-1dp);
    cursor: pointer;
    list-style: none;
    margin: 8px 0;
  }

  summary::-webkit-details-marker {
    display: none;
  }
}

details[open] {
  border: solid 1px var(--on-surface);
  padding: 0 8px 16px 8px;
  background: var(--surface);
  margin: 8px 8px 8px 0;

  summary {
    margin-top: 8px;
    margin-bottom: 8px;
  }
}

/*
   The following styles are for scrollbars. There are some non-standard looking
   styles because it is 2020 and there's still no standard way to style
   scrollbars on a web page.

   https://caniuse.com/#feat=css-scrollbar

   There is currently an editor's draft for styling scrollbars:
   https://drafts.csswg.org/css-scrollbars-1/, but it is only supported by
   FireFox. So set that first.
*/

* {
  scrollbar-color: var(--surface-1dp) var(--background);
}

/* Now set the non-standard styles. Unfortunately the way webpack/cssmin is
   configured currently it will strip the following rules from the output so we
   turn the autoprefixer off.
*/

/* autoprefixer: off */

/* Turn on a 13x13 scrollbar */
::-webkit-scrollbar {
  width: 13px;
  height: 13px;
}

/* Turn off single button up on top and down on bottom */
::-webkit-scrollbar-button:start:decrement,
::-webkit-scrollbar-button:end:increment,
::-webkit-scrollbar-button:vertical:start:increment,
::-webkit-scrollbar-button:vertical:end:decrement {
  display: none;
}

/* Track below and above */
::-webkit-scrollbar-track-piece {
  background-color: var(--background);
  border: solid 1px var(--surface-2dp);
}

/* The thumb itself */
::-webkit-scrollbar-thumb {
  border: solid 1px var(--on-surface);
  background: var(--surface-1dp);
}

/* Handle on hover */
::-webkit-scrollbar-thumb:hover {
  background: var(--surface);
}
