/* Forklift Finder catalog styles */

/* ── Design tokens ───────────────────────────────────────────── */
.ff-finder{
	--ff-accent:#ffc600;
	--ff-ink:#0a0a0a;
	--ff-link:#334862;
	--ff-line:#e6e6e6;
	--ff-muted:#6b6b6b;
	--ff-radius:10px;
	color:var(--ff-ink);
}

/* ── Layouts ─────────────────────────────────────────────────── */
.ff-finder--sidebar{
	display:grid;
	grid-template-columns:280px 1fr;
	gap:32px;
	align-items:start;
}
.ff-finder--topbar{ display:block; }

/* ── Filters sidebar ─────────────────────────────────────────── */
.ff-filters{
	display:flex;
	flex-direction:column;
	gap:22px;
}
.ff-filters--topbar{
	flex-direction:row;
	flex-wrap:wrap;
	align-items:flex-end;
	gap:18px 24px;
	padding:18px 20px;
	border:1px solid var(--ff-line);
	border-radius:var(--ff-radius);
	margin-bottom:28px;
}
.ff-filters--topbar .ff-filters__facets{
	display:flex;
	flex-wrap:wrap;
	gap:18px 24px;
}
.ff-filters__actions{
	display:flex;
	align-items:center;
	gap:14px;
}
.ff-reset{
	font-size:13px;
	color:var(--ff-link);
	background:none;
	border:none;
	padding:0;
	cursor:pointer;
	text-decoration:underline;
	text-underline-offset:2px;
}
.ff-reset:hover{ color:var(--ff-ink); }

/* ── Facets ──────────────────────────────────────────────────── */
.ff-facet{
	border:0;
	padding:0;
	margin:0;
}
.ff-facet__label{
	display:block;
	text-transform:uppercase;
	font-size:11px;
	letter-spacing:.08em;
	font-weight:600;
	color:var(--ff-muted);
	margin-bottom:8px;
}
.ff-facet__opts{
	display:flex;
	flex-direction:column;
	gap:6px;
}
.ff-check{
	display:flex;
	align-items:center;
	gap:8px;
	font-size:14px;
	cursor:pointer;
}
.ff-check input[type=checkbox]{
	accent-color:var(--ff-ink);
	width:15px;
	height:15px;
	flex-shrink:0;
	cursor:pointer;
}
.ff-check:hover{ color:var(--ff-link); }

/* ── Search / select fields ──────────────────────────────────── */
.ff-field input[type=search],
.ff-field select{
	width:100%;
	border:1px solid var(--ff-line);
	border-radius:99px;
	padding:9px 16px;
	font:inherit;
	font-size:14px;
	color:var(--ff-ink);
	background:#fff;
	outline:none;
	transition:border-color .15s ease, box-shadow .15s ease;
}
.ff-field input[type=search]:focus,
.ff-field select:focus{
	border-color:var(--ff-link);
	box-shadow:0 0 0 2px rgba(51,72,98,.12);
}

/* ── Range slider ────────────────────────────────────────────── */
.ff-range__head{
	display:flex;
	justify-content:space-between;
	align-items:baseline;
	margin-bottom:6px;
}
.ff-range__out{
	font-size:13px;
	font-weight:600;
}
.ff-range__track{
	position:relative;
	height:24px;
	margin:0 9px; /* room so end thumbs aren't clipped */
}
/* Inactive track */
.ff-range__track::before{
	content:"";
	position:absolute;
	z-index:1;
	top:50%;
	transform:translateY(-50%);
	left:0;
	right:0;
	height:4px;
	border-radius:4px;
	background:var(--ff-line);
}
/* Active fill between thumbs — driven by CSS custom properties set via JS */
.ff-range__track::after{
	content:"";
	position:absolute;
	z-index:2;
	top:50%;
	transform:translateY(-50%);
	left:var(--ff-range-left,0%);
	right:calc(100% - var(--ff-range-right,100%));
	height:4px;
	border-radius:4px;
	background:var(--ff-accent);
}
.ff-range input[type=range]{
	position:absolute;
	z-index:3; /* thumbs sit above the fill, never behind it */
	top:0;
	left:0;
	width:100%;
	height:24px;
	pointer-events:none;
	-webkit-appearance:none;
	appearance:none;
	background:transparent;
	margin:0;
}
.ff-range input[type=range]::-webkit-slider-runnable-track{
	height:24px;
	background:transparent;
	border:none;
}
.ff-range input[type=range]::-moz-range-track{
	height:24px;
	background:transparent;
	border:none;
}
.ff-range input[type=range]::-webkit-slider-thumb{
	-webkit-appearance:none;
	appearance:none;
	pointer-events:auto;
	width:16px;
	height:16px;
	margin-top:4px; /* centre the 16px thumb on the 24px track */
	border-radius:50%;
	background:var(--ff-ink);
	border:2px solid #fff;
	box-shadow:0 1px 3px rgba(0,0,0,.25);
	cursor:pointer;
	transition:transform .12s ease;
}
.ff-range input[type=range]:active::-webkit-slider-thumb{
	transform:scale(1.12);
}
.ff-range input[type=range]::-moz-range-thumb{
	pointer-events:auto;
	width:16px;
	height:16px;
	border-radius:50%;
	background:var(--ff-ink);
	border:2px solid #fff;
	box-shadow:0 1px 3px rgba(0,0,0,.25);
	cursor:pointer;
}

/* ── Grid & count ────────────────────────────────────────────── */
.ff-grid__count{
	text-transform:uppercase;
	font-size:12px;
	letter-spacing:.06em;
	color:var(--ff-muted);
	margin:0 0 16px;
}
.ff-grid{
	display:grid;
	grid-template-columns:repeat(auto-fill,minmax(240px,1fr));
	gap:24px;
}

/* ── Cards ───────────────────────────────────────────────────── */
.ff-card{
	display:flex;
	flex-direction:column;
	background:#fff;
	border:1px solid var(--ff-line);
	border-radius:var(--ff-radius);
	overflow:hidden;
	text-decoration:none;
	color:inherit;
	transition:transform .18s ease, box-shadow .18s ease, border-color .18s ease;
}
.ff-card:hover{
	transform:translateY(-4px);
	box-shadow:0 12px 30px rgba(10,10,10,.12);
	border-color:#d8d8d8;
}
.ff-card__media{
	position:relative;
	aspect-ratio:4/3;
	background:#f4f4f4;
	overflow:hidden;
}
.ff-card__img{
	width:100%;
	height:100%;
	object-fit:cover;
	display:block;
	transition:transform .3s ease;
}
.ff-card:hover .ff-card__img{ transform:scale(1.03); }
.ff-card__img--empty{
	background:repeating-linear-gradient(
		45deg,
		#f0f0f0,#f0f0f0 10px,
		#f6f6f6 10px,#f6f6f6 20px
	);
}
.ff-card__badges{
	position:absolute;
	top:10px;
	left:10px;
	display:flex;
	gap:6px;
	flex-wrap:wrap;
}
.ff-badge{
	background:var(--ff-accent);
	color:var(--ff-ink);
	font-size:11px;
	font-weight:700;
	letter-spacing:.03em;
	padding:3px 9px;
	border-radius:99px;
}
.ff-card__body{
	padding:16px 16px 18px;
	display:flex;
	flex-direction:column;
	gap:10px;
	flex:1;
}
.ff-card__title{
	font-size:17px;
	line-height:1.25;
	margin:0;
}
.ff-card__chips{
	list-style:none;
	margin:0;
	padding:0;
	display:flex;
	flex-wrap:wrap;
	gap:6px;
}
.ff-card__chips li{
	font-size:12px;
	color:var(--ff-muted);
	background:#f5f5f5;
	border-radius:6px;
	padding:3px 8px;
}
.ff-card__price{
	font-size:18px;
	font-weight:700;
	margin-top:auto;
}
.ff-card__cta{
	font-size:12px;
	font-weight:600;
	text-transform:uppercase;
	letter-spacing:.06em;
	color:var(--ff-link);
}
.ff-card:hover .ff-card__cta{ color:var(--ff-ink); }

/* ── Pagination ──────────────────────────────────────────────── */
.ff-pagination{
	display:flex;
	gap:6px;
	justify-content:center;
	margin-top:34px;
	flex-wrap:wrap;
}
.ff-page{
	min-width:38px;
	text-align:center;
	padding:8px 12px;
	border:1px solid var(--ff-line);
	border-radius:8px;
	text-decoration:none;
	color:var(--ff-ink);
	font-size:14px;
	transition:border-color .14s ease, background .14s ease, color .14s ease;
}
.ff-page:hover{
	border-color:var(--ff-ink);
	background:#f8f8f8;
}
.ff-page--current{
	background:var(--ff-ink);
	color:#fff;
	border-color:var(--ff-ink);
}

/* ── Empty state & loading ───────────────────────────────────── */
.ff-grid__empty{
	padding:60px 20px;
	text-align:center;
	color:var(--ff-muted);
	border:1px dashed var(--ff-line);
	border-radius:var(--ff-radius);
}
.ff-results{ transition:opacity .2s ease; }
.ff-results.is-loading{ opacity:.45; pointer-events:none; }

/* ── Mobile filter toggle ────────────────────────────────────── */
.ff-filters-toggle{
	display:none;
	padding:9px 20px;
	border:1px solid var(--ff-line);
	border-radius:99px;
	font-size:13px;
	font-weight:600;
	text-transform:uppercase;
	letter-spacing:.06em;
	background:#fff;
	color:var(--ff-ink);
	cursor:pointer;
	transition:border-color .14s ease, background .14s ease;
}
.ff-filters-toggle:hover{
	border-color:var(--ff-ink);
	background:#f8f8f8;
}

/* ── Staggered card fade-in ──────────────────────────────────── */
@keyframes ffFade{
	from{ opacity:0; transform:translateY(8px); }
	to{   opacity:1; transform:none; }
}
.ff-card{ animation:ffFade .4s ease both; }
.ff-grid .ff-card:nth-child(2){ animation-delay:.04s; }
.ff-grid .ff-card:nth-child(3){ animation-delay:.08s; }
.ff-grid .ff-card:nth-child(4){ animation-delay:.12s; }
.ff-grid .ff-card:nth-child(5){ animation-delay:.16s; }
.ff-grid .ff-card:nth-child(n+6){ animation-delay:.2s; }

/* ── Responsive: collapse sidebar → filter drawer ────────────── */
@media (max-width:849px){
	.ff-finder--sidebar{ grid-template-columns:1fr; }
	.ff-filters-toggle{ display:inline-block; margin-bottom:16px; }
	.ff-filters{ display:none; }
	.ff-finder.ff-open .ff-filters{ display:flex; }
}
