html {
	font-size: clamp(10px, 2vw, 18px);
}
html.js .noscript, .hidden {
	display: none;
}
.clickable {
	cursor: pointer;
}
.anchorstyle {
	color: rgb(0, 102, 204);
	text-decoration: underline;
}
/* Dead style */
html:not(.js) .js-only {
	display: none;
}
header {
	display: flex;
	direction: row;
	/* Push items as far apart as possible */
	justify-content: space-between;
}
#headline {
	text-align: center;
	flex-grow: 1;
}
#tbl_communities {
	/* Browser defaults. */
	--cell-padding-h: 1px;
	--cell-padding-v: 1px;
	width:100%;
}
#tbl_communities th {
	white-space: nowrap;
}
#tbl_communities :is(th, td) {
	padding: var(--cell-padding-v) var(--cell-padding-h);
}
#tbl_communities th.sortable {
	position: relative;
	padding-right: calc( 1.5em + var(--cell-padding-h) );
}
#tbl_communities th.sortable::after {
	position: absolute;
	right: 0.25em;
	top: 50%;
	transform: translateY(-50%);
	/* content: "\25C7"; */ /* White diamond */
	/* content: "\2195"; */ /* Up-down arrow */
	/* content: "\25A1"; */ /* White square */
	/* content: "\25B8"; */ /* Small right pointing triangle */
	content: "\2B25"; /* Black medium diamond */
	color: grey;
}
#tbl_communities[data-sort-asc=true] th[data-sort=true]::after {
	content: "\25B2"; /* Black up pointing triangle */
	color: initial;
}
#tbl_communities[data-sort-asc=false] th[data-sort=true]::after {
	content: "\25BC"; /* Black up pointing triangle */
	color: initial;
}
#toggle-show-room-ids:not(:checked) 
~ #tbl_communities :is(#th_identifier, .td_identifier) { 
	display: none;
}
.td_identifier {
	font-family: monospace;
}
.td_language {
	text-align: center;
	font-size: 1.25em;
}
.td_language:empty::after {
	content: "\2753";
}
#th_description  { }
.td_description  {
	overflow: hidden;
	text-overflow: ellipsis;
	display: -webkit-box;
	-webkit-box-orient: vertical;
	-webkit-line-clamp: 3;
}
.td_users        { text-align: right; }
.td_preview      { text-align: center; }
.td_server_icon { text-align: center; }
.td_server_icon-circle {
	display: flex;
	align-items: center;
	justify-content: center;
	width: 2em;
	height: 2em;
	border-radius: 2em;
	font-family: sans-serif;
	margin: 0 auto;
	color: white;
	text-shadow: 0 0 0.5em #000;
	box-shadow: 0 0 0.05em #777;
}
.td_server_icon-circle span {
	position: relative;
	top: 0.05em;
}
.td_join_url     {
	font-family: monospace;
	white-space: nowrap;
	font-size: .8em;
}
.join_url {
	/* Apply margin against copy button or link. */
	/* URL now guaranteed to have interactive element to right when present. */
	margin-right: 1em;
}
@media (max-width: 950px) {
	/* Only current width breakpoint; */
	/* Would follow w4 and precede w6. */
	.show-from-w5 {
		display: none;
	}
}
.join_url_container {
	display: flex;
	flex-direction: row;
	align-items: center;
	justify-content: space-around;
}
.copy_button     { font-size: inherit }
footer {
	display: flex;
	flex-direction: column;
	align-items: center;
	width: 100%;
	text-align: center;
}
footer p {
	width: 75%;
	margin: .5em;
	text-align: center;
}
footer nav a {
	display: inline-block;
	margin: .25em;
	white-space: nowrap;
}
label[for=toggle-show-room-ids]::after {
	content: " (Off)"
}
#toggle-show-room-ids:checked
~ footer label[for=toggle-show-room-ids]::after {
	content: " (On)"
}
/*  */
:root {
	/*--session-classic-dark-green:      #31f196;*/
	/*--session-classic-dark-gray-one:   #414141;*/
	/*--session-classic-dark-gray-two:   #2d2d2d;*/
	/*--session-classic-dark-gray-three: #1b1b1b;*/
	--alternate-row-color:             #e8e8e8;
}
#tbl_communities th                 { background-color: lightgray; }
#tbl_communities tr:nth-child(odd)  { background-color: var(--alternate-row-color); }
.protocol-indicator {
	display: inline-block;
	font-family: monospace;
	border-radius: 4px;
	padding: .25em .05em;
	width: 6ch;
	text-align: center;
}
.protocol-http      { background-color:lightgray }
.protocol-https     { background-color:lightblue }
/*  */
.qr-code {
	display: block;
	margin-left: auto;
	margin-right: auto;
	width: 50%;
}
.qr-code-icon {
	cursor: pointer;
}
.qr-code-modal {
	display: none;   /* Hidden by default */
	position: fixed; /* Stay in place */
	z-index: 1;      /* Sit on top */
	left: 0;
	top: 0;
	width: 100%;     /* Full width */
	height: 100%;    /* Full height */
	padding-top: 100px; /* Location of the box */
	background-color: rgb(0,0,0); /* Fallback color */
	background-color: rgba(0,0,0,0.4); /* Black w/ opacity */
	/*overflow: auto;*/ /* Enable scroll if needed */
}
.qr-code-modal-content {
	background-color: #ffffff;
	border: 1px solid #000000;
	width: 80%;
	margin: auto;
	padding: 20px;
}
.qr-code-modal-close {
	float: right;
	font-size: 35px;
	font-weight: bold;
	color: #aaaaaa;
}
.qr-code-modal-close:hover,
.qr-code-modal-close:focus {
	cursor: pointer;
	text-decoration: none;
	color: #000000;
}
/*  */
/* The snackbar - position it at the bottom and in the middle of the screen */
#copy-snackbar {
	visibility: hidden; /* Hidden by default. Visible on click */
	background-color: #333; /* Black background color */
	color: #fff; /* White text color */
	text-align: center; /* Centered text */
	border-radius: 2px; /* Rounded corners */
	padding: 16px;
	position: fixed; /* Move along as viewport scrolls */
	z-index: 1; /* Add a z-index if needed */
	left: 50%; /* Offset the snackbar by half the viewport width */
	transform: translateX(-50%); /* Push the snackbar back by half its width */
	bottom: 30px; /* 30px from the bottom */
}
/* Show the snackbar when clicking on a button (class added with JavaScript) */
#copy-snackbar.show {
	visibility: visible; /* Show the snackbar */
	/* Add animation: Take 0.5 seconds to fade in and out the snackbar.
	However, delay the fade out process for 2.5 seconds */
	-webkit-animation: fadein 0.5s, fadeout 0.5s 2.5s;
	animation: fadein 0.5s, fadeout 0.5s 2.5s;
}
/* Animations to fade the snackbar in and out */
@-webkit-keyframes fadein {
	from {bottom: 0; opacity: 0;}
	to {bottom: 30px; opacity: 1;}
}
@keyframes fadein {
	from {bottom: 0; opacity: 0;}
	to {bottom: 30px; opacity: 1;}
}
@-webkit-keyframes fadeout {
	from {bottom: 30px; opacity: 1;}
	to {bottom: 0; opacity: 0;}
}
@keyframes fadeout {
	from {bottom: 30px; opacity: 1;}
	to {bottom: 0; opacity: 0;}
}