/* Global variables */
:root {
  --font-size: 16px;
  --border-width: 1px;
  --white-color: #fff;
  --light-color: #ccc;
  --dark-color: #666;
  --black-color: #000;
  --done-color: #6f3;
  --warn-color: #f00;
}

/* Scrollbar */
::-webkit-scrollbar {
  width: .5em;
  height: .5em;
}
::-webkit-scrollbar-track:horizontal {
  background: -webkit-gradient(linear, left top, left bottom, color-stop(40%, transparent), color-stop(40%, var(--black-color)), color-stop(60%, transparent));
  background: -webkit-linear-gradient(transparent 40%, var(--black-color) 40% 60%, transparent 60%);
  background: linear-gradient(transparent 40%, var(--black-color) 40% 60%, transparent 60%);
}
::-webkit-scrollbar-track:vertical {
  background: -webkit-gradient(linear, left top, right top, color-stop(40%, transparent), color-stop(40%, var(--black-color)), color-stop(60%, transparent));
  background: -webkit-linear-gradient(left, transparent 40%, var(--black-color) 40% 60%, transparent 60%);
  background: linear-gradient(90deg, transparent 40%, var(--black-color) 40% 60%, transparent 60%);
}
::-webkit-scrollbar-thumb {
  border-radius: .5em;
  background: var(--light-color);
}
::-webkit-scrollbar-thumb:hover {
  background: var(--white-color);
}

/* Input box & button */
input,
button {
  padding: .2em .5em;
  outline: none;
}
input {
  border: inherit;
  border-color: var(--border-color);
  border-width: var(--border-width);
  color: inherit;
  color: var(--font-color);
}
input::-webkit-input-placeholder {
  color: inherit;
  color: var(--font-color);
  opacity: .5;
}
input:-ms-input-placeholder {
  color: inherit;
  color: var(--font-color);
  opacity: .5;
}
input::-ms-input-placeholder {
  color: inherit;
  color: var(--font-color);
  opacity: .5;
}
input::placeholder {
  color: inherit;
  color: var(--font-color);
  opacity: .5;
}
input::-moz-selection {
  background: var(--light-color);
  color: var(--white-color);
}
input::selection {
  background: var(--light-color);
  color: var(--white-color);
}
button {
  border: inherit;
  border-color: var(--border-color);
  border-width: var(--border-width);
  background: var(--border-color);
  color: inherit;
  color: var(--font-color);
}
button:disabled {
  opacity: .5;
}

/* Frame */
#app {
  position: fixed;
  top: 0;
  right: 0;
  bottom: 0;
  left: 0;
  background: var(--white-color);
  font-size: var(--font-size);
  font-family: arial;
  line-height: 1.25em;
  color: var(--black-color);
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-orient: vertical;
  -webkit-box-direction: normal;
  -ms-flex-flow: column;
  flex-flow: column;
  -webkit-user-select: none;
  -moz-user-select: none;
  -ms-user-select: none;
  user-select: none;
}

/* All images */
#app img {
  -webkit-filter: blur(var(--blur-value)) grayscale(var(--gray-value));
  filter: blur(var(--blur-value)) grayscale(var(--gray-value));
}
#app img:hover {
  -webkit-filter: none;
  filter: none;
}

/* Top bar */
#bar {
  position: relative;
  height: 10%;
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-pack: center;
  -ms-flex-pack: center;
  justify-content: center;
  -webkit-box-align: end;
  -ms-flex-align: end;
  align-items: flex-end;
}

/* Loading status */
#bar .status {
  position: absolute;
  top: 0;
  left: 0;
  margin: .5em;
  font-size: .75em;
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-orient: vertical;
  -webkit-box-direction: normal;
  -ms-flex-flow: column;
  flex-flow: column;
}

/* Loading progress */
#bar .status .progress {
  border-color: var(--light-color);
  color: var(--light-color);
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-orient: horizontal;
  -webkit-box-direction: normal;
  -ms-flex-flow: row;
  flex-flow: row;
  -webkit-box-align: center;
  -ms-flex-align: center;
  align-items: center;
}
#bar .status .progress:hover {
  border-color: var(--dark-color);
  color: var(--dark-color);
}
#bar .status .progress .bar {
  position: relative;
  margin: 0 .5em;
  width: 10em;
  height: .4em;
  border-radius: .25em;
  border-style: solid;
  border-width: var(--border-width);
  background: var(--white-color);
  overflow: hidden;
}
#bar .status .progress .bar::before {
  content: '';
  position: absolute;
  top: 0;
  bottom: 0;
  left: 0;
  width: var(--prog-size);
  background: var(--light-color);
}
#bar .status .progress.done .bar::before {
  background: var(--done-color);
}

/* Image per page */
#bar .status .perpage {
  --border-color: var(--light-color);
  --font-color: var(--light-color);

  border: 0 solid var(--border-color);
  color: var(--font-color);
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-orient: horizontal;
  -webkit-box-direction: normal;
  -ms-flex-flow: row;
  flex-flow: row;
  -webkit-box-align: center;
  -ms-flex-align: center;
  align-items: center;
}
#bar .status .perpage:hover {
  --border-color: var(--dark-color);
  --font-color: var(--dark-color);
}
#bar .status .perpage::before {
  content: attr(title)':';
  color: inherit;
}
#bar .status .perpage input {
  margin: 0 .5em;
  width: 2.5em;
  font-size: .8em;
}

/* Custom URL */
#bar .custom {
  --border-color: var(--light-color);
  --font-color: var(--light-color);

  padding: .5em 0;
  border: 0 solid var(--border-color);
  color: var(--font-color);
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-orient: horizontal;
  -webkit-box-direction: normal;
  -ms-flex-flow: row;
  flex-flow: row;
}
#bar .custom:hover {
  --border-color: var(--dark-color);
  --font-color: var(--dark-color);
}
#bar .custom.hide {
  display: none;
}
#bar .custom button {
  margin: 0 calc(-1 * var(--border-width));
  color: var(--white-color);
}

/* Image style config */
#bar .config {
  position: absolute;
  top: 0;
  right: 0;
  padding: .5em;
  max-height: 100%;
  font-size: .85em;
  color: var(--dark-color);
}
#bar .config [data-type] {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-orient: horizontal;
  -webkit-box-direction: normal;
  -ms-flex-flow: row;
  flex-flow: row;
  -webkit-box-pack: end;
      -ms-flex-pack: end;
          justify-content: flex-end;
}
#bar .config [data-type]::before {
  content: attr(data-type);
  text-transform: capitalize;
  vertical-align: middle;
}
#bar .config [data-type] input[type="range"] {
  position: relative;
  outline: none;
  background: none;
  vertical-align: middle;
  -moz-appearance: none;
  appearance: none;
  -webkit-appearance: none;
}
#bar .config [data-type] input[type="range"]::-webkit-slider-runnable-track {
  position: relative;
  height: 20%;
  background: var(--light-color);
  overflow: visible;
}
#bar .config [data-type] input[type="range"]::-webkit-slider-thumb {
  position: relative;
  top: 50%;
  -webkit-transform: translateY(-50%);
  transform: translateY(-50%);
  width: .75em;
  height: .75em;
  border-radius: 50%;
  background: var(--light-color);
  appearance: none;
  -webkit-appearance: none;
}
#bar .config [data-type] input[type="range"]:hover::-webkit-slider-thumb,
#bar .config [data-type] input[type="range"]:focus::-webkit-slider-thumb {
  background: var(--dark-color);
}

/* Page list */
#page {
  padding: .25em 0;
  border: .5em solid transparent;
  border-top-width: 0;
  background: var(--dark-color);
  font-size: .7em;
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-orient: horizontal;
  -webkit-box-direction: normal;
  -ms-flex-flow: row;
  flex-flow: row;
  overflow-x: auto;
  scroll-behavior: smooth;
}
#page::before,
#page::after {
  content: '';
  min-width: .25em;
}
#page [data-start] {
  margin: .3em;
  padding: .1em .3em;
  background: var(--light-color);
  text-align: center;
  opacity: .25;
}
#page [data-start]:hover,
#page [data-start].focused {
  opacity: 1;
}
#page [data-start].focused {
  background: var(--white-color);
}

/* Image list */
#gallery {
  position: relative;
  border: .5em solid transparent;
  background: var(--dark-color);
  -webkit-box-flex: 1;
  -ms-flex: 1 1;
  flex: 1 1;
}
#gallery .list {
  position: absolute;
  top: 0;
  right: 0;
  bottom: 0;
  left: 0;
  padding: 0 1em;
  padding-bottom: 5em;
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -ms-flex-wrap: wrap;
  flex-wrap: wrap;
  -ms-flex-pack: distribute;
  justify-content: space-around;
  -ms-flex-line-pack: start;
  align-content: flex-start;
  overflow-y: auto;
}
#gallery .list .wrap {
  margin: .5em .25em;
  width: auto;
  height: 10em;
  border: var(--border-width) solid var(--black-color);
  display: inline-block;
  overflow: hidden;
}
#gallery .list .wrap img {
  width: auto;
  max-height: 100%;
}

/* Large image box */
#highlight {
  position: fixed;
  top: 0;
  right: 0;
  bottom: 0;
  left: 0;
  background: rgba(0, 0, 0, .75);
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  z-index: 1;
  opacity: 0;
  pointer-events: none;
  -webkit-transition: opacity .25s linear;
  -o-transition: opacity .25s linear;
  transition: opacity .25s linear;
}
#highlight.show {
  opacity: 1;
  pointer-events: all;
}
#highlight img {
  margin: auto;
  max-width: 80%;
  max-height: 80%;
  -webkit-transform: translateY(-5em);
  -ms-transform: translateY(-5em);
  transform: translateY(-5em);
  -webkit-transition: -webkit-transform .25s ease;
  transition: -webkit-transform .25s ease;
  -o-transition: transform .25s ease;
  transition: transform .25s ease;
  transition: transform .25s ease, -webkit-transform .25s ease;
}
#highlight.show img {
  -webkit-transform: translateY(0);
  -ms-transform: translateY(0);
  transform: translateY(0);
}