@charset "utf-8";

:root {
	--baseContentWidth: 750px;
	--radius: 8px;
	--marginFull: 16px;
	--marginHalf: 10px;

	--margin: var(--marginFull);

	@media (max-width: 500px) {
		--margin: var(--marginHalf);
	}
}

::selection {
	color: #fff;
	background-color: var(--accent);
} 

html {
	touch-action: manipulation;
	background-color: var(--bg);
	background-attachment: fixed;
	background-size: cover;
	background-position: center;
	color: var(--fg);
	overflow: auto;

	&, * {
		scrollbar-color: var(--scrollbarHandle) var(--panel);
		scrollbar-width: thin;

		&:hover {
			scrollbar-color: var(--scrollbarHandleHover) var(--panel);
		}

		&:active {
			scrollbar-color: var(--accent) var(--panel);
		}

		&::-webkit-scrollbar {
			width: 6px;
			height: 6px;
		}

		&::-webkit-scrollbar-track {
			background: var(--panel);
		}

		&::-webkit-scrollbar-thumb {
			background: var(--scrollbarHandle);

			&:hover {
				background: var(--scrollbarHandleHover);
			}

			&:active {
				background: var(--accent);
			}
		}
	}

	&.f-small {
		font-size: 0.9em;
	}

	&.f-large {
		font-size: 1.1em;
	}

	&.f-veryLarge {
		font-size: 1.2em;
	}
}

html.changing-theme {
	&, * {
		transition: background 1s ease !important;
	}
}

body {
	overflow-wrap: break-word;
}

html, body {
	margin: 0;
	padding: 0;
	scroll-behavior: smooth;
	text-size-adjust: 100%;
	font-family: Roboto, HelveticaNeue, Arial, sans-serif;
}

a {
	text-decoration: none;
	cursor: pointer;
	color: inherit;
	tap-highlight-color: transparent;
	-webkit-tap-highlight-color: transparent;

	&:hover {
		text-decoration: underline;
	}
}

textarea, input {
	tap-highlight-color: transparent;
	-webkit-tap-highlight-color: transparent;
}

optgroup, option {
	background: var(--panel);
	color: var(--fg);
}

hr {
	margin: var(--margin) 0 var(--margin) 0;
	border: none;
	height: 1px;
	background: var(--divider);
}

._noSelect {
	user-select: none;
	-webkit-user-select: none;
	-webkit-touch-callout: none;
}

._ghost {
	&, * {
		@extend ._noSelect;
		pointer-events: none;
	}
}

._modalBg {
	position: fixed;
	top: 0;
	left: 0;
	width: 100%;
	height: 100%;
	background: var(--modalBg);
	backdrop-filter: var(--modalBgFilter);
}

._shadow {
	box-shadow: 0px 4px 32px var(--shadow) !important;
}

._button {
	appearance: none;
	padding: 0;
	margin: 0; // for Safari
	background: none;
	border: none;
	cursor: pointer;
	color: var(--fg);
	touch-action: manipulation;
	tap-highlight-color: transparent;
	-webkit-tap-highlight-color: transparent;
	font-size: 1em;

	&, * {
		@extend ._noSelect;
	}

	* {
		pointer-events: none;
	}

	&:focus {
		outline: none;
	}

	&:disabled {
		opacity: 0.5;
		cursor: default;
	}
}

._buttonPrimary {
	@extend ._button;
	color: #fff;
	background: var(--accent);

	&:not(:disabled):hover {
		background: var(--X8);
	}

	&:not(:disabled):active {
		background: var(--X9);
	}
}

._textButton {
	@extend ._button;
	color: var(--accent);

	&:not(:disabled):hover {
		text-decoration: underline;
	}
}

._inputs {
	display: flex;
	margin: 32px 0;

	&:first-child {
		margin-top: 8px;
	}

	&:last-child {
		margin-bottom: 8px;
	}

	> * {
		flex: 1;
		margin: 0 !important;

		&:not(:first-child) {
			margin-left: 8px !important;
		}

		&:not(:last-child) {
			margin-right: 8px !important;
		}
	}
}

._panel {
	//position: relative;
	//z-index: 1;
	background: var(--panel);
	border-radius: var(--radius);
	//border: var(--panelBorder);
	box-shadow: var(--panelShadow);
	overflow: hidden;
}

._card {
	@extend ._panel;

	> ._title {
		margin: 0;
		padding: 22px 32px;
		font-size: 1.1em;
		border-bottom: solid 1px var(--panelHeaderDivider);
		font-weight: bold;
		background: var(--panelHeaderBg);
		color: var(--panelHeaderFg);

		@media (max-width: 500px) {
			padding: 16px;
			font-size: 1em;
		}
	}

	> ._content {
		padding: 32px;

		@media (max-width: 500px) {
			padding: 16px;
		}

		&._noPad {
			padding: 0 !important;
		}

		& + ._content {
			border-top: solid 1px var(--divider);
		}
	}

	> ._footer {
		border-top: solid 1px var(--divider);
		padding: 24px 32px;

		@media (max-width: 500px) {
			padding: 16px;
		}
	}
}

._close_ ._list_ > * {
	border: none;
	border-bottom: solid 1px var(--divider);
	border-radius: 0;
	box-shadow: none;
	margin: 0 !important;
}

._loadMore {
	@extend ._panel;
	@extend ._button;
	width: 100%;
	padding: 12px 0;
}

._borderButton {
	@extend ._button;
	display: block;
	width: 100%;
	padding: 10px;
	box-sizing: border-box;
	text-align: center;
	border: solid 1px var(--divider);
	border-radius: var(--radius);

	&:active {
		border-color: var(--accent);
	}
}

._popup {
	background: var(--panel);
	border-radius: var(--radius);
}

._section {
	padding: var(--section-padding, 32px);

	&:empty {
		display: none;
	}

	&:not(:empty) + ._section {
		border-top: solid 1px var(--divider);
	}

	@media (max-width: 500px) {
		padding: var(--section-padding, 10px);

		> ._title {
			font-size: 1.1em;
			font-weight: bold;
		}
	}

	> ._title,
	> ._content {
		box-sizing: border-box;
		max-width: var(--baseContentWidth);
		margin: 0 auto;
	}

	> ._title {
		margin-bottom: 24px;
		font-size: 1.25em;
		font-weight: bold;
	}

	&._fitBottom {
		padding-bottom: 0;
	}
}

._narrow_ ._section {
	> ._title {
		padding: 8px;
		font-size: 1em;
	}
}

._narrow_ ._card {
	> ._title {
		padding: 16px;
		font-size: 1em;
	}

	> ._content {
		padding: 16px;
	}

	> ._footer {
		padding: 16px;
	}
}

._acrylic {
	background: var(--acrylicPanel);
	-webkit-backdrop-filter: blur(10px);
	backdrop-filter: blur(10px);
}

._vMargin {
	& + ._vMargin {
		margin-top: var(--margin);
	}
}

._table {
	> ._row {
		display: flex;

		&:not(:last-child) {
			margin-bottom: 16px;

			@media (max-width: 500px) {
				margin-bottom: 8px;
			}
		}

		> ._cell {
			flex: 1;

			> ._label {
				font-size: 80%;
				opacity: 0.7;

				> ._icon {
					margin-right: 4px;
					display: none;
				}
			}
		}
	}
}

._fullinfo {
	padding: 64px 32px;
	text-align: center;

	> img {
		vertical-align: bottom;
		height: 128px;
		margin-bottom: 16px;
		border-radius: 16px;
	}
}

._keyValue {
	display: flex;

	> * {
		flex: 1;
	}
}

._link {
	color: var(--link);
}

._caption {
	font-size: 0.8em;
	opacity: 0.7;
}

._code {
	background: #2d2d2d;
	color: #ccc;
	font-family: Fira code, Fira Mono, Consolas, Menlo, Courier, monospace;
	font-size: 14px;
	line-height: 1.5;
	padding: 5px;
}

.prism-editor__textarea:focus {
	outline: none;
}

.zoom-enter-active, .zoom-leave-active {
	transition: opacity 0.5s, transform 0.5s !important;
}
.zoom-enter-from, .zoom-leave-to {
	opacity: 0;
	transform: scale(0.9);
}

.zoom-in-top-enter-active,
.zoom-in-top-leave-active {
	opacity: 1;
	transform: scaleY(1);
	transition: transform 300ms cubic-bezier(0.23, 1, 0.32, 1), opacity 300ms cubic-bezier(0.23, 1, 0.32, 1);
	transform-origin: center top;
}
.zoom-in-top-enter-from,
.zoom-in-top-leave-active {
	opacity: 0;
	transform: scaleY(0);
}

@keyframes blink {
	0% { opacity: 1; transform: scale(1); }
	30% { opacity: 1; transform: scale(1); }
	90% { opacity: 0; transform: scale(0.5); }
}

@keyframes anime-spin {
	0% { transform: rotate(0deg); }
	100% { transform: rotate(360deg); }
}

@keyframes anime-jump {
	0% { transform: translateY(0); }
	25% { transform: translateY(-16px); }
	50% { transform: translateY(0); }
	75% { transform: translateY(-8px); }
	100% { transform: translateY(0); }
}

@keyframes anime-tada {
	from {
		transform: scale3d(1, 1, 1);
	}

	10%,
	20% {
		transform: scale3d(0.9, 0.9, 0.9) rotate3d(0, 0, 1, -3deg);
	}

	30%,
	50%,
	70%,
	90% {
		transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, 3deg);
	}

	40%,
	60%,
	80% {
		transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, -3deg);
	}

	to {
		transform: scale3d(1, 1, 1);
	}
}

@keyframes anime-rubberBand {
  from {
    transform: scale3d(1, 1, 1);
  }

  30% {
    transform: scale3d(1.25, 0.75, 1);
  }

  40% {
    transform: scale3d(0.75, 1.25, 1);
  }

  50% {
    transform: scale3d(1.15, 0.85, 1);
  }

  65% {
    transform: scale3d(0.95, 1.05, 1);
  }

  75% {
    transform: scale3d(1.05, 0.95, 1);
  }

  to {
    transform: scale3d(1, 1, 1);
  }
}
