.sbpm-map {
	margin: 1.5rem 0;
}

.sbpm-map__header {
	margin-bottom: 1rem;
}

.sbpm-map__title {
	margin: 0;
}

.sbpm-map__version {
	margin: .35rem 0 0;
	color: #5b6268;
	font-size: .92rem;
}

.sbpm-map__layout {
	display: grid;
	grid-template-columns: minmax(190px, 260px) minmax(0, 1fr);
	gap: 1rem;
	align-items: start;
}

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

.sbpm-map__districts {
	max-height: 650px;
	overflow: auto;
	padding: .5rem;
	border: 1px solid #d7dce0;
	border-radius: 8px;
	background: #fff;
}

.sbpm-map__district {
	display: block;
	width: 100%;
	margin: 0 0 .35rem;
	padding: .62rem .7rem;
	border: 1px solid #d7dce0;
	border-radius: 5px;
	background: #f8f9fa;
	color: #24292d;
	font: inherit;
	text-align: left;
	cursor: pointer;
}

.sbpm-map__district:hover,
.sbpm-map__district:focus,
.sbpm-map__district.is-active {
	border-color: #6b2c74;
	background: #f3eaf5;
	outline: none;
}

.sbpm-map__district--all {
	font-weight: 700;
}

.sbpm-map__canvas {
	min-width: 0;
}

.sbpm-map__status {
	min-height: 1.4em;
	margin: .6rem 0 0;
	font-size: .92rem;
}

.sbpm-popup strong {
	display: block;
	margin-bottom: .25rem;
}

@media (max-width: 782px) {
	.sbpm-map__layout {
		grid-template-columns: 1fr;
	}
	.sbpm-map__districts {
		max-height: 240px;
	}
}

/* Place dashboard prototype. */
.sbpm-place {
	--sbpm-ink: #172027;
	--sbpm-muted: #66717a;
	--sbpm-border: #d9dfe3;
	--sbpm-soft: #f5f7f8;
	--sbpm-accent: #5f3569;
	--sbpm-accent-soft: #f2eaf4;
	margin: 1.5rem 0 2.5rem;
	color: var(--sbpm-ink);
}
.sbpm-place * { box-sizing: border-box; }
.sbpm-place__hero { border-bottom: 1px solid var(--sbpm-border); padding: 0 0 1.25rem; }
.sbpm-place__eyebrow { margin: 0 0 .35rem; color: var(--sbpm-accent); font-size: .78rem; font-weight: 800; letter-spacing: .09em; text-transform: uppercase; }
.sbpm-place__title { margin: 0; font-size: clamp(2rem, 5vw, 3.35rem); line-height: 1.05; }
.sbpm-place__intro { max-width: 760px; margin: .65rem 0 0; color: var(--sbpm-muted); font-size: 1.08rem; }
.sbpm-place__quick { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: .8rem; margin: 1rem 0 1.35rem; }
.sbpm-place__quick-card { min-height: 104px; padding: 1rem; border: 1px solid var(--sbpm-border); border-radius: 10px; background: #fff; box-shadow: 0 1px 3px rgba(23,32,39,.04); }
.sbpm-place__quick-card span, .sbpm-place__aside-card small { display: block; color: var(--sbpm-muted); font-size: .72rem; font-weight: 800; letter-spacing: .08em; }
.sbpm-place__quick-card strong { display: block; margin: .3rem 0; font-size: 1.03rem; }
.sbpm-place__quick-card small { color: var(--sbpm-muted); font-size: .85rem; }
.sbpm-place__grid { display: grid; grid-template-columns: minmax(185px, 230px) minmax(0, 1fr) minmax(190px, 250px); gap: 1.2rem; align-items: start; }
.sbpm-place__nav, .sbpm-place__aside { position: sticky; top: 24px; }
.sbpm-place__nav h2, .sbpm-place__aside h2, .sbpm-place__main h2 { margin: 0 0 .8rem; font-size: 1.13rem; }
.sbpm-place__nav a { display: flex; justify-content: space-between; align-items: center; gap: .8rem; margin-bottom: .42rem; padding: .72rem .8rem; border: 1px solid var(--sbpm-border); border-radius: 7px; background: #fff; color: var(--sbpm-ink); text-decoration: none; }
.sbpm-place__nav a:hover, .sbpm-place__nav a:focus { border-color: var(--sbpm-accent); background: var(--sbpm-accent-soft); }
.sbpm-place__map-head { display: flex; justify-content: space-between; gap: 1rem; align-items: flex-start; margin-bottom: .75rem; }
.sbpm-place__map-head h2 { margin-bottom: .25rem; }
.sbpm-place__map-head p { margin: 0; color: var(--sbpm-muted); font-size: .92rem; }
.sbpm-place__prototype { flex: 0 0 auto; padding: .32rem .52rem; border: 1px solid #ad94b3; border-radius: 999px; background: var(--sbpm-accent-soft); color: var(--sbpm-accent); font-size: .68rem; font-weight: 800; letter-spacing: .08em; }
.sbpm-place__map-placeholder { min-height: 355px; display: flex; flex-direction: column; align-items: center; justify-content: center; padding: 2rem; border: 1px solid var(--sbpm-border); border-radius: 10px; background-color: var(--sbpm-soft); background-image: linear-gradient(#e6eaed 1px, transparent 1px), linear-gradient(90deg, #e6eaed 1px, transparent 1px); background-size: 32px 32px; text-align: center; }
.sbpm-place__map-placeholder strong { font-size: 1.15rem; }
.sbpm-place__map-placeholder p { max-width: 540px; margin: .55rem auto 0; color: var(--sbpm-muted); }
.sbpm-place__map-mark { display: grid; place-items: center; width: 72px; height: 72px; margin-bottom: .85rem; border: 2px solid var(--sbpm-accent); border-radius: 50%; background: #fff; color: var(--sbpm-accent); font-size: 1.2rem; font-weight: 900; box-shadow: 0 3px 10px rgba(23,32,39,.08); }
.sbpm-place__sections { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .75rem; margin-top: .9rem; }
.sbpm-place__sections article { scroll-margin-top: 40px; padding: .95rem; border: 1px solid var(--sbpm-border); border-radius: 8px; background: #fff; }
.sbpm-place__sections h3 { margin: 0 0 .35rem; font-size: 1rem; }
.sbpm-place__sections p { margin: 0 0 .65rem; color: var(--sbpm-muted); font-size: .88rem; }
.sbpm-place__dataset-status { display: flex; flex-wrap: wrap; gap: .4rem; }
.sbpm-place__status { display: inline-block; padding: .26rem .46rem; border-radius: 999px; font-size: .72rem; font-weight: 700; }
.sbpm-place__status--ready { background: #e8f5eb; color: #246335; }
.sbpm-place__status--pending { background: #f1f2f3; color: #626b72; }
.sbpm-place__aside-card { margin-bottom: .55rem; padding: .85rem; border: 1px solid var(--sbpm-border); border-radius: 8px; background: #fff; }
.sbpm-place__aside-card strong { display: block; margin-top: .25rem; }
.sbpm-place__address { margin-top: .85rem; padding: 1rem; border: 1px solid #cdbbd1; border-radius: 9px; background: var(--sbpm-accent-soft); }
.sbpm-place__address p { margin: .45rem 0 .75rem; color: #5f5263; font-size: .85rem; }
.sbpm-place__address button { width: 100%; padding: .62rem .7rem; border: 1px solid #baa5c0; border-radius: 6px; background: rgba(255,255,255,.65); color: #66576a; font: inherit; font-size: .82rem; }
@media (max-width: 1050px) {
	.sbpm-place__grid { grid-template-columns: 210px minmax(0, 1fr); }
	.sbpm-place__aside { position: static; grid-column: 1 / -1; display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: .6rem; }
	.sbpm-place__aside h2 { grid-column: 1 / -1; }
	.sbpm-place__address { margin-top: 0; }
}
@media (max-width: 782px) {
	.sbpm-place__quick { grid-template-columns: repeat(2, minmax(0, 1fr)); }
	.sbpm-place__grid { grid-template-columns: 1fr; }
	.sbpm-place__nav, .sbpm-place__aside { position: static; }
	.sbpm-place__nav { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .45rem; }
	.sbpm-place__nav h2 { grid-column: 1 / -1; }
	.sbpm-place__nav a { margin-bottom: 0; }
	.sbpm-place__aside { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 520px) {
	.sbpm-place__quick, .sbpm-place__sections, .sbpm-place__nav, .sbpm-place__aside { grid-template-columns: 1fr; }
	.sbpm-place__aside h2 { grid-column: auto; }
	.sbpm-place__map-head { display: block; }
	.sbpm-place__prototype { display: inline-block; margin-top: .6rem; }
	.sbpm-place__map-placeholder { min-height: 290px; padding: 1.2rem; }
}

/* v0.1.7: compact mobile district controls and a map-first layout. */
.sbpm-map__mobile-picker {
	display: none;
	margin: 0 0 .85rem;
}
.sbpm-map__mobile-picker label {
	display: block;
	margin: 0 0 .35rem;
	font-weight: 700;
}
.sbpm-map__select {
	display: block;
	width: 100%;
	min-height: 48px;
	padding: .65rem 2.4rem .65rem .75rem;
	border: 1px solid #cfd5da;
	border-radius: 7px;
	background: #fff;
	color: #24292d;
	font: inherit;
	font-size: 1rem;
}

@media (max-width: 782px) {
	.sbpm-map {
		margin-top: 1rem;
	}
	.sbpm-map__header {
		margin-bottom: .75rem;
	}
	.sbpm-map__title {
		font-size: clamp(1.65rem, 8vw, 2.35rem);
		line-height: 1.1;
	}
	.sbpm-map__mobile-picker {
		display: block;
	}
	.sbpm-map__districts {
		display: none;
	}
	.sbpm-map__layout {
		display: block;
	}
	.sbpm-map__canvas,
	.sbpm-map__canvas .eye-out-map {
		width: 100% !important;
		max-width: 100% !important;
	}
	.sbpm-map__canvas .eye-out-map {
		height: min(68vh, 520px) !important;
		min-height: 360px;
	}
}

@media (max-width: 480px) {
	.sbpm-map__canvas .eye-out-map {
		height: min(62vh, 460px) !important;
		min-height: 340px;
	}
}

/* v0.1.8: page title owns the heading; Baton Rouge can test imported map layers. */
.sbpm-map__header--compact { margin-bottom: .65rem; }
.sbpm-map__header--compact .sbpm-map__version { margin-top: 0; }
.sbpm-place__map-tests { border: 1px solid var(--sbpm-border); border-radius: 10px; background: #fff; padding: .85rem; }
.sbpm-place__map-tests > h3 { margin: 0 0 .25rem; }
.sbpm-place__map-tests > p { margin: 0 0 .75rem; color: var(--sbpm-muted); font-size: .9rem; }
.sbpm-place__map-tabs { display: flex; flex-wrap: wrap; gap: .45rem; margin-bottom: .65rem; }
.sbpm-place__map-tabs button { padding: .55rem .75rem; border: 1px solid var(--sbpm-border); border-radius: 7px; background: var(--sbpm-soft); color: var(--sbpm-ink); font: inherit; font-weight: 700; cursor: pointer; }
.sbpm-place__map-tabs button.is-active { border-color: var(--sbpm-accent); background: var(--sbpm-accent-soft); color: var(--sbpm-accent); }
.sbpm-place__map-panel { display: none; }
.sbpm-place__map-panel.is-active { display: block; }
.sbpm-place__map-panel .sbpm-map { margin: 0; }
@media (max-width: 782px) {
  .sbpm-place__map-tests { padding: .65rem; }
  .sbpm-place__map-tabs { display: grid; grid-template-columns: 1fr; }
  .sbpm-place__map-tabs button { width: 100%; }
}


/* v0.1.9: mobile directory cleanup and narrow-container map layout. */
.sbpm-map.is-compact .sbpm-map__mobile-picker { display: block; }
.sbpm-map.is-compact .sbpm-map__districts { display: none; }
.sbpm-map.is-compact .sbpm-map__layout { display: block; }
.sbpm-map.is-compact .sbpm-map__canvas,
.sbpm-map.is-compact .sbpm-map__canvas .eye-out-map {
	width: 100% !important;
	max-width: 100% !important;
}
.sbpm-map.is-compact .sbpm-map__canvas .eye-out-map {
	height: min(68vh, 520px) !important;
	min-height: 360px;
}

@media (max-width: 782px) {
	/* The WordPress page title already identifies Baton Rouge. */
	.sbpm-place__hero { padding-bottom: 1rem; }
	.sbpm-place__quick { display: none; }
	.sbpm-place__grid { margin-top: 1rem; }
	/* On phones, get users from the government menu to the usable map faster. */
	.sbpm-place__map-head { display: none; }
}

@media (max-width: 480px) {
	.sbpm-map.is-compact .sbpm-map__canvas .eye-out-map {
		height: min(62vh, 460px) !important;
		min-height: 340px;
	}
}


/* v0.2.0: map framing + public Baton Rouge map panel. */
.sbpm-place__map-tests > h3 { font-size: 1.15rem; }
.sbpm-place__map-tests > p { line-height: 1.45; }
.sbpm-place__map-panel.is-active .eye-out-map { visibility: visible; }

/* v0.2.3 parish pages */
.sbpm-parish-page{display:grid;gap:22px}.sbpm-parish-page__hero{border-bottom:1px solid #dcdcde;padding-bottom:14px}.sbpm-parish-page__eyebrow{margin:0 0 5px;font-size:13px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:#646970}.sbpm-parish-boundary{width:100%}.sbpm-parish-boundary__map,.sbpm-parish-boundary__map .eye-out-map{width:100%;max-width:100%}.sbpm-parish-boundary__status{min-height:1.2em;margin:6px 0 0;color:#646970}.sbpm-parish-page__sections>h2{margin-top:0}.sbpm-parish-page__grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:12px}.sbpm-parish-page__card{border:1px solid #dcdcde;border-radius:8px;background:#fff;padding:14px}.sbpm-parish-page__card h3{margin:0 0 8px;font-size:17px}.sbpm-parish-page__card p{margin:0 0 10px;color:#50575e}@media(max-width:782px){.sbpm-parish-page{gap:16px}.sbpm-parish-page__grid{grid-template-columns:1fr}.sbpm-parish-boundary__map .eye-out-map{height:min(62vh,460px)!important;min-height:340px}}


/* v0.2.4: automatic parish place directory. */
.sbpm-parish-page__places{margin:28px 0}
.sbpm-parish-page__places>h2{margin-bottom:14px}
.sbpm-parish-page__place-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}
.sbpm-parish-page__place-card{border:1px solid #dcdcde;border-radius:7px;padding:14px;background:var(--sbpm-card-bg,#fff)}
.sbpm-parish-page__place-card small{display:block;text-transform:uppercase;letter-spacing:.04em;opacity:.68;margin-bottom:4px}
.sbpm-parish-page__place-card h3{margin:0 0 6px}
.sbpm-parish-page__place-card h3 a{text-decoration:none}
.sbpm-parish-page__place-card p{margin:0 0 8px}
.sbpm-parish-page__empty{opacity:.75}
@media(max-width:782px){.sbpm-parish-page__place-grid{grid-template-columns:1fr}}

.sbpm-map__warning{margin:0 0 12px;padding:10px 12px;border-left:4px solid #dba617;background:#fff8df;color:#3c434a;font-size:14px}.sbpm-sliced-map .sbpm-map__mobile-picker{display:block;margin-bottom:12px}
