/* ── Resume Map block ─────────────────────────────────────────────────────── */
.wcb-resume-map-block {
	border-radius: var(--wcb-radius-xl, 12px);
	overflow: hidden;
	border: 1px solid var(--wcb-border, #e2e8f0);
	font-family: inherit;
}

.wcb-job-map-canvas {
	width: 100%;
	display: block;
}

/* ── Location search toolbar ─────────────────────────────────────────────── */
/* render.php reuses job-map's .wcb-jm-* toolbar markup plus its own
 * .wcb-rm-location-input. WP loads block styles on demand, so resume-map
 * rendered without job-map on the page would otherwise have an unstyled,
 * cramped toolbar. Rules are scoped under .wcb-resume-map-block to stay
 * self-contained without colliding with job-map's own copy. */
.wcb-resume-map-block .wcb-jm-toolbar {
	display: flex;
	gap: var(--wcb-space-sm, 8px);
	align-items: center;
	padding: var(--wcb-space-md, 12px);
	background: var( --wcb-base, #ffffff );
	border-bottom: 1px solid var(--wcb-border, #e2e8f0);
	flex-wrap: wrap;
}

.wcb-resume-map-block .wcb-rm-location-input {
	flex: 1;
	min-width: 180px;
	padding: var(--wcb-space-sm, 8px) var(--wcb-space-md, 12px);
	border: 1px solid var(--wcb-border, #e2e8f0);
	border-radius: var(--wcb-radius-sm, 4px);
	font-size: var(--wcb-text-base, 14px);
	font-family: inherit;
	color: var(--wcb-contrast, #0f172a);
}

.wcb-resume-map-block .wcb-rm-location-input:focus {
	border-color: var(--wcb-primary, #2563eb);
	box-shadow: var(--wcb-shadow-focus, 0 0 0 3px rgba(37, 99, 235, 0.12));
}

.wcb-resume-map-block .wcb-rm-location-input:focus-visible {
	outline: 2px solid var(--wcb-primary, #2563eb);
	outline-offset: 2px;
	border-color: var(--wcb-primary, #2563eb);
	box-shadow: var(--wcb-shadow-focus, 0 0 0 3px rgba(37, 99, 235, 0.12));
}

.wcb-resume-map-block .wcb-jm-radius-select {
	padding: var(--wcb-space-sm, 8px) var(--wcb-space-md, 12px);
	border: 1px solid var(--wcb-border, #e2e8f0);
	border-radius: var(--wcb-radius-md, 8px);
	font-size: var(--wcb-text-base, 14px);
	font-family: inherit;
	color: var(--wcb-contrast, #0f172a);
	background: var( --wcb-base, #ffffff );
}

.wcb-resume-map-block .wcb-jm-radius-select:focus {
	border-color: var(--wcb-primary, #2563eb);
	box-shadow: var(--wcb-shadow-focus, 0 0 0 3px rgba(37, 99, 235, 0.12));
}

.wcb-resume-map-block .wcb-jm-radius-select:focus-visible {
	outline: 2px solid var(--wcb-primary, #2563eb);
	outline-offset: 2px;
	border-color: var(--wcb-primary, #2563eb);
	box-shadow: var(--wcb-shadow-focus, 0 0 0 3px rgba(37, 99, 235, 0.12));
}

.wcb-resume-map-block .wcb-jm-location-btn {
	padding: var(--wcb-space-sm, 8px) var(--wcb-space-lg, 16px);
	background: var(--wcb-primary-strong);
	color: var(--wcb-on-primary, #ffffff);
	border: none;
	border-radius: var(--wcb-radius-md, 8px);
	font-size: var(--wcb-text-base, 14px);
	font-family: inherit;
	font-weight: var(--wcb-font-semibold, 600);
	cursor: pointer;
	transition: background var(--wcb-transition-fast, 0.12s);
}

/* color/border restated at every state, and the missing focus-visible/
 * active states added to match job-map's own button (this was a drifted
 * duplicate copy missing both - Basecamp 10345889841). */
.wcb-resume-map-block .wcb-jm-location-btn:hover:not(:disabled) {
	background: var(--wcb-primary-dark, #1d4ed8);
	color: var(--wcb-on-primary, #ffffff);
	border: none;
}

.wcb-resume-map-block .wcb-jm-location-btn:focus-visible {
	outline: 2px solid transparent !important;
	box-shadow: var(--wcb-shadow-focus, 0 0 0 3px rgba(37, 99, 235, 0.12));
	color: var(--wcb-on-primary, #ffffff);
	border: none;
}

.wcb-resume-map-block .wcb-jm-location-btn:active:not(:disabled) {
	background: var(--wcb-primary-dark, #1d4ed8);
	color: var(--wcb-on-primary, #ffffff);
	border: none;
	transform: scale(0.97);
}

.wcb-resume-map-block .wcb-jm-location-btn:disabled {
	opacity: 0.55;
	cursor: not-allowed;
}

.wcb-resume-map-block .wcb-jm-myloc-btn {
	padding: var(--wcb-space-sm, 8px) var(--wcb-space-md, 12px);
	background: var(--wcb-surface, #f1f5f9);
	border: 1px solid var(--wcb-border, #e2e8f0);
	border-radius: var(--wcb-radius-sm, 4px);
	font-size: var(--wcb-text-lg, 1rem);
	cursor: pointer;
	line-height: 1;
	transition: background var(--wcb-transition-fast, 0.12s);
}

.wcb-resume-map-block .wcb-jm-myloc-btn:hover:not(:disabled) {
	background: var(--wcb-bg-hover, #f1f5f9);
	border-color: var(--wcb-text-tertiary, #9ca3af);
}

.wcb-resume-map-block .wcb-jm-myloc-btn:disabled {
	opacity: 0.55;
	cursor: not-allowed;
}

/* ── Status / error live region ──────────────────────────────────────────── */
/* Written by view.js (state.statusMessage): geocode + geolocation failures and
 * radius-search result counts. Ships `hidden` from render.php and stays hidden
 * until there is something to announce. */
.wcb-resume-map-block .wcb-rm-status {
	margin: 0;
	padding: var(--wcb-space-sm, 8px) var(--wcb-space-md, 12px);
	background: var(--wcb-surface, #f1f5f9);
	border-bottom: 1px solid var(--wcb-border, #e2e8f0);
	color: var(--wcb-contrast, #0f172a);
	font-size: var(--wcb-text-base, 14px);
}

.wcb-resume-map-block .wcb-rm-status[hidden] {
	display: none;
}

/* ── Empty state (no geocoded resumes) ───────────────────────────────────── */
/* ── Reduced motion ──────────────────────────────────────────────────────── */
@media (prefers-reduced-motion: reduce) {
	.wcb-resume-map-block .wcb-jm-location-btn,
	.wcb-resume-map-block .wcb-jm-myloc-btn {
		transition: none;
	}
}

/* Leaflet's +/- are 30px; the contract is a 40px tap target on touch and
 * phones. leaflet.css's own `.leaflet-touch .leaflet-bar a` is the same
 * specificity as the plain wrapper-scoped selector below and loads after it,
 * so it was winning outright. Leaflet adds `.leaflet-touch` to the map
 * container on any touch-capable device — matching that ancestor too (as
 * leaflet.css's own rule does) outranks it regardless of source order. */
@media (pointer: coarse), (max-width: 640px) {
	[class*="wp-block-wcb-"] .leaflet-bar a,
	[class*="wp-block-wp-career-board"] .leaflet-bar a,
	[class*="wp-block-wcb-"] .leaflet-touch .leaflet-bar a,
	[class*="wp-block-wp-career-board"] .leaflet-touch .leaflet-bar a {
		width: 2.5rem;
		height: 2.5rem;
		line-height: 2.5rem;
	}
}

.wcb-resume-map-block .wcb-rm-location-input,
.wcb-resume-map-block .wcb-jm-radius-select,
.wcb-resume-map-block .wcb-jm-toolbar button {
	min-height: var(--wcb-control-h, 2.75rem);
}
