html {
	scroll-behavior: smooth;
}

/* ── Campaigns ────────────────────────────────────────────────────────────── */

.npc-campaign-card {
	margin-bottom: 2.5rem;
}

.npc-campaign-card__btn {
	margin-top: 1.25rem;
	display: inline-block;
}

.npc-btn--lg {
	padding: 12px 28px;
	font-size: 1.05em;
}

.npc-btn--sm {
	padding: 6px 14px;
	font-size: 0.9em;
}

.npc-btn--disabled {
	opacity: 0.5;
	cursor: not-allowed;
	pointer-events: none;
}

.npc-btn--success {
	background: #16a34a;
	color: #fff;
	border-color: #16a34a;
}

.npc-event-details__cta {
	display: flex;
	align-items: center;
	gap: 12px;
	flex-wrap: wrap;
	margin-top: 20px;
	padding-top: 20px;
	border-top: 1px solid #e2e8f0;
}

.npc-event-register {
	margin-top: 32px;
	padding-top: 24px;
	border-top: 2px solid #e2e8f0;
}

.npc-notice--prominent {
	padding: 16px 20px;
	border-left: 4px solid #b45309;
	background: #fffbeb;
	border-radius: 4px;
	margin-bottom: 16px;
}

.npc-event-register__login-prompt {
	padding: 24px;
	border: 1px solid #e2e8f0;
	border-radius: 6px;
	text-align: center;
	margin: 16px 0;
}

.npc-event-register__login-actions {
	display: flex;
	gap: 12px;
	justify-content: center;
	margin-top: 16px;
	flex-wrap: wrap;
}

.npc-event-card + .npc-event-card {
	margin-top: 2em;
}

.npc-form-wrap {
	max-width: 480px;
	margin: 0 auto;
}

.npc-form .npc-field {
	margin-bottom: 16px;
}

.npc-form .npc-field-row {
	display: flex;
	gap: 16px;
}

.npc-form .npc-field-row .npc-field {
	flex: 1;
}

.npc-form label {
	display: block;
	font-weight: 600;
	margin-bottom: 4px;
}

.npc-form input[type="text"],
.npc-form input[type="email"],
.npc-form input[type="password"],
.npc-form input[type="date"],
.npc-form input[type="url"],
.npc-form input[type="tel"],
.npc-form input[type="number"],
.npc-form textarea,
.npc-form select {
	width: 100%;
	padding: 8px 12px;
	border: 1px solid #d1d5db;
	border-radius: 4px;
	font-size: 1em;
	box-sizing: border-box;
}

.npc-form .required { color: #dc2626; }

.npc-form input[type="tel"] { width: 180px; }

.npc-form .npc-field--checkbox label {
	display: flex;
	align-items: center;
	gap: 8px;
	font-weight: normal;
}

.npc-btn {
	display: inline-block;
	padding: 10px 20px;
	border: none;
	border-radius: 4px;
	font-size: 1em;
	font-weight: 600;
	cursor: pointer;
	text-decoration: none;
}

.npc-btn--primary   { background: #2563eb; color: #fff; }
.npc-btn--secondary { background: #e5e7eb; color: #111827; }
.npc-btn--danger    { background: #dc2626; color: #fff; }
.npc-btn--primary:hover   { background: #1d4ed8; }
.npc-btn--secondary:hover { background: #d1d5db; }
.npc-btn--danger:hover    { background: #b91c1c; }

.npc-form .npc-form-footer {
	margin-top: 12px;
	font-size: 0.875em;
}

.npc-notice {
	padding: 12px 16px;
	border-radius: 4px;
	margin-bottom: 16px;
}

.npc-notice--success { background: #d1fae5; color: #065f46; border: 1px solid #a7f3d0; }
.npc-notice--error   { background: #fee2e2; color: #991b1b; border: 1px solid #fca5a5; }

/* Dashboard */

.npc-dashboard-notice { margin-bottom: 16px; }

.npc-dashboard-header {
	display: flex;
	align-items: center;
	justify-content: space-between;
	margin-bottom: 20px;
}

.npc-dashboard-header h2 { margin: 0 0 4px; font-size: 1.375em; }

.npc-dashboard-header__meta {
	margin: 0;
	font-size: 0.9375em;
	color: #6b7280;
	display: flex;
	align-items: center;
	gap: 8px;
}

/* Tabbed layout */

.npc-dashboard-layout {
	display: flex;
	border: 1px solid #e5e7eb;
	border-radius: 8px;
	overflow: hidden;
	min-height: 480px;
}

.npc-dashboard-nav {
	width: 210px;
	flex-shrink: 0;
	background: #f9fafb;
	border-right: 1px solid #e5e7eb;
	display: flex;
	flex-direction: column;
	padding: 8px 0 0;
}

.npc-dashboard-nav__item {
	display: flex;
	align-items: center;
	gap: 9px;
	padding: 11px 16px;
	background: none;
	border: none;
	border-left: 3px solid transparent;
	cursor: pointer;
	text-align: left;
	font-size: 0.9375em;
	color: #374151;
	width: 100%;
	line-height: 1.3;
	transition: background 0.1s;
}

.npc-dashboard-nav__item:hover { background: #f3f4f6; color: #111827; }

.npc-dashboard-nav__item.is-active {
	background: #eff6ff;
	border-left-color: #2563eb;
	color: #1d4ed8;
	font-weight: 600;
}

.npc-dashboard-nav__icon {
	width: 17px;
	height: 17px;
	flex-shrink: 0;
	opacity: 0.6;
}

.npc-dashboard-nav__item.is-active .npc-dashboard-nav__icon,
.npc-dashboard-nav__item:hover .npc-dashboard-nav__icon { opacity: 1; }

.npc-dashboard-nav__count {
	margin-left: auto;
	background: #2563eb;
	color: #fff;
	border-radius: 10px;
	font-size: 0.75em;
	padding: 1px 6px;
	font-weight: 700;
	line-height: 1.4;
}

.npc-dashboard-nav__logout {
	margin-top: auto;
	display: flex;
	align-items: center;
	gap: 9px;
	padding: 11px 16px;
	font-size: 0.875em;
	color: #6b7280;
	text-decoration: none;
	border-top: 1px solid #e5e7eb;
}

.npc-dashboard-nav__logout:hover { color: #dc2626; }
.npc-dashboard-nav__logout .npc-dashboard-nav__icon { opacity: 0.5; }
.npc-dashboard-nav__logout:hover .npc-dashboard-nav__icon { opacity: 1; }

.npc-dashboard-content {
	flex: 1;
	padding: 28px 32px;
	min-width: 0;
}

.npc-dashboard-panel { display: none; }
.npc-dashboard-panel.is-active { display: block; }

.npc-dashboard-panel > h3 {
	font-size: 1.125em;
	font-weight: 600;
	margin: 0 0 20px;
	padding-bottom: 12px;
	border-bottom: 2px solid #e5e7eb;
	color: #111827;
}

.npc-panel-subheading {
	font-size: 0.9375em;
	font-weight: 600;
	color: #374151;
	margin: 0 0 12px;
	text-transform: uppercase;
	letter-spacing: 0.04em;
	font-size: 0.8125em;
}

/* Membership detail rows */

.npc-membership-details {
	display: flex;
	flex-direction: column;
	gap: 12px;
}

.npc-membership-row {
	display: flex;
	align-items: center;
	gap: 12px;
	font-size: 0.9375em;
}

.npc-membership-label {
	width: 130px;
	flex-shrink: 0;
	color: #6b7280;
	font-size: 0.875em;
}

.npc-empty-state {
	color: #6b7280;
	font-style: italic;
	padding: 24px 0;
}

#npc-tab-settings .npc-panel-subheading {
	font-size: 1.125rem;
	font-weight: 700;
	color: var(--npt-main, #1e40af);
	letter-spacing: 0;
	text-transform: none;
	padding-bottom: 0.4rem;
	border-bottom: 2px solid var(--npt-main, #1e40af);
	margin-bottom: 1.25rem;
}

#npc-tab-settings form + .npc-panel-subheading {
	margin-top: 2.5rem;
	padding-top: 2rem;
	border-top: 1px solid #e5e7eb;
}

.npc-table {
	width: 100%;
	border-collapse: collapse;
	font-size: 0.9375em;
}

.npc-table th,
.npc-table td {
	padding: 10px 12px;
	text-align: left;
	border-bottom: 1px solid #e5e7eb;
}

.npc-table th { font-weight: 600; background: #f3f4f6; }

/* Membership level selector */

.npc-levels-list { display: flex; flex-direction: column; gap: 8px; }

.npc-level-option {
	display: flex;
	align-items: flex-start;
	gap: 10px;
	padding: 12px;
	border: 1px solid #d1d5db;
	border-radius: 6px;
	cursor: pointer;
	font-weight: normal;
}

.npc-level-option:has(input:checked) { border-color: #2563eb; background: #eff6ff; }

.npc-level-name  { font-weight: 600; }
.npc-level-price { color: #6b7280; font-size: 0.875em; margin-left: auto; }
.npc-level-desc  { color: #6b7280; font-size: 0.875em; width: 100%; margin-top: 0.25em; }
.npc-level-desc ul, .npc-group-desc ul { margin: 0.4em 0 0.4em 1.25em; padding: 0; list-style: disc; }
.npc-level-desc li, .npc-group-desc li { margin: 0.2em 0; }

.npc-group-desc {
	font-size: 0.875em;
	color: #374151;
	margin-bottom: 0.75rem;
}

/* Status badges */

.npc-status {
	display: inline-block;
	padding: 2px 8px;
	border-radius: 3px;
	font-size: 0.8125em;
	font-weight: 600;
}

.npc-status--active    { background: #d1fae5; color: #065f46; }
.npc-status--expired   { background: #fee2e2; color: #991b1b; }
.npc-status--paused    { background: #fef3c7; color: #92400e; }
.npc-status--pending   { background: #fef3c7; color: #92400e; }
.npc-status--suspended { background: #f3f4f6; color: #374151; }
.npc-status--paid      { background: #d1fae5; color: #065f46; }
.npc-status--failed    { background: #fee2e2; color: #991b1b; }

.npc-card-element {
	padding: 10px 12px;
	border: 1px solid #d1d5db;
	border-radius: 4px;
	background: #fff;
}

.npc-card-errors {
	color: #dc2626;
	font-size: 0.875em;
	margin-top: 6px;
	min-height: 1.2em;
}

.npc-restricted-message {
	padding: 16px;
	background: #f9fafb;
	border: 1px solid #e5e7eb;
	border-radius: 6px;
	margin-top: 16px;
}

/* Recurring donation pledge cards */
.npc-pledge-list {
	display: flex;
	flex-direction: column;
	gap: 16px;
}

.npc-pledge-card {
	display: flex;
	align-items: flex-start;
	justify-content: space-between;
	gap: 16px;
	padding: 16px 20px;
	border: 1px solid #e5e7eb;
	border-radius: 6px;
	background: #f9fafb;
}

.npc-pledge-amount {
	font-size: 1.25em;
	font-weight: 700;
	color: #111827;
	margin-bottom: 6px;
}

.npc-pledge-amount span {
	font-size: 0.75em;
	font-weight: 400;
	color: #6b7280;
}

.npc-pledge-meta {
	font-size: 0.875em;
	color: #6b7280;
	margin-bottom: 4px;
}

.npc-pledge-status {
	margin-top: 8px;
}

.npc-pledge-actions {
	display: flex;
	flex-shrink: 0;
	gap: 8px;
	align-items: center;
}

@media ( max-width: 640px ) {
	.npc-form .npc-field-row { flex-direction: column; gap: 0; }
	.npc-pledge-card { flex-direction: column; }
	.npc-pledge-actions { flex-wrap: wrap; }

	.npc-dashboard-layout {
		flex-direction: column;
		border-radius: 0;
		border-left: none;
		border-right: none;
	}

	.npc-dashboard-nav {
		width: 100%;
		flex-direction: row;
		overflow-x: auto;
		-webkit-overflow-scrolling: touch;
		border-right: none;
		border-bottom: 1px solid #e5e7eb;
		padding: 0;
		gap: 0;
	}

	.npc-dashboard-nav__item {
		flex-direction: column;
		gap: 3px;
		padding: 10px 14px;
		font-size: 0.75em;
		white-space: nowrap;
		border-left: none;
		border-bottom: 3px solid transparent;
		flex-shrink: 0;
	}

	.npc-dashboard-nav__item.is-active {
		border-left-color: transparent;
		border-bottom-color: #2563eb;
	}

	.npc-dashboard-nav__count { display: none; }
	.npc-dashboard-nav__logout { display: none; }
	.npc-dashboard-content { padding: 20px 16px; }
	.npc-membership-label { width: 100px; }
}

/* ── Donor Wall ───────────────────────────────────────────────────────────── */

.npc-donor-wall-section .npt-section-title h2,
.npc-donor-wall-section .npt-section-title p {
	color: #fff;
}
.npc-donor-wall-section .npt-section-title p { opacity: 0.85; }

/* Donation amount buttons */
.npc-amount-btn__label {
	display: inline-block;
	padding: .5rem 1.25rem;
	border: 2px solid #0073aa;
	border-radius: 4px;
	font-weight: 600;
	background: #fff;
	color: #0073aa;
	cursor: pointer;
	transition: background 0.15s, color 0.15s;
}
.npc-amount-btn__label--selected {
	background: #0073aa;
	color: #fff;
}

/* Goal progress bar fill */
.npc-goal-bar__fill {
	background: #0073aa;
	height: 100%;
	border-radius: 999px;
}

.npc-donor-wall-btn {
	display: inline-block;
	margin-top: 1.25rem;
	padding: 0.6rem 1.75rem;
	border: 2px solid #fff;
	border-radius: 4px;
	color: #fff;
	font-weight: 600;
	font-size: 0.95rem;
	text-decoration: none;
	transition: background 0.2s, color 0.2s;
}
.npc-donor-wall-btn:hover {
	background: #fff;
	color: var(--npt-main, #1e40af);
}

.npc-donor-wall-card .npc-donor-wall-card__title {
	text-align: center;
	font-size: 1.4rem;
	font-weight: 700;
	letter-spacing: 0.06em;
	text-transform: uppercase;
	color: var(--npt-main, #1e40af);
	margin: 0 0 1.25rem;
	padding-bottom: 0.75rem;
	border-bottom: 2px solid var(--npt-accent, #059669);
}

.npc-donor-wall-card {
	background: #fff;
	border-radius: 8px;
	padding: 2rem 2.5rem;
	max-width: 720px;
	margin: 0 auto;
}

.npc-donor-wall {
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	gap: 0.5rem 1.5rem;
}

.npc-donor-wall__item {
	display: flex;
	flex-direction: column;
}

.npc-donor-wall__name {
	font-size: 0.95rem;
	font-weight: 500;
	color: #1a1a2e;
}

.npc-donor-wall__honor {
	font-size: 0.8rem;
	color: #666;
	font-style: italic;
}

.npc-donor-wall-empty {
	grid-column: 1 / -1;
	color: #666;
	font-style: italic;
	text-align: center;
}

@media ( max-width: 600px ) {
	.npc-donor-wall { grid-template-columns: repeat(2, 1fr); }
	.npc-donor-wall-card { padding: 1.5rem; }
}

/* ── Events Calendar ──────────────────────────────────────────────────────── */

/* Anchor offset so sticky header doesn't cover the calendar on month nav */
.npc-events-calendar {
	scroll-margin-top: 90px;
}
.npc-cal-loading #npc-cal-grid-wrap {
	opacity: 0.5;
	pointer-events: none;
	transition: opacity 0.15s;
}

/* Toggle toolbar */
.npc-cal-toolbar {
	display: flex;
	justify-content: flex-end;
	margin-bottom: 1.25rem;
}
.npc-cal-toggle {
	display: flex;
	border: 1px solid var(--npc-gray-200, #e5e7eb);
	border-radius: 6px;
	overflow: hidden;
}
.npc-cal-toggle-btn {
	background: #fff;
	border: none;
	padding: 0.5rem 1.1rem;
	font-size: 0.9rem;
	font-weight: 500;
	cursor: pointer;
	color: var(--npc-gray-600, #4b5563);
	transition: background 0.15s, color 0.15s;
	display: flex;
	align-items: center;
	gap: 0.4rem;
}
.npc-cal-toggle-btn + .npc-cal-toggle-btn {
	border-left: 1px solid var(--npc-gray-200, #e5e7eb);
}
.npc-cal-toggle-btn[aria-pressed="true"],
.npc-cal-toggle-btn:hover {
	background: var(--npt-main, #1e40af);
	color: #fff;
}

/* Show/hide views */
.npc-events-calendar[data-view="calendar"] .npc-cal-view--list     { display: none; }
.npc-events-calendar[data-view="list"]     .npc-cal-view--calendar  { display: none; }

/* Month navigation */
.npc-cal-nav {
	display: flex;
	align-items: center;
	justify-content: space-between;
	margin-bottom: 0.75rem;
}
.npc-cal-month-label {
	font-size: 1.25rem;
	font-weight: 700;
	margin: 0;
	color: var(--npc-gray-800, #1f2937);
}
.npc-cal-nav-btn {
	display: inline-flex;
	align-items: center;
	gap: 0.3rem;
	padding: 0.4rem 0.9rem;
	border: 1px solid var(--npc-gray-200, #e5e7eb);
	border-radius: 4px;
	font-size: 0.875rem;
	font-weight: 500;
	color: var(--npc-gray-700, #374151);
	text-decoration: none;
	background: #fff;
	transition: background 0.15s, border-color 0.15s;
}
.npc-cal-nav-btn:hover {
	background: var(--npc-gray-50, #f9fafb);
	border-color: var(--npc-gray-400, #9ca3af);
}

/* Calendar grid */
.npc-cal-grid {
	display: grid;
	grid-template-columns: repeat(7, 1fr);
	border: 1px solid var(--npc-gray-200, #e5e7eb);
	border-radius: 8px;
	overflow: hidden;
}
.npc-cal-day-header {
	text-align: center;
	padding: 0.5rem 0.25rem;
	font-size: 0.8rem;
	font-weight: 700;
	letter-spacing: 0.04em;
	text-transform: uppercase;
	background: var(--npt-main, #1e40af);
	color: #fff;
}
.npc-cal-day {
	min-height: 90px;
	padding: 0.35rem 0.4rem;
	border-right: 1px solid var(--npc-gray-100, #f3f4f6);
	border-bottom: 1px solid var(--npc-gray-100, #f3f4f6);
	vertical-align: top;
}
.npc-cal-day:nth-child(7n) { border-right: none; }
.npc-cal-day--other-month { background: var(--npc-gray-50, #f9fafb); }
.npc-cal-day--other-month .npc-cal-day-num { color: var(--npc-gray-300, #d1d5db); }
.npc-cal-day-num {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 26px;
	height: 26px;
	font-size: 0.82rem;
	font-weight: 600;
	color: var(--npc-gray-700, #374151);
	border-radius: 50%;
	margin-bottom: 0.2rem;
}
.npc-cal-day--today .npc-cal-day-num {
	background: var(--npt-accent, #059669);
	color: #fff;
}

/* Event pills on calendar */
.npc-cal-event {
	display: block;
	background: var(--npt-main, #1e40af);
	color: #fff;
	font-size: 0.72rem;
	line-height: 1.3;
	padding: 2px 5px;
	border-radius: 3px;
	margin-bottom: 2px;
	text-decoration: none;
	white-space: nowrap;
	overflow: hidden;
	text-overflow: ellipsis;
}
.npc-cal-event:hover { background: var(--npt-accent, #059669); color: #fff; }
.npc-cal-event-time {
	font-weight: 600;
	opacity: 0.85;
	margin-right: 3px;
}

/* List view within calendar page */
.npc-cal-view--list .npc-event-card {
	display: flex;
	border: 1px solid var(--npc-gray-200, #e5e7eb);
	border-radius: 8px;
	margin-bottom: 1rem;
	overflow: hidden;
	background: #fff;
}
.npc-cal-view--list .npc-event-card__image { width: 200px; flex-shrink: 0; }
.npc-cal-view--list .npc-event-card__image a { display: block; }
.npc-cal-view--list .npc-event-card__image img { width: 200px; height: 160px; object-fit: cover; display: block; }
.npc-cal-view--list .npc-event-card__body { padding: 1.25rem 1.5rem; flex: 1; }
.npc-cal-view--list .npc-event-card__title { font-size: 1.25rem; margin: 0 0 0.5rem; }
.npc-cal-view--list .npc-event-card__title a { text-decoration: none; color: var(--npc-gray-900, #111827); }
.npc-cal-view--list .npc-event-card__title a:hover { color: var(--npt-main, #1e40af); }

@media ( max-width: 640px ) {
	.npc-cal-view--list .npc-event-card__image { display: none; }

	.npc-cal-day { min-height: 60px; padding: 0.2rem; }
	.npc-cal-day-num { width: 22px; height: 22px; font-size: 0.75rem; }
	.npc-cal-event { font-size: 0.65rem; }
	.npc-cal-event-time { display: none; }
	.npc-cal-nav-btn { padding: 0.35rem 0.6rem; font-size: 0.8rem; }
	.npc-cal-month-label { font-size: 1.05rem; }
}

/* =========================================================
   Membership Levels Comparison  [npc_membership_levels]
   ========================================================= */

.npc-levels-comparison {
	margin: 2rem 0;
}

.npc-levels-grid {
	display: grid;
	grid-template-columns: repeat( auto-fit, minmax( 240px, 1fr ) );
	gap: 1.5rem;
	align-items: stretch;
}

.npc-level-card {
	display: flex;
	flex-direction: column;
	background: #fff;
	border: 1px solid #e2e8f0;
	border-radius: 8px;
	overflow: hidden;
	box-shadow: 0 2px 8px rgba(0,0,0,.06);
	position: relative;
}

.npc-level-card--featured {
	border-color: var(--npt-main, #1e40af);
	box-shadow: 0 4px 20px rgba(30,64,175,.15);
	transform: translateY(-4px);
}

.npc-level-card__badge {
	background: var(--npt-main, #1e40af);
	color: #fff;
	text-align: center;
	font-size: 0.75rem;
	font-weight: 700;
	letter-spacing: 0.08em;
	text-transform: uppercase;
	padding: 0.35rem 1rem;
}

.npc-level-card__header {
	background: var(--npt-main, #1e40af);
	color: #fff;
	padding: 1.5rem 1.5rem 1.25rem;
}

.npc-level-card--featured .npc-level-card__header {
	background: var(--npt-main, #1e40af);
}

.npc-level-card--group .npc-level-card__header {
	background: var(--npt-secondary, #475569);
}

.npc-level-card__name {
	font-size: 1.125rem;
	font-weight: 700;
	margin: 0 0 0.5rem;
	color: #fff;
}

.npc-level-card__price {
	display: flex;
	align-items: baseline;
	gap: 0.35rem;
}

.npc-level-card__amount {
	font-size: 2rem;
	font-weight: 800;
	line-height: 1;
}

.npc-level-card__period {
	font-size: 0.875rem;
	opacity: 0.85;
}

.npc-level-card__benefits {
	padding: 1.25rem 1.5rem;
	flex: 1;
	font-size: 0.9375rem;
	color: #374151;
}

.npc-level-card__benefits ul {
	margin: 0;
	padding: 0;
	list-style: none;
}

.npc-level-card__benefits li {
	padding: 0.4rem 0 0.4rem 1.5rem;
	position: relative;
	border-bottom: 1px solid #f1f5f9;
}

.npc-level-card__benefits li:last-child {
	border-bottom: none;
}

.npc-level-card__benefits li::before {
	content: '✓';
	position: absolute;
	left: 0;
	color: var(--npt-accent, #059669);
	font-weight: 700;
}

.npc-level-card__btn {
	display: block;
	text-align: center;
	margin: 0 1.5rem 1.5rem;
}

/* Group memberships section */

.npc-levels-group-section {
	margin-top: 3rem;
	padding-top: 2.5rem;
	border-top: 1px solid #e2e8f0;
}

.npc-levels-group-heading {
	font-size: 1.375rem;
	font-weight: 700;
	color: #1e293b;
	margin: 0 0 0.5rem;
}

.npc-levels-group-intro {
	color: #64748b;
	margin: 0 0 1.5rem;
}

.npc-levels-grid--groups {
	grid-template-columns: repeat( auto-fit, minmax( 220px, 1fr ) );
}

@media ( max-width: 640px ) {
	.npc-level-card--featured {
		transform: none;
	}
}


/* ── Directory: theme-agnostic button and avatar base styles ─────────────── */

.npc-dir-btn {
	padding: .25rem .5rem;
	border: 1px solid #ddd;
	border-radius: 3px;
	text-decoration: none;
	font-size: .8rem;
	color: #444;
	background: #fff;
	display: inline-block;
	line-height: 1.4;
}

.npc-dir-btn--active {
	background: #0073aa;
	color: #fff;
	border-color: #0073aa;
}

.npc-dir-alpha-btn {
	padding: .25rem .5rem;
}

.npc-dir-card__avatar {
	background: #0073aa;
	color: #fff;
}


/* ── Directory: grid cards ───────────────────────────────────────────────── */

.npc-directory__filter-row {
	display: flex;
	flex-wrap: wrap;
	gap: .5rem;
	align-items: center;
	margin-bottom: 1.25rem;
}

.npc-dir-search-input {
	flex: 1;
	min-width: 180px;
	max-width: 280px;
}

.npc-dir-filter-select {
	max-width: 200px;
}

.npc-dir-clear-link {
	color: #666;
	font-size: .875rem;
	text-decoration: none;
}

.npc-dir-view-toggle {
	margin-left: auto;
	display: flex;
	gap: .25rem;
}

.npc-directory__alpha {
	margin-bottom: 1rem;
}

.npc-directory__grid {
	display: grid;
	grid-template-columns: repeat( 5, 1fr );
	gap: 1rem;
	margin-bottom: 1.5rem;
}

@media ( max-width: 1100px ) {
	.npc-directory__grid { grid-template-columns: repeat( 4, 1fr ); }
}
@media ( max-width: 768px ) {
	.npc-directory__grid { grid-template-columns: repeat( 2, 1fr ); }
}
@media ( max-width: 480px ) {
	.npc-directory__grid { grid-template-columns: 1fr; }
}

.npc-dir-card {
	display: flex;
	flex-direction: column;
	align-items: center;
	text-align: center;
	padding: 1.25rem 1rem;
	border: 1px solid #e5e7eb;
	text-decoration: none;
	color: inherit;
	transition: box-shadow .15s;
}

.npc-dir-card:hover {
	box-shadow: 0 2px 8px rgba( 0,0,0,.1 );
}

.npc-dir-card__logo-wrap {
	width: 80px;
	height: 80px;
	display: flex;
	align-items: center;
	justify-content: center;
	margin-bottom: .75rem;
	overflow: hidden;
}

.npc-dir-card__logo {
	max-width: 100%;
	max-height: 100%;
	object-fit: contain;
}

.npc-dir-card__avatar {
	width: 64px;
	height: 64px;
	border-radius: 50%;
	background: #0073aa;
	color: #fff;
	display: flex;
	align-items: center;
	justify-content: center;
	font-size: 1.4rem;
	font-weight: 700;
}

.npc-dir-card__body {
	display: flex;
	flex-direction: column;
	gap: .25rem;
	width: 100%;
}

.npc-dir-card__name {
	font-size: .9rem;
	line-height: 1.3;
	display: block;
}

.npc-dir-card__category {
	font-size: .75rem;
	color: #666;
}

/* ── Directory: list view ─────────────────────────────────────────────────── */

.npc-directory__list {
	width: 100%;
	border-collapse: collapse;
	margin-bottom: 1.5rem;
}

.npc-directory__list thead tr {
	border-bottom: 2px solid #e5e7eb;
	text-align: left;
}

.npc-directory__list th {
	padding: .5rem .75rem;
	font-size: .875rem;
	font-weight: 600;
}

.npc-directory__list tbody tr {
	border-bottom: 1px solid #f0f0f0;
}

.npc-directory__list td {
	padding: .6rem .75rem;
	font-size: .875rem;
	color: #444;
}

.npc-dir-list__name a {
	font-weight: 600;
	text-decoration: none;
}

/* ── Directory: pagination ────────────────────────────────────────────────── */

.npc-directory__pagination {
	display: flex;
	flex-wrap: wrap;
	justify-content: center;
	gap: .25rem;
	margin-top: 1rem;
}

.npc-dir-btn--ellipsis {
	border-color: transparent;
	background: none;
	cursor: default;
	pointer-events: none;
	color: #888;
}

/* ── Directory: profile page ──────────────────────────────────────────────── */

.npc-dir-profile__back {
	margin-bottom: 1.5rem;
	font-size: .9rem;
}

.npc-dir-profile__back a {
	text-decoration: none;
	color: #0073aa;
}

.npc-dir-profile__header {
	display: flex;
	align-items: flex-start;
	gap: 1.5rem;
	margin-bottom: 2rem;
}

.npc-dir-profile__logo-wrap {
	flex-shrink: 0;
	width: 120px;
}

.npc-dir-profile__logo {
	max-width: 120px;
	height: auto;
	display: block;
}

.npc-dir-profile__avatar {
	width: 80px;
	height: 80px;
	font-size: 1.75rem;
}

.npc-dir-profile__company {
	margin: 0 0 .2rem;
	font-size: 1.5rem;
}

.npc-dir-profile__contact {
	margin: 0 0 .5rem;
	color: #555;
}

.npc-dir-profile__badge {
	display: inline-block;
	padding: .2rem .65rem;
	background: #f0f7ff;
	color: #0073aa;
	font-size: .8rem;
	font-weight: 600;
}

.npc-dir-profile__details {
	max-width: 560px;
	display: grid;
	gap: .75rem;
}

.npc-dir-profile__row {
	display: flex;
	gap: .75rem;
	align-items: baseline;
}

.npc-dir-profile__label {
	color: #666;
	font-size: .875rem;
	min-width: 100px;
	flex-shrink: 0;
}

.npc-dir-profile__value {
	color: #222;
}

.npc-dir-profile__address {
	font-style: normal;
	line-height: 1.6;
}

.npc-dir-profile__row--bio {
	align-items: flex-start;
}

.npc-dir-profile__limited {
	color: #666;
}

/* ── Dashboard: logo upload ──────────────────────────────────────────────── */

.npc-dir-logo-preview {
	display: flex;
	align-items: center;
	gap: 1rem;
	margin-bottom: .75rem;
}

.npc-dir-logo-preview img {
	max-width: 80px;
	height: auto;
	border: 1px solid #ddd;
	padding: 3px;
}

.npc-dir-logo-remove {
	font-size: .875rem;
	color: #666;
	cursor: pointer;
	display: flex;
	align-items: center;
	gap: .35rem;
}

.npc-dir-logo-input {
	display: block;
	margin-top: .25rem;
}

.npc-field-desc {
	font-size: .8rem;
	color: #888;
	margin: .35rem 0 0;
}

/* ── Newsletter signup ─────────────────────────────── */
.npc-newsletter__label {
	font-size: 0.925rem;
	font-weight: 700;
	letter-spacing: 0.06em;
	text-transform: uppercase;
	color: rgba( 255, 255, 255, 0.7 );
	margin: 0 0 0.75rem;
}
.npc-newsletter__description {
	font-size: 0.9375rem;
	color: rgba( 255, 255, 255, 0.85 );
	margin: 0 0 0.75rem;
}
.npc-newsletter--light .npc-newsletter__description { color: var(--npt-gray-800, #1e293b); }
.npc-newsletter__row {
	display: flex;
	gap: 0;
}
.npc-newsletter__input {
	flex: 1;
	padding: 0.6em 1em;
	border: 2px solid rgba(255,255,255,0.3);
	border-right: none;
	border-radius: 0;
	background: rgba(255,255,255,0.1);
	color: #fff;
	font-size: 0.9375rem;
	outline: none;
}
.npc-newsletter__input::placeholder { color: rgba(255,255,255,0.55); }
.npc-newsletter__input:focus { border-color: rgba(255,255,255,0.7); }
.npc-newsletter__btn {
	padding: 0.6em 1.25em;
	border: 2px solid var(--npt-ch-orange, #d69108);
	border-radius: 0;
	background: var(--npt-ch-orange, #d69108);
	color: #fff;
	font-size: 0.9375rem;
	font-weight: 600;
	cursor: pointer;
	transition: background 0.2s, color 0.2s;
	white-space: nowrap;
}
.npc-newsletter__btn:hover {
	background: #fff;
	color: var(--npt-ch-orange, #d69108);
}
.npc-newsletter__btn:disabled { opacity: 0.6; cursor: default; }
.npc-newsletter__message {
	margin: 0.5rem 0 0;
	font-size: 0.875rem;
	min-height: 1.2em;
}
.npc-newsletter__message.is-success { color: #86efac; }
.npc-newsletter__message.is-error   { color: #fca5a5; }

/* Light variant */
.npc-newsletter--light .npc-newsletter__label { color: var(--npt-gray-800, #1e293b); }
.npc-newsletter--light .npc-newsletter__input {
	background: #fff;
	border-color: #cbd5e1;
	border-right: none;
	color: #1e293b;
}
.npc-newsletter--light .npc-newsletter__input::placeholder { color: #94a3b8; }
.npc-newsletter--light .npc-newsletter__message.is-success { color: #16a34a; }
.npc-newsletter--light .npc-newsletter__message.is-error   { color: #dc2626; }

/* Annual contributions summary row */
.npc-contrib-summary {
	display: flex;
	justify-content: space-between;
	align-items: center;
	padding: 0.75rem 0;
	margin-top: 0.5rem;
	border-top: 1px solid #e7e5e4;
	font-weight: 700;
	font-size: 0.9375rem;
}

.npc-panel-desc {
	font-size: 0.875rem;
	color: #78716c;
	margin: 0 0 1rem;
	line-height: 1.5;
}
