:root {
	--page-bg: #c5cad0;
	--page-shadows: #777;
	--video-bg: #444;
	--link: #f7e773;

	--pane-bg: #686868;
	--pane-title: #eef2f6;
	--pane-title-bg: #686868;
	--pane-link-bg: #5a5a5a;
	--track-seeker: #ddd;
	--track-loading: #aaa;
	--handle-ball-bg: #fff55a66;
	--handle-ball-border: #fff55a;
	--button-bg: #acc8ca;
	--button-text: #333;
	--input-bg: #f6f6ff;

	--modalframe-bg: #fefefe;
	--modal-link: #56f;
	--button-in-tab-bg: #f7f7f7;
	--button-in-tab-text: #888;
	--button-modal-bg: #e4e4e4;
	--button-modal-text: #444;
	--button-screaming-bg: #5be;
	--button-screaming-text: #fff;
	--button-disabled-bg: #ddd;
	--button-disabled-text: #f4f4f4;
	--title-lo: #aaa;
	--title-med: #555;
	--title-hi: #222;
	--tab-even-bg: #eee;
	--tab-odd-bg: #f4f4f4;
	--tab-highlight-bg: #ddf;
}
html { height: 100%; font-size: 10px; }
body {
	height: 100%;
	font-size: 1.5em;
	font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
	margin: 0;
	background: var(--page-bg);
}

title-link:hover, text-button:not(.disabled):not(.loading):hover, icon-button:not(.loading):hover, #top_help:hover,
#lib_list modal-tablerow:not(.chosen):hover > *, handle-ball:not(.inline):hover, modal-link:hover,
mixlist-link:hover, modal-textblock a:hover {
	filter: contrast(0.75) brightness(1.16);
}


/**************   Layout   **************/
#layout {
	display: flex;
	flex-direction: column;
	min-height: 100%;
}
#page {
	width: 100%;
	flex: 1;
	margin: 0 auto;
	padding: 1.7rem 0;
	max-width: min(128rem, 100% - 6rem);
	text-align: center;
}
page-pane {
	display: block;
	margin: 0 0 1.7rem;
	background: var(--pane-bg);
	box-shadow: 0 0 0.4rem var(--page-shadows);
}
#editor_vidout {
	background: var(--video-bg);
	overflow: auto;
}
.novid #editor_video {
	display: none;
}
#editor_video {
	max-height: min(30rem, 45vw);
	display: block;
	margin: 0.7rem auto;
}
#controls {
	display: inline-block;
	text-align: center;
}
pane-title {
	background: var(--pane-title-bg);
	color: var(--pane-title);
	font-weight: 600;
	display: flex;
	justify-content: center;
}
pane-title > * {
	padding: 0.4rem clamp(1rem, 1.4vw, 1.6rem);
}
pane-title > span {
	white-space: nowrap;
	text-overflow: ellipsis;
	overflow: hidden;
}
pane-padzone {
	display: block;
	padding: 2rem 2.5rem 0.5rem;
}
title-link {
	cursor: pointer;
	color: var(--link);
	background: var(--pane-link-bg);
	border-right: 1px solid;
	touch-action: none;
	user-select: none;
}
title-link:first-of-type {
	border-left: 1px solid;
}
.speaker {
	padding-top: 0.6rem;
	padding-bottom: 0;
}
.speaker svg {
	width: 1.4rem;
	height: 1.4rem;
	pointer-events: none;
}
amp-bg {
	position: fixed;
	background: var(--pane-link-bg);
	height: 15rem;
	border: 1px solid var(--link);
	box-shadow: -1px 0 0 var(--link);
	border-top: none;
	border-left: none;
}
amp-bg input {
	width: 12rem;
	height: 1rem;
	transform: rotate(-90deg) translate(50%, -50%);
	transform-origin: 6rem 6rem;
	position: absolute;
	top: 50%;
	left: 50%;
}
.novid #remove_video, .novid .speaker, .novid #download_mux {
	display: none;
}
#load_wall {
	position: absolute;
	top: 0;
	bottom: 0;
	left: 0;
	right: 0;
}
drop-zone {
	position: fixed;
	background: #ddd;
	pointer-events: none;
}
drop-zone div {
	position: absolute;
	pointer-events: none;
	top: 50%;
	left: 50%;
	transform: translate(-50%, -50%);
	font-weight: 600;
	color: #999;
	font-size: 2.4rem;
}



/**************   Top   **************/
#top_bar {
	background: #555;
	display: flex;
	justify-content: flex-end;
}
#logo {
	margin-right: auto;
	padding: 0.8rem 2rem;
	color: #80e1a8;
	font-weight: 700;
	font-size: 1.7rem;
	cursor: default;
}
top-link {
	padding: 0.9rem;
	margin: 0 2rem 0 0;
	font-weight: 600;
	color: var(--link);
	cursor: pointer;
	touch-action: none;
	user-select: none;
}
.welcoming top-link, .welcoming #logo {
	opacity: 0.2;
}



/**************   Foot   **************/
#foot {
	background: #666;
	text-align: center;
}
foot-link {
	display: inline-block;
	padding: 0.8rem;
	margin: 0 1rem;
	color: var(--pane-title);
	cursor: pointer;
	touch-action: none;
	user-select: none;
	opacity: 0.8;
}
.welcoming foot-link {
	opacity: 0.2;
}



/**************   TrackCtrl   **************/

wave-area {
	display: block;
	height: 20rem;
	position: relative;
	overflow: hidden;
}
wave-area.loading::before {
	content: "Loading audio...";
	font-size: 2.5rem;
	color: var(--track-loading);
	position: absolute;
	top: 50%;
	left: 50%;
	transform: translate(-50%, -50%);
}
wave-area canvas {
	position: absolute;
	top: 0;
	left: 0;
	width: 100%;
	height: 100%;
	touch-action: none;
	user-select: none;
}
.welcoming wave-area {
	opacity: 0.1;
}
track-seeker {
	position: absolute;
	top: 0;
	left: 0;
	width: 0.15rem;
	height: 100%;
	background-color: var(--track-seeker);
	pointer-events: none;
}
handle-ball {
	position: absolute;
	top: 50%;
	left: 0;
	width: 3rem;
	height: 3rem;
	border: 0.25rem solid var(--handle-ball-border);
	border-radius: 1.8rem;
	background-color: var(--handle-ball-bg);
	cursor: pointer;
	transform: translate(-50%, -50%);
	touch-action: none;
	user-select: none;
}
handle-ball.inline {
	display: inline-block;
	position: relative;
	cursor: default;
	transform: scale(0.6) translate(0,50%);
	margin: -1.3rem 0 -0.2rem;
}
handle-ball::before {
	content: "";
	position: absolute;
	bottom: 50%;
	right: -12%;
	width: 0;
	height: 0;
	border-style: solid;
	border-width: 0.6rem 0rem 0.6rem 0.8rem;
	border-color: transparent transparent transparent var(--handle-ball-border);
	transform: translate(100%, 50%);
}
handle-ball::after {
	content: "";
	position: absolute;
	bottom: 50%;
	left: -12%;
	width: 0;
	height: 0;
	border-style: solid;
	border-width: 0.6rem 0.8rem 0.6rem 0rem;
	border-color: transparent var(--handle-ball-border) transparent transparent;
	transform: translate(-100%, 50%);
}
transition-tri.inline {
	display: inline-block;
	margin: 0 0.3rem;
	border-style: solid;
	border-width: 0 0.9rem 1.4rem 0.9rem;
	border-color: transparent transparent #ccc transparent;
}



/**************   Buttons   **************/
/* Note: if you replace these with <button>s,
 * be careful with spacebar triggering play/pause
*/
text-button, modal-inputter {
	display: inline-block;
	font-weight: 550;
	line-height: 1;
}
text-button, icon-button {
	background: var(--button-bg);
	border-radius: 0.2rem;
	cursor: pointer;
	touch-action: none;
	user-select: none;
}
text-button {
	padding: 1.2rem 2rem;
	color: var(--button-text);
	margin: 0.8rem;
}
modal-frame text-button, modal-frame label {
	background: var(--button-modal-bg);
	color: var(--button-modal-text);
}
modal-tabbody text-button {
	background: var(--button-in-tab-bg);
	color: var(--button-in-tab-text);
}
text-button.large {
	padding: 1rem 3rem;
}
text-button.screaming {
	background: var(--button-screaming-bg);
	color: var(--button-screaming-text);
}
text-button.disabled {
	color: var(--button-disabled-bg);
	background: var(--button-disabled-text);
	cursor: default;
}
text-button.hidden {
	display: none;
}
icon-button {
	display: inline-block;
	margin: 1.7rem 1.4rem;
}
icon-button svg {
	width: 3rem;
	height: 3rem;
	display: block;
	margin: 0.4rem;
}
text-button.loading, icon-button.loading {
	opacity: 0.3;
	cursor: default;
}
input[type="file"] {
	display: none;
}
pane-padzone > icon-button, pane-padzone > text-button {
	margin-top: 0;
	margin-bottom: 1.7rem;
	vertical-align: middle;
}
slider-box {
	display: grid;
	grid-template-columns: min-content 1fr 5rem;
	color: var(--pane-title);
}
slider-box.hidden {
	display: none;
}
slider-box > * {
	padding: 1rem;
	line-height: 1.2;
}
input[type="range"] {
	min-width: 8rem;
}



/**************   Modals   **************/

modal-bg {
	background-color: rgba(0, 0, 0, 0.35);
	position: fixed;
	top: 0;
	bottom: 0;
	right: 0;
	left: 0;
	cursor: pointer;
}
modal-frame {
	margin: 0 auto;
	background: var(--modalframe-bg);
	position: fixed;
	top: 1.5rem;
	left: 0;
	right: 0;
	width: 87%;
	min-width: 35rem;
	max-width: 54rem;
	border-radius: 0.4rem;
}
modal-frame.fat {
	max-width: 70rem;
	width: 90%;
}
#welcome {
	max-width: 75rem;
	width: 90%;
	top: 0.5rem;
}
modal-title {
	display: block;
	text-align: center;
	padding: 1.7rem;
	border-bottom: 0.1rem solid var(--button-modal-bg);
	font-weight: 500;
	font-size: 1.7rem;
	color: var(--title-hi);
}
modal-scrollable {
	display: block;
	overflow-y: auto;
	max-height: calc(100vh - 4rem);
	/* "top and bottom shadow while scrolling" follows */
	background: linear-gradient(white 30%, rgba(255, 255, 255, 0)), linear-gradient(rgba(255, 255, 255, 0), white 70%) 0 100%, 
	radial-gradient(50% 0, farthest-side, rgba(0, 0, 0, .2), rgba(0, 0, 0, 0)), radial-gradient(50% 100%, farthest-side, rgba(0, 0, 0, .2), rgba(0, 0, 0, 0)) 0 100%;
	background: linear-gradient(white 30%, rgba(255, 255, 255, 0)), linear-gradient(rgba(255, 255, 255, 0), white 70%) 0 100%, 
	radial-gradient(farthest-side at 50% 0, rgba(0, 0, 0, .2), rgba(0, 0, 0, 0)), radial-gradient(farthest-side at 50% 100%, rgba(0, 0, 0, .2), rgba(0, 0, 0, 0)) 0 100%;
	background-repeat: no-repeat;
	background-color: white;
	background-size: 100% 40px, 100% 40px, 100% 14px, 100% 14px;
	background-attachment: local, local, scroll, scroll;
}
modal-scrollable.stunted { max-height: calc(100vh - 12rem); }
modal-textblock {
	display: block;
	margin: 2.3rem 3.7rem;
}
modal-textblock > img {
	display: block;
	margin: 3rem auto;
	width: min(26em,100%);
}
modal-textblock > img.framed {
	width: min(26em, 96%);
	border: 0.5rem solid #eee;
	background: #eee;
}
modal-miniblock {
	display: block;
	margin: 2.3rem 3.7rem;
	text-align: center;
}
modal-miniblock > div {
	display: inline-block;
	text-align: left;
}
modal-separator {
	display: block;
	padding: 0.1rem;
	border-bottom: 0.1rem solid var(--button-modal-bg);
}
modal-vidout {
	display: block;
	margin: 2rem 0;
	text-align: center;
}
modal-vidout video {
	max-width: min(42rem, 100%);
	max-height: max(26rem, 100vh - 41rem, min(100vh - 32rem, 30rem));
}
modal-tabheads {
	display: grid;
	grid-template-columns: 1fr 1fr;
}
modal-tabhead {
	text-align: center;
	padding: 1.2rem 0;
	color: var(--title-lo);
	font-weight: 500;
	cursor: pointer;
	position: relative;
	touch-action: none;
	user-select: none;
}
modal-tabhead.active {
	color: var(--title-med);
}
modal-tabhead.active::after {
	content: "";
	position: absolute;
	bottom: 0;
	left: 50%;
	width: 0;
	height: 0;
	border-style: solid;
	border-width: 0 1rem 1rem 1rem;
	border-color: transparent transparent var(--tab-even-bg) transparent;
	transform: translateX(-50%);
}
modal-tabbodies {
	display: block;
}
modal-tabbody {
	display: none;
}
modal-tabbody.active {
	display: block;
	background: var(--tab-even-bg);
	min-height: 10rem;
}
modal-buttons {
	display: block;
	text-align: right;
	padding: 0.8rem;
	border-radius: 0.4rem;
}
modal-buttons.spaced {
	text-align: center;
	padding-bottom: 2.6rem;
}
modal-buttons.separated {
	text-align: center;
	padding: 1.2rem;
}
#modal_msg, #modal_prog {
	font-size: 1.7rem;
	color: var(--title-lo);
	font-weight: 500;
}
modal-closer {
	position: absolute;
	right: 2.5rem;
	top: 1.5rem;
	width: 2.5rem;
	height: 2.5rem;
	opacity: 0.3;
	cursor: pointer;
}
modal-closer:hover {
	opacity: 1;
}
modal-closer:before, modal-closer:after {
	position: absolute;
	left: 1.25rem;
	content: ' ';
	height: 2.5rem;
	width: 0.2rem;
	background-color: #333;
}
modal-closer:before {
	transform: rotate(45deg);
}
modal-closer:after {
	transform: rotate(-45deg);
}
modal-table {
	display: grid;
}
modal-tablerow {
	display: contents;
}
modal-tablerow > * {
	background: var(--tab-even-bg);
	padding: 0.8rem 2rem;
	touch-action: none;
	user-select: none;
}
modal-tablerow:nth-child(2n) > * {
	background: var(--tab-odd-bg);
}
#lib_list {
	grid-template-columns: auto auto;
}
#lib_list modal-tablerow > * {
	cursor: pointer;
}
liblist-genre {
	color: var(--title-lo);
}
modal-tablerow.chosen > * {
	font-weight: 600;
	background: var(--tab-highlight-bg);
}
#mymix_list {
	grid-template-columns: repeat(6, 1fr);
	margin: 3rem;
}
mixlist-link {
	cursor: pointer;
	font-weight: 600;
	text-align: center;
	grid-column: auto / span 3;
}
mixlist-link.with_vid {
	grid-column: auto / span 2;
}
mixlist-name {
	grid-column: 1 / 7;
	text-align: center;
}
menu-item {
	position: absolute;
	padding: 0.9rem 1.9rem;
	background: var(--button-modal-bg);
	border: 0.1rem solid var(--button-modal-text);
	cursor: pointer;
	touch-action: none;
	user-select: none;
	border-radius: 0.4rem;
}
modal-frame h3 {
	margin-bottom: 0.5rem;
}
modal-frame.scenic h3 {
	text-align: center;
}
modal-link, modal-textblock a {
	text-decoration: none;
	cursor: pointer;
	color: var(--modal-link);
	font-weight: 600;
}
download-options {
	display: grid;
	grid-template-columns: 1fr 3rem 1fr;
	gap: 1rem;
	align-items: center;
}
download-options > div {
	color: var(--title-med);
	text-align: center;
}
download-option {
	text-align: center;
	padding: 1rem;
	border: 0.3rem solid var(--button-modal-bg);
	background: var(--button-in-tab-bg);
}
download-desc, download-cost  {
	display: block;
	margin-bottom: 1rem;
}
download-desc { font-weight: 600; }
download-cost { color: var(--title-med); }
pricing-pt { color: green; }
pricing-howto { display: block; min-height: 6rem; }
pricing-pts {
	display: inline-block;
	text-align: left;
	min-height: 9rem;
}
pricing-options {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 3rem;
}
modal-inputter {
	display: grid;
	grid-template-columns: auto 1fr;
	margin: 2.5rem 0.8rem;
	position: relative;
}
modal-inputter.area { grid-template-columns: 1fr; }
/* https://stackoverflow.com/questions/56370595/glitch */
modal-inputter::after {
	content: '';
	position: absolute;
	left: 0;
	right: 0;
	top: 0;
	bottom: 0;
	border: 0.1rem solid #999;
	pointer-events: none;
	border-radius: 0.3rem;
}
modal-inputter label {
	padding: 1.2rem;
}
modal-inputter input {
	border: none;
	font-size: inherit;
	padding: 1.2rem;
	background-color: var(--input-bg);
}
modal-inputter textarea {
	min-height: 12rem;
	font-family: inherit;
	resize: vertical;
}
inputter-note {
	position: absolute;
	top: 100%;
	right: 0;
	font-size: 1.3rem;
	font-weight: 400;
}
no-break {
	display: inline-block;
}
#uframe, #ufout {
	width: 100%;
	min-height: 20rem;
	margin: 0 auto;
	display: block;
	border: none;
	position: relative;
}
#ufbg {
	position: absolute;
	top: 0;
	left: 0;
	right: 0;
	bottom: 0;
	background-color: var(--modalframe-bg);
}
#ufbg div {
	position: absolute;
	top: 50%;
	left: 50%;
	transform: translate(-50%, -50%);
	font-size: 1.7rem;
	color: var(--title-lo);
	font-weight: 500;
	opacity: 0.5;
	pointer-events: none;
}

@media (max-width: 550px) {
	html { font-size: 9px; }
	download-options { grid-template-columns: 1fr; }
	modal-inputter { grid-template-columns: 1fr; }
	foot-link { margin: 0 -0.3rem; }
}