/* =========================================================================
   Olive Activities — front end.
   Colours read the active theme's custom properties where present and fall
   back to the Olive House palette, so the plugin looks native in this theme
   and neutral-but-tidy in any other.
   ========================================================================= */

.oa-single,
.oa-archive,
.oa-register {
	--oa-dark: var(--olive-dark, #2E3C29);
	--oa-primary: var(--olive-primary, #2E5E46);
	--oa-gold: var(--olive-gold, #C9A24A);
	--oa-page: var(--page, #FAF7F0);
	--oa-paper: var(--paper, #FFFDF8);
	--oa-ink: var(--ink, #24312B);
	--oa-line: var(--hairline, rgba(46, 60, 41, 0.14));
	--oa-radius: 14px;
	--oa-arch: 999px 999px 12px 12px;
	--oa-ease: cubic-bezier(0.22, 0.61, 0.36, 1);
}

.oa-single,
.oa-archive {
	max-width: 1200px;
	margin-inline: auto;
	padding: clamp(2rem, 5vw, 4rem) clamp(1.1rem, 4vw, 2.5rem);
	color: var(--oa-ink);
}

/* Archive ---------------------------------------------------------------- */
.oa-archive-head { margin-bottom: clamp(2rem, 4vw, 3rem); }

.oa-archive-title,
.oa-single-title {
	font-size: clamp(1.9rem, 1.4rem + 2.2vw, 3rem);
	line-height: 1.15;
	color: var(--oa-dark);
	margin: 0 0 0.6rem;
}

.oa-archive-lead { color: #55605a; max-width: 60ch; }

.oa-archive-section { margin-bottom: clamp(2.5rem, 5vw, 4rem); }

.oa-archive-section-title {
	font-size: 1.1rem;
	text-transform: uppercase;
	letter-spacing: 0.14em;
	color: var(--oa-primary);
	padding-bottom: 0.6rem;
	border-bottom: 1px solid var(--oa-line);
	margin: 0 0 1.75rem;
}

/* Cards ------------------------------------------------------------------- */
.oa-cards {
	list-style: none;
	margin: 0;
	padding: 0;
	display: grid;
	gap: clamp(1.1rem, 2.4vw, 1.75rem);
}

.oa-cards--1 { grid-template-columns: 1fr; }
.oa-cards--2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.oa-cards--3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.oa-cards--4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }

.oa-card {
	background: var(--oa-paper);
	border: 1px solid var(--oa-line);
	border-radius: var(--oa-radius);
	overflow: hidden;
	display: flex;
	flex-direction: column;
	transition: transform 300ms var(--oa-ease), box-shadow 300ms var(--oa-ease), border-color 300ms var(--oa-ease);
}

.oa-card:hover,
.oa-card:focus-within {
	transform: translateY(-3px);
	border-color: rgba(201, 162, 74, 0.55);
	box-shadow: 0 18px 40px rgba(46, 60, 41, 0.12);
}

.oa-card-media {
	display: block;
	margin: 1rem 1rem 0;
	border-radius: var(--oa-arch);
	overflow: hidden;
	aspect-ratio: 4 / 3.4;
	background: var(--sand, #E8DDC9);
}

.oa-card-media img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	transition: transform 600ms var(--oa-ease);
}

.oa-card:hover .oa-card-media img { transform: scale(1.04); }

.oa-card-placeholder { display: block; width: 100%; height: 100%; }

.oa-card-body {
	padding: 1.1rem 1.3rem 1.4rem;
	display: flex;
	flex-direction: column;
	gap: 0.45rem;
	flex: 1;
}

.oa-card-title { font-size: 1.15rem; margin: 0; line-height: 1.3; }
.oa-card-title a { color: var(--oa-dark); text-decoration: none; }
.oa-card-title a:hover { color: var(--oa-primary); }

.oa-card-date {
	margin: 0;
	font-size: 0.88rem;
	font-weight: 600;
	color: var(--oa-primary);
}

.oa-card-time::before { content: " · "; }

.oa-card-text { margin: 0; font-size: 0.94rem; color: #55605a; flex: 1; }

.oa-card-link {
	margin-top: 0.7rem;
	align-self: flex-start;
	font-weight: 700;
	font-size: 0.92rem;
	color: var(--oa-dark);
	text-decoration: none;
	border-bottom: 1px solid rgba(201, 162, 74, 0.55);
	padding-bottom: 2px;
	display: inline-flex;
	gap: 0.4rem;
}

.oa-card-link:hover { color: var(--oa-primary); }
.oa-card-link span { transition: transform 220ms var(--oa-ease); }
.oa-card-link:hover span { transform: translateX(4px); }

/* Badges ------------------------------------------------------------------ */
.oa-badge {
	display: inline-block;
	font-size: 0.72rem;
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: 0.12em;
	border-radius: 999px;
	padding: 0.3rem 0.75rem;
	border: 1px solid currentColor;
	align-self: flex-start;
}

.oa-badge--open { color: #2f6b3f; }
.oa-badge--waitlist { color: #8a5a10; }
.oa-badge--full,
.oa-badge--closed,
.oa-badge--expired { color: #7a837d; }
.oa-badge--coming_soon { color: var(--oa-primary); }

/* Single activity ---------------------------------------------------------- */
.oa-single-head { margin-bottom: 1.5rem; display: grid; gap: 0.6rem; justify-items: start; }

.oa-kicker {
	margin: 0;
	font-size: 0.78rem;
	font-weight: 700;
	letter-spacing: 0.18em;
	text-transform: uppercase;
	color: var(--oa-gold);
}

.oa-single-excerpt { font-size: 1.08rem; color: #4b564f; max-width: 62ch; margin: 0; }

.oa-single-media {
	margin: 0 0 clamp(1.75rem, 4vw, 2.75rem);
	border-radius: var(--oa-radius);
	overflow: hidden;
	border: 1px solid var(--oa-line);
}

.oa-single-media img { width: 100%; height: auto; display: block; }

.oa-single-grid {
	display: grid;
	grid-template-columns: minmax(0, 1.35fr) minmax(0, 0.65fr);
	gap: clamp(2rem, 4vw, 3.5rem);
	align-items: start;
	margin-bottom: clamp(2rem, 5vw, 3.5rem);
}

.oa-single-content { line-height: 1.75; }
.oa-single-content > :first-child { margin-top: 0; }

/* Details list ------------------------------------------------------------- */
.oa-details {
	margin: 0;
	background: var(--oa-paper);
	border: 1px solid var(--oa-line);
	border-top: 3px solid var(--oa-gold);
	border-radius: var(--oa-radius);
	padding: 1.25rem 1.4rem;
	display: grid;
	gap: 0.85rem;
}

.oa-details-row { display: grid; gap: 0.15rem; }

.oa-details dt {
	font-size: 0.72rem;
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: 0.12em;
	color: var(--oa-primary);
}

.oa-details dd { margin: 0; font-size: 0.98rem; }

.oa-contact-box {
	margin-top: 1.1rem;
	background: var(--oa-paper);
	border: 1px solid var(--oa-line);
	border-radius: var(--oa-radius);
	padding: 1.1rem 1.4rem;
}

.oa-aside-title { font-size: 0.95rem; margin: 0 0 0.4rem; color: var(--oa-dark); }

/* Form --------------------------------------------------------------------- */
.oa-register { scroll-margin-top: 120px; }

.oa-form {
	background: var(--oa-paper);
	border: 1px solid var(--oa-line);
	border-radius: var(--oa-radius);
	padding: clamp(1.4rem, 3vw, 2.25rem);
	max-width: 760px;
}

.oa-form-title { margin: 0 0 0.5rem; font-size: 1.3rem; color: var(--oa-dark); }

.oa-form-remaining {
	margin: 0 0 1rem;
	font-size: 0.88rem;
	font-weight: 600;
	color: #8a5a10;
}

.oa-grid {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 0 1.25rem;
}

.oa-field { margin: 0 0 1.1rem; }

.oa-field label {
	display: block;
	font-weight: 600;
	font-size: 0.9rem;
	color: var(--oa-dark);
	margin-bottom: 0.35rem;
}

.oa-req { color: var(--oa-gold); }

.oa-field input[type="text"],
.oa-field input[type="email"],
.oa-field input[type="tel"] {
	width: 100%;
	font: inherit;
	font-size: 1rem; /* 16px minimum stops iOS zooming on focus */
	color: var(--oa-ink);
	background: #fff;
	border: 1px solid rgba(46, 60, 41, 0.3);
	border-radius: 8px;
	padding: 0.75rem 0.9rem;
	transition: border-color 220ms var(--oa-ease), box-shadow 220ms var(--oa-ease);
}

.oa-field input:focus {
	border-color: var(--oa-dark);
	outline: none;
	box-shadow: 0 0 0 3px rgba(201, 162, 74, 0.35);
}

.oa-field input:invalid:not(:placeholder-shown) { border-color: #b4531f; }

.oa-field--check {
	display: flex;
	align-items: flex-start;
	gap: 0.6rem;
	margin-bottom: 1.25rem;
}

.oa-field--check input {
	width: 1.15rem;
	height: 1.15rem;
	margin-top: 0.2rem;
	accent-color: var(--oa-dark);
	flex: none;
}

.oa-field--check label { font-weight: 400; font-size: 0.92rem; margin: 0; }

.oa-hp {
	position: absolute !important;
	left: -9999px !important;
	width: 1px;
	height: 1px;
	overflow: hidden;
}

.oa-recaptcha { margin-bottom: 1.1rem; }

.oa-actions { margin: 0; }

.oa-btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	font: inherit;
	font-weight: 700;
	font-size: 0.98rem;
	background: var(--oa-gold);
	color: #241c07;
	border: none;
	border-radius: 999px;
	padding: 0.95rem 2rem;
	cursor: pointer;
	transition: background 220ms var(--oa-ease), transform 220ms var(--oa-ease), box-shadow 220ms var(--oa-ease);
}

.oa-btn:hover {
	background: #d5b160;
	transform: translateY(-1px);
	box-shadow: 0 10px 24px rgba(201, 162, 74, 0.3);
}

.oa-btn:active { transform: translateY(0); }

/* Notices ------------------------------------------------------------------- */
.oa-notice {
	border-radius: 10px;
	padding: 1rem 1.25rem;
	margin-bottom: 1.25rem;
	max-width: 760px;
}

.oa-notice p { margin: 0; }
.oa-notice p + p { margin-top: 0.5rem; }

.oa-notice--success {
	background: rgba(46, 60, 41, 0.07);
	border: 1px solid var(--oa-dark);
	border-inline-start-width: 4px;
	color: var(--oa-dark);
	font-weight: 500;
}

.oa-notice--error {
	background: rgba(180, 83, 31, 0.08);
	border: 1px solid #b4531f;
	border-inline-start-width: 4px;
	color: #8a3d13;
	font-weight: 500;
}

.oa-notice--closed,
.oa-notice--waitlist {
	background: var(--oa-paper);
	border: 1px solid var(--oa-line);
	border-inline-start: 4px solid var(--oa-gold);
	color: var(--oa-ink);
}

.oa-notice-contact { font-size: 0.92rem; color: #55605a; }

.oa-empty { color: #55605a; }

.oa-list-title { color: var(--oa-dark); }

/* Responsive ----------------------------------------------------------------- */
@media (max-width: 900px) {
	.oa-single-grid { grid-template-columns: 1fr; }
	.oa-cards--3, .oa-cards--4 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

@media (max-width: 600px) {
	.oa-cards--2, .oa-cards--3, .oa-cards--4 { grid-template-columns: 1fr; }
	.oa-grid { grid-template-columns: 1fr; gap: 0; }
	.oa-btn { width: 100%; }
	.oa-form { padding: 1.25rem; }
}

@media (prefers-reduced-motion: reduce) {
	.oa-card, .oa-card-media img, .oa-btn, .oa-card-link span { transition: none; }
}
