/* ==========================================================================
   TWFG Modern - editorial homepage direction
   ========================================================================== */

:root {
	--twfg-pink: #d33699;
	--twfg-light-lavender: #d8dcff;
	--twfg-lavender: #aeadf0;
	--twfg-plum: #34113f;
	--twfg-black: #000000;
	--twfg-ink: #241d29;
	--twfg-muted: #6e6472;
	--twfg-paper: #fbf9fc;
	--twfg-white: #ffffff;
	--twfg-border: rgba(52, 17, 63, 0.16);
	--twfg-sans: "Josefin Sans", "Trebuchet MS", Arial, sans-serif;
	--twfg-body: "Now", "Helvetica Neue", Arial, sans-serif;
	--twfg-serif: "Times New Roman MT", "Times New Roman", Times, Georgia, serif;
	--twfg-content-max: 1280px;
	--twfg-content-gutter: clamp(16px, 4vw, 64px);
	--twfg-content-edge: max(
		var(--twfg-content-gutter),
		calc(50vw - 640px)
	);
}

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

html {
	scroll-behavior: smooth;
}

body {
	background: var(--twfg-white);
	color: var(--twfg-ink);
}

a,
button,
input {
	-webkit-tap-highlight-color: transparent;
}

a:focus-visible,
button:focus-visible,
input:focus-visible {
	outline: 3px solid var(--twfg-pink);
	outline-offset: 4px;
}

.screen-reader-text {
	border: 0;
	clip: rect(1px, 1px, 1px, 1px);
	clip-path: inset(50%);
	height: 1px;
	margin: -1px;
	overflow: hidden;
	padding: 0;
	position: absolute;
	width: 1px;
	word-wrap: normal !important;
}

.twfg-container {
	margin-left: auto;
	margin-right: auto;
	max-width: 1220px;
	padding-left: 32px;
	padding-right: 32px;
	width: 100%;
}

/* The homepage uses one shared content boundary; archive/search surfaces keep
   their existing container sizing until they are intentionally refined. */
body.home .twfg-container {
	max-width: var(--twfg-content-max);
	padding-left: 0;
	padding-right: 0;
	width: min(
		var(--twfg-content-max),
		calc(100% - var(--twfg-content-gutter) - var(--twfg-content-gutter))
	);
}

.twfg-header,
.twfg-header *,
.twfg-mobile-menu,
.twfg-mobile-menu *,
.twfg-homepage,
.twfg-homepage *,
.twfg-site-footer,
.twfg-site-footer * {
	box-sizing: border-box;
}

/* Header and navigation */

.twfg-header {
	background: var(--twfg-white);
	border-bottom: 1px solid var(--twfg-border);
	position: relative;
	z-index: 100;
}

.twfg-header__inner {
	align-items: center;
	display: grid;
	gap: 28px;
	grid-template-columns: minmax(220px, 1fr) auto minmax(220px, 1fr);
	margin: 0 auto;
	max-width: none;
	min-height: 88px;
	padding: 12px var(--twfg-content-edge);
	position: relative;
	width: 100%;
}

.twfg-header__brand {
	align-items: center;
	color: var(--twfg-plum);
	display: inline-flex;
	gap: 0;
	justify-self: start;
	text-decoration: none;
}

.twfg-header__logo {
	display: block;
	height: 84px;
	max-width: 84px;
	object-fit: contain;
	width: 84px;
}

.twfg-header__wordmark {
	font-family: var(--twfg-serif);
	font-size: 1.18rem;
	line-height: 1.05;
}

.twfg-header__nav {
	left: 50%;
	position: absolute;
	justify-self: center;
	top: 50%;
	transform: translate(-50%, -50%);
}

.twfg-menu,
.twfg-menu ul {
	list-style: none;
	margin: 0;
	padding: 0;
}

.twfg-menu {
	align-items: center;
	display: flex;
	gap: clamp(16px, 2.3vw, 34px);
}

.twfg-menu > li {
	position: relative;
}

.twfg-menu > li > a {
	align-items: center;
	color: var(--twfg-plum);
	display: inline-flex;
	font-family: var(--twfg-sans);
	font-size: 0.74rem;
	font-weight: 700;
	letter-spacing: 0.1em;
	line-height: 1.2;
	min-height: 36px;
	padding: 8px 0;
	text-decoration: none;
	text-transform: uppercase;
	white-space: nowrap;
}

.twfg-menu > li > a:hover,
.twfg-menu > li > a:focus,
.twfg-menu > li.current-menu-item > a,
.twfg-menu > li.current-menu-ancestor > a,
.twfg-menu > li.twfg-more-menu-item.is-open > a {
	color: var(--twfg-pink);
}

.twfg-menu > li.menu-item-has-children > a::after {
	border-bottom: 1px solid currentColor;
	border-right: 1px solid currentColor;
	content: "";
	display: inline-block;
	height: 6px;
	margin-left: 9px;
	transform: rotate(45deg) translateY(-2px);
	width: 6px;
}

.twfg-menu .sub-menu {
	background: var(--twfg-white);
	border: 1px solid var(--twfg-border);
	left: 50%;
	min-width: 235px;
	opacity: 0;
	position: absolute;
	top: calc(100% + 8px);
	transform: translate(-50%, -6px);
	transition: opacity 160ms ease, transform 160ms ease, visibility 160ms ease;
	visibility: hidden;
	width: max-content;
	z-index: 110;
}

.twfg-menu > li.menu-item-has-children:hover > .sub-menu,
.twfg-menu > li.menu-item-has-children:focus-within > .sub-menu,
.twfg-menu > li.menu-item-has-children.is-open > .sub-menu {
	opacity: 1;
	transform: translate(-50%, 0);
	visibility: visible;
}

.twfg-menu .sub-menu li {
	border-bottom: 1px solid rgba(52, 17, 63, 0.1);
}

.twfg-menu .sub-menu li:last-child {
	border-bottom: 0;
}

.twfg-menu .sub-menu a {
	color: var(--twfg-plum);
	display: block;
	font-family: var(--twfg-sans);
	font-size: 0.73rem;
	font-weight: 700;
	letter-spacing: 0.06em;
	line-height: 1.3;
	padding: 14px 17px;
	text-decoration: none;
	text-transform: uppercase;
	white-space: normal;
}

.twfg-menu .sub-menu a:hover,
.twfg-menu .sub-menu a:focus {
	background: var(--twfg-light-lavender);
	color: var(--twfg-plum);
}

.twfg-header__actions {
	align-items: center;
	display: flex;
	gap: 14px;
	grid-column: -1;
	justify-content: flex-end;
}

.twfg-search {
	position: relative;
}

.twfg-search__toggle,
.twfg-menu-toggle,
.twfg-mobile-menu__close {
	align-items: center;
	background: transparent;
	border: 0;
	color: var(--twfg-plum);
	cursor: pointer;
	display: inline-flex;
	justify-content: center;
	padding: 8px;
}

.twfg-search__toggle {
	padding-right: 0;
}

.twfg-search__toggle:hover,
.twfg-search__toggle:focus,
.twfg-menu-toggle:hover,
.twfg-menu-toggle:focus,
.twfg-mobile-menu__close:hover,
.twfg-mobile-menu__close:focus {
	color: var(--twfg-pink);
}

.twfg-search__toggle svg {
	fill: none;
	height: 22px;
	stroke: currentColor;
	stroke-linecap: round;
	stroke-linejoin: round;
	stroke-width: 1.8;
	width: 22px;
}

.twfg-search__panel {
	background: var(--twfg-white);
	border: 1px solid var(--twfg-border);
	display: flex;
	gap: 4px;
	padding: 8px;
	position: absolute;
	right: 0;
	top: calc(100% + 14px);
	width: min(300px, 80vw);
	z-index: 120;
}

.twfg-search__panel input {
	background: transparent;
	border: 0;
	color: var(--twfg-ink);
	font-family: var(--twfg-sans);
	font-size: 0.86rem;
	min-width: 0;
	padding: 8px 9px;
	width: 100%;
}

.twfg-search__panel input:focus {
	outline: 2px solid var(--twfg-lavender);
	outline-offset: -2px;
}

.twfg-search__panel button {
	background: var(--twfg-pink);
	border: 0;
	color: var(--twfg-white);
	cursor: pointer;
	font-size: 1.05rem;
	min-width: 38px;
}

.twfg-menu-toggle {
	display: none;
	flex-direction: column;
	height: 38px;
	position: relative;
	width: 38px;
}

.twfg-menu-toggle > span:not(.screen-reader-text) {
	background: currentColor;
	display: block;
	height: 1px;
	margin: 3px 0;
	width: 20px;
}

.twfg-search__panel[hidden],
.twfg-mobile-menu[hidden] {
	display: none !important;
}

.twfg-mobile-menu {
	align-items: stretch;
	display: flex;
	inset: 0;
	position: fixed;
	z-index: 250;
}

.twfg-mobile-menu__backdrop {
	background: rgba(52, 17, 63, 0.58);
	flex: 1;
}

.twfg-mobile-menu__panel {
	background: var(--twfg-white);
	max-width: 390px;
	overflow-y: auto;
	padding: 28px 26px 36px;
	width: min(86vw, 390px);
}

.twfg-mobile-menu__top {
	align-items: center;
	border-bottom: 1px solid var(--twfg-border);
	display: flex;
	justify-content: space-between;
	margin-bottom: 18px;
	padding-bottom: 18px;
}

.twfg-mobile-menu__top strong {
	color: var(--twfg-plum);
	font-family: var(--twfg-serif);
	font-size: 1.2rem;
	font-weight: 400;
}

.twfg-mobile-menu__close {
	font-size: 1.7rem;
	line-height: 1;
}

.twfg-menu--mobile {
	align-items: stretch;
	display: block;
}

.twfg-menu--mobile > li {
	border-bottom: 1px solid var(--twfg-border);
}

.twfg-menu--mobile > li > a {
	display: flex;
	font-size: 0.82rem;
	justify-content: space-between;
	padding: 16px 0;
	white-space: normal;
	width: 100%;
}

.twfg-menu--mobile .sub-menu {
	border: 0;
	display: none;
	left: auto;
	min-width: 0;
	opacity: 1;
	position: static;
	transform: none;
	visibility: visible;
	width: auto;
}

.twfg-menu--mobile > li.is-open > .sub-menu,
.twfg-menu--mobile > li:focus-within > .sub-menu {
	display: block;
}

.twfg-menu--mobile .sub-menu a {
	background: transparent;
	font-size: 0.75rem;
	padding: 11px 0 11px 16px;
}

body.twfg-mobile-open {
	overflow: hidden;
}

/* Shared editorial elements */

.twfg-homepage {
	background: var(--twfg-white);
	color: var(--twfg-ink);
	font-family: var(--twfg-sans);
	overflow: hidden;
}

.twfg-homepage h1,
.twfg-homepage h2,
.twfg-homepage h3,
.twfg-homepage p,
.twfg-site-footer h2,
.twfg-site-footer p {
	margin-top: 0;
}

.twfg-homepage h1,
.twfg-homepage h2,
.twfg-homepage h3,
.twfg-site-footer h2 {
	font-family: var(--twfg-serif);
	font-weight: 400;
}

.twfg-section-label {
	align-items: center;
	color: var(--twfg-plum);
	display: flex;
	font-family: var(--twfg-sans);
	font-size: 0.66rem;
	font-weight: 700;
	gap: 11px;
	letter-spacing: 0.2em;
	line-height: 1.2;
	margin-bottom: 16px;
	text-transform: uppercase;
}

.twfg-section-label::before {
	background: var(--twfg-pink);
	content: "";
	display: inline-block;
	height: 2px;
	width: 28px;
}

.twfg-section-heading {
	align-items: end;
	display: flex;
	gap: 24px;
	justify-content: space-between;
	margin-bottom: 30px;
}

.twfg-section-heading h2 {
	color: var(--twfg-plum);
	font-size: clamp(2.1rem, 4.2vw, 4rem);
	letter-spacing: -0.04em;
	line-height: 0.95;
	margin-bottom: 0;
}

.twfg-text-link,
.twfg-story__link,
.twfg-latest-story__arrow {
	color: var(--twfg-pink);
	font-family: var(--twfg-sans);
	font-size: 0.7rem;
	font-weight: 700;
	letter-spacing: 0.08em;
	text-decoration: none;
	text-transform: uppercase;
	white-space: nowrap;
}

.twfg-text-link span,
.twfg-story__link span {
	font-size: 1rem;
	letter-spacing: 0;
	margin-left: 5px;
}

.twfg-text-link:hover,
.twfg-text-link:focus,
.twfg-story__link:hover,
.twfg-story__link:focus,
.twfg-latest-story__arrow:hover,
.twfg-latest-story__arrow:focus {
	color: var(--twfg-plum);
}

.twfg-button {
	align-items: center;
	border: 1px solid transparent;
	border-radius: 999px;
	display: inline-flex;
	font-family: var(--twfg-sans);
	font-size: 0.72rem;
	font-weight: 700;
	gap: 11px;
	justify-content: center;
	letter-spacing: 0.04em;
	min-height: 44px;
	padding: 10px 20px;
	text-decoration: none;
	transition: background-color 160ms ease, color 160ms ease, border-color 160ms ease;
}

.twfg-button span {
	font-size: 1.15rem;
	font-weight: 400;
	line-height: 0;
}

.twfg-button--primary {
	background: var(--twfg-pink);
	color: var(--twfg-white);
}

.twfg-button--primary:hover,
.twfg-button--primary:focus {
	background: var(--twfg-plum);
	color: var(--twfg-white);
}

.twfg-button--secondary {
	border-color: var(--twfg-pink);
	color: var(--twfg-pink);
}

.twfg-button--secondary:hover,
.twfg-button--secondary:focus {
	background: var(--twfg-pink);
	color: var(--twfg-white);
}

.twfg-button--light {
	background: var(--twfg-white);
	color: var(--twfg-plum);
}

.twfg-button--light:hover,
.twfg-button--light:focus {
	background: var(--twfg-pink);
	color: var(--twfg-white);
}

.twfg-band {
	padding: clamp(76px, 9vw, 126px) 0;
}

.twfg-media-image {
	display: block;
	height: 100%;
	object-fit: cover;
	width: 100%;
}

.twfg-media-slot {
	align-items: center;
	background: var(--twfg-light-lavender);
	border: 1px dashed rgba(52, 17, 63, 0.48);
	color: var(--twfg-plum);
	display: flex;
	flex-direction: column;
	height: 100%;
	justify-content: center;
	min-height: 160px;
	padding: 18px;
	text-align: center;
	width: 100%;
}

.twfg-media-slot span {
	font-family: var(--twfg-serif);
	font-size: clamp(1.3rem, 2.3vw, 2.1rem);
	line-height: 1;
}

.twfg-media-slot small {
	font-family: var(--twfg-sans);
	font-size: 0.61rem;
	font-weight: 700;
	letter-spacing: 0.12em;
	margin-top: 10px;
	text-transform: uppercase;
}

/* Hero */

.twfg-hero {
	background: var(--twfg-white);
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	height: clamp(540px, 42vw, 720px);
}

.twfg-hero__content {
	align-items: center;
	background: var(--twfg-plum);
	color: var(--twfg-white);
	display: flex;
	height: 100%;
	min-height: 0;
	min-width: 0;
}

.twfg-hero__copy {
	margin: 0;
	max-width: none;
	padding: clamp(56px, 6vw, 92px) var(--twfg-content-edge);
	text-align: left;
	width: 100%;
}

.twfg-hero__copy h1 {
	color: var(--twfg-white);
	font-family: var(--twfg-serif);
	font-size: clamp(3rem, 4.35vw, 4.75rem);
	font-weight: 400;
	letter-spacing: -0.055em;
	line-height: 0.96;
	margin-bottom: 26px;
}

.twfg-hero__copy h1 em {
	color: var(--twfg-pink);
	font-style: normal;
}

.twfg-hero__intro {
	color: rgba(255, 255, 255, 0.9);
	font-family: var(--twfg-body);
	font-size: clamp(1rem, 1.35vw, 1.22rem);
	letter-spacing: 0.01em;
	line-height: 1.55;
	margin: 0;
	max-width: 560px;
}

.twfg-hero__actions {
	align-items: center;
	display: flex;
	flex-wrap: wrap;
	gap: 12px;
	justify-content: flex-start;
	margin-top: 34px;
}

.twfg-hero__actions .twfg-button {
	border-radius: 0;
	font-family: var(--twfg-sans);
	font-size: 0.72rem;
	letter-spacing: 0.1em;
	min-height: 50px;
	padding: 12px 24px;
	text-transform: uppercase;
}

.twfg-hero__actions .twfg-button--primary {
	background: var(--twfg-pink);
	color: var(--twfg-white);
}

.twfg-hero__actions .twfg-button--primary:hover,
.twfg-hero__actions .twfg-button--primary:focus {
	background: var(--twfg-white);
	color: var(--twfg-plum);
}

.twfg-hero__actions .twfg-button--secondary {
	border-color: rgba(255, 255, 255, 0.68);
	color: var(--twfg-white);
}

.twfg-hero__actions .twfg-button--secondary:hover,
.twfg-hero__actions .twfg-button--secondary:focus {
	background: var(--twfg-white);
	border-color: var(--twfg-white);
	color: var(--twfg-plum);
}

.twfg-hero__strip-wrap {
	background: var(--twfg-white);
	border-radius: 0;
	height: 100%;
	max-width: 100%;
	min-height: 0;
	min-width: 0;
	overflow: hidden;
	padding: 0;
	width: 100%;
}

.twfg-hero__strip {
	border-radius: 0;
	display: grid;
	gap: 6px;
	grid-template-columns: minmax(0, 1.85fr) minmax(0, 1fr);
	grid-template-rows: repeat(2, minmax(0, 1fr));
	height: 100%;
	max-width: 100%;
	min-height: 0;
	min-width: 0;
	overflow: hidden;
	padding: 0;
	width: 100%;
}

.twfg-hero__figure {
	border: 0;
	border-radius: 0;
	box-shadow: none;
	height: 100%;
	margin: 0;
	max-width: 100%;
	min-height: 0;
	min-width: 0;
	overflow: hidden;
	padding: 0;
	transform: none;
	width: 100%;
}

.twfg-hero__figure--professional {
	grid-column: 1;
	grid-row: 1 / -1;
}

.twfg-hero__figure--leadership {
	grid-column: 2;
	grid-row: 1;
}

.twfg-hero__figure--faith-lifestyle {
	grid-column: 2;
	grid-row: 2;
}

.twfg-hero__image {
	border: 0;
	border-radius: 0;
	display: block;
	height: 100%;
	max-width: 100%;
	object-fit: cover;
	outline: 0;
	box-shadow: none;
	width: 100%;
}

.twfg-hero__figure--professional .twfg-hero__image {
	object-position: center 42%;
}

.twfg-hero__figure--leadership .twfg-hero__image {
	object-position: 62% 42%;
}

.twfg-hero__figure--faith-lifestyle .twfg-hero__image {
	object-position: 50% 57%;
}

/* Featured stories */

.twfg-featured {
	background: var(--twfg-light-lavender);
}

.twfg-featured__layout {
	display: grid;
	gap: 14px;
	grid-template-columns: minmax(0, 1.48fr) repeat(2, minmax(0, 0.82fr));
}

.twfg-story {
	background: var(--twfg-white);
	display: flex;
	flex-direction: column;
	min-width: 0;
}

.twfg-story--lead {
	display: grid;
	grid-template-columns: minmax(0, 1.04fr) minmax(0, 0.96fr);
}

.twfg-story__visual {
	background: var(--twfg-lavender);
	display: block;
	min-height: 212px;
	overflow: hidden;
	text-decoration: none;
}

.twfg-story--lead .twfg-story__visual {
	min-height: 430px;
}

.twfg-story__body {
	display: flex;
	flex: 1;
	flex-direction: column;
	padding: 24px 24px 26px;
}

.twfg-story__meta {
	align-items: center;
	display: flex;
	flex-wrap: wrap;
	gap: 8px 10px;
	margin-bottom: 15px;
}

.twfg-story__meta time {
	color: var(--twfg-muted);
	font-size: 0.64rem;
	letter-spacing: 0.06em;
	line-height: 1.3;
	text-transform: uppercase;
}

.twfg-story__category {
	background: var(--twfg-pink);
	border-radius: 999px;
	color: var(--twfg-white);
	font-family: var(--twfg-sans);
	font-size: 0.59rem;
	font-weight: 700;
	letter-spacing: 0.08em;
	padding: 6px 9px 5px;
	text-decoration: none;
	text-transform: uppercase;
}

.twfg-story__category:hover,
.twfg-story__category:focus {
	background: var(--twfg-plum);
	color: var(--twfg-white);
}

.twfg-story h3 {
	color: var(--twfg-plum);
	font-size: clamp(1.46rem, 2.1vw, 2.25rem);
	letter-spacing: -0.035em;
	line-height: 0.98;
	margin-bottom: 15px;
}

.twfg-story:not(.twfg-story--lead) h3 {
	font-size: clamp(1.35rem, 1.7vw, 1.8rem);
}

.twfg-story h3 a,
.twfg-event h3 a,
.twfg-latest-story h3 a {
	color: inherit;
	text-decoration: none;
}

.twfg-story h3 a:hover,
.twfg-story h3 a:focus,
.twfg-event h3 a:hover,
.twfg-event h3 a:focus,
.twfg-latest-story h3 a:hover,
.twfg-latest-story h3 a:focus {
	color: var(--twfg-pink);
}

.twfg-story__excerpt {
	color: var(--twfg-muted);
	font-family: var(--twfg-serif);
	font-size: 1rem;
	line-height: 1.42;
	margin-bottom: 24px;
}

.twfg-story__link {
	margin-top: auto;
}

/* Events */

.twfg-events {
	background: var(--twfg-white);
}

.twfg-events__layout {
	display: grid;
	gap: 18px;
	grid-template-columns: minmax(220px, 0.74fr) minmax(0, 1.26fr) minmax(0, 0.92fr);
}

.twfg-events__intro {
	background: var(--twfg-plum);
	color: var(--twfg-white);
	display: flex;
	flex-direction: column;
	grid-row: 1 / span 2;
	justify-content: center;
	padding: clamp(30px, 4vw, 52px);
}

.twfg-events__intro .twfg-events__eyebrow {
	color: var(--twfg-light-lavender);
	font-family: var(--twfg-sans);
	font-size: 0.63rem;
	font-weight: 700;
	letter-spacing: 0.15em;
	margin-bottom: 18px;
	text-transform: uppercase;
}

.twfg-events__intro h3 {
	color: var(--twfg-white);
	font-size: clamp(2rem, 3.4vw, 3.55rem);
	letter-spacing: -0.05em;
	line-height: 0.9;
	margin-bottom: 22px;
}

.twfg-events__intro > p:not(.twfg-events__eyebrow) {
	color: rgba(255, 255, 255, 0.82);
	font-family: var(--twfg-serif);
	font-size: 1.08rem;
	line-height: 1.4;
	margin-bottom: 30px;
}

.twfg-events__intro .twfg-button {
	align-self: flex-start;
}

.twfg-event {
	align-items: stretch;
	display: grid;
	gap: 16px;
	grid-column: 3;
	grid-template-columns: 112px minmax(0, 1fr);
	min-width: 0;
	padding: 0 0 18px;
}

.twfg-event--feature {
	grid-column: 2;
	grid-row: 1 / span 2;
	grid-template-columns: minmax(0, 0.94fr) minmax(0, 1.06fr);
	padding: 0;
}

.twfg-event:not(.twfg-event--feature) + .twfg-event {
	border-top: 1px solid var(--twfg-border);
	padding-top: 18px;
}

.twfg-event__visual {
	background: var(--twfg-lavender);
	min-height: 116px;
}

.twfg-event--feature .twfg-event__visual {
	min-height: 390px;
}

.twfg-event__body {
	display: flex;
	flex-direction: column;
	min-width: 0;
	padding: 1px 0;
}

.twfg-event--feature .twfg-event__body {
	padding: 28px 24px 28px 4px;
}

.twfg-event h3 {
	color: var(--twfg-plum);
	font-size: clamp(1.28rem, 1.9vw, 2rem);
	letter-spacing: -0.035em;
	line-height: 1;
	margin-bottom: 12px;
}

.twfg-event--feature h3 {
	font-size: clamp(1.8rem, 3vw, 3.15rem);
}

.twfg-event p {
	color: var(--twfg-muted);
	font-family: var(--twfg-serif);
	font-size: 0.98rem;
	line-height: 1.42;
	margin-bottom: 22px;
}

.twfg-events__empty {
	background: var(--twfg-light-lavender);
	grid-column: 2 / -1;
	padding: 30px;
}

.twfg-events__empty p {
	font-family: var(--twfg-serif);
	font-size: 1.2rem;
	margin-bottom: 18px;
}

/* Category resources */

.twfg-explore {
	background: var(--twfg-light-lavender);
}

.twfg-resource-grid {
	display: grid;
	gap: 14px;
	grid-template-columns: repeat(3, minmax(0, 1fr));
}

.twfg-resource {
	align-items: flex-start;
	display: flex;
	flex-direction: column;
	min-height: 245px;
	padding: 24px;
	position: relative;
	text-decoration: none;
	transition: transform 160ms ease;
}

.twfg-resource:hover,
.twfg-resource:focus {
	transform: translateY(-5px);
}

.twfg-resource--1 {
	background: var(--twfg-white);
	color: var(--twfg-plum);
}

.twfg-resource--2 {
	background: var(--twfg-pink);
	color: var(--twfg-white);
}

.twfg-resource--3 {
	background: var(--twfg-plum);
	color: var(--twfg-white);
}

.twfg-resource__number {
	font-family: var(--twfg-sans);
	font-size: 0.66rem;
	font-weight: 700;
	letter-spacing: 0.16em;
	opacity: 0.72;
}

.twfg-resource__name {
	font-family: var(--twfg-serif);
	font-size: clamp(1.65rem, 2.5vw, 2.8rem);
	letter-spacing: -0.04em;
	line-height: 0.94;
	margin-top: auto;
	max-width: 260px;
}

.twfg-resource__meta {
	font-family: var(--twfg-sans);
	font-size: 0.65rem;
	font-weight: 700;
	letter-spacing: 0.09em;
	margin-top: 30px;
	text-transform: uppercase;
}

.twfg-resource__meta span {
	font-size: 1.15rem;
	margin-left: 5px;
}

/* Latest articles */

.twfg-latest {
	background: var(--twfg-white);
}

.twfg-latest__layout {
	align-items: stretch;
	display: grid;
	gap: 40px;
	grid-template-columns: minmax(0, 1.46fr) minmax(260px, 0.74fr);
}

.twfg-latest__list {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	column-gap: 24px;
}

.twfg-latest-story {
	align-items: center;
	border-top: 1px solid var(--twfg-border);
	display: grid;
	gap: 15px;
	grid-template-columns: 118px minmax(0, 1fr) auto;
	min-width: 0;
	padding: 16px 0;
}

.twfg-latest-story:nth-child(-n + 2) {
	border-top-color: var(--twfg-plum);
}

.twfg-latest-story__visual {
	background: var(--twfg-lavender);
	display: block;
	height: 94px;
	overflow: hidden;
	text-decoration: none;
}

.twfg-latest-story__visual .twfg-media-slot {
	min-height: 94px;
	padding: 8px;
}

.twfg-latest-story__visual .twfg-media-slot span {
	font-size: 0.95rem;
}

.twfg-latest-story__visual .twfg-media-slot small {
	font-size: 0.46rem;
	margin-top: 6px;
}

.twfg-latest-story__body {
	min-width: 0;
}

.twfg-latest-story .twfg-story__meta {
	margin-bottom: 8px;
}

.twfg-latest-story h3 {
	color: var(--twfg-plum);
	font-size: clamp(1.1rem, 1.45vw, 1.45rem);
	letter-spacing: -0.03em;
	line-height: 1;
	margin-bottom: 0;
}

.twfg-latest-story__arrow {
	align-items: center;
	border: 1px solid var(--twfg-pink);
	border-radius: 50%;
	display: inline-flex;
	font-size: 1.2rem;
	font-weight: 400;
	height: 32px;
	justify-content: center;
	letter-spacing: 0;
	width: 32px;
}

.twfg-latest__aside {
	align-items: flex-start;
	background: #f4e8f1;
	color: var(--twfg-plum);
	display: flex;
	flex-direction: column;
	justify-content: center;
	min-height: 300px;
	padding: 34px;
}

.twfg-latest__aside > span {
	color: var(--twfg-pink);
	font-family: var(--twfg-serif);
	font-size: 5rem;
	line-height: 0.55;
}

.twfg-latest__aside p {
	font-family: var(--twfg-serif);
	font-size: clamp(1.8rem, 3vw, 3.1rem);
	letter-spacing: -0.04em;
	line-height: 0.92;
	margin: 26px 0 24px;
}

.twfg-latest__aside p em {
	color: var(--twfg-pink);
}

.twfg-latest__aside small {
	font-family: var(--twfg-sans);
	font-size: 0.62rem;
	font-weight: 700;
	letter-spacing: 0.15em;
	text-transform: uppercase;
}

.twfg-empty-state {
	color: var(--twfg-muted);
	font-family: var(--twfg-serif);
	font-size: 1.1rem;
	grid-column: 1 / -1;
}

/* Site-wide three-column footer */

.twfg-site-footer {
	background: var(--twfg-plum);
	color: var(--twfg-white);
}

.twfg-site-footer .twfg-container {
	max-width: var(--twfg-content-max);
	padding-left: 0;
	padding-right: 0;
	width: min(
		var(--twfg-content-max),
		calc(100% - var(--twfg-content-gutter) - var(--twfg-content-gutter))
	);
}

.twfg-site-footer__main {
	padding: clamp(64px, 6vw, 80px) 0 36px;
}

.twfg-site-footer__columns {
	display: grid;
	gap: clamp(28px, 4vw, 64px);
	grid-template-columns: repeat(3, minmax(0, 1fr));
}

.twfg-site-footer__columns > * {
	min-width: 0;
	text-align: center;
}

.twfg-site-footer__brand-link {
	display: flex;
	justify-content: center;
	text-decoration: none;
	width: 100%;
}

.twfg-site-footer__logo {
	height: 88px;
	max-width: 88px;
	object-fit: contain;
	width: 88px;
}

.twfg-site-footer__tagline {
	color: var(--twfg-light-lavender);
	font-family: var(--twfg-body);
	font-size: 0.95rem;
	line-height: 1.5;
	margin: 18px auto 0;
	max-width: 220px;
	width: min(220px, 100%);
}

.twfg-site-footer__column h2 {
	color: var(--twfg-white);
	font-family: var(--twfg-serif);
	font-size: clamp(1.25rem, 1.7vw, 1.5rem);
	font-weight: 400;
	line-height: 1.2;
	margin: 0 0 20px;
}

.twfg-site-footer__links,
.twfg-site-footer__social {
	list-style: none;
	margin: 0;
	padding: 0;
}

.twfg-site-footer__links {
	display: grid;
	gap: 10px;
}

.twfg-site-footer__links li {
	min-width: 0;
	text-align: center;
}

.twfg-site-footer__links a,
.twfg-site-footer__social a {
	color: var(--twfg-light-lavender);
	display: inline-flex;
	font-family: var(--twfg-sans);
	font-size: 0.95rem;
	font-weight: 500;
	line-height: 1.4;
	max-width: 100%;
	text-decoration: none;
	transition: color 160ms ease;
	word-break: normal;
	overflow-wrap: anywhere;
}

.twfg-site-footer__links a {
	justify-content: center;
	text-align: center;
	width: 100%;
}

.twfg-site-footer__links a:hover,
.twfg-site-footer__links a:focus-visible,
.twfg-site-footer__social a:hover,
.twfg-site-footer__social a:focus-visible {
	color: var(--twfg-pink);
}

.twfg-site-footer__social a:focus-visible {
	outline: 3px solid var(--twfg-pink);
	outline-offset: 3px;
}

.twfg-site-footer__social {
	align-items: center;
	display: flex;
	flex-wrap: wrap;
	gap: 4px;
	justify-content: center;
}

.twfg-site-footer__social a {
	align-items: center;
	color: var(--twfg-white);
	flex: 0 0 44px;
	height: 44px;
	justify-content: center;
	min-height: 44px;
	width: 44px;
}

.twfg-site-footer__social-icon {
	align-items: center;
	display: inline-flex;
	flex: 0 0 24px;
	height: 24px;
	justify-content: center;
	width: 24px;
}

.twfg-site-footer__social-icon svg {
	display: block;
	fill: currentColor;
	height: 24px;
	width: 24px;
}

.twfg-site-footer__social-icon svg rect,
.twfg-site-footer__social-icon svg circle {
	fill: none;
	stroke: currentColor;
	stroke-width: 1.7;
}

.twfg-site-footer__copyright-row {
	border-top: 1px solid rgba(216, 220, 255, 0.24);
	margin-top: clamp(48px, 6vw, 64px);
	padding-top: 22px;
}

.twfg-site-footer__copyright-row p {
	color: var(--twfg-light-lavender);
	font-family: var(--twfg-body);
	font-size: 0.8125rem;
	line-height: 1.5;
	margin: 0;
	text-align: center;
}

/* Archive and search surfaces keep the existing content and navigation usable. */

.twfg-archive {
	background: var(--twfg-white);
	color: var(--twfg-ink);
	font-family: var(--twfg-sans);
}

.twfg-archive h1,
.twfg-archive h2,
.twfg-archive h3 {
	font-family: var(--twfg-serif);
	font-weight: 400;
}

.twfg-section {
	padding: clamp(64px, 8vw, 110px) 0;
}

.twfg-archive .twfg-section-heading {
	align-items: baseline;
}

.twfg-archive .twfg-section-heading h1,
.twfg-archive .twfg-section-heading h2 {
	color: var(--twfg-plum);
	font-size: clamp(2.4rem, 5vw, 4.8rem);
	letter-spacing: -0.05em;
	line-height: 0.9;
	margin-bottom: 0;
}

.twfg-card-grid {
	display: grid;
	gap: 20px;
	grid-template-columns: repeat(3, minmax(0, 1fr));
}

.twfg-card {
	background: var(--twfg-white);
	border-top: 3px solid var(--twfg-pink);
	display: flex;
	flex-direction: column;
	min-width: 0;
}

.twfg-card__media {
	background: var(--twfg-light-lavender);
	display: block;
	height: 210px;
	overflow: hidden;
}

.twfg-card__image {
	display: block;
	height: 100%;
	object-fit: cover;
	transition: transform 180ms ease;
	width: 100%;
}

.twfg-card__media:hover .twfg-card__image,
.twfg-card__media:focus .twfg-card__image {
	transform: scale(1.02);
}

.twfg-card__body {
	display: flex;
	flex: 1;
	flex-direction: column;
	padding: 22px 20px 24px;
}

.twfg-card--no-image .twfg-card__body {
	min-height: 260px;
}

.twfg-card__category {
	color: var(--twfg-pink);
	font-family: var(--twfg-sans);
	font-size: 0.65rem;
	font-weight: 700;
	letter-spacing: 0.08em;
	margin-bottom: 8px;
	text-decoration: none;
	text-transform: uppercase;
}

.twfg-card__date {
	color: var(--twfg-muted);
	font-size: 0.72rem;
	margin-bottom: 14px;
}

.twfg-card__title {
	font-size: clamp(1.4rem, 2vw, 1.9rem);
	line-height: 1;
	margin-bottom: 13px;
}

.twfg-card__title a {
	color: var(--twfg-plum);
	text-decoration: none;
}

.twfg-card__title a:hover,
.twfg-card__title a:focus,
.twfg-card__category:hover,
.twfg-card__category:focus {
	color: var(--twfg-pink);
}

.twfg-card__excerpt {
	color: var(--twfg-muted);
	font-family: var(--twfg-serif);
	font-size: 0.95rem;
	line-height: 1.5;
	margin-bottom: 22px;
}

.twfg-card__read-more {
	color: var(--twfg-pink);
	font-family: var(--twfg-sans);
	font-size: 0.7rem;
	font-weight: 700;
	letter-spacing: 0.08em;
	margin-top: auto;
	text-decoration: none;
	text-transform: uppercase;
}

@media (min-width: 981px) {
	.twfg-header__nav .twfg-menu {
		gap: clamp(30px, 2.3vw, 34px);
	}

	.twfg-header__nav .twfg-menu > li > a {
		font-family: var(--twfg-sans);
		font-size: 14px;
		font-weight: 600;
		letter-spacing: 0.04em;
		transition: color 160ms ease;
	}
}

/* Responsive composition */

@media (max-width: 1120px) {
	.twfg-header__inner {
		grid-template-columns: minmax(190px, 1fr) auto minmax(150px, 1fr);
	}

	.twfg-featured__layout {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}

	.twfg-story--lead {
		grid-column: 1 / -1;
	}

	.twfg-events__layout {
		grid-template-columns: minmax(220px, 0.82fr) minmax(0, 1.18fr);
	}

	.twfg-events__intro {
		grid-column: 1 / -1;
		grid-row: auto;
	}

	.twfg-event--feature {
		grid-column: 1;
		grid-row: auto;
	}

	.twfg-event:not(.twfg-event--feature) {
		grid-column: 2;
	}

	.twfg-latest__layout {
		gap: 26px;
		grid-template-columns: minmax(0, 1.3fr) minmax(230px, 0.7fr);
	}

	.twfg-latest__list {
		grid-template-columns: 1fr;
	}
}

@media (max-width: 980px) {
	.twfg-header__inner {
		grid-template-columns: minmax(190px, 1fr) auto;
	}

	.twfg-header__nav {
		display: none;
	}

	.twfg-menu-toggle {
		display: inline-flex;
	}

	.twfg-hero__copy h1 {
		font-size: clamp(3rem, 4.35vw, 4.4rem);
	}

	.twfg-resource-grid {
		grid-template-columns: repeat(3, minmax(0, 1fr));
	}
}

@media (max-width: 900px) {
	.twfg-header__inner {
		padding-left: var(--twfg-content-edge);
		padding-right: var(--twfg-content-edge);
	}

	.twfg-hero {
		grid-template-columns: 1fr;
		height: auto;
	}

	.twfg-hero__content {
		height: auto;
	}

	.twfg-hero__strip-wrap {
		height: clamp(340px, 72vw, 560px);
	}
}

@media (max-width: 720px) {
	.twfg-container {
		padding-left: 20px;
		padding-right: 20px;
	}

	.twfg-header__inner {
		grid-template-columns: minmax(0, 1fr) auto;
		min-height: 74px;
		padding: 8px var(--twfg-content-edge);
	}

	.twfg-header__logo {
		height: 64px;
		max-width: 64px;
		width: 64px;
	}

	.twfg-hero__copy {
		padding-bottom: 72px;
		padding-left: var(--twfg-content-edge);
		padding-right: var(--twfg-content-edge);
		padding-top: 78px;
	}

	.twfg-hero__copy h1 {
		font-size: clamp(2.65rem, 11.5vw, 4rem);
		margin-bottom: 24px;
	}

	.twfg-hero__intro {
		font-size: 1.08rem;
	}

	.twfg-section-heading {
		align-items: flex-start;
		flex-direction: column;
		gap: 16px;
		margin-bottom: 24px;
	}

	.twfg-section-heading h2 {
		font-size: clamp(2.2rem, 9vw, 3.7rem);
	}

	.twfg-featured__layout {
		grid-template-columns: 1fr;
	}

	.twfg-story--lead {
		display: flex;
		grid-column: auto;
	}

	.twfg-story--lead .twfg-story__visual {
		min-height: 350px;
	}

	.twfg-events__layout {
		grid-template-columns: 1fr;
	}

	.twfg-events__intro {
		grid-column: auto;
	}

	.twfg-event,
	.twfg-event--feature,
	.twfg-event:not(.twfg-event--feature) {
		grid-column: auto;
		grid-row: auto;
		grid-template-columns: 118px minmax(0, 1fr);
	}

	.twfg-event--feature {
		display: grid;
	}

	.twfg-event--feature .twfg-event__visual {
		min-height: 190px;
	}

	.twfg-event--feature .twfg-event__body {
		padding: 6px 0 10px;
	}

	.twfg-resource-grid {
		grid-template-columns: 1fr;
	}

	.twfg-resource {
		min-height: 190px;
	}

	.twfg-latest__layout {
		grid-template-columns: 1fr;
	}

	.twfg-latest__aside {
		min-height: 240px;
	}

	.twfg-site-footer__columns {
		grid-template-columns: 1fr;
	}

	.twfg-site-footer__main {
		padding-bottom: 28px;
		padding-top: 56px;
	}

	.twfg-card-grid {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}
}

@media (max-width: 520px) {
	.twfg-container {
		padding-left: 16px;
		padding-right: 16px;
	}

	.twfg-header__inner {
		padding-left: var(--twfg-content-edge);
		padding-right: var(--twfg-content-edge);
	}

	.twfg-hero__copy {
		padding-left: var(--twfg-content-edge);
		padding-right: var(--twfg-content-edge);
	}

	.twfg-hero__copy h1 {
		font-size: clamp(2.55rem, 11.5vw, 3.5rem);
	}

	.twfg-hero__actions {
		align-items: stretch;
		flex-direction: column;
		margin-left: 0;
		margin-right: 0;
		max-width: 260px;
	}

	.twfg-button {
		width: 100%;
	}

	.twfg-story--lead .twfg-story__visual {
		min-height: 280px;
	}

	.twfg-story__body,
	.twfg-event--feature .twfg-event__body {
		padding: 20px;
	}

	.twfg-event,
	.twfg-event--feature,
	.twfg-event:not(.twfg-event--feature) {
		gap: 12px;
		grid-template-columns: 92px minmax(0, 1fr);
	}

	.twfg-event__visual,
	.twfg-event--feature .twfg-event__visual {
		min-height: 110px;
	}

	.twfg-event--feature h3 {
		font-size: 1.65rem;
	}

	.twfg-latest-story {
		gap: 11px;
		grid-template-columns: 82px minmax(0, 1fr) auto;
	}

	.twfg-latest-story__visual {
		height: 76px;
	}

	.twfg-latest-story h3 {
		font-size: 1.12rem;
	}

	.twfg-latest-story .twfg-story__category {
		font-size: 0.5rem;
	}

	.twfg-latest-story .twfg-story__meta time {
		font-size: 0.53rem;
	}

	.twfg-latest-story__arrow {
		height: 28px;
		width: 28px;
	}

	.twfg-card-grid {
		grid-template-columns: 1fr;
	}
}

@media (prefers-reduced-motion: reduce) {
	html {
		scroll-behavior: auto;
	}

	.twfg-menu .sub-menu,
	.twfg-button,
	.twfg-resource,
	.twfg-card__image {
		transition: none;
	}
}

/* ========================================================================== 
   TWFG design refinement: desktop navigation

   The navigation refinements below are retained while the photographic
   Option C inset is reverted to the base full-bleed hero layout.
   ========================================================================== */

@media (min-width: 981px) {
	.twfg-header__nav .twfg-menu {
		gap: clamp(28px, 3.2vw, 40px);
	}

	.twfg-header__nav .twfg-menu > li > a {
		font-family: var(--twfg-sans);
		font-size: 16px;
		font-weight: 600;
		letter-spacing: 0.025em;
	}
}
