.cvmp-directory {
	--cvmp-gap: 1rem;
	width: 100%;
	max-width: 1200px;
	margin: 0 auto;
}
.cvmp-filters {
	display: grid;
	grid-template-columns: minmax(175px,1.5fr) repeat(4,minmax(120px,1fr)) auto;
	gap: .5rem;
	align-items: end;
	margin: 0 0 .8rem;
	padding: .6rem .7rem;
	border: 1px solid var(--cvmp-filter-border,#d8d8d8);
	border-radius: 9px;
	background: var(--cvmp-filter-bg,transparent);
}
.cvmp-filters label { display:flex; flex-direction:column; gap:.2rem; font-weight:800; }
.cvmp-filters label>span { font-weight:800; }
.cvmp-filters input,.cvmp-filters select,.cvmp-filters button { min-height:38px; border-radius:6px; font-weight:700; }
.cvmp-filter-actions { display:flex; align-items:center; gap:.4rem; }
.cvmp-clear-filters { display:inline-flex; align-items:center; min-height:38px; padding:0 .6rem; font-weight:800; text-decoration:none!important; }
.cvmp-count { margin:.5rem 0 1rem; font-weight:800; }
.cvmp-grid { display:grid; grid-template-columns:repeat(6,minmax(0,1fr)); gap:var(--cvmp-gap); }

/* Portrait-first cards: the face remains unobstructed until hover/focus. */
.cvmp-card {
	position: relative;
	z-index: 1;
	min-width: 0;
	background: transparent;
	transition: transform .18s ease;
}
.cvmp-card:hover,.cvmp-card:focus-within { z-index: 40; transform:translateY(-3px); }
.cvmp-card-link { display:block; color:#fff!important; text-decoration:none!important; border-radius:14px; }
.cvmp-photo {
	position: relative;
	aspect-ratio: 4/5;
	min-height: 0;
	background: linear-gradient(180deg,#d9d9d9,#8d8d8d);
	border: 1px solid rgba(255,255,255,.18);
	border-radius: 14px;
	overflow: hidden;
	box-shadow: 0 6px 18px rgba(0,0,0,.18);
}
.cvmp-photo img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	object-position: center top;
	display: block;
	transition: transform .25s ease,filter .25s ease;
}
.cvmp-card:hover .cvmp-photo img,.cvmp-card:focus-within .cvmp-photo img { transform:scale(1.02); }
.cvmp-photo-empty { display:flex; align-items:center; justify-content:center; }
.cvmp-photo-placeholder {
	position:absolute;
	inset:0;
	display:flex;
	flex-direction:column;
	align-items:center;
	justify-content:center;
	text-align:center;
	gap:.2rem;
	color:#333;
	background:radial-gradient(circle at 50% 28%,#efefef 0 15%,transparent 15.5%),radial-gradient(ellipse at 50% 73%,#bcbcbc 0 31%,transparent 31.5%),linear-gradient(#d8d8d8,#a5a5a5);
}
.cvmp-photo-placeholder span { font-size:.66rem; text-transform:uppercase; letter-spacing:.08em; font-weight:800; }
.cvmp-photo-placeholder strong { font-size:.86rem; }
.cvmp-photo:after {
	content:"";
	position:absolute;
	left:0;
	right:0;
	bottom:0;
	height:34%;
	background:linear-gradient(to bottom,rgba(0,0,0,0),rgba(0,0,0,.82) 72%,rgba(0,0,0,.94));
	z-index:1;
	pointer-events:none;
}
.cvmp-badges { display:flex; flex-wrap:wrap; gap:.4rem; }
.cvmp-photo>.cvmp-badges { position:absolute; z-index:3; top:.32rem; left:.55rem; right:.55rem; }
.cvmp-badge { display:inline-flex; align-items:center; min-height:24px; padding:.27rem .52rem; border-radius:999px; font-size:.68rem; font-weight:800; letter-spacing:.02em; line-height:1.05; box-shadow:0 1px 3px rgba(0,0,0,.28); }
.cvmp-badge-type { min-height:20px; padding:.18rem .42rem; background:#111; color:#fff; font-size:.58rem; letter-spacing:.025em; }
.cvmp-badge-alert { background:#b42318; color:#fff; }
.cvmp-name-strip { position:absolute; z-index:3; left:0; right:0; bottom:0; padding:.8rem .75rem .72rem; color:#fff; text-align:left; }
.cvmp-name-strip h3 { margin:0 0 .14rem!important; color:#fff!important; font-size:1.18rem!important; line-height:1.03!important; text-shadow:0 1px 2px rgba(0,0,0,.5); }
.cvmp-location { font-size:.73rem; line-height:1.2; font-weight:700; color:#fff; }

/* Desktop hover/focus popup. It floats below the portrait instead of covering the face. */
.cvmp-hover-card {
	position:absolute;
	top:calc(100% + .55rem);
	left:50%;
	width:min(320px,calc(100vw - 2rem));
	padding:.85rem;
	border:1px solid rgba(255,255,255,.18);
	border-radius:12px;
	background:rgba(17,17,17,.98);
	color:#fff;
	box-shadow:0 16px 36px rgba(0,0,0,.34);
	opacity:0;
	visibility:hidden;
	pointer-events:none;
	transform:translate(-50%,-7px);
	transition:opacity .16s ease,transform .16s ease,visibility .16s ease;
}
.cvmp-card:hover .cvmp-hover-card,.cvmp-card:focus-within .cvmp-hover-card {
	opacity:1;
	visibility:visible;
	pointer-events:auto;
	transform:translate(-50%,0);
}
.cvmp-hover-card:before {
	content:"";
	position:absolute;
	left:50%;
	top:-7px;
	width:13px;
	height:13px;
	background:#111;
	border-left:1px solid rgba(255,255,255,.18);
	border-top:1px solid rgba(255,255,255,.18);
	transform:translateX(-50%) rotate(45deg);
}
.cvmp-hover-heading { display:flex; justify-content:space-between; gap:.6rem; align-items:baseline; margin-bottom:.65rem; }
.cvmp-hover-heading strong { font-size:1rem; line-height:1.05; }
.cvmp-hover-heading span { flex:none; font-size:.62rem; font-weight:800; text-transform:uppercase; letter-spacing:.05em; opacity:.7; }
.cvmp-overlay-facts { display:grid; grid-template-columns:minmax(0,1.45fr) minmax(0,.72fr) minmax(0,.72fr); gap:.35rem; margin-bottom:.55rem; }
.cvmp-overlay-facts span { display:block; min-width:0; padding:.42rem .4rem; border:1px solid rgba(255,255,255,.18); border-radius:7px; background:rgba(255,255,255,.07); font-size:.73rem; line-height:1.08; }
.cvmp-overlay-facts b { display:block; margin-bottom:.12rem; font-size:.55rem; line-height:1; text-transform:uppercase; letter-spacing:.06em; color:rgba(255,255,255,.65); }
.cvmp-overlay-identifiers { display:flex; flex-wrap:wrap; gap:.2rem .5rem; margin:.12rem 0 .55rem; font-size:.7rem; line-height:1.25; color:rgba(255,255,255,.9); }
.cvmp-overlay-identifiers span:not(:last-child)::after { content:"•"; margin-left:.5rem; color:rgba(255,255,255,.38); }
.cvmp-overlay-agency { display:flex; flex-wrap:wrap; align-items:baseline; justify-content:space-between; gap:.25rem .55rem; padding-top:.5rem; border-top:1px solid rgba(255,255,255,.18); font-size:.7rem; line-height:1.2; color:#fff; }
.cvmp-overlay-agency span { font-weight:700; min-width:0; }
.cvmp-overlay-agency strong { font-size:.7rem; white-space:nowrap; }
.cvmp-hover-cta { display:flex; align-items:center; justify-content:flex-end; gap:.3rem; margin-top:.55rem; color:#fff!important; text-decoration:none!important; font-size:.72rem; font-weight:800; }
.cvmp-hover-cta span { font-size:.96rem; }

.cvmp-pagination { margin:1.5rem 0; }
.cvmp-attribution { font-size:.85rem; border-top:1px solid #ddd; padding-top:1rem; margin-top:1.5rem; }
.cvmp-single { max-width:1050px; margin:1rem auto 2rem; }
.cvmp-single-hero { display:grid; grid-template-columns:minmax(250px,38%) 1fr; gap:1.5rem; align-items:start; }
.cvmp-single-hero img { width:100%; aspect-ratio:4/5; object-fit:cover; object-position:center top; border-radius:14px; }
.cvmp-single-summary { padding:1rem 0; }
.cvmp-single-summary h2 { margin:.6rem 0 1rem; font-size:clamp(2rem,5vw,3.5rem); line-height:1; }
.cvmp-single-facts { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:.75rem; margin:1.25rem 0; }
.cvmp-single-facts div { padding:.85rem; border:1px solid #ddd; border-radius:10px; background:#fff; }
.cvmp-single-facts span { display:block; font-size:.68rem; text-transform:uppercase; letter-spacing:.05em; font-weight:700; opacity:.7; }
.cvmp-single-facts strong { display:block; margin-top:.2rem; }
.cvmp-single-source { padding:1rem 1.15rem; border-left:5px solid #111; background:#f5f5f5; }
.cvmp-official-button { display:inline-block; padding:.7rem 1rem; border-radius:7px; background:#111; color:#fff!important; text-decoration:none!important; font-weight:800; }

@media(max-width:1000px) {
	.cvmp-grid { grid-template-columns:repeat(4,minmax(0,1fr)); }
	.cvmp-filters { grid-template-columns:repeat(3,minmax(0,1fr)); }
}
@media(max-width:760px) {
	.cvmp-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
	.cvmp-filters { grid-template-columns:1fr 1fr; }
	.cvmp-single-facts { grid-template-columns:repeat(2,minmax(0,1fr)); }
}
@media(max-width:520px) {
	.cvmp-grid,.cvmp-filters,.cvmp-single-hero,.cvmp-single-facts { grid-template-columns:1fr; }
	.cvmp-photo { aspect-ratio:4/5; min-height:0; }
	.cvmp-name-strip h3 { font-size:1.35rem!important; }
	.cvmp-location { font-size:.8rem; }
}

/* Touch devices have no hover, so show the information below the portrait. */
@media(hover:none),(pointer:coarse) {
	.cvmp-card:hover,.cvmp-card:focus-within { transform:none; }
	.cvmp-hover-card {
		position:static;
		width:auto;
		margin-top:.5rem;
		opacity:1;
		visibility:visible;
		pointer-events:auto;
		transform:none;
		box-shadow:0 6px 18px rgba(0,0,0,.18);
	}
	.cvmp-hover-card:before { display:none; }
}

/* Homepage Latest Missing carousel. The slide itself uses the exact same
   .cvmp-card markup/styles as the directory so both stay visually identical. */
.cvmp-weekly-feature {
	position: relative;
	width: calc((min(100%, 1200px) - 5rem) / 6);
	max-width: 210px;
	min-width: 170px;
	margin: 1.25rem auto 2rem;
	overflow: visible;
}
.cvmp-weekly-heading {
	display: flex;
	align-items: center;
	justify-content: center;
	margin: 0 0 .55rem;
	padding: 0;
	background: transparent;
	border: 0;
	text-align: center;
}
.cvmp-weekly-heading span {
	display: inline-block;
	font-size: .82rem;
	font-weight: 900;
	text-transform: uppercase;
	letter-spacing: .08em;
}
.cvmp-feature-slides,
.cvmp-feature-slide {
	position: relative;
	width: 100%;
	overflow: visible;
}
.cvmp-feature-slide[hidden] { display: none !important; }
.cvmp-feature-slide > .cvmp-card { width: 100%; }
.cvmp-feature-controls {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: .4rem;
	margin-top: .65rem;
	padding: 0;
	background: transparent;
	border: 0;
}
.cvmp-feature-nav {
	appearance: none;
	border: 1px solid rgba(127,127,127,.42);
	background: #111;
	color: #fff;
	width: 34px;
	height: 34px;
	border-radius: 999px;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	font-size: 1.25rem;
	line-height: 1;
	font-weight: 900;
	cursor: pointer;
	flex: none;
}
.cvmp-feature-nav:hover,.cvmp-feature-nav:focus-visible { transform: translateY(-1px); outline: 2px solid currentColor; outline-offset: 2px; }
.cvmp-feature-dots {
	display: flex;
	align-items: center;
	justify-content: center;
	flex: 1;
	gap: .35rem;
}
.cvmp-feature-dot {
	appearance: none;
	border: 0;
	background: rgba(127,127,127,.45);
	width: 8px;
	height: 8px;
	padding: 0;
	border-radius: 999px;
	cursor: pointer;
}
.cvmp-feature-dot.is-active,.cvmp-feature-dot:hover,.cvmp-feature-dot:focus-visible { background: #111; outline: none; }

@media(max-width:1000px) {
	.cvmp-weekly-feature {
		width: calc((100% - 3rem) / 4);
		max-width: 280px;
		min-width: 0;
	}
}
@media(max-width:760px) {
	.cvmp-weekly-feature {
		width: calc((100% - 1rem) / 2);
		max-width: 340px;
	}
}
@media(max-width:520px) {
	.cvmp-weekly-feature {
		width: 100%;
		max-width: none;
	}
}

