/**
 * Theme layout layer (flexbox). Design tokens live in design-system.css.
 *
 * @package DefaultTemplate
 */

/* --------------------------------------------------------------------------
   Global
   -------------------------------------------------------------------------- */

*,
*::before,
*::after {
	box-sizing: border-box;
}

body {
	margin: 0;
	min-height: 100vh;
	font-family: var(--font-family-body);
	font-weight: var(--font-weight-body);
	font-size: var(--text-p-m);
	line-height: 1.5;
	color: var(--brand-blue-content-default-para);
	background-color: var(--brand-blue-content-default-bg);
}

body.mobile_menu_open {
	overflow: hidden;
}

img {
	max-width: 100%;
	height: auto;
	display: block;
}

a {
	color: var(--color-600);
	text-decoration-thickness: 1px;
	text-underline-offset: 0.12em;
}

a:hover,
a:focus-visible {
	color: var(--color-500);
}

/* --------------------------------------------------------------------------
   Shell
   -------------------------------------------------------------------------- */

#page.site {
	display: flex;
	flex-direction: column;
	min-height: 100vh;
}

/* --------------------------------------------------------------------------
   Header
   -------------------------------------------------------------------------- */

#site_header.site_header {
	position: relative;
	z-index: 20;
	border-bottom: 1px solid var(--neutral-200);
	background-color: var(--brand-blue-content-default-bg);
}

.header_inner {
	display: flex;
	flex-direction: row;
	flex-wrap: wrap;
	align-items: center;
	justify-content: space-between;
	gap: var(--space-md);
	max-width: 1200px;
	margin-inline: auto;
	padding: var(--space-md) var(--space-lg);
}

.site_branding {
	display: flex;
	flex-direction: row;
	flex-wrap: wrap;
	align-items: center;
}

.site_branding_text {
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	gap: var(--space-xxs);
}

.site_branding_tagline {
	margin: 0;
	font-size: var(--text-p-s);
	color: var(--neutral-600);
	font-weight: var(--font-weight-body);
}

.site_branding_title_link {
	color: var(--brand-blue-content-default-title);
	font-family: var(--font-family-heading);
	font-weight: var(--font-weight-heading);
	font-size: var(--text-ui-title-md);
	text-decoration: none;
}

.site_branding_title_link:hover,
.site_branding_title_link:focus-visible {
	color: var(--color-600);
}

.site_branding .custom-logo-link {
	display: flex;
	flex-direction: row;
	align-items: center;
}

.site_branding .custom-logo {
	max-height: 48px;
	width: auto;
}

.header_nav_desktop {
	display: flex;
	flex-direction: row;
	flex-wrap: wrap;
	align-items: center;
}

.nav_menu_list {
	display: flex;
	flex-direction: row;
	flex-wrap: wrap;
	align-items: center;
	gap: var(--space-sm) var(--space-md);
	list-style: none;
	margin: 0;
	padding: 0;
}

.nav_menu_list a {
	font-size: var(--text-ui-m);
	color: var(--neutral-800);
	text-decoration: none;
}

.nav_menu_list a:hover,
.nav_menu_list a:focus-visible {
	color: var(--color-600);
}

.mobile_menu_btn {
	display: none;
	flex-direction: row;
	flex-wrap: nowrap;
	align-items: center;
	justify-content: center;
	gap: var(--space-xs);
	padding: var(--space-xs) var(--space-sm);
	border: 1px solid var(--neutral-300);
	border-radius: 6px;
	background: var(--neutral-white);
	color: var(--neutral-900);
	cursor: pointer;
}

.mobile_menu_btn:focus-visible {
	outline: 2px solid var(--color-500);
	outline-offset: 2px;
}

.mobile_menu_icon {
	font-family: 'Material Symbols Outlined';
	font-variation-settings: 'FILL' 0, 'wght' 400, 'GRAD' 0, 'opsz' 24;
	font-size: 1.5rem;
	line-height: 1;
}

.mobile_menu_drawer {
	display: none;
	flex-direction: column;
	width: 100%;
	padding: var(--space-md) var(--space-lg);
	border-top: 1px solid var(--neutral-200);
	background: var(--neutral-white);
}

.mobile_menu_drawer.is_open {
	display: flex;
}

.nav_menu_list_mobile {
	flex-direction: column;
	flex-wrap: nowrap;
	align-items: flex-start;
}

/* --------------------------------------------------------------------------
   Main content
   -------------------------------------------------------------------------- */

#main.site_main {
	flex: 1 1 auto;
	width: 100%;
	max-width: 1200px;
	margin-inline: auto;
	padding: var(--space-xl) var(--space-lg);
}

.page_links {
	display: flex;
	flex-direction: row;
	flex-wrap: wrap;
	align-items: baseline;
	gap: var(--space-xs) var(--space-sm);
	margin-top: var(--space-lg);
	font-size: var(--text-p-s);
	color: var(--neutral-700);
}

.page_links_label {
	font-weight: var(--font-weight-heading);
	margin-inline-end: var(--space-xs);
}

/* --------------------------------------------------------------------------
   Comments
   -------------------------------------------------------------------------- */

.comments_area {
	margin-top: var(--space-xxl);
	padding-top: var(--space-xl);
	border-top: 1px solid var(--neutral-200);
}

.comments_title {
	font-family: var(--font-family-heading);
	font-weight: var(--font-weight-heading);
	font-size: var(--text-ui-title-lg);
	margin: 0 0 var(--space-md);
	color: var(--brand-blue-content-default-title);
}

.comment_list {
	list-style: none;
	margin: 0 0 var(--space-lg);
	padding: 0;
	display: flex;
	flex-direction: column;
	gap: var(--space-md);
}

.comment_list .children {
	list-style: none;
	margin: var(--space-sm) 0 0 var(--space-lg);
	padding: 0;
	display: flex;
	flex-direction: column;
	gap: var(--space-sm);
}

.comments_closed {
	color: var(--neutral-600);
	font-size: var(--text-p-s);
}

.entry_header {
	margin-bottom: var(--space-md);
}

.entry_title {
	font-family: var(--font-family-heading);
	font-weight: var(--font-weight-heading);
	font-size: var(--text-ui-title-2xl);
	color: var(--brand-blue-content-default-title);
	margin: 0 0 var(--space-sm);
}

.entry_meta {
	font-size: var(--text-p-s);
	color: var(--neutral-600);
}

.entry_content > *:first-child {
	margin-top: 0;
}

.entry_content > *:last-child {
	margin-bottom: 0;
}

.entry_summary,
.page_content {
	max-width: 72ch;
}

.page_header {
	margin-bottom: var(--space-md);
}

.post_thumbnail {
	margin-bottom: var(--space-lg);
}

.no_results {
	padding: var(--space-xl) 0;
}

.page_title {
	font-family: var(--font-family-heading);
	font-weight: var(--font-weight-heading);
	font-size: var(--text-ui-title-xl);
	margin: 0 0 var(--space-md);
}

/* --------------------------------------------------------------------------
   Footer
   -------------------------------------------------------------------------- */

#site_footer.site_footer {
	margin-top: auto;
	padding: var(--space-xl) var(--space-lg);
	border-top: 1px solid var(--neutral-200);
	background-color: var(--neutral-50);
	color: var(--neutral-800);
}

.footer_widgets {
	max-width: 1200px;
	margin-inline: auto;
	margin-bottom: var(--space-lg);
	padding-bottom: var(--space-lg);
	border-bottom: 1px solid var(--neutral-200);
}

.footer_widgets,
.widget_area {
	display: flex;
	flex-direction: column;
	gap: var(--space-md);
}

.footer_inner {
	display: flex;
	flex-direction: row;
	flex-wrap: wrap;
	align-items: flex-start;
	justify-content: space-between;
	gap: var(--space-lg);
	max-width: 1200px;
	margin-inline: auto;
}

.footer_brand {
	display: flex;
	flex-direction: column;
	gap: var(--space-sm);
}

.footer_nav .nav_menu_list {
	flex-direction: column;
	flex-wrap: nowrap;
	align-items: flex-start;
}

.footer_copyright {
	margin: 0;
	font-size: var(--text-p-s);
	color: var(--neutral-600);
}

/* --------------------------------------------------------------------------
   Pagination & widgets
   -------------------------------------------------------------------------- */

.navigation.pagination {
	display: flex;
	flex-direction: row;
	flex-wrap: wrap;
	gap: var(--space-sm);
	margin-top: var(--space-xl);
}

.widget_title {
	font-size: var(--text-ui-title-sm);
	margin: 0 0 var(--space-sm);
}

/* --------------------------------------------------------------------------
   Scroll reveal (optional)
   -------------------------------------------------------------------------- */

.fade-seq {
	opacity: 0;
	transform: translateY(12px);
	transition: opacity 0.5s ease, transform 0.5s ease;
}

.fade-seq.is-visible {
	opacity: 1;
	transform: translateY(0);
}

@media (prefers-reduced-motion: reduce) {

	.fade-seq,
	.fade-seq.is-visible {
		transition: none;
		transform: none;
		opacity: 1;
	}
}

/* --------------------------------------------------------------------------
   Landing home (static front page, no site header/footer)
   Video + overlay are fixed to the viewport (siblings of <main>).
   -------------------------------------------------------------------------- */

body.landing_page {
	margin: 0;
	min-height: 100vh;
	min-height: 100dvh;
	overflow-x: hidden;
	background-color: var(--color-900);
}

body.landing_page .landing_video_wrap {
	position: fixed;
	inset: 0;
	z-index: 0;
	width: 100%;
	height: 100%;
	min-height: 100vh;
	min-height: 100dvh;
	display: flex;
	flex-direction: row;
	flex-wrap: nowrap;
	align-items: stretch;
	justify-content: center;
	overflow: hidden;
	pointer-events: none;
}

body.landing_page .landing_video_bg {
	width: 100%;
	height: 100%;
	min-height: 100vh;
	min-height: 100dvh;
	object-fit: cover;
	display: block;
}

body.landing_page .landing_overlay {
	position: fixed;
	inset: 0;
	z-index: 1;
	width: 100%;
	height: 100%;
	min-height: 100vh;
	min-height: 100dvh;
	pointer-events: none;
	background: rgba(15, 34, 88, 0.5);
}

body.landing_page .landing_page_main {
	position: relative;
	z-index: 2;
	display: flex;
	flex-direction: column;
	flex-wrap: nowrap;
	align-items: stretch;
	justify-content: center;
	min-height: 100vh;
	min-height: 100dvh;
	width: 100%;
	margin: 0;
	padding: 0;
	max-width: none;
}

body.landing_page .landing_stack {
	position: relative;
	z-index: 2;
	display: flex;
	flex-direction: column;
	flex-wrap: nowrap;
	align-items: center;
	justify-content: center;
	gap: var(--space-md);
	box-sizing: border-box;
	width: 100%;
	max-width: 52rem;
	min-height: 100vh;
	min-height: 100dvh;
	margin-inline: auto;
	padding: var(--space-xxl) var(--space-md);
	padding-left: max( var(--space-md), env(safe-area-inset-left) );
	padding-right: max( var(--space-md), env(safe-area-inset-right) );
	padding-bottom: max( var(--space-xl), env(safe-area-inset-bottom) );
	text-align: center;
}

body.landing_page.admin-bar .landing_stack {
	padding-top: max( calc( var(--space-xxl) + 32px ), env(safe-area-inset-top) );
}

@media (max-width: 782px) {

	body.landing_page.admin-bar .landing_stack {
		padding-top: max( calc( var(--space-xxl) + 46px ), env(safe-area-inset-top) );
	}
}

body.landing_page .landing_logo_wrap {
	display: flex;
	flex-direction: row;
	align-items: center;
	justify-content: center;
	flex-shrink: 0;
	width: clamp( 3.75rem, 11vw, 5.5rem );
	height: clamp( 3.75rem, 11vw, 5.5rem );
	box-sizing: border-box;
	padding: clamp( 6px, 1.4vw, 10px );
	border-radius: 50%;
	overflow: hidden;
	background: var(--color-white);
}

body.landing_page .landing_logo {
	width: auto;
	height: auto;
	max-width: 82%;
	max-height: 82%;
	object-fit: contain;
	display: block;
	flex-shrink: 0;
}

body.landing_page .landing_heading {
	margin: 0;
	font-family: var(--font-family-heading);
	font-weight: var(--font-weight-heading);
	font-size: clamp( var(--text-ui-title-lg), 2.5vw + 1rem, var(--text-ui-title-3xl) );
	line-height: 1.15;
	color: var(--color-white);
	text-wrap: balance;
}

body.landing_page .landing_lead {
	margin: 0;
	max-width: 42rem;
	font-size: clamp( var(--text-p-s), 0.5vw + 0.9rem, var(--text-p-l) );
	line-height: 1.55;
	color: var(--neutral-100);
}

body.landing_page .landing_cta_wrap {
	display: flex;
	flex-direction: row;
	flex-wrap: wrap;
	align-items: center;
	justify-content: center;
	margin-top: var(--space-sm);
}

body.landing_page a.landing_cta,
body.landing_page a.landing_cta:visited {
	display: inline-flex;
	flex-direction: row;
	align-items: center;
	justify-content: center;
	padding: var(--space-sm) var(--space-xl);
	border-radius: 999px;
	background: var(--color-900);
	color: var(--color-white);
	font-size: var(--text-ui-m);
	font-weight: 600;
	text-decoration: none;
	box-sizing: border-box;
	transition: background 0.2s ease, color 0.2s ease;
}

body.landing_page a.landing_cta:hover,
body.landing_page a.landing_cta:focus-visible {
	background: var(--color-700);
	color: var(--color-white);
	outline: 2px solid var(--color-300);
	outline-offset: 3px;
	text-decoration: none;
}

/* --------------------------------------------------------------------------
   Responsive
   -------------------------------------------------------------------------- */

@media (max-width: 1023px) {

	.header_nav_desktop {
		display: none;
	}

	.mobile_menu_btn {
		display: flex;
	}
}

@media (min-width: 1024px) {

	.mobile_menu_drawer {
		display: none !important;
	}

	.mobile_menu_drawer.is_open {
		display: none !important;
	}
}
