* {
	box-sizing: border-box;
}

:root {
	--fore: #fff;
	--back: #000;
	--controls-size: 72px;
	--controls-padding: calc(var(--controls-size) * 0.15);
	--controls-gap: 16px;
	--release-button-size: calc(var(--controls-size) * 1.05);
	--release-button-color: #f00;
	--image-list-width: 200px;
	--image-list-padding: 10px;
	--image-list-gap: 10px;
}

html,
body {
	margin: 0;
	padding: 0;
	width: 100vw;
	height: 100svh;
	color: var(--fore);
	background: var(--back);
	overflow: hidden;
	user-select: none;
}

body {
	display: flex;
	flex-direction: column;
}

.app {
	flex: 1;
	display: flex;
}
.app.portrait {
	flex-direction: column;
}
.app.landscape {
	flex-direction: row;
}

.image-container {
	flex: 1;
	position: relative;
}

.source {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	object-fit: contain;
}

.camera {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	object-fit: contain;
}

.controls {
	display: flex;
	justify-content: space-between;
	gap: var(--controls-gap);
	padding: var(--controls-padding);
}
.app.portrait .controls {
	flex-direction: row;
	border-top: 1px solid var(--fore);
}
.app.landscape .controls {
	flex-direction: column;
	border-left: 1px solid var(--fore);
}

.button {
	appearance: none;
    vertical-align: top;
	width: var(--controls-size);
	height: var(--controls-size);
	padding: 0;
	color: var(--fore);
	background: transparent;
	border: 1px solid var(--fore);
	border-radius: 20%;
	cursor: pointer;
}

.release-button {
	box-sizing: border-box;
	margin: calc((var(--controls-size) - var(--release-button-size)) / 2);
	width: var(--release-button-size);
	height: var(--release-button-size);
	border-radius: 50%;
	color: var(--release-button-color);
	background-color: var(--release-button-color);
	border: calc(var(--release-button-size) / 10) solid white;
	cursor: pointer;
}

.last-image .button {
	overflow: hidden;
}
.last-image .button img {
	width: 100%;
	height: 100%;
	object-fit: cover;
}

.image-list {
	position: absolute;
	z-index: 1;
	display: flex;
	gap: var(--image-list-gap);
	padding: var(--image-list-padding);
	background: var(--back);
	transition: transform 0.3s ease-in-out;
}
.image-list.open {
	transform: none !important;
}
.app.portrait .image-list {
	flex-direction: column;
	width: calc(var(--image-list-width) + 1px);
	right: 0;
	top: 0;
	bottom: calc(var(--controls-size) + 2 * var(--controls-padding) + 1px);
	border-left: 1px solid var(--fore);
	transform: translateX(100%);
	overflow-y: auto;
}
.app.landscape .image-list {
	flex-direction: row;
	height: calc(var(--image-list-width) + 1px);
	left: 0;
	right: calc(var(--controls-size) + 2 * var(--controls-padding) + 1px);
	bottom: 0;
	border-top: 1px solid var(--fore);
	transform: translateY(100%);
	overflow-x: auto;
}

.image-list a {
	border: 1px solid var(--fore);
}
.image-list img {
	vertical-align: top;
	width: calc(var(--image-list-width) - 2 * var(--image-list-padding) - 2px);
	height: calc(var(--image-list-width) - 2 * var(--image-list-padding) - 2px);
	object-fit: cover;
}
