/*
 * C3 PCO Calendar
 *
 * Every colour, font, radius and spacing step lives in the single :root block
 * below. Rebrand by editing that block only; nothing further down hard-codes a
 * colour. Every selector is scoped under .c3pco so we cannot collide with Divi.
 */

:root {
	/* Brand ------------------------------------------------------------- */
	--c3pco-accent: #f0a22e;
	--c3pco-accent-dark: #d4881a;
	--c3pco-accent-ink: #2a1c05;
	--c3pco-charcoal: #262626;
	--c3pco-charcoal-soft: #3a3a3a;

	/* Surfaces ---------------------------------------------------------- */
	--c3pco-bg: transparent;
	--c3pco-surface: #ffffff;
	--c3pco-surface-muted: #f7f7f6;
	--c3pco-surface-sunken: #f0efed;
	--c3pco-border: #e3e1de;
	--c3pco-border-strong: #cfccc7;

	/* Ink --------------------------------------------------------------- */
	--c3pco-ink: #1f1f1f;
	--c3pco-ink-soft: #575553;
	--c3pco-ink-muted: #8a8783;
	--c3pco-ink-invert: #ffffff;

	/* State ------------------------------------------------------------- */
	--c3pco-focus: #1d6fd8;
	--c3pco-overlay: rgba(24, 22, 20, 0.72);
	--c3pco-chip: rgba(28, 26, 24, 0.68);
	--c3pco-shadow-sm: 0 1px 2px rgba(20, 18, 16, 0.06), 0 2px 8px rgba(20, 18, 16, 0.06);
	--c3pco-shadow-md: 0 6px 18px rgba(20, 18, 16, 0.12);
	--c3pco-shadow-lg: 0 24px 60px rgba(20, 18, 16, 0.28);

	/* Type -------------------------------------------------------------- */
	--c3pco-font-body: inherit;
	--c3pco-font-display: "Oswald", "Archivo Narrow", "Roboto Condensed", "Franklin Gothic Medium", "Arial Narrow", var(--c3pco-font-body), sans-serif;
	--c3pco-display-weight: 700;
	--c3pco-display-tracking: 0.01em;
	--c3pco-display-transform: none;

	/* Geometry ---------------------------------------------------------- */
	--c3pco-radius-sm: 4px;
	--c3pco-radius: 8px;
	--c3pco-radius-lg: 16px;
	--c3pco-radius-pill: 999px;
	--c3pco-gap-xs: 4px;
	--c3pco-gap-sm: 8px;
	--c3pco-gap: 16px;
	--c3pco-gap-lg: 24px;
	--c3pco-gap-xl: 40px;
	--c3pco-card-width: 300px;
	--c3pco-card-width-sm: 260px;
	--c3pco-cell-min-height: 118px;

	/* Hebrew calendar ---------------------------------------------------- */
	--c3pco-hebrew-ink: #8a7a5c;
	--c3pco-hebrew-ink-strong: #6d5f45;
	--c3pco-hebrew-size: 0.72rem;
	--c3pco-hebrew-font: "Frank Ruhl Libre", "Noto Sans Hebrew", "David Libre", var(--c3pco-font-body), serif;
	/* Transliterated labels are Latin text and follow the body font instead. */
	--c3pco-hebrew-font-latin: var(--c3pco-font-body), sans-serif;

	/* Motion ------------------------------------------------------------ */
	--c3pco-transition: 160ms ease;
	--c3pco-breakpoint: 1024px;
}

/* ---------------------------------------------------------------------- *
 * Base
 * ---------------------------------------------------------------------- */

.c3pco {
	box-sizing: border-box;
	color: var(--c3pco-ink);
	font-family: var(--c3pco-font-body);
	background: var(--c3pco-bg);
}

.c3pco *,
.c3pco *::before,
.c3pco *::after {
	box-sizing: inherit;
}

.c3pco :focus-visible {
	outline: 3px solid var(--c3pco-focus);
	outline-offset: 2px;
	border-radius: var(--c3pco-radius-sm);
}

.c3pco-visually-hidden {
	position: absolute !important;
	width: 1px;
	height: 1px;
	margin: -1px;
	padding: 0;
	overflow: hidden;
	clip: rect(0 0 0 0);
	clip-path: inset(50%);
	white-space: nowrap;
	border: 0;
}

.c3pco .c3pco-empty {
	margin: 0;
	padding: var(--c3pco-gap-xl) var(--c3pco-gap);
	text-align: center;
	color: var(--c3pco-ink-muted);
	font-size: 1rem;
}

.c3pco-display {
	font-family: var(--c3pco-font-display);
	font-weight: var(--c3pco-display-weight);
	letter-spacing: var(--c3pco-display-tracking);
	text-transform: var(--c3pco-display-transform);
}

/* ---------------------------------------------------------------------- *
 * [c3_upcoming_events] — horizontal card row
 * ---------------------------------------------------------------------- */

.c3pco-upcoming {
	position: relative;
	margin: 0 auto;
}

.c3pco-carousel {
	position: relative;
}

.c3pco-carousel__track {
	display: flex;
	gap: var(--c3pco-gap-lg);
	margin: 0;
	padding: var(--c3pco-gap-sm) var(--c3pco-gap) var(--c3pco-gap-lg);
	list-style: none;
	overflow-x: auto;
	overscroll-behavior-x: contain;
	scroll-snap-type: x mandatory;
	scroll-padding-left: var(--c3pco-gap);
	scrollbar-width: none;
	-webkit-overflow-scrolling: touch;
}

.c3pco-carousel__track::-webkit-scrollbar {
	display: none;
}

.c3pco-carousel__item {
	flex: 0 0 var(--c3pco-card-width-sm);
	max-width: 88vw;
	scroll-snap-align: start;
	display: flex;
}

/* Cards deliberately bleed off both edges to signal scrollability. */
@media (min-width: 640px) {
	.c3pco-carousel__track {
		padding-left: max(var(--c3pco-gap), calc((100% - (var(--c3pco-card-width) * 3) - (var(--c3pco-gap-lg) * 2)) / 2));
		padding-right: var(--c3pco-gap-xl);
	}

	.c3pco-carousel__item {
		flex-basis: var(--c3pco-card-width);
	}
}

.c3pco-card {
	display: flex;
	flex-direction: column;
	width: 100%;
	padding: 0;
	border: 1px solid var(--c3pco-border);
	border-radius: var(--c3pco-radius);
	background: var(--c3pco-surface);
	box-shadow: var(--c3pco-shadow-sm);
	text-align: left;
	cursor: pointer;
	overflow: hidden;
	transition: transform var(--c3pco-transition), box-shadow var(--c3pco-transition);
	font: inherit;
	color: inherit;
}

.c3pco-card:hover,
.c3pco-card:focus-visible {
	transform: translateY(-3px);
	box-shadow: var(--c3pco-shadow-md);
}

.c3pco-card__media {
	position: relative;
	display: block;
	aspect-ratio: 16 / 10;
	background: var(--c3pco-surface-sunken);
	overflow: hidden;
}

.c3pco-card__image {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: cover;
}

.c3pco-card__image--placeholder {
	display: flex;
	align-items: center;
	justify-content: center;
	background: linear-gradient(135deg, var(--c3pco-charcoal), var(--c3pco-charcoal-soft));
	color: var(--c3pco-accent);
	font-family: var(--c3pco-font-display);
	font-weight: var(--c3pco-display-weight);
	font-size: 2.75rem;
	letter-spacing: 0.05em;
}

.c3pco-card__badge {
	position: absolute;
	top: var(--c3pco-gap-sm);
	left: var(--c3pco-gap-sm);
	display: flex;
	flex-direction: column;
	align-items: center;
	min-width: 52px;
	padding: 6px 8px 8px;
	border-radius: var(--c3pco-radius-sm);
	background: var(--c3pco-chip);
	color: var(--c3pco-ink-invert);
	backdrop-filter: blur(2px);
	font-family: var(--c3pco-font-display);
	line-height: 1;
}

.c3pco-card__badge-month {
	font-size: 0.75rem;
	font-weight: 600;
	letter-spacing: 0.08em;
	text-transform: uppercase;
	opacity: 0.92;
}

.c3pco-card__badge-day {
	font-size: 1.6rem;
	font-weight: var(--c3pco-display-weight);
}

.c3pco-card__body {
	display: flex;
	flex-direction: column;
	gap: var(--c3pco-gap-sm);
	padding: var(--c3pco-gap) var(--c3pco-gap) var(--c3pco-gap-lg);
}

.c3pco-card__title {
	font-family: var(--c3pco-font-display);
	font-weight: var(--c3pco-display-weight);
	font-size: 1.4rem;
	line-height: 1.15;
	letter-spacing: var(--c3pco-display-tracking);
	color: var(--c3pco-ink);
	display: -webkit-box;
	-webkit-line-clamp: 2;
	-webkit-box-orient: vertical;
	overflow: hidden;
}

.c3pco-card__summary {
	font-size: 0.95rem;
	line-height: 1.45;
	color: var(--c3pco-ink-soft);
	display: -webkit-box;
	-webkit-line-clamp: 2;
	-webkit-box-orient: vertical;
	overflow: hidden;
}

.c3pco-carousel__arrow {
	position: absolute;
	top: 40%;
	z-index: 2;
	display: none;
	width: 44px;
	height: 44px;
	align-items: center;
	justify-content: center;
	padding: 0;
	border: 1px solid var(--c3pco-border-strong);
	border-radius: var(--c3pco-radius-pill);
	background: var(--c3pco-surface);
	color: var(--c3pco-ink);
	box-shadow: var(--c3pco-shadow-md);
	font-size: 1.6rem;
	line-height: 1;
	cursor: pointer;
	transition: background var(--c3pco-transition), color var(--c3pco-transition);
}

.c3pco-carousel__arrow:hover {
	background: var(--c3pco-accent);
	border-color: var(--c3pco-accent);
	color: var(--c3pco-accent-ink);
}

.c3pco-carousel__arrow--prev {
	left: 4px;
}

.c3pco-carousel__arrow--next {
	right: 4px;
}

@media (min-width: 1024px) {
	.c3pco-carousel__arrow:not([hidden]) {
		display: flex;
	}
}

.c3pco-dots {
	display: flex;
	gap: var(--c3pco-gap-sm);
	justify-content: center;
	align-items: center;
	min-height: 24px;
}

.c3pco-dots__dot {
	width: 9px;
	height: 9px;
	padding: 0;
	border: 0;
	border-radius: var(--c3pco-radius-pill);
	background: var(--c3pco-border-strong);
	cursor: pointer;
	transition: background var(--c3pco-transition), transform var(--c3pco-transition);
}

.c3pco-dots__dot.is-active {
	background: var(--c3pco-charcoal);
	transform: scale(1.25);
}

/* ---------------------------------------------------------------------- *
 * [c3_event_calendar] — shared chrome
 * ---------------------------------------------------------------------- */

.c3pco-cal {
	--c3pco-cal-gutter: var(--c3pco-gap);
	position: relative;
}

/* The Hebrew day label occupies the cell's top-left, so events start lower. */
.c3pco-cal.has-hebrew {
	--c3pco-cell-min-height: 132px;
}

.c3pco-cal__header {
	display: flex;
	flex-wrap: wrap;
	gap: var(--c3pco-gap);
	align-items: center;
	justify-content: space-between;
	padding: 0 var(--c3pco-cal-gutter) var(--c3pco-gap);
}

.c3pco-cal__heading {
	margin: 0;
	font-family: var(--c3pco-font-display);
	font-weight: var(--c3pco-display-weight);
	font-size: 1.5rem;
	line-height: 1.2;
	letter-spacing: var(--c3pco-display-tracking);
	color: var(--c3pco-ink);
}

.c3pco-cal__nav {
	display: flex;
	gap: var(--c3pco-gap-sm);
	align-items: center;
}

.c3pco-cal__arrow,
.c3pco-cal__today {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-height: 36px;
	padding: 0 var(--c3pco-gap);
	border: 1px solid var(--c3pco-border-strong);
	border-radius: var(--c3pco-radius-pill);
	background: var(--c3pco-surface);
	color: var(--c3pco-ink-soft);
	font: inherit;
	font-size: 0.95rem;
	cursor: pointer;
	transition: background var(--c3pco-transition), color var(--c3pco-transition), border-color var(--c3pco-transition);
}

.c3pco-cal__arrow {
	width: 36px;
	padding: 0;
	border-color: transparent;
	font-size: 1.5rem;
	line-height: 1;
}

.c3pco-cal__arrow:hover:not([disabled]),
.c3pco-cal__today:hover {
	background: var(--c3pco-accent);
	border-color: var(--c3pco-accent);
	color: var(--c3pco-accent-ink);
}

.c3pco-cal__arrow[disabled] {
	opacity: 0.35;
	cursor: default;
}

.c3pco-cal__status {
	padding: 0 var(--c3pco-cal-gutter);
	color: var(--c3pco-ink-muted);
	font-size: 0.9rem;
	min-height: 1.2em;
}

.c3pco-cal__status:empty {
	min-height: 0;
}

/* ---------------------------------------------------------------------- *
 * Month grid (>= 1024px)
 * ---------------------------------------------------------------------- */

.c3pco-cal__grid {
	display: none;
	border: 1px solid var(--c3pco-border);
	border-radius: var(--c3pco-radius);
	background: var(--c3pco-surface);
	overflow: hidden;
}

.c3pco-cal__weekdays,
.c3pco-cal__week {
	display: grid;
	grid-template-columns: repeat(7, minmax(0, 1fr));
}

.c3pco-cal__weekday {
	padding: var(--c3pco-gap-sm) var(--c3pco-gap-sm);
	text-align: center;
	color: var(--c3pco-ink-soft);
	font-size: 0.9rem;
	letter-spacing: 0.02em;
}

.c3pco-cal__week + .c3pco-cal__week .c3pco-cal__day {
	border-top: 1px solid var(--c3pco-border);
}

.c3pco-cal__weeks > .c3pco-cal__week:first-child .c3pco-cal__day {
	border-top: 1px solid var(--c3pco-border);
}

.c3pco-cal__day {
	position: relative;
	display: flex;
	flex-direction: column;
	gap: var(--c3pco-gap-xs);
	min-height: var(--c3pco-cell-min-height);
	padding: var(--c3pco-gap-sm);
	overflow: hidden;
	border-left: 1px solid var(--c3pco-border);
	background: var(--c3pco-surface);
}

.c3pco-cal__day:first-child {
	border-left: 0;
}

.c3pco-cal__day.is-outside {
	background: var(--c3pco-surface-muted);
}

.c3pco-cal__day.is-outside .c3pco-cal__daynum,
.c3pco-cal__day.is-outside .c3pco-cal__eventbtn {
	opacity: 0.5;
}

.c3pco-cal__day:focus-visible {
	outline: 3px solid var(--c3pco-focus);
	outline-offset: -3px;
}

/* ---------------------------------------------------------------------- *
 * Hebrew calendar
 * ---------------------------------------------------------------------- */

.c3pco-cal__heading {
	display: flex;
	flex-direction: column;
	gap: 2px;
}

.c3pco-cal__heading-hebrew {
	font-family: var(--c3pco-hebrew-font);
	font-size: 0.95rem;
	font-weight: 400;
	letter-spacing: 0;
	text-transform: none;
	color: var(--c3pco-hebrew-ink-strong);
}

/* The Hebrew day sits opposite the civil day number, top-left of the cell,
   so the two never compete for the same corner. Transliterated labels read
   "14 Elul", so the day comes first and the month follows. */
.c3pco-cal__hebrew {
	position: absolute;
	top: var(--c3pco-gap-sm);
	left: var(--c3pco-gap-sm);
	display: flex;
	align-items: baseline;
	gap: 4px;
	max-width: calc(100% - 38px);
	font-family: var(--c3pco-hebrew-font);
	font-size: var(--c3pco-hebrew-size);
	line-height: 1.2;
	color: var(--c3pco-hebrew-ink);
	pointer-events: none;
}

/* The day always precedes the month in the markup, so the label reads "12 Av"
   left-to-right and, with dir="rtl", "י״ב אב" right-to-left. No CSS reordering:
   the DOM order is the correct reading order in both directions. */
.c3pco-cal__hebrew:not([dir="rtl"]) {
	font-family: var(--c3pco-hebrew-font-latin);
}

.c3pco-cal__hebrew-day {
	font-variant-numeric: tabular-nums;
	font-weight: 600;
}

.c3pco-cal__hebrew-month {
	font-weight: 500;
	color: var(--c3pco-hebrew-ink);
	white-space: nowrap;
	overflow: hidden;
	text-overflow: ellipsis;
}

/* Rosh Chodesh: the first of a Hebrew month gets a little weight. */
.c3pco-cal__hebrew.is-new-month {
	color: var(--c3pco-hebrew-ink-strong);
}

.c3pco-cal__hebrew.is-new-month .c3pco-cal__hebrew-month,
.c3pco-cal__hebrew.is-new-month .c3pco-cal__hebrew-day {
	font-weight: 700;
	color: var(--c3pco-hebrew-ink-strong);
}

.c3pco-cal__day.is-outside .c3pco-cal__hebrew {
	opacity: 0.5;
}

.c3pco-cal__day.is-today .c3pco-cal__hebrew {
	color: var(--c3pco-hebrew-ink-strong);
	font-weight: 600;
}

.c3pco-cal__heading-hebrew:not([dir="rtl"]),
.c3pco-agenda__hebrew:not([dir="rtl"]),
.c3pco-card__badge-hebrew:not([dir="rtl"]),
.c3pco-modal__hebrew:not([dir="rtl"]) {
	font-family: var(--c3pco-hebrew-font-latin);
}

.c3pco-agenda__hebrew {
	margin-top: 2px;
	font-family: var(--c3pco-hebrew-font);
	font-size: 0.78rem;
	font-weight: 500;
	letter-spacing: 0;
	text-transform: none;
	opacity: 0.88;
}

.c3pco-card__badge-hebrew {
	margin-top: 3px;
	padding-top: 3px;
	border-top: 1px solid rgba(255, 255, 255, 0.28);
	font-family: var(--c3pco-hebrew-font);
	font-size: 0.62rem;
	font-weight: 500;
	letter-spacing: 0.01em;
	text-align: center;
	opacity: 0.95;
}

.c3pco-modal__hebrew {
	font-family: var(--c3pco-hebrew-font);
	font-size: 1rem;
	color: var(--c3pco-hebrew-ink-strong);
}

.c3pco-cal__daynum {
	align-self: flex-end;
	min-width: 26px;
	height: 26px;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	border-radius: var(--c3pco-radius-pill);
	color: var(--c3pco-ink-muted);
	font-size: 0.85rem;
	font-variant-numeric: tabular-nums;
}

.c3pco-cal__day.is-today .c3pco-cal__daynum {
	background: var(--c3pco-accent);
	color: var(--c3pco-accent-ink);
	font-weight: 700;
}

.c3pco-cal__events {
	display: flex;
	flex-direction: column;
	gap: 1px;
	margin: 0;
	padding: 0;
	list-style: none;
}

.c3pco-cal__eventbtn {
	display: block;
	width: 100%;
	padding: 2px 4px;
	border: 0;
	border-radius: var(--c3pco-radius-sm);
	background: none;
	color: var(--c3pco-ink);
	font: inherit;
	font-size: 0.85rem;
	line-height: 1.35;
	text-align: left;
	white-space: nowrap;
	overflow: hidden;
	text-overflow: ellipsis;
	cursor: pointer;
	transition: background var(--c3pco-transition);
}

.c3pco-cal__eventbtn:hover {
	background: var(--c3pco-surface-sunken);
}

.c3pco-cal__eventtime {
	color: var(--c3pco-ink-soft);
	font-variant-numeric: tabular-nums;
}

.c3pco-cal__eventtime::after {
	content: " ";
}

.c3pco-cal__more {
	align-self: flex-start;
	margin-top: auto;
	padding: 2px 4px;
	border: 0;
	border-radius: var(--c3pco-radius-sm);
	background: none;
	color: var(--c3pco-ink-soft);
	font: inherit;
	font-size: 0.8rem;
	font-weight: 600;
	cursor: pointer;
}

.c3pco-cal__more:hover {
	color: var(--c3pco-accent-dark);
	text-decoration: underline;
}

/* ---------------------------------------------------------------------- *
 * Agenda list (< 1024px)
 * ---------------------------------------------------------------------- */

.c3pco-agenda__list {
	display: flex;
	flex-direction: column;
	gap: var(--c3pco-gap);
	margin: 0;
	padding: 0 var(--c3pco-cal-gutter);
	list-style: none;
}

.c3pco-agenda__card {
	--c3pco-card-bg: var(--c3pco-accent);
	--c3pco-card-fg: var(--c3pco-accent-ink);
	display: grid;
	grid-template-columns: auto 1fr;
	grid-template-areas:
		"date date"
		"title title"
		"time time";
	gap: var(--c3pco-gap-sm);
	width: 100%;
	padding: var(--c3pco-gap-lg);
	border: 0;
	border-radius: var(--c3pco-radius-lg);
	background: var(--c3pco-card-bg);
	color: var(--c3pco-card-fg);
	text-align: left;
	font: inherit;
	cursor: pointer;
	transition: transform var(--c3pco-transition), filter var(--c3pco-transition);
}

.c3pco-agenda__card:hover,
.c3pco-agenda__card:focus-visible {
	transform: translateY(-2px);
	filter: brightness(1.04);
}

.c3pco-agenda__date {
	grid-area: date;
	display: flex;
	flex-direction: column;
	line-height: 1;
}

.c3pco-agenda__day {
	font-family: var(--c3pco-font-display);
	font-weight: var(--c3pco-display-weight);
	font-size: 2.4rem;
	font-variant-numeric: tabular-nums;
}

.c3pco-agenda__month {
	margin-top: var(--c3pco-gap-xs);
	font-size: 0.8rem;
	font-weight: 700;
	letter-spacing: 0.1em;
	text-transform: uppercase;
	opacity: 0.9;
}

.c3pco-agenda__title {
	grid-area: title;
	font-family: var(--c3pco-font-display);
	font-weight: var(--c3pco-display-weight);
	font-size: 1.55rem;
	line-height: 1.1;
	letter-spacing: 0.01em;
	text-transform: uppercase;
}

.c3pco-agenda__time {
	grid-area: time;
	display: inline-flex;
	align-items: center;
	gap: var(--c3pco-gap-sm);
	font-size: 1rem;
	font-variant-numeric: tabular-nums;
	opacity: 0.95;
}

.c3pco-agenda__clock {
	flex: 0 0 auto;
}

/* ---------------------------------------------------------------------- *
 * The 1024px switch. Both views are in the DOM; CSS decides which is live,
 * so resizing a desktop window never needs a reload.
 * ---------------------------------------------------------------------- */

@media (min-width: 1024px) {
	.c3pco-cal__grid {
		display: block;
	}

	.c3pco-agenda {
		display: none;
	}
}

@media (max-width: 1023.98px) {
	.c3pco-cal__grid {
		display: none;
	}

	.c3pco-agenda {
		display: block;
	}
}

/* ---------------------------------------------------------------------- *
 * Detail modal
 * ---------------------------------------------------------------------- */

.c3pco-modal {
	position: fixed;
	inset: 0;
	z-index: 100000;
	display: flex;
	align-items: flex-start;
	justify-content: center;
	padding: var(--c3pco-gap);
	overflow-y: auto;
	overscroll-behavior: contain;
}

.c3pco-modal[hidden] {
	display: none;
}

.c3pco-modal__backdrop {
	position: fixed;
	inset: 0;
	background: var(--c3pco-overlay);
	border: 0;
	cursor: pointer;
}

.c3pco-modal__dialog {
	position: relative;
	z-index: 1;
	width: 100%;
	max-width: 620px;
	margin: auto;
	border-radius: var(--c3pco-radius-lg);
	background: var(--c3pco-surface);
	box-shadow: var(--c3pco-shadow-lg);
	overflow: hidden;
	animation: c3pco-modal-in 180ms ease;
}

@keyframes c3pco-modal-in {
	from {
		opacity: 0;
		transform: translateY(12px);
	}

	to {
		opacity: 1;
		transform: none;
	}
}

.c3pco-modal__close {
	position: absolute;
	top: var(--c3pco-gap-sm);
	right: var(--c3pco-gap-sm);
	z-index: 2;
	width: 40px;
	height: 40px;
	display: flex;
	align-items: center;
	justify-content: center;
	padding: 0;
	border: 0;
	border-radius: var(--c3pco-radius-pill);
	background: var(--c3pco-chip);
	color: var(--c3pco-ink-invert);
	font-size: 1.6rem;
	line-height: 1;
	cursor: pointer;
}

.c3pco-modal__close:hover {
	background: var(--c3pco-charcoal);
}

.c3pco-modal__media img {
	display: block;
	width: 100%;
	max-height: 320px;
	object-fit: cover;
}

.c3pco-modal__content {
	display: flex;
	flex-direction: column;
	gap: var(--c3pco-gap-sm);
	padding: var(--c3pco-gap-lg);
}

.c3pco-modal__title {
	margin: 0;
	font-family: var(--c3pco-font-display);
	font-weight: var(--c3pco-display-weight);
	font-size: 1.9rem;
	line-height: 1.1;
	letter-spacing: var(--c3pco-display-tracking);
	color: var(--c3pco-ink);
}

.c3pco-modal__meta {
	margin: 0;
	color: var(--c3pco-ink-soft);
	font-size: 1rem;
}

.c3pco-modal__when {
	color: var(--c3pco-ink);
	font-weight: 600;
}

.c3pco-modal__recurrence {
	font-size: 0.9rem;
	color: var(--c3pco-ink-muted);
}

.c3pco-modal__description {
	margin-top: var(--c3pco-gap-sm);
	color: var(--c3pco-ink-soft);
	font-size: 1rem;
	line-height: 1.6;
	overflow-wrap: break-word;
}

.c3pco-modal__description > *:first-child {
	margin-top: 0;
}

.c3pco-modal__description > *:last-child {
	margin-bottom: 0;
}

.c3pco-modal__description img {
	max-width: 100%;
	height: auto;
}

.c3pco-modal__actions {
	display: flex;
	flex-wrap: wrap;
	gap: var(--c3pco-gap);
	align-items: center;
	margin-top: var(--c3pco-gap);
}

.c3pco-btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-height: 46px;
	padding: 0 var(--c3pco-gap-lg);
	border: 2px solid transparent;
	border-radius: var(--c3pco-radius-pill);
	font-family: var(--c3pco-font-display);
	font-weight: var(--c3pco-display-weight);
	font-size: 1rem;
	letter-spacing: 0.06em;
	text-transform: uppercase;
	text-decoration: none;
	cursor: pointer;
	transition: background var(--c3pco-transition), color var(--c3pco-transition), border-color var(--c3pco-transition);
}

.c3pco-btn--primary,
.c3pco-btn--primary:visited {
	background: var(--c3pco-accent);
	border-color: var(--c3pco-accent);
	color: var(--c3pco-accent-ink);
}

.c3pco-btn--primary:hover,
.c3pco-btn--primary:focus-visible {
	background: var(--c3pco-accent-dark);
	border-color: var(--c3pco-accent-dark);
	color: var(--c3pco-ink-invert);
}

.c3pco-btn--ghost {
	background: transparent;
	border-color: var(--c3pco-border-strong);
	color: var(--c3pco-ink);
}

.c3pco-btn--ghost:hover,
.c3pco-btn--ghost:focus-visible {
	border-color: var(--c3pco-charcoal);
	background: var(--c3pco-surface-muted);
}

.c3pco-modal__link,
.c3pco-modal__link:visited {
	color: var(--c3pco-ink-soft);
	font-size: 0.95rem;
	text-decoration: underline;
	text-underline-offset: 3px;
}

.c3pco-modal__link:hover {
	color: var(--c3pco-accent-dark);
}

/* Keep the page behind the modal from scrolling. */
body.c3pco-modal-open {
	overflow: hidden;
}

/* ---------------------------------------------------------------------- *
 * Motion preferences
 * ---------------------------------------------------------------------- */

@media (prefers-reduced-motion: reduce) {
	.c3pco *,
	.c3pco *::before,
	.c3pco *::after {
		animation-duration: 0.01ms !important;
		animation-iteration-count: 1 !important;
		transition-duration: 0.01ms !important;
		scroll-behavior: auto !important;
	}

	.c3pco-card:hover,
	.c3pco-card:focus-visible,
	.c3pco-agenda__card:hover,
	.c3pco-agenda__card:focus-visible {
		transform: none;
	}
}

/* ---------------------------------------------------------------------- *
 * Print
 * ---------------------------------------------------------------------- */

@media print {
	.c3pco-cal__nav,
	.c3pco-carousel__arrow,
	.c3pco-dots,
	.c3pco-modal {
		display: none !important;
	}

	.c3pco-cal__grid {
		display: block !important;
	}

	.c3pco-agenda {
		display: none !important;
	}
}
