/* WCN Site Components. Tokens read the Elementor global variables first, with the design values as fallbacks
   for pages that do not load the Elementor kit stylesheet (e.g. single events). */
:root {
	--wcn-red: var(--color-red, #C8102E);
	--wcn-red-dark: var(--color-red-dark, #A00C24);
	--wcn-blue: var(--color-blue, #143C8C);
	--wcn-blue-dark: var(--color-blue-dark, #0C2559);
	--wcn-yellow: var(--color-yellow, #F2B21B);
	--wcn-yellow-soft: var(--color-yellow-soft, #FCEFC8);
	--wcn-ink: var(--color-ink, #1C1E24);
	--wcn-muted: var(--color-muted, #50545E);
	--wcn-paper: var(--color-paper, #FAF7F1);
	--wcn-sand: var(--color-sand, #F2EBDD);
	--wcn-white: var(--color-white, #FFFFFF);
	--wcn-line: var(--color-line, #E0D7C4);
	--wcn-on-dark-muted: var(--color-on-dark-muted, #CBD5EC);
	--wcn-line-dark: var(--color-line-dark, #2D4680);
	--wcn-viewer: var(--color-viewer, #15171C);
	--wcn-font-display: var(--font-display, "Young Serif"), Georgia, serif;
	--wcn-font-body: var(--font-body, "Public Sans"), "Helvetica Neue", Arial, sans-serif;
	--wcn-stripe: linear-gradient(90deg, var(--wcn-red) 0 33.333%, var(--wcn-blue) 33.333% 66.666%, var(--wcn-yellow) 66.666% 100%);
}

/* ---------- Header (Astra header builder) ---------- */
.site-header::after { content: ""; display: block; height: 6px; background: var(--wcn-stripe); }
.ast-site-identity { padding: 0; }
.ast-site-title-wrap { display: flex; flex-direction: column; }
.site-header .site-title { margin: 0; line-height: 1.08; }
.site-header .site-description { margin: 0; line-height: 1.4; }
.site-header .site-logo-img img { height: 52px; width: auto; }
#ast-desktop-header .main-header-menu > .menu-item > .menu-link { position: relative; }
#ast-desktop-header .main-header-menu > .current-menu-item > .menu-link::after {
	content: ""; position: absolute; left: 12px; right: 12px; bottom: 20px; height: 3px; background: var(--wcn-red);
}
/* Align header/footer content with the page container (1240px max, 32px gutters). */
#masthead .site-primary-header-wrap.ast-container { max-width: 1240px; padding-left: 32px; padding-right: 32px; }
#colophon .site-primary-footer-wrap .ast-builder-grid-row,
#colophon .site-below-footer-wrap .ast-builder-grid-row { max-width: 1176px; }
.ast-header-button-1 .ast-custom-button { line-height: 1.6; }
.ast-mobile-header-wrap .menu-toggle { width: 44px; height: 44px; display: inline-flex; align-items: center; justify-content: center; }
.ast-mobile-header-content { border-top: 1px solid var(--wcn-line); padding: 8px 32px 24px; }
#ast-mobile-header .ast-mobile-header-content .main-header-menu .menu-item > .menu-link {
	padding: 16px 0 !important; line-height: 1.6; border-bottom: 1px solid var(--wcn-line);
}
#ast-mobile-header .ast-mobile-header-content .main-header-menu .menu-item { border: 0; }
.ast-mobile-header-content .ast-header-html-1 { padding: 24px 0 0 !important; margin: 0 !important; width: 100%; }
.ast-mobile-header-content .ast-header-html-1 .ast-header-html,
.ast-mobile-header-content .ast-header-html-1 .ast-builder-html-element,
.ast-mobile-header-content .ast-header-html-1 p { width: 100%; margin: 0; }
.wcn-mobile-cta {
	display: flex; justify-content: center; padding: 12px 24px; border-radius: 999px; background: var(--wcn-red);
	color: var(--wcn-white) !important; font-size: 15px; font-weight: 600; text-decoration: none;
}
.wcn-mobile-cta:hover { background: var(--wcn-red-dark); }
@media (max-width: 767px) {
	.site-header .site-logo-img img { height: 42px; }
	.ast-mobile-header-content { padding: 8px 20px 24px; }
	#masthead .site-primary-header-wrap.ast-container { padding-left: 20px; padding-right: 20px; }
	#ast-mobile-header [data-section="section-hb-button-1"] { display: none; }
}

/* ---------- Footer (Astra footer builder) ---------- */
.site-footer::before { content: ""; display: block; height: 6px; background: var(--wcn-stripe); }
.site-footer .widget { margin: 0; }
.site-footer .widget-title {
	margin: 0 0 8px; font-family: var(--wcn-font-body); font-size: 13px; font-weight: 700; line-height: 1.6;
	letter-spacing: 0.12em; text-transform: uppercase; color: var(--wcn-yellow);
}
.site-footer .widget_nav_menu ul { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 8px; }
.site-footer .widget_nav_menu a { font-size: 15px; text-decoration: none; }
.site-footer .widget a, .site-footer .widget a:visited { color: var(--wcn-white); }
.site-footer .widget a:hover, .site-footer .widget a:focus-visible { color: var(--wcn-yellow); }
.wcn-footer-brand { display: flex; flex-direction: column; gap: 16px; max-width: 420px; }
.wcn-logo { display: flex; align-items: center; gap: 12px; text-decoration: none; }
.wcn-logo-tile { display: flex; padding: 8px; background: var(--wcn-white); border-radius: 12px; }
.wcn-logo-tile img { display: block; height: 52px; width: auto; }
.wcn-logo-text { display: flex; flex-direction: column; }
.wcn-logo-name { font-family: var(--wcn-font-display); font-size: 20px; line-height: 1.08; color: var(--wcn-white); }
.wcn-logo-sub { font-size: 13px; color: var(--wcn-on-dark-muted); }
.wcn-footer-text { margin: 0 0 8px; font-size: 15px; line-height: 1.6; color: var(--wcn-on-dark-muted); }
.site-below-footer-wrap { font-size: 13px; }
.site-below-footer-wrap p { margin: 0; }
@media (max-width: 767px) {
	.site-primary-footer-wrap .ast-builder-grid-row { grid-template-columns: 1fr 1fr !important; column-gap: 20px; row-gap: 32px; }
	.site-primary-footer-wrap .site-footer-section-1 { grid-column: 1 / -1; }
}

/* ---------- Shared bits ---------- */
.wcn-body-text { margin: 0; color: var(--wcn-muted); }
.wcn-empty { margin: 0; color: var(--wcn-muted); }
.wcn-eyebrow { display: flex; align-items: center; gap: 8px; font-size: 13px; font-weight: 700; letter-spacing: 0.12em; text-transform: uppercase; color: var(--wcn-red); }
.wcn-dot { display: block; flex: 0 0 auto; width: 8px; height: 8px; border-radius: 999px; background: var(--wcn-yellow); }
.wcn-section-head { display: flex; flex-direction: column; gap: 12px; max-width: 640px; }
.wcn-section-title { margin: 0; font-family: var(--wcn-font-display); font-weight: 400; font-size: 46px; line-height: 1.08; letter-spacing: -0.01em; color: var(--wcn-ink); }
.wcn-link { align-self: flex-start; font-size: 15px; font-weight: 600; color: var(--wcn-blue); }
.wcn-link:hover { color: var(--wcn-red); }
.wcn-btn-secondary {
	display: inline-flex; align-items: center; justify-content: center; padding: 12px 24px; border-radius: 999px;
	border: 1px solid var(--wcn-blue); background: transparent; color: var(--wcn-blue); font-family: var(--wcn-font-body);
	font-size: 15px; font-weight: 600; line-height: 1.6; cursor: pointer;
}
.wcn-btn-secondary:hover, .wcn-btn-secondary:focus-visible { background: var(--wcn-blue); color: var(--wcn-white); }
@media (max-width: 1024px) { .wcn-section-title { font-size: 38px; } }
@media (max-width: 767px) { .wcn-section-title { font-size: 31px; } }

/* ---------- Past events timeline ---------- */
.wcn-timeline { display: flex; flex-direction: column; }
.wcn-timeline-item { display: flex; gap: 32px; padding: 24px 0; border-top: 1px solid var(--wcn-line); }
.wcn-timeline-date { flex: 0 0 180px; font-weight: 600; color: var(--wcn-red); }
.wcn-timeline-body { display: flex; flex-direction: column; gap: 4px; flex: 1 1 0; }
.wcn-timeline-title { margin: 0; font-family: var(--wcn-font-display); font-weight: 400; font-size: 20px; line-height: 1.3; letter-spacing: -0.01em; }
.wcn-timeline-title a { color: var(--wcn-ink); text-decoration: none; }
.wcn-timeline-title a:hover { color: var(--wcn-red); }
@media (max-width: 767px) {
	.wcn-timeline-item { flex-direction: column; gap: 4px; }
	.wcn-timeline-date { flex-basis: auto; }
	.wcn-timeline-title { font-size: 18px; }
}

/* ---------- Upcoming events ---------- */
.wcn-section-upcoming { padding: 104px 0 0; background: var(--wcn-paper); }
.wcn-container { width: 100%; max-width: 1240px; margin: 0 auto; padding: 0 32px; }
@media (max-width: 1024px) { .wcn-section-upcoming { padding-top: 80px; } }
@media (max-width: 767px) { .wcn-section-upcoming { padding-top: 56px; } .wcn-container { padding: 0 20px; } }
.wcn-upcoming { display: flex; flex-direction: column; gap: 48px; }
.wcn-card-row { display: flex; flex-wrap: wrap; gap: 24px; }
.wcn-card-event { display: flex; flex-direction: column; flex: 1 1 240px; background: var(--wcn-white); border: 1px solid var(--wcn-line); border-radius: 20px; overflow: hidden; }
.wcn-card-event-media { display: flex; height: 220px; }
.wcn-card-event-media .wcn-card-event-img { width: 100%; height: 100%; max-width: none; object-fit: cover; }
.wcn-card-event-body { display: flex; flex-direction: column; gap: 12px; padding: 24px 32px 32px; }
.wcn-tag { display: inline-flex; align-self: flex-start; padding: 4px 12px; border-radius: 999px; background: var(--wcn-yellow-soft); color: var(--wcn-ink); font-size: 13px; font-weight: 600; }
.wcn-card-title { margin: 0; font-family: var(--wcn-font-display); font-weight: 400; font-size: 25px; line-height: 1.3; letter-spacing: -0.01em; }
.wcn-card-title a { color: var(--wcn-ink); text-decoration: none; }
.wcn-card-title a:hover { color: var(--wcn-red); }
.wcn-event-when { font-size: 15px; font-weight: 600; color: var(--wcn-blue); }
.wcn-event-where { font-size: 13px; color: var(--wcn-muted); }
@media (max-width: 767px) {
	.wcn-upcoming { gap: 36px; }
	.wcn-card-row { flex-wrap: nowrap; overflow-x: auto; margin-right: -20px; padding-right: 20px; }
	.wcn-card-event { flex: 0 0 78%; }
	.wcn-card-event-body { padding: 24px 20px 20px; }
	.wcn-card-title { font-size: 22px; }
}

/* ---------- Home: latest project + school-visit fact ---------- */
a.wcn-btn-secondary { text-decoration: none; }
.wcn-button-row { display: flex; flex-wrap: wrap; gap: 12px; }
.wcn-split { display: flex; align-items: center; gap: 64px; }
.wcn-split-media { display: flex; flex-direction: column; gap: 8px; flex: 1 1 0; min-width: 0; }
.wcn-split-text { display: flex; flex-direction: column; gap: 24px; flex: 1 1 0; min-width: 0; }
.wcn-split-text .wcn-body-text p { margin: 0 0 16px; }
.wcn-split-text .wcn-body-text p:last-child { margin-bottom: 0; }
.wcn-split-media .wcn-photo-frame { display: block; width: 100%; height: 480px; max-width: none; object-fit: cover; border-radius: 20px; background: var(--wcn-sand); }
.wcn-split-media .wcn-caption, .wcn-caption { font-size: 13px; color: var(--wcn-muted); }
.wcn-fact { display: flex; flex-direction: column; gap: 4px; }
.wcn-fact-value { font-family: var(--wcn-font-display); font-size: 25px; line-height: 1.3; color: var(--wcn-ink); }
.wcn-fact-label { font-size: 15px; color: var(--wcn-muted); }
@media (max-width: 1024px) {
	.wcn-split { gap: 32px; }
	.wcn-split-media .wcn-photo-frame { height: 380px; }
}
@media (max-width: 767px) {
	.wcn-split { flex-direction: column; align-items: stretch; gap: 20px; }
	.wcn-split-media .wcn-photo-frame { height: 260px; border-radius: 12px; }
	.wcn-button-row { flex-direction: column; align-items: stretch; }
	.wcn-fact-value { font-size: 22px; }
}

/* ---------- Projects ---------- */
.wcn-dot-red { background: var(--wcn-red); }
.wcn-dot-blue { background: var(--wcn-blue); }
.wcn-projects { display: flex; flex-direction: column; gap: 48px; }
.wcn-project { display: flex; flex-direction: column; gap: 32px; padding-bottom: 64px; border-bottom: 1px solid var(--wcn-line); }
.wcn-project-head { display: flex; justify-content: space-between; align-items: flex-start; gap: 48px; }
.wcn-project-intro { display: flex; flex-direction: column; gap: 16px; flex: 1.4 1 0; min-width: 0; }
.wcn-project-intro .wcn-section-title a { color: var(--wcn-ink); text-decoration: none; }
.wcn-project-intro .wcn-section-title a:hover { color: var(--wcn-red); }
.wcn-project-intro .wcn-body-text p { margin: 0 0 12px; }
.wcn-project-intro .wcn-body-text p:last-child { margin-bottom: 0; }
.wcn-project-meta { display: flex; flex-direction: column; gap: 16px; flex: 1 1 0; padding: 24px; background: var(--wcn-white); border: 1px solid var(--wcn-line); border-radius: 12px; }
.wcn-meta-item { display: flex; flex-direction: column; }
.wcn-meta-label { font-size: 13px; font-weight: 700; letter-spacing: 0.12em; text-transform: uppercase; color: var(--wcn-muted); }
.wcn-meta-value { font-size: 15px; font-weight: 600; color: var(--wcn-ink); }
.wcn-strip { display: flex; gap: 12px; }
.wcn-strip .wcn-strip-item { display: block; flex: 1 1 0; min-width: 0; width: auto; height: 260px; max-width: none; object-fit: cover; border-radius: 12px; }
.wcn-strip .wcn-strip-wide { flex: 2 1 0; }
@media (max-width: 1024px) {
	.wcn-project-head { flex-direction: column; gap: 24px; }
	.wcn-project-meta { flex-direction: row; flex-wrap: wrap; align-self: stretch; }
	.wcn-meta-item { flex: 1 1 180px; }
	.wcn-strip .wcn-strip-item { height: 200px; }
}
@media (max-width: 767px) {
	.wcn-projects { gap: 36px; }
	.wcn-project { gap: 20px; padding-bottom: 40px; }
	.wcn-project-meta { flex-direction: column; }
	.wcn-meta-item { flex: 0 0 auto; }
	.wcn-strip { flex-wrap: wrap; }
	.wcn-strip .wcn-strip-item { flex: 1 1 40%; height: 150px; }
	.wcn-strip .wcn-strip-wide { flex-basis: 100%; }
}

/* ---------- Dynamic gallery ---------- */
.wcn-gallery { display: flex; flex-direction: column; gap: 48px; }
.wcn-chips { display: flex; flex-wrap: wrap; gap: 8px; }
.wcn-chip {
	display: inline-flex; align-items: center; gap: 8px; padding: 8px 16px; border-radius: 999px; border: 1px solid var(--wcn-line);
	background: var(--wcn-white); color: var(--wcn-ink); font-family: var(--wcn-font-body); font-size: 15px; font-weight: 500; line-height: 1.6; cursor: pointer;
}
.wcn-chip:hover, .wcn-chip:focus-visible { border-color: var(--wcn-blue); background: var(--wcn-white); color: var(--wcn-ink); }
.wcn-chip.is-active, .wcn-chip.is-active:hover { background: var(--wcn-blue); border-color: var(--wcn-blue); color: var(--wcn-white); }
.wcn-chip-count { font-size: 13px; opacity: 0.75; }
.wcn-viewer { display: flex; flex-direction: column; gap: 12px; }
.wcn-viewer-frame { display: flex; height: 640px; border-radius: 20px; overflow: hidden; background: var(--wcn-viewer); }
.wcn-viewer-img { width: 100%; height: 100%; object-fit: contain; }
.wcn-viewer-bar { display: flex; align-items: center; justify-content: space-between; gap: 16px; }
.wcn-viewer-caption { display: flex; flex-direction: column; gap: 4px; }
.wcn-viewer-title { font-weight: 600; color: var(--wcn-ink); }
.wcn-gallery .wcn-caption { font-size: 13px; color: var(--wcn-muted); }
.wcn-viewer-controls { display: flex; gap: 8px; }
.wcn-thumbs { display: flex; flex-wrap: wrap; gap: 16px; }
.wcn-thumb {
	display: flex; flex: 0 0 calc((100% - 80px) / 6); height: 150px; border: 3px solid transparent; border-radius: 12px;
	overflow: hidden; background: var(--wcn-sand);
}
.wcn-thumb[hidden] { display: none; }
.wcn-thumb:hover, .wcn-thumb:focus-visible { border-color: var(--wcn-yellow); }
.wcn-thumb.is-active { border-color: var(--wcn-red); }
.wcn-thumb img { width: 100%; height: 100% !important; object-fit: cover; }
@media (max-width: 1024px) {
	.wcn-viewer-frame { height: 480px; }
	.wcn-thumb { flex-basis: calc((100% - 48px) / 4); }
}
@media (max-width: 767px) {
	.wcn-gallery { gap: 36px; }
	.wcn-chips { flex-wrap: nowrap; overflow-x: auto; }
	.wcn-chip { flex: 0 0 auto; }
	.wcn-viewer-frame { height: 300px; }
	.wcn-viewer-bar { flex-direction: column; align-items: stretch; }
	.wcn-viewer-controls .wcn-btn-secondary { flex: 1 1 0; }
	.wcn-thumb { flex-basis: calc((100% - 16px) / 2); height: 120px; }
}

/* ---------- Forminator forms (design "none" + site styling) ---------- */
.forminator-ui.forminator-custom-form[data-design="none"] { font-family: var(--wcn-font-body); color: var(--wcn-ink); }
.forminator-ui.forminator-custom-form[data-design="none"] .forminator-row { display: flex; gap: 16px; margin: 0 0 24px !important; }
.forminator-ui.forminator-custom-form[data-design="none"] .forminator-row-last { margin-bottom: 0 !important; }
.forminator-ui.forminator-custom-form[data-design="none"] .forminator-row-last .forminator-field { align-items: flex-start; }
.forminator-ui.forminator-custom-form[data-design="none"] .forminator-col { flex: 1 1 0; min-width: 0; padding: 0 !important; }
.forminator-ui.forminator-custom-form[data-design="none"] .forminator-field { display: flex; flex-direction: column; gap: 8px; }
.forminator-ui.forminator-custom-form[data-design="none"] .forminator-label { margin: 0; font-size: 15px; font-weight: 600; color: var(--wcn-ink); }
.forminator-ui.forminator-custom-form[data-design="none"] .forminator-required { color: var(--wcn-red); }
.forminator-ui.forminator-custom-form[data-design="none"] .forminator-input,
.forminator-ui.forminator-custom-form[data-design="none"] .forminator-textarea,
.forminator-ui.forminator-custom-form[data-design="none"] select,
.forminator-ui.forminator-custom-form[data-design="none"] .select2-container .select2-selection--single {
	width: 100%; height: 52px; margin: 0; padding: 0 16px; border: 1px solid var(--wcn-line); border-radius: 6px;
	background: var(--wcn-paper); color: var(--wcn-ink); font-family: var(--wcn-font-body); font-size: 17px; line-height: 50px; box-shadow: none;
}
.forminator-ui.forminator-custom-form[data-design="none"] .forminator-textarea { height: 160px; min-height: 160px; padding: 12px 16px; line-height: 1.6; resize: vertical; }
.forminator-ui.forminator-custom-form[data-design="none"] .select2-container { width: 100% !important; }
.forminator-ui.forminator-custom-form[data-design="none"] .select2-selection__rendered { padding: 0 !important; line-height: 50px !important; color: var(--wcn-ink) !important; }
.forminator-ui.forminator-custom-form[data-design="none"] .select2-selection__arrow { height: 50px !important; right: 12px !important; }
.forminator-ui.forminator-custom-form[data-design="none"] .forminator-input:focus,
.forminator-ui.forminator-custom-form[data-design="none"] .forminator-textarea:focus,
.forminator-ui.forminator-custom-form[data-design="none"] .select2-container--focus .select2-selection--single,
.forminator-ui.forminator-custom-form[data-design="none"] .select2-container--open .select2-selection--single {
	outline: 3px solid var(--wcn-yellow); outline-offset: 0; border-color: var(--wcn-blue);
}
.forminator-ui.forminator-custom-form[data-design="none"] .forminator-button-submit {
	display: inline-flex; align-items: center; justify-content: center; padding: 12px 24px; border: 1px solid transparent; border-radius: 999px;
	background: var(--wcn-red); color: var(--wcn-white); font-family: var(--wcn-font-body); font-size: 15px; font-weight: 600; line-height: 1.6; cursor: pointer;
}
.forminator-ui.forminator-custom-form[data-design="none"] .forminator-button-submit:hover,
.forminator-ui.forminator-custom-form[data-design="none"] .forminator-button-submit:focus-visible { background: var(--wcn-red-dark); color: var(--wcn-white); }
.forminator-ui.forminator-custom-form[data-design="none"] .forminator-error-message { margin: 0; font-size: 13px; color: var(--wcn-red); }
.forminator-ui.forminator-custom-form[data-design="none"] .forminator-response-message { margin: 0 0 24px; padding: 12px 16px; border-radius: 6px; font-size: 15px; }
.forminator-ui.forminator-custom-form[data-design="none"] .forminator-response-message.forminator-success { background: var(--wcn-yellow-soft); color: var(--wcn-ink); }
.forminator-ui.forminator-custom-form[data-design="none"] .forminator-response-message.forminator-error:not(:empty) { background: #FBE4E8; color: var(--wcn-red-dark); }
.forminator-ui .forminator-edit-module, .forminator-edit-module { display: none; }
.select2-container--open .select2-dropdown.forminator-dropdown--none, .forminator-custom-form-209 + .select2-container .select2-dropdown { border-color: var(--wcn-line); font-family: var(--wcn-font-body); }
@media (max-width: 767px) {
	.forminator-ui.forminator-custom-form[data-design="none"] .forminator-row { flex-direction: column; gap: 24px; }
	.forminator-ui.forminator-custom-form[data-design="none"] .forminator-row-last .forminator-field { align-items: stretch; }
	.forminator-ui.forminator-custom-form[data-design="none"] .forminator-button-submit { width: 100%; }
}

/* ---------- Single event: mapped BWS gallery ---------- */
.wcn-event-gallery { margin-top: 48px; padding-top: 32px; border-top: 1px solid var(--wcn-line); }
.wcn-event-gallery-title { margin: 0 0 24px; font-family: var(--wcn-font-display); font-weight: 400; font-size: 30px; color: var(--wcn-ink); }
.wcn-event-gallery .gallery_box_single img, .wcn-event-gallery .gllr_image_block img { border-radius: 12px; }
