
.natureslens-bsn-wrap {
	position: relative;
	display: inline-flex;
	align-items: center;
	gap: 3px;
	padding-bottom: 12px;
	margin-bottom: -12px;
}
.natureslens-bsn-dropdown {
	position: absolute;
	top: 100%;
	left: -12px;
	min-width: 180px;
	max-width: min(320px, calc(100vw - 32px));
	/* Series dropdowns can run to 15-20+ articles (found 2026-07-26 testing
	   the "Why Photographers Are Drawn To" series) — a fixed max-height with
	   its own scrollbar keeps the list reachable instead of silently
	   overflowing past the viewport edge with nothing to scroll it into
	   view. overflow-x stays hidden so it doesn't grow a second, horizontal
	   scrollbar; long labels are handled by ellipsis truncation on the
	   label span below instead. */
	max-height: min(60vh, 420px);
	overflow-y: auto;
	overflow-x: hidden;
	overscroll-behavior: contain;
	background: rgba(255,255,255,0.98);
	border: 1px solid rgba(72,80,47,0.16);
	border-radius: 6px;
	padding: 6px;
	list-style: none;
	margin: 0;
	margin-top: 8px !important;
	z-index: 9000;
	box-shadow: 0 14px 34px rgba(35,38,28,0.14), 0 2px 8px rgba(35,38,28,0.08);
	display: none;
}
.natureslens-bsn-wrap[aria-expanded="true"] .natureslens-bsn-dropdown {
	display: block;
}
.natureslens-bsn-dropdown li {
	margin: 0;
	padding: 0;
	width: 100%;
}
.natureslens-bsn-dropdown a {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 14px;
	width: 100%;
	min-width: 0; /* let the label span below actually shrink so its ellipsis can kick in — flex items don't shrink past content size by default */
	padding: 9px 10px;
	box-sizing: border-box;
	font-size: var(--text-s);
	line-height: 1.4;
	color: #3f4238;
	text-decoration: none;
	border-radius: 4px;
	transition: background 0.14s ease, color 0.14s ease, transform 0.14s ease;
}
.natureslens-bsn-dropdown a .natureslens-bsn-label {
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
	min-width: 0;
	flex: 1 1 auto;
}
.natureslens-bsn-dropdown a:hover,
.natureslens-bsn-dropdown a:focus-visible {
	background: #eef1e5;
	color: #2f3a20;
	text-decoration: none;
	transform: translateX(2px);
	outline: none;
}
.natureslens-bsn-dropdown a.natureslens-bsn-active {
	font-weight: 600;
	color: #263014;
	background: #f5f7ef;
}
.natureslens-bsn-tick {
	display: inline-block;
	width: 14px;
	height: 14px;
	flex-shrink: 0;
	margin-left: 8px;
	opacity: 0.7;
}
/* Scroll indicator — shown only while the list overflows max-height AND
   there is more content below the current scroll position (JS-toggled via
   .natureslens-bsn-visible). Added 2026-07-26 after "menu is scrollable but
   nothing tells the user that" feedback on the max-height fix above. The
   <li> itself is zero-height (so it never adds extra scroll distance of its
   own) and position:sticky so its inner fade+chevron always sits at the
   bottom of whatever is currently visible, not just the true end of the
   list. */
.natureslens-bsn-dropdown li.natureslens-bsn-scroll-hint {
	position: sticky;
	bottom: 0;
	height: 0;
	padding: 0;
	margin: 0;
	list-style: none;
	pointer-events: none;
}
.natureslens-bsn-scroll-hint-inner {
	position: absolute;
	left: 0;
	right: 0;
	bottom: 0;
	height: 30px;
	display: flex;
	align-items: flex-end;
	justify-content: center;
	padding-bottom: 3px;
	background: linear-gradient(to bottom, rgba(255,255,255,0) 0%, rgba(255,255,255,0.97) 60%);
	border-radius: 0 0 6px 6px;
	opacity: 0;
	transition: opacity 0.15s ease;
}
.natureslens-bsn-dropdown li.natureslens-bsn-scroll-hint.natureslens-bsn-visible .natureslens-bsn-scroll-hint-inner {
	opacity: 1;
}
.natureslens-bsn-scroll-chevron {
	width: 15px;
	height: 15px;
	color: #5c6650;
	animation: natureslens-bsn-bounce 1.3s ease-in-out infinite;
}
@keyframes natureslens-bsn-bounce {
	0%, 100% { transform: translateY(0); }
	50%      { transform: translateY(3px); }
}
@media (prefers-reduced-motion: reduce) {
	.natureslens-bsn-scroll-chevron { animation: none; }
}
