/**
 * Travel26 Archive Toolbar
 *
 * Contents
 * 1. Variables and bar (soft, outline)
 * 2. Result count
 * 3. Sort select
 * 4. View buttons
 * 5. Responsive and reduced motion
 *
 * Colours read the Inoforest Core Design System when it is active, with the Travel26 design as fallback.
 */

/* 1. Variables and bar ----------------------------------------------------------- */
.travel26-toolbar {
	--travel26-toolbar-primary: var(--inoforest-color-primary, #0b7a75);
	--travel26-toolbar-heading: var(--inoforest-color-heading, #0d1b2a);
	--travel26-toolbar-text: var(--inoforest-color-text, #5a6a79);
	--travel26-toolbar-border: var(--inoforest-color-border, #e5ebef);
	--travel26-toolbar-soft: #f4f8f8;
	--travel26-toolbar-gap: 16px;
	--travel26-toolbar-focus: var(--travel26-toolbar-primary);
	--travel26-toolbar-arrow: #8b99a6;
	--travel26-toolbar-view-size: 44px;
	--travel26-toolbar-view-icon: 18px;
	--travel26-toolbar-view-radius: 10px;
	--travel26-toolbar-view-gap: 6px;
	--travel26-toolbar-view-color: var(--travel26-toolbar-heading);
	--travel26-toolbar-view-bg: #fff;
	--travel26-toolbar-view-border-color: transparent;
	--travel26-toolbar-view-color-active: #fff;
	--travel26-toolbar-view-bg-active: var(--travel26-toolbar-primary);
	--travel26-toolbar-view-border-color-active: var(--travel26-toolbar-view-bg-active);
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: space-between;
	gap: var(--travel26-toolbar-gap);
	padding: 14px 14px 14px 24px;
	color: var(--travel26-toolbar-text);
	background: var(--travel26-toolbar-soft);
	border-radius: 16px;
}

.travel26-toolbar[data-style="outline"] {
	--travel26-toolbar-view-bg: var(--travel26-toolbar-soft);
	background: #fff;
	border: 1px solid var(--travel26-toolbar-border);
}

.travel26-toolbar--no-count {
	justify-content: flex-end;
}

/* 2. Result count ----------------------------------------------------------------- */
.travel26-toolbar .travel26-toolbar__count {
	margin: 0;
}

.travel26-toolbar .travel26-toolbar__count strong {
	color: var(--travel26-toolbar-heading);
}

/* 3. Sort select ------------------------------------------------------------------- */
.travel26-toolbar__right {
	display: flex;
	align-items: center;
	gap: min(var(--travel26-toolbar-gap), 12px);
}

.travel26-toolbar__sort {
	display: flex;
	align-items: center;
	gap: 8px;
	margin: 0;
}

.travel26-toolbar__select-wrap {
	position: relative;
	display: block;
	min-width: 0;
}

.travel26-toolbar__select-wrap::after {
	position: absolute;
	top: 50%;
	right: 14px;
	width: 20px;
	height: 20px;
	pointer-events: none;
	content: "";
	background: var(--travel26-toolbar-arrow);
	transform: translateY(-50%);
	-webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 13.172l4.95-4.95 1.414 1.414L12 16 5.636 9.636 7.05 8.222z'/%3E%3C/svg%3E") center / contain no-repeat;
	mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 13.172l4.95-4.95 1.414 1.414L12 16 5.636 9.636 7.05 8.222z'/%3E%3C/svg%3E") center / contain no-repeat;
}

.travel26-toolbar .travel26-toolbar__select {
	display: block;
	width: 100%;
	min-height: 44px;
	margin: 0;
	padding: 8px 44px 8px 18px;
	font-family: inherit;
	font-size: 0.9rem;
	font-weight: 600;
	line-height: 1.5;
	color: var(--travel26-toolbar-heading);
	cursor: pointer;
	background: #fff;
	border: 1px solid var(--travel26-toolbar-border);
	border-radius: 999px;
	outline: 0;
	box-shadow: none;
	-webkit-appearance: none;
	appearance: none;
	transition: border-color 0.35s ease, box-shadow 0.35s ease;
}

.travel26-toolbar .travel26-toolbar__select:focus-visible,
.travel26-toolbar .travel26-toolbar__select:focus {
	border-color: var(--travel26-toolbar-focus);
	box-shadow: 0 0 0 4px color-mix(in srgb, var(--travel26-toolbar-focus) 15%, transparent);
}

.travel26-toolbar .travel26-toolbar__submit {
	min-height: 44px;
	margin: 0;
	padding: 8px 18px;
	font: inherit;
	font-size: 0.9rem;
	font-weight: 700;
	color: #fff;
	cursor: pointer;
	background: var(--travel26-toolbar-primary);
	border: 0;
	border-radius: 999px;
}

/* With JavaScript the list re-sorts on change, so the button is only kept for screen readers. */
.travel26-toolbar.is-ready .travel26-toolbar__submit {
	position: absolute;
	width: 1px;
	height: 1px;
	padding: 0;
	overflow: hidden;
	clip: rect(0, 0, 0, 0);
	white-space: nowrap;
	border: 0;
}

/* 4. View buttons ----------------------------------------------------------------- */
.travel26-toolbar__views {
	display: flex;
	flex: none;
	gap: var(--travel26-toolbar-view-gap);
}

.travel26-toolbar .travel26-toolbar__view {
	display: grid;
	place-items: center;
	width: var(--travel26-toolbar-view-size);
	height: var(--travel26-toolbar-view-size);
	margin: 0;
	padding: 0;
	font-size: var(--travel26-toolbar-view-icon);
	line-height: 1;
	color: var(--travel26-toolbar-view-color);
	cursor: pointer;
	background: var(--travel26-toolbar-view-bg);
	border: 1px solid var(--travel26-toolbar-view-border-color);
	border-radius: var(--travel26-toolbar-view-radius);
	transition: background-color 0.35s ease, color 0.35s ease, border-color 0.35s ease;
}

.travel26-toolbar .travel26-toolbar__view:hover,
.travel26-toolbar .travel26-toolbar__view:focus-visible {
	color: var(--travel26-toolbar-view-color-hover, var(--travel26-toolbar-view-color-active));
	background: var(--travel26-toolbar-view-bg-hover, var(--travel26-toolbar-view-bg-active));
	border-color: var(--travel26-toolbar-view-border-color-hover, var(--travel26-toolbar-view-border-color-active));
}

.travel26-toolbar .travel26-toolbar__view.is-active {
	color: var(--travel26-toolbar-view-color-active);
	background: var(--travel26-toolbar-view-bg-active);
	border-color: var(--travel26-toolbar-view-border-color-active);
}

.travel26-toolbar .travel26-toolbar__view:focus-visible {
	outline: 2px solid var(--travel26-toolbar-focus);
	outline-offset: 2px;
}

.travel26-toolbar .travel26-toolbar__view svg {
	width: 1em;
	height: 1em;
	fill: currentColor;
}

/* 5. Responsive and reduced motion ------------------------------------------------- */
@media (max-width: 767px) {
	.travel26-toolbar {
		padding: 14px;
	}

	.travel26-toolbar .travel26-toolbar__count {
		width: 100%;
		padding-left: 6px;
	}

	.travel26-toolbar__right {
		flex: 1;
		min-width: 0;
	}

	.travel26-toolbar__sort,
	.travel26-toolbar__select-wrap {
		flex: 1;
		min-width: 0;
	}
}

@media (prefers-reduced-motion: reduce) {
	.travel26-toolbar .travel26-toolbar__select,
	.travel26-toolbar .travel26-toolbar__view {
		transition: none;
	}
}
