.fake-full-width-bg(@bg-color) {
	&::before {
		content: '\00a0';
		position: absolute;
		width: 100%;
		right: 100%;
		background-color: @bg-color;
	}
}

.file-tree {
	.toolbar.toolbar-filetree {
		.toolbar-small-mixin;
		.toolbar-alt-mixin;
		padding: 0 5px;
	}
	
	.file-tree-inner {
		position: absolute;
		top: 32px;
		bottom: 0;
		left: 0;
		right: 0;
		overflow-y: auto;
		background-color: @file-tree-bg;

		&.no-toolbar {
			top: 0;
		}
	}

	// TODO; Consolidate with "Project files" in Overleaf
	h3 {
		font-size: 1rem;
		border-bottom: 1px solid @gray;
		padding-bottom: (@line-height-computed / 4);
		margin: (@line-height-computed / 2);
	}

	ul.file-tree-list when (@is-overleaf = false) {
		font-size: 0.8rem;
		padding: (@line-height-computed / 4) 0;
	}

	&-history {
		.entity-name {
			padding-left: 6px;
			&.deleted {
				text-decoration: line-through;
			}
		}
	}

	ul.file-tree-list {
		margin: 0;
		overflow-x: hidden;
		height: 100%;

		ul {
			margin-left: (@line-height-computed / 2);
		}

		li {
			line-height: @file-tree-line-height;
			position: relative;

			.entity {
				user-select: none;
			}

			.entity-name {
				color: @file-tree-item-color;
				cursor: pointer;
				white-space: nowrap;
				overflow: hidden;
				text-overflow: ellipsis;
				&:hover {
					background-color: @file-tree-item-hover-bg;
				}
				&:hover when (@is-overleaf = true) {
					// When the entity is a subfolder, the DOM element is "indented" via margin-left. This makes the
					// element not fill the entire file-tree width (as it's spaced from the left-hand side via margin) 
					// and, in consequence, the background gets clipped. The ::before pseudo-selector is used to fill
					// the empty space.
					.fake-full-width-bg(@file-tree-item-hover-bg);
				}
				input {
					line-height: 1.6;
				}
				&.droppable-hover when (@is-overleaf = false) {
					background-color: fade(@file-tree-droppable-bg-color, 60%);
				}

				&.droppable-hover when (@is-overleaf = true) {
					background-color: @file-tree-droppable-bg-color;
					.fake-full-width-bg(@file-tree-droppable-bg-color);
				}

			}

			i.fa {
				color: @file-tree-item-icon-color;
				font-size: 14px;
				&.linked-file-highlight {
					&when (@is-overleaf = true) {
						color: white;
					}
					&when (@is-overleaf = false) {
						color: @blue;
					}
					position: relative;
					top: 4px;
					left: -8px;
					font-size: 12px;
				}
			}

			i.fa-folder-open, i.fa-folder {
				color: @file-tree-item-folder-color;
				font-size: 14px;
			}

			i.toggle {
				width: 24px;
				padding: 6px;
				font-size: 0.7rem;
				color: @file-tree-item-toggle-color;
			}
			
			&.multi-selected {
				> .entity > .entity-name when (@is-overleaf = false) {
					background-color: @file-tree-multiselect-bg;
					&:hover {
						background-color: @file-tree-multiselect-hover-bg;
					}
				}
				> .entity when (@is-overleaf = true) {
					> .entity-name {
						> div > i.fa,
						> i.fa,
						.entity-menu-toggle i.fa {
							color: #FFF;
						}
						> i.fa i.linked-file-highlight {
							color: @blue;
						}
						color: #FFF;
						font-weight: bold;
						background-color: @file-tree-multiselect-bg;
						.fake-full-width-bg(@file-tree-multiselect-bg);
						&:hover {
							background-color: @file-tree-multiselect-hover-bg;
							.fake-full-width-bg(@file-tree-multiselect-hover-bg);
						}
					}
				}
			}

			.dropdown {
				position: absolute;
				right: 0;
				> a {
					padding: 0 12px;
				}
			}
			
			.rename-input {
				display: block;
				position: absolute;
				top: 1px;
				left: 44px;
				right: 32px;
				color: @file-tree-item-input-color;
				input {
					width: 100%;
				}
			}
			
			> .entity > .entity-name {
				.entity-menu-toggle {
					display: none;
				}
			}
		}
	}
	
	&:not(.multi-selected) {
		ul.file-tree-list li.selected {
			> .entity > .entity-name when (@is-overleaf = false) {
				color: @link-color;
				border-right: 4px solid @link-color;
				font-weight: bold;
				padding-right: 32px;
				i.fa-folder-open, i.fa {
					color: @link-color;
				}
				.entity-menu-toggle {
					display: inline;
				}
			}

			> .entity when (@is-overleaf = true) {
				> .entity-name {
					> div > i.fa,
					> i.fa,
					.entity-menu-toggle i.fa {
						color: #FFF;
					}
					> i.fa i.linked-file-highlight {
						color: @blue;
					}
					background-color: @file-tree-item-selected-bg;
					font-weight: bold;
					padding-right: 32px;
					.fake-full-width-bg(@file-tree-item-selected-bg);

					.entity-menu-toggle {
						display: inline;
					}
				}
			}
		}
	}

	ul.droppable-hover.file-tree-list when (@is-overleaf = false) {
		background-color: fade(@file-tree-droppable-bg-color, 60%);
	}
	ul.droppable-hover.file-tree-list when (@is-overleaf = true) {
		background-color: @file-tree-droppable-bg-color;
		.fake-full-width-bg(@file-tree-droppable-bg-color);
	}
}

// TODO check if the OL Beta theme is OK with darker themes.
.editor-dark when (@is-overleaf = false) {
	aside#file-tree {
		// background-color: lighten(@editor-dark-background-color, 10%);
		
		ul.file-tree-list {
			.dropdown-toggle {
				color: @editor-dark-highlight-color;
			}
			
			li {
				.entity-name {
					color: #aaaaaa;
					&:hover {
						background-color: black;
					}
				}
				&.selected {
					> .entity > .entity-name {
						color: @editor-dark-highlight-color;
						border-color: @editor-dark-highlight-color;
						i.fa-folder-open, i.fa-folder, i.fa-file, i.fa-image, i.fa-file-pdf-o {
							color: @editor-dark-highlight-color;
						}
					}
				}
			}
		}
	}
}

.modal-new-file {
	padding: 0;
	table {
		width: 100%;
		td {
			vertical-align: top;
		}
	}
}
	.modal-new-file--list {
		background-color: @modal-footer-background-color;
		width: 220px;
		ul {
			li {
				padding: (@line-height-computed / 4);
				a {
					color: @text-color;
				}
			}
			li.active {
				background-color: white;
				a {
					color: @link-color;
				}
			}
		}
	}

	.modal-new-file--body {
		padding: 20px;
		padding-top: (@line-height-computed / 4);
	}

	.modal-new-file--body-upload {
		padding-top: 20px;
	}
