body {
	margin: 0;
	padding: 0;
	color: var(--foreground);
	background: url('bg.jpeg');
	background-size: cover;
	font-family: sans-serif;
	height: 100%;
	overflow: hidden;
	font-size: 14px;
}

#wrapper {
	overflow-x: hidden;
	overflow-y: auto;
	width: 100%;
	height: 100%;
}

h1, h2, h3, h4, h5, h6 {
	color: var(--color1);
	margin-top: 10px;
	margin-bottom: 0;
}

h1 {
	margin-top: 0;
	font-size: 24px;
}

h2 {
	color: var(--color2);
}

p {
	margin-top: 2px;
}

a {
	color: var(--color2);
}

strong {
	color: var(--color4);
}

em {
	color: var(--color3);
}

pre {
	margin: 0;
}

pre > code {
	border: 1px solid;
}

article {
	max-width: 1024px;
	min-height: 128px;
	margin: 25px auto;
	padding: 20px;
	background: color-mix(in srgb, var(--background) 90%, transparent);
	box-shadow: 5px 5px 10px rgba(0, 0, 0, 0.9);
}

code.block {
	display: block;
}

img {
	max-width: 100%;
}

/* Demo */

#demo-resize, #demo-dct {
	visibility: hidden;
}

#demo-resize.visible, #demo-dct.visible {
	visibility: visible;
}

#base .image-original img {
	max-width: 256px;
	min-width: 256px;
}

/* Resize demo */

#resize {
	position: relative;
	height: 512px;
	width: 100%;
	transition: height 2s linear;
}

#resize.resize {
	height: 256px;
}

#resize .image-original {
	position: absolute;
	width: 100%;
	height: 512px;
}

#resize .image-original img {
	max-height: 50vh;
	min-height: 257px;
	max-width: 100%;
	min-width: 257px;
	/* height: 512px; */
}

#resize-original {
	position: relative;
	height: 512px;
}

#resize-original img {
	position: absolute;
	max-width: 90vw;
	max-height: 512px;
	min-width: 257px;
	min-height: 257px;
	opacity: 1;
	transition:
		width 2s linear,
		height 2s linear,
		filter 3s linear 2s,
		opacity 3s ease-in 5s;
}

#resize.resize #resize-original img {
	width: 256px !important;
	height: 256px !important;
	filter: grayscale(1) blur(10px);
	opacity: 0;
}

#resize-original img.grayscale {
	filter: grayscale(1) blur(10px);
}

#resize-original img.fade {
	opacity: 0;
}

#image-resize img {
	width: 256px;
	height: 256px;
	image-rendering: pixelated;
	image-rendering: -moz-crisp-edges;
}

#image-dct {
	margin-left: 32px;
	display:grid;
	grid-template-columns: repeat(8, 32px);
}

#image-dct > div {
	height: 32px;
	line-height:32px;
	font-size: 11px;
	text-align: center;
	border: 1px solid var(--color1);
	box-sizing: border-box;
}

.similarity-example {
	display: flex;
	flex-flow: row nowrap;
	align-items: flex-end;
}

figure {
	margin: 10px;
	width: 50%;
}

/* Loader */ 

#loader.show {
  border-radius: 50%;
  width: 256px;
  height: 256px;
  font-size: 10px;
  position: fixed;
  z-index: 99;
  top: calc(50vh - 128px);
  left: calc(50vw - 128px); 
  border: 16px solid transparent;
  border-top: 16px solid darkred;
  transform: translateZ(0);
  animation: loader 2s infinite ease-in-out;
}

@keyframes loader {
  0% {
    transform: rotate(0deg);
  }
  50% {
    transform: rotate(360deg);
  }
  100% {
    transform: rotate(360deg);
  }
}