/**
 * WCPC Core — the shared card (card spec v1).
 *
 * One stylesheet for the anatomy WCPC_Core_Card / wcpc_card() emits, styled
 * against the --wcpc-* tokens (tokens.css) so every plugin card — sermons,
 * series, classes, events, groups, rooms, search — renders as the site's
 * Elementor `.card` global class does: 16px radius, 1px border, navy shadow,
 * 24px body, 20/600 primary-dark title, 14px muted meta, hover = lift only.
 *
 * Selectors are deliberately unscoped (`.wcpc-card …`) so the same rules
 * reach a card wherever it renders. Plugin stylesheets that still carry a
 * scoped copy (`.wcpc-sermons .wcpc-card`, `.wcpc-pco .wcpc-card`) declare
 * the same values; they are being retired one release at a time.
 *
 * Variants: tile (default) · row · person · compact.
 * Presets (grid widgets): vertical · horizontal · minimal · hero.
 *
 * @since 2.2.0
 */

/* ------------------------------------------------------------------
   Frame
   ------------------------------------------------------------------ */

.wcpc-card {
	position: relative;
	display: flex;
	flex-direction: column;
	box-sizing: border-box;
	isolation: isolate;
	background: var(--wcpc-color-bg, #fff);
	border: 1px solid var(--wcpc-color-border, #D5DEE5);
	border-radius: var(--wcpc-card-radius, 16px);
	box-shadow: var(--wcpc-shadow-1, 0 1px 2px rgba(0, 59, 92, 0.06), 0 1px 3px rgba(0, 59, 92, 0.08));
	overflow: hidden;
	color: var(--wcpc-color-text, #1F2933);
	font-family: var(--wcpc-font-sans, "Open Sans", sans-serif);
	transition: box-shadow var(--wcpc-transition-base, 150ms ease-out),
	            transform var(--wcpc-transition-base, 150ms ease-out),
	            border-color var(--wcpc-transition-base, 150ms ease-out);
}

/* Hover = lift only (decided 3 Sep 2026): no image zoom. */
.wcpc-card:hover {
	box-shadow: var(--wcpc-shadow-2, 0 4px 12px rgba(0, 59, 92, 0.10));
	border-color: var(--wcpc-color-border-strong, #B8C5CF);
	transform: translateY(var(--wcpc-card-lift, -2px));
}

.wcpc-card:focus-within {
	box-shadow: var(--wcpc-focus-ring, 0 0 0 3px rgba(52, 101, 127, 0.35));
	outline: none;
}

/* Whole-card clickable: the title link grows a transparent overlay so one
   tab stop covers the whole card; interactive children sit above it. */
.wcpc-card--clickable {
	cursor: pointer;
}
.wcpc-card--clickable .wcpc-card__title a::after {
	content: "";
	position: absolute;
	inset: 0;
	z-index: 1;
}
.wcpc-card--clickable .wcpc-card__pills,
.wcpc-card--clickable .wcpc-card__footer,
.wcpc-card--clickable .wcpc-card__meta a,
.wcpc-card--clickable .wcpc-card__eyebrow a {
	position: relative;
	z-index: 2;
}
.wcpc-card--clickable:hover {
	border-color: var(--wcpc-color-primary, #34657F);
}

/* ------------------------------------------------------------------
   Media
   ------------------------------------------------------------------ */

.wcpc-card__media {
	position: relative;
	display: block;
	width: 100%;
	overflow: hidden;
	line-height: 0;
	aspect-ratio: 16 / 9;
	background: var(--wcpc-color-surface, #F4F7FA);
}
.wcpc-card__media img {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: cover;
}

/* Emblem tile — the placeholder rule: primary-light at 25% with the WCPC
   mark, drawn in CSS/SVG, never an uploaded JPG. */
.wcpc-card__media--emblem {
	display: grid;
	place-items: center;
	background: var(--wcpc-tint-blue, #EDF4FA);
	background: color-mix(in srgb, var(--wcpc-color-primary-light, #A4C8E1) 25%, var(--wcpc-color-bg, #fff));
	color: var(--wcpc-color-primary, #34657F);
}
.wcpc-card__emblem {
	display: block;
	width: 26%;
	max-width: 72px;
	min-width: 32px;
	aspect-ratio: 1;
}
.wcpc-card__emblem svg {
	display: block;
	width: 100%;
	height: 100%;
}

/* Date chip on artwork (events). */
.wcpc-card__media-chip {
	position: absolute;
	top: var(--wcpc-space-md, 16px);
	left: var(--wcpc-space-md, 16px);
	z-index: 2;
	min-width: 44px;
	padding: 6px 10px;
	border-radius: var(--wcpc-radius-sm, 6px);
	background: var(--wcpc-color-bg, #fff);
	box-shadow: var(--wcpc-shadow-2, 0 4px 12px rgba(0, 59, 92, 0.10));
	text-align: center;
	line-height: 1.1;
	pointer-events: none;
}
.wcpc-card__media-chip .m {
	display: block;
	font-size: 11px;
	font-weight: 700;
	letter-spacing: var(--wcpc-eyebrow-tracking, 0.08em);
	text-transform: uppercase;
	color: var(--wcpc-color-primary, #34657F);
}
.wcpc-card__media-chip .d {
	display: block;
	font-size: 22px;
	font-weight: 700;
	color: var(--wcpc-color-primary-dark, #003B5C);
}

/* Small solid badge (part numbers, counts). */
.wcpc-card__media-badge {
	position: absolute;
	top: 8px;
	left: 8px;
	z-index: 2;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-width: 24px;
	height: 24px;
	padding: 0 7px;
	border-radius: var(--wcpc-radius-full, 999px);
	background: var(--wcpc-color-primary, #34657F);
	color: var(--wcpc-color-text-on-dark, #fff);
	box-shadow: var(--wcpc-shadow-1);
	font-size: 12px;
	font-weight: 600;
	line-height: 1;
	letter-spacing: 0.02em;
	pointer-events: none;
}

/* Play glyph over video/audio artwork. */
.wcpc-card__media-play {
	/* 2.8.0 — bottom-right corner, not dead centre: centred, the glyph sat on
	   the cover art's lettering (dox(o)logy, HA(V)E MERCY). */
	position: absolute;
	right: 10px;
	bottom: 10px;
	z-index: 2;
	display: flex;
	align-items: center;
	justify-content: center;
	width: 32px;
	height: 32px;
	border-radius: 50%;
	background: rgba(255, 255, 255, 0.92);
	color: var(--wcpc-color-primary, #34657F);
	box-shadow: var(--wcpc-shadow-2);
	pointer-events: none;
	transition: transform var(--wcpc-transition-fast, 120ms ease-out),
	            background-color var(--wcpc-transition-fast, 120ms ease-out);
}
.wcpc-card__media-play .wcpc-card__icon,
.wcpc-card__media-play svg {
	width: 12px;
	height: 12px;
	margin-left: 2px;
	color: inherit;
}
.wcpc-card:hover .wcpc-card__media-play {
	background: var(--wcpc-color-bg, #fff);
	transform: scale(1.1);
}

/* ------------------------------------------------------------------
   Body
   ------------------------------------------------------------------ */

.wcpc-card__body {
	display: flex;
	flex: 1;
	flex-direction: column;
	gap: var(--wcpc-card-gap, 8px);
	min-width: 0;
	padding: var(--wcpc-card-padding, 24px);
}

.wcpc-card__eyebrow {
	display: flex;
	align-items: center;
	gap: 6px;
	margin: 0;
	font-size: var(--wcpc-text-eyebrow, 13px);
	font-weight: 700;
	line-height: 1.2;
	letter-spacing: var(--wcpc-eyebrow-tracking, 0.08em);
	text-transform: uppercase;
	color: var(--wcpc-color-primary, #34657F);
}
.wcpc-card__eyebrow a {
	color: inherit;
	text-decoration: none;
}
.wcpc-card__eyebrow a:hover {
	text-decoration: underline;
}
.wcpc-card__eyebrow .wcpc-card__icon {
	width: 14px;
	height: 14px;
}
.wcpc-card__eyebrow-part {
	font-weight: 600;
	opacity: 0.85;
}

.wcpc-card__title {
	display: -webkit-box;
	-webkit-line-clamp: 2;
	-webkit-box-orient: vertical;
	overflow: hidden;
	margin: 0;
	font-family: inherit;
	font-size: var(--wcpc-card-title-size, 20px);
	font-weight: var(--wcpc-card-title-weight, 600);
	line-height: 1.25;
	letter-spacing: 0;
	text-transform: none;
	color: var(--wcpc-card-title-color, #003B5C);
}
.wcpc-card__title a {
	color: inherit;
	text-decoration: none;
}
.wcpc-card:hover .wcpc-card__title a {
	text-decoration: underline;
}

.wcpc-card__meta {
	display: flex;
	flex-wrap: wrap;
	gap: 6px var(--wcpc-space-sm, 8px);
	margin: 0;
	padding: 0;
	list-style: none;
	font-size: var(--wcpc-card-meta-size, 14px);
	line-height: 1.4;
	color: var(--wcpc-card-meta-color, #5B6B78);
}
.wcpc-card__meta li,
.wcpc-card__meta-item {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	min-width: 0;
}
.wcpc-card__meta a {
	color: inherit;
	text-decoration: none;
}
.wcpc-card__meta a:hover {
	color: var(--wcpc-color-primary, #34657F);
	text-decoration: underline;
}
.wcpc-card__meta-sep {
	margin-right: 2px;
	opacity: 0.5;
	user-select: none;
}
.wcpc-card__icon {
	flex: 0 0 auto;
	width: 16px;
	height: 16px;
	color: var(--wcpc-color-primary, #34657F);
}

.wcpc-card__summary {
	display: -webkit-box;
	-webkit-line-clamp: 3;
	-webkit-box-orient: vertical;
	overflow: hidden;
	margin: 0;
	font-size: var(--wcpc-text-body-sm, 14px);
	line-height: 1.5;
	color: var(--wcpc-color-text-muted, #5B6B78);
}

.wcpc-card__pills {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: var(--wcpc-space-xs, 4px) 6px;
}

.wcpc-card__footer {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: var(--wcpc-space-sm, 8px);
	margin-top: auto;
	padding-top: var(--wcpc-space-sm, 8px);
}

/* Link-arrow CTA. */
.wcpc-card__cta {
	position: relative;
	z-index: 2;
	display: inline-flex;
	align-items: center;
	gap: 6px;
	font-size: var(--wcpc-text-body-sm, 14px);
	font-weight: 600;
	color: var(--wcpc-color-primary, #34657F);
	text-decoration: none;
}
.wcpc-card__cta .wcpc-card__icon {
	transition: transform var(--wcpc-transition-base, 150ms ease-out);
}
.wcpc-card__cta:hover {
	color: var(--wcpc-color-primary-dark, #003B5C);
	text-decoration: none;
}
.wcpc-card:hover .wcpc-card__cta--link .wcpc-card__icon {
	transform: translateX(3px);
}

/* Real button CTA (Register, Join group) — the site's primary button. */
.wcpc-card__cta--button {
	justify-content: center;
	padding: 9px 16px;
	border: 1px solid var(--wcpc-color-primary, #34657F);
	border-radius: var(--wcpc-radius-md, 10px);
	background: var(--wcpc-color-primary, #34657F);
	color: var(--wcpc-color-text-on-dark, #fff);
	line-height: 1.2;
	transition: background-color var(--wcpc-transition-fast, 120ms ease-out),
	            border-color var(--wcpc-transition-fast, 120ms ease-out);
}
.wcpc-card__cta--button:hover {
	background: var(--wcpc-color-primary-dark, #003B5C);
	border-color: var(--wcpc-color-primary-dark, #003B5C);
	color: var(--wcpc-color-text-on-dark, #fff);
}

/* ------------------------------------------------------------------
   Chips (for cards outside a plugin scope that already styles .wcpc-pill)
   ------------------------------------------------------------------ */

.wcpc-card .wcpc-pill {
	display: inline-flex;
	align-items: center;
	gap: 4px;
	padding: 2px 10px;
	border: 1px solid transparent;
	border-radius: var(--wcpc-radius-full, 999px);
	background: var(--wcpc-color-surface-alt, #E8EEF3);
	color: var(--wcpc-color-text-muted, #5B6B78);
	font-size: var(--wcpc-text-micro, 12px);
	font-weight: 600;
	line-height: 1.4;
	letter-spacing: 0;
	text-transform: none;
	text-decoration: none;
	white-space: nowrap;
}
.wcpc-card .wcpc-pill--info    { background: var(--wcpc-tint-blue, #EDF4FA);  color: var(--wcpc-text-on-blue, #003B5C); }
.wcpc-card .wcpc-pill--success { background: var(--wcpc-tint-green, #E3F0E7); color: var(--wcpc-text-on-green, #356E45); }
.wcpc-card .wcpc-pill--warn    { background: var(--wcpc-tint-amber, #FFF1DC); color: var(--wcpc-text-on-amber, #8A5A12); }
.wcpc-card .wcpc-pill--error   { background: var(--wcpc-tint-rose, #FBE7EA);  color: var(--wcpc-text-on-rose, #B23149); }
.wcpc-card .wcpc-pill--muted   { background: var(--wcpc-color-surface-alt, #E8EEF3); color: var(--wcpc-color-text-muted, #5B6B78); }
.wcpc-card a.wcpc-pill:hover   { background: var(--wcpc-tint-blue, #EDF4FA);  color: var(--wcpc-text-on-blue, #003B5C); }
.wcpc-card .wcpc-pill:focus-visible { outline: none; box-shadow: var(--wcpc-focus-ring); }

/* ------------------------------------------------------------------
   Person — 1:1 photo, 18px name.
   ------------------------------------------------------------------ */

.wcpc-card--person .wcpc-card__media {
	aspect-ratio: 1 / 1;
}
.wcpc-card--person .wcpc-card__title {
	font-size: var(--wcpc-text-h5, 18px);
}

/* ------------------------------------------------------------------
   Compact — tile at 16px padding / 16px title (sidebars, 4-up strips).
   ------------------------------------------------------------------ */

.wcpc-card--compact .wcpc-card__body {
	padding: var(--wcpc-space-md, 16px);
	gap: var(--wcpc-space-xs, 4px);
}
.wcpc-card--compact .wcpc-card__title {
	font-size: var(--wcpc-text-body, 16px);
}
.wcpc-card--compact .wcpc-card__meta {
	font-size: var(--wcpc-text-micro, 12px);
}

/* ------------------------------------------------------------------
   Row — one line per item: thumb, body, trailing arrow. No lift.
   ------------------------------------------------------------------ */

.wcpc-card.wcpc-card--row {
	flex-direction: row;
	align-items: center;
	gap: var(--wcpc-space-md, 16px);
	padding: var(--wcpc-card-row-padding, 12px 16px);
	border-radius: var(--wcpc-card-row-radius, 10px);
	box-shadow: none;
}
.wcpc-card.wcpc-card--row:hover {
	transform: none;
	box-shadow: var(--wcpc-shadow-1);
	border-color: var(--wcpc-color-border-strong, #B8C5CF);
}
.wcpc-card--row > .wcpc-card__index {
	display: inline-flex;
	flex: 0 0 auto;
	align-items: center;
	justify-content: center;
	width: 28px;
	height: 28px;
	border-radius: 50%;
	background: var(--wcpc-tint-blue, #EDF4FA);
	color: var(--wcpc-color-primary-dark, #003B5C);
	font-size: 12px;
	font-weight: 700;
}
.wcpc-card--row > .wcpc-card__media {
	flex: 0 0 96px;
	width: 96px;
	aspect-ratio: 4 / 3;
	border-radius: var(--wcpc-radius-sm, 6px);
}
.wcpc-card--row > .wcpc-card__media--round {
	flex-basis: 56px;
	width: 56px;
	aspect-ratio: 1 / 1;
	border-radius: 50%;
}
.wcpc-card--row > .wcpc-card__media .wcpc-card__emblem {
	width: 40%;
}
.wcpc-card--row > .wcpc-card__media-chip,
.wcpc-card--row > .wcpc-card__media .wcpc-card__media-chip {
	top: 6px;
	left: 6px;
	min-width: 34px;
	padding: 3px 6px;
}
.wcpc-card--row > .wcpc-card__media .wcpc-card__media-chip .d {
	font-size: 16px;
}
.wcpc-card--row > .wcpc-card__body {
	padding: 0;
	gap: var(--wcpc-space-xs, 4px);
}
.wcpc-card--row .wcpc-card__title {
	-webkit-line-clamp: 1;
	font-size: var(--wcpc-text-body, 16px);
}
.wcpc-card--row .wcpc-card__eyebrow {
	font-size: 11px;
}
.wcpc-card--row .wcpc-card__meta {
	font-size: var(--wcpc-text-micro, 12px);
}
.wcpc-card--row .wcpc-card__meta .wcpc-card__icon {
	width: 14px;
	height: 14px;
}
.wcpc-card--row .wcpc-card__summary {
	-webkit-line-clamp: 1;
}
.wcpc-card--row .wcpc-card__footer {
	padding-top: 0;
}
.wcpc-card--row > .wcpc-card__go {
	display: inline-flex;
	flex: 0 0 auto;
	align-items: center;
	margin-left: auto;
	color: var(--wcpc-color-primary, #34657F);
	transition: transform var(--wcpc-transition-base, 150ms ease-out);
}
.wcpc-card--row > .wcpc-card__go .wcpc-card__icon {
	width: 22px;
	height: 22px;
}
.wcpc-card--row:hover > .wcpc-card__go {
	transform: translateX(3px);
}
@media (max-width: 620px) {
	.wcpc-card--row > .wcpc-card__media {
		flex-basis: 72px;
		width: 72px;
	}
}

/* Current item in a rail. */
.wcpc-card--current {
	border-color: var(--wcpc-color-primary, #34657F);
	background: var(--wcpc-tint-blue, #EDF4FA);
}

/* ------------------------------------------------------------------
   Grid presets (widgets): horizontal · minimal · hero.
   ------------------------------------------------------------------ */

.wcpc-card.wcpc-card--horizontal {
	flex-direction: row;
	align-items: stretch;
}
.wcpc-card--horizontal > .wcpc-card__media {
	flex: 0 0 var(--wcpc-card-image-size, 40%);
	width: var(--wcpc-card-image-size, 40%);
	aspect-ratio: auto;
	min-height: 160px;
}
.wcpc-card--horizontal.wcpc-card--image-right > .wcpc-card__media {
	order: 2;
}
.wcpc-card--horizontal > .wcpc-card__body {
	flex: 1 1 auto;
}
@media (max-width: 767px) {
	.wcpc-card.wcpc-card--horizontal {
		flex-direction: column;
	}
	.wcpc-card--horizontal > .wcpc-card__media {
		flex-basis: auto;
		width: 100%;
		aspect-ratio: 16 / 9;
		min-height: 0;
		order: 0;
	}
}

.wcpc-card--minimal > .wcpc-card__media {
	display: none;
}

.wcpc-card.wcpc-card--hero {
	min-height: 320px;
	color: var(--wcpc-color-text-on-dark, #fff);
}
.wcpc-card--hero > .wcpc-card__media {
	position: absolute;
	inset: 0;
	aspect-ratio: auto;
	height: 100%;
}
.wcpc-card--hero > .wcpc-card__media::after {
	content: "";
	position: absolute;
	inset: 0;
	background: linear-gradient(to top, var(--wcpc-overlay-photo, rgba(0, 59, 92, 0.55)) 0%, rgba(0, 59, 92, 0.05) 60%);
}
.wcpc-card--hero > .wcpc-card__body {
	position: relative;
	z-index: 1;
	justify-content: flex-end;
	margin-top: auto;
}
.wcpc-card--hero .wcpc-card__title,
.wcpc-card--hero .wcpc-card__eyebrow,
.wcpc-card--hero .wcpc-card__meta,
.wcpc-card--hero .wcpc-card__summary,
.wcpc-card--hero .wcpc-card__icon,
.wcpc-card--hero .wcpc-card__cta {
	color: inherit;
}
.wcpc-card--hero .wcpc-card__title {
	font-size: var(--wcpc-text-h3, 24px);
}

/* ------------------------------------------------------------------
   Site-authored tiles (Elementor): the emblem tile as a utility class,
   for a hand-built card's media slot that has no photo yet. Same look as
   .wcpc-card__media--emblem (primary-light at 25% + the mark at 26%).
   ------------------------------------------------------------------ */

.wcpc-emblem-tile {
	background-color: var(--wcpc-tint-blue, #EDF4FA);
	background-color: color-mix(in srgb, var(--wcpc-color-primary-light, #A4C8E1) 25%, var(--wcpc-color-bg, #fff));
	background-image: url("../img/wcpc-mark-primary.svg");
	background-repeat: no-repeat;
	background-position: center;
	background-size: min(26%, 72px) auto;
}

/* ------------------------------------------------------------------
   Grid helper: 3 / 2 / 1 at 1024 / 767, gap space-lg.
   ------------------------------------------------------------------ */

.wcpc-card-grid {
	display: grid;
	grid-template-columns: repeat(var(--wcpc-columns, 3), minmax(0, 1fr));
	gap: var(--wcpc-space-lg, 24px);
}
.wcpc-card-grid--rows {
	grid-template-columns: minmax(0, 1fr);
	gap: var(--wcpc-space-sm, 8px);
}
@media (max-width: 1024px) {
	.wcpc-card-grid:not(.wcpc-card-grid--rows) {
		grid-template-columns: repeat(min(var(--wcpc-columns, 3), 2), minmax(0, 1fr));
	}
}
@media (max-width: 767px) {
	.wcpc-card-grid:not(.wcpc-card-grid--rows) {
		grid-template-columns: minmax(0, 1fr);
	}
}

@media (prefers-reduced-motion: reduce) {
	.wcpc-card,
	.wcpc-card:hover,
	.wcpc-card__media-play,
	.wcpc-card__cta .wcpc-card__icon,
	.wcpc-card--row > .wcpc-card__go {
		transition: none;
		transform: none;
	}
}


/* ------------------------------------------------------------------
   2.8.0 — meta separators never start a line. A meta list that prints
   .wcpc-card__meta-sep spans (class cards: "June 7, 2026 · speakers")
   moves the separator onto each item and clips the line-start strip, so a
   wrapped item never opens with a stray "·".
   ------------------------------------------------------------------ */
.wcpc-card__meta:has(.wcpc-card__meta-sep) {
	--wcpc-sepw: 16px;
	margin-left: calc(-1 * var(--wcpc-sepw));
	clip-path: inset(-4px -4px -4px var(--wcpc-sepw));
}
.wcpc-card__meta-sep {
	display: none;
}
.wcpc-card__meta:has(.wcpc-card__meta-sep) > .wcpc-card__meta-item::before {
	content: "\00B7";
	display: inline-block;
	width: var(--wcpc-sepw);
	text-align: center;
	color: var(--pl-text-muted, #5B6B78);
}
.wcpc-card__meta:has(.wcpc-card__meta-sep) > .wcpc-card__meta-item {
	white-space: nowrap;
	max-width: 100%;
	overflow: hidden;
	text-overflow: ellipsis;
}

/* 2.8.0 — phones: a bigger hit area for pills without moving anything. */
@media (max-width: 767px) {
	.wcpc-pill {
		position: relative;
	}
	.wcpc-pill::after {
		content: "";
		position: absolute;
		inset: -9px -3px;
	}
}
