/*
 * Funding Finder â€” archive (finder + taxonomy landing pages).
 * Design tokens come from the active theme's theme.json presets; every
 * var() carries a neutral fallback so the plugin degrades gracefully on
 * other themes.
 */

.nff-finder {
	max-width: var(--wp--custom--layout--content, 1300px);
	margin-inline: auto;
	padding-inline: var(--wp--preset--spacing--medium, 1.5rem);
	padding-block-end: var(--wp--preset--spacing--xx-large, 4rem);
}

/* ---- Hero ---- */

.nff-hero {
	padding-block: var(--wp--preset--spacing--x-large, 3rem) var(--wp--preset--spacing--medium, 1.5rem);
	display: flex;
	align-items: flex-end;
	justify-content: space-between;
	gap: var(--wp--preset--spacing--medium, 1.5rem);
	flex-wrap: wrap;
}

.nff-hero-text {
	max-width: 52rem;
}

.nff-hero h1 {
	margin: 0 0 var(--wp--preset--spacing--small, 0.875rem);
}

/* Hero "get fund alerts" button â€” jumps to the #fund-alerts signup band. */
.nff-alerts-btn {
	display: inline-flex;
	align-items: center;
	gap: 0.5rem;
	flex-shrink: 0;
	padding: 0.625rem 1.4rem;
	border-radius: 50px;
	background: var(--wp--preset--color--quaternary, #fdc41f);
	color: var(--wp--preset--color--ink, #0f0b22);
	font-weight: 600;
	text-decoration: none;
	white-space: nowrap;
}

.nff-alerts-btn:hover,
.nff-alerts-btn:focus-visible {
	background: var(--wp--preset--color--quaternary, #fdc41f);
	filter: brightness(0.95);
	color: var(--wp--preset--color--ink, #0f0b22);
}

.nff-alerts-btn:focus-visible {
	outline: 2px solid var(--wp--preset--color--ink, #0f0b22);
	outline-offset: 2px;
}

.nff-alerts-icon {
	flex-shrink: 0;
	transform-origin: top center;
	/* Gentle, continuous ring; the swing widens on hover/focus below. */
	animation: nff-bell-shake 2.2s ease-in-out infinite;
	--nff-bell-swing: 6deg;
}

.nff-alerts-btn:hover .nff-alerts-icon,
.nff-alerts-btn:focus-visible .nff-alerts-icon {
	animation-duration: 0.7s;
	--nff-bell-swing: 16deg;
}

@keyframes nff-bell-shake {
	0%   { transform: rotate(0); }
	15%  { transform: rotate(var(--nff-bell-swing)); }
	30%  { transform: rotate(calc(var(--nff-bell-swing) * -0.8)); }
	45%  { transform: rotate(calc(var(--nff-bell-swing) * 0.6)); }
	60%  { transform: rotate(calc(var(--nff-bell-swing) * -0.4)); }
	75%  { transform: rotate(calc(var(--nff-bell-swing) * 0.25)); }
	90%  { transform: rotate(calc(var(--nff-bell-swing) * -0.12)); }
	100% { transform: rotate(0); }
}

@media (prefers-reduced-motion: reduce) {
	.nff-alerts-icon {
		animation: none;
	}
}

.nff-intro {
	font-size: var(--wp--preset--font-size--medium, 1.125rem);
	color: var(--wp--custom--color--ink-soft, #444);
	margin: 0 0 var(--wp--preset--spacing--small, 0.875rem);
	margin: 0;
}

/* ---- Filter bar ---- */

.nff-filter-bar {
	display: flex;
	flex-direction: column;
	gap: var(--wp--preset--spacing--small, 0.875rem);
	padding: var(--wp--preset--spacing--medium, 1.5rem);
	border: 1px solid var(--wp--custom--color--line, #e3e3ea);
	border-radius: 12px;
	background: var(--wp--preset--color--white, #fff);
	margin-block-end: var(--wp--preset--spacing--medium, 1.5rem);
}

.nff-chip-group {
	border: 0;
	padding: 0;
	margin: 0;
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 0.5rem;
}

.nff-chip-group legend {
	float: left; /* keeps the legend inline with the chips */
	font-weight: 600;
	font-size: 0.8125rem;
	margin-inline-end: 0.75rem;
	padding: 0;
}

.nff-chip {
	position: relative;
	display: inline-block;
}

.nff-chip input {
	position: absolute;
	inset: 0;
	opacity: 0;
	margin: 0;
	cursor: pointer;
}

/* Direct child only â€” the nested .nff-chip-count must not pick up the pill
   padding/border, or counted chips render taller than the "All" chip. */
.nff-chip > span {
	display: inline-block;
	padding: 0.25rem 0.75rem;
	border: 1px solid var(--wp--custom--color--line, #c9c9d4);
	border-radius: 50px;
	font-size: var(--wp--preset--font-size--min);
	cursor: pointer;
	transition: background-color 120ms ease, color 120ms ease, border-color 120ms ease;
}

.nff-chip input:checked + span {
	background: var(--wp--preset--color--ink, #0f0b22);
	border-color: var(--wp--preset--color--ink, #0f0b22);
	color: var(--wp--preset--color--white, #fff);
}

.nff-group-region .nff-chip input:checked + span {
	background: var(--wp--preset--color--primary, #d61254);
	border-color: var(--wp--preset--color--primary, #d61254);
	color: var(--wp--preset--color--white, #fff);
}

/* Ink (not white) text: white on the secondary blue fails WCAG AA contrast. */
.nff-group-value .nff-chip input:checked + span {
	background: var(--wp--preset--color--secondary, #009fe3);
	border-color: var(--wp--preset--color--secondary, #009fe3);
}

.nff-chip input:focus-visible + span {
	outline: 2px solid var(--wp--preset--color--secondary, #009fe3);
	outline-offset: 2px;
}

.nff-chip-count {
	opacity: 0.65;
	font-size: 0.85em;
}

/* Long term lists render as a dropdown instead of chips (see
   nff_chip_threshold in templates/parts/filter-bar.php). */
.nff-select-group {
	display: flex;
	align-items: center;
	gap: 0.75rem;
	flex-wrap: wrap;
}

.nff-select-group label {
	font-weight: 600;
	font-size: 0.8125rem;
}

.nff-select-group select {
	font: inherit;
	font-size: 0.8125rem;
	padding: 0.35rem 2.25rem 0.35rem 1rem;
	border: 1px solid var(--wp--custom--color--line, #c9c9d4);
	border-radius: 50px;
	background-color: var(--wp--preset--color--white, #fff);
	color: inherit;
	max-width: 100%;
}

.nff-select-group select:focus-visible {
	outline: 2px solid var(--wp--preset--color--secondary, #009fe3);
	outline-offset: 2px;
}

.nff-filter-extras {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: var(--wp--preset--spacing--small, 0.875rem);
}

.nff-toggle {
	display: inline-flex;
	align-items: center;
	gap: 0.5rem;
	font-size: 0.8125rem;
	cursor: pointer;
}

.nff-toggle input:focus-visible {
	outline: 2px solid var(--wp--preset--color--secondary, #009fe3);
	outline-offset: 2px;
}

.nff-submit {
	padding: 0.5rem 1.4rem;
	border: 0;
	border-radius: 50px;
	background: var(--wp--preset--color--primary, #d61254);
	color: var(--wp--preset--color--white, #fff);
	font: inherit;
	font-weight: 600;
	cursor: pointer;
}

.nff-submit:focus-visible {
	outline: 2px solid var(--wp--preset--color--secondary, #009fe3);
	outline-offset: 2px;
}

/* JS active (Interactivity API has hydrated): filtering is live, the
   submit button is redundant. */
.nff-filter-bar.is-enhanced .nff-submit {
	display: none;
}

/* ---- Results ---- */

.nff-count {
	font-weight: 600;
	margin-block: 0 var(--wp--preset--spacing--small, 0.875rem);
}

.nff-grid {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(min(20rem, 100%), 1fr));
	gap: var(--wp--preset--spacing--medium, 1.5rem);
}

/* ---- Card ---- */

.nff-card {
	display: flex;
	flex-direction: column;
	gap: 0.625rem;
	padding: var(--wp--preset--spacing--medium, 1.5rem);
	border: 1px solid var(--wp--custom--color--line, #e3e3ea);
	border-radius: 12px;
	background: var(--wp--preset--color--white, #fff);
	content-visibility: auto;
	contain-intrinsic-size: auto 320px;
}

.nff-card.is-hidden {
	display: none;
}

.nff-card.status-closed {
	opacity: 0.6;
}

.nff-card-head {
	display: flex;
	align-items: flex-start;
	justify-content: space-between;
	gap: 0.75rem;
}

.nff-card-title {
	font-size: var(--wp--preset--font-size--medium, 1.125rem);
	margin: 0;
	line-height: 1.25;
}

.nff-card-title a {
	color: inherit;
	text-decoration: none;
}

.nff-card-title a:hover,
.nff-card-title a:focus-visible {
	color: var(--wp--preset--color--primary, #d61254);
	text-decoration: underline;
}

.nff-badge {
	flex-shrink: 0;
	padding: 0.15rem 0.7rem;
	border-radius: 50px;
	font-size: var(--wp--preset--font-size--min, 0.8rem);
	font-weight: 600;
	white-space: nowrap;
}

.nff-badge-upcoming {
	background: transparent;
	border: 1px solid var(--wp--custom--color--line, #c9c9d4);
	color: var(--wp--custom--color--ink-soft, #555);
}

.nff-badge-opening-soon {
	background: var(--wp--preset--color--secondary-50, #bce4f5);
	color: #075a82;
}

.nff-badge-open {
	background: var(--wp--preset--color--quinary-50, #e0f3e9);
	color: #14633a;
}

.nff-badge-closing-soon {
	background: var(--wp--preset--color--quaternary-50, #fef3d2);
	color: #7a5a00;
}

.nff-badge-closed {
	background: var(--wp--custom--color--neutral-100, #ececf1);
	color: var(--wp--custom--color--ink-soft, #555);
}

.nff-card-funder {
	margin: 0;
	font-size: var(--wp--preset--font-size--small, 0.9rem);
	color: var(--wp--custom--color--ink-soft, #555);
}

.nff-card-summary {
	margin: 0;
}

.nff-card-facts {
	margin: 0;
	display: flex;
	flex-wrap: wrap;
	gap: 0.25rem 1.5rem;
}

.nff-card-facts dt {
	font-size: var(--wp--preset--font-size--min, 0.8rem);
	text-transform: uppercase;
	letter-spacing: 0.04em;
	color: var(--wp--custom--color--ink-soft, #666);
}

.nff-card-facts dd {
	margin: 0;
	font-weight: 600;
}

.nff-card-pills {
	list-style: none;
	display: flex;
	flex-wrap: wrap;
	gap: 0.375rem;
	margin: 0;
	padding: 0;
}

.nff-card-pills li {
	padding: 0.1rem 0.6rem;
	border-radius: 50px;
	background: var(--wp--custom--color--neutral-100, #f0f0f4);
	font-size: var(--wp--preset--font-size--min, 0.8rem);
}

.nff-card-foot {
	margin-block-start: auto;
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 0.75rem;
	margin-top: var(--wp--preset--spacing--small, 1rem);
}

.nff-card-more {
	font-weight: 600;
	color: var(--wp--preset--color--primary, #d61254);
}

.nff-card-verified {
	font-size: var(--wp--preset--font-size--min, 0.8rem);
	color: var(--wp--custom--color--ink-soft, #777);
}

/* ---- Empty state ---- */

.nff-empty {
	padding: var(--wp--preset--spacing--large, 2rem);
	border: 1px dashed var(--wp--custom--color--line, #c9c9d4);
	border-radius: 12px;
	text-align: center;
	margin-block-start: var(--wp--preset--spacing--medium, 1.5rem);
}

.nff-empty.is-hidden {
	display: none;
}

.nff-clear {
	font-weight: 600;
}

/* ---- Guidance: how to get a website funded ---- */

.nff-guidance {
	margin-block-start: var(--wp--preset--spacing--x-large, 3rem);
	padding: var(--wp--preset--spacing--large, 2rem);
	border: 1px solid var(--wp--custom--color--line, #e3e3ea);
	border-radius: 12px;
}

.nff-guidance h2 {
	margin-block-start: 0;
}

.nff-guidance-tips {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(min(18rem, 100%), 1fr));
	gap: var(--wp--preset--spacing--medium, 1.5rem);
	margin-block: var(--wp--preset--spacing--medium, 1.5rem);
}

.nff-tip h3 {
	margin: 0 0 0.375rem;
	font-size: var(--wp--preset--font-size--medium, 1.05rem);
}

.nff-tip p {
	margin: 0;
	font-size: var(--wp--preset--font-size--small, 0.95rem);
	color: var(--wp--custom--color--ink-soft, #444);
}

.nff-guidance-more {
	margin: 0;
	font-weight: 600;
}

/* ---- FAQs ---- */

.nff-faq {
	margin-block-start: var(--wp--preset--spacing--x-large, 3rem);
	max-width: 52rem;
}

/* ---- Signup band + quote CTA ---- */

.nff-signup-band {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(min(22rem, 100%), 1fr));
	gap: var(--wp--preset--spacing--medium, 1.5rem);
	margin-block-start: var(--wp--preset--spacing--x-large, 3rem);
}

.nff-signup,
.nff-quote-cta {
	padding: var(--wp--preset--spacing--large, 2rem);
	border-radius: 1.75rem;
}

.nff-signup {
	border: 1px solid var(--wp--custom--color--line, #e3e3ea);
}

.nff-quote-cta {
	color: var(--wp--preset--color--white, #fff);
	background: var(--wp--preset--color--ink, #2a086f);
	border: 1.5px solid var(--wp--preset--color--ink);
	position: relative;
}

/* Gradient border ring â€” same masked-::before technique as the theme's
   .nblocks-plan-card.is-featured, sized to this card's 12px radius. */
.nff-quote-cta::before {
	content: "";
	position: absolute;
	inset: 0px;
	padding: 2px;
	border-radius: calc(1.75rem + 0px);
	background: linear-gradient(135deg, #d61254, #fdc41f, #009fe3);
	-webkit-mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0);
	-webkit-mask-composite: xor;
	mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0);
	mask-composite: exclude;
	pointer-events: none;
}

.nff-quote-cta h2 {
	color: inherit;
}

.nff-btn {
	display: inline-block;
	padding: 0.625rem 1.6rem;
	border-radius: 50px;
	background: var(--wp--preset--color--primary, #d61254);
	color: var(--wp--preset--color--white, #fff);
	font-weight: 600;
	text-decoration: none;
	margin-top: var(--wp--preset--spacing--medium);
}

.nff-btn:hover,
.nff-btn:focus-visible {
	background: var(--wp--preset--color--secondary, #009fe3);
	color: var(--wp--preset--color--white, #fff);
}

.nff-btn:focus-visible {
	outline: 2px solid var(--wp--preset--color--ink, #0f0b22);
	outline-offset: 2px;
}
