/*
Theme Name: GCMC
Theme URI: https://gcmc.nz
Description: Child theme for Greenlane Chinese Methodist Church. Navy, cream and gold design on Hello Elementor.
Author: GCMC
Template: hello-elementor
Version: 1.2.19
Text Domain: gcmc
*/

/*
 * Colours and fonts are NOT set here. They live in Elementor → Site Settings
 * (Global Colors, Global Fonts, Theme Style) and reach this file as --e-global-*
 * variables, so changing a colour there updates the header and footer too.
 * The fallbacks after each variable only apply if Elementor is inactive.
 *
 * This file only covers what Elementor doesn't build: the header and footer, plus
 * one utility class. Page layout lives in the pages themselves (Elementor containers).
 */

:root {
	--gcmc-header-h: 84px;
}

html {
	scroll-behavior: smooth;
}

/* Room for the fixed header. Elementor Canvas pages (the splash) have no header. */
body:not(.page-template-elementor_canvas) {
	padding-top: var(--gcmc-header-h);
}

/* ----- Header ----- */
.gcmc-header {
	position: fixed;
	top: 0;
	left: 0;
	right: 0;
	z-index: 1000;
	height: var(--gcmc-header-h);
	background: var(--e-global-color-white, #fff);
	border-bottom: 1px solid rgba(16, 25, 42, 0.08);
	box-shadow: 0 3px 10px rgba(16, 25, 42, 0.12);
}

/* Gold line under the header, fading out at both ends. */
.gcmc-header::after {
	content: "";
	position: absolute;
	left: 0;
	right: 0;
	bottom: -1px;
	height: 4px;
	background: linear-gradient(to right, transparent, rgba(212, 183, 106, 0.8) 50%, transparent);
	pointer-events: none;
}

/* Logged in: sit below the WordPress admin bar (32px, or 46px on small screens). */
.admin-bar .gcmc-header {
	top: 32px;
}

@media (max-width: 782px) {
	.admin-bar .gcmc-header {
		top: 46px;
	}
}

/* Below 600px WordPress lets the admin bar scroll away, which would leave a gap above the
   fixed header. Keep the admin bar fixed instead. */
@media (max-width: 600px) {
	#wpadminbar {
		position: fixed;
	}
}

.gcmc-header__inner {
	max-width: 1200px;
	height: 100%;
	margin: 0 auto;
	padding: 0 24px;
	display: flex;
	align-items: center;
	gap: 24px;
}

.gcmc-logo {
	display: flex;
	align-items: center;
	flex: 0 0 auto;
}

.gcmc-logo img {
	display: block;
	height: 56px;
	width: auto;
	max-width: 240px;
	object-fit: contain;
}

.gcmc-nav {
	flex: 1 1 auto;
	display: flex;
	justify-content: flex-end;
	align-items: center;
	gap: 8px;
}

.gcmc-nav ul {
	list-style: none;
	margin: 0;
	padding: 0;
	display: flex;
	align-items: center;
	gap: 4px;
}

/* Header selectors are prefixed with .gcmc-header so they outrank Site Settings'
   site-wide link and button styles without !important. */
.gcmc-header .gcmc-nav a {
	display: block;
	padding: 8px 14px;
	color: var(--e-global-color-primary, #283858);
	text-decoration: none;
	font-size: 15px;
	font-weight: 500;
	letter-spacing: 0.02em;
}

.gcmc-header .gcmc-nav a:hover,
.gcmc-header .gcmc-nav .current-menu-item > a {
	color: var(--e-global-color-gold_dark, #c49a45);
}

/* Dropdown: sub-menu under a top-level item (e.g. About). Opens on hover or keyboard focus;
   on phones it is always open and indented (see the max-width block below). */
.gcmc-nav .menu-item-has-children {
	position: relative;
}

.gcmc-nav .sub-menu {
	display: none;
	position: absolute;
	top: 100%;
	right: 0;
	min-width: 240px;
	flex-direction: column;
	align-items: stretch;
	gap: 0;
	padding: 8px 0;
	background: var(--e-global-color-white, #fff);
	border-top: 3px solid var(--e-global-color-accent, #d4b76a);
	box-shadow: 0 8px 20px rgba(16, 25, 42, 0.12);
	z-index: 10;
}

.gcmc-nav .menu-item-has-children:hover > .sub-menu,
.gcmc-nav .menu-item-has-children:focus-within > .sub-menu {
	display: flex;
}

.gcmc-header .gcmc-nav .sub-menu a {
	padding: 10px 18px;
	white-space: nowrap;
}

.gcmc-header .gcmc-nav .menu-item-has-children > a::after {
	content: "";
	display: inline-block;
	margin-left: 7px;
	width: 5px;
	height: 5px;
	border-right: 1.5px solid currentColor;
	border-bottom: 1.5px solid currentColor;
	transform: translateY(-2px) rotate(45deg);
}

/* A sub-menu inside a dropdown (e.g. Church Life > Fellowships) flies out to the left, since the
   menu sits at the right edge of the header; its arrow points left. */
.gcmc-nav .sub-menu .sub-menu {
	top: -11px;
	right: 100%;
}

.gcmc-header .gcmc-nav .sub-menu .menu-item-has-children > a::after {
	transform: translateY(-1px) rotate(135deg);
}

/* Language buttons: after the menu on desktop (they come before it in the markup, for phones). */
.gcmc-lang {
	order: 1;
	display: flex;
	align-items: center;
	gap: 6px;
	flex: 0 0 auto;
}

.gcmc-header .gcmc-lang a {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-width: 40px;
	height: 32px;
	padding: 0 10px;
	border: 1px solid var(--e-global-color-primary, #283858);
	border-radius: 4px;
	text-decoration: none;
	font-size: 13px;
	font-weight: 700;
	letter-spacing: 0.04em;
	color: var(--e-global-color-primary, #283858);
	background: transparent;
}

.gcmc-header .gcmc-lang a.is-active {
	background: var(--e-global-color-primary, #283858);
	color: var(--e-global-color-white, #fff);
}

/* Hamburger. Site Settings styles every <button> like a gold button, so reset it here. */
.gcmc-header .gcmc-toggle {
	display: none;
	margin-left: auto;
	padding: 8px;
	border: 0;
	border-radius: 4px;
	background: transparent;
	box-shadow: none;
	color: var(--e-global-color-primary, #283858);
	cursor: pointer;
	transition: none; /* Hello's button transition would fade the focus ring in from black. */
	-webkit-tap-highlight-color: transparent;
}

.gcmc-header .gcmc-toggle:hover,
.gcmc-header .gcmc-toggle:focus,
.gcmc-header .gcmc-toggle:active {
	border: 0;
	background: transparent;
	color: var(--e-global-color-primary, #283858);
	outline: none;
}

.gcmc-header .gcmc-toggle:focus-visible {
	outline: 2px solid var(--e-global-color-accent, #d4b76a);
	outline-offset: 3px;
}

.gcmc-header .gcmc-toggle span {
	display: block;
	width: 22px;
	height: 2px;
	margin: 5px 0;
	background: var(--e-global-color-primary, #283858);
}

/* Sub-menu arrow buttons (added by theme.js) are for the phone menu only. */
.gcmc-header .gcmc-subtoggle {
	display: none;
}

/* ----- Footer ----- */
.gcmc-footer {
	background: var(--e-global-color-primary, #283858);
	color: var(--e-global-color-secondary, #faf4e8);
	padding: 48px 24px 28px;
	text-align: center;
}

footer.gcmc-footer a {
	color: var(--e-global-color-accent, #d4b76a);
	text-decoration: none;
}

.gcmc-footer__addr {
	font-size: 15px;
	line-height: 1.7;
	margin: 0 0 20px;
}

.gcmc-footer nav ul {
	list-style: none;
	margin: 0 0 24px;
	padding: 0;
	display: flex;
	justify-content: center;
	flex-wrap: wrap;
	gap: 8px 20px;
}

footer.gcmc-footer nav a {
	color: var(--e-global-color-secondary, #faf4e8);
	font-size: 14px;
}

footer.gcmc-footer a:hover {
	color: var(--e-global-color-accent, #d4b76a);
}

.gcmc-footer__copy {
	margin: 0;
	font-size: 13px;
	opacity: 0.7;
}

@media (max-width: 880px) {
	:root {
		--gcmc-header-h: 72px;
	}

	.gcmc-logo img {
		height: 44px;
	}

	.gcmc-header__inner {
		gap: 12px;
	}

	.gcmc-header .gcmc-toggle {
		display: block;
		margin-left: 0;
	}

	.gcmc-nav {
		display: none;
		position: absolute;
		top: var(--gcmc-header-h);
		left: 0;
		right: 0;
		background: var(--e-global-color-white, #fff);
		border-bottom: 1px solid rgba(16, 25, 42, 0.08);
		padding: 12px 24px 20px;
		flex-direction: column;
		justify-content: flex-start;
		align-items: stretch;
		/* The header is fixed, so the open menu doesn't move with the page: cap it at the screen
		   height and let it scroll by itself (dvh follows the phone's browser bars; vh is the fallback). */
		max-height: calc(100vh - var(--gcmc-header-h));
		max-height: calc(100dvh - var(--gcmc-header-h));
		overflow-y: auto;
		overscroll-behavior: contain;
	}

	.admin-bar .gcmc-nav {
		max-height: calc(100vh - var(--gcmc-header-h) - 32px);
		max-height: calc(100dvh - var(--gcmc-header-h) - 32px);
	}

	.gcmc-header.is-open .gcmc-nav {
		display: flex;
	}

	.gcmc-nav ul {
		flex-direction: column;
		align-items: stretch;
	}

	/* Sub-menus start collapsed and open with the arrow button beside their parent (theme.js);
	   hover and focus, which open the desktop dropdowns, don't open them here. */
	.gcmc-nav .sub-menu,
	.gcmc-nav .menu-item-has-children:hover > .sub-menu,
	.gcmc-nav .menu-item-has-children:focus-within > .sub-menu {
		display: none;
		position: static;
		min-width: 0;
		padding: 0 0 0 16px;
		border-top: 0;
		box-shadow: none;
	}

	.gcmc-nav .menu-item-has-children.is-expanded > .sub-menu {
		display: flex;
	}

	.gcmc-nav .menu-item-has-children {
		display: flex;
		flex-wrap: wrap;
		align-items: center;
	}

	.gcmc-nav .menu-item-has-children > a {
		flex: 1 1 auto;
	}

	.gcmc-nav .menu-item-has-children > .sub-menu {
		flex-basis: 100%;
	}

	.gcmc-header .gcmc-nav .sub-menu a {
		white-space: normal;
	}

	/* The arrow button replaces the link's own little arrow. */
	.gcmc-header .gcmc-nav .menu-item-has-children > a::after {
		display: none;
	}

	.gcmc-header .gcmc-subtoggle,
	.gcmc-header .gcmc-subtoggle:hover,
	.gcmc-header .gcmc-subtoggle:focus,
	.gcmc-header .gcmc-subtoggle:active {
		display: flex;
		align-items: center;
		justify-content: center;
		width: 44px;
		height: 44px;
		margin: 0;
		padding: 0;
		border: 0;
		border-radius: 4px;
		background: transparent;
		box-shadow: none;
		color: var(--e-global-color-primary, #283858);
		outline: none;
		cursor: pointer;
		transition: none;
		-webkit-tap-highlight-color: transparent;
	}

	.gcmc-header .gcmc-subtoggle:focus-visible {
		outline: 2px solid var(--e-global-color-accent, #d4b76a);
		outline-offset: -2px;
	}

	.gcmc-header .gcmc-subtoggle::before {
		content: "";
		width: 8px;
		height: 8px;
		border-right: 2px solid currentColor;
		border-bottom: 2px solid currentColor;
		transform: translateY(-2px) rotate(45deg);
	}

	.gcmc-header .gcmc-nav .is-expanded > .gcmc-subtoggle::before {
		transform: translateY(2px) rotate(225deg);
	}

	/* Language buttons sit in the header bar, just left of the hamburger. */
	.gcmc-lang {
		order: 0;
		margin-left: auto;
	}
}

/* The admin bar is 46px tall on small screens (see the header rules above). */
@media (max-width: 782px) {
	.admin-bar .gcmc-nav {
		max-height: calc(100vh - var(--gcmc-header-h) - 46px);
		max-height: calc(100dvh - var(--gcmc-header-h) - 46px);
	}
}

/* ----- Utility ----- */

/* Line break that only applies on phones. Used in the Chinese home hero title:
   纽西兰基督教华人<br class="gcmc-br-mobile">卫理公会美恩堂 */
.gcmc-br-mobile {
	display: none;
}

@media (max-width: 880px) {
	.gcmc-br-mobile {
		display: block;
	}
}

/* ----- Blog: single post (single.php) ----- */

.gcmc-post__band {
	background: linear-gradient(160deg, var(--e-global-color-primary, #283858) 0%, #2e4a7a 100%);
	padding: 90px 24px 60px;
	text-align: center;
}

.gcmc-post__band-inner {
	max-width: 860px;
	margin: 0 auto;
}

.gcmc-post__band .gcmc-post__meta {
	margin: 0 0 14px;
	color: var(--e-global-color-accent, #d4b76a);
	font-size: 15px;
	letter-spacing: 0.04em;
}

.gcmc-post__band .gcmc-post__title {
	margin: 0;
	color: var(--e-global-color-white, #fff);
	font-size: clamp(28px, 4vw, 42px);
	line-height: 1.25;
}

.gcmc-post__band .gcmc-post__title::after {
	content: "";
	display: block;
	width: 80px;
	height: 2px;
	margin: 24px auto 0;
	background: var(--e-global-color-accent, #d4b76a);
}

.gcmc-post__article {
	background: var(--e-global-color-white, #fff);
	padding: 56px 24px 72px;
}

.gcmc-post__content,
.gcmc-post__back {
	max-width: 760px;
	margin-left: auto;
	margin-right: auto;
}

.gcmc-post__content > * {
	margin-top: 0;
	margin-bottom: 1.2em;
}

.gcmc-post__content .wp-block-gallery,
.gcmc-post__content .wp-block-image {
	margin-top: 1.8em;
	margin-bottom: 1.8em;
}

.gcmc-post__content img {
	border-radius: 6px;
}

/* Enlarged photo (WordPress's image lightbox, turned on in functions.php): navy backdrop and white buttons.
   WordPress writes white/black as inline styles on these elements, so !important is the only way to override. */
.wp-lightbox-overlay .scrim {
	background-color: var(--e-global-color-primary, #283858) !important;
	opacity: 0.96;
}

.wp-lightbox-overlay button {
	fill: var(--e-global-color-white, #fff) !important;
}

.gcmc-post__back {
	margin-top: 40px;
	padding-top: 24px;
	border-top: 1px solid rgba(16, 25, 42, 0.1);
}

.gcmc-post__back a {
	color: var(--e-global-color-link, #23407a);
}

/* ----- Blog: card grid ([gcmc_posts], mu-plugins/gcmc-blog.php) ----- */

.gcmc-posts {
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	gap: 30px;
	width: 100%;
}

.gcmc-post-card {
	background: var(--e-global-color-secondary, #faf4e8);
	border-top: 3px solid var(--e-global-color-accent, #d4b76a);
	border-radius: 6px;
	overflow: hidden;
}

.gcmc-post-card a,
.gcmc-post-card a:hover {
	display: block;
	height: 100%;
	color: inherit;
	text-decoration: none;
}

.gcmc-post-card__img img {
	display: block;
	width: 100%;
	aspect-ratio: 4 / 3;
	object-fit: cover;
}

.gcmc-post-card__body {
	padding: 22px 24px 26px;
}

.gcmc-post-card__date {
	margin: 0 0 8px;
	font-size: 14px;
	color: var(--e-global-color-gold_text, #806225);
}

.gcmc-post-card__title {
	margin: 0 0 10px;
	font-size: 20px;
	line-height: 1.3;
	color: var(--e-global-color-primary, #283858);
}

.gcmc-post-card a:hover .gcmc-post-card__title {
	color: var(--e-global-color-gold_text, #806225);
}

.gcmc-post-card__text {
	margin: 0;
	font-size: 15px;
	line-height: 1.6;
}

.gcmc-posts__pager {
	margin-top: 40px;
	text-align: center;
}

.gcmc-posts__pager .page-numbers {
	display: inline-block;
	margin: 0 3px;
	padding: 6px 12px;
	border-radius: 4px;
	color: var(--e-global-color-primary, #283858);
	text-decoration: none;
}

.gcmc-posts__pager .page-numbers.current {
	background: var(--e-global-color-primary, #283858);
	color: var(--e-global-color-white, #fff);
}

/* ----- Events: cards ([gcmc_events], mu-plugins/gcmc-events.php) ----- */

.gcmc-events {
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	gap: 30px;
	width: 100%;
}

.gcmc-event-card {
	background: var(--e-global-color-secondary, #faf4e8);
	border-top: 3px solid var(--e-global-color-accent, #d4b76a);
	border-radius: 6px;
}

.gcmc-event-card a,
.gcmc-event-card a:hover {
	display: flex;
	gap: 18px;
	align-items: flex-start;
	height: 100%;
	padding: 24px;
	color: inherit;
	text-decoration: none;
}

.gcmc-event-card__date {
	flex: none;
	width: 64px;
	padding: 8px 0 10px;
	border-radius: 6px;
	background: var(--e-global-color-primary, #283858);
	color: var(--e-global-color-white, #fff);
	text-align: center;
	line-height: 1.1;
}

.gcmc-event-card__month {
	display: block;
	font-size: 13px;
	font-weight: 600;
	letter-spacing: 0.08em;
	text-transform: uppercase;
	color: var(--e-global-color-accent, #d4b76a);
}

.gcmc-event-card__day {
	display: block;
	margin-top: 4px;
	font-size: 28px;
	font-weight: 700;
}

.gcmc-event-card__title {
	margin: 2px 0 8px;
	font-size: 20px;
	line-height: 1.3;
	color: var(--e-global-color-primary, #283858);
}

.gcmc-event-card a:hover .gcmc-event-card__title {
	color: var(--e-global-color-gold_text, #806225);
}

.gcmc-event-card__when,
.gcmc-event-card__venue {
	margin: 0;
	font-size: 15px;
	line-height: 1.5;
}

.gcmc-event-card__when {
	color: var(--e-global-color-gold_text, #806225);
}

.gcmc-event-card__venue {
	margin-top: 4px;
}

.gcmc-events__empty {
	margin: 0;
	text-align: center;
}

.gcmc-events__heading {
	margin: 64px 0 28px;
	text-align: center;
	color: var(--e-global-color-primary, #283858);
}

/* ----- Events: single event (single-gcmc_event.php; the title band is the blog post's) ----- */

.gcmc-event__info {
	background: var(--e-global-color-secondary, #faf4e8);
	padding: 36px 24px;
	text-align: center;
}

.gcmc-event__details {
	display: flex;
	flex-wrap: wrap;
	justify-content: center;
	gap: 20px 64px;
	max-width: 960px;
	margin: 0 auto;
}

.gcmc-event__detail dt {
	margin: 0 0 4px;
	font-size: 13px;
	font-weight: 600;
	letter-spacing: 0.08em;
	text-transform: uppercase;
	color: var(--e-global-color-gold_text, #806225);
}

.gcmc-event__detail dd {
	margin: 0;
	font-size: 18px;
	font-weight: 600;
	color: var(--e-global-color-primary, #283858);
}

.gcmc-event__past {
	margin: 20px 0 0;
	font-size: 15px;
	font-style: italic;
}

.gcmc-event__poster {
	max-width: 760px;
	margin: 0 auto;
	text-align: center;
}

.gcmc-post__content + .gcmc-event__poster {
	margin-top: 40px;
}

/* An event with no description or poster: just the link, without the dividing line above it. */
.gcmc-post__article > .gcmc-post__back:first-child {
	margin-top: 0;
	padding-top: 0;
	border-top: 0;
}

/* A portrait poster at the full 760px column would be taller than the screen; the full size opens on click. */
.gcmc-event__poster img {
	display: inline-block;
	max-width: min(100%, 600px);
	height: auto;
	border-radius: 6px;
	box-shadow: 0 4px 18px rgba(16, 25, 42, 0.12);
}

@media (max-width: 880px) {
	.gcmc-events {
		grid-template-columns: repeat(2, 1fr);
	}
}

@media (max-width: 600px) {
	.gcmc-events {
		grid-template-columns: 1fr;
		gap: 20px;
	}

	.gcmc-events__heading {
		margin-top: 48px;
	}

	.gcmc-event__info {
		padding: 28px 20px;
	}

	.gcmc-event__details {
		flex-direction: column;
		gap: 16px;
	}
}

/* ----- Weekly bulletins ([gcmc_bulletins], mu-plugins/gcmc-bulletins.php) ----- */

.gcmc-bulletins {
	width: 100%;
}

.gcmc-bulletin-latest {
	display: flex;
	align-items: center;
	justify-content: center;
	gap: 56px;
	padding: 40px;
	background: var(--e-global-color-white, #fff);
	border-top: 3px solid var(--e-global-color-accent, #d4b76a);
	border-radius: 6px;
}

.gcmc-bulletin-latest__cover {
	flex: 0 0 auto;
}

.gcmc-bulletin-latest__cover img {
	display: block;
	width: auto;
	max-width: 300px;
	max-height: 440px;
	box-shadow: 0 6px 24px rgba(40, 56, 88, 0.18);
}

.gcmc-bulletin-latest__label {
	margin: 0 0 6px;
	font-size: 14px;
	letter-spacing: 0.08em;
	text-transform: uppercase;
	color: var(--e-global-color-gold_text, #806225);
}

.gcmc-bulletin-latest__date {
	margin: 0 0 24px;
	word-break: keep-all; /* Chinese date: break only at the <wbr> after 年. */
	color: var(--e-global-color-primary, #283858);
}

/* Same look as the site's filled buttons (Site Settings → Theme Style → Buttons). Also the yearbook "Read" button. */
a.gcmc-bulletin-button,
a.gcmc-bulletin-button:visited {
	display: inline-block;
	padding: 12px 28px;
	font-size: 15px;
	font-weight: 600;
	letter-spacing: 0.6px;
	line-height: 18px;
	border: 1px solid var(--e-global-color-accent, #d4b76a);
	border-radius: 4px;
	background: var(--e-global-color-accent, #d4b76a);
	color: var(--e-global-color-primary, #283858);
	text-decoration: none;
}

a.gcmc-bulletin-button:hover,
a.gcmc-bulletin-button:focus {
	border-color: var(--e-global-color-primary, #283858);
	background: var(--e-global-color-primary, #283858);
	color: var(--e-global-color-white, #fff);
}

.gcmc-bulletins__heading {
	margin: 64px 0 8px;
	text-align: center;
	color: var(--e-global-color-primary, #283858);
}

.gcmc-bulletins__year summary {
	padding: 18px 0 10px;
	border-bottom: 1px solid var(--e-global-color-accent, #d4b76a);
	font-size: 20px;
	color: var(--e-global-color-primary, #283858);
	cursor: pointer;
}

.gcmc-bulletins__grid {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(150px, 1fr));
	gap: 28px 24px;
	padding: 24px 0 8px;
}

.gcmc-bulletin-card,
.gcmc-bulletin-card:hover {
	display: block;
	color: inherit;
	text-decoration: none;
}

/* Covers come in different shapes (A4, phone-sized), so each sits whole in the same white frame. */
.gcmc-bulletin-card__cover {
	display: flex;
	align-items: center;
	justify-content: center;
	aspect-ratio: 3 / 4;
	padding: 10px;
	background: var(--e-global-color-white, #fff);
	border-radius: 6px;
}

.gcmc-bulletin-card__cover img {
	display: block;
	width: auto;
	height: auto;
	max-width: 100%;
	max-height: 100%;
	box-shadow: 0 2px 8px rgba(40, 56, 88, 0.15);
}

.gcmc-bulletin-card__placeholder {
	font-size: 20px;
	color: var(--e-global-color-gold_text, #806225);
}

.gcmc-bulletin-card__date {
	display: block;
	margin-top: 10px;
	font-size: 15px;
	text-align: center;
	color: var(--e-global-color-primary, #283858);
}

.gcmc-bulletin-card:hover .gcmc-bulletin-card__date {
	color: var(--e-global-color-gold_text, #806225);
}

@media (max-width: 880px) {
	.gcmc-posts {
		grid-template-columns: repeat(2, 1fr);
	}
}

@media (max-width: 600px) {
	.gcmc-posts {
		grid-template-columns: 1fr;
	}

	.gcmc-post__band {
		padding: 56px 20px 40px;
	}

	.gcmc-post__article {
		padding: 36px 20px 56px;
	}

	/* Small cover beside the date, so the button stays on the first screen. */
	.gcmc-bulletin-latest {
		gap: 20px;
		padding: 24px 20px;
	}

	.gcmc-bulletin-latest__cover img {
		max-width: 110px;
		max-height: 200px;
	}

	.gcmc-bulletin-latest__date {
		margin-bottom: 16px;
		font-size: 24px;
	}

	a.gcmc-bulletin-button {
		padding: 10px 18px;
	}

	.gcmc-bulletins__heading {
		margin-top: 48px;
	}

	.gcmc-bulletins__grid {
		grid-template-columns: repeat(3, 1fr);
		gap: 20px 12px;
	}

	.gcmc-bulletin-card__cover {
		padding: 6px;
	}

	.gcmc-bulletin-card__date {
		font-size: 13px;
	}
}

/* ----- Yearbook ([gcmc_yearbook_latest] on Home, [gcmc_yearbooks] on the Yearbook page; mu-plugins/gcmc-yearbooks.php) ----- */

.gcmc-yearbook-latest {
	display: flex;
	align-items: center;
	justify-content: center;
	gap: 56px;
}

.gcmc-yearbook-latest__cover {
	flex: 0 0 auto;
}

.gcmc-yearbook-latest__cover img {
	display: block;
	width: auto;
	max-width: 280px;
	max-height: 400px;
	box-shadow: 0 6px 24px rgba(40, 56, 88, 0.18);
}

.gcmc-yearbook-latest__year {
	margin: 0 0 6px;
	font-size: 14px;
	letter-spacing: 0.08em;
	color: var(--e-global-color-gold_text, #806225);
}

.gcmc-yearbook-latest__title {
	margin: 0 0 24px;
	color: var(--e-global-color-primary, #283858);
}

.gcmc-yearbooks {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(200px, 260px));
	justify-content: center;
	gap: 40px 32px;
	width: 100%;
}

.gcmc-yearbook-card,
.gcmc-yearbook-card:hover {
	display: block;
	color: inherit;
	text-decoration: none;
	text-align: center;
}

/* An A4 frame, so a cover of any shape sits whole in the same white card. */
.gcmc-yearbook-card__cover {
	display: flex;
	align-items: center;
	justify-content: center;
	aspect-ratio: 210 / 297;
	padding: 12px;
	background: var(--e-global-color-white, #fff);
	border-radius: 6px;
}

.gcmc-yearbook-card__cover img {
	display: block;
	width: auto;
	height: auto;
	max-width: 100%;
	max-height: 100%;
	box-shadow: 0 2px 8px rgba(40, 56, 88, 0.15);
}

.gcmc-yearbook-card__year {
	display: block;
	margin-top: 14px;
	font-size: 20px;
	color: var(--e-global-color-primary, #283858);
}

.gcmc-yearbook-card__title {
	display: block;
	margin-top: 2px;
	font-size: 15px;
	color: var(--e-global-color-text, #333);
}

.gcmc-yearbook-card:hover .gcmc-yearbook-card__year {
	color: var(--e-global-color-gold_text, #806225);
}

@media (max-width: 600px) {
	.gcmc-yearbook-latest {
		flex-direction: column;
		gap: 24px;
		text-align: center;
	}

	.gcmc-yearbook-latest__cover img {
		max-width: 200px;
		max-height: 290px;
	}

	.gcmc-yearbooks {
		grid-template-columns: repeat(2, 1fr);
		gap: 28px 16px;
	}

	.gcmc-yearbook-card__cover {
		padding: 8px;
	}

	.gcmc-yearbook-card__year {
		font-size: 17px;
	}

	.gcmc-yearbook-card__title {
		font-size: 13px;
	}
}

/* Outline-navy Elementor buttons (CSS class gcmc-button-outline-dark, e.g. Home "All yearbooks"). Elementor
   gives :focus the hover look (navy, white text); after a click or tap, when the button keeps focus but isn't
   hovered, show it unfilled with black text instead. */
.elementor .gcmc-button-outline-dark.elementor-widget-button .elementor-button:focus:not(:hover) {
	background-color: transparent;
	color: #000;
}

/* [gcmc_yearbook_latest] in a navy band (Elementor container with the CSS class gcmc-band-dark, Home):
   larger cover with an offset gold frame behind it, gold year, larger white title. */
.gcmc-band-dark .gcmc-yearbook-latest {
	gap: 80px;
	padding-bottom: 18px; /* Room for the frame below the cover. */
}

.gcmc-band-dark .gcmc-yearbook-latest__cover {
	position: relative;
	z-index: 0;
}

.gcmc-band-dark .gcmc-yearbook-latest__cover::before {
	content: "";
	position: absolute;
	z-index: -1;
	inset: 18px -18px -18px 18px;
	border: 1px solid var(--e-global-color-accent, #d4b76a);
	border-radius: 2px;
}

.gcmc-band-dark .gcmc-yearbook-latest__cover img {
	max-width: 320px;
	max-height: 460px;
	box-shadow: 0 18px 48px rgba(0, 0, 0, 0.35);
}

.gcmc-band-dark .gcmc-yearbook-latest__body {
	max-width: 420px;
}

.gcmc-band-dark .gcmc-yearbook-latest__year {
	margin-bottom: 10px;
	font-size: 15px;
	letter-spacing: 0.2em;
	color: var(--e-global-color-accent, #d4b76a);
}

.gcmc-band-dark .gcmc-yearbook-latest__title {
	margin-bottom: 32px;
	font-size: 30px;
	line-height: 1.3;
	color: var(--e-global-color-white, #fff);
}

/* The gold button's navy hover would vanish on navy: go white instead. */
.gcmc-band-dark .gcmc-bulletin-button:hover,
.gcmc-band-dark .gcmc-bulletin-button:focus {
	border-color: var(--e-global-color-white, #fff);
	background: var(--e-global-color-white, #fff);
	color: var(--e-global-color-primary, #283858);
}

@media (max-width: 600px) {
	.gcmc-band-dark .gcmc-yearbook-latest {
		gap: 36px;
		padding-bottom: 10px;
	}

	.gcmc-band-dark .gcmc-yearbook-latest__cover::before {
		inset: 10px -10px -10px 10px;
	}

	.gcmc-band-dark .gcmc-yearbook-latest__cover img {
		max-width: 220px;
		max-height: 320px;
	}

	.gcmc-band-dark .gcmc-yearbook-latest__title {
		margin-bottom: 24px;
		font-size: 24px;
	}
}
