collapsible-section {
	display: flex;
	flex-direction: column;
	gap: 2px;
	padding-block: 4px;

	--width-focus-border: 2px;

	:not(:last-child) > & {
		border-bottom: 1px solid var(--fill-quinary);
	}

	& > .head {
		@include focus-ring;
		@include comfortable {
			padding-block: 2px;
		}
		
		display: flex;
		align-items: center;
		
		.title-box {
			flex: 1;
			display: flex;
			align-items: center;
			gap: 8px;
			
			.title {
				flex: 0 0 auto;

				display: flex;
				align-items: center;
				gap: 4px;
				color: var(--fill-secondary);
				font-weight: 600;
			}

			.summary {
				flex: 1;
				
				display: -webkit-box;
				-webkit-box-orient: vertical;
				-webkit-line-clamp: 1;
				overflow: hidden;
				color: var(--fill-secondary);
				text-overflow: ellipsis;
				overflow-wrap: anywhere;
				
				opacity: 1;
				transition: opacity 0.2s ease-in-out;
			}
		}
		
		toolbarbutton {
			flex-shrink: 0;
			width: 20px;
			height: 20px;
			padding: 2px;
			color: var(--fill-secondary);
			border-radius: 2px;
		}
		
		toolbarbutton.add {
			@include svgicon-menu("plus", "universal", "16");
		}

		toolbarbutton.twisty .toolbarbutton-icon {
			@include svgicon-menu("chevron-12", "universal", "16");
			transform: rotate(0deg);
			transform-origin: center;
			transition: transform 0.2s ease-in-out;
		}

		popupset > menupopup {
			@include macOS-hide-menu-icons;
		}
	}
	
	&[open]:not([empty]) > .head {
		toolbarbutton.twisty .toolbarbutton-icon {
			transform: rotate(-180deg);
			
			&:-moz-locale-dir(rtl) {
				// Make the animation run in the opposite direction in RTL locales
				transform: rotate(180deg);
			}
		}
		
		.title-box .summary {
			opacity: 0;
		}
	}
	
	&[empty] > .head > toolbarbutton.twisty {
		fill: var(--fill-tertiary);
	}

	@each $pane, $color in $item-pane-sections {
		&[data-pane="#{$pane}"] {
			& > .head .title::before {
				content: '';
				width: 16px;
				height: 16px;
				background: icon-url("itempane/16/#{$pane}.svg") no-repeat center;
				-moz-context-properties: fill, fill-opacity, stroke, stroke-opacity;
				fill: $color;
				stroke: $color;
			}
		}
	}
	
	& > :not(.head) {
		max-height: var(--open-height, auto);
		opacity: 1;
		transition: max-height 0.2s ease-in-out, opacity 0.2s ease-in-out;
	}
	
	&:not([open]) {
		& > :not(.head) {
			max-height: 0;
			opacity: 0;
			visibility: hidden;
			overflow-y: hidden;
			transition: max-height 0.2s ease-in-out, opacity 0.2s ease-in-out, visibility 0s 0.2s, overflow-y 0s 0.2s;
		}
	}
	
	&.disable-transitions * {
		transition: none !important;
	}

	toolbarbutton, .box, .keyboard-clickable {
		@include focus-ring;
	}
	
}
