/* dropdown */

:where(body:not([data-dropdown-isolated])) div.dropdown,
:where(body[data-dropdown-isolated]) [data-dropdown],
:where(body:not([data-dropdown-isolated])) aside.floater-dropdown,
:where(body[data-dropdown-isolated]) aside.floater-dropdown[data-dropdown-floater] {
    --dropdown-transition-fast: 120ms;
    --dropdown-transition-slow: 180ms;
    --dropdown-ease: cubic-bezier(0.2, 0, 0, 1);
    --dropdown-item-padding-y: 0.5rem;
    --dropdown-item-padding-x: 0.75rem;
    --dropdown-item-gap: 0.5rem;
    --dropdown-item-min-height: 2.25rem;
    --dropdown-item-font-size: 0.75rem;
}

:where(body:not([data-dropdown-isolated])) div.dropdown,
:where(body[data-dropdown-isolated]) [data-dropdown] {
	position: relative;

	display: inline-flex;
}

body.dropdown-scroll-lock {
    overflow: hidden;
}

:where(body:not([data-dropdown-isolated])) div.dropdown > button,
:where(body[data-dropdown-isolated]) [data-dropdown] > button {
	width: 100%;

    text-align: left;

    display: inline-flex;
    align-items: center;
    gap: .5rem;

    cursor: pointer;
}

:where(body:not([data-dropdown-isolated])) div.dropdown > button span.display,
:where(body[data-dropdown-isolated]) [data-dropdown] > button span.display {
    width: 100%;

    display: flex;

    outline: 0;

    white-space: nowrap;

    overflow: hidden;
}

:where(body:not([data-dropdown-isolated])) div.dropdown > button.input-control:has(span.display[contenteditable]),
:where(body[data-dropdown-isolated]) [data-dropdown] > button.input-control:has(span.display[contenteditable]) {
	cursor: default;
}

:where(body:not([data-dropdown-isolated])) div.dropdown > button.input-control span.display[contenteditable],
:where(body[data-dropdown-isolated]) [data-dropdown] > button.input-control span.display[contenteditable] {
    margin: -.65rem -.8rem;
    padding: .65rem .8rem;

	width: calc(100% + (.8rem * 2));
}

:where(body:not([data-dropdown-isolated])) div.dropdown > button span.display[placeholder]:not(:focus):empty::before,
:where(body[data-dropdown-isolated]) [data-dropdown] > button span.display[placeholder]:not(:focus):empty::before {
    content: attr(placeholder);

    color: var(--color-dark-30);

    position: relative;

    z-index: -1;
}

:where(body:not([data-dropdown-isolated])) div.dropdown > aside.floater-dropdown,
:where(body[data-dropdown-isolated]) [data-dropdown] > aside.floater-dropdown {
	opacity: 0;
	visibility: hidden;

    transform: translateY(-2px) scale(0.98);
    transform-origin: top left;

    pointer-events: none;
}

:where(body:not([data-dropdown-isolated])) aside.floater-dropdown,
:where(body[data-dropdown-isolated]) aside.floater-dropdown[data-dropdown-floater] {
	position: fixed;

	z-index: 8888;

    transition: opacity var(--dropdown-transition-fast) var(--dropdown-ease),
        transform var(--dropdown-transition-fast) var(--dropdown-ease);
}

/* list */

:where(body:not([data-dropdown-isolated])) aside.floater-dropdown,
:where(body[data-dropdown-isolated]) aside.floater-dropdown[data-dropdown-floater] {
	background: var(--color-white);
	border: 1px solid var(--color-dark-15);
	box-shadow: 0 0.5rem 5rem -1rem var(--color-dark-15);

	border-radius: 0.75rem;

	padding: 0.25rem 0;

	display: inline-flex;
    align-items: flex-start;
    justify-content: flex-start;
	flex-direction: column;

    width: auto;
	min-width: 10rem;
	max-width: 32rem;
	max-height: calc(100vh - 4rem);

	overflow-y: auto;
    scroll-behavior: smooth;
    -webkit-overflow-scrolling: touch;
}

:where(body:not([data-dropdown-isolated])) div.dropdown.is-open > aside.floater-dropdown,
:where(body[data-dropdown-isolated]) [data-dropdown].is-open > aside.floater-dropdown,
:where(body:not([data-dropdown-isolated])) aside.floater-dropdown.is-open,
:where(body[data-dropdown-isolated]) aside.floater-dropdown.is-open[data-dropdown-floater] {
    opacity: 1;
    visibility: visible;
    transform: translateY(0) scale(1);
    pointer-events: auto;
}

:where(body:not([data-dropdown-isolated])) aside.floater-dropdown.is-flipped,
:where(body[data-dropdown-isolated]) aside.floater-dropdown.is-flipped[data-dropdown-floater] {
    transform-origin: bottom left;
}

:where(body:not([data-dropdown-isolated])) div.dropdown.is-loading > aside.floater-dropdown,
:where(body[data-dropdown-isolated]) [data-dropdown].is-loading > aside.floater-dropdown,
:where(body:not([data-dropdown-isolated])) aside.floater-dropdown.is-loading,
:where(body[data-dropdown-isolated]) aside.floater-dropdown.is-loading[data-dropdown-floater] {
    cursor: progress;
}

:where(body:not([data-dropdown-isolated])) div.dropdown.is-loading > aside.floater-dropdown > ul,
:where(body[data-dropdown-isolated]) [data-dropdown].is-loading > aside.floater-dropdown > ul {
    opacity: 0.75;
}

@media (prefers-reduced-motion: reduce) {
    :where(body:not([data-dropdown-isolated])) div.dropdown > aside.floater-dropdown,
    :where(body[data-dropdown-isolated]) [data-dropdown] > aside.floater-dropdown,
    :where(body:not([data-dropdown-isolated])) aside.floater-dropdown,
    :where(body[data-dropdown-isolated]) aside.floater-dropdown[data-dropdown-floater] {
        transition: none;
        transform: none;
    }
}

@media (pointer: coarse) {
    :where(body:not([data-dropdown-isolated])) div.dropdown,
    :where(body[data-dropdown-isolated]) [data-dropdown] {
        --dropdown-item-padding-y: 0.65rem;
        --dropdown-item-padding-x: 0.9rem;
        --dropdown-item-min-height: 2.75rem;
        --dropdown-item-font-size: 0.8125rem;
    }
}

:where(body:not([data-dropdown-isolated])) aside.floater-dropdown > div,
:where(body[data-dropdown-isolated]) aside.floater-dropdown[data-dropdown-floater] > div {
    padding: .75rem 1rem;

    width: 100%;
}

:where(body:not([data-dropdown-isolated])) aside.floater-dropdown > div.search,
:where(body[data-dropdown-isolated]) aside.floater-dropdown[data-dropdown-floater] > div.search {
    padding: .25rem .5rem .25rem;
}

:where(body:not([data-dropdown-isolated])) aside.floater-dropdown:has(> ul) > div.search,
:where(body[data-dropdown-isolated]) aside.floater-dropdown[data-dropdown-floater]:has(> ul) > div.search {
    padding: .25rem .5rem .5rem;
}

:where(body:not([data-dropdown-isolated])) aside.floater-dropdown > div.search > input.input-control,
:where(body[data-dropdown-isolated]) aside.floater-dropdown[data-dropdown-floater] > div.search > input.input-control {
    padding: .5rem .75rem;

    border-radius: .5rem;
}

:where(body:not([data-dropdown-isolated])) aside.floater-dropdown > ul,
:where(body[data-dropdown-isolated]) aside.floater-dropdown[data-dropdown-floater] > ul {
    width: 100%;
}

:where(body:not([data-dropdown-isolated])) aside.floater-dropdown > ul > li,
:where(body[data-dropdown-isolated]) aside.floater-dropdown[data-dropdown-floater] > ul > li {
	padding: var(--dropdown-item-padding-y) var(--dropdown-item-padding-x);
    min-height: var(--dropdown-item-min-height);

	font-size: var(--dropdown-item-font-size);
	font-weight: 500;

	color: var(--color-dark);

	display: flex;
	align-items: center;
	gap: var(--dropdown-item-gap);
    line-height: 1.2;
}


:where(body:not([data-dropdown-isolated])) aside.floater-dropdown > ul > li.overflow,
:where(body[data-dropdown-isolated]) aside.floater-dropdown[data-dropdown-floater] > ul > li.overflow {
    width: 100%;

    display: block;

    overflow: hidden;

    text-overflow: ellipsis;

    white-space: nowrap;

    outline: 0;
}

:where(body:not([data-dropdown-isolated])) aside.floater-dropdown > ul > li > a,
:where(body[data-dropdown-isolated]) aside.floater-dropdown[data-dropdown-floater] > ul > li > a,
:where(body:not([data-dropdown-isolated])) aside.floater-dropdown > ul > li > .dropdown > button,
:where(body[data-dropdown-isolated]) aside.floater-dropdown[data-dropdown-floater] > ul > li > [data-dropdown] > button {
	padding: var(--dropdown-item-padding-y) var(--dropdown-item-padding-x);
    margin: calc(-1 * var(--dropdown-item-padding-y)) calc(-1 * var(--dropdown-item-padding-x));

	font-size: var(--dropdown-item-font-size);
	font-weight: 500;

	color: var(--color-dark);

	display: flex;
	align-items: center;
	gap: var(--dropdown-item-gap);

    min-height: var(--dropdown-item-min-height);
    width: calc(100% + (var(--dropdown-item-padding-x) * 2));
}

:where(body:not([data-dropdown-isolated])) aside.floater-dropdown > ul > li > .dropdown,
:where(body[data-dropdown-isolated]) aside.floater-dropdown[data-dropdown-floater] > ul > li > [data-dropdown] {
	padding: var(--dropdown-item-padding-y) var(--dropdown-item-padding-x);
    margin: calc(-1 * var(--dropdown-item-padding-y)) calc(-1 * var(--dropdown-item-padding-x));

    min-height: var(--dropdown-item-min-height);
    width: calc(100% + (var(--dropdown-item-padding-x) * 2));
}

:where(body:not([data-dropdown-isolated])) aside.floater-dropdown > ul > li > span.check-icon,
:where(body[data-dropdown-isolated]) aside.floater-dropdown[data-dropdown-floater] > ul > li > span.check-icon {
	display: none;
}

:where(body:not([data-dropdown-isolated])) aside.floater-dropdown > ul > li:not(.disabled, .selected),
:where(body[data-dropdown-isolated]) aside.floater-dropdown[data-dropdown-floater] > ul > li:not(.disabled, .selected) {
	cursor: pointer;
}

:where(body:not([data-dropdown-isolated])) aside.floater-dropdown > ul > li:not(.disabled, .selected):hover,
:where(body[data-dropdown-isolated]) aside.floater-dropdown[data-dropdown-floater] > ul > li:not(.disabled, .selected):hover {
	background: var(--color-dark-05);
}

:where(body:not([data-dropdown-isolated])) aside.floater-dropdown > ul > li.active:not(.disabled, .selected),
:where(body[data-dropdown-isolated]) aside.floater-dropdown[data-dropdown-floater] > ul > li.active:not(.disabled, .selected) {
	background: var(--color-dark-05);
}

:where(body:not([data-dropdown-isolated])) aside.floater-dropdown > ul > li.selected,
:where(body[data-dropdown-isolated]) aside.floater-dropdown[data-dropdown-floater] > ul > li.selected {
    background: var(--color-dark-05);
}

:where(body:not([data-dropdown-isolated])) aside.floater-dropdown > ul > li.dropdown-status,
:where(body[data-dropdown-isolated]) aside.floater-dropdown[data-dropdown-floater] > ul > li.dropdown-status {
    width: 100%;

    justify-content: center;

    font-weight: 400;
    color: var(--color-dark-65);
}

:where(body:not([data-dropdown-isolated])) aside.floater-dropdown > ul > li.dropdown-status.is-error,
:where(body[data-dropdown-isolated]) aside.floater-dropdown[data-dropdown-floater] > ul > li.dropdown-status.is-error {
    color: var(--color-dark-85);
}

:where(body:not([data-dropdown-isolated])) aside.floater-dropdown > ul > li.disabled,
:where(body[data-dropdown-isolated]) aside.floater-dropdown[data-dropdown-floater] > ul > li.disabled {
	cursor: not-allowed;

	color: var(--color-dark-65);
}

:where(body:not([data-dropdown-isolated])) aside.floater-dropdown > ul > li.selected > span.check-icon,
:where(body[data-dropdown-isolated]) aside.floater-dropdown[data-dropdown-floater] > ul > li.selected > span.check-icon {
	color: var(--color-primary);

	display: inline-flex;

	margin-left: auto;
}

:where(body:not([data-dropdown-isolated])) aside.floater-dropdown > ul > li.action,
:where(body[data-dropdown-isolated]) aside.floater-dropdown[data-dropdown-floater] > ul > li.action {
	margin-top: 0.25rem;
	margin-bottom: -0.25rem;

	background: var(--color-dark-05);
	color: var(--color-dark-85);

	border-radius: 0 0 0.75rem 0.75rem;
}

:where(body:not([data-dropdown-isolated])) aside.floater-dropdown > ul > li.action:hover,
:where(body[data-dropdown-isolated]) aside.floater-dropdown[data-dropdown-floater] > ul > li.action:hover {
	background: var(--color-dark-10);
	color: var(--color-dark);
}

:where(body:not([data-dropdown-isolated])) aside.floater-dropdown .btn,
:where(body[data-dropdown-isolated]) aside.floater-dropdown[data-dropdown-floater] .btn {
    padding: .25rem .5rem;

    font-size: .875rem;

    border-radius: .5rem;
}

:where(body:not([data-dropdown-isolated])) aside.floater-dropdown ul li span.title,
:where(body[data-dropdown-isolated]) aside.floater-dropdown[data-dropdown-floater] ul li span.title {
    font-size: .65rem;
    white-space: nowrap;
    text-transform: uppercase;
    
    display: flex;
    align-items: center;
    gap: .5rem;

    padding: 0 .125rem 0 0;
    margin: -.125rem 0 -.25rem;

    
    width: 100%;

    color: var(--color-dark-60);
}

:where(body:not([data-dropdown-isolated])) aside.floater-dropdown ul li span.title::after,
:where(body[data-dropdown-isolated]) aside.floater-dropdown[data-dropdown-floater] ul li span.title::after {
    content: "";

    width: 100%;
    height: 1px;

    background: var(--color-dark-15);

    display: flex;
}
