
.ccaflchap-map,
.ccaflchap-map * { box-sizing:border-box; }

.ccaflchap-map {
	--ccaflchap-map-bg:#ffffff;
	--ccaflchap-county:#e5e7eb;
	--ccaflchap-county-border:#b6bcc3;
	--ccaflchap-state-outline:#8b9299;
	--ccaflchap-county-label:#4b5563;
	--ccaflchap-point:#dc2626;
	--ccaflchap-point-active:#991b1b;
	--ccaflchap-popup-accent:#dc2626;
	--ccaflchap-text:#1f2937;
	--ccaflchap-muted:#6b7280;
	--ccaflchap-soft:#f7f9fa;
	--ccaflchap-line:#e6eaed;
	--ccaflchap-max-width:1180px;

	width:100%;
	max-width:var(--ccaflchap-max-width);
	margin-inline:auto;
	font-family:inherit;
	color:var(--ccaflchap-text);
}

.ccaflchap-map__header {
	margin-bottom:24px;
}

.ccaflchap-map__header > div {
	max-width:760px;
}

.ccaflchap-map__eyebrow {
	display:block;
	margin-bottom:10px;
	color:var(--ccaflchap-popup-accent);
	font-size:12px;
	font-weight:800;
	letter-spacing:.14em;
}

.ccaflchap-map__header h2 {
	margin:0;
	color:var(--ccaflchap-text);
	font-size:clamp(32px,4vw,56px);
	line-height:1;
	letter-spacing:-.04em;
}

.ccaflchap-map__header p {
	max-width:660px;
	margin:14px 0 0;
	color:var(--ccaflchap-muted);
	font-size:16px;
	line-height:1.6;
}

/* Top toolbar */
.ccaflchap-map__toolbar {
	display:flex;
	align-items:end;
	justify-content:space-between;
	gap:22px;
	margin-bottom:14px;
	padding:14px 16px;
	border:1px solid var(--ccaflchap-line);
	border-radius:16px;
	background:#fff;
}

.ccaflchap-map__filter-control {
	min-width:250px;
	max-width:320px;
	width:100%;
}

.ccaflchap-map__filter-control label {
	display:block;
	margin-bottom:7px;
	color:#4b5563;
	font-size:11px;
	font-weight:800;
	letter-spacing:.08em;
	text-transform:uppercase;
}

.ccaflchap-map__select-wrap {
	position:relative;
}

.ccaflchap-map__direction-select {
	display:block;
	width:100%;
	height:44px;
	padding:0 42px 0 13px;
	border:1px solid #d7dde1;
	border-radius:11px;
	background:#fff;
	color:#27323a;
	font:600 13px/1 inherit;
	appearance:none;
	-webkit-appearance:none;
	cursor:pointer;
	outline:none;
}

.ccaflchap-map__direction-select:focus {
	border-color:color-mix(in srgb,var(--ccaflchap-point) 55%,#d7dde1);
	box-shadow:0 0 0 3px color-mix(in srgb,var(--ccaflchap-point) 10%,transparent);
}

.ccaflchap-map__select-icon {
	position:absolute;
	top:50%;
	right:14px;
	transform:translateY(-52%);
	color:#818a91;
	font-size:15px;
	pointer-events:none;
}

.ccaflchap-map__toolbar-note {
	display:flex;
	align-items:center;
	gap:9px;
	padding-bottom:10px;
	color:#7a858c;
	font-size:12px;
}

.ccaflchap-map__toolbar-dot {
	width:8px;
	height:8px;
	border-radius:50%;
	background:var(--ccaflchap-point);
	box-shadow:0 0 0 5px color-mix(in srgb,var(--ccaflchap-point) 9%,transparent);
}

/* Main module */
.ccaflchap-map__layout {
	display:grid;
	grid-template-columns:minmax(240px,29%) minmax(0,1fr);
	align-items:stretch;
	border:1px solid var(--ccaflchap-line);
	border-radius:20px;
	background:#fff;
	overflow:visible;
}

.ccaflchap-map__layout--map-only {
	grid-template-columns:1fr;
}

.ccaflchap-map__layout--below {
	grid-template-columns:1fr;
}

.ccaflchap-map__directory {
	display:flex;
	flex-direction:column;
	min-width:0;
	max-height:730px;
	border-right:1px solid var(--ccaflchap-line);
	background:#fff;
	border-radius:20px 0 0 20px;
	overflow:hidden;
}

.ccaflchap-map__layout--below .ccaflchap-map__directory {
	order:2;
	max-height:none;
	border-right:0;
	border-top:1px solid var(--ccaflchap-line);
	border-radius:0 0 20px 20px;
}

.ccaflchap-map__layout--below .ccaflchap-map__map-panel {
	order:1;
}

.ccaflchap-map__directory-head {
	display:flex;
	align-items:center;
	justify-content:space-between;
	gap:15px;
	padding:18px 18px 16px;
	border-bottom:1px solid var(--ccaflchap-line);
	background:#fbfcfc;
}

.ccaflchap-map__directory-head > div {
	display:flex;
	flex-direction:column;
	gap:3px;
}

.ccaflchap-map__directory-eyebrow {
	color:#98a1a7;
	font-size:9px;
	font-weight:800;
	letter-spacing:.12em;
}

.ccaflchap-map__directory-head strong {
	color:#2d3740;
	font-size:14px;
	font-weight:700;
}

.ccaflchap-map__visible-count {
	display:inline-flex;
	align-items:center;
	justify-content:center;
	min-width:30px;
	height:26px;
	padding:0 9px;
	border-radius:999px;
	background:#eef1f3;
	color:#59636a;
	font-size:11px;
	font-weight:700;
}

.ccaflchap-map__list {
	flex:1;
	min-height:0;
	overflow:auto;
	padding:6px 8px 10px;
	scrollbar-width:thin;
}

.ccaflchap-map__layout--below .ccaflchap-map__list {
	display:grid;
	grid-template-columns:repeat(3,minmax(0,1fr));
	gap:6px;
	padding:10px;
	overflow:visible;
}

.ccaflchap-map__list-item {
	display:grid;
	grid-template-columns:10px minmax(0,1fr) auto;
	align-items:center;
	gap:11px;
	width:100%;
	padding:12px 10px;
	border:0;
	border-radius:10px;
	background:transparent;
	color:inherit;
	text-align:left;
	font:inherit;
	cursor:pointer;
	transition:background .15s ease,transform .15s ease;
}

.ccaflchap-map__list-item + .ccaflchap-map__list-item {
	margin-top:1px;
}

.ccaflchap-map__layout--below .ccaflchap-map__list-item + .ccaflchap-map__list-item {
	margin-top:0;
}

.ccaflchap-map__list-item:hover {
	background:#f5f7f8;
}

.ccaflchap-map__list-item.ccaflchap-map-state-active {
	background:color-mix(in srgb,var(--ccaflchap-point) 8%,white);
}

.ccaflchap-map__list-item[hidden] {
	display:none;
}

.ccaflchap-map__list-dot {
	width:7px;
	height:7px;
	border-radius:50%;
	background:var(--ccaflchap-point);
	box-shadow:0 0 0 4px color-mix(in srgb,var(--ccaflchap-point) 8%,transparent);
}

.ccaflchap-map__list-item.ccaflchap-map-state-active .ccaflchap-map__list-dot {
	background:var(--ccaflchap-point-active);
}

.ccaflchap-map__list-copy {
	display:flex;
	flex-direction:column;
	gap:2px;
	min-width:0;
}

.ccaflchap-map__list-copy strong {
	overflow:hidden;
	color:#38434a;
	font-size:12.5px;
	font-weight:650;
	line-height:1.25;
	text-overflow:ellipsis;
	white-space:nowrap;
}

.ccaflchap-map__list-copy small {
	color:#9aa2a8;
	font-size:9.5px;
	font-weight:500;
}

.ccaflchap-map__list-arrow {
	color:#a3abb0;
	font-size:14px;
	transition:transform .15s ease,color .15s ease;
}

.ccaflchap-map__list-item:hover .ccaflchap-map__list-arrow,
.ccaflchap-map__list-item.ccaflchap-map-state-active .ccaflchap-map__list-arrow {
	color:var(--ccaflchap-point);
	transform:translateX(2px);
}

.ccaflchap-map__no-results {
	padding:18px;
	color:#8a949b;
	font-size:12px;
}

.ccaflchap-map__map-panel {
	position:relative;
	min-width:0;
	overflow:visible;
}

.ccaflchap-map__stage {
	position:relative;
	width:100%;
	min-height:100%;
	padding:16px;
	overflow:visible;
	border-radius:0 20px 20px 0;
	background:var(--ccaflchap-map-bg);
}

.ccaflchap-map__layout--map-only .ccaflchap-map__stage {
	border-radius:20px;
}

.ccaflchap-map__layout--below .ccaflchap-map__stage {
	border-radius:20px 20px 0 0;
}

.ccaflchap-map__svg {
	display:block;
	width:100%;
	height:auto;
	max-height:730px;
	margin:auto;
	overflow:visible;
}

.ccaflchap-map__county {
	fill:var(--ccaflchap-county);
	stroke:var(--ccaflchap-county-border);
	stroke-width:1.15;
	vector-effect:non-scaling-stroke;
}

.ccaflchap-map__state-outline {
	fill:none;
	stroke:var(--ccaflchap-state-outline);
	stroke-width:2.5;
	vector-effect:non-scaling-stroke;
	pointer-events:none;
}

.ccaflchap-map__county-label {
	fill:var(--ccaflchap-county-label);
	opacity:.60;
	text-anchor:middle;
	dominant-baseline:middle;
	font-family:Arial,Helvetica,sans-serif;
	font-weight:600;
	letter-spacing:-.02em;
	pointer-events:none;
	user-select:none;
}

/* chapter points */
.ccaflchap-map__point {
	cursor:pointer;
	outline:none;
}

.ccaflchap-map__point[hidden] {
	display:none;
}

.ccaflchap-map__point-hit {
	fill:transparent;
	pointer-events:all;
}

.ccaflchap-map__point-halo {
	fill:var(--ccaflchap-point);
	opacity:.10;
	transition:r .18s ease,opacity .18s ease,fill .18s ease;
}

.ccaflchap-map__point-core {
	fill:var(--ccaflchap-point);
	stroke:#fff;
	stroke-width:4;
	vector-effect:non-scaling-stroke;
	filter:drop-shadow(0 2px 3px rgba(0,0,0,.16));
	transition:r .18s ease,fill .18s ease;
}

.ccaflchap-map__point.ccaflchap-map-state-active .ccaflchap-map__point-core {
	fill:var(--ccaflchap-point-active);
	r:13;
}

.ccaflchap-map__point.ccaflchap-map-state-active .ccaflchap-map__point-halo {
	fill:var(--ccaflchap-point-active);
	r:27;
	opacity:.15;
}

.ccaflchap-map__point:focus .ccaflchap-map__point-core {
	stroke-width:6;
}

/* zoom */
.ccaflchap-map__zoom {
	position:absolute;
	top:14px;
	right:14px;
	z-index:25;
	display:flex;
	flex-direction:column;
	overflow:hidden;
	border:1px solid rgba(31,41,55,.10);
	border-radius:10px;
	background:#fff;
	box-shadow:0 6px 18px rgba(17,24,39,.08);
}

.ccaflchap-map__zoom button {
	display:flex;
	align-items:center;
	justify-content:center;
	width:34px;
	height:32px;
	padding:0;
	border:0;
	border-bottom:1px solid #edf0f2;
	background:#fff;
	color:#49535a;
	font:600 17px/1 Arial,sans-serif;
	cursor:pointer;
}

.ccaflchap-map__zoom button:last-child {
	border-bottom:0;
}

.ccaflchap-map__zoom button:hover {
	background:#f7f8f9;
}

/* popup */
.ccaflchap-map__popup {
	position:absolute;
	z-index:60;
	width:310px;
	max-width:calc(100% - 26px);
	border:1px solid rgba(31,41,55,.09);
	border-radius:15px;
	background:#fff;
	box-shadow:0 16px 44px rgba(17,24,39,.16);
	transform:translate(-50%,calc(-100% - 17px));
	overflow:visible;
}

.ccaflchap-map__popup[hidden] {
	display:none;
}

.ccaflchap-map__popup::after {
	content:"";
	position:absolute;
	left:50%;
	bottom:-8px;
	width:16px;
	height:16px;
	border-right:1px solid rgba(31,41,55,.09);
	border-bottom:1px solid rgba(31,41,55,.09);
	background:#fff;
	transform:translateX(-50%) rotate(45deg);
}

.ccaflchap-map__popup.ccaflchap-map-state-popup-below {
	transform:translate(-50%,17px);
}

.ccaflchap-map__popup.ccaflchap-map-state-popup-below::after {
	top:-8px;
	bottom:auto;
	border-right:0;
	border-bottom:0;
	border-left:1px solid rgba(31,41,55,.09);
	border-top:1px solid rgba(31,41,55,.09);
}

.ccaflchap-map__popup-close {
	position:absolute;
	top:9px;
	right:9px;
	z-index:2;
	display:flex;
	align-items:center;
	justify-content:center;
	width:29px;
	height:29px;
	padding:0;
	border:0;
	border-radius:50%;
	background:rgba(255,255,255,.95);
	color:#566168;
	font:400 21px/1 Arial,sans-serif;
	cursor:pointer;
}

.ccaflchap-map__popup-image {
	display:block;
	width:100%;
	height:120px;
	object-fit:cover;
	border-radius:15px 15px 0 0;
	background:#f3f4f6;
}

.ccaflchap-map__popup-body {
	padding:16px;
}

.ccaflchap-map__popup-kicker {
	margin-bottom:5px;
	color:var(--ccaflchap-popup-accent);
	font-size:9px;
	font-weight:800;
	letter-spacing:.12em;
}

.ccaflchap-map__popup-title {
	margin:0;
	padding-right:24px;
	color:#26323a;
	font-size:18px;
	line-height:1.2;
	letter-spacing:-.02em;
}

.ccaflchap-map__popup-description {
	margin-top:8px;
	color:#747f86;
	font-size:11.5px;
	line-height:1.55;
}

.ccaflchap-map__popup-contact {
	margin-top:11px;
	padding:9px 10px;
	border-radius:9px;
	background:#f5f7f8;
	color:#58636a;
	font-size:10.5px;
	line-height:1.5;
}

.ccaflchap-map__popup-contact a {
	color:var(--ccaflchap-popup-accent);
}

.ccaflchap-map__popup-link {
	display:flex;
	align-items:center;
	justify-content:space-between;
	gap:12px;
	margin-top:12px;
	padding:10px 11px;
	border-radius:9px;
	background:var(--ccaflchap-popup-accent);
	color:#fff !important;
	text-decoration:none !important;
	font-size:11.5px;
	font-weight:800;
}

.ccaflchap-map__hint {
	position:absolute;
	left:14px;
	bottom:14px;
	display:inline-flex;
	align-items:center;
	gap:8px;
	padding:8px 11px;
	border:1px solid rgba(31,41,55,.07);
	border-radius:999px;
	background:rgba(255,255,255,.95);
	color:#69747a;
	font-size:10.5px;
	font-weight:700;
	pointer-events:none;
}

.ccaflchap-map__hint span {
	width:7px;
	height:7px;
	border-radius:50%;
	background:var(--ccaflchap-point);
	box-shadow:0 0 0 4px color-mix(in srgb,var(--ccaflchap-point) 9%,transparent);
}

.ccaflchap-map__source {
	margin-top:7px;
	color:#a2a9ae;
	font-size:8.5px;
	text-align:right;
}

@media(max-width:900px) {
	.ccaflchap-map__layout,
	.ccaflchap-map__layout--below {
		grid-template-columns:1fr;
	}

	.ccaflchap-map__directory {
		max-height:320px;
		border-right:0;
		border-bottom:1px solid var(--ccaflchap-line);
		border-radius:20px 20px 0 0;
	}

	.ccaflchap-map__layout--below .ccaflchap-map__directory {
		max-height:none;
		border-top:1px solid var(--ccaflchap-line);
		border-bottom:0;
		border-radius:0 0 20px 20px;
	}

	.ccaflchap-map__stage {
		border-radius:0 0 20px 20px;
	}

	.ccaflchap-map__layout--below .ccaflchap-map__stage {
		border-radius:20px 20px 0 0;
	}
}

@media(max-width:767px) {
	.ccaflchap-map__header h2 {
		font-size:34px;
	}

	.ccaflchap-map__header p {
		font-size:15px;
	}

	.ccaflchap-map__toolbar {
		align-items:stretch;
		flex-direction:column;
		gap:10px;
		padding:12px;
	}

	.ccaflchap-map__filter-control {
		max-width:none;
	}

	.ccaflchap-map__toolbar-note {
		padding:0 2px 2px;
	}

	.ccaflchap-map__layout {
		border-radius:15px;
	}

	.ccaflchap-map__directory {
		border-radius:15px 15px 0 0;
	}

	.ccaflchap-map__layout--below .ccaflchap-map__directory {
		border-radius:0 0 15px 15px;
	}

	.ccaflchap-map__layout--below .ccaflchap-map__list {
		grid-template-columns:1fr;
	}

	.ccaflchap-map__stage {
		padding:6px;
		border-radius:0 0 15px 15px;
		overflow:hidden;
	}

	.ccaflchap-map__layout--map-only .ccaflchap-map__stage {
		border-radius:15px;
	}

	.ccaflchap-map__layout--below .ccaflchap-map__stage {
		border-radius:15px 15px 0 0;
	}

	.ccaflchap-map__county-label {
		opacity:.48;
	}

	.ccaflchap-map__hint {
		display:none;
	}

	.ccaflchap-map__zoom {
		top:7px;
		right:7px;
	}

	.ccaflchap-map__popup {
		left:8px !important;
		right:8px;
		top:auto !important;
		bottom:8px;
		width:auto;
		max-width:none;
		transform:none !important;
	}

	.ccaflchap-map__popup::after {
		display:none;
	}

	.ccaflchap-map__popup-image {
		height:100px;
	}

	.ccaflchap-map__source {
		text-align:left;
	}
}


/* v1.5.1: SVG-safe region filtering + hard theme reset for chapter directory */
.ccaflchap-map .ccaflchap-map__point.ccaflchap-map-state-filtered {
    display: none !important;
    visibility: hidden !important;
    pointer-events: none !important;
}

.ccaflchap-map .ccaflchap-map__directory,
.ccaflchap-map .ccaflchap-map__list {
    background: #ffffff !important;
    color: #344047 !important;
}

.ccaflchap-map .ccaflchap-map__list .ccaflchap-map__list-item,
.ccaflchap-map .ccaflchap-map__list button.ccaflchap-map__list-item {
    -webkit-appearance: none !important;
    appearance: none !important;
    display: grid !important;
    width: 100% !important;
    background: #ffffff !important;
    background-color: #ffffff !important;
    background-image: none !important;
    color: #344047 !important;
    border: 0 !important;
    box-shadow: none !important;
    text-shadow: none !important;
    opacity: 1 !important;
}

.ccaflchap-map .ccaflchap-map__list .ccaflchap-map__list-item:hover {
    background: #f5f7f8 !important;
    background-color: #f5f7f8 !important;
}

.ccaflchap-map .ccaflchap-map__list .ccaflchap-map__list-item.ccaflchap-map-state-active {
    background: #fff4f4 !important;
    background-color: #fff4f4 !important;
}

.ccaflchap-map .ccaflchap-map__list .ccaflchap-map__list-copy strong {
    color: #344047 !important;
    opacity: 1 !important;
}

.ccaflchap-map .ccaflchap-map__list .ccaflchap-map__list-copy small {
    color: #8b969d !important;
    opacity: 1 !important;
}

.ccaflchap-map .ccaflchap-map__list .ccaflchap-map__list-arrow {
    color: #a2abb1 !important;
}

.ccaflchap-map .ccaflchap-map__list .ccaflchap-map__list-item:hover .ccaflchap-map__list-arrow,
.ccaflchap-map .ccaflchap-map__list .ccaflchap-map__list-item.ccaflchap-map-state-active .ccaflchap-map__list-arrow {
    color: var(--ccaflchap-point) !important;
}


/* =========================================================
   v1.6 — Fully synchronized region filtering
   ========================================================= */

/*
 * Both SVG pointers and HTML list items share the exact same filtered state.
 * !important prevents WordPress/theme CSS from forcing hidden rows back on.
 */
.ccaflchap-map .ccaflchap-map__point.ccaflchap-map-state-filtered,
.ccaflchap-map .ccaflchap-map__list-item.ccaflchap-map-state-filtered,
.ccaflchap-map button.ccaflchap-map__list-item.ccaflchap-map-state-filtered,
.ccaflchap-map .ccaflchap-map__list button.ccaflchap-map__list-item.ccaflchap-map-state-filtered {
	display: none !important;
	visibility: hidden !important;
	pointer-events: none !important;
}

/* Explicitly restore matching rows as the plugin's intended grid layout. */
.ccaflchap-map .ccaflchap-map__list-item:not(.ccaflchap-map-state-filtered),
.ccaflchap-map button.ccaflchap-map__list-item:not(.ccaflchap-map-state-filtered),
.ccaflchap-map .ccaflchap-map__list button.ccaflchap-map__list-item:not(.ccaflchap-map-state-filtered) {
	display: grid !important;
	visibility: visible !important;
}


/* =========================================================
   v1.7 — Fully namespaced Elementor/theme isolation
   ========================================================= */

/*
 * All selectors in this plugin are scoped to .ccaflchap-map.
 * This small reset neutralizes common Elementor/theme button/form inheritance
 * only inside the map component.
 */
.ccaflchap-map .ccaflchap-map__list-item,
.ccaflchap-map .ccaflchap-map__popup-close,
.ccaflchap-map .ccaflchap-map__zoom button {
	font-family: inherit !important;
	text-transform: none !important;
	letter-spacing: normal !important;
}

.ccaflchap-map .ccaflchap-map__direction-select {
	font-family: inherit !important;
	text-transform: none !important;
}

/* Unique plugin state classes only. */
.ccaflchap-map .ccaflchap-map-state-filtered {
	display: none !important;
}
