  @-webkit-keyframes rotation {
	from {
	  -webkit-transform: rotate(0deg);
	}

	to {
	  -webkit-transform: rotate(360deg);
	}
  }

  @-moz-keyframes rotation {
	from {
	  -moz-transform: rotate(0deg);
	}

	to {
	  -moz-transform: rotate(360deg);
	}
  }

  @-o-keyframes rotation {
	from {
	  -o-transform: rotate(0deg);
	}

	to {
	  -o-transform: rotate(360deg);
	}
  }

  @keyframes rotation {
	from {
	  transform: rotate(0deg);
	}

	to {
	  transform: rotate(360deg);
	}
  }

  html {
	background: #060612;
  }

  body {
	font-family: arial;
	margin: 0;
	padding: 0;
	min-height: 100vh;
	min-height: -webkit-fill-available;
	min-height: fill-available;
	min-height: 100svh; /* Otherwise contents can be covered by an address bar in Safari on iOS 15 */
	min-width: 100vw;
	max_width: 960px;
	max-height: 540px;
	background: radial-gradient(
	  56.63% 56.63% at 50% 43.37%,
	  #1c1726 0%,
	  #060612 100%
	);
	display: flex;
	flex-direction: column;
	overflow-x: hidden;
	place-items: center;
  }

  body.scrollingDisabled {
	overflow: hidden;
  }

  .emscripten {
	padding-right: 0;
	display: block;
  }

  div.emscripten {
	text-align: center;
  }

  /* the canvas *must not* have any border or padding, or mouse coords will be wrong */
  canvas.emscripten {
	display: none;
	border: 0px none;
	background-color: black;
	position: relative;
	transition: opacity 5s ease-in;
	-webkit-transition: opacity 5s ease-in;
	opacity: 0;
	filter: blur(0) grayscale(0);
	margin-top: auto;
	margin-bottom: auto;
	image-rendering: optimizeSpeed;             /* Older versions of FF          */
	image-rendering: -moz-crisp-edges;          /* FF 6.0+                       */
	image-rendering: -webkit-optimize-contrast; /* Safari                        */
	image-rendering: -o-crisp-edges;            /* OS X & Windows Opera (12.02+) */
	image-rendering: pixelated;                 /* Awesome future-browsers       */
	-ms-interpolation-mode: nearest-neighbor;   /* IE                            */
  }

  canvas.active {
	animation-name: fadeIn;
	animation-duration: 2s;
	opacity: 1;
  }

  canvas.paused {
	animation-name: blur;
	animation-duration: 0.5s;
	filter: blur(2px) grayscale(1);
  }

  canvas.unpaused {
	animation-name: none;
  }

  canvas.animatedSizeTransitions {
	transition: width 0.3s ease, height 0.3s ease;
  }

  @keyframes fadeIn {
	0% {
	  opacity: 0;
	}

	100% {
	  opacity: 1;
	}
  }

  @keyframes blur {
	0% {
	  filter: blur(0) grayscale(0);
	}

	100% {
	  filter: blur(2px) grayscale(1);
	}
  }

  .spinner {
	height: 30px;
	width: 30px;

	-webkit-animation: rotation 0.8s linear infinite;
	-moz-animation: rotation 0.8s linear infinite;
	-o-animation: rotation 0.8s linear infinite;
	animation: rotation 0.8s linear infinite;

	border: 5px solid #bdff00;
	border-top: 5px solid #719900;
	border-radius: 100%;
  }

  .floating-control {
	position: absolute;
	display: none;
	border: none;

	left: 0px;
	top: 0px;
	width: 400px;
	height: 100%;
	padding: 10px;

	font-family: monospace;
	font-size: 8;
	color: white;
	background: rgba(53, 18, 84, 0.8);
	box-shadow: rgb(9 8 13 / 20%) -2px 2px 4px, rgb(9 8 13 / 40%) -4px 4px 16px;
  }

  #status {
	display: inline-block;
	vertical-align: top;
	font-weight: bold;
	color: white;
  }

  #progress {
	width: 250px;
	height: 10px;
	-webkit-appearance: none;
	appearance: none;
	padding: 5px;
  }

  /* Determines the style of the background of the progress bar */
  progress[value]::-webkit-progress-bar {
	background-color: #8492a6;
	height: 10px;
	border-radius: 15px;
  }
  /* Determines the style of the completed part of the progress bar */
  progress[value]::-webkit-progress-value {
	background-image: -webkit-linear-gradient(left, #719900, #bdff00);
	height: 10px;
	border-radius: 15px;
  }

  div.loading {
	position: absolute;
	top: 0;
	bottom: 0;
	left: 0;
	right: 0;
	display: flex;
	flex-direction: column;
	justify-content: center;
	align-items: center;
	pointer-events: none;
  }
  div.loading > * {
	padding: 10px;
	margin: 10px;
  }

  .output-container {
	display: none;
	text-align: center;
	margin-top: auto;
  }
  .output-button {
	border: none;
	width: 200px;
	height: 25px;
	margin: 5px;
	border-radius: 5px;
	cursor: pointer;
	background-color: black;
	color: #20c20e;
	font-family: "Lucida Console", Monaco, monospace;
  }

  #output {
	display: none;
	height: 200px;
	background-color: black;
	color: white;
	font-family: "Lucida Console", Monaco, monospace;
	outline: none;
	border: none;
	padding: 0;
	width: 100%;
  }

  #message-container {
	display: none;
	min-height: 50px;
	background-color: rgba(20, 20, 20, 0.5);
	outline: none;
	border: none;
	padding: 0;
	width: 100%;
	position: absolute;
	top: 0;
  }

  #messages {
	margin-left: 50px;
	color: white;
	font-family: "Lucida Console", Monaco, monospace;
	outline: none;
	border: none;
	padding: 0;
  }

  img.qrCode {
	 opacity: 1.0;
	 width: 50%;
	 height: 50%;
  }

  #pauseMenuContainer {
	position: absolute;
	top: 0;
	bottom: 0;
	left: 0;
	right: 0;
	display: flex;
	justify-content: center;
	align-items: center;
  }

  #pauseMenuContainer[hidden] {
	display: none !important;
	opacity: 0;
  }

  #pauseMenuBorder {
	background: linear-gradient(135deg, #FA1E4E, transparent 40%);
	padding: 1px;
	border-radius: 4px;
	clip-path: polygon(10.5px 0, 100% 0, 100% 100%, 0 100%, 0 10.5px);
	width: 70vw;
	max-width: 400px;
  }

  #pauseMenu {
	display: flex;
	flex-direction: column;
	padding: 60px 30px 60px 30px;
	background: linear-gradient(180deg, #2E273F 16.15%, rgba(46, 39, 63, 0.79) 56.25%, #2E273F 91.15%);
	border-radius: 4px;
	clip-path: polygon(10px 0, 100% 0, 100% 100%, 0 100%, 0 10px);
	animation-name: fadeIn;
	animation-duration: 0.5s;
	opacity: 1;
  }

  #pauseMenu button {
	font-weight: 500;
	font-size: 17px;
	color: white;
	background: #FA1E4E;
	border: 1px solid #FA1E4E;
	border-radius: 6px;
	padding: 12px 24px;
	margin: 5px 0;
	-webkit-user-select: none;
	user-select: none;
  }

  #pauseMenu button#quitButton {
	background: #FA1E4E40;
  }

  #pauseMenu button:hover {
	filter: brightness(1.15);
  }

  #pauseMenu button:active {
	filter: brightness(0.85);
  }

  #pauseMenu button[hidden] {
	display: none;
  }

  .graph .labels.x-labels {
	background-color: white;
	text-anchor: middle;
  }

  .graph .labels.y-labels {
	text-anchor: end;
  }

  .graph {
	font-family: Averta, -apple-system, "Segoe UI", system-ui, sans-serif;
	font-feature-settings: "tnum", "lnum";
	font-style: normal;
	font-size: 14px;
	font-weight: 600;
	line-height: 21px;
	text-decoration-line: none;
	letter-spacing: 0.25px;
	background-color: transparent;
	fill: #ccc;
  }

  .graph .grid {
	stroke: #ccc;
	stroke-dasharray: 0;
	stroke-width: 1;
  }

  .labels {
	font-size: 4px;
  }

  .label-title {
	font-weight: bold;
	text-transform: uppercase;
	font-size: 4px;
  }

  .peer0 {
	fill: #fa1f4e;
	stroke: #fa1f4e;
  }
  .peer1 {
	fill: #a970ff;
	stroke: #a970ff;
  }
  .peer2 {
	fill: #4574ee;
	stroke: #4574ee;
  }
  .peer3 {
	fill: #c3ff6f;
	stroke: #c3ff6f;
  }

  .peer {
	stroke-width: 0;
  }

  .peer-frame-delay {
	fill: none;
	stroke-width: 1;
  }

  .acceptable-rollback-button {
	border: none;
	width: 50px;
	height: 25px;
	margin: 5px;
	border-radius: 5px;
	cursor: pointer;
	background-color: black;
	color: #20c20e;
	font-family: "Lucida Console", Monaco, monospace;
  }

  .peer-acceptable-rollback {
	fill: none;
	stroke-width: 1;
	opacity: 0.3;
  }

  .relay-rtt {
	stroke-width: 2;
  }