/* The standard layout defined in the server includes a fixed header with a
 * sticky sidebar. This causes the scroll bar for the main area to appear to the
 * right of the sidebar, which looks confusing for the chat. Thus that layout is
 * overridden with a full set of flex containers to cascade parent element
 * height to the main view to limit the vertical scroll bar only to it (same
 * thing done for the sidebar and the chat view). */
#body-user,
#body-public {
	display: flex;
	flex-direction: column;
}

#body-user #header,
#body-public #header {
	/* Override fixed position from server to include it in the flex layout */
	position: static;
	flex-shrink: 0;
}

#content {
	display: flex;
	flex-direction: row;
	overflow: hidden;

	flex-grow: 1;

	/* Override "min-height: 100%" and "padding-top: 50px" set in server, as the
	 * header is part of the flex layout and thus the whole body is not
	 * available for the content. */
	min-height: 0;
	padding-top: 0;

	/* Does not change anything in normal mode, but ensures that the element
	 * will stretch to the full width in full screen mode. */
	width: 100%;

	/* Override margin used in server, as the header is part of the flex layout
	 * and thus the content does not need to be pushed down. */
	margin-top: 0;
}

#app-content {
	display: flex;
	flex-direction: column;
	overflow: hidden;

	flex-grow: 1;
}

#app-content-wrapper {
	display: flex;
	flex-direction: column;
	overflow: hidden;

	flex-grow: 1;
}

#oca-spreedme-add-room {
	border-bottom: 1px solid $color-border;
}

.oca-spreedme-add-person {
	border: 1px solid $color-border;
	border-radius: $border-radius;
}

.contactsmenu-popover li > a > img {
	/* The app uses border-box sizing, so the size of the icon is the
	 * width/height plus the padding set by default in the server
	 * (16px + 11px*2). */
	width: 38px;
	height: 38px;
}

/**
 * Sidebar styles
 */

#select2-drop {
	margin-top: -44px !important;
}
#oca-spreedme-add-room .select2-container,
.oca-spreedme-add-person .select2-container {
	width: 100%;
	margin: 0 !important;
	border: none;
	padding: 9px;
}
#oca-spreedme-add-room .select2-container .select2-choice,
.oca-spreedme-add-person .select2-container .select2-choice {
	border: none;
	color: var(--color-text-maxcontrast) !important;
}
#oca-spreedme-add-room .select2-arrow,
.oca-spreedme-add-person .select2-arrow {
	display: none !important;
}
#select2-drop .select2-search input {
	padding: 13px 12px 13px 43px !important;
	width: 100%;
	box-sizing: border-box;
	margin: 0;
	border: none;
	background-image: none !important;
}
#select2-drop .select2-results .select2-result {
	padding: 0;
}

.app-navigation-entry-menu li {
	display: block !important;
}

.participantWithList .avatar,
#app-navigation .avatar,
#app-navigation .icon-contacts-dark,
#app-navigation .app-navigation-entry-link .icon-public {
	position: absolute;
	left: 6px;
	top: 6px;
}

.participantWithList li > a:first-child img,
#app-navigation li > a:first-child img {
	width: 32px !important;
	height: 32px !important;
	margin: 0 !important;
}

.select2-result .icon-contacts.avatar,
.select2-result .icon-public-white.avatar,
#app-navigation .icon-contacts,
#app-navigation .app-navigation-entry-link .icon-public-white {
	border-radius: 50%;
	width: 32px;
	height: 32px;
	background-color: var(--color-background-darker);
}

#app-navigation .favorite-mark {
	position: absolute;
	/* 44px is the padding of the main entry link, and 16px the size (size, not
	 * background size) of the icon, both defined in the server. */
	left: calc(44px - 16px);
	line-height: 100%;

	.icon-favorite {
		display: inline-block;
		vertical-align: middle;

		/* Show favorite icon in yellow instead of default black. */
		@include icon-color('star-dark', 'actions', 'FC0', 1, true);
	}
}

#app-navigation .app-navigation-entry-utils-counter {
	overflow: hidden;
	text-align: right;
	font-size: 9pt;
	line-height: 44px;
	padding: 0 12px; /* Same padding as all li > a in the app-navigation */

	span {
		padding: 2px 5px;
		border-radius: 10px;
		background-color: nc-lighten($color-main-text, 90%);
		font-weight: bold;
	}

	&.highlighted {
		padding-right: 0;
		text-align: center;
		width: 22px !important;

		span {
			background-color: $color-primary;
			color: $color-primary-text;
		}
	}
}

.public-room {
	display: block !important;
}

.private-room,
.hidden-important {
	display: none !important;
}

.icon-clippy.public-room {
	background-size: 16px;
	position: absolute;
	right: 0;
	bottom: 0;
	padding: 16px;
}

.icon-delete.public-room {
	background-size: 16px;
	position: absolute;
	right: 0;
	top: 4px;
	padding: 16px;
	opacity: .5;
}

.icon-clippy.public-room {
	background-position-y: 8px !important;
}

/**
 * Main view chat styles
 */
#app-content-wrapper {
	height: 100%;
}

#app-content-wrapper #commentsTabView {
	width: 100%;
	height: 100%;

	display: flex;
	flex-direction: column;
}

#app-content-wrapper #commentsTabView .comment:first-child {
	padding-top: 15px;
}

/* The lateral padding is set for each child instead of for the chat view as a
   whole to prevent showing the scroll bar padded from the border of the chat
   view (which could be fixed by using a negative margin and a positive padding
   in the list of messages) and to ensure that the contacts menu is not clipped
   due to overflowing the chat view on its left (much harder to fix). */
#app-content-wrapper #commentsTabView .newCommentRow {
	padding-left: 44px;
	padding-right: 44px;
}

#app-content-wrapper #commentsTabView .comments {
	overflow-y: auto;

	/* Needed for proper calculation of comment positions in the scrolling
	   container (as otherwise the comment position is calculated with respect
	   to the closest ancestor with a relative position) */
	position: relative;

	padding-left: 44px;
	padding-right: 44px;
}

/* Hide all siblings of the chat view when shown as the main view */
#app-content-wrapper #commentsTabView ~ *:not(#video-fullscreen):not([id^=tooltip]) {
	display: none !important;
}

/**
 * Video styles
 */

#videos {
	position: absolute;
	width: 100%;
	height: 100%;
	top: 0;
	display: -webkit-box;
	display: -moz-box;
	display: -ms-flexbox;
	display: -webkit-flex;
	display: flex;
	-webkit-justify-content: space-around;
	justify-content: space-around;
	-webkit-align-items: flex-end;
	align-items: flex-end;
}

.videoContainer,
#app-content.screensharing .videoContainer {
	position: relative;
	width: 100%;
	padding: 0 2%;
	-webkit-box-flex: auto;
	-moz-box-flex: auto;
	-webkit-flex: auto;
	-ms-flex: auto;
	flex: auto;
	z-index: 2;
	display: flex;
	justify-content: center;
	align-items: flex-end;
}

.videoContainer.hidden,
#app-content.screensharing .videoContainer.hidden {
	display: none;
}

#app-content.screensharing .videoContainer {
	max-height: 200px;
}

video {
	z-index: 0;
	max-height: 100%;
	/* default filter for slightly better look */
	-webkit-filter: contrast(1.1) saturate(1.1) sepia(.1);
	filter: contrast(1.1) saturate(1.1) sepia(.1);
	vertical-align: top; /* fix white line below video */
}

#app-content.screensharing .videoContainer video {
	max-height: 200px;
	background-color: transparent;
	box-shadow: 0;
}

#screens video {
	width: 100%;
	-webkit-filter: none;
	filter: none;
}

#videos .videoContainer:not(.promoted) video {
	max-height: 200px;
	max-width: 100%;
	background-color: transparent;
	border-radius: $border-radius $border-radius 0 0;
	box-shadow: 0 0 15px $color-box-shadow;
}

#videos .videoContainer .avatar {
	box-shadow: 0 0 15px $color-box-shadow;
}

.participants-1 #videos .videoContainer video,
.participants-2 #videos .videoContainer video {
	padding: 0;
}

.videoContainer .avatar-container {
	position: absolute;
	text-align: center;
	bottom: 44px;
	left: 0;
	width: 100%;
}
.videoContainer .avatar-container .avatar {
	display: inline-block;
}
.videoContainer.promoted .avatar-container {
	top: 30%;
}
.videoContainer.promoted .avatar-container + .nameIndicator {
	display: none;
}

.videoContainer.promoted .mediaIndicator {
	display: none !important;
}

#emptycontent {
	position: absolute;
	z-index: 40;
}

#emptycontent-icon {
	width: 128px;
	margin: 0 auto;
	padding-bottom: 20px;
}


#shareRoomContainer {
	position: relative;
}
#shareRoomInput {
	width: 250px;
	padding-right: 32px;
	text-overflow: ellipsis;
}
#shareRoomClipboardButton {
	position: absolute;
	right: 0;
	padding: 18px;
	background-size: 16px !important;
	height: 16px !important;
	width: 16px !important;
	margin: 0 !important;
	opacity: .8 !important;
}

.participants-1:not(.screensharing) #emptycontent {
	display: block !important;
}

#screensharing-menu {
	bottom: 44px;
	left: calc(50% - 40px);
	right: initial;
	color: initial;
	text-shadow: initial;
	font-size: 13px;
}

#screensharing-menu.app-navigation-entry-menu:after {
	top: 100%;
	left: calc(50% - 5px);
	border-top-color: #fff;
	border-bottom-color: transparent;
}

/* big speaker video */
.participants-1 .videoContainer,
.participants-2 .videoContainer,
.videoContainer.promoted {
	position: absolute;
	width: 100%;
	height: 100%;
	overflow: hidden;
	left: 0;
	top: 0;
	z-index: 1;
}
.videoContainer.promoted video,
.participants-2 .videoContainer:not(.videoView) video {
	position: absolute;
	width: initial;
	height: 100%;
	left: 50%;
	top: 50%;
	transform: translateY(-50%) translateX(-50%);
}

/* own video */
.participants-1 .videoView,
.participants-2 .videoView {
	position: absolute;
	width: 33%;
	min-width: 200px;
	overflow:visible;
	right: 0;
	bottom: 0;
	top: initial;
	left: initial;
	z-index: 10;
}
@media only screen and (max-width: 768px) {
	.participants-1 .videoView,
	.participants-2 .videoView {
		max-height: 35%;
	}
}
.participants-1 .videoView video,
.participants-2 .videoView video {
	position: absolute;
	max-height: 100% !important;
	bottom: 0;
	border-top-right-radius: 3px;
	right: 0;
}

.videoContainer.promoted,
#app-content.incall,
#app-content.screensharing {
	background-color: #000;
}

#app-content ~ #app-sidebar-wrapper .icon-menu-people,
#app-content .icon-fullscreen {
	opacity: .5;

	&:hover,
	&:focus {
		opacity: 1;
	}
}

/* Use dark icons when not in a call (= white background) */
#app-content:not(.incall):not(.screensharing) .icon-white.icon-shadow,
#app-content:not(.incall):not(.screensharing) ~ #app-sidebar-wrapper .icon-white.icon-shadow {
	/* Still use white icons outside of calls when local video shows; otherwise
	 * use dark icons.
	 * There is no need to override "icon-video" and "icon-screensharing", as
	 * they will never be shown with dark icons. */
	&#hideVideo.local-video-disabled,
	&#mute.local-video-disabled,
	&#screensharing-button.local-video-disabled {
		filter: none;
	}
	&#hideVideo.local-video-disabled {
		background-image: var(--icon-video-off-000);
	}
	&#mute.local-video-disabled {
		&.icon-audio-off {
			background-image: var(--icon-audio-off-000);
		}
		&.icon-audio {
			background-image: var(--icon-audio-000);
		}
	}
	&#screensharing-button.local-video-disabled {
		background-image: var(--icon-screen-off-000);
	}

	&.icon-menu-people {
		background-image: var(--icon-menu-people-000);
	}
	&.icon-fullscreen {
		background-image: var(--icon-fullscreen-000);
	}

	&.icon-menu-people,
	&.icon-fullscreen {
		filter: none;
	}
}

/* Use white icon for the app navigation toggle when in a call */
#app-content.incall .icon-menu,
#app-content.screensharing .icon-menu {
	@include icon-color('menu', 'actions', $color-white, 1, true);
	filter: drop-shadow(1px 1px 4px var(--color-box-shadow));
}

#app-content.screensharing #screens {
	position: absolute;
	width: 100%;
	height: calc(100% - 200px);
	top: 0;
	overflow-y: scroll;
	background-color: transparent;
}

#app-content.screensharing .screenContainer {
	position: relative;
	width: 100%;
	height: 100%;
	overflow: hidden;
}

.nameIndicator {
	position: absolute;
	bottom: 0;
	left: 0;
	padding: 12px;
	color: #fff;
	text-shadow: 3px 3px 10px rgba(0, 0, 0, .5), 3px -3px 10px rgba(0, 0, 0, .5), -3px 3px 10px rgba(0, 0, 0, .5), -3px -3px 10px rgba(0, 0, 0, .5);
	width: 100%;
	text-align: center;
	font-size: 20px;
	white-space: nowrap;
	overflow: hidden;
	text-overflow: ellipsis;
}

.videoView .nameIndicator {
	padding: 0;
	overflow: visible;
}

.participants-1 .videoView .nameIndicator,
.participants-2 .videoView .nameIndicator {
	left: initial;
	right: 0;
}

.participants-1 .videoView .avatar-container,
.participants-2 .videoView .avatar-container {
	left: initial;
	right: 0;
}

/* ellipsize name in 1on1 calls */
.participants-2 .videoContainer.promoted + .videoContainer-dummy .nameIndicator {
	padding: 12px 35%;
}

#video-fullscreen {
	position: absolute;
	top: 44px;
	right: 0;
	z-index: 90;
}

#video-fullscreen,
.nameIndicator button,
#app-sidebar-trigger {
	background-color: transparent;
	border: none;
	margin: 0;
	width: 44px;
	height: 44px;
}

.nameIndicator button {
	background-size: 24px;
}

.nameIndicator button.audio-disabled,
.nameIndicator button.video-disabled,
.nameIndicator button.screensharing-disabled {
	opacity: .7;
}

.nameIndicator button.audio-disabled:not(.no-audio-available),
.nameIndicator button.video-disabled:not(.no-video-available),
.nameIndicator button.screensharing-disabled {
	&:hover,
	&:focus {
		opacity: 1;
	}
}

.nameIndicator button.no-audio-available,
.nameIndicator button.no-video-available {
	opacity: .7;
	cursor: not-allowed;
}

.nameIndicator button.no-audio-available:active,
.nameIndicator button.no-video-available:active {
	background-color: transparent;
}

.mediaIndicator {
	position: absolute;
	width: 100%;
	bottom: 44px;
	left: 0;
	background-size: 22px;
	text-align: center;
}

.muteIndicator,
.hideRemoteVideo,
.screensharingIndicator,
.iceFailedIndicator {
	position: relative;
	display: inline-block;
	background-color: transparent !important;
	border: none;
	width: 32px;
	height: 32px;
	background-size: 22px;
}

.muteIndicator.audio-on,
.screensharingIndicator.screen-off,
.iceFailedIndicator.not-failed {
	display: none;
}

.muteIndicator.audio-off,
.hideRemoteVideo.icon-video-off {
	opacity: .7;
}

.hideRemoteVideo.icon-video-off {
	&:hover,
	&:focus {
		opacity: 1;
	}
}

.iceFailedIndicator {
	opacity: .8 !important;
}


/* Fullscreen handling */

/* No switching between rooms in fullscreen, focus on the current call. */
#content:-webkit-full-screen #app-navigation-toggle {
	display: none !important;
}
#content:-moz-full-screen #app-navigation-toggle {
	display: none !important;
}
#content:-ms-fullscreen #app-navigation-toggle {
	display: none !important;
}
#content:fullscreen #app-navigation-toggle {
	display: none !important;
}

#content:-webkit-full-screen #app-navigation {
	display: none;
}
#content:-moz-full-screen #app-navigation {
	display: none;
}
#content:-ms-fullscreen #app-navigation {
	display: none;
}
#content:fullscreen #app-navigation {
	display: none;
}

#content:-webkit-full-screen #app-content {
	margin-left: 0;
}
#content:-moz-full-screen #app-content {
	margin-left: 0;
}
#content:-ms-fullscreen #app-content {
	margin-left: 0;
}
#content:fullscreen #app-content {
	margin-left: 0;
}

/* Set the background of the content to the same colour as the app content and
 * the app sidebar to prevent a black background from appearing when the sidebar
 * is shown or hidden.
 * During a call the background of the app content is black, but as the
 * background of the content has the same colour of the sidebar and is a
 * placeholder on its position it looks acceptable. */
#content:-webkit-full-screen {
	background-color: var(--color-main-background);
}
#content:-moz-full-screen {
	background-color: var(--color-main-background);
}
#content:-ms-fullscreen {
	background-color: var(--color-main-background);
}
#content:fullscreen {
	background-color: var(--color-main-background);
}


.localmediaerror h2 {
	color: red;
	font-weight: bold;
}

.localmediaerror .uploadmessage {
	display: none;
}

#app-navigation .utils {
	padding: 0;
}
#app-navigation .utils .action {
	display: inline-block;
	padding: 22px;
	cursor: pointer;
	opacity: .3;
}

#app-navigation .app-navigation-entry-menu li {
	width: auto !important;
	float: inherit;
}

#app-navigation .app-navigation-entry-menu li button {
	float: inherit !important;
	margin: 0;
	padding: 0;
	width: 100% !important;
	min-height: 44px;
}

#app-navigation .app-navigation-entry-menu input {
	margin-left: 5px !important;
	margin-top: -5px;
	min-width: 150px;
	padding-right: 26px;
	text-overflow: ellipsis;
	overflow: hidden;
}

#app-navigation .app-navigation-entry-menu input.first-option {
	margin-top: 5px;
}

#app-navigation .app-navigation-entry-menu li span {
	display: inline-block;
	height: 36px;
	line-height: 36px;
	padding-right: 10px;
	font-weight: 400;
	float: left;
}

#app-navigation .app-navigation-entry-menu li span[class^='icon-'],
#app-navigation .app-navigation-entry-menu li span[class*=' icon-'] {
	padding: 16px;
	box-sizing: border-box;
}

#app-navigation .app-navigation-entry-utils-menu-button {
	display: inline-block;
}

/* The sidebar wrapper contains the trigger for the sidebar and the sidebar
 * itself placed in columns. To prevent the trigger from taking up space for the
 * app content the trigger width is removed from the wrapper by pushing its left
 * margin. */
#app-sidebar-wrapper {
	display: flex;
	margin-left: -44px;
}

#app-sidebar-trigger {
	/* Higher than the z-index of the app-content */
	z-index: 1050;
	cursor: pointer;
}

/* Override server definitions to ensure that the sidebar is vertically
 * stretched, as the header is part of the flex layout and its height does not
 * need to be removed from the sidebar (specially in fullscreen mode where there
 * is no header). */
#app-sidebar {
	position: static;
	height: unset;
	top: 0;
}

@include icon-black-white('menu-people', 'spreed', 1);

.icon-no-password {
	background-image: url('../img/no-password.svg?v=1');
}

#app-sidebar .close {
	position: absolute;
	top: 0;
	right: 0;
	padding: 22px;
	opacity: .3;
	/* Higher index than the trigger to hide it when the sidebar is open */
	z-index: 20;
}

#app-sidebar .close:hover,
#app-sidebar .close:focus {
	opacity: 1;
}

#videos .videoContainer.speaking:not(.videoView) .nameIndicator,
#videos .videoContainer.videoView.speaking .nameIndicator .icon-audio {
	animation: pulse 1s;
	animation-iteration-count: infinite;
}

@keyframes pulse {
	0% {
		opacity: 1;
	}
	50% {
		opacity: .3;
	}
	100% {
		opacity: 1;
	}
}

/* make blue header bar transparent in shared room */
#body-public #app-content:not(.participants-1) #header.spreed-public {
	background: transparent;
}

/* As the header is hidden (except for the logo), move the fullscreen button and
 * sidebar to the top during calls */
#body-public #app-content:not(.participants-1) #app-sidebar,
#body-public #app-content:not(.participants-1) #app-sidebar-trigger,
#body-public #app-content:not(.participants-1) #video-fullscreen {
	top: 0;
	z-index: 3000;
}
#body-public #app-content:not(.participants-1) #video-fullscreen {
	top: 44px;
}

/**
 * Right sidebar
 */

#app-sidebar .detailCallInfoContainer {
	padding: 15px;
	clear: both;
}

.tabHeaders {
	display: inline-block;
}

/* START: move padding fixes and icons-for-tabs capability into core */
.tabHeaders {
	display: flex;
	margin-top: 0;
	margin-bottom: 10px;
	min-height: 44px;
}

.tabHeaders .tabHeader {
	flex-basis: 50%;
	flex-grow: 0;
	padding: 12px;
	text-align: center;
	border-bottom: 1px solid $color-border;
	margin-bottom: 0;

	a {
		padding-left: 32px;
		background-position: 12px;
		background-repeat: no-repeat;
		color: $color-main-text;
		opacity: .5;
	}
}

.tabHeaders .tabHeader.selected a,
.tabHeaders .tabHeader:hover a,
.tabHeaders .tabHeader:focus a {
	opacity: 1;
}
/* END: move padding fixes and icons-for-tabs capability into core */

#app-sidebar.hidden {
	display: none !important;
}

.participantWithList .participant-moderator-indicator {
	color: var(--color-text-maxcontrast);
	font-weight: 300;
	padding-left: 5px;
}

.participantWithList .icon {
	width: 16px;
	display: inline-block;
	opacity: .4;
	margin-left: 5px;
	margin-bottom: -4px;
}

.participantWithList .participant-offline {
	& > a {
		color: var(--color-text-maxcontrast);
	}
	.avatar {
		opacity: .4;
	}
}

.participantWithList li {
	position: relative;
	width: 100%;
	box-sizing: border-box;
}

.participantWithList li > a {
	display: block;
	width: 100%;
	line-height: 44px;
	min-height: 44px;
	overflow: hidden;
	box-sizing: border-box;
	white-space: nowrap;
	text-overflow: ellipsis;
	padding-left: 44px;
	background-size: 16px 16px;
	background: no-repeat 14px center;
}



/**
 * App navigation utils, buttons and counters for drop down menu
 */
.participantWithList .participant-entry-utils {
	position: absolute;
	top: 0;
	right: 0;
	z-index: 105;
}

.participantWithList .active > .participant-entry-utils li {
	display: inline-block;
}

.participantWithList .participant-entry-utils li {
	width: 44px;
	height: 44px;
}

.participantWithList .participant-entry-utils button {
	height: 100%;
	width: 100%;
	margin: 0;
	box-shadow: none;
}

.participantWithList .participant-entry-utils-menu-button button {
	border: 0;
	opacity: .5;
	background-color: transparent;
}

.participantWithList .participant-entry-utils-menu-button button:hover,
.participantWithList .participant-entry-utils-menu-button button:focus {
	opacity: 1;
}

/**
 * Sidebar details view
 */
.detailCallInfoContainer,
.authorRow {
	.room-name {
		display: block;
		margin-right: 29px;

		.label {
			white-space: nowrap;
			text-overflow: ellipsis;
			overflow: hidden;
		}

		.input-wrapper {
			position: relative;

			.username {
				width: 100%;
				margin: 4px 0 4px 0 !important;
				font-size: 15px;
				font-weight: 300;
				padding-right: 44px;
				text-overflow: ellipsis;
			}

			.icon-confirm.confirm-button {
				position: absolute;
				right: 0;
				top: 2px;
				padding: 12px 21px;
				margin: 0;
				background-color: transparent !important;
				border: none;
			}
		}
	}

	.guest-name p {
		display: inline-block;
		padding: 9px 0;
	}
	.editable-text-label {
		.label-wrapper {
			display: flex;
			align-items: center;
			.edit-button {
				display: none;

				.icon {
					background-color: transparent;
					border: none;
					padding: 13px 22px;
					margin: 0;
				}
			}
			&:hover .edit-button {
				display: block;
			}
		}
		.input-wrapper {
			display: flex;
			align-items: center;
		}
		.label {
			margin-left: 5px;
		}
	}

	.call-controls-container {
		display: flex;

		.call-button,
		.share-link-options {
			flex-grow: 1;
			flex-basis: 50%;
		}

		.call-button {
			flex-grow: 0;

			.join-call,
			.leave-call {
				width: 100%;
				padding: 12px;
			}
		}
	}

	.share-link-options {
		display: flex;
		align-items: center;
		.link-checkbox-label {
			white-space: nowrap;
			padding: 12px;
		}
		.button {
			cursor: pointer;
			width: 44px;
			height: 44px;
			display: block;
			background-color: transparent;
			border: none;
			margin: 0;
			opacity: .5;
			&:hover,
			&:focus,
			&:active {
				opacity: 1;
			}
		}
		.password-button {
			position: relative;
		}
	}
}

/**
 * Cascade parent element height to the chat view in the sidebar to limit the
 * vertical scroll bar only to the list of messages. Otherwise, the vertical
 * scroll bar would be shown for the whole sidebar and everything would be
 * moved when scrolling to see overflown messages.
 *
 * The list of messages should stretch to fill the available space at the bottom
 * of the right sidebar, so the height is cascaded using flex boxes.
 *
 * It is horrible, I know (but better than using JavaScript ;-) ). Please
 * improve it if you know how :-)
 */
#app-sidebar {
	display: flex;
	flex-direction: column;
}

#app-sidebar .tabs {
	display: flex;
	flex-direction: column;
	overflow: hidden;

	flex-grow: 1;
}

#app-sidebar .tabsContainer {
	display: flex;
	flex-direction: column;
	overflow: hidden;

	flex-grow: 1;
}

#app-sidebar .tab {
	display: flex;
	flex-direction: column;
	overflow: hidden;

	flex-grow: 1;
}

#app-sidebar #commentsTabView {
	display: flex;
	flex-direction: column;
	overflow: hidden;

	flex-grow: 1;
}

#app-sidebar .comments {
	overflow-y: auto;

	/* Needed for proper calculation of comment positions in the scrolling
	   container (as otherwise the comment position is calculated with respect
	   to the closest ancestor with a relative position) */
	position: relative;
}

/**
 * Place the scroll bar of the message list on the right edge of the sidebar,
 * but keeping the padding of the tab view.
 *
 * The padding must be set on the left too to ensure that the contacts menu
 * shown when clicking on an author name does not overflow the tab (as it would
 * be hidden).
 *
 * The bottom padding is removed to extend the chat view to the bottom edge of
 * the sidebar.
 */
#app-sidebar .tab-chat {
	padding-left: 0;
	padding-right: 0;
	padding-bottom: 0;
}

#app-sidebar #commentsTabView .newCommentRow,
#app-sidebar #commentsTabView .comments {
	padding-left: 15px;
	padding-right: 15px;
}

#app-sidebar #commentsTabView .newCommentForm {
	/* Make room to show the "Add" button when chat is shown in the sidebar. */
	margin-right: 44px;
}

/**
 * Limiting the scroll bar in the sidebar to the list of chat messages causes
 * the scroll bar to be removed from the whole sidebar in other tabs too.
 * Therefore, the scroll bars must be explicitly enabled in the other tab
 * contents that need them.
 */
#app-sidebar #participantsTabView {
	display: flex;
	flex-direction: column;
	overflow: hidden;
}

#app-sidebar .participantWithList {
	overflow-y: auto;
	padding-top: 8px;
}

#app-sidebar .participantWithList .participant:last-child {
	/* Add room for the popovermenu on last user */
	padding-bottom: 64px;
}

/**
 * Place the scroll bar of the participants list on the right edge of the
 * sidebar, but keeping the padding of the tab view.
 *
 * The bottom padding is removed to extend the participant view to the bottom
 * edge of the sidebar.
 */
#app-sidebar .tab-participants {
	padding-right: 0;
	padding-bottom: 0;
}

/* Form needs margin, participant list needs padding
 * So the form has margin from the right side, but the scroll bar of the
 * participant list is directly on the right.
 */
#app-sidebar #participantsTabView form {
	margin-right: 15px;
}
#app-sidebar #participantsTabView .participantWithList {
	padding-right: 15px;
}

/**
 * Add a little margin to the last participant so the list is nicely framed with
 * the sides when fully scrolled to the bottom.
 */
#app-sidebar #participantsTabView .participant:last-child {
	margin-bottom: 15px;
}
