/* Page styles: events (design system v2). Loaded on every page after main.css;
   scope rules to this group's templates (body classes / component classes).

   Weddings & Events hub (archive-event.php), venue/occasion pages
   (single-event.php) and the "Book a site visit" band (enquiry-band.php).
   Every rule targets either an ev-* component that only these templates
   output (inc/events.php) or is scoped to .post-type-archive-event /
   .single-event. The legacy .ev-hero-features/.ev-form-card/.ev-cards/
   .ev-occasions/.ev-cta rules in main.css are no longer used by the markup. */

.post-type-archive-event,
.single-event {
	--ev-card-w: clamp(340px, 31vw, 440px);    /* enquiry card */
	--ev-gap: clamp(48px, 6vw, 96px);          /* between content and card */
	--ev-clear: calc(var(--ev-card-w) + var(--ev-gap));
	--ev-top: clamp(56px, 7vw, 104px);         /* space above the introduction */
	--ev-overlap: clamp(170px, 17vw, 250px);   /* how far the card rises into the hero */
}

/* ---------- Hero ---------- */
.ev-facts {
	display: grid; grid-auto-flow: column; grid-auto-columns: minmax(0, 1fr);
	list-style: none; margin: clamp(28px, 3.5vw, 44px) 0 0; padding: 24px 0 0;
	border-top: 1px solid rgb(255 255 255 / .22);
}
.ev-facts li { display: flex; align-items: flex-start; gap: 12px; padding: 0 clamp(14px, 1.6vw, 24px); border-left: 1px solid rgb(255 255 255 / .16); }
.ev-facts li:first-child { padding-left: 0; border-left: 0; }
.ev-facts .icon { width: 22px; height: 22px; margin-top: 1px; color: var(--gold-400); stroke-width: 1.4; }
.ev-facts span { display: flex; flex-direction: column; gap: 6px; font-size: .9375rem; line-height: 1.45; color: rgb(255 255 255 / .84); }
.ev-facts strong { font-size: .6875rem; font-weight: 500; letter-spacing: .2em; text-transform: uppercase; color: var(--gold-400); }
.ev-hero-cta { margin: 28px 0 0; }

@media (min-width: 901px) {
	/* Keep the hero copy clear of the enquiry card that rises into it. */
	.post-type-archive-event .page-hero__title,
	.single-event .page-hero__title { max-width: min(16ch, 100% - var(--ev-clear)); }
	.post-type-archive-event .page-hero__lead,
	.single-event .page-hero__lead { max-width: min(58ch, 100% - var(--ev-clear)); }
	.ev-facts { max-width: calc(100% - var(--ev-clear)); }
	.ev-hero-cta { display: none; }
}
@media (max-width: 640px) {
	.ev-facts { grid-auto-flow: row; grid-auto-columns: auto; gap: 16px; padding-top: 20px; }
	.ev-facts li { padding: 0; border-left: 0; }
	.ev-facts span { flex-direction: row; flex-wrap: wrap; align-items: baseline; gap: 2px 10px; font-size: .875rem; }
	.ev-facts strong { flex: 0 0 100%; }
}

/* ---------- Introduction + enquiry card ---------- */
.ev-body { padding-top: var(--ev-top); }
.ev-split { gap: var(--ev-gap); }
.ev-aside { position: relative; top: auto; z-index: 3; }
@media (min-width: 901px) {
	.ev-split { grid-template-columns: minmax(0, 1fr) var(--ev-card-w); }
	.ev-aside { margin-top: calc(-1 * (var(--ev-top) + var(--ev-overlap))); }
}

.ev-split .split__main .ev-intro__title { font-size: clamp(2.125rem, 4.4vw, 3.5rem); line-height: 1.08; margin-bottom: .55em; }
.ev-intro > .lead { margin-bottom: 1em; }
.ev-intro .h-stats { margin: clamp(32px, 4vw, 48px) 0 0; }
.ev-prose > p:first-child { font-size: clamp(1.125rem, 1.6vw, 1.3125rem); line-height: 1.7; color: var(--muted); }

.ev-detail { margin-top: clamp(44px, 5vw, 64px); }
.ev-subtitle { font-size: clamp(1.5rem, 2.2vw, 1.875rem); line-height: 1.2; margin: 0 0 6px; }
.ev-list { margin: 18px 0 0; }
.ev-list li { align-items: flex-start; line-height: 1.5; }
.ev-list .icon { margin-top: 1px; }

.ev-enquire {
	padding: clamp(30px, 3vw, 44px) clamp(22px, 2.4vw, 34px) clamp(26px, 3vw, 38px);
	background: var(--white);
	box-shadow: 0 40px 80px -40px rgb(12 26 16 / .45), 0 0 0 1px rgb(19 38 26 / .04);
}
.ev-enquire__kicker {
	display: flex; align-items: center; justify-content: center; gap: 14px; margin: 0 0 14px;
	font-size: .6875rem; font-weight: 500; letter-spacing: .32em; text-transform: uppercase; color: var(--gold-600);
}
.ev-enquire__kicker::before, .ev-enquire__kicker::after { content: ""; flex: none; width: 28px; height: 1px; background: currentColor; }
.ev-enquire__title { margin: 0 0 10px; font-size: clamp(1.5rem, 2vw, 1.875rem); line-height: 1.2; text-align: center; }
.ev-enquire__intro { margin: 0 auto 26px; padding-bottom: 24px; max-width: 34ch; font-size: .9375rem; line-height: 1.6; text-align: center; color: var(--muted); border-bottom: 1px solid var(--cream-200); }
@media (max-width: 900px) {
	.ev-aside { margin-top: clamp(48px, 9vw, 72px); }
	.ev-enquire { max-width: 640px; margin-inline: auto; box-shadow: 0 0 0 1px var(--cream-200); }
}
@media (max-width: 480px) {
	.ev-enquire { padding-inline: 20px; }
}

/* Venues in the main column of the venue/occasion pages: photo beside text. */
.ev-rows { list-style: none; margin: 22px 0 0; padding: 0; border-top: 1px solid var(--cream-200); }
.ev-row { display: grid; grid-template-columns: minmax(0, 5fr) minmax(0, 6fr); gap: clamp(20px, 3vw, 36px); align-items: center; padding: 24px 0; border-bottom: 1px solid var(--cream-200); }
.ev-row__media { display: block; aspect-ratio: 3 / 2; background: var(--green-100); }
.ev-row__media img { width: 100%; height: 100%; object-fit: cover; }
.ev-row:hover .ev-row__media img { transform: scale(1.05); }
.ev-row .ev-venue__meta { margin-bottom: 10px; }
.ev-row__title { margin: 0 0 8px; font-size: clamp(1.375rem, 2vw, 1.625rem); line-height: 1.15; }
.ev-row__title a { text-decoration: none; }
.ev-row__title a:hover { color: var(--gold-600); }
.ev-row__text { margin: 0 0 16px; font-size: .9375rem; line-height: 1.65; color: var(--muted); }
@media (max-width: 560px) {
	.ev-row { grid-template-columns: minmax(0, 1fr); gap: 18px; }
}

/* ---------- Photo mosaic (venue/occasion pages) ---------- */
.ev-gallery { margin-top: clamp(88px, 11vw, 160px); }
.ev-mosaic { display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); grid-auto-rows: clamp(150px, 16vw, 250px); gap: clamp(8px, 1vw, 14px); }
.ev-mosaic a { position: relative; display: block; grid-column: span 3; overflow: hidden; background: var(--green-100); }
.ev-mosaic img { width: 100%; height: 100%; object-fit: cover; transition: transform 1.4s var(--ease); }
.ev-mosaic a:hover img { transform: scale(1.05); }
.ev-mosaic a::after { content: ""; position: absolute; inset: 0; background: rgb(8 18 11 / 0); transition: background-color .5s var(--ease); }
.ev-mosaic a:hover::after { background: rgb(8 18 11 / .12); }
.ev-mosaic a:first-child { grid-column: span 6; grid-row: span 2; }
.ev-mosaic--4 a:nth-child(2) { grid-column: span 6; }
.ev-mosaic--3 a:first-child { grid-column: span 8; }
.ev-mosaic--3 a:nth-child(n + 2) { grid-column: span 4; }
.ev-mosaic--2 a:first-child { grid-column: span 7; }
.ev-mosaic--2 a:nth-child(2) { grid-column: span 5; grid-row: span 2; }
.ev-mosaic--1 a:first-child { grid-column: 1 / -1; }
.ev-gallery .photo-note { margin-top: 16px; }
@media (max-width: 700px) {
	.ev-mosaic { grid-template-columns: repeat(6, minmax(0, 1fr)); grid-auto-rows: 28vw; gap: 8px; }
	.ev-mosaic a, .ev-mosaic a:nth-child(n) { grid-column: span 3; grid-row: span 1; }
	.ev-mosaic a:first-child { grid-column: 1 / -1; grid-row: span 2; }
	.ev-mosaic--4 a:nth-child(n + 2) { grid-column: span 2; }
	.ev-mosaic--2 a:nth-child(2) { grid-column: 1 / -1; grid-row: span 2; }
}

/* ---------- Venues ---------- */
.ev-venues-section .h-head { align-items: flex-end; }
.ev-head-note { max-width: 38ch; margin: 0; color: var(--muted); }
.ev-venues { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: clamp(40px, 6vw, 96px); align-items: start; }
.ev-venue:nth-child(2n) { margin-top: clamp(64px, 9vw, 144px); }
.ev-venue__media { display: block; aspect-ratio: 4 / 5; background: var(--green-100); }
.ev-venue__media img { width: 100%; height: 100%; object-fit: cover; }
.ev-venue:hover .ev-venue__media img { transform: scale(1.05); }
.ev-venue__body { max-width: 520px; padding-top: clamp(26px, 2.8vw, 38px); }
.ev-venue__meta { display: flex; flex-wrap: wrap; align-items: center; list-style: none; margin: 0 0 14px; padding: 0; font-size: .6875rem; font-weight: 500; letter-spacing: .24em; text-transform: uppercase; color: var(--gold-600); }
.ev-venue__meta li + li::before { content: ""; display: inline-block; width: 20px; height: 1px; margin: 0 14px; vertical-align: middle; background: currentColor; }
.ev-venue__title { margin: 0 0 14px; font-size: clamp(1.875rem, 3vw, 2.625rem); line-height: 1.1; }
.ev-venue__title a { text-decoration: none; }
.ev-venue__title a:hover { color: var(--gold-600); }
.ev-venue__text { margin: 0 0 24px; color: var(--muted); }

/* One venue (on the other venue's page): a wide image-and-text feature. */
.ev-venues--single { grid-template-columns: minmax(0, 1fr); }
.ev-venues--single .ev-venue { display: grid; grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); gap: clamp(32px, 6vw, 96px); align-items: center; margin-top: 0; }
.ev-venues--single .ev-venue__media { aspect-ratio: 3 / 2; }
.ev-venues--single .ev-venue__body { padding-top: 0; }
@media (max-width: 800px) {
	.ev-venues, .ev-venues--single .ev-venue { grid-template-columns: minmax(0, 1fr); }
	.ev-venues { gap: 56px; }
	.ev-venue:nth-child(2n) { margin-top: 0; }
	.ev-venue__media, .ev-venues--single .ev-venue__media { aspect-ratio: 4 / 3; }
	.ev-venues--single .ev-venue { gap: 0; }
	.ev-venues--single .ev-venue__body { padding-top: 26px; }
}

/* ---------- Occasions ---------- */
.ev-occ-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 56px clamp(24px, 3vw, 44px); }
.ev-occ-grid--2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.ev-occ-grid--1 { grid-template-columns: minmax(0, 1fr); max-width: 640px; }
.ev-occ { display: flex; flex-direction: column; align-items: flex-start; }
.ev-occ__media { display: block; width: 100%; aspect-ratio: 4 / 5; margin-bottom: 26px; background: var(--green-100); }
.ev-occ-grid--2 .ev-occ__media, .ev-occ-grid--1 .ev-occ__media { aspect-ratio: 3 / 2; }
.ev-occ__media img { width: 100%; height: 100%; object-fit: cover; }
.ev-occ:hover .ev-occ__media img { transform: scale(1.05); }
.ev-occ__num { display: flex; align-items: center; gap: 16px; width: 100%; margin: 0 0 14px; font-family: var(--font-serif); font-size: 1.125rem; font-style: italic; line-height: 1; color: var(--gold-600); }
.ev-occ__num::after { content: ""; flex: 1; height: 1px; background: var(--cream-200); }
.ev-occ__title { margin: 0 0 10px; font-size: clamp(1.5rem, 2.2vw, 1.875rem); line-height: 1.15; }
.ev-occ__title a { text-decoration: none; }
.ev-occ__title a:hover { color: var(--gold-600); }
.ev-occ__text { margin: 0 0 16px; color: var(--muted); }
.ev-occ__price { margin: 0 0 22px; font-size: .6875rem; font-weight: 500; letter-spacing: .22em; text-transform: uppercase; color: var(--gold-600); }
.ev-occ__foot { margin-top: auto; }
@media (max-width: 1000px) {
	.ev-occ-grid--3 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
	.ev-occ-grid--3 .ev-occ__media { aspect-ratio: 3 / 2; }
}
@media (max-width: 700px) {
	.ev-occ-grid, .ev-occ-grid--2, .ev-occ-grid--3 { grid-template-columns: minmax(0, 1fr); gap: 48px; }
	.ev-occ__media, .ev-occ-grid--2 .ev-occ__media, .ev-occ-grid--3 .ev-occ__media { aspect-ratio: 3 / 2; margin-bottom: 22px; }
}

/* Larger tap area for the small uppercase links, without moving their underline. */
.ev-venue .link-arrow, .ev-row .link-arrow, .ev-occ .link-arrow, .ev-occasions-section .h-head .link-arrow { position: relative; }
.ev-venue .link-arrow::after, .ev-row .link-arrow::after, .ev-occ .link-arrow::after, .ev-occasions-section .h-head .link-arrow::after { content: ""; position: absolute; inset: -12px -6px -10px; }

/* ---------- "Let's plan your celebration together" band ---------- */
.ev-plan { position: relative; isolation: isolate; overflow: hidden; background: var(--green-950); color: rgb(255 255 255 / .82); }
.ev-plan__img { position: absolute; inset: 0; z-index: -2; width: 100%; height: 100%; object-fit: cover; }
.ev-plan::after { content: ""; position: absolute; inset: 0; z-index: -1; background: rgb(8 18 11 / .72); }
.ev-plan__inner { max-width: 980px; padding-block: clamp(96px, 12vw, 176px); text-align: center; }
.ev-plan .eyebrow { justify-content: center; }
.ev-plan .eyebrow::after { content: ""; flex: none; width: 36px; height: 1px; background: var(--line); }
.ev-plan__title { margin-bottom: .45em; font-size: clamp(2.25rem, 5vw, 4.25rem); line-height: 1.08; color: var(--white); }
.ev-plan__copy > p:not(.eyebrow) { max-width: 56ch; margin-inline: auto; font-size: clamp(1.0625rem, 1.5vw, 1.1875rem); }
.ev-plan .ev-plan__actions { display: flex; flex-wrap: wrap; justify-content: center; gap: 12px; margin-top: 36px; margin-bottom: 0; }

/* With the services list beside the copy (venue/occasion pages). */
.ev-plan--split::after { background: linear-gradient(90deg, rgb(8 18 11 / .9) 0%, rgb(8 18 11 / .8) 55%, rgb(8 18 11 / .72) 100%); }
.ev-plan--split .ev-plan__inner { display: grid; grid-template-columns: minmax(0, 1.05fr) minmax(0, .95fr); gap: 48px clamp(40px, 7vw, 112px); align-items: center; max-width: var(--container); text-align: left; }
.ev-plan--split .eyebrow { justify-content: flex-start; }
.ev-plan--split .eyebrow::after { content: none; }
.ev-plan--split .ev-plan__title { font-size: clamp(2.25rem, 4.4vw, 3.5rem); }
.ev-plan--split .ev-plan__copy > p:not(.eyebrow) { margin-inline: 0; }
.ev-plan--split .ev-plan__actions { justify-content: flex-start; }
.ev-plan__services { padding-left: clamp(32px, 4vw, 64px); border-left: 1px solid rgb(255 255 255 / .16); }
.ev-plan__services .ev-subtitle { color: var(--white); }
@media (max-width: 900px) {
	.ev-plan--split .ev-plan__inner { grid-template-columns: minmax(0, 1fr); }
	.ev-plan__services { padding: 40px 0 0; border-left: 0; border-top: 1px solid rgb(255 255 255 / .16); }
}
@media (max-width: 480px) {
	.ev-plan .ev-plan__actions { flex-direction: column; align-items: stretch; }
}

/* ---------- Packages (shown when a page has any) ---------- */
.ev-packages { list-style: none; margin: 40px 0 0; padding: 0; border-top: 1px solid var(--cream-200); }
.ev-package { display: flex; align-items: baseline; justify-content: space-between; gap: 24px; padding: 28px 0; border-bottom: 1px solid var(--cream-200); }
.ev-package__title { margin: 0 0 6px; font-size: 1.5rem; }
.ev-package__text { margin: 0; color: var(--muted); }
.ev-package__price { flex: none; text-align: right; }
@media (max-width: 600px) {
	.ev-package { flex-direction: column; gap: 10px; }
	.ev-package__price { text-align: left; }
}

/* ---------- "Book a site visit" band ---------- */
.ev-visit { background: var(--cream-100); }
.ev-visit__inner { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 28px clamp(40px, 7vw, 112px); align-items: end; padding-block: clamp(72px, 9vw, 128px); }
.ev-visit__title { margin: 0; font-size: clamp(2.25rem, 4.4vw, 3.5rem); line-height: 1.08; }
.ev-visit__head .eyebrow { margin-bottom: 18px; }
.ev-visit__body p { max-width: 44ch; margin: 0 0 26px; font-size: clamp(1.0625rem, 1.4vw, 1.1875rem); color: var(--muted); }
@media (max-width: 800px) {
	.ev-visit__inner { grid-template-columns: minmax(0, 1fr); }
}
@media (max-width: 480px) {
	.ev-visit__body .btn { width: 100%; }
}

@media (prefers-reduced-motion: reduce) {
	.ev-mosaic a:hover img, .ev-venue:hover .ev-venue__media img, .ev-row:hover .ev-row__media img, .ev-occ:hover .ev-occ__media img { transform: none; }
}

/* ==========================================================
   Enquiry card form as a premium panel (same as the contact page forms):
   white cells framed by gold hairlines, gold labels, serif values.
   ========================================================== */
.ev-enquire .enquiry-form:not(.enquiry-form--dark) .enquiry-form__grid { gap: 0; margin-top: 4px; }
.ev-enquire .enquiry-form:not(.enquiry-form--dark) .field:not(.field--consent) {
	position: relative; display: grid; grid-row: span 3; grid-template-rows: subgrid; align-content: start; row-gap: 2px; /* label, control and message rows line up across paired cells */
	padding: 14px 18px 10px; background: var(--white);
	box-shadow: 0 0 0 1px rgb(138 98 21 / .28); /* adjacent cells share one hairline */
	transition: background-color .3s var(--ease);
}
.ev-enquire .enquiry-form:not(.enquiry-form--dark) .field:not(.field--consent)::after {
	content: ""; position: absolute; left: 0; right: 0; bottom: 0; height: 2px; background: var(--gold-grad);
	transform: scaleX(0); transform-origin: left; transition: transform .45s var(--ease);
}
.ev-enquire .enquiry-form:not(.enquiry-form--dark) .field:not(.field--consent):hover { background: #fffdf8; }
.ev-enquire .enquiry-form:not(.enquiry-form--dark) .field:not(.field--consent):focus-within { z-index: 1; background: #fdf8ec; }
.ev-enquire .enquiry-form:not(.enquiry-form--dark) .field:not(.field--consent):focus-within::after { transform: scaleX(1); }
.ev-enquire .enquiry-form:not(.enquiry-form--dark) .field:has(:focus-visible) { box-shadow: 0 0 0 1px var(--gold-600), inset 0 0 0 1px var(--gold-600); }
.ev-enquire .enquiry-form:not(.enquiry-form--dark) .field__label { align-self: end; margin: 0; font-size: .65rem; font-weight: 600; letter-spacing: .24em; color: var(--gold-600); }
.ev-enquire .enquiry-form:not(.enquiry-form--dark) .field:focus-within .field__label { color: var(--green-900); }
.ev-enquire .enquiry-form:not(.enquiry-form--dark) .field :is(input:not([type="checkbox"]), select, textarea) {
	min-height: 36px; padding: 4px 0 2px;
	font: 400 1.125rem/1.35 var(--font-serif); color: var(--green-900);
	background-color: transparent; border: 0; border-radius: 0; box-shadow: none; outline: none;
}
.ev-enquire .enquiry-form:not(.enquiry-form--dark) .field :is(input:not([type="checkbox"]), select, textarea):focus { border: 0; box-shadow: none; outline: none; }
.ev-enquire .enquiry-form:not(.enquiry-form--dark) .field select {
	padding-right: 24px; cursor: pointer;
	background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%238a6215' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E") no-repeat right center / 16px;
}
.ev-enquire .enquiry-form:not(.enquiry-form--dark) .field select option { font-family: var(--font-sans); }
.ev-enquire .enquiry-form:not(.enquiry-form--dark) .field.field--textarea textarea { min-height: 96px; padding-top: 6px; font-size: 1.0625rem; line-height: 1.6; }
.ev-enquire .enquiry-form:not(.enquiry-form--dark) .field ::placeholder { font-style: italic; color: #8b8f86; }
.ev-enquire .enquiry-form:not(.enquiry-form--dark) .field ::-webkit-calendar-picker-indicator { cursor: pointer; opacity: .9; filter: invert(38%) sepia(62%) saturate(720%) hue-rotate(15deg) brightness(88%); }
.ev-enquire .enquiry-form:not(.enquiry-form--dark) .field__msgs { padding: 0; }
.ev-enquire .enquiry-form:not(.enquiry-form--dark) .field__help { margin: 6px 0 2px; font-size: .75rem; }
.ev-enquire .enquiry-form:not(.enquiry-form--dark) .field__error { margin: 6px 0 2px; }
/* Errors: the cell tints red with a red underline; the message stays in the cell. */
.ev-enquire .enquiry-form:not(.enquiry-form--dark) .field:has([aria-invalid="true"]) { background: #fdf3f1; }
.ev-enquire .enquiry-form:not(.enquiry-form--dark) .field:has([aria-invalid="true"])::after { transform: scaleX(1); background: var(--f-error, #a3261d); }
.ev-enquire .enquiry-form:not(.enquiry-form--dark) .field :is(input, select, textarea)[aria-invalid="true"] { box-shadow: none; }
/* Consent sits under the panel, not as a cell. */
.ev-enquire .enquiry-form:not(.enquiry-form--dark) .field--consent { margin-top: 22px; padding-top: 0; border-top: 0; }
@media (max-width: 560px) {
	.ev-enquire .enquiry-form:not(.enquiry-form--dark) .field:not(.field--consent) { padding: 12px 14px 8px; }
	.ev-enquire .enquiry-form:not(.enquiry-form--dark) .field :is(input:not([type="checkbox"]), select) { font-size: 1rem; }
}
/* Phones: paired cells (name | phone, dates, guests) keep the form short. */
@media (max-width: 560px) {
	.ev-enquire .enquiry-form:not(.enquiry-form--dark) .enquiry-form__grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
	.ev-enquire .enquiry-form:not(.enquiry-form--dark) .field { grid-column: 1 / -1; }
	.ev-enquire .enquiry-form:not(.enquiry-form--dark) .field.field--half { grid-column: span 1; }
}
/* The card is narrow: a little less tracking keeps most labels on one line. */
.ev-enquire .enquiry-form:not(.enquiry-form--dark) .field__label { letter-spacing: .18em; }
