/*
 Theme Name:   Top Model Child
 Theme URI:    http://cmsmasters.net/top-model-child/
 Description:  Top Model Child Theme
 Author:       cmsmasters
 Author URI:   http://cmsmasters.net/
 Template:     top-model
 Version:      1.0.0
 License:      
 License URI:  
 Text Domain:  top-model-child
 Tags: one-column, two-columns, three-columns, four-columns, left-sidebar, right-sidebar, custom-background, custom-colors, custom-header, custom-menu, editor-style, featured-image-header, featured-images, flexible-header, full-width-template, microformats, post-formats, rtl-language-support, sticky-post, theme-options, threaded-comments, translation-ready
*/

/* Self-hosted Google Fonts. Italian characters are covered by the Latin
   subset; font-display keeps text immediately readable while a font loads. */
@font-face {
	font-family: 'Cinzel';
	font-style: normal;
	font-weight: 400 600;
	font-display: swap;
	src: url('assets/fonts/cinzel-latin.woff2') format('woff2');
	unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

@font-face {
	font-family: 'Plus Jakarta Sans';
	font-style: normal;
	font-weight: 400 800;
	font-display: swap;
	src: url('assets/fonts/plus-jakarta-sans-latin.woff2') format('woff2');
	unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

@font-face {
	font-family: 'Raleway';
	font-style: normal;
	font-weight: 300 700;
	font-display: swap;
	src: url('assets/fonts/raleway-latin.woff2') format('woff2');
	unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

@font-face {
	font-family: 'Prata';
	font-style: normal;
	font-weight: 400;
	font-display: swap;
	src: url('assets/fonts/prata-latin.woff2') format('woff2');
	unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

/* Typography roles: editorial display face for headings, contemporary sans
   for reading, interface and navigation. These selectors deliberately sit in
   the child theme so they supersede the font rules generated by the parent. */
:root {
	--fm-font-display: 'Cinzel', Georgia, serif;
	--fm-font-sans: 'Plus Jakarta Sans', Arial, Helvetica, sans-serif;
}

body,
body p,
body li,
body dt,
body dd,
body td,
body th,
body label,
body input,
body textarea,
body select,
body option,
body button,
body small,
body a,
body .button,
body .cmsmasters_button,
body .navigation > li > a,
body .top_line_nav > li > a {
	font-family: var(--fm-font-sans);
}

body h1,
body h2,
body h3,
body h4,
body h5,
body h6,
body h1 a,
body h2 a,
body h3 a,
body h4 a,
body h5 a,
body h6 a {
	font-family: var(--fm-font-display);
	font-style: normal;
	font-weight: 500;
}

@font-face {
	font-family: 'Playfair Display';
	font-style: normal;
	font-weight: 400;
	font-display: swap;
	src: url('assets/fonts/playfair-display-latin.woff2') format('woff2');
	unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

@font-face {
	font-family: 'Playfair Display';
	font-style: italic;
	font-weight: 400;
	font-display: swap;
	src: url('assets/fonts/playfair-display-latin-italic.woff2') format('woff2');
	unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

h1.cmsmasters_heading {
	font-size: clamp(2rem, 3vw, 3rem);
	text-wrap: balance;
}
h2.cmsmasters_heading {
	font-size: clamp(1.8rem, 2.5vw, 2.5rem);
	text-wrap: balance;
}
h3.cmsmasters_heading {
	font-size: clamp(1.6rem, 2.2vw, 2rem);
	text-wrap: balance;
}
h4.cmsmasters_heading {
	font-size: clamp(1.4rem, 2vw, 1.8rem);
	text-wrap: balance;
}
h5.cmsmasters_heading {
	font-size: clamp(1.2rem, 1.8vw, 1.6rem);
	text-wrap: balance;
}
h6.cmsmasters_heading {
	font-size: clamp(1rem, 1.5vw, 1.4rem);
	text-wrap: balance;
}

.cmsmasters_divider.cmsmasters_divider_width_short.cmsmasters_divider_pos_left {
	width: 32px;
}

.scouting-section-note {
	font-size: clamp(0.9rem, 1.2vw, 1rem);
	width: 100%;
	margin-bottom: 16px !important;
}

/* Model Gallery Layout */

/* Parent theme sets overflow (auto/hidden) on .middle_inner AND on <body>
   itself (via JS, likely for the fixed header). Any ancestor with overflow
   != visible becomes the sticky element's scroll reference — body has
   overflow set but never actually scrolls (html does), so sticky freezes
   relative to a container that never moves. Both overrides are required,
   scoped to single-project pages only. !important needed for body since
   the theme sets it via inline style (JS), which normal specificity can't beat. */
body.single-project {
	overflow: visible !important;
}

body.single-project .middle_inner {
	overflow: visible;
}

body.single-project h1.cmsmasters_project_title.entry-title {
	width: 100%;
	font-size: clamp(1.5rem, 2.5vw, 2rem);
}


.model_gallery_wrap {
	display: flex;
	align-items: flex-start;
	gap: 40px;
}

.model_gallery_sidebar {
	flex: 0 0 260px;
	max-width: 260px;
	position: sticky;
	/* Theme's fixed header is 120px tall (z-index 9999) once scrolled;
	   sticky offset must clear it or header covers the title/details. */
	top: 140px;
}

.model_gallery_grid {
	flex: 1 1 auto;
	column-gap: 16px;
	column-count: 3;
}

.model_gallery_cols_1 {
	column-count: 1;
}

.model_gallery_cols_2 {
	column-count: 2;
}

.model_gallery_cols_3 {
	column-count: 3;
}

.model_gallery_cols_4 {
	column-count: 4;
}

.model_gallery_item {
	break-inside: avoid;
	margin: 0 0 16px;
}

.model_gallery_item img {
	display: block;
	width: 100%;
	height: auto;
}

.model_gallery_item a {
	display: block;
}

@media (max-width: 991px) {
	.model_gallery_grid {
		column-count: 2;
	}
}

/* Model Info readability (measurements, tags, link — shared markup) */

.model_gallery_sidebar .project_details_title {
	font-size: 13px;
	font-weight: 600;
	text-transform: uppercase;
	letter-spacing: 0.06em;
	margin: 28px 0 10px;
}

.model_gallery_details_button {
	appearance: none;
	background: transparent;
	border: 0;
	color: inherit;
	font: inherit;
	letter-spacing: inherit;
	padding: 0;
	text-align: left;
	text-transform: inherit;
	width: 100%;
}

.model_gallery_sidebar .project_details,
.model_gallery_sidebar .project_features {
	display: flex;
	flex-direction: column;
}

.model_gallery_sidebar .project_details_item,
.model_gallery_sidebar .project_features_item {
	display: flex;
	align-items: baseline;
	justify-content: space-between;
	gap: 12px;
	padding: 9px 0;
	border-bottom: 1px solid rgba(120, 120, 120, 0.2);
	font-size: 13px;
	line-height: 1.4;
}

.model_gallery_sidebar .project_details_item:last-child,
.model_gallery_sidebar .project_features_item:last-child {
	border-bottom: none;
}

.model_gallery_sidebar .project_details_item_title,
.model_gallery_sidebar .project_features_item_title {
	opacity: 0.6;
	white-space: nowrap;
}

.model_gallery_sidebar .project_details_item_desc,
.model_gallery_sidebar .project_features_item_desc {
	font-weight: 600;
	text-align: right;
}

.model_gallery_sidebar .cmsmasters_project_tags a {
	display: inline-block;
}

/* The details panel is visual-only. Let taps pass through it to the existing
   full-image permalink underneath, including cards loaded with “Load more”. */
body.home .cmsmasters_wrap_portfolio[data-categories="men,women"] .cmsmasters_project_details,
body.page-id-12437 #portfolio_63e3ee31cd .cmsmasters_project_details,
body.page-id-12434 #portfolio_1bd802586d .cmsmasters_project_details {
	pointer-events: none;
}

/* On the category pages the parent theme normally limits the native project
   permalink to a 60px strip. Restore its full-image hit area so it remains
   available beneath the visual-only details panel. */
body.page-id-12437 #portfolio_63e3ee31cd .project_img_wrap.cmsmasters_info_enabled.cmsmasters_rollover_enabled .cmsmasters_img_rollover,
body.page-id-12434 #portfolio_1bd802586d .project_img_wrap.cmsmasters_info_enabled.cmsmasters_rollover_enabled .cmsmasters_img_rollover {
	height: 100%;
	top: 0;
}

/* These modules include the parent theme's rollover label, unlike the home
   portfolio. Keep its permalink as the full-card target without displaying a
   second call to action over the measurements. */
body.page-id-12437 #portfolio_63e3ee31cd .cmsmasters_open_post_link > span,
body.page-id-12434 #portfolio_1bd802586d .cmsmasters_open_post_link > span {
	display: none;
}

/* The theme otherwise reserves the bottom 60px for the rollover label.
   The details panel must occupy the same full image area as on the homepage. */
body.page-id-12437 #portfolio_63e3ee31cd .project_img_wrap.cmsmasters_info_enabled.cmsmasters_rollover_enabled .cmsmasters_project_details,
body.page-id-12434 #portfolio_1bd802586d .project_img_wrap.cmsmasters_info_enabled.cmsmasters_rollover_enabled .cmsmasters_project_details {
	height: 100%;
	bottom: 0;
}

/* Home portfolio: use the available viewport width while retaining a modest
   gutter. The module stays at four columns; Isotope recalculates card widths
   from this wider container, and its parent image-width cap is removed. */
body.home #cmsmasters_row_8cfdb183eb .cmsmasters_row_inner {
	width: 100%;
	max-width: none;
	padding: 0 40px;
}

body.home #cmsmasters_row_8cfdb183eb .cmsmasters_row_margin {
	margin: 0;
}

body.home #cmsmasters_row_8cfdb183eb .cmsmasters_column.one_first {
	width: 100%;
	margin: 0;
}

body.home #portfolio_51eab92304 .cmsmasters_project_grid .project_img_wrap {
	max-width: none;
}

/* Men and Women portfolios: match the home gallery's full-width row and
   gutters while leaving the rest of each page at its existing width. */
body.page-id-12437 #cmsmasters_row_b90e6dfb90 .cmsmasters_row_inner,
body.page-id-12434 #cmsmasters_row_0362f51730 .cmsmasters_row_inner {
	width: 100%;
	max-width: none;
	padding: 0 40px;
}

body.page-id-12437 #cmsmasters_row_b90e6dfb90 .cmsmasters_row_margin,
body.page-id-12434 #cmsmasters_row_0362f51730 .cmsmasters_row_margin {
	margin: 0;
}

body.page-id-12437 #cmsmasters_row_b90e6dfb90 .cmsmasters_column.one_first,
body.page-id-12434 #cmsmasters_row_0362f51730 .cmsmasters_column.one_first {
	width: 100%;
	margin: 0;
}

body.page-id-12437 #portfolio_63e3ee31cd .cmsmasters_project_grid .project_img_wrap,
body.page-id-12434 #portfolio_1bd802586d .cmsmasters_project_grid .project_img_wrap {
	max-width: none;
}

@media (max-width: 768px) {
	body.home #cmsmasters_row_8cfdb183eb .cmsmasters_row_inner,
	body.page-id-12437 #cmsmasters_row_b90e6dfb90 .cmsmasters_row_inner,
	body.page-id-12434 #cmsmasters_row_0362f51730 .cmsmasters_row_inner {
		padding: 0 20px;
	}
}

/* Keep the model grids generous on desktop without letting four cards become
   oversized on ultrawide displays. The surrounding row remains full-width. */
body.home #portfolio_51eab92304,
body.page-id-12437 #portfolio_63e3ee31cd,
body.page-id-12434 #portfolio_1bd802586d {
	max-width: 1440px;
	margin-left: auto;
	margin-right: auto;
}

/* CMSMasters treats project titles as a separate underline text style.
   Keep the card titles consistent with the site's undecorated link setting. */
.cmsmasters_project_grid .cmsmasters_project_header .cmsmasters_project_title a,
.cmsmasters_project_grid .cmsmasters_project_header .cmsmasters_project_title a:hover,
.cmsmasters_project_grid .cmsmasters_project_header .cmsmasters_project_title a:focus {
	text-decoration: none;
}

/* On touch-sized screens, the single-model gallery and model portfolios
   become horizontal peek carousels. Isotope still owns portfolio filtering
   and “Load more”; these overrides only neutralize desktop positioning while
   the user swipes through the cards. */
@media (max-width: 600px) {
	.model_gallery_wrap {
		flex-direction: column;
		align-items: stretch;
		gap: 24px;
	}

	.model_gallery_sidebar {
		position: static;
		flex: 1 1 auto;
		width: 100%;
		max-width: none;
	}

	.model_gallery_grid {
		column-count: auto;
		display: flex;
		gap: 12px;
		overflow-x: auto;
		overflow-y: visible;
		padding-bottom: 8px;
		scroll-behavior: smooth;
		scroll-snap-type: x mandatory;
		-webkit-overflow-scrolling: touch;
		overscroll-behavior-x: contain;
		scrollbar-width: none;
		touch-action: pan-x pan-y;
	}

	.model_gallery_grid::-webkit-scrollbar {
		display: none;
	}

	.model_gallery_item {
		aspect-ratio: 4 / 5;
		break-inside: auto;
		flex: 0 0 calc(100% - 64px);
		margin: 0;
		overflow: hidden;
		width: calc(100% - 64px);
		scroll-snap-align: start;
		scroll-snap-stop: always;
	}

	/* On touch screens, images are for direct horizontal exploration. The
	   model details remain available above and the desktop lightbox is intact. */
	.model_gallery_item a {
		height: 100%;
		pointer-events: none;
	}

	.model_gallery_item img {
		height: 100%;
		object-fit: cover;
	}

	body.home #portfolio_51eab92304 > .portfolio,
	body.page-id-12437 #portfolio_63e3ee31cd > .portfolio,
	body.page-id-12434 #portfolio_1bd802586d > .portfolio {
		display: flex;
		gap: 12px;
		height: auto !important;
		overflow-x: auto;
		overflow-y: visible;
		padding: 0 20px 8px;
		scroll-behavior: smooth;
		scroll-padding-inline: 20px;
		scroll-snap-type: x mandatory;
		-webkit-overflow-scrolling: touch;
		overscroll-behavior-x: contain;
		scrollbar-width: none;
		touch-action: pan-x pan-y;
	}

	body.home #portfolio_51eab92304 > .portfolio::-webkit-scrollbar,
	body.page-id-12437 #portfolio_63e3ee31cd > .portfolio::-webkit-scrollbar,
	body.page-id-12434 #portfolio_1bd802586d > .portfolio::-webkit-scrollbar {
		display: none;
	}

	body.home #portfolio_51eab92304 > .portfolio > article.project,
	body.page-id-12437 #portfolio_63e3ee31cd > .portfolio > article.project,
	body.page-id-12434 #portfolio_1bd802586d > .portfolio > article.project {
		float: none;
		/* Size against the carousel itself, rather than the viewport, so the
		   following card remains visible inside the portfolio's page gutter. */
		flex: 0 0 calc(100% - 64px);
		max-width: none;
		min-width: 0;
		padding: 0;
		position: relative !important;
		top: auto !important;
		left: auto !important;
		width: calc(100% - 64px) !important;
		-webkit-transform: none !important;
		-moz-transform: none !important;
		-ms-transform: none !important;
		transform: none !important;
		scroll-snap-align: start;
		scroll-snap-stop: always;
	}

	/* Model data is available on the single profile page. Hiding this
	   hover-oriented layer keeps an intentional swipe from exposing it. */
	body.home #portfolio_51eab92304 .cmsmasters_project_grid .cmsmasters_project_details,
	body.page-id-12437 #portfolio_63e3ee31cd .cmsmasters_project_grid .cmsmasters_project_details,
	body.page-id-12434 #portfolio_1bd802586d .cmsmasters_project_grid .cmsmasters_project_details {
		display: none !important;
	}

	/* Keep the full-image permalink tappable without its dark hover overlay
	   while swiping through the Men and Women portfolios. */
	body.page-id-12437 #portfolio_63e3ee31cd .cmsmasters_project_grid .cmsmasters_img_rollover_wrap .cmsmasters_open_post_link,
	body.page-id-12434 #portfolio_1bd802586d .cmsmasters_project_grid .cmsmasters_img_rollover_wrap .cmsmasters_open_post_link {
		background-color: transparent;
	}

	body.home #portfolio_51eab92304 > .portfolio > article.project:last-child,
	body.page-id-12437 #portfolio_63e3ee31cd > .portfolio > article.project:last-child,
	body.page-id-12434 #portfolio_1bd802586d > .portfolio > article.project:last-child {
		margin-right: 20px;
	}
}

@media (prefers-reduced-motion: reduce) {
	body.home #portfolio_51eab92304 > .portfolio,
	body.page-id-12437 #portfolio_63e3ee31cd > .portfolio,
	body.page-id-12434 #portfolio_1bd802586d > .portfolio {
		scroll-behavior: auto;
	}
}

@media (max-width: 600px) and (pointer: fine) {
	.model_gallery_grid,
	body.home #portfolio_51eab92304 > .portfolio,
	body.page-id-12437 #portfolio_63e3ee31cd > .portfolio,
	body.page-id-12434 #portfolio_1bd802586d > .portfolio {
		cursor: grab;
	}

	/* Do not allow the browser to start an image/link drag instead of the
	   carousel gesture. Project links remain normally clickable. */
	body.home #portfolio_51eab92304 .cmsmasters_project_grid img,
	body.page-id-12437 #portfolio_63e3ee31cd .cmsmasters_project_grid img,
	body.page-id-12434 #portfolio_1bd802586d .cmsmasters_project_grid img,
	body.home #portfolio_51eab92304 .cmsmasters_project_grid a,
	body.page-id-12437 #portfolio_63e3ee31cd .cmsmasters_project_grid a,
	body.page-id-12434 #portfolio_1bd802586d .cmsmasters_project_grid a {
		-webkit-user-drag: none;
		user-select: none;
	}

	.model_gallery_grid.is-mouse-dragging,
	body.home #portfolio_51eab92304 > .portfolio.is-mouse-dragging,
	body.page-id-12437 #portfolio_63e3ee31cd > .portfolio.is-mouse-dragging,
	body.page-id-12434 #portfolio_1bd802586d > .portfolio.is-mouse-dragging {
		cursor: grabbing;
		user-select: none;
	}

	/* While the mouse drives the carousel, let scrollLeft follow the pointer
	   directly; mandatory snapping resumes when the drag class is removed. */
	body.home #portfolio_51eab92304 > .portfolio.is-mouse-dragging,
	body.page-id-12437 #portfolio_63e3ee31cd > .portfolio.is-mouse-dragging,
	body.page-id-12434 #portfolio_1bd802586d > .portfolio.is-mouse-dragging {
		scroll-behavior: auto;
		scroll-snap-type: none;
	}
}

/* Boxed pages retain a visible outer gutter, then stop growing at 1440px.
   At smaller desktop widths the box follows the viewport rather than causing
   horizontal overflow. */
@media (min-width: 1025px) {
	#page.cmsmasters_boxed,
	#page.cmsmasters_boxed #header,
	#page.cmsmasters_boxed #footer {
		width: min(1440px, calc(100% - 80px));
	}
}

/* Builder rows configured as “boxed” use the theme's 1200px inner
   container. Widen only those rows on large displays; genuine full-width
   rows, such as the hero, remain unrestricted. */
@media (min-width: 1440px) {
	#middle .cmsmasters_row_inner:not(.cmsmasters_row_fullwidth) {
		width: min(1440px, calc(100% - 80px));
	}

	/* Single Project, About and Scouting are PHP templates rather than
	   composer rows, so they do not inherit the widened row rule above. Give
	   their normal content wrappers the same 1440px ceiling used elsewhere. */
	body.single-project .content_wrap,
	body.page-id-529 .content_wrap,
	body.page-id-12505 .content_wrap {
		width: min(1440px, calc(100% - 80px));
	}
}

/* The parent theme clips .middle_inner. These two templates deliberately
   let their hero and section backgrounds expand to the 1920px full-bleed
   ceiling, so only their immediate wrapper may remain visible. */
body.page-id-529 .middle_inner,
body.page-id-12505 .middle_inner {
	overflow: visible;
}

/* Global type scale. The parent theme's generated font rules use 13px for
   desktop body copy (and for all anchors); keep dense UI roles on their own
   parent-defined sizes, while making ordinary reading copy comfortable. */
body {
	font-size: 16px;
	line-height: 26px;
}

/* CMSMasters text blocks are the editorial body copy used by the builder.
   Limit the larger reading size to direct prose, so custom components such
   as the Scouting layout and the portfolio keep their established scales. */
#middle .cmsmasters_text > p,
#middle .cmsmasters_text > ul > li,
#middle .cmsmasters_text > ol > li {
	font-size: 17px;
	line-height: 28px;
}

#middle .cmsmasters_text > p a,
#middle .cmsmasters_text > ul > li a,
#middle .cmsmasters_text > ol > li a {
	font-size: inherit;
	line-height: inherit;
}

/* Custom footer — the child template retains the configured social links and
   menu, while giving them a clearer hierarchy than the parent default. */
#footer.cmsmasters_footer_custom {
	background: #f1f0ee;
	color: #252525;
}

#footer.cmsmasters_footer_custom .footer_inner {
	max-width: none;
	padding: 0;
}

#footer.cmsmasters_footer_custom .footer_in_inner {
	max-width: 1440px;
	margin: 0 auto;
	padding: 64px 40px 26px;
}

.cmsmasters_footer_custom .footer_custom__main {
	display: grid;
	grid-template-columns: minmax(210px, 1.2fr) minmax(120px, .5fr) minmax(170px, .7fr) minmax(190px, .7fr);
	grid-template-areas: 'brand navigation contact actions';
	gap: 40px;
	align-items: start;
}

.cmsmasters_footer_custom .footer_custom__brand {
	grid-area: brand;
}

.cmsmasters_footer_custom .footer_custom__navigation {
	grid-area: navigation;
}

.cmsmasters_footer_custom .footer_custom__contact {
	grid-area: contact;
}

.cmsmasters_footer_custom .footer_custom__actions {
	grid-area: actions;
}

.cmsmasters_footer_custom .footer_logo {
	display: inline-block;
	margin: 0 0 28px;
	line-height: 0;
}

.cmsmasters_footer_custom .footer_logo > img {
	display: block;
	width: 199px;
	max-width: 100%;
	height: auto;
}

.cmsmasters_footer_custom .footer_custom__brand p {
	max-width: 31ch;
	margin: 0;
	font-size: 16px;
	line-height: 1.65;
}

.cmsmasters_footer_custom .footer_custom__menu {
	margin: 0;
	padding: 0;
	list-style: none;
}

.cmsmasters_footer_custom .footer_custom__menu li {
	margin: 0 0 10px;
	padding: 0;
}

.cmsmasters_footer_custom .footer_custom__menu a,
.cmsmasters_footer_custom .footer_custom__contact a,
.cmsmasters_footer_custom .footer_custom__bottom a {
	color: inherit;
	font-size: 14px;
	line-height: 1.45;
	text-decoration: none;
}

.cmsmasters_footer_custom .footer_custom__menu a:hover,
.cmsmasters_footer_custom .footer_custom__menu a:focus-visible,
.cmsmasters_footer_custom .footer_custom__contact a:hover,
.cmsmasters_footer_custom .footer_custom__contact a:focus-visible,
.cmsmasters_footer_custom .footer_custom__bottom a:hover,
.cmsmasters_footer_custom .footer_custom__bottom a:focus-visible {
	text-decoration: underline;
	text-decoration-thickness: 1px;
	text-underline-offset: 4px;
}

.cmsmasters_footer_custom .footer_custom__contact {
	font-size: 14px;
	font-style: normal;
	line-height: 1.7;
}

.cmsmasters_footer_custom .footer_custom__cta {
	display: inline-block;
	padding: 14px 20px;
	background: #202020;
	border: 1px solid #202020;
	color: #fff;
	font-size: 12px;
	font-weight: 700;
	letter-spacing: .05em;
	line-height: 1.2;
	text-decoration: none;
	text-transform: uppercase;
	transition: background-color .2s ease, border-color .2s ease, color .2s ease;
}

.cmsmasters_footer_custom .footer_custom__cta:hover,
.cmsmasters_footer_custom .footer_custom__cta:focus-visible {
	background: transparent;
	border-color: #202020;
	color: #202020;
}

.cmsmasters_footer_custom .social_wrap {
	margin: 26px 0 0;
	height: auto;
}

.cmsmasters_footer_custom .social_wrap_inner {
	height: auto;
	text-align: left;
}

.cmsmasters_footer_custom .social_wrap_inner::after {
	content: none;
}

.cmsmasters_footer_custom .social_wrap li {
	margin: 0 14px 0 0;
}

.cmsmasters_footer_custom .social_wrap a {
	width: 24px;
	height: 26px;
	font-size: 20px;
	line-height: 26px;
}

.cmsmasters_footer_custom .footer_custom__bottom {
	display: flex;
	justify-content: space-between;
	gap: 24px;
	margin-top: 64px;
	padding-top: 18px;
	border-top: 1px solid rgba(37, 37, 37, .3);
}

.cmsmasters_footer_custom .footer_copyright {
	display: flex;
	flex-wrap: wrap;
	column-gap: 8px;
	font-size: 13px;
	line-height: 1.45;
}

/* Copyright, company name and VAT number sit on one line separated by dots;
   on phones they stack instead, so no line starts with a stray separator. */
.cmsmasters_footer_custom .footer_copyright > span + span::before {
	content: '·';
	margin-right: 8px;
}

@media (max-width: 600px) {
	.cmsmasters_footer_custom .footer_copyright {
		flex-direction: column;
	}

	.cmsmasters_footer_custom .footer_copyright > span + span::before {
		content: none;
	}
}

.cmsmasters_footer_custom .footer_custom__legal {
	display: flex;
	flex-wrap: wrap;
	gap: 18px;
}

/* A four-column footer needs more room than a tablet viewport provides.
   Switch to two balanced rows before any content has to shrink or collide. */
@media (max-width: 1100px) {
	.cmsmasters_footer_custom .footer_custom__main {
		grid-template-columns: repeat(2, minmax(0, 1fr));
		grid-template-areas:
			'brand navigation'
			'contact actions';
		column-gap: 64px;
		row-gap: 42px;
	}
}

@media (max-width: 768px) {
	#footer.cmsmasters_footer_custom .footer_in_inner {
		padding: 48px 30px 22px;
	}

	.cmsmasters_footer_custom .footer_custom__main {
		grid-template-columns: 1fr;
		grid-template-areas:
			'brand'
			'navigation'
			'contact'
			'actions';
		gap: 34px;
	}

	.cmsmasters_footer_custom .footer_custom__bottom {
		flex-direction: column;
		gap: 10px;
		margin-top: 48px;
	}
}

/* CMSMasters derives logo dimensions from WordPress attachment metadata.
   SVG uploads have no raster dimensions there, so the parent theme outputs
   width: 0px. Keep the logo's established 199px desktop width and apply the
   same safeguard to the footer for when this SVG is selected there too. */
#header .header_mid .header_mid_inner .logo_wrap {
	width: 199px;
}

#header .header_mid .logo_wrap .logo > img,
.cmsmasters_footer_default .footer_logo > img {
	width: 199px;
	max-width: 100%;
	height: auto;
}

#header .header_mid .logo_wrap .logo > img.logo_retina {
	max-width: 199px;
}

/* The parent theme shortens .header_mid from 120px to 80px while scrolling.
   Its absolute image positioning keeps the SVG width fixed and compresses it
   vertically. Use a left-aligned flex row so the logo scales proportionally
   and retains a small, even vertical clearance in the compact header. */
@media (min-width: 1025px) {
	#header .header_mid .header_mid_inner .logo_wrap {
		display: flex;
		align-items: center;
	}

	#header .header_mid .logo_wrap:after {
		display: none;
	}

	#header .header_mid .logo_wrap .logo {
		display: block;
		line-height: 0;
	}

	#header .header_mid .logo_wrap .logo > img {
		position: static;
		width: 199px;
		height: auto;
		max-width: 100%;
		max-height: none;
		margin: 0 !important;
		transform: scale(1);
		transform-origin: left center;
		transition: transform 200ms cubic-bezier(0.23, 1, 0.32, 1);
	}
	

	#header:has(.header_mid) {
		background-color: rgba(255, 255, 255, 1);
		transition: background-color 200ms cubic-bezier(0.23, 1, 0.32, 1);
	}

	#header .header_mid.header_mid_scroll .logo_wrap .logo > img {
		transform: scale(0.6834);
	}

/* 	#header .header_mid.header_mid_scroll {
		background-color: transparent;
		transition: background-color 200ms cubic-bezier(0.23, 1, 0.32, 1);
	} */

	@media (prefers-reduced-motion: reduce) {
		#header .header_mid .logo_wrap .logo > img,
		#header .header_mid.header_mid_scroll {
			transition-duration: 1ms;
		}
	}
}

@media (max-width: 600px) {
	#header .header_mid .header_mid_inner .logo_wrap {
		width: 155px;
	}

	#header .header_mid .logo_wrap .logo > img,
	.cmsmasters_footer_default .footer_logo > img {
		width: 155px;
	}

	#header .header_mid .logo_wrap .logo > img.logo_retina {
		max-width: 155px;
	}
}

/* Mobile and tablet navigation keep the logo and trigger on one row. The panel lives
   under <body>, outside the parent's clipped header containers. */
.fm-mobile-menu,
.fm-mobile-menu-toggle {
	display: none;
}

@media (max-width: 1024px) {
	body.fm-mobile-menu-ready #header .header_mid,
	body.fm-mobile-menu-ready #header .header_mid .header_mid_outer {
		height: auto !important;
		overflow: visible;
	}

	body.fm-mobile-menu-ready #header .header_mid .header_mid_inner {
		display: flex;
		align-items: center;
		justify-content: space-between;
		min-height: 88px;
		padding: 10px 20px;
	}

	body.fm-mobile-menu-ready #header .header_mid .header_mid_inner:after {
		display: none;
	}

	body.fm-mobile-menu-ready #header .header_mid .header_mid_inner .logo_wrap {
		display: flex;
		align-items: center;
		align-self: center;
		flex: 0 0 130px;
		width: 130px;
		height: auto;
		float: none;
		margin: 0;
		text-align: left;
	}

	body.fm-mobile-menu-ready #header .header_mid .logo_wrap:after {
		display: none;
	}

	body.fm-mobile-menu-ready #header .header_mid .logo_wrap .logo {
		display: block;
		line-height: 0;
	}

	body.fm-mobile-menu-ready #header .header_mid .logo_wrap .logo > img {
		display: block;
		position: static;
		width: 130px;
		max-width: 100%;
		max-height: none;
		height: auto;
		margin: 0 !important;
	}

	body.fm-mobile-menu-ready #header .header_mid .logo_wrap .logo > img.logo_retina,
	body.fm-mobile-menu-ready #header .header_mid .social_wrap,
	body.fm-mobile-menu-ready #header .header_mid .resp_mid_nav_wrap,
	body.fm-mobile-menu-ready #header .header_mid .mid_nav_wrap {
		display: none !important;
	}

	body.fm-mobile-menu-ready #header .header_mid .fm-mobile-menu-toggle {
		display: flex;
		align-items: center;
		justify-content: center;
		flex: 0 0 44px;
		width: 44px;
		height: 44px;
		padding: 0;
		border: 0;
		background: transparent;
		color: #1b1b1b;
		cursor: pointer;
	}

	.fm-mobile-menu-toggle__lines,
	.fm-mobile-menu-toggle__lines:before,
	.fm-mobile-menu-toggle__lines:after {
		display: block;
		width: 22px;
		height: 2px;
		background: currentColor;
	}

	.fm-mobile-menu-toggle__lines {
		position: relative;
	}

	.fm-mobile-menu-toggle__lines:before,
	.fm-mobile-menu-toggle__lines:after {
		content: '';
		position: absolute;
		left: 0;
	}

	.fm-mobile-menu-toggle__lines:before { top: -7px; }
	.fm-mobile-menu-toggle__lines:after { top: 7px; }

	.fm-mobile-menu {
		--fm-menu-ease: cubic-bezier(0.23, 1, 0.32, 1);
		--fm-menu-ink: #1b1b1b;
		position: fixed;
		inset: 0;
		z-index: 100000;
		box-sizing: border-box;
		width: 100%;
		height: 100vh;
		height: 100dvh;
		padding: max(16px, env(safe-area-inset-top)) 22px max(28px, env(safe-area-inset-bottom));
		overflow-y: auto;
		overscroll-behavior: contain;
		background: #fff;
		color: var(--fm-menu-ink);
		text-align: center;
		opacity: 0;
		pointer-events: none;
		transition: opacity 220ms var(--fm-menu-ease);
	}

	.fm-mobile-menu:not([hidden]) {
		display: flex;
		flex-direction: column;
		align-items: center;
	}

	.fm-mobile-menu.is-open {
		opacity: 1;
		pointer-events: auto;
	}

	/* Entrance: each block fades up in sequence; on close everything leaves together. */
	.fm-mobile-menu__brand,
	.fm-mobile-menu__list > li,
	.fm-mobile-menu__social,
	.fm-mobile-menu__secondary > li {
		opacity: 0;
		transform: translateY(10px);
		transition: opacity 160ms var(--fm-menu-ease), transform 160ms var(--fm-menu-ease);
	}

	.fm-mobile-menu.is-open .fm-mobile-menu__brand,
	.fm-mobile-menu.is-open .fm-mobile-menu__list > li,
	.fm-mobile-menu.is-open .fm-mobile-menu__social,
	.fm-mobile-menu.is-open .fm-mobile-menu__secondary > li {
		opacity: 1;
		transform: none;
		transition-duration: 420ms;
		transition-delay: calc(60ms + var(--fm-i, 0) * 40ms);
	}

	.fm-mobile-menu .fm-mobile-menu__close {
		position: absolute;
		top: max(12px, env(safe-area-inset-top));
		right: 12px;
		display: flex;
		align-items: center;
		justify-content: center;
		width: 44px;
		height: 44px;
		padding: 0;
		border: 0;
		background: transparent;
		color: var(--fm-menu-ink);
		cursor: pointer;
	}

	.fm-mobile-menu__close span {
		position: relative;
		display: block;
		width: 22px;
		height: 22px;
	}

	.fm-mobile-menu__close span:before,
	.fm-mobile-menu__close span:after {
		content: '';
		position: absolute;
		top: 10px;
		left: 0;
		width: 22px;
		height: 2px;
		background: currentColor;
	}

	.fm-mobile-menu__close span:before { transform: rotate(45deg); }
	.fm-mobile-menu__close span:after { transform: rotate(-45deg); }

	.fm-mobile-menu__brand {
		display: block;
		width: min(72vw, 320px);
		margin-top: 44px;
		line-height: 0;
	}

	.fm-mobile-menu__brand img {
		display: block;
		width: 100%;
		height: auto;
	}

	/* The parent theme sets nav { height: 100% }, which would stretch both navs
	   to the full overlay height. */
	.fm-mobile-menu nav {
		height: auto;
	}

	.fm-mobile-menu__nav {
		display: flex;
		flex: 1 0 auto;
		align-items: center;
		justify-content: center;
		width: 100%;
		margin: 32px 0;
	}

	.fm-mobile-menu__list,
	.fm-mobile-menu__list li,
	.fm-mobile-menu__secondary,
	.fm-mobile-menu__secondary li {
		list-style: none;
		margin: 0;
		padding: 0;
	}

	.fm-mobile-menu__list li:before,
	.fm-mobile-menu__secondary li:before {
		display: none;
		content: none;
	}

	.fm-mobile-menu__list > li > a,
	.fm-mobile-menu__secondary > li > a {
		display: block;
		color: var(--fm-menu-ink);
		text-align: center;
		font-family: 'Plus Jakarta Sans', 'Helvetica Neue', Arial, sans-serif;
		font-weight: 800;
		text-decoration: none;
		text-transform: uppercase;
		transition: transform 200ms var(--fm-menu-ease);
	}

	.fm-mobile-menu__list > li > a {
		padding: 2px 0;
		font-size: clamp(44px, 14vw, 72px);
		line-height: 1;
		letter-spacing: -0.03em;
	}

	.fm-mobile-menu__secondary > li > a {
		padding: 3px 0;
		font-size: 18px;
		line-height: 1.2;
		letter-spacing: 0.01em;
	}

	/* Current page reads as outlined text. The stroke is painted under a fill in
	   the background colour, so only its outer half shows and the overlapping
	   contours of the variable font stay hidden. */
	.fm-mobile-menu__list > li.current-menu-item > a,
	.fm-mobile-menu__list > li.current-menu-ancestor > a,
	.fm-mobile-menu__secondary > li.current-menu-item > a,
	.fm-mobile-menu__secondary > li.current-menu-ancestor > a {
		color: #fff;
		-webkit-text-stroke: 3px var(--fm-menu-ink);
		paint-order: stroke fill;
	}

	.fm-mobile-menu__secondary > li.current-menu-item > a,
	.fm-mobile-menu__secondary > li.current-menu-ancestor > a {
		-webkit-text-stroke-width: 1.5px;
	}

	.fm-mobile-menu__footer {
		display: flex;
		flex-direction: column;
		align-items: center;
		gap: 14px;
	}

	.fm-mobile-menu__social {
		display: flex;
		justify-content: center;
		gap: 0;
	}

	/* 36px wide hit areas around 24px icons leave a 12px visual gap. */
	.fm-mobile-menu__social a {
		display: flex;
		align-items: center;
		justify-content: center;
		min-width: 36px;
		height: 44px;
		color: var(--fm-menu-ink);
		font-size: 12px;
		font-weight: 600;
		letter-spacing: .08em;
		text-decoration: none;
		text-transform: uppercase;
	}

	.fm-mobile-menu__social svg {
		display: block;
		width: 24px;
		height: 24px;
	}

	.fm-mobile-menu :is(a, button):focus-visible,
	#header .header_mid .fm-mobile-menu-toggle:focus-visible {
		outline: 2px solid var(--fm-menu-ink, #1b1b1b);
		outline-offset: 4px;
	}

	html.fm-mobile-menu-open,
	body.fm-mobile-menu-open {
		overflow: hidden;
	}

}

/* Hover lift only where a real pointer can hover: on touch screens a tapped
   link would otherwise stay lifted. */
@media (max-width: 1024px) and (hover: hover) and (pointer: fine) {
	.fm-mobile-menu__list > li > a:hover,
	.fm-mobile-menu__secondary > li > a:hover {
		transform: translateY(-2px);
	}
}

@media (max-width: 1024px) and (prefers-reduced-motion: reduce) {
	.fm-mobile-menu__list > li > a,
	.fm-mobile-menu__secondary > li > a {
		transition: none;
		transform: none !important;
	}

	.fm-mobile-menu {
		transition-duration: 120ms;
	}

	.fm-mobile-menu__brand,
	.fm-mobile-menu__list > li,
	.fm-mobile-menu__social,
	.fm-mobile-menu__secondary > li,
	.fm-mobile-menu.is-open .fm-mobile-menu__brand,
	.fm-mobile-menu.is-open .fm-mobile-menu__list > li,
	.fm-mobile-menu.is-open .fm-mobile-menu__social,
	.fm-mobile-menu.is-open .fm-mobile-menu__secondary > li {
		opacity: 1;
		transform: none;
		transition: none;
	}
}

/* Measurements accordion — mobile only. The collapse/expand rules live
   entirely inside this media query, so at wider widths the content is
   always visible and the toggle has no effect — nothing to override per
   breakpoint, the query itself is the gate. */
@media (max-width: 600px) {
	.model_gallery_details_toggle .project_details_title {
		margin: 20px 0 0;
	}

	.model_gallery_details_toggle .model_gallery_details_button {
		cursor: pointer;
		position: relative;
		padding: 12px 34px 12px 14px;
		background: rgba(120, 120, 120, 0.08);
		border-radius: 6px;
	}

	.model_gallery_details_toggle .model_gallery_details_button:hover {
		color: var(--fm-accent);
	}

	.model_gallery_details_toggle .model_gallery_details_button::after {
		content: '';
		position: absolute;
		right: 15px;
		top: 50%;
		width: 7px;
		height: 7px;
		border-right: 2px solid currentColor;
		border-bottom: 2px solid currentColor;
		transform: translateY(-70%) rotate(45deg);
		transition: transform 0.2s ease;
	}

	.model_gallery_details_toggle.is-open .model_gallery_details_button::after {
		transform: translateY(-30%) rotate(225deg);
	}

	.model_gallery_details_toggle.is-js-enabled .project_details {
		display: none;
		padding-top: 14px;
	}

	.model_gallery_details_toggle.is-js-enabled.is-open .project_details {
		display: flex;
	}
}


header .social_wrap a::before {
	font-size: 20px;
}

/* Shared editorial page primitives used by the About and Scouting templates. */
.fm-editorial {
	--fm-ink: #242321;
	--fm-paper: #f2f2f2;
	--fm-accent: #797979;
	/* Lighter tint for small text on --fm-ink sections, where #797979 would
	   drop below 4.5:1 contrast. */
	--fm-accent-on-dark: #a8a8a8;
	--fm-line: rgba(36, 35, 33, .22);
	max-width: 100%;
	background: #fff;
	color: var(--fm-ink);
}

.fm-editorial h1,
.fm-editorial h2,
.fm-editorial h3,
.fm-editorial p {
	margin-top: 0;
}

.fm-editorial__full-bleed {
	width: min(1920px, 100vw);
	margin-left: 50%;
	transform: translateX(-50%);
}

.fm-editorial__frame {
	width: calc(100% - 56px);
	max-width: 1440px;
	margin-right: auto;
	margin-left: auto;
}

@media (min-width: 701px) {
	.fm-editorial__frame {
		width: calc(100% - 12vw);
	}
}

.fm-editorial__hero {
	display: flex;
	align-items: flex-end;
	min-height: min(720px, calc(100vh - 120px));
	color: #fff;
}

.fm-editorial__hero-copy {
	max-width: 1440px;
}

.fm-editorial__eyebrow {
	margin: 0 0 18px;
	padding: 0;
	color: var(--fm-accent);
	font-size: 11px;
	font-weight: 700;
	letter-spacing: .15em;
	line-height: 1.3;
	text-transform: uppercase;
}

.fm-editorial__hero .fm-editorial__eyebrow {
	color: rgba(255, 255, 255, .82);
}

.fm-editorial h1 {
	margin-bottom: 26px;
	color: inherit;
	font-size: clamp(46px, 5.6vw, 82px);
	font-weight: 400;
	letter-spacing: -.045em;
	line-height: .95;
}

.fm-editorial__lede {
	margin-bottom: 0;
	font-size: clamp(17px, 1.4vw, 20px);
	line-height: 1.55;
}

.fm-editorial__hero-actions {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 24px;
	margin-top: 36px;
}

.fm-editorial__button {
	display: inline-block;
	padding: 17px 24px;
	background: var(--fm-ink);
	border: 1px solid var(--fm-ink);
	color: #fff;
	font-size: 11px;
	font-weight: 700;
	letter-spacing: .1em;
	line-height: 1;
	text-decoration: none;
	text-transform: uppercase;
	transition: background-color .2s ease, border-color .2s ease, color .2s ease;
}

.fm-editorial__button:hover,
.fm-editorial__button:focus-visible {
	background: var(--fm-accent);
	border-color: var(--fm-accent);
	color: #fff;
}

.fm-editorial__button--light {
	background: #fff;
	border-color: #fff;
	color: var(--fm-ink);
}

.fm-editorial__text-link {
	color: #fff;
	font-size: 13px;
	text-decoration: underline;
	text-decoration-thickness: 1px;
	text-underline-offset: 5px;
}

.fm-editorial__facts {
	padding-top: 34px;
	padding-bottom: 34px;
	border-bottom: 1px solid var(--fm-line);
	background: #fff;
}

.fm-editorial__facts-grid {
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	gap: 24px;
}

.fm-editorial__facts-grid div {
	display: grid;
	gap: 5px;
}

.fm-editorial__facts-grid span {
	font-size: 13px;
	line-height: 1.4;
}

.fm-editorial__section {
	padding-top: clamp(78px, 10vw, 150px);
	padding-bottom: clamp(78px, 10vw, 150px);
}

.fm-editorial__split {
	display: grid;
	grid-template-columns: minmax(0, 1.1fr) minmax(290px, .9fr);
	gap: clamp(48px, 10vw, 160px);
}

.fm-editorial h2 {
	margin-bottom: 0;
	font-size: clamp(36px, 4vw, 62px);
	font-weight: 400;
	letter-spacing: -.045em;
	line-height: 1.01;
}

.fm-editorial__body-copy {
	align-self: end;
	max-width: 520px;
	font-size: 17px;
	line-height: 1.7;
}

.fm-editorial__body-copy p + p {
	margin-top: 25px;
}

.fm-editorial__steps {
	display: grid;
	gap: 26px;
	margin: clamp(48px, 6vw, 84px) 0 0;
	padding: 0;
	list-style: none;
}

.fm-editorial__steps li {
	/* Override the parent theme's generic list spacing and first-item reset. */
	align-self: start;
	box-sizing: border-box;
	margin: 0 !important;
	padding-top: 18px !important;
	transform: none;
	border-top: 1px solid var(--fm-ink);
}

.fm-editorial__steps span {
	display: block;
	margin-bottom: 16px;
	color: var(--fm-accent);
	font-size: 24px;
	font-weight: 700;
	letter-spacing: .12em;
}

.fm-editorial__steps h3 {
	margin-bottom: 12px;
	font-size: 25px;
	font-weight: 400;
	line-height: 1.1;
}

.fm-editorial__steps p {
	margin-bottom: 0;
	font-size: 15px;
	line-height: 1.6;
}

@media (max-width: 700px) {
	.fm-editorial__facts-grid,
	.fm-editorial__split,
	.fm-editorial .fm-editorial__steps {
		grid-template-columns: 1fr;
	}

	.fm-editorial__facts-grid,
	.fm-editorial .fm-editorial__steps {
		gap: 28px;
	}

	.fm-editorial .fm-editorial__steps span {
		margin-bottom: 18px;
	}
}

.share_posts a {
	text-decoration: none;
}
