.healthcare-jobs-search-form {
	background: #f6f7f7;
	border: 1px solid #dcdcde;
	border-radius: 6px;
	padding: 16px;
	margin-bottom: 20px;
}

.healthcare-jobs-search-row {
	display: flex;
	flex-wrap: wrap;
	gap: 8px;
	margin-bottom: 10px;
}

.healthcare-jobs-input {
	flex: 1 1 200px;
	padding: 8px 10px;
	border: 1px solid #c3c4c7;
	border-radius: 4px;
	font-size: 14px;
}

.healthcare-jobs-search-btn {
	padding: 8px 20px;
	background: #2271b1;
	color: #fff;
	border: none;
	border-radius: 4px;
	cursor: pointer;
	font-size: 14px;
}

.healthcare-jobs-search-btn:hover {
	background: #135e96;
}

.healthcare-jobs-filter-row {
	display: flex;
	flex-wrap: wrap;
	gap: 8px;
}

.healthcare-jobs-filter-row select {
	padding: 6px 8px;
	border: 1px solid #c3c4c7;
	border-radius: 4px;
	font-size: 13px;
	flex: 1 1 150px;
}

.healthcare-jobs-results-meta {
	margin-bottom: 12px;
	color: #50575e;
	font-size: 14px;
}

/*
 * Results grid: 3 columns on desktop, 2 on tablet, 1 on mobile.
 * min-width: 0 on the cards below is required alongside this grid - grid
 * items default to min-width: auto, which lets a long unbroken string
 * (a long job title, a URL-like company name) force the column wider than
 * its track and cause page-level horizontal scrolling.
 *
 * !important on the layout-defining declarations only (never on colour,
 * spacing, or typography below): many WordPress themes and page builders
 * (this grid ships inside an Elementor page on the live site) load a
 * global list/article reset after plugin stylesheets, which otherwise
 * silently wins on equal specificity and collapses the grid back to a
 * plain stacked list with no visible error or console warning.
 */
.healthcare-jobs-list {
	display: grid !important;
	grid-template-columns: repeat( 3, minmax( 0, 1fr ) ) !important;
	gap: 20px;
	align-items: stretch;
	list-style: none;
	margin: 0;
	padding: 0;
}

.healthcare-jobs-card {
	display: flex !important;
	flex-direction: column;
	min-width: 0;
	height: 100%;
	border: 1px solid #dcdcde;
	border-radius: 8px;
	padding: 20px;
	background: #fff;
	box-shadow: 0 1px 2px rgba( 16, 24, 40, 0.04 );
}

.healthcare-jobs-card-title {
	margin: 0 0 8px;
	font-size: 18px;
	line-height: 1.35;
	font-weight: 700;
	color: #1d2327;
	/* Keep long titles from breaking the card layout - full title stays
	   on the single job page, this is a card-level display limit only. */
	display: -webkit-box;
	-webkit-line-clamp: 2;
	-webkit-box-orient: vertical;
	overflow: hidden;
}

.healthcare-jobs-card-title a {
	color: inherit;
	text-decoration: none;
	overflow-wrap: anywhere;
}

.healthcare-jobs-card-title a:hover {
	color: #2271b1;
}

.healthcare-jobs-card-meta {
	display: flex;
	flex-wrap: wrap;
	gap: 6px 8px;
	align-items: center;
	margin-bottom: 10px;
	font-size: 13px;
	color: #50575e;
}

.healthcare-jobs-card-company,
.healthcare-jobs-card-location {
	overflow-wrap: anywhere;
}

.healthcare-jobs-card-badge {
	background: #f0f0f1;
	border-radius: 12px;
	padding: 2px 10px;
	font-size: 12px;
	white-space: nowrap;
}

.healthcare-jobs-card-badge-category {
	background: #e7f2fa;
	color: #135e96;
}

.healthcare-jobs-card-salary {
	font-weight: 600;
	margin-bottom: 8px;
}

.healthcare-jobs-card-excerpt {
	color: #3c434a;
	font-size: 14px;
	line-height: 1.55;
	margin: 0 0 14px;
	overflow-wrap: anywhere;
	/* Short excerpt only - the full description lives on the job page. */
	display: -webkit-box;
	-webkit-line-clamp: 3;
	-webkit-box-orient: vertical;
	overflow: hidden;
}

.healthcare-jobs-card-footer {
	display: flex;
	justify-content: space-between;
	align-items: center;
	gap: 10px;
	font-size: 13px;
	color: #646970;
	/* Pushes the footer (date + Apply button) to the bottom of the card
	   regardless of how much content sits above it, without a fixed
	   card height. */
	margin-top: auto;
	padding-top: 12px;
}

.healthcare-jobs-card-apply {
	display: inline-block;
	background: #2271b1;
	color: #fff;
	padding: 8px 16px;
	border-radius: 4px;
	text-decoration: none;
	font-size: 13px;
	font-weight: 600;
	white-space: nowrap;
}

.healthcare-jobs-card-apply:hover {
	background: #135e96;
	color: #fff;
}

.healthcare-jobs-empty {
	grid-column: 1 / -1;
	padding: 30px;
	text-align: center;
	color: #646970;
}

.healthcare-jobs-card-title a:focus-visible,
.healthcare-jobs-card-apply:focus-visible,
.healthcare-jobs-search-btn:focus-visible,
.healthcare-jobs-page-btn:focus-visible,
.healthcare-jobs-apply-btn:focus-visible,
.healthcare-jobs-input:focus-visible,
.healthcare-jobs-filter-row select:focus-visible {
	outline: 2px solid #2271b1;
	outline-offset: 2px;
}

.healthcare-jobs-pagination {
	display: flex;
	flex-wrap: wrap;
	gap: 6px;
	margin-top: 20px;
	justify-content: center;
}

.healthcare-jobs-page-btn {
	padding: 6px 12px;
	border: 1px solid #c3c4c7;
	background: #fff;
	border-radius: 4px;
	cursor: pointer;
}

.healthcare-jobs-page-btn.is-active {
	background: #2271b1;
	color: #fff;
	border-color: #2271b1;
}

.healthcare-jobs-loading {
	opacity: 0.5;
	pointer-events: none;
}

/* Single job page */
.healthcare-jobs-container {
	max-width: 800px;
	margin: 0 auto;
	padding: 24px 16px;
}

.healthcare-jobs-notice {
	padding: 12px 16px;
	border-radius: 6px;
	margin-bottom: 16px;
	font-size: 14px;
}

.healthcare-jobs-notice-source {
	background: #f0f6fc;
	color: #1d2327;
	border: 1px solid #c5d9ed;
}

.healthcare-jobs-notice-closed {
	background: #fcf0f1;
	color: #8a1f1f;
	border: 1px solid #f3c6c6;
}

.healthcare-jobs-single-header h1 {
	margin-bottom: 8px;
}

.healthcare-jobs-single-meta {
	display: flex;
	flex-wrap: wrap;
	gap: 10px;
	align-items: center;
	margin-bottom: 10px;
	font-size: 14px;
}

.healthcare-jobs-single-salary {
	font-weight: 700;
	font-size: 16px;
	margin-bottom: 6px;
}

.healthcare-jobs-single-date {
	color: #646970;
	font-size: 13px;
	margin-bottom: 16px;
}

.healthcare-jobs-apply-btn {
	display: inline-block;
	background: #2271b1;
	color: #fff;
	padding: 12px 28px;
	border-radius: 4px;
	text-decoration: none;
	font-weight: 600;
	margin: 10px 0 20px;
}

.healthcare-jobs-apply-btn:hover {
	background: #135e96;
	color: #fff;
}

.healthcare-jobs-single-section {
	margin: 24px 0;
}

.healthcare-jobs-single-content {
	line-height: 1.7;
}

.healthcare-jobs-back-link {
	margin-top: 30px;
}

/* Tablet: 2-column results grid. The search bar and filter row stay full
   width at every size - only the job results reflow into columns. */
@media ( max-width: 1024px ) {
	.healthcare-jobs-list {
		grid-template-columns: repeat( 2, minmax( 0, 1fr ) ) !important;
	}
}

/* Mobile: single column. */
@media ( max-width: 767px ) {
	.healthcare-jobs-list {
		grid-template-columns: 1fr !important;
	}
}

@media ( max-width: 600px ) {
	.healthcare-jobs-search-row,
	.healthcare-jobs-filter-row {
		flex-direction: column;
	}

	.healthcare-jobs-card-footer {
		flex-direction: column;
		align-items: flex-start;
		gap: 8px;
	}
}
