/*
 * WordPress integration bridge.
 *
 * theme.json emits global link and heading rules outside the component
 * layer. Keep these narrow overrides in their own file so the shared
 * components file only owns reusable UI.
 */
a.cal-button-primary,
a.cal-button-primary:visited {
	color: var(--cal-color-on-accent);
}

a.cal-button-primary:hover,
a.cal-button-primary:focus-visible {
	border-color: var(--cal-navy);
	background: var(--cal-navy);
	color: var(--cal-color-on-navy);
}

a.cal-button-secondary,
a.cal-button-secondary:visited {
	color: var(--cal-color-link-hover);
}

.cal-home-hero h1,
.cal-article-header h1 {
	color: var(--cal-color-on-navy);
}

.cal-site-header a.cal-header-cta,
.cal-site-header a.cal-header-cta:visited {
	border-color: var(--cal-accent-deep);
	background: var(--cal-accent-deep);
	color: var(--cal-surface);
}

.cal-site-header a.cal-header-cta:hover,
.cal-site-header a.cal-header-cta:focus-visible {
	border-color: var(--cal-navy);
	background: var(--cal-navy);
	color: var(--cal-surface);
}

.cal-site-nav > ul > li > a {
	color: var(--cal-color-text-subtle);
}

.cal-card__title a,
a.cal-card__action,
a.cal-text-link {
	color: var(--cal-color-link);
}

.cal-card__title a:hover,
a.cal-card__action:hover,
a.cal-text-link:hover {
	color: var(--cal-color-link-hover);
}

/* theme.json emits unlayered heading/link colours after the layered theme CSS. */
.cal-site-footer .cal-footer-nav__title {
	color: var(--cal-footer-text);
}

.cal-site-footer .cal-footer-nav a,
.cal-site-footer .cal-footer-nav a:visited,
.cal-site-footer .cal-site-footer__utility a,
.cal-site-footer .cal-site-footer__utility a:visited {
	color: var(--cal-footer-muted);
}

.cal-site-footer .cal-footer-nav a:hover,
.cal-site-footer .cal-footer-nav a:focus-visible,
.cal-site-footer .cal-site-footer__utility a:hover,
.cal-site-footer .cal-site-footer__utility a:focus-visible {
	color: var(--cal-accent);
}

/* Keep shared navigation and footer structure stable against unlayered global styles. */
.cal-pagination {
	width: 100%;
	max-width: var(--cal-shell-width);
	margin-right: auto;
	margin-left: auto;
	border: 0;
	border-radius: 0;
	padding: 0 var(--cal-gutter) 72px;
	background: transparent;
	box-shadow: none;
}

.cal-pagination .nav-links {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 8px;
	margin: 0;
	padding: 0;
	border: 0;
	background: transparent;
	box-shadow: none;
	list-style: none !important;
}

.cal-pagination .nav-links > *,
.cal-pagination .nav-links > *::before,
.cal-pagination .nav-links > *::after {
	list-style: none !important;
	content: none;
}

.cal-pagination ul.page-numbers {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 8px;
	margin: 0;
	padding: 0;
	border: 0;
	background: transparent;
	list-style: none;
}

.cal-pagination ul.page-numbers > li {
	display: flex;
	margin: 0;
	padding: 0;
	list-style: none;
}

.cal-pagination ul.page-numbers > li::marker {
	content: "";
}

.cal-pagination .page-numbers:not(ul.page-numbers) {
	display: inline-flex;
	min-width: 44px;
	min-height: 44px;
	align-items: center;
	justify-content: center;
	border: 1px solid var(--cal-line);
	border-radius: var(--cal-radius-sm);
	padding: 0 12px;
	background: var(--cal-surface);
	color: var(--cal-navy);
	font-size: 0.82rem;
	font-weight: 800;
	text-decoration: none;
}

.cal-pagination .post-page-numbers {
	display: inline-flex;
	min-width: 44px;
	min-height: 44px;
	align-items: center;
	justify-content: center;
	border: 1px solid var(--cal-line);
	border-radius: var(--cal-radius-sm);
	padding: 0 12px;
	background: var(--cal-surface);
	color: var(--cal-navy);
	font-size: 0.82rem;
	font-weight: 800;
	text-decoration: none;
}

.cal-pagination--content {
	padding-top: 24px;
}

.cal-pagination a.page-numbers:visited,
.cal-pagination a.post-page-numbers:visited {
	color: var(--cal-navy);
}

.cal-pagination .page-numbers.dots {
	min-width: 0;
	min-height: 44px;
	border-color: transparent;
	background: transparent;
	padding-right: 2px;
	padding-left: 2px;
	font-size: 1rem;
	font-weight: 700;
}

.cal-pagination .page-numbers.current,
.cal-pagination a.page-numbers:hover,
.cal-pagination .post-page-numbers.current,
.cal-pagination a.post-page-numbers:hover {
	border-color: var(--cal-accent);
	background: var(--cal-tint);
	color: var(--cal-navy);
}

@media (max-width: 420px) {
	.cal-pagination {
		padding-right: var(--cal-gutter);
		padding-left: var(--cal-gutter);
		padding-bottom: 40px;
	}

	.cal-pagination .nav-links,
	.cal-pagination ul.page-numbers {
		flex-wrap: nowrap;
		gap: 4px;
		min-width: 0;
	}

	.cal-pagination .page-numbers:not(.prev):not(.next):not(.current):not(.dots) {
		display: none;
	}

	.cal-pagination .page-numbers.prev,
	.cal-pagination .page-numbers.next {
		flex: 0 0 auto;
		padding-right: 8px;
		padding-left: 8px;
	}
}

.cal-site-footer {
	width: 100%;
}

.cal-site-footer__inner {
	width: min(var(--cal-shell-width), 100%);
}

.cal-site-footer__primary {
	display: grid;
	grid-template-columns: minmax(0, 0.8fr) minmax(0, 1.2fr);
	align-items: start;
	gap: clamp(32px, 6vw, 88px);
}

.cal-site-footer__copy {
	display: block;
	min-width: 0;
	max-width: 440px;
}

.cal-site-footer .cal-footer-brand__tagline,
.cal-site-footer .cal-footer-brand__note {
	display: block;
	max-width: 100%;
	white-space: normal;
	overflow-wrap: anywhere;
}

.cal-site-footer .cal-footer-nav--columns {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: clamp(20px, 3vw, 40px);
	min-width: 0;
}

.cal-site-footer .cal-footer-nav__col,
.cal-site-footer .cal-footer-nav__col ul {
	min-width: 0;
}

.cal-site-footer .cal-footer-nav__col ul,
.cal-site-footer .cal-site-footer__utility-list {
	margin: 0;
	padding: 0;
	list-style: none;
}

.cal-site-footer .cal-footer-nav__col li,
.cal-site-footer .cal-site-footer__utility-list li {
	margin: 0;
	padding: 0;
}

.cal-site-footer__bottom {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 24px;
}

.cal-site-footer__utility-list {
	display: flex;
	flex-wrap: wrap;
	justify-content: flex-end;
	gap: 6px 20px;
}

.cal-site-footer .cal-footer-brand__tagline,
.cal-site-footer .cal-footer-brand__note {
	display: block;
	visibility: visible;
}

.cal-site-footer .cal-footer-brand__details {
	display: grid;
	gap: 12px;
	min-width: 0;
}

.cal-site-footer .cal-footer-brand__tagline {
	margin: 0;
	color: var(--cal-footer-text);
}

.cal-site-footer .cal-footer-brand__note {
	margin: 0;
	color: var(--cal-footer-muted);
}

@media (max-width: 1040px) {
	.cal-site-footer__primary {
		grid-template-columns: minmax(0, 1fr);
		gap: 36px;
	}
}

@media (max-width: 760px) {
	.cal-site-footer .cal-footer-nav--columns {
		display: none;
	}

	.cal-site-footer__bottom {
		display: block;
	}

	.cal-site-footer__utility-list {
		justify-content: flex-start;
		gap: 8px 16px;
	}
}
